dvipsk_TexLive-2009-stripped/0000755000175000017500000000000011401164145016067 5ustar uwabamiuwabamidvipsk_TexLive-2009-stripped/configure0000755000175000017500000172115511372532227020021 0ustar uwabamiuwabami#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.63 for dvipsk 5.98. # # Report bugs to . # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh 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 else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH if test "x$CONFIG_SHELL" = x; then if (eval ":") 2>/dev/null; then as_have_required=yes else as_have_required=no fi if test $as_have_required = yes && (eval ": (as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=\$LINENO as_lineno_2=\$LINENO test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } ") 2> /dev/null; then : else as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. case $as_dir in /*) for as_base in sh bash ksh sh5; do as_candidate_shells="$as_candidate_shells $as_dir/$as_base" done;; esac done IFS=$as_save_IFS for as_shell in $as_candidate_shells $SHELL; do # Try only shells that exist, to save several forks. if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { ("$as_shell") 2> /dev/null <<\_ASEOF 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 else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : _ASEOF }; then CONFIG_SHELL=$as_shell as_have_required=yes if { "$as_shell" 2> /dev/null <<\_ASEOF 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 else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : (as_func_return () { (exit $1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = "$1" ); then : else exitcode=1 echo positional parameters were not saved. fi test $exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } _ASEOF }; then break fi fi done if test "x$CONFIG_SHELL" != x; then for as_var in BASH_ENV ENV do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done export CONFIG_SHELL exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} fi if test $as_have_required = no; then echo This script requires a shell more modern than all the echo shells that I found on your system. Please install a echo modern shell, or manually run the script under such a echo shell if you do have one. { (exit 1); exit 1; } fi fi fi (eval "as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0") || { echo No shell found that supports shell functions. echo Please tell bug-autoconf@gnu.org about your system, echo including any error possibly output before this message. echo This can help us improve future autoconf versions. echo Configuration will now proceed without shell functions. } as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$lt_ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','` ;; esac ECHO=${lt_ECHO-echo} if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then # Yippee, $ECHO works! : else # Restart under the correct shell. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <<_LT_EOF $* _LT_EOF exit 0 fi # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test -z "$lt_ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if { echo_test_string=`eval $cmd`; } 2>/dev/null && { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null then break fi done fi if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$ECHO" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. ECHO='print -r' elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} else # Try using printf. ECHO='printf %s\n' if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL ECHO="$CONFIG_SHELL $0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. ECHO=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. lt_ECHO=$ECHO if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" fi exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='dvipsk' PACKAGE_TARNAME='dvipsk' PACKAGE_VERSION='5.98' PACKAGE_STRING='dvipsk 5.98' PACKAGE_BUGREPORT='tex-k@tug.org' ac_unique_file="dvips.c" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" enable_option_checking=no ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS subdirs KPATHSEA_RULE KPATHSEA_DEPEND KPATHSEA_LIBS KPATHSEA_INCLUDES WARNING_CFLAGS CPP OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL lt_ECHO RANLIB AR OBJDUMP LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC host_os host_vendor host_cpu host build_os build_vendor build_cpu build LIBTOOL MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_maintainer_mode enable_shared enable_static with_pic enable_fast_install enable_dependency_tracking with_gnu_ld enable_libtool_lock enable_largefile enable_compiler_warnings with_system_kpathsea with_kpathsea_includes with_kpathsea_libdir ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP' ac_subdirs_all='squeeze' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { $as_echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { $as_echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2 { (exit 1); exit 1; }; } ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || { $as_echo "$as_me: error: working directory cannot be determined" >&2 { (exit 1); exit 1; }; } test "X$ac_ls_di" = "X$ac_pwd_ls_di" || { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 { (exit 1); exit 1; }; } # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures dvipsk 5.98 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/dvipsk] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of dvipsk 5.98:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --disable-libtool-lock avoid locking (might break parallel builds) --disable-largefile omit support for large files --enable-compiler-warnings=[no|min|yes|max] Turn on compiler warnings [default: yes if maintainer-mode, min otherwise] Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-system-kpathsea use installed kpathsea headers and library --with-kpathsea-includes=DIR kpathsea headers installed in DIR --with-kpathsea-libdir=DIR kpathsea library installed in DIR Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF dvipsk configure 5.98 generated by GNU Autoconf 2.63 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by dvipsk $as_me 5.98, which was generated by GNU Autoconf 2.63. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------------- ## ## File substitutions. ## ## ------------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then ac_site_file1=$CONFIG_SITE elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test -r "$ac_site_file"; then { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 $as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_aux_dir= for ac_dir in ../../build-aux "$srcdir"/../../build-aux; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in ../../build-aux \"$srcdir\"/../../build-aux" >&5 $as_echo "$as_me: error: cannot find install-sh or install.sh in ../../build-aux \"$srcdir\"/../../build-aux" >&2;} { (exit 1); exit 1; }; } fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. am__api_version='1.11' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) { { $as_echo "$as_me:$LINENO: error: unsafe absolute working directory name" >&5 $as_echo "$as_me: error: unsafe absolute working directory name" >&2;} { (exit 1); exit 1; }; };; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) { { $as_echo "$as_me:$LINENO: error: unsafe srcdir value: \`$srcdir'" >&5 $as_echo "$as_me: error: unsafe srcdir value: \`$srcdir'" >&2;} { (exit 1); exit 1; }; };; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 $as_echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftest.file ) then # Ok. : else { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 $as_echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test "${ac_cv_path_mkdir+set}" = set; then $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. test -d ./--version && rmdir ./--version MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AWK+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:$LINENO: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null case `pwd` in *\ * | *\ *) { $as_echo "$as_me:$LINENO: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.2.6' macro_revision='1.3012' ltmain="$ac_aux_dir/ltmain.sh" # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 $as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$LINENO: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if test "${ac_cv_build+set}" = set; then $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 $as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 $as_echo "$as_me: error: invalid value of canonical build" >&2;} { (exit 1); exit 1; }; };; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:$LINENO: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if test "${ac_cv_host+set}" = set; then $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} { (exit 1); exit 1; }; } fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 $as_echo "$as_me: error: invalid value of canonical host" >&2;} { (exit 1); exit 1; }; };; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:$LINENO: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 $as_echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } # Provide some information about the compiler. $as_echo "$as_me:$LINENO: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { (ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi { $as_echo "$as_me:$LINENO: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } if test -z "$ac_file"; then $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 $as_echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; }; } fi ac_exeext=$ac_cv_exeext # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi fi fi { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } { $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } { $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi rm -f conftest$ac_cv_exeext { $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT { $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if test "${ac_cv_objext+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_c89=$ac_arg else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:$LINENO: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:$LINENO: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi { $as_echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if test "${ac_cv_path_SED+set}" = set; then $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed $as_unset ac_script || ac_script= if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then { { $as_echo "$as_me:$LINENO: error: no acceptable sed could be found in \$PATH" >&5 $as_echo "$as_me: error: no acceptable sed could be found in \$PATH" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if test "${ac_cv_path_GREP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:$LINENO: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if test "${ac_cv_path_EGREP+set}" = set; then $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:$LINENO: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if test "${ac_cv_path_FGREP+set}" = set; then $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then { { $as_echo "$as_me:$LINENO: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if test "${lt_cv_path_LD+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 $as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if test "${lt_cv_prog_gnu_ld+set}" = set; then $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:$LINENO: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if test "${lt_cv_path_NM+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$ac_tool_prefix"; then for ac_prog in "dumpbin -symbols" "link -dump -symbols" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_DUMPBIN+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:$LINENO: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in "dumpbin -symbols" "link -dump -symbols" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:$LINENO: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if test "${lt_cv_nm_interface+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:4332: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:4335: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:4338: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } { $as_echo "$as_me:$LINENO: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { $as_echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if test "${lt_cv_sys_max_cmd_len+set}" = set; then $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ = "XX$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then { $as_echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:$LINENO: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} { $as_echo "$as_me:$LINENO: checking whether the shell understands some XSI constructs" >&5 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes { $as_echo "$as_me:$LINENO: result: $xsi_shell" >&5 $as_echo "$xsi_shell" >&6; } { $as_echo "$as_me:$LINENO: checking whether the shell understands \"+=\"" >&5 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; } lt_shell_append=no ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes { $as_echo "$as_me:$LINENO: result: $lt_shell_append" >&5 $as_echo "$lt_shell_append" >&6; } if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if test "${lt_cv_ld_reload_flag+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OBJDUMP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:$LINENO: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if test "${lt_cv_deplibs_check_method+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux* | k*bsd*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AR+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AR="${ac_tool_prefix}ar" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:$LINENO: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_AR+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_AR="ar" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi else AR="$ac_cv_prog_AR" fi test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_RANLIB+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Now try to grab the symbols. nlist=conftest.nm if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ const struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:$LINENO: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:$LINENO: result: ok" >&5 $as_echo "ok" >&6; } fi # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line 5544 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if test "${lt_cv_cc_needs_belf+set}" = set; then $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_cv_cc_needs_belf=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_cc_needs_belf=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_DSYMUTIL+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:$LINENO: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_NMEDIT+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:$LINENO: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_LIPO+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:$LINENO: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OTOOL+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:$LINENO: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OTOOL64+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:$LINENO: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:$LINENO: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if test "${lt_cv_apple_cc_single_mod+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if test "${lt_cv_ld_exported_symbols_list+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_cv_ld_exported_symbols_list=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_ld_exported_symbols_list=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[012]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:$LINENO: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 $as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Check whether --enable-compiler-warnings was given. if test "${enable_compiler_warnings+set}" = set; then enableval=$enable_compiler_warnings; fi case $enable_compiler_warnings in no | min | yes | max) : ;; *) if test "x$enable_maintainer_mode" = xyes; then enable_compiler_warnings=yes else enable_compiler_warnings=min fi ;; esac if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 $as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='dvipsk' VERSION='5.98' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' { $as_echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi { $as_echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 $as_echo "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE # Set options enable_dlopen=no enable_win32_dll=no # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then withval=$with_pic; pic_mode="$withval" else pic_mode=default fi test -z "$pic_mode" && pic_mode=default # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:$LINENO: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if test "${lt_cv_objdir+set}" = set; then $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; then $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:$LINENO: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; then $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag=' -fno-builtin' { $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:7505: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:7509: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= { $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl*) # IBM XL C 8.0/Fortran 10.1 on PPC lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 $as_echo "$lt_prog_compiler_pic" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if test "${lt_cv_prog_compiler_pic_works+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:7844: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:7848: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test "${lt_cv_prog_compiler_static_works+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:7949: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:7953: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:8004: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:8008: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_flag_spec_ld= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag= tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec= hardcode_libdir_flag_spec_ld='-rpath $libdir' archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes=yes ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported whole_archive_flag_spec='' link_all_deplibs=yes allow_undefined_flag="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=echo archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld='+b $libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" cat >conftest.$ac_ext <<_ACEOF int foo(void) {} _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='${wl}-z,text' allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='${wl}-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:$LINENO: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc=no else archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 $as_echo "$archive_cmds_need_lc" >&6; } ;; esac fi ;; esac { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` else lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then shlibpath_overrides_runpath=yes fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:$LINENO: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink || test "$inherit_rpath" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dl_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) { $as_echo "$as_me:$LINENO: checking for shl_load" >&5 $as_echo_n "checking for shl_load... " >&6; } if test "${ac_cv_func_shl_load+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_shl_load || defined __stub___shl_load choke me #endif int main () { return shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_shl_load=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 $as_echo "$ac_cv_func_shl_load" >&6; } if test "x$ac_cv_func_shl_load" = x""yes; then lt_cv_dlopen="shl_load" else { $as_echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if test "${ac_cv_lib_dld_shl_load+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dld_shl_load=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = x""yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else { $as_echo "$as_me:$LINENO: checking for dlopen" >&5 $as_echo_n "checking for dlopen... " >&6; } if test "${ac_cv_func_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_dlopen || defined __stub___dlopen choke me #endif int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 $as_echo "$ac_cv_func_dlopen" >&6; } if test "x$ac_cv_func_dlopen" = x""yes; then lt_cv_dlopen="dlopen" else { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dl_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if test "${ac_cv_lib_svld_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_svld_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if test "${ac_cv_lib_dld_dld_link+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dld_dld_link=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = x""yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if test "${lt_cv_dlopen_self+set}" = set; then $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line 10804 "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if test "${lt_cv_dlopen_self_static+set}" = set; then $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line 10900 "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:$LINENO: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:$LINENO: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" ac_config_commands="$ac_config_commands libtool" # Only expand once: # Check whether --enable-largefile was given. if test "${enable_largefile+set}" = set; then enableval=$enable_largefile; fi if test "$enable_largefile" != no; then { $as_echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5 $as_echo_n "checking for special C compiler options needed for large files... " >&6; } if test "${ac_cv_sys_largefile_CC+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_sys_largefile_CC=no if test "$GCC" != yes; then ac_save_CC=$CC while :; do # IRIX 6.2 and later do not support large files by default, # so use the C compiler's -n32 option if that helps. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then break else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext CC="$CC -n32" rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_sys_largefile_CC=' -n32'; break else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext break done CC=$ac_save_CC rm -f conftest.$ac_ext fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5 $as_echo "$ac_cv_sys_largefile_CC" >&6; } if test "$ac_cv_sys_largefile_CC" != no; then CC=$CC$ac_cv_sys_largefile_CC fi { $as_echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5 $as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } if test "${ac_cv_sys_file_offset_bits+set}" = set; then $as_echo_n "(cached) " >&6 else while :; do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_sys_file_offset_bits=no; break else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #define _FILE_OFFSET_BITS 64 #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_sys_file_offset_bits=64; break else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_sys_file_offset_bits=unknown break done fi { $as_echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5 $as_echo "$ac_cv_sys_file_offset_bits" >&6; } case $ac_cv_sys_file_offset_bits in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits _ACEOF ;; esac rm -rf conftest* if test $ac_cv_sys_file_offset_bits = unknown; then { $as_echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5 $as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } if test "${ac_cv_sys_large_files+set}" = set; then $as_echo_n "(cached) " >&6 else while :; do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_sys_large_files=no; break else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #define _LARGE_FILES 1 #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_sys_large_files=1; break else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_sys_large_files=unknown break done fi { $as_echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5 $as_echo "$ac_cv_sys_large_files" >&6; } case $ac_cv_sys_large_files in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _LARGE_FILES $ac_cv_sys_large_files _ACEOF ;; esac rm -rf conftest* fi fi { $as_echo "$as_me:$LINENO: checking for _LARGEFILE_SOURCE value needed for large files" >&5 $as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; } if test "${ac_cv_sys_largefile_source+set}" = set; then $as_echo_n "(cached) " >&6 else while :; do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include /* for off_t */ #include int main () { int (*fp) (FILE *, off_t, int) = fseeko; return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_sys_largefile_source=no; break else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #define _LARGEFILE_SOURCE 1 #include /* for off_t */ #include int main () { int (*fp) (FILE *, off_t, int) = fseeko; return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_sys_largefile_source=1; break else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext ac_cv_sys_largefile_source=unknown break done fi { $as_echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_source" >&5 $as_echo "$ac_cv_sys_largefile_source" >&6; } case $ac_cv_sys_largefile_source in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source _ACEOF ;; esac rm -rf conftest* # We used to try defining _XOPEN_SOURCE=500 too, to work around a bug # in glibc 2.1.3, but that breaks too many other things. # If you want fseeko and ftello with glibc, upgrade to a fixed glibc. if test $ac_cv_sys_largefile_source != unknown; then cat >>confdefs.h <<\_ACEOF #define HAVE_FSEEKO 1 _ACEOF fi ac_header_dirent=no for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 $as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include <$ac_hdr> int main () { if ((DIR *) 0) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 _ACEOF ac_header_dirent=$ac_hdr; break fi done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then { $as_echo "$as_me:$LINENO: checking for library containing opendir" >&5 $as_echo_n "checking for library containing opendir... " >&6; } if test "${ac_cv_search_opendir+set}" = set; then $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char opendir (); int main () { return opendir (); ; return 0; } _ACEOF for ac_lib in '' dir; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_search_opendir=$ac_res else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext if test "${ac_cv_search_opendir+set}" = set; then break fi done if test "${ac_cv_search_opendir+set}" = set; then : else ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 $as_echo "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir if test "$ac_res" != no; then test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi else { $as_echo "$as_me:$LINENO: checking for library containing opendir" >&5 $as_echo_n "checking for library containing opendir... " >&6; } if test "${ac_cv_search_opendir+set}" = set; then $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char opendir (); int main () { return opendir (); ; return 0; } _ACEOF for ac_lib in '' x; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_search_opendir=$ac_res else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext if test "${ac_cv_search_opendir+set}" = set; then break fi done if test "${ac_cv_search_opendir+set}" = set; then : else ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 $as_echo "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir if test "$ac_res" != no; then test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi fi { $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi { $as_echo "$as_me:$LINENO: checking whether closedir returns void" >&5 $as_echo_n "checking whether closedir returns void... " >&6; } if test "${ac_cv_func_closedir_void+set}" = set; then $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then ac_cv_func_closedir_void=yes else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header_dirent> #ifndef __cplusplus int closedir (); #endif int main () { return closedir (opendir (".")) != 0; ; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_closedir_void=no else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_closedir_void=yes fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_closedir_void" >&5 $as_echo "$ac_cv_func_closedir_void" >&6; } if test $ac_cv_func_closedir_void = yes; then cat >>confdefs.h <<\_ACEOF #define CLOSEDIR_VOID 1 _ACEOF fi for ac_header in assert.h float.h limits.h memory.h pwd.h stdlib.h \ string.h strings.h sys/param.h unistd.h do as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 $as_echo_n "checking $ac_header usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 $as_echo_n "checking $ac_header presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ---------------------------- ## ## Report this to tex-k@tug.org ## ## ---------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in putenv strcasecmp strtol strstr do as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 $as_echo_n "checking for $ac_func... " >&6; } if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$ac_func || defined __stub___$ac_func choke me #endif int main () { return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then eval "$as_ac_var=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_var'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_var'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in bcmp bcopy bzero getcwd getwd index memcmp memcpy rindex strchr strrchr do as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 $as_echo_n "checking for $ac_func... " >&6; } if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$ac_func || defined __stub___$ac_func choke me #endif int main () { return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then eval "$as_ac_var=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_var'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_var'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done { $as_echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if test "${ac_cv_c_const+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { /* FIXME: Include the comments suggested by Paul. */ #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; const charset cs; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; }; struct s *b; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_c_const=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then cat >>confdefs.h <<\_ACEOF #define const /**/ _ACEOF fi { $as_echo "$as_me:$LINENO: checking for inline" >&5 $as_echo_n "checking for inline... " >&6; } if test "${ac_cv_c_inline+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; static $ac_kw foo_t static_foo () {return 0; } $ac_kw foo_t foo () {return 0; } #endif _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_c_inline=$ac_kw else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test "$ac_cv_c_inline" != no && break done fi { $as_echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 $as_echo "$ac_cv_c_inline" >&6; } case $ac_cv_c_inline in inline | yes) ;; *) case $ac_cv_c_inline in no) ac_val=;; *) ac_val=$ac_cv_c_inline;; esac cat >>confdefs.h <<_ACEOF #ifndef __cplusplus #define inline $ac_val #endif _ACEOF ;; esac { $as_echo "$as_me:$LINENO: checking for struct stat.st_mtim" >&5 $as_echo_n "checking for struct stat.st_mtim... " >&6; } if test "${ac_cv_member_struct_stat_st_mtim+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default int main () { static struct stat ac_aggr; if (ac_aggr.st_mtim) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_member_struct_stat_st_mtim=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default int main () { static struct stat ac_aggr; if (sizeof ac_aggr.st_mtim) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_member_struct_stat_st_mtim=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_member_struct_stat_st_mtim=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_mtim" >&5 $as_echo "$ac_cv_member_struct_stat_st_mtim" >&6; } if test "x$ac_cv_member_struct_stat_st_mtim" = x""yes; then cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_STAT_ST_MTIM 1 _ACEOF fi { $as_echo "$as_me:$LINENO: checking whether the compiler accepts prototypes" >&5 $as_echo_n "checking whether the compiler accepts prototypes... " >&6; } if test "${kb_cv_c_prototypes+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { extern void foo(int i,...); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then kb_cv_c_prototypes=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 kb_cv_c_prototypes=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $kb_cv_c_prototypes" >&5 $as_echo "$kb_cv_c_prototypes" >&6; } if test "x$kb_cv_c_prototypes" = xno; then { { $as_echo "$as_me:$LINENO: error: Sorry, your compiler does not understand prototypes." >&5 $as_echo "$as_me: error: Sorry, your compiler does not understand prototypes." >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether program_invocation_name is predefined" >&5 $as_echo_n "checking whether program_invocation_name is predefined... " >&6; } if test "${kb_cv_var_program_inv_name+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { extern char *program_invocation_name; program_invocation_name = "love"; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then kb_cv_var_program_inv_name=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 kb_cv_var_program_inv_name=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $kb_cv_var_program_inv_name" >&5 $as_echo "$kb_cv_var_program_inv_name" >&6; } if test "$kb_cv_var_program_inv_name" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_PROGRAM_INVOCATION_NAME 1 _ACEOF fi { $as_echo "$as_me:$LINENO: checking what warning flags to pass to the C compiler" >&5 $as_echo_n "checking what warning flags to pass to the C compiler... " >&6; } if test "${kpse_cv_warning_cflags+set}" = set; then $as_echo_n "(cached) " >&6 else if test "x$enable_compiler_warnings" = xno; then kpse_cv_warning_cflags= elif test "x$GCC" = xyes; then kpse_cv_warning_cflags="-Wall -Wunused" case `$CC -dumpversion` in 3.4.* | 4.*) kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wdeclaration-after-statement" ;; esac case `$CC -dumpversion` in 3.[234].* | 4.*) kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wno-unknown-pragmas" ;; esac if test "x$enable_compiler_warnings" != xmin; then kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wmissing-prototypes -Wmissing-declarations" if test "x$enable_compiler_warnings" != xyes; then kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wimplicit -Wparentheses -Wreturn-type" kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wswitch -Wtrigraphs -Wshadow -Wpointer-arith" kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wcast-qual -Wcast-align -Wwrite-strings" case `$CC -dumpversion` in 3.4.* | 4.*) kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wold-style-definition" ;; esac fi fi else : # FIXME: warning flags for non-gcc compilers fi fi { $as_echo "$as_me:$LINENO: result: $kpse_cv_warning_cflags" >&5 $as_echo "$kpse_cv_warning_cflags" >&6; } WARNING_CFLAGS=$kpse_cv_warning_cflags ac_config_headers="$ac_config_headers c-auto.h:c-auto.in" # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:$LINENO: checking size of int" >&5 $as_echo_n "checking size of int... " >&6; } if test "${ac_cv_sizeof_int+set}" = set; then $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default int main () { static int test_array [1 - 2 * !(((long int) (sizeof (int))) >= 0)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default int main () { static int test_array [1 - 2 * !(((long int) (sizeof (int))) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_lo=`expr $ac_mid + 1` if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi ac_mid=`expr 2 '*' $ac_mid + 1` fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default int main () { static int test_array [1 - 2 * !(((long int) (sizeof (int))) < 0)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default int main () { static int test_array [1 - 2 * !(((long int) (sizeof (int))) >= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_hi=`expr '(' $ac_mid ')' - 1` if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi ac_mid=`expr 2 '*' $ac_mid` fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_lo= ac_hi= fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default int main () { static int test_array [1 - 2 * !(((long int) (sizeof (int))) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_lo=`expr '(' $ac_mid ')' + 1` fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_int=$ac_lo;; '') if test "$ac_cv_type_int" = yes; then { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (int) See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute sizeof (int) See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; }; } else ac_cv_sizeof_int=0 fi ;; esac else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default static long int longval () { return (long int) (sizeof (int)); } static unsigned long int ulongval () { return (long int) (sizeof (int)); } #include #include int main () { FILE *f = fopen ("conftest.val", "w"); if (! f) return 1; if (((long int) (sizeof (int))) < 0) { long int i = longval (); if (i != ((long int) (sizeof (int)))) return 1; fprintf (f, "%ld", i); } else { unsigned long int i = ulongval (); if (i != ((long int) (sizeof (int)))) return 1; fprintf (f, "%lu", i); } /* Do not output a trailing newline, as this causes \r\n confusion on some platforms. */ return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_sizeof_int=`cat conftest.val` else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) if test "$ac_cv_type_int" = yes; then { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (int) See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute sizeof (int) See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; }; } else ac_cv_sizeof_int=0 fi fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val fi { $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 $as_echo "$ac_cv_sizeof_int" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_INT $ac_cv_sizeof_int _ACEOF { $as_echo "$as_me:$LINENO: checking for library containing pow" >&5 $as_echo_n "checking for library containing pow... " >&6; } if test "${ac_cv_search_pow+set}" = set; then $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pow (); int main () { return pow (); ; return 0; } _ACEOF for ac_lib in '' m; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_search_pow=$ac_res else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext if test "${ac_cv_search_pow+set}" = set; then break fi done if test "${ac_cv_search_pow+set}" = set; then : else ac_cv_search_pow=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_search_pow" >&5 $as_echo "$ac_cv_search_pow" >&6; } ac_res=$ac_cv_search_pow if test "$ac_res" != no; then test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi ## _KPSE_INIT: Initialize TL infrastructure kpse_BLD=`(cd "./../../." && pwd)` kpse_SRC=`(cd "$srcdir/../../." && pwd)` ## _KPSE_USE_LIBTOOL: Generate a libtool script for use in configure tests : ${CONFIG_LT=./config.lt} { $as_echo "$as_me:$LINENO: creating $CONFIG_LT" >&5 $as_echo "$as_me: creating $CONFIG_LT" >&6;} cat >"$CONFIG_LT" <<_LTEOF #! $SHELL # Generated by $as_me. # Run this file to recreate a libtool stub with the current configuration. lt_cl_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh 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 else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { { $as_echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX } >&5 lt_cl_help="\ \`$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $0 [OPTIONS] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ dvipsk config.lt 5.98 configured by $0, generated by GNU Autoconf 2.63. Copyright (C) 2008 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test $# != 0 do case $1 in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) { { $as_echo "$as_me:$LINENO: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 $as_echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; } ;; *) { { $as_echo "$as_me:$LINENO: error: unrecognized argument: $1 Try \`$0 --help' for more information." >&5 $as_echo "$as_me: error: unrecognized argument: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; } ;; esac shift done if $lt_cl_silent; then exec 6>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # Quote evaled strings. for var in SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ AR \ AR_FLAGS \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ SHELL \ ECHO \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_wl \ lt_prog_compiler_pic \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_flag_spec_ld \ hardcode_libdir_separator \ fix_srcfile_path \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ finish_eval \ old_striplib \ striplib; do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec; do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Fix-up fallback echo if it was mangled by the above quoting rules. case \$lt_ECHO in *'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` ;; esac ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF { $as_echo "$as_me:$LINENO: creating $ofile" >&5 $as_echo "$as_me: creating $ofile" >&6;} # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool 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 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # The names of the tagged configurations supported by this script. available_tags="" # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == "file_magic". file_magic_cmd=$lt_file_magic_cmd # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name of the directory that contains temporary libtool files. objdir=$objdir # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that does not interpret backslashes. ECHO=$lt_ECHO # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # If ld is used when linking, flag to hardcode \$libdir into a binary # during linking. This must work even if \$libdir does not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain="$ac_aux_dir/ltmain.sh" # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) case $xsi_shell in yes) cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac } # func_basename file func_basename () { func_basename_result="${1##*/}" } # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}" } # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). func_stripname () { # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"} } # func_opt_split func_opt_split () { func_opt_split_opt=${1%%=*} func_opt_split_arg=${1#*=} } # func_lo2o object func_lo2o () { case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac } # func_xform libobj-or-source func_xform () { func_xform_result=${1%.*}.lo } # func_arith arithmetic-term... func_arith () { func_arith_result=$(( $* )) } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=${#1} } _LT_EOF ;; *) # Bourne compatible functions. cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_basename file func_basename () { func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` } # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; esac } # sed scripts: my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' my_sed_long_arg='1s/^-[^=]*=//' # func_opt_split func_opt_split () { func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` } # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` } # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` } # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "$@"` } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } _LT_EOF esac case $lt_shell_append in yes) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$1+=\$2" } _LT_EOF ;; *) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$1=\$$1\$2" } _LT_EOF ;; esac sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" { (exit 0); exit 0; } _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. if test "$no_create" != yes; then lt_cl_success=: test "$silent" = yes && lt_config_lt_args="$lt_config_lt_args --quiet" exec 5>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec 5>>config.log $lt_cl_success || { (exit 1); exit 1; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_link="./libtool --mode=link --tag=CC $ac_link" ## _KPSE_LIB_FLAGS: Setup kpathsea (-lkpathsea) flags # Check whether --with-system-kpathsea was given. if test "${with_system_kpathsea+set}" = set; then withval=$with_system_kpathsea; fi # Check whether --with-kpathsea-includes was given. if test "${with_kpathsea_includes+set}" = set; then withval=$with_kpathsea_includes; fi # Check whether --with-kpathsea-libdir was given. if test "${with_kpathsea_libdir+set}" = set; then withval=$with_kpathsea_libdir; fi if test "x$with_system_kpathsea" = xyes; then if test "x$with_kpathsea_includes" != x && test "x$with_kpathsea_includes" != xyes; then KPATHSEA_INCLUDES="-I$with_kpathsea_includes" fi KPATHSEA_LIBS="-lkpathsea" if test "x$with_kpathsea_libdir" != x && test "x$with_kpathsea_libdir" != xyes; then KPATHSEA_LIBS="-L$with_kpathsea_libdir $KPATHSEA_LIBS" fi else KPATHSEA_INCLUDES=`echo '-IBLD/texk -ISRC/texk' | sed \ -e "s,SRC/,$kpse_SRC/,g" \ -e "s,BLD/,$kpse_BLD/,g"` KPATHSEA_LIBS=`echo 'BLD/texk/kpathsea/libkpathsea.la' | sed \ -e "s,BLD/,$kpse_BLD/,g"` KPATHSEA_DEPEND=`echo 'BLD/texk/kpathsea/libkpathsea.la' | sed \ -e 's,BLD/texk/,${top_builddir}/../,g'` KPATHSEA_RULE='# Rebuild libkpathsea $(KPATHSEA_DEPEND): ${top_srcdir}/../kpathsea/*.[ch] ${top_builddir}/../kpathsea/paths.h cd ${top_builddir}/../kpathsea && $(MAKE) $(AM_MAKEFLAGS) ${top_builddir}/../kpathsea/paths.h: cd ${top_builddir}/../kpathsea && $(MAKE) $(AM_MAKEFLAGS)' fi subdirs="$subdirs squeeze" ac_config_files="$ac_config_files Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then test "x$cache_file" != "x/dev/null" && { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh 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 else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 # Save the log message, to keep $[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by dvipsk $as_me 5.98, which was generated by GNU Autoconf 2.63. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTION]... [FILE]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ dvipsk config.status 5.98 configured by $0, generated by GNU Autoconf 2.63, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2008 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac CONFIG_FILES="$CONFIG_FILES '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header { $as_echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; };; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { $as_echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # Quote evaled strings. for var in SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ AR \ AR_FLAGS \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ SHELL \ ECHO \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_wl \ lt_prog_compiler_pic \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_flag_spec_ld \ hardcode_libdir_separator \ fix_srcfile_path \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ finish_eval \ old_striplib \ striplib; do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec; do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Fix-up fallback echo if it was mangled by the above quoting rules. case \$lt_ECHO in *'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` ;; esac ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' ac_aux_dir='$ac_aux_dir' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "c-auto.h") CONFIG_HEADERS="$CONFIG_HEADERS c-auto.h:c-auto.in" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 $as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= trap 'exit_status=$? { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || { $as_echo "$as_me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=' ' ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\).*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\).*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 $as_echo "$as_me: error: could not setup config files machinery" >&2;} { (exit 1); exit 1; }; } _ACEOF # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/ s/:*\${srcdir}:*/:/ s/:*@srcdir@:*/:/ s/^\([^=]*=[ ]*\):*/\1/ s/:*$// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_t=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_t"; then break elif $ac_last_try; then { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5 $as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5 $as_echo "$as_me: error: could not setup config headers machinery" >&2;} { (exit 1); exit 1; }; } fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5 $as_echo "$as_me: error: invalid tag $ac_tag" >&2;} { (exit 1); exit 1; }; };; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 $as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} { (exit 1); exit 1; }; };; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac ac_file_inputs="$ac_file_inputs '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:$LINENO: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$tmp/stdin" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir="$ac_dir" case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p ' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&2;} rm -f "$tmp/stdin" case $ac_file in -) cat "$tmp/out" && rm -f "$tmp/out";; *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; esac \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" } >"$tmp/config.h" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$tmp/config.h" "$ac_file" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5 $as_echo "$as_me: error: could not create -" >&2;} { (exit 1); exit 1; }; } fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir=$dirpart/$fdir case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "libtool":C) # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool 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 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # The names of the tagged configurations supported by this script. available_tags="" # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == "file_magic". file_magic_cmd=$lt_file_magic_cmd # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name of the directory that contains temporary libtool files. objdir=$objdir # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that does not interpret backslashes. ECHO=$lt_ECHO # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # If ld is used when linking, flag to hardcode \$libdir into a binary # during linking. This must work even if \$libdir does not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain="$ac_aux_dir/ltmain.sh" # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) case $xsi_shell in yes) cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac } # func_basename file func_basename () { func_basename_result="${1##*/}" } # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}" } # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). func_stripname () { # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"} } # func_opt_split func_opt_split () { func_opt_split_opt=${1%%=*} func_opt_split_arg=${1#*=} } # func_lo2o object func_lo2o () { case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac } # func_xform libobj-or-source func_xform () { func_xform_result=${1%.*}.lo } # func_arith arithmetic-term... func_arith () { func_arith_result=$(( $* )) } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=${#1} } _LT_EOF ;; *) # Bourne compatible functions. cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_basename file func_basename () { func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` } # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; esac } # sed scripts: my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' my_sed_long_arg='1s/^-[^=]*=//' # func_opt_split func_opt_split () { func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` } # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` } # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` } # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "$@"` } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } _LT_EOF esac case $lt_shell_append in yes) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$1+=\$2" } _LT_EOF ;; *) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$1=\$$1\$2" } _LT_EOF ;; esac sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ;; esac done # for ac_tag { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 $as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } if test "x$cross_compiling" = xyes; then cache_file=/dev/null ac_configure_args="$ac_configure_args --host='$build' \ CC='$BUILDCC' CPPFLAGS='$BUILDCPPFLAGS'\ CFLAGS='$BUILDCFLAGS' LDFLAGS='$BUILDLDFLAGS'" fi # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi # # CONFIG_SUBDIRS section. # if test "$no_recursion" != yes; then # Remove --cache-file, --srcdir, and --disable-option-checking arguments # so they do not pile up. ac_sub_configure_args= ac_prev= eval "set x $ac_configure_args" shift for ac_arg do if test -n "$ac_prev"; then ac_prev= continue fi case $ac_arg in -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \ | --c=*) ;; --config-cache | -C) ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) ;; --disable-option-checking) ;; *) case $ac_arg in *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac ac_sub_configure_args="$ac_sub_configure_args '$ac_arg'" ;; esac done # Always prepend --prefix to ensure using the same prefix # in subdir configurations. ac_arg="--prefix=$prefix" case $ac_arg in *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args" # Pass --silent if test "$silent" = yes; then ac_sub_configure_args="--silent $ac_sub_configure_args" fi # Always prepend --disable-option-checking to silence warnings, since # different subdirs can have different --enable and --with options. ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args" ac_popdir=`pwd` for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue # Do not complain, so a configure script can configure whichever # parts of a large source tree are present. test -d "$srcdir/$ac_dir" || continue ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)" $as_echo "$as_me:$LINENO: $ac_msg" >&5 $as_echo "$ac_msg" >&6 { as_dir="$ac_dir" case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" # Check for guested configure; otherwise get Cygnus style configure. if test -f "$ac_srcdir/configure.gnu"; then ac_sub_configure=$ac_srcdir/configure.gnu elif test -f "$ac_srcdir/configure"; then ac_sub_configure=$ac_srcdir/configure elif test -f "$ac_srcdir/configure.in"; then # This should be Cygnus configure. ac_sub_configure=$ac_aux_dir/configure else { $as_echo "$as_me:$LINENO: WARNING: no configuration information is in $ac_dir" >&5 $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;} ac_sub_configure= fi # The recursion is here. if test -n "$ac_sub_configure"; then # Make the cache file name correct relative to the subdirectory. case $cache_file in [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;; *) # Relative name. ac_sub_cache_file=$ac_top_build_prefix$cache_file ;; esac { $as_echo "$as_me:$LINENO: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 $as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} # The eval makes quoting arguments work. eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \ --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" || { { $as_echo "$as_me:$LINENO: error: $ac_sub_configure failed for $ac_dir" >&5 $as_echo "$as_me: error: $ac_sub_configure failed for $ac_dir" >&2;} { (exit 1); exit 1; }; } fi cd "$ac_popdir" done fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi dvipsk_TexLive-2009-stripped/dvips.info0000644000175000017500000070007211372532227020106 0ustar uwabamiuwabamiThis is ../../../texk/dvipsk/dvips.info, produced by makeinfo version 4.13 from ../../../texk/dvipsk/dvips.texi. This manual documents Dvips version 5.98 (September 2009), a program to translate a DVI file into PostScript. You may freely use, modify and/or distribute this file. INFO-DIR-SECTION TeX START-INFO-DIR-ENTRY * DVI-to-Postscript: (dvips). Translating TeX DVI files to PostScript. * afm2tfm: (dvips)Invoking afm2tfm. Making Type 1 fonts available to TeX. * dvips: (dvips)Invoking Dvips. DVI-to-PostScript translator. END-INFO-DIR-ENTRY  File: dvips.info, Node: Top, Next: Why Dvips, Up: (dir) Dvips ***** This manual documents Dvips version 5.98 (September 2009), a program to translate a DVI file into PostScript. You may freely use, modify and/or distribute this file. * Menu: * Why Dvips:: Why use Dvips? * Installation:: How to compile and install Dvips. * Invoking Dvips:: Command-line options, configuration files, etc. * Paper size and landscape:: Changing the paper dimensions. * Interaction with PostScript:: TeX meets Dvips meets PostScript. * PostScript fonts:: Installing and using PostScript fonts. * Color:: Using color with Dvips. * Index:: General index.  File: dvips.info, Node: Why Dvips, Next: Installation, Prev: Top, Up: Top 1 Why use Dvips? **************** The Dvips program has a number of features that set it apart from other PostScript drivers for TeX. This rather long section describes the advantages of using Dvips, and may be skipped if you are just interested in learning how to use the program. *Note Installation::, for details of compilation and installation. The Dvips driver generates excellent, standard PostScript, that can be included in other documents as figures or printed through a variety of spoolers. The generated PostScript requires very little printer memory, so very complex documents with a lot of fonts can easily be printed even on PostScript printers without much memory, such as the original Apple LaserWriter. The PostScript output is also compact, requiring less disk space to store and making it feasible as a transfer format. Even those documents that are too complex to print in their entirety on a particular printer can be printed, since Dvips will automatically split such documents into pieces, reclaiming the printer memory between each piece. The Dvips program supports graphics in a natural way, allowing PostScript graphics to be included and automatically scaled and positioned in a variety of ways. Printers with any resolution are supported, even if they have different resolutions in the horizontal and vertical directions. High resolution output is supported for typesetters, including an option that compresses the bitmap fonts so that typesetter virtual memory is not exhausted. This option also significantly reduces the size of the PostScript file and decoding in the printer is very fast. Missing fonts can be automatically generated if Metafont exists on the system, or fonts can be converted from GF to PK format on demand. If a font cannot be generated, a scaled version of the same font at a different size can be used instead, although Dvips will complain loudly about the poor aesthetics of the resulting output. Users will appreciate features such as collated copies and support for `tpic', `psfig', `emtex', and `METAPOST'; system administrators will love the support for multiple printers, each with their own configuration file, and the ability to pipe the output directly to a program such as `lpr'. Support for MS-DOS, OS/2, and VMS in addition to Unix is provided in the standard distribution, and porting to other systems is easy. One of the most important features is the support of virtual fonts, which add an entirely new level of flexibility to TeX. Virtual fonts are used to give Dvips its excellent PostScript font support, handling all the font remapping in a natural, portable, elegant, and extensible way. Dvips even comes with its own Afm2tfm program that creates the necessary virtual fonts and TeX font metric files automatically from the Adobe font metric files. Source is provided and freely distributable, so adding a site-specific feature is possible. Adding such features is made easier by the highly modular structure of the program. There is really no reason to use another driver, and the more people use Dvips, the less time will be spent fighting with PostScript and the more time will be available to create beautiful documents. So if you don't use Dvips on your system, get it today. Tom Rokicki wrote and maintains the original Dvips program.  File: dvips.info, Node: Installation, Next: Invoking Dvips, Prev: Why Dvips, Up: Top 2 Installation ************** (A copy of this chapter is in the distribution file `dvipsk/INSTALL'.) Installing Dvips is mostly the same as installing any Kpathsea-using program. Therefore, for the basic steps involved, *note Installation: (kpathsea)Installation. (A copy is in the file `kpathsea/INSTALL'.) For solutions to common installation problems and information on how to report a bug, see the file `kpathsea/BUGS' (*note Bugs: (kpathsea)Bugs.). For solutions to Dvips-specific problems, *note Debug options::. Also see the Dvips home page at `http://www.radicaleye.com/dvips'. Dvips does require some additional installation, detailed in the sections below. Also, to configure color devices, *note Color device configuration::. * Menu: * config.ps installation:: Printer and site Dvips configuration. * PostScript font installation:: Many PostScript fonts are freely available. * Ghostscript installation:: A free PostScript interpreter. * Diagnosing problems:: Some common runtime difficulties.  File: dvips.info, Node: config.ps installation, Next: PostScript font installation, Up: Installation 2.1 `config.ps' installation ============================ Dvips has its own configuration files: a file `config.ps' for sitewide defaults, and a file `config.PRINTER' for each printer (output device). Since these are site-specific, `make install' does not create them; you must create them yourself. (These Dvips configuration files are independent of the Kpathsea configuration file `texmf.cnf' (*note Config files: (kpathsea)Config files.). Dvips configuration files contents and searching are described fully in *note Config files::. The simplest way to create a new configuration file is to copy and modify the file `dvipsk/contrib/config.proto', seasoning with options to your taste from *note Config files::. Here is `config.proto' for your reading pleasure: % Prototype Dvips configuration file. % How to print, maybe with lp instead lpr, etc. o |lpr % Default resolution of this device, in dots per inch. D 600 % Metafont mode. (This is completely different from the -M command-line % option, which controls whether MakeTeXPK is invoked.) Get % `ftp://ftp.tug.org/tex/modes.mf' for a list of mode names. This mode % and the D number above must agree, or MakeTeXPK will get confused. M ljfour % Memory available. Download the three-line PostScript file: % %! Hey, we're PostScript % /Times-Roman findfont 30 scalefont setfont 144 432 moveto % vmstatus exch sub 40 string cvs show pop showpage % to determine this number. (It will be the only thing printed.) m 3500000 % Correct printer offset. You can use testpage.tex from the LaTeX % distribution to find these numbers. Print testpage.dvi more than once. O 0pt,0pt % Partially download Type 1 fonts by default. Only reason not to do % this is if you encounter bugs. (Please report them to % if you do.) j % Also look for fonts at these resolutions. R 300 600 % With a high resolution and a RISC cpu, better to compress the bitmaps. Z % Uncomment these if you have and want to use PostScript versions of the % fonts. %p +cmfonts.map %p +lafonts.map %p +cyrfonts.map %p +eufonts.map % You will also want definitions for alternative paper sizes -- A4, % legal, and such. Examples in `contrib/papersize.level2' and % `contrib/papersize.simple'.  File: dvips.info, Node: PostScript font installation, Next: Ghostscript installation, Prev: config.ps installation, Up: Installation 2.2 PostScript font installation ================================ To use PostScript fonts with TeX and Dvips, you need both metric files (`.tfm' and `.vf') and the outlines (`.pfa' or `.pfb'). *Note Font concepts::. To support the basic PostScript font set, the recommended (and simplest) approach is to install the files at `http://www.ctan.org/tex-archive/fonts/psfonts/lw35nfsx.zip'. This archive contains metrics, outlines, and bitmaps (for previewing) for the 35 de facto standard fonts donated by URW and the additional high-quality freely available PostScript fonts donated by Adobe, Bitstream, and URW, including geometrically-created variants such as oblique and small caps. `CTAN:/fonts/psfonts' contains support for many additional fonts for which you must buy outlines (Adobe, Bigelow & Holmes, Monotype, Softkey, Y&Y). (For CTAN info, *note unixtex.ftp: (kpathsea)unixtex.ftp.; a copy is in the top-level file `INSTALL'.) If you have additional PostScript fonts, you can make them available to Dvips by (1) giving them with appropriate filenames; and (2) running Afm2tfm (*note Making a font available::) to make TFM and VF metrics for TeX and Dvips to use. Also add them to `psfonts.map' if necessary (*note psfonts.map::); it contains everything contained in `lw35nfsx.zip' and most fonts that come with Unix systems. Following are locations for vendor-supplied fonts. Please mail if you find fonts elsewhere on your system. DEC Ultrix /usr/lib/DPS/outline/decwin DEC Digital Unix /usr/lib/X11/fonts/Type1Adobe HP HP-UX 9, 10 /usr/lib/X11/fonts/type1.st/typefaces IBM AIX /usr/lpp/DPS/fonts/outlines /usr/lpp/X11/lib/X11/fonts/Type1 /usr/lpp/X11/lib/X11/fonts/Type1/DPS NeXT /NextLibrary/Fonts/outline SGI IRIX /usr/lib/DPS/outline/base /usr/lib/X11/fonts/Type1 Sun SunOS 4.x (NeWSprint only) newsprint_2.5/SUNWsteNP/reloc/$BASEDIR/ NeWSprint/small_openwin/lib/fonts /usr/openwin/lib/X11/fonts/Type1/outline Sun Solaris 2 /usr/openwin/lib/X11/fonts/Type1/outline VMS SYS$COMMON:[SYSFONT.XDPS.OUTLINE] The NeXT system supplies more fonts than any others, but there's a lot of overlap. Finally, if you have an Hewlett-Packard printer, you should be able to get Type 1 font files for the standard 35 fonts from HP, if the freely available URW Type 1's do not satisfy for whatever reason. The phone number for HP Printer Drivers is (in the United States) 303-339-7009. The driver set to ask for is Adobe Type Manager 2.51, and the disk set number is `MP210en3'. Mentioning anything other than Microsoft Windows when you ask for the driver set will likely lead to great confusion on the other end.  File: dvips.info, Node: Ghostscript installation, Next: Diagnosing problems, Prev: PostScript font installation, Up: Installation 2.3 Ghostscript installation ============================ Ghostscript is a PostScript interpreter freely available to end-users, written by Peter Deutsch. It can read the PostScript produced by Dvips and render it on your monitor, or for another device (e.g., an Epson printer) that does not support PostScript, or in PDF format. The latest version is available via `http://www.cs.wisc.edu/~ghost/index.html' and `ftp://ftp.cs.wisc.edu/pub/ghost/aladdin/'. A somewhat older version of Ghostscript is available under the GNU General Public License, free to everyone. You can get that from `ftp://prep.ai.mit.edu/pub/gnu/'. The program Ghostview, written by Tim Theisen, provides typical previewing capabilities (next page/previous page, magnification, etc.). It requires Ghostscript to run, and files in structured Postscript, specifically with `%%Page' comments (no `N' in `config.ps'). You can get Ghostview from the same places as Ghostscript.  File: dvips.info, Node: Diagnosing problems, Prev: Ghostscript installation, Up: Installation 2.4 Diagnosing problems ======================= You've gone through all the trouble of installing Dvips, carefully read all the instructions in this manual, and still can't get something to work. The following sections provide some helpful hints if you find yourself in such a situation. For details on effective bug reporting, common installation problems, and `mktexpk' problems, *note Bugs: (kpathsea)Bugs. A good first debugging operation is to set the environment variable `DVIPSDEBUG', which will display any configuration and map files read by Dvips. This way you can be sure it's finding the files and settings you expect. * Menu: * Debug options:: Getting diagnostics. * No output:: No output at all. * Small or inverted:: Output too small or inverted. * Printer errors:: The printer sends back errors. * Long documents fail:: Long documents fail to print. * Including graphics fails:: Figures don't work.  File: dvips.info, Node: Debug options, Next: No output, Up: Diagnosing problems 2.4.1 Debug options ------------------- The `-d' flag to Dvips helps in tracking down certain errors. The parameter to this flag is an integer that tells what errors are currently being tracked. To track a certain class of debug messages, simply provide the appropriate number given below; if you wish to track multiple classes, sum the numbers of the classes you wish to track. To track all classes, you can use `-1'. Another useful value is `3650', which tracks everything having to do with file searching and opening. You can also set the environment variable `KPATHSEA_DEBUG' to any of these values. Some of these debugging options are actually provided by Kpathsea (*note Debugging: (kpathsea)Debugging.). The classes are: 1 specials 2 paths 4 fonts 8 pages 16 headers 32 font compression 64 files 128 config files 256 Partial Type 1 font encoding vectors 512 Partial Type 1 subr calls 1024 Kpathsea `stat' calls 2048 Kpathsea hash table lookups 4096 Kpathsea path element expansion 8192 Kpathsea path searches  File: dvips.info, Node: No output, Next: Small or inverted, Prev: Debug options, Up: Diagnosing problems 2.4.2 No output at all ---------------------- If you are not getting any output at all, even from the simplest one-character file (for instance, `\ \bye'), then something is very wrong. Practically any file sent to a PostScript laser printer should generate some output, at the very least a page detailing what error occurred, if any. Talk to your system administrator about downloading a PostScript error handler. (Adobe distributes a good one called `ehandler.ps'.) It is possible, especially if you are using non-Adobe PostScript, that your PostScript interpreter is broken. Even then it should generate an error message. Dvips tries to work around as many bugs as possible in common non-Adobe PostScript interpreters, but doubtless it misses a few. PowerPage Revision 1, Interpreter Version 20001.001, on a Mitsubishi Shinko CHC-S446i color thermal dye sublimation printer is known to be unable to print with any but builtin fonts. If Dvips gives any strange error messages, or compilation on your machine generated a lot of warnings, perhaps the Dvips program itself is broken. Try using the debug options to determine where the error occurred (*note Debug options::). It is possible your spooler is broken and is misinterpreting the structured comments. Try the `-N' flag to turn off structured comments and see what happens.  File: dvips.info, Node: Small or inverted, Next: Printer errors, Prev: No output, Up: Diagnosing problems 2.4.3 Output too small or inverted ---------------------------------- If some documents come out inverted or too small, probably your spooler is not supplying an end of job indicator at the end of each file. (This commonly happens on small machines that don't have spoolers.) You can force Dvips to do this with the `-F' flag (or `F' config file option), but this generates files with a terminating binary character (control-D). You can also try using the `-s' flag (or `s' config file option) to enclose the entire job in a save/restore pair. *Note Command-line options::, and *note Config files::.  File: dvips.info, Node: Printer errors, Next: Long documents fail, Prev: Small or inverted, Up: Diagnosing problems 2.4.4 Error messages from printer --------------------------------- If your printer returns error messages, the error message gives very good information on what might be going wrong. One of the most common error messages is `bop undefined'. This is caused by old versions of Transcript and other spoolers that do not properly parse the setup section of the PostScript. To fix this, turn off structured comments with the `-N' option, but it'd be best to get your spooling software updated. Another error message is `VM exhausted'. Some printers indicate this error by locking up, others quietly reset. This is caused by Dvips thinking that the printer has more memory than it actually does, and then printing a complicated document. To fix this, try lowering the `m' parameter in the configuration file; use the debug option to make sure you adjust the correct file. Other errors may indicate you are trying to include graphics that don't nest properly in other PostScript documents, among other things. Try the PostScript file on a QMS PS-810 or other Adobe PostScript printer if you have one, or Ghostscript (*note Ghostscript installation::); it might be a problem with the printer itself.  File: dvips.info, Node: Long documents fail, Next: Including graphics fails, Prev: Printer errors, Up: Diagnosing problems 2.4.5 Long documents fail to print ---------------------------------- This is usually caused by incorrectly specifying the amount of memory the printer has in the configuration file; see the previous section.  File: dvips.info, Node: Including graphics fails, Prev: Long documents fail, Up: Diagnosing problems 2.4.6 Including graphics fails ------------------------------ The most common problem with including graphics is an incorrect bounding box (*note Bounding box::). Complain to whoever wrote the software that generated the file if the bounding box is indeed incorrect. Another possible problem is that the figure you are trying to include does not nest properly; there are certain rules PostScript applications must follow when generating files to be included. The Dvips program includes work-arounds for such errors in Adobe Illustrator and other programs, but there are certainly applications that haven't been tested. One possible thing to try is the `-K' flag which strips the comments from an included figure. This might be necessary if the PostScript spooling software does not read the structured comments correctly. Use of this flag will break graphics from some applications, though, since some applications read the PostScript file from the input stream, looking for a particular comment. Any application which generates graphics output containing raw binary (not ASCII hex) will probably fail with Dvips.  File: dvips.info, Node: Invoking Dvips, Next: Paper size and landscape, Prev: Installation, Up: Top 3 Invoking Dvips **************** Dvips reads a DVI file as output by (for example) TeX, and converts it to PostScript, taking care of builtin or downloaded PostScript fonts, font reencoding, color, etc. These features are described in other chapters in this document. There many ways to control Dvips' behavior: configuration files, environment variables, and command-line options. * Menu: * Basic usage:: * Command-line options:: * Environment variables:: * Config files::  File: dvips.info, Node: Basic usage, Next: Command-line options, Up: Invoking Dvips 3.1 Basic usage of Dvips ======================== To use Dvips at its simplest, simply type dvips foo where `foo.dvi' is the output of TeX that you want to print. If Dvips has been installed correctly, the document will probably roll out of your default printer. If you use fonts that have not been used on your system before, they may be automatically generated; this process can take a few minutes, so progress reports appear by default. The next time that document is printed, these fonts will have been saved in the proper directories, so printing will go much faster. (If Dvips tries to endlessly generate the same fonts over and over again, it hasn't been installed properly. *Note Unable to generate fonts: (kpathsea)Unable to generate fonts.) Many options are available (see the next section). For a brief summary of available options, just type dvips --help  File: dvips.info, Node: Command-line options, Next: Environment variables, Prev: Basic usage, Up: Invoking Dvips 3.2 Command-line options ======================== Dvips has a plethora of command line options. Reading through this section will give a good idea of the capabilities of the driver. * Menu: * Option summary:: Quick listing, from Dvips --help. * Option details:: More information about each option.  File: dvips.info, Node: Option summary, Next: Option details, Up: Command-line options 3.2.1 Option summary -------------------- Here is a handy summary of the options; it is printed out when you run Dvips with no arguments or with the standard `--help' option. Usage: dvips [OPTION]... FILENAME[.dvi] Convert DVI input files to PostScript. See http://tug.org/dvips/ for the full manual and other information. Options: -a* Conserve memory, not time -A Print only odd (TeX) pages -b # Page copies, for posters e.g. -B Print only even (TeX) pages -c # Uncollated copies -C # Collated copies -d # Debugging -D # Resolution -e # Maxdrift value -E* Try to create EPSF -f* Run as filter -F* Send control-D at end -G* Shift low chars to higher pos. -h f Add header file -i* Separate file per section -j* Download fonts partially -k* Print crop marks -K* Pull comments from inclusions -l # Last page -m* Manual feed -M* Don't make fonts -mode s Metafont device name -n # Maximum number of pages -N* No structured comments -noomega Disable Omega extensions -o f Output file -O c Set/change paper offset -p # First page -P s Load config.$s -pp l Print only pages listed -q* Run quietly -r* Reverse order of pages -R* Run securely -s* Enclose output in save/restore -S # Max section size in pages -t s Paper format -T c Specify desired page size -u s PS mapfile -U* Disable string param trick -v Print version number and quit -V* Send downloadable PS fonts as PK -x # Override dvi magnification -X # Horizontal resolution -y # Multiply by dvi magnification -Y # Vertical resolution -z* Hyper PS -Z* Compress bitmap fonts # = number f = file s = string * = suffix, `0' to turn off c = comma-separated dimension pair (e.g., 3.2in,-32.1cm) l = comma-separated list of page ranges (e.g., 1-4,7-9) Email bug reports to tex-k@mail.tug.org.  File: dvips.info, Node: Option details, Prev: Option summary, Up: Command-line options 3.2.2 Option details -------------------- Many of the parameterless options listed here can be turned off by suffixing the option with a zero (`0'); for instance, to turn off page reversal, use `-r0'. Such options are marked with a trailing `*'. `-' Read additional options from standard input after processing the command line. `--help' Print a usage message and exit. `--version' Print the version number and exit. `-a*' Conserve memory by making three passes over the DVI file instead of two and only loading those characters actually used. Generally only useful on machines with a very limited amount of memory, like some PCs. `-A' Print only the odd pages. This option uses TeX page numbers, not physical page numbers. `-b NUM' Generate NUM copies of each page, but duplicating the page body rather than using the `/#copies' PostScript variable. This can be useful in conjunction with a header file setting `bop-hook' to do color separations or other neat tricks. `-B' Print only the even pages. This option uses TeX page numbers, not physical page numbers. `-c NUM' Generate NUM consecutive copies of every page, i.e., the output is uncollated. This merely sets the builtin PostScript variable `/#copies'. `-C NUM' Generate NUM copies, but collated (by replicating the data in the PostScript file). Slower than the `-c' option, but easier on the hands, and faster than resubmitting the same PostScript file multiple times. `-d NUM' Set the debug flags, showing what Dvips (thinks it) is doing. This will work unless Dvips has been compiled without the `DEBUG' option (not recommended). *Note Debug options::, for the possible values of NUM. Use `-d -1' as the first option for maximum output. `-D NUM' Set both the horizontal and vertical resolution to NUM, given in dpi (dots per inch). This affects the choice of bitmap fonts that are loaded and also the positioning of letters in resident PostScript fonts. Must be between 10 and 10000. This affects both the horizontal and vertical resolution. If a high resolution (something greater than 400 dpi, say) is selected, the `-Z' flag should probably also be used. If you are using fonts made with Metafont, such as Computer Modern, `mktexpk' needs to know about the value for NUM that you use or Metafont will fail. See the file `ftp://ftp.tug.org/tex/modes.mf' for a list of resolutions and mode names for most devices. `-e NUM' Maximum drift in pixels of each character from its `true' resolution-independent position on the page. The default value of this parameter is resolution dependent (it is the number of entries in the list [100, 200, 300, 400, 500, 600, 800, 1000, 1200, 1600, 2000, 2400, 2800, 3200, ...] that are less than or equal to the resolution in dots per inch). Allowing individual characters to `drift' from their correctly rounded positions by a few pixels, while regaining the true position at the beginning of each new word, improves the spacing of letters in words. `-E*' Generate an EPSF file with a tight bounding box. This only looks at marks made by characters and rules, not by any included graphics. In addition, it gets the glyph metrics from the TFM file, so characters that print outside their enclosing TFM box may confuse it. In addition, the bounding box might be a bit too loose if the character glyph has significant left or right side bearings. Nonetheless, this option works well enough for creating small EPSF files for equations or tables or the like. (Of course, Dvips output, especially when using bitmap fonts, is resolution-dependent and thus does not make very good EPSF files, especially if the images are to be scaled; use these EPSF files with care.) For multiple page input files, also specify `-i' to get each page as a separate EPSF file; otherwise, all the pages are overlaid in the single output file. `-f*' Run as a filter. Read the DVI file from standard input and write the PostScript to standard output. The standard input must be seekable, so it cannot be a pipe. If your input must be a pipe, write a shell script that copies the pipe output to a temporary file and then points Dvips at this file. This option also disables the automatic reading of the `PRINTER' environment variable; use `-P$PRINTER' after the `-f' to read it anyway. It also turns off the automatic sending of control-D if it was turned on with the `-F' option or in the configuration file; use `-F' after the `-f' to send it anyway. `-F*' Write control-D (ASCII code 4) as the very last character of the PostScript file. This is useful when Dvips is driving the printer directly instead of working through a spooler, as is common on personal systems. On systems shared by more than one person, this is not recommended. `-G*' Shift non-printing characters (ASCII 0-32, 127) to higher-numbered positions. This was useful to work around bugs in old versions of Adobe's PDF reader. It's more likely to cause problems nowadays. `-h NAME' Prepend NAME as an additional header file, or, if NAME is `-', suppress all header files. Any definitions in the header file get added to the PostScript `userdict'. `-i*' Make each section be a separate file; a "section" is a part of the document processed independently, most often created to avoid memory overflow. The filenames are created replacing the suffix of the supplied output file name by a three-digit sequence number. This option is most often used in conjunction with the `-S' option which sets the maximum section length in pages; if `-i' is specified and `-S' is not, each page is output as a separate file. For instance, some phototypesetters cannot print more than ten or so consecutive pages before running out of steam; these options can be used to automatically split a book into ten-page sections, each to its own file. `-j*' Download only needed characters from Type 1 fonts. This is the default in the current release. Some debugging flags trace this operation (*note Debug options::). You can also control partial downloading on a per-font basis (*note psfonts.map::). `-k*' Print crop marks. This option increases the paper size (which should be specified, either with a paper size special or with the `-T' option) by a half inch in each dimension. It translates each page by a quarter inch and draws cross-style crop marks. It is mostly useful with typesetters that can set the page size automatically. This works by downloading `crop.pro'. `-K*' Remove comments in included PostScript graphics, font files, and headers; only necessary to get around bugs in spoolers or PostScript post-processing programs. Specifically, the `%%Page' comments, when left in, often cause difficulties. Use of this flag can cause other graphics to fail, however, since the PostScript header macros from some software packages read portion the input stream line by line, searching for a particular comment. `-l [=]NUM' The last page printed will be the first one numbered NUM. Default is the last page in the document. If NUM is prefixed by an equals sign, then it (and the argument to the `-p' option, if specified) is treated as a physical (absolute) page number, rather than a value to compare with the TeX `\count0' values stored in the DVI file. Thus, using `-l =9' will end with the ninth page of the document, no matter what the pages are actually numbered. `-m*' Specify manual feed, if supported by the output device. `-mode MODE' Use MODE as the Metafont device name for path searching and font generation. This overrides any value from configuration files. With the default paths, explicitly specifying the mode also makes the program assume the fonts are in a subdirectory named MODE. *Note TeX directory structure: (kpathsea)TeX directory structure. If Metafont does not understand the MODE name, see *note Unable to generate fonts: (kpathsea)Unable to generate fonts. `-M*' Turns off automatic font generation (`mktexpk'). If `mktexpk', the invocation is appended to a file `missfont.log' (by default) in the current directory. You can then execute the log file to create the missing files after fixing the problem. If the current directory is not writable and the environment variable or configuration file value `TEXMFOUTPUT' is set, its value is used. Otherwise, nothing is written. The name `missfont.log' is overridden by the `MISSFONT_LOG' environment variable or configuration file value. `-n NUM' Print at most NUM pages. Default is 100000. `-N*' Turns off generation of structured comments such as `%%Page'; this may be necessary on some systems that try to interpret PostScript comments in weird ways, or on some PostScript printers. Old versions of TranScript in particular cannot handle modern Encapsulated PostScript. Beware: This also disables page movement, etc., in PostScript viewers such as Ghostview. `-noomega' This will disable the use of Omega extensions when interpreting DVI files. By default, the additional opcodes `129' and `134' are recognized by Dvips as Omega extensions and interpreted as requests to set 2-byte characters. The only drawback is that the virtual font array will (at least temporarily) require 65536 positions instead of the default 256 positions, i.e., the memory requirements of Dvips will be slightly larger. If you find this unacceptable or encounter another problem with the Omega extensions, you can switch this extension off by using `-noomega' (but please do send a bug report if you find such problems, *note Bugs: (kpathsea)Bugs.). `-o NAME' Send output to the file NAME. If `-o' is specified without NAME (i.e., it is the last thing on the command line), the default is `FILE.ps' where the input DVI file was `FILE.dvi'. If `-o' isn't given at all, the configuration file default is used. If NAME is `-', output goes to standard output. If the first character of NAME is `!' or `|', then the remainder will be used as an argument to `popen'; thus, specifying `|lpr' as the output file will automatically queue the file for printing as usual. (The MS-DOS version will print to the local printer device `PRN' when NAME is `|lpr' and a program by that name cannot be found.) `-o' disables the automatic reading of the `PRINTER' environment variable, and turns off the automatic sending of control-D. See the `-f' option for how to override this. `-O X-OFFSET,Y-OFFSET' Move the origin by X-OFFSET,Y-OFFSET, a comma-separated pair of dimensions such as `.1in,-.3cm' (*note papersize special::). The origin of the page is shifted from the default position (of one inch down, one inch to the right from the upper left corner of the paper) by this amount. This is usually best specified in the printer-specific configuration file. This is useful for a printer that consistently offsets output pages by a certain amount. You can use the file `testpage.tex' to determine the correct value for your printer. Be sure to do several runs with the same `O' value--some printers vary widely from run to run. If your printer offsets every other page consistently, instead of every page, your best recourse is to use `bop-hook' (*note PostScript hooks::). `-p [=]NUM' The first page printed will be the first one numbered NUM. Default is the first page in the document. If NUM is prefixed by an equals sign, then it (and the argument to the `-l' option, if specified) is treated as a physical (absolute) page number, rather than a value to compare with the TeX `\count0' values stored in the DVI file. Thus, using `-p =3' will start with the third page of the document, no matter what the pages are actually numbered. `-pp FIRST-LAST' Print pages FIRST through LAST; equivalent to `-p FIRST -l LAST', except that multiple `-pp' options accumulate, unlike `-p' and `-l'. The `-' separator can also be `:'. `-P PRINTER' Read the configuration file `config.PRINTER' (`PRINTER.cfg' on MS-DOS), which can set the output name (most likely `o |lpr -PPRINTER'), resolution, Metafont mode, and perhaps font paths and other printer-specific defaults. It works best to put sitewide defaults in the one master `config.ps' file and only things that vary printer to printer in the `config.PRINTER' files; `config.ps' is read before `config.PRINTER'. A configuration file for creating Adobe PDF files is provided in `config.pdf' and can be loaded with `-Ppdf', it will try to include Type1 outline fonts into the PostScript file (*note Hypertext caveats::). If no `-P' or `-o' is given, the environment variable `PRINTER' is checked. If that variable exists, and a corresponding `config.PRINTER' (`PRINTER.cfg' on MS-DOS) file exists, it is read. *Note Configuration file searching::. `-q*' Run quietly. Don't chatter about pages converted, etc. to standard output; report no warnings (only errors) to standard error. `-r*' Output pages in reverse order. By default, page 1 is output first. `-R' Run securely. `-R2' disables both shell command execution in `\special' (via ``', *note Dynamic creation of graphics::) and config files (via the `E' option, *note Configuration file commands::) and opening of any absolute or `..'-relative filenames. `-R1', the default, forbids shell escapes but allows absolute filenames. `-R0' allows both. `-s*' Enclose the output in a global save/restore pair. This causes the file to not be truly conformant, and is thus not recommended, but is useful if you are driving a deficient printer directly and thus don't care too much about the portability of the output to other environments. `-S NUM' Set the maximum number of pages in each `section'. This option is most commonly used with the `-i' option; see its description above for more information. `-t PAPERTYPE' Set the paper type to PAPERTYPE, usually defined in one of the configuration files, along with the appropriate PostScript code to select it (*note Config file paper sizes::). - You can also specify a PAPERTYPE of `landscape', which rotates a document by 90 degrees. - To rotate a document whose paper type is not the default, you can use the `-t' option twice, once for the paper type, and once for `landscape'. - In general, you should not use any `-t' option when using a `papersize' special, which some LaTeX packages (e.g., `hyperref') insert. - One exception is when using a nonstandard paper size that is not already defined in `config.ps'; in this case, you need to specify `-t unknown'. - Another exception is when producing multi-page files for further processing; use `-t nopaper' to omit any paper size information in the output. (If you just have a single page document, you can use `-E' to get pure EPSF output.) `-T HSIZE,VSIZE' Set the paper size to (HSIZE,VSIZE), a comma-separated pair of dimensions such as `.1in,-.3cm' (*note papersize special::). It overrides any paper size special in the DVI file. Be careful, as the paper size will stick to a predefined size if there is one close enough. To disable this behavior, use `-tunknown'. `-u PSMAPFILE' Set PSMAPFILE to be the file that dvips uses for looking up PostScript font aliases. If PSMAPFILE begins with a `+' character, then the rest of the name is used as the name of the map file, and the map file is appended to the list of map files (instead of replacing the list). In either case, if the name has no extension, then `.map' is added at the end. `-U*' Disable a PostScript virtual memory-saving optimization that stores the character metric information in the same string that is used to store the bitmap information. This is only necessary when driving the Xerox 4045 PostScript interpreter, which has a bug that puts garbage on the bottom of each character. Not recommended unless you must drive this printer. `-v' Print the dvips version number and exit. `-V*' Download non-resident PostScript fonts as bitmaps. This requires use of `mtpk' or `gsftopk' or `pstopk' or some combination thereof to generate the required bitmap fonts; these programs are supplied with Dvips. The bitmap must be put into `psfonts.map' as the downloadable file for that font. This is useful only for those fonts for which you do not have real outlines, being downloaded to printers that have no resident fonts, i.e., very rarely. `-x NUM' Set the magnification ratio to NUM/1000. Overrides the magnification specified in the DVI file. Must be between 10 and 100000. It is recommended that you use standard magstep values (1095, 1200, 1440, 1728, 2074, 2488, 2986, and so on) to help reduce the total number of PK files generated. NUM may be a real number, not an integer, for increased precision. `-X NUM' Set the horizontal resolution in dots per inch to NUM. `-y NUM' Set the magnification ratio to NUM/1000 times the magnification specified in the DVI file. See `-x' above. `-Y NUM' Set the vertical resolution in dots per inch to NUM. `-z*' Pass `html' hyperdvi specials through to the output for eventual distillation into PDF. This is not enabled by default to avoid including the header files unnecessarily, and use of temporary files in creating the output. *Note Hypertext::. `-Z*' Compress bitmap fonts in the output file, thereby reducing the size of what gets downloaded. Especially useful at high resolutions or when very large fonts are used. May slow down printing, especially on early 68000-based PostScript printers. Generally recommend today, and can be enabled in the configuration file (*note Configuration file commands::).  File: dvips.info, Node: Environment variables, Next: Config files, Prev: Command-line options, Up: Invoking Dvips 3.3 Environment variables ========================= Dvips looks for many environment variables, to define search paths and other things. The path variables are read as needed, after all configuration files are read, so they override values in the configuration files. (Except for `TEXCONFIG', which defines where the configuration files themselves are found.) *Note Path specifications: (kpathsea)Path specifications, for details of interpretation of path and other environment variables common to all Kpathsea-using programs. Only the environment variables specific to Dvips are mentioned here. `DVIPSDEBUG' Write the absolute path names of any configuration or map files to standard output, for debugging. This isn't done by default because these files are read even before the banner is printed. For voluminous additional debugging, set the environment variable `KPATHSEA_DEBUG' to `-1' (*note Debugging: (kpathsea)Debugging.). (If `KPATHSEA_DEBUG' is set to any value, it automatically turns on `DVIPSDEBUG'.) `DVIPSFONTS' Default path to search for all fonts. Overrides all the font path config file options and other environment variables (*note Supported file formats: (kpathsea)Supported file formats.). `DVIPSHEADERS' Default path to search for PostScript header files. Overrides the `H' config file option (*note Configuration file commands::). `DVIPSMAKEPK' Overrides `mktexpk' as the name of the program to invoke to create missing PK fonts. You can change the arguments passed to the `mktexpk' program with the `MAKETEXPK' environment variable; *note MakeTeX script arguments: (kpathsea)MakeTeX script arguments. `DVIPSRC' Specifies the name of the startup file (*note Configuration file searching::) which is read after `config.ps' but before any printer-specific configuration files. `DVIPSSIZES' Last-resort sizes for scaling of unfound fonts. Overrides the `R' definition in config files (*note Configuration file commands::). `PRINTER' Determine the default printer configuration file. (Dvips itself does not use `PRINTER' to determine the output destination in any way.) `TEXCONFIG' Path to search for Dvips' `config.PRINTER' configuration files, including the base `config.ps'. Using this single environment variable, you can override everything else. (The printer-specific configuration files are called `PRINTER.cfg' on MS-DOS, but `config.ps' is called by that name on all platforms.) `TEXPICTS' Path to search for included graphics files. Overrides the `S' config file option (*note Configuration file commands::). If not set, `TEXINPUTS' is looked for. *Note Supported file formats: (kpathsea)Supported file formats.  File: dvips.info, Node: Config files, Prev: Environment variables, Up: Invoking Dvips 3.4 Dvips configuration files ============================= This section describes in detail the Dvips-specific `config.*' device configuration files (called `*.cfg' on MS-DOS), which override the `texmf.cnf' configuration files generic to Kpathsea which Dvips also reads (*note Config files: (kpathsea)Config files.). For information about installing these files, including a prototype file you can copy, *note config.ps installation::. * Menu: * Configuration file searching:: Where config.* files are searched for. * Configuration file commands:: What can go in a config.* file.  File: dvips.info, Node: Configuration file searching, Next: Configuration file commands, Up: Config files 3.4.1 Configuration file searching ---------------------------------- The Dvips program loads many different configuration files, so that parameters can be set globally across the system, on a per-device basis, or individually by each user. 1. Dvips first reads (if it exists) `config.ps'; it is searched for along the path for Dvips configuration files, as described in *note Supported file formats: (kpathsea)Supported file formats. 2. A user-specific startup file is loaded, so individual users can override any options set in the global file. The environment variable `DVIPSRC', if defined, is used as the specification of the startup file. If this variable is undefined, Dvips uses a platform-specific default name. On Unix Dvips looks for the default startup file under the name `$HOME/.dvipsrc', which is in the user's home directory. On MS-DOS and MS-Windows, where users generally don't have their private directories, the startup file is called `dvips.ini' and it is searched for along the path for Dvips configuration files (as described in *note Supported file formats: (kpathsea)Supported file formats.); users are expected to set this path as they see fit for their taste. 3. The command line is read and parsed: if the `-PDEVICE' option is encountered, at that point `config.DEVICE' is loaded. Thus, the printer configuration file can override anything in the site-wide or user configuration file, and it can also override options in the command line up to the point that the `-P' option was encountered. (On MS-DOS, the printer configuration files are called `DEVICE.cfg', since DOS doesn't allow more than 3 characters after the dot in filenames.) 4. If no `-P' option was specified, and also the `-o' and `-f' command line options were not used, Dvips checks the environment variable `PRINTER'. If it exists, then `config.$PRINTER' (`$PRINTER.cfg' on MS-DOS) is loaded (if it exists). Because the `.dvipsrc' file is read before the printer-specific configuration files, individual users cannot override settings in the latter. On the other hand, the `TEXCONFIG' path usually includes the current directory, and can in any case be set to anything, so the users can always define their own printer-specific configuration files to be found before the system's. A few command-line options are treated specially, in that they are not overridden by configuration files: `-D' As well as setting the resolution, this unsets the mode, if the mode was previously set from a configuration file. If `config.$PRINTER' is read, however, any `D' or `M' lines from there will take effect. `-mode' This overrides any mode setting (`M' line) in configuration files. `-mode' does not affect the resolution. `-o' This overrides any output setting (`o' line) in configuration files. The purpose of these special cases is to (1) minimize the chance of having a mismatched mode and resolution (which `mktexpk' cannot resolve), and (2) let command-line options override config files where possible.  File: dvips.info, Node: Configuration file commands, Prev: Configuration file searching, Up: Config files 3.4.2 Configuration file commands --------------------------------- Most of the configuration file commands are similar to corresponding command line options, but there are a few exceptions. When they are the same, we omit the description here. As with command line options, many may be turned off by suffixing the letter with a zero (`0'). Within a configuration file, empty lines, and lines starting with a space, asterisk, equal sign, percent sign, or pound sign are ignored. There is no provision for continuation lines. `@ NAME HSIZE VSIZE' Define paper sizes. *Note Config file paper sizes::. `a*' Memory conservation. Same as `-a', *note Option details::. `b #COPIES' Multiple copies. Same as `-b', *note Option details::. `D DPI' Output resolution. Same as `-D', *note Option details::. `e NUM' Max drift. Same as `-e', *note Option details::. `E COMMAND' Executes the command listed with `system'(3); can be used to get the current date into a header file for inclusion, for instance. Possibly dangerous; this may be disabled, in which case a warning will be printed if the option is used (and warnings are not suppressed). `f*' `F' Run as a filter. Same as `-f', *note Option details::. `G*' Shift low-numbered characters; obsolete. Same as `-G', *note Option details::. `h HEADER' Prepend HEADER to output. Same as `h-', *note Option details::. `H PATH' Use PATH to search for PostScript header files. The environment variable `DVIPSHEADERS' overrides this. `i N' Make multiple output files. Same as `-i -S N', *note Option details::. `j*' Partially download Type 1 fonts. Same as `-j', *note Option details::. `K*' Remove comments from included PostScript files. Same as `-K', *note Option details::. `m NUM' Declare NUM as the memory available for fonts and strings in the printer. Default is 180000. This value must be accurate if memory conservation and document splitting is to work correctly. To determine this value, send the following file to the printer: %! Hey, we're PostScript /Times-Roman findfont 30 scalefont setfont 144 432 moveto vmstatus exch sub 40 string cvs show pop showpage The number printed by this file is the total memory free; it is usually best to tell Dvips that the printer has slightly less memory, because many programs download permanent macros that can reduce the memory in the printer. Some systems or printers can dynamically increase the memory available to a PostScript interpreter, in which case this file might return a ridiculously low number; for example, the NeXT computer and Ghostscript. In these cases, a value of one million works fine. `M MODE' Metafont mode. Same as `-mode', *note Option details::. `N*' Disable structured comments. Beware: This also turns off displaying page numbers or changing to specific pagenumbers in PostScript viewers. Same as `-N', *note Option details::. `o NAME' Send output to NAME. Same as `-o', *note Option details::. In the file `config.foo', a setting like this is probably appropriate: o |lpr -Pfoo The MS-DOS version will emulate spooling to `lpr' by printing to the local printer device `PRN' if it doesn't find an executable program by that name in the current directory or along the `PATH'. `O XOFF,YOFF' Origin offset. Same as `-O', *note Option details::. `p [+]NAME' Examine NAME for PostScript font aliases. Default is `psfonts.map'. This option allows you to specify different resident fonts that different printers may have. If NAME starts with a `+' character, then the rest of the name (after any leading spaces) is used as an additional map file; thus, it is possible to have local map files pointed to by local configuration files that append to the global map file. This can be used for font families. `P PATH' Use PATH to search for bitmap PK font files is PATH. The `PKFONTS', `TEXPKS', `GLYPHFONTS', and `TEXFONTS' environment variables override this. *Note Supported file formats: (kpathsea)Supported file formats. `q*' `Q' Run quietly. Same as `-q', *note Option details::. `r*' Page reversal. Same as `-r', *note Option details::. `R NUM1 NUM2 ...' Define the list of default resolutions for PK fonts. If a font size actually used in a document is not available and cannot be created, Dvips will scale the font found at the closest of these resolutions to the requested size, using PostScript scaling. The resulting output may be ugly, and thus a warning is issued. To turn this last-resort scaling off, use a line with just the `R' and no numbers. The given numbers must be sorted in increasing order; any number smaller than the preceding one is ignored. This is because it is better to scale a font up than down; scaling down can obliterate small features in the character shape. The environment and config file values `DVIPSSIZES' or `TEXSIZES' override this configuration file setting. If no `R' settings or environment variables are specified, a list compiled in during installation is used. This default list is defined by the Makefile variable `default_texsizes', defined in the file `make/paths.make'. `s*' Output global save/restore. Same as `-s', *note Option details::. `S PATH' Use PATH to search for special illustrations (Encapsulated PostScript files or psfiles). The `TEXPICTS' and then `TEXINPUTS' environment variables override this. `T PATH' Use PATH to search for TFM files. The `TFMFONTS' and then `TEXFONTS' environment variables overrides this. This path is used for resident fonts and fonts that can't otherwise be found. `U*' Work around bug in Xerox 4045 printer. Same as `-U', *note Option details::. `V PATH' Use PATH to search for virtual font files. This may be device-dependent if you use virtual fonts to simulate actual fonts on different devices. `W [STRING]' If STRING is supplied, write it to standard error after reading all the configuration files; with no STRING, cancel any previous `W' message. This is useful in the default configuration file to remind users to specify a printer, for instance, or to notify users about special characteristics of a particular printer. `X NUM' Horizontal resolution. Same as `-X' (*note Option details::). `Y NUM' Vertical resolution. Same as `-Y' (*note Option details::). `Z*' Compress bitmap fonts. Same as `-Z' (*note Option details::). `z*' Disables execution of system commands, like `-R' (*note Option details::). If `-R' is specified on the command line, that takes precedence.  File: dvips.info, Node: Paper size and landscape, Next: Interaction with PostScript, Prev: Invoking Dvips, Up: Top 4 Paper size and landscape orientation ************************************** Most TeX documents at a particular site are designed to use the local standard paper size (letter size in the United States, A4 in Europe). The Dvips program can be customized either sitewide or for a particular printer. But many documents are designed for other paper sizes. For instance, you may want to design a document that has the long edge of the paper horizontal. This can be useful when typesetting booklets, brochures, complex tables, or many other documents. This type of paper orientation is called "landscape" orientation (the default orientation is "portrait"). Alternatively, a document might be designed for ledger or A3 paper. Since the intended paper size in these cases is a document design decision, not a printing decision, such information should be given in the TeX file and not on the Dvips command line. For this reason, Dvips supports a `papersize' special. It is hoped that this special will become standard over time for TeX previewers and other printer drivers. Some LaTeX packages, e.g., `hyperref.sty', write a `papersize' special into the DVI file. In this case, you need not and should not attempt to override it manually. * Menu: * papersize special:: Specifying the paper size in TeX. * Config file paper sizes:: Specifying printer- and site-specific sizes. * Paper trays:: Changing paper trays automatically.  File: dvips.info, Node: papersize special, Next: Config file paper sizes, Up: Paper size and landscape 4.1 `papersize' special ======================= The format of the `papersize' special is \special{papersize=WIDTH,HEIGHT} WIDTH is the horizontal size of the page, and HEIGHT is the vertical size. The dimensions supported are the same as for TeX; namely, in (inches), cm (centimeters), mm (millimeters), pt (points), sp (scaled points), bp (big points, the same as the default PostScript unit), pc (picas), dd (didot points), and cc (ciceros). For a US letter size landscape document, the `papersize' would be: \special{papersize=11in,8.5in} An alternate specification of `landscape': \special{landscape} This is supported for backward compatibility, but it is hoped that reventually the `papersize' comment will dominate. Of course, such a `\special' only informs Dvips of the desired paper size; you must also adjust `\hsize' and `\vsize' in your TeX document typeset to those dimensions. When using the `papersize' special, you generally should not also specify `-t' on the command line (*note Option details::). The exception is when using a nonstandard paper size that isn't predefined; in this case, use `-t unknown'. The `papersize' special must occur somewhere on the first page of the document. Some packages, notably `hyperref', insert this special.  File: dvips.info, Node: Config file paper sizes, Next: Paper trays, Prev: papersize special, Up: Paper size and landscape 4.2 Configuration file paper size command ========================================= The `@' command in a configuration file sets the paper size defaults and options. The first `@' command defines the default paper size. It has three possible parameters: @ [NAME [HSIZE VSIZE]] If `@' is specified on a line by itself, with no parameters, it instructs Dvips to discard all previous paper size information (possibly from another configuration file). If three parameters are given, with the first parameter being a name and the second and third being a dimension (as in `8.5in' or `3.2cc', just like in the `papersize' special), then the option is interpreted as starting a new paper size description, where NAME is the name and HSIZE and VSIZE define the horizontal and vertical size of the sheet of paper, respectively. For example: @ letterSize 8.5in 11in If both HSIZE and VSIZE are zero (you must still specify units!) then any page size will match. If the `@' character is immediately followed by a `+' sign, then the remainder of the line (after skipping any leading blanks) is treated as PostScript code to send to the printer, presumably to select that particular paper size: @ letter 8.5in 11in @+ %%BeginPaperSize: Letter @+ letter @+ %%EndPaperSize After all that, if the first character of the line is an exclamation point, then the line is put in the initial comments section of the final output file; else, it is put in the setup section of the output file. For example: @ legal 8.5in 14in @+ ! %%DocumentPaperSizes: Legal @+ %%BeginPaperSize: Legal @+ legal @+ %%EndPaperSize When Dvips has a paper format name given on the command line, it looks for a match by the NAME; when it has a `papersize' special, it looks for a match by dimensions. The best match found (from the paper size information in the configuration file) is used. The dimensions must match within 5bp. If nothing matches, a warning is printed and the first paper size with zero dimensions is used; this should be the `unknown' paper size definition mentioned below, resulting in the actual dimensions being used. Landscape mode for all paper sizes is automatically supported. If your printer has a command to set a special paper size, then give dimensions of `0in 0in'; the PostScript code that sets the paper size can refer to the dimensions the user requested as `hsize' and `vsize'; these will be macros defined in the PostScript that return the requested size in default PostScript units. Also, some printers want `BeginPaperSize' comments and paper size setting commands; others (such as the NeXT) want `PaperSize' comments and they will handle setting the paper size. So paper size entries should typically specify both. When using a paper size that is not already defined in `config.ps', you probably want to say `-t unknown' on the command line; the `unknown' paper size definition in `config.ps' has the requisite PostScript incantation to set the PostScript page size, as just described. If you want no paper size information in the output at all, use `-t nopaper'. This is useful with multi-page output that will be processed further. If you just have a single page document, you can use `-E' to get pure EPSF output. The Perl 5 script `contrib/configs/mkdvipspapers' in the distribution directory may help in determining appropriate paper size definitions. Notwithstanding the above, the default `letter' and `a4' paper size definitions in `config.ps' execute the `setpagedevice' operator if it exists (it was defined in PostScript Level 2), or the `letter' or `a4' operator if they exist (they are nonstandard and thus perhaps cause failures on certain (unknown) printers). Not executing any page size definition at all confuses PostScript conversion programs such as `ps2pdf', so we want to execute one if we can. The `letterSize' and `A4Size' paper size definitions are now synonyms for `letter' and `a4'.  File: dvips.info, Node: Paper trays, Prev: Config file paper sizes, Up: Paper size and landscape 4.3 Paper trays =============== Some printers, such as the Hewlett-Packard HP4si, have multiple paper trays. You can set up Dvips to take advantage of this using the `bop-hook' PostScript variable (*note PostScript hooks::). For example, suppose you have an alternate tray stocked with letterhead paper; the usual tray has the usual paper. You have a document where you want the first page printed on letterhead, and the remaining pages on the usual paper. You can create a header file, say `firstletterhead.PS', with the following (PostScript) code (`bop-hook' is passed the current physical page number, which starts at zero): /bop-hook { dup 0 eq { ALTERNATETRAY } { NORMALTRAY } ifelse } def where ALTERNATETRAY and NORMALTRAY are the appropriate commands to select the paper trays. On the 4SI, ALTERNATETRAY is `statusdict begin 1 setpapertray end' and NORMALTRAY is `statusdict begin 0 setpapertray end'. Then, include the file with either * the `-h' command-line option (*note Option details::); or * the `h' config file option (*note Configuration file commands::); or * `\special{header=FILE}' in your TeX document (*note Including headers from TeX: Including headers from TeX.).  File: dvips.info, Node: Interaction with PostScript, Next: PostScript fonts, Prev: Paper size and landscape, Up: Top 5 Interaction with PostScript ***************************** Dvips supports inclusion of PostScript figure files (e.g., Encapsulated PostScript), downloading other header files (e.g., fonts), including literal PostScript code, and hypertext. * Menu: * PostScript figures:: Including an Encapsulated PostScript figure. * Header files:: Downloading extra definitions. * Literal PS:: Writing literal PostScript code. * Hypertext:: Producing HyperPostScript to make PDF.  File: dvips.info, Node: PostScript figures, Next: Header files, Up: Interaction with PostScript 5.1 PostScript figures ====================== Scaling and including PostScript graphics is a breeze--if the PostScript file is correctly formed. Even if it is not, however, the file can usually be accommodated with just a little more work. * Menu: * Bounding box:: The %%BoundingBox EPS comment. * \includegraphics:: The LaTeX \includegraphics macro. * EPSF macros:: Including the file in TeX. * psfile special:: The basic special. * Dynamic creation of graphics:: Handling compressed or generated figures. * Fonts in figures:: The %*Font comment.  File: dvips.info, Node: Bounding box, Next: \includegraphics, Up: PostScript figures 5.1.1 The bounding box comment ------------------------------ The most important feature of a good PostScript file from the standpoint of including it in another document is an accurate bounding box comment. Every well-formed PostScript file has a comment describing where on the page the graphic is located, and how big that graphic is. This information is given as the lower left and upper right corners of the box just enclosing the graphic, and is thus referred to as the "bounding box". These coordinates are given in the default PostScript units (there are precisely 72 PostScript units to the inch, like TeX big points) with respect to the lower left corner of the sheet of paper. To see if a PostScript file has a bounding box comment, just look at the first few lines of the file. PostScript files are standard ASCII, so you can use any text editor to do this. If within the first few dozen lines there is a line like %%BoundingBox: 25 50 400 300 (with any reasonable numbers), chances are very good that the file is Encapsulated PostScript and will work easily with Dvips. If the file contains instead a line like %%BoundingBox: (atend) the file is still probably Encapsulated PostScript, but the bounding box is given at the end of the file. Dvips needs it at the beginning. You can move it with that same text editor, or a simple script. (The bounding box is given in this way when the program that generated the PostScript couldn't know the size in advance, or was too lazy to compute it.) If the document lacks a `%%BoundingBox:' altogether, you can determine one in a couple of ways. One is to use the `bbfig' program distributed with Dvips in the `contrib' directory. This can usually find the correct bounding box automatically; it works best with Ghostscript. If the comment looks like this: %%BoundingBox: 0 0 612 792 the graphic claims to take up an entire sheet of paper. This is usually a symptom of a bug in the program that generated it. The other is to do it yourself: print the file. Now, take a ruler, and make the following measurements (in PostScript units, so measure in inches and multiply by 72): From the left edge of the paper to the leftmost mark on the paper is LLX, the first number. From the bottom edge of the paper to the bottommost mark on the paper is LLY, the second number. From the left edge of the paper to the rightmost mark on the paper is URX, the third number. The fourth and final number, URY, is the distance from the bottom of the page to the uppermost mark on the paper. Once you have the numbers, add a comment of the following form as the second line of the document. (The first line should already be a line starting with the two characters `%!'; if it is not, the file probably isn't PostScript.) %%BoundingBox: LLX LLY URX URY Or, if you don't want to modify the file, you can simply write these numbers down in a convenient place and give them in your TeX document when you import the graphic, as described in the next section. If the document does not have such a bounding box, or if the bounding box is given at the end of the document, or the bounding box is wrong, please complain to the authors of the software package that generated the file.  File: dvips.info, Node: \includegraphics, Next: EPSF macros, Prev: Bounding box, Up: PostScript figures 5.1.2 The \includegraphics macro for LaTeX ------------------------------------------ Once the figure file has a bounding box comment (see the previous section) you are ready to import the graphic into a LaTeX document. For LaTeX 2e, you can use the epsf, graphics or graphicx packages, but the last is recommended--it has the most flexible syntax, and is briefly described here. Further information can be found in `grfguide' or `epslatex', which should be included in your LaTeX distribution in DVI, PDF, or other formats. (If you are still using LaTeX 2.09, use epsf.sty). Just put the following command into your preamble: \usepackage[dvips]{graphicx} Depending on your system, a suitable driver setup may already be present, so that LaTeX automatically produces DVI files suitable for Dvips. In this case you can leave out the `[dvips]' parameter. Now, at the point you want to include a file `foo.eps', enter a line such as: \includegraphics{foo.eps} However, it is usually best to omit the file extension and only use \includegraphics{foo} because then you can process the same LaTeX file with different TeX engines or DVI converters if you also provide suitable graphics files for them, e.g., `foo.pdf' or `foo.png'. The \includegraphics command has many options, specified in `key=value' syntax, to allow you to resize, rotate or trim the included graphic--see `grfguide' or `epslatex'. If your file does not have a bounding box comment, you can supply the numbers as determined in the previous section, in the same order they would have been in a normal bounding box comment: \includegraphics[bb=100 100 500 500]{foo.ps} Now, save your changes and run LaTeX and Dvips; the output should have your graphic positioned at precisely the point you indicated, occupying the proper amount of space. PostScript graphics have their origin in the lower left corner. Therefore, in TeX, a graphic will occupy a box that extends far above the line where it is put in, but has depth zero below it. Combining `\includegraphics' with `\parbox' commands or minipages can sometimes be confusing when this is not taken into account.  File: dvips.info, Node: EPSF macros, Next: psfile special, Prev: \includegraphics, Up: PostScript figures 5.1.3 Using the EPSF macros --------------------------- If you are using LaTeX 2e, use the `graphics' or `graphicx' package. *Note \includegraphics::. If you are using plain TeX or LaTeX 2.09, you need `epsf.tex' (for plain TeX) and `epsf.sty' (for LaTeX). For plain TeX, add a line like this near the top of your input file: \input epsf If you are using LaTeX 2.09, add the `epsf' style option, as in: \documentstyle[12pt,epsf]{article} In any case, the above only needs to be done once, no matter how many figures you plan to include. Now, at the point you want to include a file, enter a line such as: \epsffile{foo.eps} If you are using LaTeX, you may need to add `\leavevmode' immediately before the `\epsffile' command to get certain environments to work correctly. If your file does not have a bounding box comment, you can supply the numbers as determined in the previous section, in the same order they would have been in a normal bounding box comment: \epsffile[100 100 500 500]{foo.ps} Now, save your changes and run TeX and Dvips; the output should have your graphic positioned at precisely the point you indicated, occupying the proper amount of space. The `\epsffile' macro typesets the figure as a TeX `\vbox' at the point of the page that the command is executed. By default, the graphic will have its `natural' width (namely, the width of its bounding box). The TeX box will have depth zero and its natural height. By default, the graphic will be scaled by any DVI magnification in effect, just as is everything else in your document. See the next section for more information on scaling. If you want TeX to report the size of the figure as a message on your terminal when it processes each figure, give the command: \epsfverbosetrue * Menu: * EPSF scaling:: * EPSF clipping::  File: dvips.info, Node: EPSF scaling, Next: EPSF clipping, Up: EPSF macros 5.1.3.1 EPSF scaling .................... Usually, you will want to scale an EPSF figure to some size appropriate for your document, since its natural size is determined by the creator of the EPS file. The best way to do this is to assign the desired size to the TeX `\epsfxsize' or `\epsfysize' variables, whichever is more convenient for you. That is, put \epsfxsize=DIMEN right before the call to `\epsffile'. Then the width of the TeX box will be DIMEN and its height will be scaled proportionately. Similarly, you can set the vertical size with \epsfysize=DIMEN in which case the height will be set and the width scaled proportionally. If you set both, both will be honored, but the aspect ratio of the included graphic may necessarily be distorted, i.e., its contents stretched in one direction or the other. You can resize graphics in a more general way by redefining the `\epsfsize' macro. `\epsffile' calls this with two parameters: the natural horizontal and vertical sizes of the PostScript graphic. `\epsfsize' must expand to the desired horizontal size, that is, the width of the `\vbox'. Schematically: \def\epsfsize#1#2{BODY} Some useful definitions of BODY: `\epsfxsize' This definition (the default) enables the default features listed above, by setting `\epsfxsize' to the same value it had before the macro was called. `#1' Force the natural size by returning the first parameter (the original width). `0pt' A special case, equivalent to `#1'. `0.5#1' Scale to half the natural size. `\hsize' Scale to the current `\hsize'. (In LaTeX, use `\textwidth' instead of `\hsize'.) `\ifnum#1>\hsize\hsize\else#1\fi' If the natural width is greater than the current `\hsize', scale to `\hsize', otherwise use the natural width. For compatibility with other PostScript drivers, it is possible to turn off the default scaling of included figures by the DVI magnification with the following TeX command: \special{! /magscale false def} Use of this command is not recommended because it will make the `\epsffile' graphics the "wrong" size if global magnification is being used, and it will cause any PostScript graphics to appear improperly scaled and out of position if a DVI to DVI program is used to scale or otherwise modify the document. DVI magnification is not applied to any output from code you write in `bop-hook' or its ilk (*note PostScript hooks::),  File: dvips.info, Node: EPSF clipping, Prev: EPSF scaling, Up: EPSF macros 5.1.3.2 EPSF clipping ..................... By default, clipping is disabled for included EPSF images. This is because clipping to the bounding box dimensions often cuts off a small portion of the figure, due to slightly inaccurate bounding box arguments. The problem might be subtle; lines around the boundary of the image might be half their intended width, or the tops or bottoms of some text annotations might be sliced off. If you want to turn clipping on, just use the command \epsfclipon and to turn clipping back off, use \epsfclipoff  File: dvips.info, Node: psfile special, Next: Dynamic creation of graphics, Prev: EPSF macros, Up: PostScript figures 5.1.4 `psfile' special ---------------------- The basic special for file inclusion is as follows: \special{psfile=FILENAME.ps [KEY=VALUE] ... } This downloads the PostScript file `FILENAME.ps' such that the current point will be the origin of the PostScript coordinate system. The optional KEY=VALUE assignments allow you to specify transformations on the PostScript. The possible KEYs are: `hoffset' The horizontal offset (default 0). `voffset' The vertical offset (default 0). `hsize' The horizontal clipping size (default 612). `vsize' The vertical clipping size (default 792). `hscale' The horizontal scaling factor, as a percentage (default 100). `vscale' The vertical scaling factor, as a percentage (default 100). `angle' The rotation, in degrees (default 0). `clip' Enable clipping to the bounding box (default disabled). `llx, lly, urx, ury' Bounding box of the included image, just as in a `%%BoundingBox' comment. Values are in big points, and may be fractional. `rhi, rwi' Desired width and height of the resulting figure in the output, in tenths of big points (720 to the inch); may be fractional. If both `rwi' and `rhi' are nonzero, the picture is scaled, possibly losing aspect ratio. If only one of `rwi' and `rhi' is nonzero, the picture is scaled, preserving aspect ratio. The offsets and sizes are given in PostScript units (big points). Thus, for example: \special{psfile=foo.ps hoffset=72 hscale=90 vscale=90} will shift the graphics produced by file `foo.ps' right by one inch and will draw it at 0.9 times normal size. Offsets are given relative to the point of the special command, and are unaffected by scaling or rotation. Rotation is counterclockwise about the origin. The order of operations is to rotate the figure, scale it, then offset it. For compatibility with older PostScript drivers, it is possible to change the units that `hscale' and `vscale' are given in. This can be done by redefining `@scaleunit' in `SDict' by a TeX command such as \special{! /@scaleunit 1 def} The `@scaleunit' variable, which is by default 100, is what `hscale' and `vscale' are divided by to yield an absolute scale factor.  File: dvips.info, Node: Dynamic creation of graphics, Next: Fonts in figures, Prev: psfile special, Up: PostScript figures 5.1.5 Dynamic creation of PostScript graphics files --------------------------------------------------- PostScript is an excellent page description language--but it does tend to be rather verbose. Compressing PostScript graphics files can reduce them by factor of five or more. For this reason, if the name of an included PostScript file ends with `.Z' or `.gz', Dvips automatically runs `gzip -d'. For example: \epsffile[72 72 540 720]{foo.ps.gz} Since the results of such a command are not accessible to TeX, if you use this facility with the `epsf' macros, you need to supply the bounding box parameter yourself, as shown. More generally, if the filename parameter to one of the graphics inclusion techniques starts with a left quote (``'), the parameter is instead interpreted as a command to execute that will send the actual file to standard output. For example: \special{psfile="`gnuplot foo"} to include the file `foo'. Of course, the command to be executed can be anything, including using a file conversion utility such as `tek2ps' or whatever is appropriate. This feature can be disabled with the `-R' command-line option or `R' configuration option.  File: dvips.info, Node: Fonts in figures, Prev: Dynamic creation of graphics, Up: PostScript figures 5.1.6 Fonts in figures ---------------------- You can use any font available to TeX and Dvips within a graphics file by putting a `%*Font:' line in the leading commentary of the file. Schematically, this looks like: %*Font: TFMNAME SCALEDBP DESIGNBP HEX-START:HEX-BITSTRING Here is the meaning of each of these elements: TFMNAME The TeX TFM filename, e.g., `cmr10'. You can give the same TFMNAME on more than one `%*Font' line; this is useful when the number of characters from the font used needs a longer HEX-BITSTRING (see item below) than conveniently fits on one line. SCALEDBP The size at which you are using the font, in PostScript points (TeX big points). 72bp = 72.27pt = 1in. DESIGNBP The designsize of the font, again in PostScript points. This should match the value in the TFM file TFMNAME. Thus, for `cmr10', it should be `9.96265'. HEX-START The character code of the first character used from the font, specified as two ASCII hexadecimal characters, e.g., `4b' or `4B' for `K'. HEX-BITSTRING An arbitrary number of ASCII hexadecimal digits specifying which characters following (and including) HEX-START are used. This is treated as a bitmap. For example, if your figure used the single letter `K', you would use `4b:8' for HEX-START and HEX-BITSTRING. If it used `KLMNP', you would use `4b:f4'. MetaPost's output figures contain lines like this for bitmap fonts used in a MetaPost label (*note MetaPost: (web2c)MetaPost.).  File: dvips.info, Node: Header files, Next: Literal PS, Prev: PostScript figures, Up: Interaction with PostScript 5.2 PostScript header files =========================== "Header files" are bits of PostScript included in the output file; generally they provide support for special features, rather than producing any printed output themselves. You can explicitly request downloading header files if necessary for some figure, or to achieve some special effect. Dvips includes some headers on its own initiative, to implement features such as PostScript font reencoding, bitmap font downloading, handling of `\special''s, and so on. These standard headers are the `.pro' files (for "prologue") in the installation directory `$(psheaderdir)'; they are created from the `.lpro' ("long prologue") files in the distribution by stripping comments, squeezing blank lines, etc., for maximum efficiency. If you want to peruse one of the standard header files, read the `.lpro' version. The PostScript dictionary stack will be at the `userdict' level when header files are included. * Menu: * Including headers from TeX:: * Including headers from the command line:: * Headers and memory usage::  File: dvips.info, Node: Including headers from TeX, Next: Including headers from the command line, Up: Header files 5.2.1 Including headers from TeX -------------------------------- In order to get a particular graphic file to work, a certain font or header file might need to be sent first. The Dvips program provides support for this with the `header' `\special'. For instance, to ensure that `foo.ps' gets downloaded: \special{header=foo.ps} As another example, if you have some PostScript code that uses a PostScript font not built into your printer, you must download it to the printer. If the font isn't used elsewhere in the document, Dvips can't know you've used it, so you must include it in the same way, as in: \special{header=putr.pfa} to include the font definition file for Adobe Utopia Roman. The `header' also special allows for specifying some additional code that should be inserted into the PostScript document before and after the file itself, as follows: \special{header={foo.ps} pre={pre code} post={post code}} This will insert `pre code' just before `foo.ps' and `post code' just after. It is required to use the (balanced) braces in _all_ of the arguments, including the `header', when using this extended syntax. This allows, for instance, dynamic headers, where some of the content depends on settings from the user in (La)TeX. Another application is the inclusion of graphics inside the PostScript header, so that they can be reused throughout the document, as with logs. That avoids including the same graphic several times. This is implemented in the `graphics/graphicx-psmin' package. This extended syntax has one additional feature. When Dvips finds the extended syntax, it will also look in the installed `tex/' tree(s) for the header file (`foo.ps' in our example), and not only in the current directory and dvips tree as the original syntax does. This is because common graphics may well come with packages which are installed in the `tex/' tree.  File: dvips.info, Node: Including headers from the command line, Next: Headers and memory usage, Prev: Including headers from TeX, Up: Header files 5.2.2 Including headers from the command line --------------------------------------------- You can include headers when you run Dvips, as well as from your document (see the previous section). To do this, run Dvips with the option `-P HEADER'; this will read the file `config.HEADER', which in turn can specify a header file to be downloaded with the `h' option. *Note Configuration file commands::. These files are called `HEADER.cfg' on MS-DOS. You can arrange for the same file to serve as a `-P' config file and the downloadable header file, by starting the lines of PostScript code with a space, leaving only the `h' line and any comments starting in the first column. As an example, see `contrib/volker/config.*' (`contrib/volker/*.cfg' on MS-DOS). (These files also perform useful functions: controlling duplex/simplex mode on duplex printers, and setting various screen frequencies; `contrib/volker/README' explains further.)  File: dvips.info, Node: Headers and memory usage, Prev: Including headers from the command line, Up: Header files 5.2.3 Headers and memory usage ------------------------------ Dvips tries to avoid overflowing the printer's memory by splitting the output files into "sections" (see the `-i' option in *note Option details::). Therefore, for all header files, Dvips debits the printer VM budget by some value. If the header file has, in its leading commentary a line of the form %%VMusage: MIN MAX then MAX is used. If there is no `%%VMusage' line, then the size (in bytes) of the header file is used as an approximation. Illustrations (figure files) are also checked for `%%VMusage' line.  File: dvips.info, Node: Literal PS, Next: Hypertext, Prev: Header files, Up: Interaction with PostScript 5.3 Literal PostScript ====================== You can include literal PostScript code in your document in several ways. * Menu: * " special:: To include inline PostScript code. * ps special:: Inline PostScript without save/restore. * PostScript hooks:: Specifying code to run in the PS interpreter. * Literal headers:: Literal PostScript for the whole document. * Literal examples:: Neat example.  File: dvips.info, Node: " special, Next: ps special, Up: Literal PS 5.3.1 `"' special: Literal PostScript ------------------------------------- For simple graphics, or just for experimentation, literal PostScript code can be included. Simply use a `\special' beginning with a double quote character `"'; there is no matching closing `"'. For instance, the following (simple) graphic: [ picture of a grey triangle ] was created by typing: \vbox to 100bp{\vss % a bp is the same as a PostScript unit \special{" newpath 0 0 moveto 100 100 lineto 394 0 lineto closepath gsave 0.8 setgray fill grestore stroke}} You are responsible for leaving space for such literal graphics, as with the `\vbox' above.  File: dvips.info, Node: ps special, Next: PostScript hooks, Prev: " special, Up: Literal PS 5.3.2 `ps' special ------------------ Generally, Dvips encloses specials in a PostScript save/restore pair, guaranteeing that the special will have no effect on the rest of the document. The `ps' special, however, allows you to insert literal PostScript instructions without this protective shield; you should understand what you're doing (and you shouldn't change the PostScript graphics state unless you are willing to take the consequences). This command can take many forms because it has had a torturous history; any of the following will work: \special{ps:TEXT} \special{ps::TEXT} \special{ps::[begin]TEXT} \special{ps::[end]TEXT} \special{ps::[nobreak]TEXT} (with longer forms taking precedence over shorter forms, when they are present). `ps::' and `ps::[end]' do no positioning, so they can be used to continue PostScript literals started with `ps:' or `ps::[begin]'. Literal PostScript instructions after `ps::[nobreak]' are _not_ broken into lines. This feature may be used to include PostScript comments, for example. In addition, the variant \special{ps: plotfile FILENAME} inserts the contents of FILENAME verbatim into the output (except for omitting lines that begin with %). An example of the proper use of literal specials can be found in the file `rotate.tex', which makes it easy to typeset text turned in multiples of 90 degrees.  File: dvips.info, Node: Literal headers, Next: Literal examples, Prev: PostScript hooks, Up: Literal PS 5.3.3 Literal headers: `!' `\special' ------------------------------------- You can download literal PostScript header code in your TeX document, for use with (for example) literal graphics code that you include later. The text of a `\special' beginning with an `!' is copied into the output file. A dictionary `SDict' will be current when this code is executed; Dvips arranges for `SDict' to be first on the dictionary stack when any PostScript graphic is included, whether literally (the `"' special) or through macros (e.g., `epsf.tex'). For example: \special{! /reset { 0 0 moveto} def}  File: dvips.info, Node: PostScript hooks, Next: Literal headers, Prev: ps special, Up: Literal PS 5.3.4 PostScript hooks ---------------------- Besides including literal PostScript at a particular place in your document (as described in the previous section), you can also arrange to execute arbitrary PostScript code at particular times while the PostScript is printing. If any of the PostScript names `bop-hook', `eop-hook', `start-hook', or `end-hook' are defined in `userdict', they will be executed at the beginning of a page, end of a page, start of the document, and end of a document, respectively. When these macros are executed, the default PostScript coordinate system and origin is in effect. Such macros can be defined in headers added by the `-h' option or the `header=' special, and might be useful for writing, for instance, `DRAFT' across the entire page, or, with the aid of a shell script, dating the document. These macros are executed outside of the save/restore context of the individual pages, so it is possible for them to accumulate information, but if a document must be divided into sections because of memory constraints, such added information will be lost across section breaks. The single argument to `bop-hook' is the physical page number; the first page gets zero, the second one, etc. `bop-hook' must leave this number on the stack. None of the other hooks are passed arguments. As an example of what can be done, the following special will write a light grey `DRAFT' across each page in the document: \special{!userdict begin /bop-hook{gsave 200 30 translate 65 rotate /Times-Roman findfont 216 scalefont setfont 0 0 moveto 0.7 setgray (DRAFT) show grestore}def end} Using `bop-hook' or `eop-hook' to preserve information across pages breaks compliance with the Adobe document structuring conventions, so if you use any such tricks, you may also want to use the `-N' option to turn off structured comments (such as `%%Page'). Otherwise, programs that read your file will assume its pages are independent.  File: dvips.info, Node: Literal examples, Prev: Literal headers, Up: Literal PS 5.3.5 Literal examples ---------------------- To finish off this section, the following examples of literal PostScript are presented without explanation: \def\rotninety{\special{ps:currentpoint currentpoint translate 90 rotate neg exch neg exch translate}}\font\huge=cmbx10 at 14.4truept \setbox0=\hbox to0pt{\huge A\hss}\vskip16truept\centerline{\copy0 \special{ps:gsave}\rotninety\copy0\rotninety\copy0\rotninety \box0\special{ps:grestore}}\vskip16truept [ There are 4 `A' characters, each rotated 90 degrees about a common center point ] \vbox to 2truein{\special{ps:gsave 0.3 setgray}\hrule height 2in width\hsize\vskip-2in\special{ps:grestore}\font\big=cminch\big \vss\special{ps:gsave 1 setgray}\vbox to 0pt{\vskip2pt \line{\hss\hskip4pt NEAT\hss}\vss}\special{ps:0 setgray}% \hbox{\raise2pt\line{\hss NEAT\hss}\special{ps:grestore}}\vss} [ There is a big gray box with the word `NEAT' inside in big letters ] Some caveats are in order, however. Make sure that each `gsave' is matched with a `grestore' on the same page. Do not use `save' and `restore'; they can interact with the PostScript generated by Dvips if care is not taken. Try to understand what the above macros are doing before writing your own. The `\rotninety' macro especially has a useful trick that appears again and again.  File: dvips.info, Node: Hypertext, Prev: Literal PS, Up: Interaction with PostScript 5.4 HyperTeXt ============= Dvips has support for producing hypertext PostScript documents. If you specify the `-z' option, the `html:' specials described below will be converted into `pdfmark' PostScript operators to specify links. Without `-z', `html:' specials are ignored. The resulting PostScript can then be processed by a distiller program to make a PDF file. (It can still be handled by ordinary PostScript interpreters as well.) Various versions of both PC and Unix distillers are supported; Ghostscript includes limited distiller support (*note Ghostscript installation::). Macros you can use in your TeX document to insert the specials in the first place are available from `CTAN:/support/hypertex'. For CTAN info, *note unixtex.ftp: (kpathsea)unixtex.ftp. This hypertext support (and original form of the documentation) was written by Mark Doyle and Tanmoy Bhattacharya as the `dvihps' program. You can retrieve their software and additional documentation via the CTAN reference above. You may also be interested in the Java previewer IDVI, available at `http://www.win.tue.nl/~dickie/idvi', and/or in `http://www.emrg.com/texpdf.html', which describes the process of making PDF files from TeX files in more detail. Mail archives for the original project are at `http://math.albany.edu:8800/hm/ht/'. * Menu: * Hypertext caveats:: Font quality, missing character psi. * Hypertext specials:: The details on the specials.  File: dvips.info, Node: Hypertext caveats, Next: Hypertext specials, Up: Hypertext 5.4.1 Hypertext caveats ----------------------- If you intend to go all the way to PDF, you may want to use the standard 35 PostScript fonts exclusively, since other fonts are embedded as bitmaps by default. The Adobe PDF readers are extremely slow when dealing with bitmap fonts and the results look terrible on the screen. Printouts will probably look fine, but may not take full advantage of a high-resolution printer. Alternatively, you can have your fonts embedded as Type 1 scalable outlines. The resulting PostScript files may be larger, but can be effectively rasterized at any resolution. They can also be converted to PDF files that can be used effectively at any screen or printer resolution. To get the TeX fonts embedded in the PostScript file as Type 1 fonts, add `-Ppdf' to the dvips command line switches. The printout for a run should look something like this: dvips report -Ppdf -o report.ps This is dvips(k) 5.86 Copyright 1999 Radical Eye Software (www.radicaleye.com) ' TeX output 2001.06.15:0837' -> report.ps . [1] [2] [3] [4] An entry like "" indicates success: dvips found the Computer Modern Roman 10 point font in a PostScript Font Binary file, translated it to an ASCII encoding, and embedded it. You can confirm this by examining the PostScript output file, looking for the section starting `%%BeginFont: CMR10' followed by an entry `/FontType 1 def'. The `-Ppdf' option requires that the relevant outline (`.pfa' or `.pfb') files be installed (*note Font concepts::). For example, the `cmr10' file might be in `/usr/share/texmf/fonts/type1/bluesky/cm/cmr10.pfb'. Your TeX distribution may make those fonts available in a separate optional package (e.g., `tetex-extra' in Debian). Failing that, commercial versions of the Computer Modern fonts are available from Blue Sky; public domain versions - in particular, the lm fonts, and the cm-super fonts, are available from CTAN sites (for CTAN info, *note unixtex.ftp: (kpathsea)unixtex.ftp.). You can convert a PostScript file to PDF using `distill', which comes with Adobe Acrobat, or `ps2pdf', which comes with Ghostscript. The `ps2pdf' that comes with `Ghostscript' version 6.0 or earlier will not embed Type 1 fonts. Current recommendations are GNU Ghostscript 6.51 or Aladdin Ghostscript 7.0. You can check the fonts in a PDF file with Acrobat Reader by selecting the menu entries `File|Document Info|Fonts'. Also, the Adobe distillers prior to 2.1 drop trailing space characters (character code 32) from strings. Unfortunately, the PostScript fonts use this character code for characters other than space (notably the Greek letter psi in the `Symbol' font), and so these characters are dropped. This bug is fixed in version 2.1. If you can't upgrade, One workaround is to change all the trailing blanks in strings to a character code that isn't in the font. This works because the default behavior is to substitute a blank for a missing character, i.e., the distiller is fooled into substituting the right character. For instance, with the Blue Sky fonts, you can globally replace ` )' with `\200)' (with `sed', for example) and get the desired result. With the public domain fonts, you will probably have to use a character code in the range 128 to 191 since these fonts duplicate the first 32 characters starting at 192 to avoid MS-DOS problems. For more information on the use of TeX to produce PDF files, see the article "Creating quality Adobe PDF files from TeX with DVIPS" by Kendall Whitehouse of Adobe. Adobe seems not to offer the article any more, but copies are available elsewhere: `http://www.math.hawaii.edu/~ralph/MathOnWeb/TeXPDF.html' `http://www.utdallas.edu/~cantrell/online/543e.html' You may also want to check "Notes on converting (La)TeX documents to robust PDF using Rokicki's dvips and Acrobat Distiller" by Timothy P. Van Zandt: `http://www.emrg.com/texpdf.htmlhttp://zandtwerk.insead.fr/tex2pdf.html'.  File: dvips.info, Node: Hypertext specials, Prev: Hypertext caveats, Up: Hypertext 5.4.2 Hypertext specials ------------------------ Current support for the World Wide Web in the TeX system does not involve modifying TeX itself. We need only define some specials; Arthur Smith (), Tanmoy Bhattacharya, and Paul Ginsparg originally proposed and implemented the following: html: html: html: html: html: Like all TeX `\special''s, these produce no visible output, and are uninterpreted by TeX itself. They are instructions to DVI processors only. Here, XURL is a standard WWW uniform resource locator (URL), possibly extended with a `#TYPE.STRING' construct, where TYPE is `page', `section', `equation', `reference' (for bibliographic references), `figure', `table', etc. For example, \special{html:} is a link to equation (1.1) in an example document by Tim Murphy. See the URL `http://www.w3.org/hypertext/WWW/Addressing/Addressing.html' for a precise description of base URL's. Descriptions of the `\special''s: `href' Creates links in your TeX document. For example: \special{html:}\TeX\ Users Group\special{html:} The user will be able to click on the text `TeX Users Group' while running Xdvi and get to the TUG home page. (By the way, this is for illustration. In practice, you most likely want to use macros to insert the `\special' commands; reference above.) `name' Defines URL targets in your TeX documents, so links can be resolved. For example: \special{html:}Paradise\special{html:} is exactly where you are right now. This will resolve an `href="#paradise"'. You'll also have to change the catcode of `#', etc. It's usually easiest to use existing macro packages which take care of all the details, such as `hyperref' for LaTeX. The HyperTeX FAQ (http://arxiv.org/hypertex/) has more information. `img' Links to an arbitrary external file. Interactively, a viewer is spawned to read the file according to the file extension and your `mailcap' file (see the Xdvi documentation). `base' Defines a base URL that is prepended to all the `name' targets. Typically unnecessary, as the name of the DVI file being read is used by default. The `img' and `base' tags are not yet implemented in Dvips or the NeXTSTEP DVI viewer.  File: dvips.info, Node: PostScript fonts, Next: Color, Prev: Interaction with PostScript, Up: Top 6 PostScript fonts ****************** Dvips supports the use of PostScript fonts in TeX documents. To use a PostScript font conveniently, you need to prepare a corresponding virtual font; the program Afm2tfm, supplied with Dvips, helps with that. All the necessary support for the standard 35 PostScript fonts (`AvantGarde-Book' through `ZapfDingbats'), plus other freely or commonly available PostScript fonts is available along with Dvips. To use these fonts, you need do nothing beyond what is mentioned in the installation procedure (*note Installation::). This chapter is therefore relevant only if you are installing new PostScript fonts not supplied with Dvips. (Or if you're curious.) * Menu: * Font concepts:: Metrics, glyphs, virtual fonts, and encodings. * Making a font available:: Installing and using a PostScript font. * Invoking afm2tfm:: Creating TFM and AFM files for a virtual font. * psfonts.map:: Defining available PostScript fonts.  File: dvips.info, Node: Font concepts, Next: Making a font available, Up: PostScript fonts 6.1 Font concepts ================= The information needed to typeset using a particular font is contained in two files: a "metric file" that contains shape-independent information and a "glyph file" that contains the actual shapes of the font's characters. A "virtual font" is an optional additional file that can specify special ways to construct the characters. TeX itself (or LaTeX) look only at the metric file, but DVI drivers such as Dvips look at all three of these files. An "encoding file" defines the correspondence between the code numbers of the characters in a font and their descriptive names. Two encoding files used together can describe a reencoding that rearranges, i.e., renumbers, the characters of a font. * Menu: * Metric files:: Shape-independent font information. * Glyph files:: Character shapes. * Virtual fonts:: Constructing one font from others. * Encodings:: Character codes and character names. * PostScript typesetting:: How PostScript typesets a character.  File: dvips.info, Node: Metric files, Next: Glyph files, Up: Font concepts 6.1.1 Metric files ------------------ A "metric file" describes properties of the font that are independent of what the characters actually look like. Aside from general information about the font itself, a metric file has two kinds of information: information about individual characters, organized by character code, and information about sequences of characters. The per-character information specifies the width, height, depth, and italic correction of each character in the font. Any might be zero. In addition to information on individual characters, the metric file specifies "kerning", i.e., adding or removing space between particular character pairs. It further specifies "ligature" information: when a sequence of input characters should be typeset as a single (presumably different) "ligature" character. For example, it's traditional for the input `fi' to be typeset as `fi', not as `fi' (with the dot of the `i' colliding with `f'). (In English, the only common ligatures are fi, fl, ff, ffi, and ffl.) Different typesetting systems use different metric file formats: * Each Postscript font has an "Adobe font metrics" (`.afm') file. These files are plain text, so you can inspect them easily. You can get AFM files for Adobe's fonts from `ftp://ftp.adobe.com/pub/adobe/Fonts/AFMs'. * TeX uses "TeX font metrics" (`.tfm') files. When you say `\font = FONT' in your TeX document, TeX reads a file named `FONT.tfm'. (Well, except for the `texfonts.map' feature; *note Fontmap: (kpathsea)Fontmap.). TeX can then calculate the space occupied by characters from the font when typesetting. In addition, the DVI drivers you use to print or view the DVI file produced by TeX may need to look at the TFM file. TFM files are binary (and hence are typically much smaller than AFM files). You can use the `tftopl' program (*note tftopl invocation: (web2c)tftopl invocation.) that comes with TeX to transform a TFM file into a human-readable "property list" (`.pl') file. You can also edit a PL file and transform it back to a TeX-readable TFM with the companion program `pltotf' (*note pltotf invocation: (web2c)pltotf invocation.). Editing metrics by hand is not something you're likely to want to do often, but the capability is there. * ATM and other typesetting systems use "printer font metric" (`.pfm') files. These are binary files. They are irrelevant in the TeX world, and not freely available, so we will not discuss them further. The Afm2tfm program distributed with Dvips converts an AFM file to a TFM file and performs other useful transformations as well. *Note Invoking afm2tfm::.  File: dvips.info, Node: Glyph files, Next: Virtual fonts, Prev: Metric files, Up: Font concepts 6.1.2 Glyph files ----------------- Although a metric file (see the previous section) contains information about the spatial and other properties of the character at position 75, say, it contains nothing about what the character at position 75 actually looks like. The glyphs--the actual shapes of the letterforms in a font--are defined by other files, which we call glyph files. TeX itself only reads the TFM file for a font; it does not need to know character shapes. A "glyph file" is a file that defines the shapes of the characters in a font. The shapes can be defined either by outlines or by bitmaps. PostScript fonts are defined as "outline fonts": Each character in the font is defined by giving the mathematical curves (lines, arcs, and splines) that define its contours. Different sizes of a character are generated by linearly scaling a single shape. For example, a 10-point `A' is simply half the size of a 20-point `A'. Nowadays, outline fonts usually also contain "hints"--additional information to improve the appearance of the font at small sizes or low resolutions. Although various kinds of PostScript outline fonts exist, by far the most common, and the only one we will consider, is called "Type 1". The glyph files for Postscript Type 1 fonts typically have names ending in `.pfa' ("printer font ASCII") or `.pfb' ("printer font binary"). In contrast, glyph files for Computer Modern and the other standard TeX fonts are "bitmap fonts", generated from Metafont (`.mf') descriptions. The Metafont program distributed with TeX generates bitmaps from these descriptions. The glyph files for TeX bitmap fonts are usually stored in "packed font" (PK) files. The names of these files end in `.NNNpk', where NNN is the resolution of the font in dots per inch. For example, `cmr10.600pk' contains the bitmaps for the `cmr10' font at a resolution of 600dpi. (On DOS filesystems, it's more likely `dpi600\cmr10.pk'.) Metafont actually outputs "generic font" (GF) files, e.g., `cmr10.600gf', but the GF files are usually converted immediately to PK format (using the `gftopk' utility that comes with TeX) since PK files are smaller and contain the same information. (The GF format is a historical artifact.)  File: dvips.info, Node: Virtual fonts, Next: Encodings, Prev: Glyph files, Up: Font concepts 6.1.3 Virtual fonts ------------------- A "virtual font" is constructed by extracting characters from one or more existing fonts and rearranging them, or synthesizing new characters in various ways. The explanation in this manual is intended to suffice for understanding enough about virtual fonts to use them with Dvips. It isn't a reference manual on virtual fonts. For more information: The primary document on virtual fonts is Donald E. Knuth, `TUGboat' 11(1), Apr. 1990, pp. 13-23, "Virtual Fonts: More Fun for Grand Wizards" (`CTAN:/info/virtual-fonts.knuth'; for CTAN info, *note unixtex.ftp: (kpathsea)unixtex.ftp.). (Don't be intimidated by the subtitle.) A virtual font (`.vf') file specifies, for each character in the virtual font, a recipe for typesetting that character. A VF file, like a TFM file, is in a compressed binary format. The `vftovp' and `vptovf' programs convert a VF file to a human-readable VPL (virtual property list) format and back again. *Note vftovp invocation: (web2c)vftovp invocation, and *note vptovf invocation: (web2c)vptovf invocation. In the case of a PostScript font F being used in a straightforward way, the recipe says: character I in the VF font is character J in font F. The font F is called a "base font". For example, the VF file could remap the characters of the PostScript font to the positions where TeX expects to find them. *Note Encodings::. Since TeX reads only TFM files, not VF's, each VF must have a corresponding TFM for use with TeX. This corresponding TFM is created when you run `vptovf'. You can "expand" virtual fonts into their base fonts with DVIcopy (*note dvicopy invocation: (web2c)dvicopy invocation.). This is useful if you are using a DVI translator that doesn't understand vf's itself.  File: dvips.info, Node: Encodings, Next: PostScript typesetting, Prev: Virtual fonts, Up: Font concepts 6.1.4 Encodings --------------- Every font, whatever its type, has an "encoding", that specifies the correspondence between "logical" characters and character codes. For example, the ASCII encoding specifies that the character numbered 65 (decimal) is an uppercase `A'. The encoding does not specify what the character at that position looks like; there are lots of ways to draw an `A', and a glyph file (*note Glyph files::) tells how. Nor does it specify how much space that character occupies; that information is in a metric file (*note Metric files::). TeX implicitly assumes a particular encoding for the fonts you use with it. For example, the plain TeX macro `\'', which typesets an acute accent over the following letter, assumes the acute accent is at position 19 (decimal). This happens to be true of standard TeX fonts such as Computer Modern, as you might expect, but it is not true of normal PostScript fonts. It's possible but painful to change all the macros that assume particular character positions. A better solution is to create a new font with the information for the acute accent at position 19, where TeX expects it to be. *Note Making a font available::. PostScript represents encodings as a sequence of 256 character names called an "encoding vector". An "encoding file" (`.enc') gives such a vector, together with ligature and kerning information (with which we are not concerned at the moment). These encoding files are used by the Afm2tfm program. Encoding files are also downloaded to the PostScript interpreter in your printer if you use one of them in place of the default encoding vector for a particular PostScript font. Examples of encodings: the `dvips.enc' encoding file that comes with Dvips in the `reencode' directory is a good (but not perfect) approximation to the TeX encoding for TeX's Computer Modern text fonts. This is the encoding of the fonts that originated with Dvips, such as `ptmr.tfm'. The distribution includes many other encoding files; for example, `8r.enc', which is the base font for the current PostScript font distribution, and three corresponding to the TeX mathematics fonts: `texmext.enc' for math extensions, `texmital.enc' for math italics, and `texmsym.enc' for math symbols.  File: dvips.info, Node: PostScript typesetting, Prev: Encodings, Up: Font concepts 6.1.5 How PostScript typesets a character ----------------------------------------- The output of Dvips is a program in the PostScript language that instructs your (presumably PostScript-capable) printer how to typeset your document by transforming it into toner on paper. Your printer, in turn, contains a PostScript interpreter that carries out the instructions in this typesetting program. The program must include the definition of any PostScript fonts that you use in your document. Fonts built into your printer (probably the standard 35: `Times-Roman', `ZapfDingbats', ...) are defined within the interpreter itself. Other fonts must be downloaded as pfa or pfb files (*note Glyph files::) from your host (the computer on which you're running Dvips). You may be wondering exactly how a PostScript interpreter figures out what character to typeset, with this mass of metrics, glyphs, encodings, and other information. (If you're not wondering, skip this section ...) The basic PostScript operator for imaging characters is `show'. Suppose you've asked TeX to typeset an `S'. This will eventually wind up in the Dvips output as the equivalent of this PostScript operation: (S) show Here is how PostScript typesets the `S': 1. PostScript interpreters use ASCII; therefore `S' is represented as the integer 83. (Any of the 256 possible characters representable in a standard 8-bit byte can be typeset.) 2. A PostScript "dictionary" is a mapping of names to arbitrary values. A font, to the interpreter, is a dictionary which contains entries for certain names. (If these entries are missing, the interpreter refuses to do anything with that font.) PostScript has a notion of "the current font"--whatever font is currently being typeset in. 3. One of the mandatory entries in a font dictionary is `Encoding', which defines the encoding vector (*note Encodings::) for that font. This vector of 256 names maps each possible input character to a name. 4. The interpreter retrieves the entry at position 83 of the encoding vector. This value is a PostScript name: `/S'. 5. For Type 1 fonts (we're not going to discuss anything else), the interpreter now looks up `/S' as a key in a dictionary named `CharStrings', another mandatory entry in a font dictionary. 6. The value of `S' in `CharStrings' is the equivalent of a series of standard PostScript commands like `curveto', `lineto', `fill', and so on. These commands are executed to draw the character. There can also be "hint information" that helps adapt the character to low-resolution rasters. (*Note Glyph files::.) The commands are actually represented in a more compact way than standard PostScript source; see the Type 1 book for details. This method for typesetting characters is used in both Level 1 and Level 2 PostScript. See the PostScript reference manuals for more information.  File: dvips.info, Node: Making a font available, Next: Invoking afm2tfm, Prev: Font concepts, Up: PostScript fonts 6.2 Making a PostScript font available ====================================== To make a PostScript font available in a TeX document, you need to install the font on your system and then define it within the document. Once you have installed the font, of course, it is available for any document thereafter and you don't need to reinstall it. You must have an AFM file for any font you install. Unless the font is built into your printer, you must also have a PFA or PFB file. In the following examples, we use the font `Times-Roman' to illustrate the process. But you should use the prebuilt fonts for Times and the other standard fonts, rather than rebuilding them. The prebuilt fonts are made using a more complicated process than that described here, to make them work as well as possible with TeX. So following the steps in this manual will not generate files identical to the distributed ones. *Note PostScript font installation::, for pointers to the prebuilt fonts. Installation of a PostScript font proceeds in three steps. *Note Font concepts::, for descriptions of the various files involved. 1. Run `afm2tfm' to create a TFM file for the original font, and the VPL form of the virtual font: afm2tfm Times-Roman -v ptmr rptmr 2. Run `vptovf' to generate a VF and TFM file for the virtual font from the VPL file: vptovf ptmr.vpl ptmr.vf ptmr.tfm 3. Insert an entry for the font in `psfonts.map' (*note psfonts.map::): rptmr Times-Roman ' signs, you can make the ligature scanning operation skip that many resulting characters before proceeding. This works just like in Metafont. For example, the `fi' ligature is specified with `f i =: fi ;'. A more convoluted ligature is `one one |=:|>> exclam ;' which separates a pair of adjacent `1''s with an exclamation point, and then skips over two of the resulting characters before continuing searching for ligatures and kerns. You cannot give more >'s than |'s in an ligature operation, so there are a total of eight possibilities: =: |=: |=:> =:| =:|> |=:| |=:|> |=:|>> The default set of ligatures and kerns built in to Afm2tfm is: % LIGKERN question quoteleft =: questiondown ; % LIGKERN exclam quoteleft =: exclamdown ; % LIGKERN hyphen hyphen =: endash ; endash hyphen =: emdash ; % LIGKERN quoteleft quoteleft =: quotedblleft ; % LIGKERN quoteright quoteright =: quotedblright ; % LIGKERN space {} * ; * {} space ; 0 {} * ; * {} 0 ; % LIGKERN 1 {} * ; * {} 1 ; 2 {} * ; * {} 2 ; 3 {} * ; * {} 3 ; % LIGKERN 4 {} * ; * {} 4 ; 5 {} * ; * {} 5 ; 6 {} * ; * {} 6 ; % LIGKERN 7 {} * ; * {} 7 ; 8 {} * ; * {} 8 ; 9 {} * ; * {} 9 ;  File: dvips.info, Node: Special font effects, Next: Afm2tfm options, Prev: Changing font encodings, Up: Invoking afm2tfm 6.3.2 Special font effects -------------------------- Besides the reencodings described in the previous section, Afm2tfm can do other manipulations. (Again, it's best to use the prebuilt fonts rather than attempting to remake them.) `-s SLANT' makes an obliqued variant, as in: afm2tfm Times-Roman -s .167 -v ptmro rptmro This creates `ptmro.vpl' and `rptmro.tfm'. To use this font, put the line rptmro Times-Roman ".167 SlantFont" into `psfonts.map'. Then `rptmro' (our name for the obliqued Times) will act as if it were a resident font, although it is actually constructed from Times-Roman via the PostScript routine `SlantFont' (which will slant everything 1/6 to the right, in this case). Similarly, you can get an expanded font with afm2tfm Times-Roman -e 1.2 -v ptmrre rptmrre and by recording the pseudo-resident font rptmrre Times-Roman "1.2 ExtendFont" in `psfonts.map'. You can also create a small caps font with a command such as afm2tfm Times-Roman -V ptmrc rptmrc This will generate a set of pseudo-small caps mapped into the usual lowercase positions and scaled down to 0.8 of the normal cap dimensions. You can also specify the scaling as something other than the default 0.8: afm2tfm Times-Roman -c 0.7 -V ptmrc rptmrc It is unfortunately not possible to increase the width of the small caps independently of the rest of the font. If you want a really professional looking set of small caps, you need to acquire a small caps font. To change the `PaintType' in a font from filled (0) to outlined (2), you can add `"/PaintType 2 store"' to `psfonts.map', as in the following: rphvrl Helvetica "/PaintType 2 store" Afm2tfm writes to standard output the line you need to add to `psfonts.map' to use that font, assuming the font is resident in the printer; if the font is not resident, you must add the `, the color support has gone through many changes by Tomas Rokicki. Besides the source code support itself, there are additional TeX macro files: `colordvi.tex' and `blackdvi.tex', and corresponding `.sty' versions for use with LaTeX. In this section we describe the use of color from the document preparer's point of view and then add some instructions on installation for the TeX administrator. * Menu: * Color macro files:: TeX macro definitions. * User-definable colors:: Adding your own colors. * Color subtleties:: Subtleties in using color. * Ted Turner:: Printing in black/white after colorizing. * Color device configuration:: Configuring Dvips for color devices. * Color support details:: Color support details  File: dvips.info, Node: Color macro files, Next: User-definable colors, Up: Color 7.1 Color macro files ===================== All the color macro commands are defined in `colordvi.tex' (or `colordvi.sty'). To access these macros simply add to the top of your plain TeX file the command: \input colordvi For (the obsolete) LaTeX 2.09, add the `colordvi' style option as in: \documentstyle[12pt,colordvi]{article} For LaTeX 2e, these examples are not applicable. Instead, please see the documentation for the graphics package, available from `CTAN:doc/latex/graphics/'. See also `CTAN:doc/epslatex.ps'. These macros provide two basic kinds of color macros: ones for local color changes (a few words, a single symbol) and one for global color changes (the whole document). All the color names use a mixed case scheme to avoid conflicts with other macros. There are 68 predefined colors, with names taken primarily from the Crayola crayon box of 64 colors, and one pair of macros for the user to set his own color pattern (*note User-definable colors::). You can browse the file `colordvi.tex' for a list of the predefined colors. The comments in this file also show a rough correspondence between the crayon names and Pantones. A local color command has the form \COLORNAME{this is the color COLORNAME} where COLORNAME is the name of a predefined color, e.g., `Blue'. As shown, these macros take one argument, the text to print in the specified color. This can be used for nested color changes since it restores the original color state when it completes. For example: This text is normal but here we are \Red{switching to red, \Blue{nesting blue}, recovering the red} and back to original. The color nesting level has no hard limit, but it is not advisable to nest too deeply lest you and the reader lose track of the color history. The global color command has the form \textCOLORNAME These macros take no arguments and changes the default color from that point on to COLORNAME. This of course can be overridden globally by another such command or locally by local color commands. For example, expanding on the example above, we might have \textGreen This text is green but here we are \Red{switching to red, \Blue{nesting blue}, recovering the red} and back to original green. \textCyan The text from here on will be cyan until \Yellow{locally changed to yellow}. Now we are back to cyan. The color commands will even work in math mode and across math mode boundaries. This means that if you have a color before going into math mode, the mathematics will be set in that color as well. In alignment environments like `\halign', `tabular' or `eqnarray', local color commands cannot extend beyond the alignment characters. Because local color commands respect only some environment and delimiter changes besides their own, care must be taken in setting their scope. It is best not to have them stretch too far. At the present time there are no macros for color environments in LaTeX which might have a larger range. This is primarily to keep the TeX and LaTeX use compatible.  File: dvips.info, Node: User-definable colors, Next: Color subtleties, Prev: Color macro files, Up: Color 7.2 User-definable colors ========================= There are two ways for the user to specify colors not already defined. For local changes, there is the command `\Color' which takes two arguments. The first argument is four numbers between zero and one and specifies the intensity of cyan, magenta, yellow and black (CMYK) in that order. The second argument is the text that should appear in the given color. For example, suppose you want the words "this color is pretty" to appear in a color which is 50% cyan, 85% magenta, 40% yellow and 20% black. You would use the command \Color{.5 .85 .4 .2}{this color is pretty} For global color changes, there is a command `\textColor' which takes one argument, the CMYK quadruple of relative color intensities. For example, if you want the default color to be as above, then the command \textColor{.5 .85 .4 .2} The text from now on will be this pretty color will do the trick. Making a global color change in the midst of nested local colors is highly discouraged. Consequently, Dvips will give you warning message and do its best to recover by discarding the current color history.  File: dvips.info, Node: Color subtleties, Next: Ted Turner, Prev: User-definable colors, Up: Color 7.3 Color subtleties ==================== Color macros are defined via `\special' keywords. As such, they are put in the `.dvi' file only as explicit message strings to the driver. The (unpleasant) result is that certain unprotected regions of the text can have unwanted color side effects. For example, if a color region is split by TeX across a page boundary, then the footers of the current page (e.g., the page number) and the headers of the next page can inherit that color. To avoid this effect globally, users should make sure that these special regions of the text are defined with their own local color commands. For example, to protect the header and footer in plain TeX, use \headline{\Black{My Header}} \footline{\Black{\hss\tenrm\folio\hss}} This warning also applies to figures and other insertions, so be careful! Of course, in LaTeX, this is much more difficult to do because of the complexity of the macros that control these regions. This is unfortunate but inevitable, because TeX and LaTeX were not written with color in mind. Even when writing your own macros, much care must be taken. The macros that `colorize' a portion of the text work prefix the text work by outputting one `\special' command to turn the color on before the text, and outputting another `\special' command afterwards to restore the original color. It is often useful to ensure that TeX is in horizontal mode before the first special command is issued; this can be done by prefixing the color command with `\leavevmode'.  File: dvips.info, Node: Ted Turner, Next: Color device configuration, Prev: Color subtleties, Up: Color 7.4 Printing in black/white after colorizing ============================================ If you have a TeX or LaTeX document written with color macros and you want to print it in black and white there are two options. On all (good) PostScript devices, printing a color file will print in corresponding gray levels. This is useful to get a rough idea of the colors without using expensive color printing devices. The second option is to replace the call to input `colordvi.tex' with `blackdvi.tex' (and similarly for the `.sty' files). So in the above example, replacing the word `colordvi' with `blackdvi' suffices. `blackdvi.tex' defines the color macros as no-ops, and so will produce normal black/white printing. By this simple mechanism, the user can switch to all black/white printing without having to ferret out the color commands. Also, some device drivers, particularly non-PostScript ones like screen previewers, will simply ignore the color commands and so print in black/white. Hopefully, in the future screen previewers for color displays will be compatible with some form of color support.  File: dvips.info, Node: Color device configuration, Next: Color support details, Prev: Ted Turner, Up: Color 7.5 Color device configuration ============================== To configure Dvips for a particular color device you need to fine tune the color parameters to match your device's color rendition. To do this, you will need a Pantone chart for your device. The header file `color.lpro' shows a (rough) correspondence between the Crayola crayon names and the Pantone numbers and also defines default CMYK values for each of the colors. Note that these colors must be defined in CMYK terms and not RGB, as Dvips outputs PostScript color commands in CMYK. This header file also defines (if they are not known to the interpreter) the PostScript commands `setcmykcolor' and `currentcmykcolor' in terms of a RGB equivalent so if your device only understands RGB, there should be no problem. The parameters set in this file were determined by comparing the Pantone chart of a Tektronix Phaser printer with the actual Crayola Crayons. Because these were defined for a particular device, the actual color rendition on your device may be very different. There are two ways to adjust this. One is to use the PAntone chart for your device to rewrite `color.lpro' prior to compilation and installation. A better alternative, which supports multiple devices, is to add a header file option in the configuration file (*note Configuration file commands::) for each device that defines, in `userdict', the color parameters for those colors that need redefining. For example, if you need to change the parameters defining `Goldenrod' (approximately Pantone 109 on the Phaser) for your device `mycolordev', do the following. In the Pantone chart for your device, find the CMYK values for Pantone 109. Let's say they are `{\ 0 0.10 0.75 0.03 }'. Then create a header file named `mycolordev.pro' with the commands userdict begin /Goldenrod { 0 0.10 0.75 0.03 setcmykcolor} bind def Finally, in `config.mycolordev' add the line h mycolordev.pro This will then define `Goldenrod' in your device's CMYK values in `userdict' which is checked before defining it in `TeXdict' by `color.pro'. (On MS-DOS, you will have to call this file `mycolordev.cfg'.) This mechanism, together with additions to `colordvi.tex' and `blackdvi.tex' (and the `.sty' files), can also be used to predefine other colors for your users.  File: dvips.info, Node: Color support details, Prev: Color device configuration, Up: Color 7.6 Color support details ========================= To support color, Dvips recognizes a certain set of specials. These specials start with the keyword `color' or the keyword `background', followed by a color specification. * Menu: * Color specifications:: * Color specials::  File: dvips.info, Node: Color specifications, Next: Color specials, Up: Color support details 7.6.1 Color specifications -------------------------- What is a color specification? One of three things. First, it might be a PostScript procedure as defined in a PostScript header file. The `color.pro' file defines 64 of these, including `Maroon'. This PostScript procedure must set the current color to be some value; in this case, `Maroon' is defined as `0 0.87 0.68 0.32 setcmykcolor'. The second possibility is the name of a color model (initially, one of `rgb', `hsb', `cmyk', or `gray') followed by the appropriate number of parameters. When Dvips encounters such a macro, it sends out the parameters first, followed by the string created by prefixing `TeXcolor' to the color model. Thus, the color specification `rgb 0.3 0.4 0.5' would generate the PostScript code `0.3 0.4 0.5 TeXrgbcolor'. Note that the case of zero arguments is disallowed, as that is handled by the single keyword case (`Maroon') above, where no changes to the name are made before it is sent to the PostScript file. The third and final type of color specification is a double quote followed by any sequence of PostScript. The double quote is stripped from the output. For instance, the color specification `"AggiePattern setpattern' will set the `color' to the Aggie logo pattern (assuming such exists.)  File: dvips.info, Node: Color specials, Prev: Color specifications, Up: Color support details 7.6.2 Color specials -------------------- We will describe `background' first, since it is the simplest. The `background' keyword must be followed by a color specification. That color specification is used as a fill color for the background. The last `background' special on a page is the one that gets issued, and it gets issued at the very beginning of the page, before any text or specials are sent. (This is possible because the prescan phase of Dvips notices all of the color specials so that the appropriate information can be written out during the second phase.) The `color' special itself has three forms. The first is just `color' followed by a color specification. In this case, the current global color is set to that color; the color stack must be empty when such a command is executed. The second form is `color push' followed by a color specification. This saves the current color on the color stack and sets the color to be that given by the color specification. This is the most common way to set a color. The final version of the `color' special is just `color pop', with no color specification; this says to pop the color last pushed on the color stack from the color stack and set the current color to be that color. Dvips correctly handles these color specials across pages, even when the pages are repeated or reversed. These color specials can be used for things such as patterns or screens as well as simple colors. However, note that in the PostScript, only one color specification can be active at a time. For instance, at the beginning of a page, only the bottommost entry on the color stack is sent; also, when a color is popped, all that is done is that the color specification from the previous stack entry is sent. No `gsave' or `grestore' is used. This means that you cannot easily mix usage of the `color' specials for screens and colors, just one or the other. This may be addressed in the future by adding support for different categories of color-like state.  File: dvips.info, Node: Index, Prev: Color, Up: Top Index ***** [index] * Menu: * ! special (literal PS header): Literal headers. (line 6) * ! starting output filename: Option details. (line 224) * " special (literal PostScript): " special. (line 6) * %%BoundingBox: Bounding box. (line 17) * %%Page, and multi-page information: PostScript hooks. (line 37) * %%Page, not generating: Option details. (line 198) * %%Page, removing: Option details. (line 154) * %%Page, required by Ghostview: Ghostscript installation. (line 17) * %%VMusage: Headers and memory usage. (line 12) * %*Font: Fonts in figures. (line 6) * (atend), bounding box specification: Bounding box. (line 28) * +PSMAPFILE: Configuration file commands. (line 105) * -: Option details. (line 11) * - as output filename: Option details. (line 224) * --help <1>: Option details. (line 15) * --help: Option summary. (line 7) * --version: Option details. (line 18) * -A: Option details. (line 27) * -a: Option details. (line 21) * -B: Option details. (line 37) * -b NUM: Option details. (line 31) * -C NUM: Option details. (line 46) * -c NUM: Option details. (line 41) * -c RATIO: Afm2tfm options. (line 33) * -D NUM: Option details. (line 58) * -d NUM: Option details. (line 52) * -E: Option details. (line 82) * -e NUM: Option details. (line 71) * -e RATIO: Afm2tfm options. (line 37) * -F: Option details. (line 110) * -f: Option details. (line 98) * -G: Option details. (line 117) * -h NAME: Option details. (line 122) * -i: Option details. (line 127) * -j for partial font downloading: Option details. (line 140) * -K: Option details. (line 154) * -k for cropmarks: Option details. (line 146) * -l [=]NUM: Option details. (line 163) * -M: Option details. (line 184) * -m: Option details. (line 172) * -mode: Option details. (line 175) * -mode MODE: Option details. (line 175) * -N: Option details. (line 198) * -n NUM: Option details. (line 195) * -noomega: Option details. (line 206) * -O: Afm2tfm options. (line 41) * -o NAME: Option details. (line 219) * -O X-OFFSET,Y-OFFSET: Option details. (line 236) * -p [=]NUM: Option details. (line 254) * -P PRINTER: Option details. (line 268) * -p PS-ENC <1>: Afm2tfm options. (line 46) * -p PS-ENC: Changing PostScript encodings. (line 6) * -pp FIRST-LAST: Option details. (line 263) * -pp RANGE: Option details. (line 263) * -PPRINTER, and config file searching: Configuration file searching. (line 27) * -q: Option details. (line 287) * -R: Option details. (line 294) * -r: Option details. (line 291) * -s: Option details. (line 302) * -S NUM: Option details. (line 309) * -s SLANT: Afm2tfm options. (line 51) * -T ENC-FILE: Changing both encodings. (line 6) * -T HSIZE,VSIZE: Option details. (line 338) * -t PAPERTYPE: Option details. (line 314) * -T PS-TEX-ENC: Afm2tfm options. (line 61) * -t TEX-ENC <1>: Afm2tfm options. (line 56) * -t TEX-ENC: Changing TeX encodings. (line 6) * -u: Afm2tfm options. (line 65) * -U: Option details. (line 353) * -u PSMAPFILE: Option details. (line 345) * -V: Option details. (line 364) * -v: Option details. (line 361) * -V VPL-FILE: Afm2tfm options. (line 74) * -v VPL-FILE: Afm2tfm options. (line 71) * -X NUM: Option details. (line 381) * -x NUM: Option details. (line 373) * -Y NUM: Option details. (line 388) * -z: Hypertext. (line 6) * -Z for compressing bitmap fonts: Option details. (line 397) * -z for recognizing hyperdvi: Option details. (line 391) * ..-relative filenames: Option details. (line 294) * .afm Adobe metric files: Metric files. (line 26) * .dvipsrc, searched for: Configuration file searching. (line 14) * .enc extension for encoding vectors: psfonts.map. (line 42) * .lpro long prologue files: Header files. (line 12) * .mf Metafont source files: Glyph files. (line 30) * .NNNpk packed font bitmaps: Glyph files. (line 35) * .pfa extension required for partial downloading: psfonts.map. (line 46) * .pfa printer font ascii files: Glyph files. (line 25) * .pfb extension required for partial downloading: psfonts.map. (line 46) * .pfb printer font binary files: Glyph files. (line 25) * .pfm printer font metric files: Metric files. (line 49) * .pl property list files: Metric files. (line 39) * .pro prologue files: Header files. (line 12) * .tfm TeX font metric files: Metric files. (line 31) * /#copies: Option details. (line 31) * /magscale: EPSF scaling. (line 67) * 612 792 bounding box size: Bounding box. (line 43) * 8r encoding, and extra characters: Changing PostScript encodings. (line 24) * 8r font encoding: psfonts.map. (line 31) * 8r.enc: Encodings. (line 35) * < font downloading: psfonts.map. (line 11) * << whole font downloading: psfonts.map. (line 60) * <[ encoding vector downloading: psfonts.map. (line 36) * =: ligature operation: Encoding file format. (line 59) * @ paper size config command: Configuration file commands. (line 18) * \.: Reencoding with Afm2tfm. (line 44) * \AA: Reencoding with Afm2tfm. (line 44) * \COLORNAME: Color macro files. (line 31) * \dot: Reencoding with Afm2tfm. (line 44) * \epsffile macro: EPSF macros. (line 38) * \epsfsize: EPSF scaling. (line 29) * \epsfverbosetrue: EPSF macros. (line 46) * \epsfxsize: EPSF scaling. (line 14) * \epsfysize: EPSF scaling. (line 20) * \H: Reencoding with Afm2tfm. (line 44) * \includegraphics LaTeX macro: \includegraphics. (line 6) * \leavevmode: EPSF macros. (line 26) * \magnification: EPSF scaling. (line 63) * \rotninety: Literal examples. (line 27) * \textCOLORNAME: Color macro files. (line 46) * a config command (memory conservation): Configuration file commands. (line 21) * A ring, Scandinavian letter: Reencoding with Afm2tfm. (line 32) * a3 papertype: Option details. (line 314) * a4 paper size: Config file paper sizes. (line 84) * a4 papertype: Option details. (line 314) * A4size paper size: Config file paper sizes. (line 92) * absolute filenames, disabling: Option details. (line 294) * absolute page number, and -l: Option details. (line 163) * absolute page number, and -p: Option details. (line 254) * accents, in wrong position: Reencoding with Afm2tfm. (line 32) * accents, wrong: Afm2tfm options. (line 17) * accuracy in positioning: Option details. (line 71) * Adobe fonts: PostScript font installation. (line 10) * Adobe fonts, installing: PostScript font installation. (line 19) * afm files: Metric files. (line 26) * afm2tfm <1>: Invoking afm2tfm. (line 6) * afm2tfm: Making a font available. (line 46) * afm2tfm options: Afm2tfm options. (line 6) * after header, inserting code: Including headers from TeX. (line 28) * Aladdin Ghostscript: Ghostscript installation. (line 6) * Anderson, Laurie: Hypertext specials. (line 42) * angle (psfile special option): psfile special. (line 36) * arcs: Glyph files. (line 17) * ASCII character codes, used by PostScript: PostScript typesetting. (line 31) * atend, bounding box specification: Bounding box. (line 28) * b config command (#copies): Configuration file commands. (line 24) * base: Hypertext specials. (line 57) * base encoding, recommended: psfonts.map. (line 31) * base fonts: Virtual fonts. (line 24) * bbfig: Bounding box. (line 37) * before header, inserting code: Including headers from TeX. (line 28) * Bhattacharya, Tanmoy: Hypertext. (line 21) * big points: Bounding box. (line 11) * Bigelow & Holmes fonts: PostScript font installation. (line 10) * binary files, not supported: Including graphics fails. (line 23) * bitmap fonts: Glyph files. (line 30) * Bitstream fonts, installing: PostScript font installation. (line 19) * bop undefined error: Printer errors. (line 6) * bop-hook <1>: PostScript hooks. (line 11) * bop-hook <2>: EPSF scaling. (line 75) * bop-hook: Paper trays. (line 6) * bop-hook, and offset pages: Option details. (line 249) * boundary character: Encoding file format. (line 41) * bounding box, comment for: Bounding box. (line 6) * bounding box, defined: Bounding box. (line 11) * bounding box, determining: Bounding box. (line 37) * bounding box, finding tight: Option details. (line 82) * bounding box, inaccurate: EPSF clipping. (line 6) * bounding box, supplying to TeX <1>: EPSF macros. (line 26) * bounding box, supplying to TeX: \includegraphics. (line 36) * changing PostScript encodings: Changing PostScript encodings. (line 6) * changing TeX encodings: Changing TeX encodings. (line 6) * character definitions in PostScript: PostScript typesetting. (line 55) * character lookup procedure in PostScript: PostScript typesetting. (line 6) * CharStrings Type 1 dictionary: PostScript typesetting. (line 51) * clip (psfile special option): psfile special. (line 39) * clipping of EPSF: EPSF clipping. (line 6) * CODINGSCHEME: Reencoding with Afm2tfm. (line 52) * collated copies: Option details. (line 46) * color: Color. (line 6) * color configuration: Color device configuration. (line 6) * color macros: Color macro files. (line 6) * color names, mixed case: Color macro files. (line 16) * color nesting level: Color macro files. (line 39) * color separations: Option details. (line 31) * color specifications: Color specifications. (line 6) * color subtleties: Color subtleties. (line 6) * colors, user-definable: User-definable colors. (line 6) * command line, including headers from: Including headers from the command line. (line 6) * command-line options: Invoking Dvips. (line 6) * comments, in configuration files: Configuration file commands. (line 13) * comments, in encoding files: Encoding file format. (line 20) * comments, removing included: Option details. (line 154) * compilation: Installation. (line 6) * compressed PostScript: Dynamic creation of graphics. (line 6) * compressing bitmap fonts: Option details. (line 397) * Computer Modern in PostScript: Hypertext caveats. (line 6) * Computer Modern, encoding of: Encodings. (line 15) * condensed fonts: Afm2tfm options. (line 37) * config.proto: config.ps installation. (line 15) * config.ps: Option details. (line 268) * config.ps installation: config.ps installation. (line 6) * config.ps paper sizes: Config file paper sizes. (line 84) * config.ps, searched for: Configuration file searching. (line 10) * configuration file options: Configuration file commands. (line 6) * configuration file paper size command: Config file paper sizes. (line 6) * configuration file path: Environment variables. (line 56) * configuration file searching: Configuration file searching. (line 6) * configuration files: Config files. (line 6) * configuration files, creating: config.ps installation. (line 6) * configuration files, prototype: config.ps installation. (line 15) * configuration, of color devices: Color device configuration. (line 6) * configuration, of Dvips: Installation. (line 6) * continuation lines, not supported: Configuration file commands. (line 13) * control-D: Option details. (line 110) * copies, collated: Option details. (line 46) * copies, duplicated page bodies: Option details. (line 31) * copies, uncollated: Option details. (line 41) * Crayola crayon box: Color macro files. (line 16) * crop.pro: Option details. (line 146) * cropmarks: Option details. (line 146) * current font, in PostScript: PostScript typesetting. (line 35) * D config command (dpi): Configuration file commands. (line 27) * dated output: PostScript hooks. (line 16) * datestamp, in output: Configuration file commands. (line 33) * debugging <1>: Option details. (line 52) * debugging: Diagnosing problems. (line 6) * debugging options: Debug options. (line 6) * default resolutions: Configuration file commands. (line 127) * default_texsizes Make variable: Configuration file commands. (line 143) * Deutsch, Peter: Ghostscript installation. (line 6) * device dependency, and virtual fonts: Configuration file commands. (line 166) * dictionary, CharStrings: PostScript typesetting. (line 51) * dictionary, PostScript language: PostScript typesetting. (line 35) * dictionary, SDict: Literal headers. (line 6) * dictionary, userdict: Header files. (line 21) * distillation, and -z: Option details. (line 391) * distiller, for PDF files: Hypertext. (line 11) * dot accent: Reencoding with Afm2tfm. (line 32) * double-sided printing: Option details. (line 37) * downloading fonts partially: psfonts.map. (line 55) * downloading PostScript fonts: psfonts.map. (line 6) * Doyle, Mark: Hypertext. (line 21) * draft copies: PostScript hooks. (line 16) * dual paper trays: Paper trays. (line 6) * duplex printers: Including headers from the command line. (line 13) * DVI magnification: EPSF scaling. (line 63) * dvihps, hyperdvi to PostScript: Hypertext. (line 21) * Dvips configuration file options: Configuration file commands. (line 6) * dvips.enc: Encodings. (line 35) * DVIPSDEBUG: Environment variables. (line 17) * DVIPSFONTS: Environment variables. (line 26) * DVIPSHEADERS: Environment variables. (line 31) * DVIPSHEADERS, overrides H: Configuration file commands. (line 51) * DVIPSMAKEPK: Environment variables. (line 35) * DVIPSRC: Environment variables. (line 41) * DVIPSSIZES: Environment variables. (line 46) * DVIPSSIZES, overrides R: Configuration file commands. (line 140) * dynamic creation of graphics: Dynamic creation of graphics. (line 6) * e config command (maxdrift): Configuration file commands. (line 30) * E config command (shell escape): Configuration file commands. (line 33) * efficiency, and fonts: Making a font available. (line 104) * ehandler.ps: No output. (line 12) * embedding Type 1 fonts: Hypertext caveats. (line 6) * encoding changes: Changing font encodings. (line 6) * encoding file format: Encoding file format. (line 6) * encoding files: Encodings. (line 27) * Encoding Type 1 dictionary: PostScript typesetting. (line 43) * encoding vectors, defined: Encodings. (line 27) * encoding vectors, in Type 1 fonts: PostScript typesetting. (line 43) * encodings: Encodings. (line 6) * end-hook: PostScript hooks. (line 11) * environment variables: Environment variables. (line 6) * EOF: Option details. (line 110) * eop-hook: PostScript hooks. (line 11) * EPS, and Ghostview: Ghostscript installation. (line 17) * EPSF macros: EPSF macros. (line 6) * EPSF, generating: Option details. (line 82) * epsf.sty: EPSF macros. (line 15) * epsf.tex: EPSF macros. (line 13) * Epson printers: Ghostscript installation. (line 6) * error messages from printer: Printer errors. (line 6) * even pages only: Option details. (line 37) * examples of literal PostScript: Literal examples. (line 6) * expanded fonts <1>: psfonts.map. (line 19) * expanded fonts <2>: Afm2tfm options. (line 37) * expanded fonts: Special font effects. (line 24) * expansion, of virtual fonts: Virtual fonts. (line 34) * extended URL: Hypertext specials. (line 20) * ExtendFont: Special font effects. (line 28) * extra characters, accessing: Changing PostScript encodings. (line 18) * F config command (filter): Configuration file commands. (line 41) * f config command (filter): Configuration file commands. (line 41) * failure, and printer errors: Printer errors. (line 6) * failure, of long documents: Long documents fail. (line 6) * failure, to include graphics: Including graphics fails. (line 6) * failure, to print at all: No output. (line 6) * fallback resolutions: Configuration file commands. (line 127) * figures and fonts: Fonts in figures. (line 6) * figures, natural size: EPSF macros. (line 38) * figures, scaling: EPSF scaling. (line 6) * filter, running as a: Option details. (line 98) * first page printed: Option details. (line 254) * font concepts: Font concepts. (line 6) * font generation, avoiding: Option details. (line 184) * fontinst: Invoking afm2tfm. (line 13) * fonts, as header files: Including headers from TeX. (line 13) * fonts, changing encoding of: Changing font encodings. (line 6) * fonts, downloading: psfonts.map. (line 6) * fonts, expanded: Special font effects. (line 24) * fonts, in PostScript figures: Fonts in figures. (line 6) * fonts, installation of PostScript: PostScript font installation. (line 6) * fonts, installing: Making a font available. (line 6) * fonts, outlined: Special font effects. (line 50) * fonts, slanted: Special font effects. (line 6) * fonts, small caps: Special font effects. (line 34) * fonts, system PostScript: PostScript font installation. (line 24) * G character shifting config command: Configuration file commands. (line 44) * gf files: Glyph files. (line 41) * gftopk: Glyph files. (line 41) * Ghostscript installation: Ghostscript installation. (line 6) * ghostview: Ghostscript installation. (line 17) * Ghostview, and no N: Ghostscript installation. (line 17) * glyph files: Glyph files. (line 6) * GLYPHFONTS, overrides P: Configuration file commands. (line 114) * GNU Ghostscript: Ghostscript installation. (line 13) * gnuplot: Dynamic creation of graphics. (line 25) * graphics inclusion fails: Including graphics fails. (line 6) * gs installation: Ghostscript installation. (line 6) * gsave/grestore, and literal PS: Literal examples. (line 27) * gsftopk: Option details. (line 365) * h header downloading config command: Configuration file commands. (line 48) * H header path config command: Configuration file commands. (line 51) * Hafner, Jim: Color. (line 6) * header file, downloading: Option details. (line 122) * header files, defined: Header files. (line 6) * header path, defining: Configuration file commands. (line 51) * header=FILE \special: Including headers from TeX. (line 6) * headers and memory usage: Headers and memory usage. (line 6) * headers, including from the command line: Including headers from the command line. (line 6) * headers, including in TeX: Including headers from TeX. (line 6) * hints: PostScript typesetting. (line 55) * hoffset (psfile special option): psfile special. (line 18) * HP printers and Type 1 fonts: PostScript font installation. (line 69) * HP4Si printer and paper trays: Paper trays. (line 6) * href: Hypertext specials. (line 32) * hscale (psfile special option): psfile special. (line 30) * hsize (psfile special option): psfile special. (line 24) * html specials: Hypertext. (line 6) * html specials, and -z: Option details. (line 391) * http://www.win.tue.nl/~dickie/idvi: Hypertext. (line 21) * http://xxx.lanl.gov/hypertex: Hypertext. (line 21) * Hungarian umlaut: Reencoding with Afm2tfm. (line 32) * hyperdvi extensions, enabling: Option details. (line 391) * hypertext and bitmap fonts: Hypertext caveats. (line 6) * hypertext caveats: Hypertext caveats. (line 6) * hypertext specials: Hypertext specials. (line 6) * hypertext support: Hypertext. (line 6) * i config command (pages/section): Configuration file commands. (line 55) * idvi Java DVI reader: Hypertext. (line 21) * Illustrator, workaround for: Including graphics fails. (line 10) * img: Hypertext specials. (line 52) * including graphics fails: Including graphics fails. (line 6) * including headers from the command line: Including headers from the command line. (line 6) * including headers in TeX: Including headers from TeX. (line 6) * installation of config.ps: config.ps installation. (line 6) * installation of PostScript fonts: PostScript font installation. (line 6) * installation, of Dvips: Installation. (line 6) * installing fonts: Making a font available. (line 6) * interaction with PostScript: Interaction with PostScript. (line 6) * inverted output: Small or inverted. (line 6) * invoking Dvips: Invoking Dvips. (line 6) * j config command (partial font downloading): Configuration file commands. (line 59) * Java DVI reader: Hypertext. (line 21) * Jeffrey, Alan: Invoking afm2tfm. (line 13) * K config command (comment-removal): Configuration file commands. (line 63) * kerning, defined: Metric files. (line 15) * KPATHSEA_DEBUG: Environment variables. (line 18) * landscape orientation, defined: Paper size and landscape. (line 11) * landscape papertype: Option details. (line 314) * landscape, as \special: papersize special. (line 16) * last page printed: Option details. (line 163) * last-resort font scaling, with DVIPSSIZES: Environment variables. (line 47) * last-resort scaling, with R: Configuration file commands. (line 127) * ledger papertype: Option details. (line 314) * legal papertype: Option details. (line 314) * letter paper size: Config file paper sizes. (line 84) * letter papertype: Option details. (line 314) * letterhead tray: Paper trays. (line 10) * letterSize paper size: Config file paper sizes. (line 92) * ligature operations: Encoding file format. (line 54) * ligature, defined: Metric files. (line 15) * LIGKERN encoding file command: Encoding file format. (line 37) * lines in figures, wrong width: EPSF clipping. (line 6) * links, hypertext: Hypertext specials. (line 33) * literal headers: Literal headers. (line 6) * literal PostScript, examples: Literal examples. (line 6) * literal PostScript, using: Literal PS. (line 6) * llx (psfile special option): psfile special. (line 42) * lly (psfile special option): psfile special. (line 42) * long documents not printing: Long documents fail. (line 6) * low characters, shifting: Option details. (line 117) * lpr spooler, MS-DOS emulation: Option details. (line 224) * Lucida, installing: PostScript font installation. (line 10) * m config command (available memory): Configuration file commands. (line 67) * M config command (mf mode): Configuration file commands. (line 86) * macros for color: Color macro files. (line 6) * macros for epsf inclusion <1>: EPSF macros. (line 6) * macros for epsf inclusion: \includegraphics. (line 6) * magnification, DVI: EPSF scaling. (line 63) * magnification, overriding DVI: Option details. (line 373) * magnification, vertical: Option details. (line 384) * mailcap and hypertext: Hypertext specials. (line 53) * manual feed: Option details. (line 172) * maxdrift: Option details. (line 71) * maximum pages printed: Option details. (line 195) * media: Option details. (line 314) * memory available: Configuration file commands. (line 67) * memory of printer exhausted: Printer errors. (line 14) * memory usage, and headers: Headers and memory usage. (line 6) * memory, conserving: Option details. (line 21) * memory, used by PostScript fonts: Making a font available. (line 104) * Metafont ligature operations: Encoding file format. (line 54) * Metafont mode, specifying: Option details. (line 175) * Metafont source files: Glyph files. (line 30) * metric files: Metric files. (line 6) * Minion typeface family: psfonts.map. (line 60) * missfont.log: Option details. (line 184) * MISSFONT_LOG: Option details. (line 187) * Mitsubishi Shinko CHC-S446i printer: No output. (line 14) * mkdvipspapers: Config file paper sizes. (line 80) * mktexpk, avoiding: Option details. (line 184) * mktexpk, changing name: Environment variables. (line 36) * mode name, specifying: Option details. (line 175) * Monotype fonts: PostScript font installation. (line 10) * Monotype fonts, installing: PostScript font installation. (line 19) * mtpk: Option details. (line 365) * multiple master fonts: psfonts.map. (line 60) * multiple output files: Option details. (line 127) * multiple paper trays: Paper trays. (line 6) * Murphy, Tim: Hypertext specials. (line 20) * N EPS-disabling config command: Configuration file commands. (line 89) * name: Hypertext specials. (line 41) * narrow fonts: psfonts.map. (line 19) * no output at all: No output. (line 6) * non-printing characters, shifting: Option details. (line 117) * non-resident fonts: psfonts.map. (line 6) * nopaper, paper format for -t: Config file paper sizes. (line 75) * O config command (offset): Configuration file commands. (line 102) * o config command (output file): Configuration file commands. (line 94) * oblique fonts: Special font effects. (line 6) * octal character codes: Afm2tfm options. (line 41) * odd pages only: Option details. (line 27) * offset pages: Option details. (line 236) * Omega extensions: Option details. (line 206) * option, details of: Option details. (line 6) * options, debugging: Debug options. (line 6) * options, Dvips: Invoking Dvips. (line 6) * options, reading from standard input: Option details. (line 11) * options, summary: Option summary. (line 6) * options, to Afm2tfm: Afm2tfm options. (line 6) * outline fonts <1>: Special font effects. (line 50) * outline fonts: Glyph files. (line 17) * output file, sectioning of: Headers and memory usage. (line 6) * output file, setting: Configuration file commands. (line 94) * output files, multiple: Option details. (line 127) * output, inverted: Small or inverted. (line 6) * output, none: No output. (line 6) * output, redirecting: Option details. (line 219) * output, too small: Small or inverted. (line 6) * p config command (font aliases): Configuration file commands. (line 105) * P config command (PK path): Configuration file commands. (line 114) * page range: Option details. (line 263) * page, first printed: Option details. (line 254) * page, last printed: Option details. (line 163) * pages, maximum printed: Option details. (line 195) * PaintType: Special font effects. (line 50) * Pantone colors: Color macro files. (line 16) * paper size configuration file command: Config file paper sizes. (line 6) * paper size, default: config.ps installation. (line 6) * paper size, general: Paper size and landscape. (line 6) * paper trays: Paper trays. (line 6) * paper type: Option details. (line 314) * papersize special: papersize special. (line 6) * papersize special, and no -t: Option details. (line 314) * partial font downloading: psfonts.map. (line 55) * PDF files, font quality: Hypertext caveats. (line 6) * PDF files, making <1>: Hypertext. (line 11) * PDF files, making: Ghostscript installation. (line 6) * PDF files, option for: Option details. (line 391) * pdfmark: Hypertext. (line 6) * pfa files: Glyph files. (line 25) * pfb files: Glyph files. (line 25) * pfb files, automatically unpacked: psfonts.map. (line 49) * pfm files: Metric files. (line 49) * Phaser printer, used for color calibration: Color device configuration. (line 18) * physical page number, and -l: Option details. (line 163) * physical page number, and -p: Option details. (line 254) * physical page number, and bop-hook: PostScript hooks. (line 26) * pipes, not readable: Option details. (line 98) * pk files: Glyph files. (line 35) * PKFONTS, overrides P: Configuration file commands. (line 114) * plotfile, ps subspecial: ps special. (line 30) * pltotf: Metric files. (line 39) * popen for output: Option details. (line 224) * portrait orientation, defined: Paper size and landscape. (line 11) * positioning accuracy: Option details. (line 71) * post code after headers: Including headers from TeX. (line 28) * PostScript code, literal: Literal PS. (line 6) * PostScript encoding: Encodings. (line 27) * PostScript encoding, changing: Changing PostScript encodings. (line 6) * PostScript font alias file <1>: Configuration file commands. (line 105) * PostScript font alias file: Option details. (line 345) * PostScript fonts: PostScript fonts. (line 6) * PostScript fonts, installing: PostScript font installation. (line 6) * PostScript fonts, on your system: PostScript font installation. (line 24) * PostScript header files: Header files. (line 6) * PostScript hooks: PostScript hooks. (line 6) * PostScript interaction: Interaction with PostScript. (line 6) * PostScript previewers: Ghostscript installation. (line 6) * PostScript units: Bounding box. (line 11) * PowerPage PostScript implementation: No output. (line 14) * pre code before headers: Including headers from TeX. (line 28) * previewing Dvips output: Ghostscript installation. (line 6) * PRINTER: Environment variables. (line 50) * printer configuration: config.ps installation. (line 6) * printer configuration file, prototype: config.ps installation. (line 15) * printer errors: Printer errors. (line 6) * printer memory: Configuration file commands. (line 67) * printer memory exhausted: Printer errors. (line 14) * printer offset: Option details. (line 236) * PRINTER, and config file searching: Configuration file searching. (line 36) * PRINTER, avoided with -f: Option details. (line 98) * printer, driving directly: Option details. (line 110) * problems: Diagnosing problems. (line 6) * property list files: Metric files. (line 39) * prototype printer configuration file: config.ps installation. (line 15) * ps special: ps special. (line 6) * psfile special: psfile special. (line 6) * psfonts.map <1>: psfonts.map. (line 6) * psfonts.map <2>: Special font effects. (line 19) * psfonts.map: PostScript font installation. (line 24) * psheaderdir: Header files. (line 12) * psi character missing: Hypertext caveats. (line 55) * pstopk: Option details. (line 365) * Q config command (quiet): Configuration file commands. (line 121) * q config command (quiet): Configuration file commands. (line 121) * quiet operation: Option details. (line 287) * r config command (page reversal): Configuration file commands. (line 124) * R fallback resolution config command: Configuration file commands. (line 127) * reencode/*.enc: Encodings. (line 35) * reencoding: Reencoding with Afm2tfm. (line 6) * reencoding PostScript fonts: psfonts.map. (line 24) * registered character, accessing: Changing PostScript encodings. (line 18) * remapping: Reencoding with Afm2tfm. (line 6) * resident fonts, different in different printers <1>: Configuration file commands. (line 105) * resident fonts, different in different printers: Option details. (line 345) * resolution: Option details. (line 381) * resolution, setting: Option details. (line 58) * reverse pagination: Option details. (line 291) * rhi (psfile special option): psfile special. (line 46) * Rokicki, Tomas: Why Dvips. (line 68) * rotate.tex: ps special. (line 34) * rwi (psfile special option): psfile special. (line 46) * S config command (pict path): Configuration file commands. (line 152) * s config command (save/restore): Configuration file commands. (line 149) * save/restore, and inverted output: Small or inverted. (line 6) * save/restore, and literal PS: Literal examples. (line 27) * save/restore, and specials: ps special. (line 6) * save/restore, generating global: Option details. (line 302) * scaleunit: psfile special. (line 67) * scaling of figures: EPSF scaling. (line 6) * scaling small caps: Afm2tfm options. (line 33) * Scandinavian A ring: Reencoding with Afm2tfm. (line 32) * screen frequencies, setting: Including headers from the command line. (line 13) * SDict: psfile special. (line 67) * SDict dictionary: Literal headers. (line 6) * searching config files, order of: Configuration file searching. (line 6) * sections of output file, and memory: Headers and memory usage. (line 6) * sections output, in separate files: Option details. (line 127) * security: Option details. (line 294) * shell command execution, disabling: Option details. (line 294) * shell escape, in config file: Configuration file commands. (line 33) * Shinko CHC-S446i printer: No output. (line 14) * show PostScript operator: PostScript typesetting. (line 23) * silent operation: Option details. (line 287) * simplex mode on duplex printers: Including headers from the command line. (line 13) * slanted fonts: Special font effects. (line 6) * slanted fonts, making: Afm2tfm options. (line 51) * SlantFont: Special font effects. (line 17) * small caps fonts: Special font effects. (line 34) * Smith, Arthur: Hypertext specials. (line 6) * Softkey fonts: PostScript font installation. (line 10) * Softkey fonts, installing: PostScript font installation. (line 19) * spaces, dropped trailing: Hypertext caveats. (line 55) * specials, hypertext: Hypertext specials. (line 6) * splines: Glyph files. (line 17) * spooler, lacking: Option details. (line 110) * spooling to lpr on MS-DOS: Option details. (line 224) * standard I/O: Option details. (line 98) * standard input, reading options from: Option details. (line 11) * standard output, output to: Option details. (line 219) * standard PostScript, required by Ghostview: Ghostscript installation. (line 17) * start-hook: PostScript hooks. (line 11) * structured comments: Option details. (line 198) * system in config file: Configuration file commands. (line 33) * T config command (TFM path): Configuration file commands. (line 157) * Tektronix Phaser printer, used for color calibration: Color device configuration. (line 18) * testpage.tex: Option details. (line 243) * TeX encoding, changing: Changing TeX encodings. (line 6) * TeX, including headers in: Including headers from TeX. (line 6) * TEXCONFIG: Environment variables. (line 55) * TEXFONTS, overrides P: Configuration file commands. (line 114) * TEXFONTS, overrides T: Configuration file commands. (line 157) * TEXINPUTS, overrides S: Configuration file commands. (line 152) * texmext.enc: Encodings. (line 35) * TEXMFOUTPUT: Option details. (line 187) * texmital.enc: Encodings. (line 35) * texmsym.enc <1>: Changing TeX encodings. (line 16) * texmsym.enc: Encodings. (line 35) * TEXPICTS: Environment variables. (line 62) * TEXPICTS, overrides S: Configuration file commands. (line 152) * TEXPKS, overrides P: Configuration file commands. (line 114) * TEXSIZES, overrides R: Configuration file commands. (line 140) * text in figures, chopped off: EPSF clipping. (line 6) * tfm files: Metric files. (line 31) * TFMFONTS, overrides T: Configuration file commands. (line 157) * tftopl: Metric files. (line 39) * Theisen, Tim: Ghostscript installation. (line 17) * tight bounding box, finding: Option details. (line 82) * too-small output: Small or inverted. (line 6) * trademark character, accessing: Changing PostScript encodings. (line 18) * trailing spaces, dropped: Hypertext caveats. (line 55) * TranScript: Option details. (line 198) * transforming downloaded fonts: psfonts.map. (line 19) * trouble: Diagnosing problems. (line 6) * Type 1 fonts: Glyph files. (line 25) * typesetting in PostScript: PostScript typesetting. (line 6) * U config command (Xerox 4045): Configuration file commands. (line 162) * uncollated copies: Option details. (line 41) * uncompressing PostScript: Dynamic creation of graphics. (line 6) * uniform resource locator: Hypertext specials. (line 20) * unknown, paper format for -t <1>: Config file paper sizes. (line 69) * unknown, paper format for -t: papersize special. (line 29) * URL, definition: Hypertext specials. (line 27) * URL, extended for TeX: Hypertext specials. (line 20) * urx (psfile special option): psfile special. (line 42) * ury (psfile special option): psfile special. (line 42) * user-definable colors: User-definable colors. (line 6) * userdict, and dictionary files: Header files. (line 21) * userdict, used for header files: Option details. (line 122) * V config command (vf path): Configuration file commands. (line 166) * verbose EPSF processing: EPSF macros. (line 46) * vf files: Virtual fonts. (line 16) * virtual font expansion: Virtual fonts. (line 34) * virtual font path: Configuration file commands. (line 166) * virtual fonts: Virtual fonts. (line 6) * virtual fonts, creating: Invoking afm2tfm. (line 13) * VM exhausted: Printer errors. (line 14) * VMusage: Headers and memory usage. (line 12) * voffset (psfile special option): psfile special. (line 21) * vpl files: Virtual fonts. (line 16) * vptovf: Making a font available. (line 52) * vscale (psfile special option): psfile special. (line 33) * vsize (psfile special option): psfile special. (line 27) * W config command (warning): Configuration file commands. (line 171) * warning messages, defining: Configuration file commands. (line 171) * warnings, suppressing: Option details. (line 287) * whole font downloading: psfonts.map. (line 60) * wide fonts: psfonts.map. (line 19) * X config command (horizontal resolution): Configuration file commands. (line 178) * Xerox 4045: Option details. (line 353) * Y config command (vertical resolution): Configuration file commands. (line 181) * Y&Y fonts, installing: PostScript font installation. (line 19) * Z config command (compression): Configuration file commands. (line 184) * z config command (secure mode): Configuration file commands. (line 187) * | starting output filename: Option details. (line 224)  Tag Table: Node: Top564 Node: Why Dvips1313 Node: Installation4761 Node: config.ps installation5899 Node: PostScript font installation8441 Node: Ghostscript installation11315 Node: Diagnosing problems12412 Node: Debug options13507 Node: No output14710 Node: Small or inverted16178 Node: Printer errors16897 Node: Long documents fail18229 Node: Including graphics fails18570 Node: Invoking Dvips19808 Node: Basic usage20399 Node: Command-line options21383 Node: Option summary21832 Node: Option details23994 Node: Environment variables42998 Node: Config files45957 Node: Configuration file searching46640 Node: Configuration file commands49940 Node: Paper size and landscape57053 Node: papersize special58651 Node: Config file paper sizes60060 Node: Paper trays64215 Node: Interaction with PostScript65549 Node: PostScript figures66202 Node: Bounding box66928 Node: \includegraphics70299 Node: EPSF macros72590 Node: EPSF scaling74560 Node: EPSF clipping77130 Node: psfile special77772 Node: Dynamic creation of graphics80165 Node: Fonts in figures81483 Node: Header files83143 Node: Including headers from TeX84349 Node: Including headers from the command line86383 Node: Headers and memory usage87483 Node: Literal PS88193 Node: " special88775 Node: ps special89516 Node: Literal headers91014 Node: PostScript hooks91729 Node: Literal examples93819 Node: Hypertext95271 Node: Hypertext caveats96829 Node: Hypertext specials101226 Node: PostScript fonts103860 Node: Font concepts104976 Node: Metric files106143 Node: Glyph files108969 Node: Virtual fonts111325 Node: Encodings113215 Node: PostScript typesetting115597 Node: Making a font available118679 Node: Invoking afm2tfm123709 Node: Changing font encodings124679 Node: Changing TeX encodings125469 Node: Changing PostScript encodings126569 Node: Changing both encodings127913 Node: Reencoding with Afm2tfm128586 Node: Encoding file format131690 Node: Special font effects135893 Node: Afm2tfm options138156 Node: psfonts.map141141 Node: Color145873 Node: Color macro files146917 Node: User-definable colors150115 Node: Color subtleties151390 Node: Ted Turner153041 Node: Color device configuration154266 Node: Color support details156708 Node: Color specifications157086 Node: Color specials158489 Node: Index160618  End Tag Table dvipsk_TexLive-2009-stripped/cmfonts.map0000644000175000017500000000364511372532227020256 0ustar uwabamiuwabamicmbxsl10 cmbxsl10 #include #include #include #include #include #ifdef strdup #undef strdup #endif #define strdup xstrdup #include "paths.h" #else /* ! KPATHSEA */ #include /* for malloc, etc. */ #if !defined(SYSV) && !defined(WIN32) extern char *strtok() ; /* some systems don't have this in strings.h */ #endif #if defined(WIN32) #include #include #include #define O_BINARY _O_BINARY #endif #define DIR_SEP DIRSEP #endif /* KPATHSEA */ #ifdef VMS #define GLOBAL globaldef #ifdef __GNUC__ #include "climsgdef.h" /* created by hand, extracted from STARLET.MLB */ /* and put in GNU_CC:[INCLUDE.LOCAL] */ #include "ctype.h" #include "descrip.h" #else #include climsgdef #include ctype #include descrip #endif #endif #ifndef DEFRES #define DEFRES (600) #endif /* * First we define some globals. */ #ifdef VMS static char ofnme[252],infnme[252],pap[40],thh[20]; #endif /* PS fonts fully downloaded as headers */ char *downloadedpsnames[DOWNLOADEDPSSIZE]; int unused_top_of_psnames ; /* unused top number of downloadedpsnames[#] */ fontdesctype *fonthead ; /* list of all fonts mentioned so far */ fontdesctype *curfnt ; /* the currently selected font */ sectiontype *sections ; /* sections to process document in */ Boolean partialdownload = 1 ; /* turn on partial downloading */ Boolean manualfeed ; /* manual feed? */ Boolean compressed ; /* compressed? */ Boolean downloadpspk ; /* use PK for downloaded PS fonts? */ Boolean safetyenclose ; /* enclose in save/restore for stupid spoolers? */ Boolean removecomments = 0 ; /* remove comments from included PS? */ Boolean nosmallchars ; /* disable small char optimization for X4045? */ Boolean cropmarks ; /* add cropmarks? */ Boolean abspage = 0 ; /* are page numbers absolute? */ Boolean tryepsf = 0 ; /* should we try to make it espf? */ int secure = 1 ; /* make safe for suid */ int secure_option = 0; /* set by -R */ int collatedcopies = 1 ; /* how many collated copies? */ int sectioncopies = 1 ; /* how many times to repeat each section? */ integer pagecopies = 1 ; /* how many times to repeat each page? */ shalfword linepos = 0 ; /* where are we on the line being output? */ integer maxpages ; /* the maximum number of pages */ Boolean notfirst, notlast ; /* true if a first page was specified */ Boolean evenpages, oddpages ; /* true if doing only even/only odd pages */ Boolean pagelist ; /* true if using page ranges */ Boolean sendcontrolD ; /* should we send a control D at end? */ Boolean shiftlowchars ; /* shift [0-32, 127] characters higher? */ integer firstpage ; /* the number of the first page if specified */ integer lastpage ; integer firstseq ; integer lastseq ; integer hpapersize, vpapersize ; /* horizontal and vertical paper size */ integer hoff, voff ; /* horizontal and vertical offsets */ integer maxsecsize = 0; /* the maximum size of a section */ integer firstboploc ; /* where the first bop is */ Boolean sepfiles ; /* each section in its own file? */ int numcopies ; /* number of copies of each page to print */ char *oname ; /* output file name */ char *iname ; /* dvi file name */ char *fulliname ; /* same, with current working directory */ char *strings ; /* strings for program */ char *nextstring, *maxstring ; /* string pointers */ FILE *dvifile, *bitfile ; /* dvi and output files */ quarterword *curpos ; /* current position in virtual character packet */ quarterword *curlim ; /* final byte in virtual character packet */ fontmaptype *ffont ; /* first font in current frame */ real conv ; /* conversion ratio, pixels per DVI unit */ real vconv ; /* conversion ratio, pixels per DVI unit */ real alpha ; /* conversion ratio, DVI unit per TFM unit */ double mag ; /* the magnification of this document */ integer num, den ; /* the numerator and denominator */ int overridemag ; /* substitute for mag value in DVI file? */ int actualdpi = DEFRES ; /* the actual resolution of the printer */ int vactualdpi = DEFRES ; /* the actual resolution of the printer */ int maxdrift ; /* max pixels away from true rounded position */ int vmaxdrift ; /* max pixels away from true rounded position */ char *paperfmt ; /* command-line paper format */ int landscape = 0 ; /* landscape mode */ integer fontmem ; /* memory remaining in printer */ integer pagecount ; /* page counter for the sections */ integer pagenum ; /* the page number we currently look at */ long bytesleft ; /* number of bytes left in raster */ quarterword *raster ; /* area for raster manipulations */ integer hh, vv ; /* horizontal and vertical pixel positions */ Boolean noomega = 0 ; /* Omega extensions are enabled */ /*-----------------------------------------------------------------------* * The PATH definitions cannot be defined on the command line because so many * DEFINE's overflow the DCL buffer when using the GNU CC compiler. *-----------------------------------------------------------------------*/ #if defined(VMS) && defined(__GNUC__) #include "vms_gcc_paths.h" #endif char *infont ; /* is the file we are downloading a font? */ #ifndef KPATHSEA #ifdef ATARIST # define TFMPATH "." # define PKPATH "." # define VFPATH "." # define FIGPATH "." # define HEADERPATH "." # define CONFIGPATH "." #endif char *tfmpath = TFMPATH ; /* pointer to directories for tfm files */ char *pkpath = PKPATH ; /* pointer to directories for pk files */ char *vfpath = VFPATH ; /* pointer to directories for vf files */ char *figpath = FIGPATH ; /* pointer to directories for figure files */ char *headerpath = HEADERPATH ; /* pointer to directories for header files */ char *configpath = CONFIGPATH ; /* where to find config files */ #ifndef PICTPATH #ifndef __THINK__ #define PICTPATH "." #else #define PICTPATH ":" #endif #endif char *pictpath = PICTPATH ; /* where IFF/etc. pictures are found */ #ifdef SEARCH_SUBDIRECTORIES char *fontsubdirpath = FONTSUBDIRPATH ; #endif #endif /* ! KPATHSEA */ #ifdef FONTLIB char *flipath = FLIPATH ; /* pointer to directories for fli files */ char *fliname = FLINAME ; /* pointer to names of fli files */ #endif integer swmem ; /* font memory in the PostScript printer */ int quiet ; /* should we only print errors to stderr? */ int filter ; /* act as filter default output to stdout, default input to stdin? */ int dvips_debug_flag ; /* output config and map files to stderr if 1 */ int prettycolumn ; /* the column we are at when running pretty */ int gargc ; /* global argument count */ char **gargv ; /* global argument vector */ int totalpages = 0 ; /* total number of pages */ Boolean reverse ; /* are we going reverse? */ Boolean usesPSfonts ; /* do we use local PostScript fonts? */ Boolean usesspecial ; /* do we use \special? */ Boolean headers_off ; /* do we send headers or not? */ Boolean usescolor ; /* IBM: color - do we use colors? */ char *headerfile ; /* default header file */ char *warningmsg ; /* a message to write, if set in config file */ Boolean multiplesects ; /* more than one section? */ Boolean disablecomments ; /* should we suppress any EPSF comments? */ char *printer ; /* what printer to send this to? */ char *mfmode ; /* default MF mode */ char *mflandmode ; /* allow an optional landscape mode def */ int mfmode_option; /* set by -mode command-line option */ int oname_option; /* set by -o option */ frametype frames[MAXFRAME] ; /* stack for virtual fonts */ integer pagecost; /* memory used on the page being prescanned */ int delchar; /* characters to delete from prescanned page */ integer fsizetol; /* max dvi units error for psfile font sizes */ Boolean includesfonts; /* are fonts used in included psfiles? */ fontdesctype *fonthd[MAXFONTHD];/* list headers for included fonts of 1 name */ int nextfonthd; /* next unused fonthd[] index */ char xdig[256]; /* table for reading hexadecimal digits */ char banner[] = BANNER ; /* our startup message */ char banner2[] = BANNER2 ; /* our second startup message */ Boolean noenv = 0 ; /* ignore PRINTER envir variable? */ Boolean dopprescan = 0 ; /* do we do a scan before the prescan? */ extern int dontmakefont ; struct papsiz *papsizes ; /* all available paper size */ int headersready ; /* ready to check headers? */ #if defined(MSDOS) || defined(OS2) || defined(ATARIST) char *mfjobname = NULL; /* name of mfjob file if given */ FILE *mfjobfile = NULL; /* mfjob file for font making instructions */ #endif #ifdef DEBUG integer debug_flag = 0; #endif /* DEBUG */ char queryline[256]; /* interactive query of options */ int qargc; char *qargv[32]; char queryoptions; /* * This routine calls the following externals: */ #include "protos.h" #ifdef HPS Boolean HPS_FLAG = 0 ; #endif extern int lastresortsizes[]; extern char errbuf[]; /* Declare the routine to get the current working directory. */ /* The getwd/getcwd stuff here is not portable, and I don't think it's worth it to include xgetcwd.d just so we can print the full pathname of the DVI file in the output. --karl */ #define IGNORE_CWD #ifndef IGNORE_CWD #ifndef HAVE_GETCWD extern char *getwd (); /* said to be faster than getcwd (SunOS man page) */ #define getcwd(b, len) getwd(b) /* used here only when b nonnull */ #else #ifdef ANSI extern char *getcwd (char *, int); #else extern char *getcwd (); #endif /* not ANSI */ #endif /* not HAVE_GETWD */ #if defined(SYSV) || defined(VMS) || (defined(MSDOS) && !defined(__DJGPP__)) || defined(OS2) || defined(ATARIST) #define MAXPATHLEN (256) #else #include /* for MAXPATHLEN */ #endif #endif /* not IGNORE_CWD */ static char *helparr[] = { #ifndef VMCMS "Usage: dvips [OPTION]... FILENAME[.dvi]", #else " VM/CMS Usage:", " dvips fname [ftype [fmode]] [options]", "or", " dvips fname[.ftype[.fmode]] [options]", #endif "Convert DVI input files to PostScript.", "See http://tug.org/dvips/ for the full manual and other information.", "", "Options:", "-a* Conserve memory, not time -A Print only odd (TeX) pages", "-b # Page copies, for posters e.g. -B Print only even (TeX) pages", "-c # Uncollated copies -C # Collated copies", "-d # Debugging -D # Resolution", "-e # Maxdrift value -E* Try to create EPSF", "-f* Run as filter -F* Send control-D at end", #ifdef SHIFTLOWCHARS " -G* Shift low chars to higher pos.", #endif "-h f Add header file", "-i* Separate file per section", "-j* Download fonts partially", "-k* Print crop marks -K* Pull comments from inclusions", "-l # Last page", "-m* Manual feed -M* Don't make fonts", "-mode s Metafont device name", "-n # Maximum number of pages -N* No structured comments", "-noomega Disable Omega extensions", "-o f Output file -O c Set/change paper offset", #if defined(MSDOS) || defined(OS2) "-p # First page -P s Load $s.cfg", #else "-p # First page -P s Load config.$s", #endif "-pp l Print only pages listed", "-q* Run quietly", "-r* Reverse order of pages -R* Run securely", "-s* Enclose output in save/restore -S # Max section size in pages", "-t s Paper format -T c Specify desired page size", "-u s PS mapfile -U* Disable string param trick", "-v Print version number and quit -V* Send downloadable PS fonts as PK", "-x # Override dvi magnification -X # Horizontal resolution", "-y # Multiply by dvi magnification -Y # Vertical resolution", #ifdef HPS "-z* Hyper PS -Z* Compress bitmap fonts", #else " -Z* Compress bitmap fonts", #endif /*"- Interactive query of options", */ " # = number f = file s = string * = suffix, `0' to turn off", " c = comma-separated dimension pair (e.g., 3.2in,-32.1cm)", " l = comma-separated list of page ranges (e.g., 1-4,7-9)", 0} ; void help(int status) { char **p; FILE *f = status == 0 ? stdout : stderr; #ifdef KPATHSEA extern KPSEDLL char *kpse_bug_address; #endif for (p=helparr; *p; p++) fprintf (f, "%s\n", *p); putc ('\n', f); #ifdef KPATHSEA fputs (kpse_bug_address, f); #endif } static void freememforpsnames(void) { int i; for (i = 0; i < unused_top_of_psnames && downloadedpsnames[i]; i++) free (downloadedpsnames[i]); } /* * This error routine prints an error message; if the first * character is !, it aborts the job. */ static char *progname ; void error_with_perror(char *s, char *fname) { if (prettycolumn > 0) fprintf(stderr,"\n"); prettycolumn = 0; (void)fprintf(stderr, "%s: %s", progname, s) ; if (fname) { putc (' ', stderr); perror (fname); } else { putc ('\n', stderr); } if (*s=='!') { freememforpsnames() ; if (bitfile != NULL) { cleanprinter() ; } exit(1) ; /* fatal */ } } /* * This error routine prints an error message; if the first * character is !, it aborts the job. */ void error(char *s) { error_with_perror (s, NULL); } #ifndef KPATHSEA char * concat(char *s1, char *s2) { char *s = malloc(strlen(s1)+strlen(s2)+1); if (s == NULL) { fprintf(stderr, "Malloc failed to give %d bytes.\nAborting\n", strlen(s1)+strlen(s2)+1); exit(1); } strcpy(s, s1); strcat(s, s2); } #endif /* Report a warning if both checksums are nonzero, they don't match, and the user hasn't turned it off. */ void check_checksum(unsigned c1, unsigned c2, const char *name) { if (c1 && c2 && c1 != c2 #ifdef KPATHSEA && !kpse_tex_hush ("checksum") #endif ) { sprintf (errbuf, "Checksum mismatch in %s", name); error (errbuf); } } /* * This is our malloc that checks the results. We debug the * allocations but not the frees, since memory fragmentation * might be such that we can never use the free'd memory and * it's wise to be conservative. The only real place we free * is when repacking *huge* characters anyway. */ #ifdef DEBUG static integer totalalloc = 0 ; #endif char * mymalloc(integer n) { char *p ; #ifdef SMALLMALLOC if (n > 65500L) error("! can't allocate more than 64K!") ; #endif if (n <= 0) /* catch strange 0 mallocs in flib.c without breaking code */ n = 1 ; #ifdef DEBUG totalalloc += n ; if (dd(D_MEM)) { #ifdef SHORTINT fprintf(stderr, "Alloc %ld\n", n) ; #else fprintf(stderr, "Alloc %d\n", n) ; #endif } #endif p = (char *) malloc(n) ; if (p == NULL) error("! no memory") ; return p ; } void morestrings(void) { strings = mymalloc((integer)STRINGSIZE) ; nextstring = strings ; maxstring = strings + STRINGSIZE - 200 ; *nextstring++ = 0 ; } void checkstrings(void) { if (nextstring - strings > STRINGSIZE / 2) morestrings() ; } /* * Initialize sets up all the globals and data structures. */ void initialize(void) { int i; char *s; nextfonthd = 0; for (i=0; i<256; i++) xdig[i] = 0; i = 0; for (s="0123456789ABCDEF"; *s!=0; s++) xdig[(int)*s] = i++; i = 10; for (s="abcdef"; *s!=0; s++) xdig[(int)*s] = i++; for(i=0 ; i < DOWNLOADEDPSSIZE; i++) downloadedpsnames[i] = NULL; unused_top_of_psnames = 0; morestrings() ; maxpages = 100000 ; numcopies = 1 ; iname = fulliname = strings ; bitfile = NULL ; bytesleft = 0 ; swmem = SWMEM ; oname = OUTPATH ; sendcontrolD = 0 ; shiftlowchars = 0 ; multiplesects = 0 ; disablecomments = 0 ; maxdrift = -1 ; vmaxdrift = -1 ; dontmakefont = !MAKE_TEX_PK_BY_DEFAULT; } /* * This routine copies a string into the string `pool', safely. */ char * newstring(char *s) { int l ; if (s == NULL) return(NULL) ; l = strlen(s) ; if (nextstring + l >= maxstring) morestrings() ; if (nextstring + l >= maxstring) error("! out of string space") ; (void)strcpy(nextstring, s) ; s = nextstring ; nextstring += l + 1 ; return(s) ; } void newoutname(void) { static int seq = 0 ; static char *seqptr = 0 ; char *p ; if (oname == 0 || *oname == 0) error("! need an output file name to specify separate files") ; if (*oname != '!' && *oname != '|') { if (seqptr == 0) { oname = newstring(oname) ; seqptr = 0 ; for (p = oname; *p; p++) /* find last dot after last slash */ if (*p == '.') seqptr = p + 1 ; else if (*p == '/') seqptr = 0 ; #ifdef DOSISH else if (*p == '\\') seqptr = 0 ; #endif if (seqptr == 0) seqptr = p ; nextstring += 5 ; /* make room for the number, up to five digits */ } sprintf(seqptr, "%03d", ++seq) ; } } /* * This routine reverses a list, where a list is defined to be any * structure whose first element is a pointer to another such structure. */ VOID * revlist(VOID *p) { struct list { struct list *next ; } *pp = (struct list *)p, *qq = 0, *tt ; while (pp) { tt = pp->next ; pp->next = qq ; qq = pp ; pp = tt ; } return (VOID *)qq ; } /* this asks for a new set of arguments from the command line */ void queryargs(void) { fputs("Options: ",stdout); fgets(queryline,256,stdin); qargc=1; if ( (qargv[1] = strtok(queryline," \n")) != (char *)NULL ) { qargc=2; while ( ((qargv[qargc] = strtok((char *)NULL," \n")) != (char *)NULL) && (qargc < 31) ) qargc++; } qargv[qargc] = (char *)NULL; } /* * Finally, our main routine. */ extern void handlepapersize() ; #ifdef VMS main(void) #else int main(int argc, char **argv) #endif { int i, lastext = -1 ; #ifdef MVSXA int firstext = -1 ; #endif sectiontype *sects ; #ifdef KPATHSEA kpse_set_program_name (argv[0], "dvips"); kpse_set_program_enabled (kpse_pk_format, MAKE_TEX_PK_BY_DEFAULT, kpse_src_compile); #endif #ifdef __THINK__ argc = dcommand(&argv) ; /* do I/O stream redirection */ #endif #ifdef VMS /* Grab the command-line buffer */ short len_arg; $DESCRIPTOR( verb_dsc, "DVIPS "); /* assume the verb is always DVIPS */ struct dsc$descriptor_d temp_dsc = { 0, DSC$K_DTYPE_T, DSC$K_CLASS_D, 0}; progname = &thh[0] ; strcpy(progname,"DVIPS%ERROR"); lib$get_foreign( &temp_dsc, 0, &len_arg, 0); /* Get the command line */ str$prefix(&temp_dsc, &verb_dsc); /* prepend the VERB */ len_arg += verb_dsc.dsc$w_length; /* update the length */ temp_dsc.dsc$a_pointer[len_arg] = '\0'; /* terminate the string */ gargv = &temp_dsc.dsc$a_pointer; /* point to the buffer */ gargc = 1 ; /* only one big argv */ #else progname = argv[0] ; gargv = argv ; gargc = argc ; /* we sneak a look at the first arg in case it's debugging */ #ifdef DEBUG if (argc > 1 && strncmp(argv[1], "-d", 2)==0) { if (argv[1][2]==0 && argc > 2) { if (sscanf(argv[2], "%d", &debug_flag)==0) debug_flag = 0 ; } else { if (sscanf(argv[1]+2, "%d", &debug_flag)==0) debug_flag = 0 ; } } #ifdef KPATHSEA if (dd(D_FILES)) KPSE_DEBUG_SET (KPSE_DEBUG_FOPEN); if (dd(D_PATHS)) KPSE_DEBUG_SET (KPSE_DEBUG_PATHS); if (dd(D_STAT)) KPSE_DEBUG_SET (KPSE_DEBUG_STAT); if (dd(D_HASH)) KPSE_DEBUG_SET (KPSE_DEBUG_HASH); if (dd(D_EXPAND)) KPSE_DEBUG_SET (KPSE_DEBUG_EXPAND); if (dd(D_SEARCH)) KPSE_DEBUG_SET (KPSE_DEBUG_SEARCH); #endif /* KPATHSEA */ #endif /* DEBUG */ #ifdef KPATHSEA if (argc > 1) { if (strcmp (argv[1], "--help") == 0) { help (0); exit (0); } else if (strcmp (argv[1], "--version") == 0) { extern KPSEDLL char *kpathsea_version_string; puts (BANNER); puts (kpathsea_version_string); puts ("Copyright 2009 Radical Eye Software.\n\ There is NO warranty. You may redistribute this software\n\ under the terms of the GNU General Public License\n\ and the Dvips copyright.\n\ For more information about these matters, see the files\n\ named COPYING and dvips.h.\n\ Primary author of Dvips: T. Rokicki."); exit (0); } if (argc == 2 && strncmp(argv[1], "-?", 2) == 0) { printf("%s %s\n", banner, banner2) ; help(0); exit(0); } if (argc == 2 && strncmp(argv[1], "-v", 2) == 0) { printf("%s %s\n", banner, banner2) ; exit(0); } } #endif #endif dvips_debug_flag = 0 ; { /* for compilers incompatible with c99 */ char *s = (char *)getenv ("DVIPSDEBUG") ; if (s) { dvips_debug_flag = 1 ; free (s) ; } else { s = (char *) getenv ("KPATHSEA_DEBUG") ; if (s) { dvips_debug_flag = 1 ; free (s) ; } } } initialize() ; checkenv(0) ; getdefaults(CONFIGFILE) ; getdefaults((char *)0) ; /* * This next whole big section of code is straightforward; we just scan * the options. An argument can either immediately follow its option letter * or be separated by spaces. Any argument not preceded by '-' and an * option letter is considered a file name; the program complains if more * than one file name is given, and uses stdin if none is given. */ #ifdef VMS vmscli(void); papsizes = (struct papsiz *)revlist((void *)papsizes) ; /* Added by PWD 21-Mar-1997 */ #else queryoptions = 0; do { for (i=1; i 1000) error("! can only print one to a thousand page copies") ; break ; case 'c' : if (*p == 0 && argv[i+1]) p = argv[++i] ; if (sscanf(p, "%d", &numcopies)==0) error("! Bad number of copies option (-c).") ; break ; case 'd' : #ifdef DEBUG { int old_debug = debug_flag ; static int warned_already = 0 ; if (*p == 0 && argv[i+1]) p = argv[++i]; if (sscanf(p, "%d", &debug_flag)==0) error("! Bad debug option (-d)."); if (debug_flag != old_debug && warned_already++ == 0) { fprintf(stderr, "I found a debug option that was not the first argument to the dvips\n") ; fprintf(stderr, "command. Some debugging output may have been lost because of this.\n") ; } break; } #else error("not compiled in debug mode") ; break ; #endif /* DEBUG */ case 'e' : if (*p == 0 && argv[i+1]) p = argv[++i] ; if (sscanf(p, "%d", &maxdrift)==0 || maxdrift<0) error("! Bad maxdrift option (-e).") ; vmaxdrift = maxdrift; break ; case 'f' : filter = (*p != '0') ; if (filter) oname = "" ; noenv = 1 ; sendcontrolD = 0 ; break ; case 'u' : { extern char *psmapfile; char PSname[300] ; if (*p == 0 && argv[i+1]) p = argv[++i] ; strcpy(PSname, p) ; if (!strchr(PSname, '.')) strcat(PSname, ".map") ; /* default extension */ if (PSname[0] == '+') getpsinfo(PSname+1) ; else psmapfile = strdup(PSname) ; /* a cute small memory leak (just as in 'p' option handling in resident.c) */ } break ; case 'h' : case 'H' : if (*p == 0 && argv[i+1]) p = argv[++i] ; if (strcmp(p, "-") == 0) headers_off = 1 ; else (void)add_header(p) ; break ; case 'i': sepfiles = (*p != '0') ; if (sepfiles && maxsecsize == 0) { maxsecsize = 1; /* default section size to one page/file */ } break ; case 'j': partialdownload = (*p != '0') ; break ; case 'k': cropmarks = (*p != '0') ; break ; case 'R': if (*p == '0') { secure = 0 ; } else if (*p == '2') { secure = 2 ; } else { secure = 1 ; } if (secure) secure_option = 1 ; /* Never used */ break ; case 'S': if (*p == 0 && argv[i+1]) p = argv[++i] ; if (sscanf(p, "%d", &maxsecsize)==0) error("! Bad section size arg (-S).") ; break ; case 'm' : if (STREQ (p, "ode") && argv[i+1]) { mfmode = argv[++i]; mfmode_option = 1; } else manualfeed = (*p != '0') ; break ; case 'n' : if (STREQ (p, "oomega")) { noomega = 1 ; } else { if (*p == 0 && argv[i+1]) p = argv[++i] ; #ifdef SHORTINT if (sscanf(p, "%ld", &maxpages)==0) #else /* ~SHORTINT */ if (sscanf(p, "%d", &maxpages)==0) #endif /* ~SHORTINT */ error("! Bad number of pages option (-n).") ; } break ; case 'o' : if (*p == 0 && argv[i+1] && (STREQ (argv[i+1], "-") || argv[i+1][0] != '-')) p = argv[++i] ; oname_option = 1; oname = p ; noenv = 1 ; sendcontrolD = 0 ; #if defined(MSDOS) || defined(OS2) if (*oname && oname[strlen(oname)-1] == ':') oname[strlen(oname)-1] = 0; /* strip ':' off */ #endif break ; case 'O' : if (*p == 0 && argv[i+1]) p = argv[++i] ; handlepapersize(p, &hoff, &voff) ; break ; case 'T' : if (*p == 0 && argv[i+1]) p = argv[++i] ; handlepapersize(p, &hpapersize, &vpapersize) ; if (landscape) { error( "both landscape and papersize specified; ignoring landscape") ; landscape = 0 ; } break ; case 'p' : #if defined(MSDOS) || defined(OS2) || defined(ATARIST) /* check for emTeX job file (-pj=filename) */ if (*p == 'j') { p++; if (*p == '=' || *p == ':') p++; mfjobname = newstring(p); break; } /* must be page number instead */ #endif if (*p == 'p') { /* a -pp specifier for a page list? */ p++ ; if (*p == 0 && argv[i+1]) p = argv[++i] ; if (ParsePages(p)) error("! Bad page list specifier (-pp).") ; pagelist = 1 ; break ; } if (*p == 0 && argv[i+1]) p = argv[++i] ; if (*p == '=') { abspage = 1 ; p++ ; } #ifdef SHORTINT switch(sscanf(p, "%ld.%ld", &firstpage, &firstseq)) { #else /* ~SHORTINT */ switch(sscanf(p, "%d.%d", &firstpage, &firstseq)) { #endif /* ~SHORTINT */ case 1: firstseq = 0 ; case 2: break ; default: #ifdef KPATHSEA error(concat3 ("! Bad first page option (-p ", p, ").")) ; #else error("! Bad first page option (-p).") ; #endif } notfirst = 1 ; break ; case 'l': if (*p == 0 && argv[i+1]) p = argv[++i] ; if (*p == '=') { abspage = 1 ; p++ ; } #ifdef SHORTINT switch(sscanf(p, "%ld.%ld", &lastpage, &lastseq)) { #else /* ~SHORTINT */ switch(sscanf(p, "%d.%d", &lastpage, &lastseq)) { #endif /* ~SHORTINT */ case 1: lastseq = 0 ; case 2: break ; default: #ifdef KPATHSEA error(concat3 ("! Bad last page option (-l ", p, ").")) ; #else error("! Bad last page option (-l).") ; #endif } notlast = 1 ; break ; case 'A': oddpages = 1 ; break ; case 'B': evenpages = 1 ; break ; case 'q' : case 'Q' : quiet = (*p != '0') ; break ; case 'r' : reverse = (*p != '0') ; break ; case 't' : if (*p == 0 && argv[i+1]) p = argv[++i] ; if (strcmp(p, "landscape") == 0) { if (hpapersize || vpapersize) error( "both landscape and papersize specified; ignoring landscape") ; else landscape = 1 ; } else paperfmt = p ; break ; case 'v': printf ("%s %s\n", banner, banner2); exit (0); break; case 'x' : case 'y' : if (*p == 0 && argv[i+1]) p = argv[++i] ; if (sscanf(p, "%lg", &mag)==0 || mag < 1 || mag > 1000000) error("! Bad magnification parameter (-x or -y).") ; overridemag = (c == 'x' ? 1 : -1) ; break ; case 'C' : if (*p == 0 && argv[i+1]) p = argv[++i] ; if (sscanf(p, "%d", &collatedcopies)==0) error("! Bad number of collated copies option (-C).") ; break ; case 'D' : if (*p == 0 && argv[i+1]) p = argv[++i] ; if (sscanf(p, "%d", &actualdpi)==0 || actualdpi < 10 || actualdpi > 10000) error("! Bad dpi parameter (-D).") ; vactualdpi = actualdpi; /* If we had the mode from config.ps, don't use it. If they specified one with -mode, keep it. */ if (!mfmode_option) mfmode = NULL; break ; case 'E' : tryepsf = (*p != '0') ; removecomments = disablecomments = 0; if (tryepsf && maxsecsize == 0) maxsecsize = 1 ; break ; case 'K' : removecomments = (*p != '0') ; break ; case 'U' : nosmallchars = (*p != '0') ; break ; case 'X' : if (*p == 0 && argv[i+1]) p = argv[++i] ; if (sscanf(p, "%d", &actualdpi)==0 || actualdpi < 10 || actualdpi > 10000) error("! Bad dpi parameter (-D).") ; break ; case 'Y' : if (*p == 0 && argv[i+1]) p = argv[++i] ; if (sscanf(p, "%d", &vactualdpi)==0 || vactualdpi < 10 || vactualdpi > 10000) error("! Bad dpi parameter (-D).") ; vactualdpi = vactualdpi; break ; case 'F' : sendcontrolD = (*p != '0') ; break ; case 'G' : shiftlowchars = (*p != '0'); break; case 'M': dontmakefont = (*p != '0') ; #ifdef KPATHSEA kpse_set_program_enabled (kpse_pk_format, !dontmakefont, kpse_src_cmdline); #endif break ; case 'N' : disablecomments = (*p != '0') ; break ; case 'P' : { struct papsiz *opapsiz = papsizes ; struct papsiz *npapsiz ; papsizes = 0 ; if (*p == 0 && argv[i+1]) p = argv[++i] ; printer = p ; noenv = 1 ; if (!getdefaults("")) { /* If no config file, default the output name. */ oname = concat ("| lpr -P", printer); } npapsiz = opapsiz ; while (npapsiz && npapsiz->next) npapsiz = npapsiz->next ; if (npapsiz) { npapsiz->next = papsizes ; papsizes = opapsiz ; } } break ; case 's': safetyenclose = (*p != '0') ; break ; case 'V': downloadpspk = (*p != '0') ; break ; case 'Z': compressed = (*p != '0') ; break ; #ifdef HPS case 'z': HPS_FLAG = (*p != '0') ; break ; #endif case '?': break ; /* We print the banner and help msg below. */ default: #ifdef KPATHSEA error(concat3 ("! Invalid option `", argv[i], "'. Try --help for more information.")); #else error( "! Bad option, not one of acdefhijklmnopqrstxyzABCDEFKMNOPSTUXYZ?") ; #endif } } else { if (*iname == 0) { register char *p ; lastext = 0 ; iname = nextstring ; p = argv[i] ; if (NAME_BEGINS_WITH_DEVICE(p)) { /* get past DOSISH drive */ *nextstring++ = *p++ ; *nextstring++ = *p++ ; } while (*p) { *nextstring = *p++ ; if (*nextstring == '.') lastext = nextstring - iname ; else if (IS_DIR_SEP(*nextstring)) lastext = 0 ; nextstring++ ; } *nextstring++ = '.' ; *nextstring++ = 'd' ; *nextstring++ = 'v' ; *nextstring++ = 'i' ; *nextstring++ = 0 ; } else #ifdef KPATHSEA error(concat3("! Second input filename (", argv[i], ") specified.")) ; #else error("! Two input file names specified.") ; #endif } } if (noenv == 0) { register char *p ; struct papsiz *opapsiz = papsizes ; papsizes = 0 ; if (0 != (p = getenv("PRINTER"))) { #if defined(MSDOS) || defined(OS2) strcpy(nextstring, p) ; strcat(nextstring, ".cfg") ; #else strcpy(nextstring, "config.") ; strcat(nextstring, p) ; #endif getdefaults(nextstring) ; } { struct papsiz *npapsiz = opapsiz ; while (npapsiz && npapsiz->next) npapsiz = npapsiz->next ; if (npapsiz) { npapsiz->next = papsizes ; papsizes = opapsiz ; } } } papsizes = (struct papsiz *)revlist((void *)papsizes) ; if (queryoptions != 0) { /* get new options */ (void)fprintf(stderr, "%s %s\n", banner, banner2) ; help(1) ; queryargs(); if (qargc == 1) queryoptions = 0; else { qargv[0] = argv[0]; argc=qargc; argv=qargv; } } } while (queryoptions != 0) ; #endif #if (defined(KPATHSEA) && defined(DEBUG)) /* this should really be part of a subroutine */ if (dd(D_FILES)) KPSE_DEBUG_SET (KPSE_DEBUG_FOPEN); if (dd(D_PATHS)) KPSE_DEBUG_SET (KPSE_DEBUG_PATHS); if (dd(D_STAT)) KPSE_DEBUG_SET (KPSE_DEBUG_STAT); if (dd(D_HASH)) KPSE_DEBUG_SET (KPSE_DEBUG_HASH); if (dd(D_EXPAND)) KPSE_DEBUG_SET (KPSE_DEBUG_EXPAND); if (dd(D_SEARCH)) KPSE_DEBUG_SET (KPSE_DEBUG_SEARCH); #endif /* DEBUG */ checkenv(1) ; #ifdef KPATHSEA kpse_init_prog ("DVIPS", actualdpi, mfmode, "cmr10"); kpse_make_tex_discard_errors = quiet; #endif /* * The logic here is a bit convoluted. Since all `additional' * PostScript font information files are loaded *before* the master * one, and yet they should be able to override the master one, we * have to add the information in the master list to the *ends* of * the hash chain. We do this by reversing the lists, adding them * to the front, and then reversing them again. */ revpslists() ; getpsinfo((char *)NULL) ; revpslists() ; if (dvips_debug_flag) { if (!quiet) (void)fprintf(stderr, "\n%s %s\n", banner, banner2) ; prettycolumn = 0 ; } else { if (!quiet) (void)fprintf(stderr, "%s %s\n", banner, banner2) ; } if (*iname) { dvifile = fopen(iname, READBIN) ; /* * Allow names like a.b. */ if (dvifile == 0) { iname[strlen(iname)-4] = 0 ; /* remove the .dvi suffix */ dvifile = fopen(iname, READBIN) ; } } if (oname[0] == '-' && oname[1] == 0) oname[0] = 0 ; else if (*oname == 0 && ! filter && *iname) { /* determine output name from input name */ oname = nextstring ; #ifndef VMCMS /* get stuff before LAST "." */ lastext = strlen(iname) - 1 ; while (iname[lastext] != '.' && lastext > 0) lastext-- ; if (iname[lastext] != '.') lastext = strlen(iname) - 1 ; #else /* for VM/CMS we take the stuff before FIRST "." */ lastext = strchr(iname,'.') - iname ; if ( lastext <= 0 ) /* if no '.' in "iname" */ lastext = strlen(iname) -1 ; #endif #ifdef MVSXA /* IBM: MVS/XA */ if (strchr(iname, '(') != NULL && strchr(iname, ')') != NULL) { firstext = strchr(iname, '(') - iname + 1; lastext = strrchr(iname, ')') - iname - 1; } else { if (strrchr(iname, '.') != NULL) { lastext = strrchr(iname, '.') - iname - 1; } else lastext = strlen(iname) - 1 ; if (strchr(iname, '\'') != NULL) firstext = strchr(iname, '.') - iname + 1; else firstext = 0; } #endif /* IBM: MVS/XA */ #ifdef MVSXA /* IBM: MVS/XA */ for (i=firstext; i<=lastext; i++) #else for (i=0; i<=lastext; i++) #endif *nextstring++ = iname[i] ; if (iname[lastext] != '.') *nextstring++ = '.' ; #ifndef VMCMS *nextstring++ = 'p' ; *nextstring++ = 's' ; #else /* might as well keep things uppercase */ *nextstring++ = 'P' ; *nextstring++ = 'S' ; #endif *nextstring++ = 0 ; /* * Now we check the name, and `throw away' any prefix information. * This means throwing away anything before (and including) a colon * or slash. */ { char *p = NAME_BEGINS_WITH_DEVICE(oname) ? oname + 2 : oname ; for (oname=p; *p && p[1]; p++) if (IS_DIR_SEP(*p)) oname = p + 1 ; } } #ifdef DEBUG if (dd(D_PATHS)) { #ifdef SHORTINT (void)fprintf(stderr,"input file %s output file %s swmem %ld\n", #else /* ~SHORTINT */ (void)fprintf(stderr,"input file %s output file %s swmem %d\n", #endif /* ~SHORTINT */ iname, oname, swmem) ; #ifndef KPATHSEA (void)fprintf(stderr,"tfm path %s\npk path %s\n", tfmpath, pkpath) ; (void)fprintf(stderr,"fig path %s\nvf path %s\n", figpath, vfpath) ; (void)fprintf(stderr,"config path %s\nheader path %s\n", configpath, headerpath) ; #endif #ifdef FONTLIB (void)fprintf(stderr,"fli path %s\nfli names %s\n", flipath, fliname) ; #endif } /* dd(D_PATHS) */ #endif /* DEBUG */ /* * Now we try to open the dvi file. */ if (!quiet && warningmsg) error(warningmsg) ; headersready = 1 ; headerfile = (char *) (compressed? CHEADERFILE : HEADERFILE) ; (void)add_header(headerfile) ; if (*iname != 0) { fulliname = nextstring ; #ifndef IGNORE_CWD if (!IS_DIR_SEP(*iname) && !NAME_BEGINS_WITH_DEVICE(iname)) { getcwd(nextstring, MAXPATHLEN + 2); while (*nextstring++) ; #ifdef VMS /* VMS doesn't need the '/' character appended */ nextstring--; /* so just back up one byte. */ #else *(nextstring-1) = '/' ; #endif } #endif strcpy(nextstring,iname) ; while (*nextstring++) ; /* advance nextstring past iname */ } else if (filter) { dvifile = stdin ; if (O_BINARY && !isatty(fileno(stdin))) SET_BINARY(fileno(stdin)) ; } else { #ifdef KPATHSEA fprintf (stderr, "dvips: Missing DVI file argument (or -f).\n"); fprintf (stderr, "dvips: Try --help for more information.\n"); #else help(1) ; #endif exit(1) ; } if (dvifile==NULL) { error_with_perror("DVI file can't be opened:", iname); exit(1); } if (fseek(dvifile, 0L, 0) < 0) error("! DVI file must not be a pipe.") ; initcolor() ; #ifdef FONTLIB fliload(); /* read the font libaries */ #endif /* * Now we do our main work. */ swmem += fontmem ; if (maxdrift < 0) { if (actualdpi <= 599) maxdrift = actualdpi / 100 ; else if (actualdpi < 1199) maxdrift = actualdpi / 200 + 3 ; else maxdrift = actualdpi / 400 + 6 ; } if (vmaxdrift < 0) { if (vactualdpi <= 599) vmaxdrift = vactualdpi / 100 ; else if (vactualdpi < 1199) vmaxdrift = vactualdpi / 200 + 3 ; else vmaxdrift = vactualdpi / 400 + 6 ; } if (dopprescan) pprescanpages() ; prescanpages() ; #if defined MSDOS || defined OS2 || defined(ATARIST) if (mfjobfile != (FILE*)NULL) { char answer[5]; fputs("}\n",mfjobfile); fclose(mfjobfile); fputs("Exit to make missing fonts now (y/n)? ",stdout); fgets(answer,4,stdin); if (*answer=='y' || *answer=='Y') exit(8); /* exit with errorlevel 8 for emTeX dvidrv */ } #endif if (includesfonts) (void)add_header(IFONTHEADER) ; if (usesPSfonts) (void)add_header(PSFONTHEADER) ; if (usesspecial) (void)add_header(SPECIALHEADER) ; if (usescolor) /* IBM: color */ (void)add_header(COLORHEADER) ; #ifdef HPS if (HPS_FLAG) (void)add_header(HPSHEADER) ; #endif sects = sections ; totalpages *= collatedcopies ; if (sects == NULL || sects->next == NULL) { sectioncopies = collatedcopies ; collatedcopies = 1 ; } else { if (! sepfiles) multiplesects = 1 ; } totalpages *= pagecopies ; if (tryepsf) { if (paperfmt || landscape || manualfeed || collatedcopies > 1 || numcopies > 1 || cropmarks || *iname == 0 || (totalpages > 1 && !(sepfiles && maxsecsize == 1))) { error("Can't make it EPSF, sorry") ; tryepsf = 0 ; } } #ifdef HPS if (HPS_FLAG) set_bitfile("head.tmp", 0) ; #endif if (! sepfiles) { initprinter(sections) ; outbangspecials() ; } for (i=0; i STDOUTSIZE) { fprintf(stderr, "\n") ; prettycolumn = 0 ; } (void)fprintf(stderr, "(-> %s) ", oname) ; prettycolumn += strlen(oname) + 6 ; } #ifdef HPS if (HPS_FLAG) set_bitfile("head.tmp", 0) ; #endif initprinter(sects) ; outbangspecials() ; } else if (! quiet) { if (prettycolumn > STDOUTSIZE) { fprintf(stderr, "\n") ; prettycolumn = 0 ; } (void)fprintf(stderr, ". ") ; prettycolumn += 2 ; } (void)fflush(stderr) ; dosection(sects, sectioncopies) ; sects = sects->next ; if (sepfiles) { #ifdef HPS if (HPS_FLAG) finish_hps() ; #endif cleanprinter() ; } } } freememforpsnames() ; if (! sepfiles) { #ifdef HPS if (HPS_FLAG) finish_hps() ; #endif cleanprinter() ; } if (! quiet) (void)fprintf(stderr, "\n") ; #ifdef DEBUG if (dd(D_MEM)) { #ifdef SHORTINT fprintf(stderr, "Total memory allocated: %ld\n", totalalloc) ; #else fprintf(stderr, "Total memory allocated: %d\n", totalalloc) ; #endif } #endif return 0 ; /*NOTREACHED*/ } #ifdef VMS #include "[.vms]vmscli.c" #endif #ifdef VMCMS /* IBM: VM/CMS */ #include "dvipscms.h" #endif #ifdef MVSXA /* IBM: MVS/XA */ #include "dvipsmvs.h" #endif dvipsk_TexLive-2009-stripped/finclude.c0000644000175000017500000003351311372532227020040 0ustar uwabamiuwabami/* * Code for allowing fonts to be used in PostScript files given via * `psfile=...'. * * Modified to check for font usage (DocumentFonts and DocumentNeededResources) * in all included postscript files. This information is added to the * global list of postscript fonts used (ps_fonts_used). Each font is * also looked up (from psfonts.map) and if a file needs to be downloaded * for that font, it is added (with add_header). * 11/1996 Aaron Sawdey */ #include "dvips.h" /* The copyright notice in that file is included too! */ #ifdef KPATHSEA #include #else #include #if !defined(SYSV) && !defined(WIN32) extern char *strtok() ; /* some systems don't have this in strings.h */ #endif #define ISXGIGIT isxdigit #endif #ifdef VMS #define getname vms_getname #endif #ifndef STDC_HEADERS double atof(); #endif /* * These are the external routines we call. */ #include "protos.h" /* * These are the external variables we access. */ extern struct header_list *ps_fonts_used; extern char *infont ; extern fontdesctype *curfnt ; extern fontdesctype *fonthead ; extern integer fontmem ; extern fontdesctype *fonthd[MAXFONTHD] ; extern int nextfonthd ; extern char *nextstring ; extern char xdig[256] ; extern real conv ; extern integer pagecost ; extern int actualdpi ; extern double mag ; extern Boolean includesfonts ; #ifndef KPATHSEA extern char *figpath ; #endif extern int to_close ; #ifdef DEBUG extern integer debug_flag; #endif /* DEBUG */ extern char *downloadedpsnames[]; extern int unused_top_of_psnames; /* * Create a font descriptor for a font included in a psfile. There will be * no fontmaptype node for the resulting font descriptor until this font is * encountered by fontdef() (if that ever happens). */ fontdesctype * ifontdef(char *name, char *area, int scsize, int dssize, char *scname) { fontdesctype *fp; fp = newfontdesc((integer)0, scsize, dssize, name, area); fp->scalename = scname; fp->next = fonthead ; fonthead = fp ; return fp; } /* * When a font appears in an included psfile for the first time, this routine * links it into the fonthd[] array. */ void setfamily(fontdesctype *f) { int i ; fontmem -= DICTITEMCOST; for (i=0; iname, fonthd[i]->name)==0 && strcmp(f->area, fonthd[i]->area)==0) { f->nextsize = fonthd[i]; fonthd[i] = f; return; } if (nextfonthd==MAXFONTHD) error("! Too many fonts in included psfiles") ; fontmem -= NAMECOST + strlen(f->name) + strlen(f->area) ; fonthd[nextfonthd++] = f ; f->nextsize = NULL ; } /* * Convert file name s to a pair of new strings in the string pool. * The first string is the original value of nextstring; the second * string is the return value. */ char* getname(char *s) { char *a, *p, sav; a = NULL; for (p=s; *p!=0; p++) if (*p=='/') a = p+1 ; if (a==NULL) *nextstring++ = 0 ; else { sav = *a ; *a = 0 ; (void) newstring(s) ; *a = sav ; s = a ; } return newstring(s); } /* * Mark character usage in *f based on the hexadecimal bitmap found in * string s. A two-digit offset separated by a colon gives the initial * character code. We have no way of knowing how many times each character * is used or how many strings get created when showing the characters so * we just estimate two usages per character and one string per pair of * usages. */ void includechars(fontdesctype *f, char *s) { int b, c, d ; int l = strlen(s) ; while (l > 0 && (s[l-1] == '\n' || s[l-1] == '\r')) s[--l] = 0 ; if (!ISXDIGIT(s[0]) || !ISXDIGIT(s[1]) || s[2]!=':' || strspn(s+3,"0123456789ABCDEFabcdef") < l-3) { fprintf(stderr, "%s\n", s) ; error("Bad syntax in included font usage table") ; return ; } c = (xdig[(int)(s[0])] << 4) + xdig[(int)(s[1])] ; s += 2 ; while (*++s) { d = xdig[(int)*s] ; for (b=8; b!=0; b>>=1) { if ((d&b)!=0) { pagecost ++ ; (void) prescanchar(&f->chardesc[c]) ; } if (++c==256) return ; } } } /* * String p should be start after the ":" in a font declaration of the form %*FONT: <2-hex-digits>: * where the sizes are floating-point numbers in units of PostScript points * (TeX's "bp"). We update the data structures for the included font, * charge fontmem for the VM used, and add to delchar if necessary. * Note that the scaled size and the design size are multiplied by mag/1000. * This is needed for the design size to undo the similar factor in conv since * design sizes are not supposed to be affected by magnification. Applying * the magnification factor to the scaled size selects magnified fonts as is * appropriate in the normal case where the included PostScript is scaled by * mag/1000. The definition of `fshow' in finclude.lpro unscales by `DVImag' * to account for this. We cannot change the font scaled size to account for * options like `hscale=' because then the definition of `fshow' would have * to change. */ void scan1fontcomment(char *p) { char *q, *name, *area; char *scname; /* location in buffer where we got scsize */ integer scsize, dssize; fontdesctype *fptr; real DVIperBP; DVIperBP = actualdpi/(72.0*conv) * (mag/1000.0); p = strtok(p, " "); if (p==NULL) return; area = nextstring ; /* tentatively in the string pool */ name = getname(p); q = strtok((char *)0, " "); if (p==NULL || (scsize=(integer)(atof(q)*DVIperBP))==0) { fprintf(stderr, "%s\n",p); error("No scaled size for included font"); nextstring = area ; /* remove from string pool */ return; } scname = q; q = strtok((char *)0, " "); if (p==NULL || (dssize=(integer)(atof(q)*DVIperBP))==0) { fprintf(stderr, "%s\n",p); error("No design size for included font"); nextstring = area ; return; } q = strtok((char *)0, " "); fptr = matchfont(name, area, scsize, scname); if (!fptr) { fptr = ifontdef(name, area, scsize, dssize, newstring(scname)); (void) preselectfont(fptr); setfamily(fptr); } else { nextstring = area; /* remove from string pool */ (void) preselectfont(fptr); if (fptr->scalename==NULL) { fptr->scalename=newstring(scname); setfamily(fptr); } } includesfonts = 1; fptr->psflag |= THISPAGE; includechars(fptr, q); } /* * Parse the arguments to a "%%VMusage" comment. The Adobe Type 1 Font Format * book specifies two arguments. This routine will accept one or two arguments; * if there are two arguments we take the maximum. */ integer scanvm(char *p) { char* q; integer vm, vmmax; q = strtok(p, " "); if (q==NULL) { error("Missing data in VMusage comment"); return 0; } vmmax = atol(q); q = strtok((char *)0, " "); if (q!=NULL && (vm=atol(q))>vmmax) vmmax = vm; return vmmax; } /* * Scan a list of font names. * Each name is added to the list ps_fonts_used, and if it has * an associated header file (from psfonts.map), the header file * is added with add_header. */ void scan_fontnames(char *str, char *psfile) { char *p,*pe; struct resfont *re; int i; /* Turn all newlines, CRs, and tabs into spaces. */ p = str; while(*p) { if(*p == '\r' || *p == '\n' || *p == '\t') *p = ' '; p++; } /* Remove trailing spaces. */ p = str+strlen(str)-1; while(p > str && *p == ' ') { *p = '\0'; p--; } p = str; while(*p == ' ') p++; /* skip leading whitespace */ while(p && *p) { pe = strchr(p,' '); if(pe != NULL) *pe = '\0'; i = add_name(p,&ps_fonts_used); if (1) { #ifdef DEBUG if (dd(D_FONTS)) (void)fprintf(stderr, "Adding font '%s' from included postscript file '%s'.\n", p,psfile); #endif /* DEBUG */ re = findPSname(p); if(re != NULL) { if (re->sent != 2) { if (re->Fontfile) { add_header(re->Fontfile) ; } else if (re->downloadheader) { /* this code borrowed from residentfont() in resident.c */ char *cp = re->downloadheader ; char *q ; infont = re->PSname ; while (1) { q = cp ; while (*cp && *cp != ' ') cp++ ; if (*cp) { *cp = 0 ; add_header(q) ; *cp++ = ' ' ; } else { add_header(q) ; break ; } infont = 0 ; } } infont = 0 ; } re->sent = 2 ; if (unused_top_of_psnames < DOWNLOADEDPSSIZE) { downloadedpsnames[unused_top_of_psnames] = xstrdup (re->PSname); unused_top_of_psnames++; } } else { char eb[1000]; sprintf(eb,"Font %s used in file %s is not in the mapping file.", p,psfile); error(eb); } } p = pe; if(p != NULL) { p++; while(*p == ' ') p++; /* skip leading whitespace */ } } return; } /* * fc_state == 0: normal state, looking for interesting comments * fc_state == 1: looking for %%+ following %%DocumentFonts * fc_state == 2: looking for "%%+ font" following %%DocumentNeededResources */ static int fc_state = 0; /* * Do we need to check for information at the end of the postscript file? */ static int check_atend = 0; void scanfontusage(char *p, char *psfile) { if (strncmp(p, "%%DocumentFonts: ",17) == 0) { p += 17 ; while (*p && *p <= ' ') p++ ; if(!strncmp(p,"(atend)",7)) { check_atend = 1; } else { scan_fontnames(p,psfile); fc_state = 1; } } else if (strncmp(p, "%%DocumentNeededFonts: ",23)==0) { p += 23 ; while (*p && *p <= ' ') p++ ; if(!strncmp(p,"(atend)",7)) { check_atend = 1; } else { scan_fontnames(p,psfile); fc_state = 1; } } else if (fc_state == 1 && strncmp(p,"%%+",3) == 0) { scan_fontnames(p+3,psfile); fc_state = 1; } else if (strncmp(p, "%%DocumentNeededResources: ",27) == 0) { p += 27 ; while (*p && *p <= ' ') p++ ; if(!strncmp(p,"(atend)",7)) { check_atend = 1; } else { if(!strncmp(p,"font ",5)) scan_fontnames(p+5,psfile); fc_state = 2; } } else if (fc_state == 2 && strncmp(p,"%%+",3) == 0) { p += 3 ; while (*p && *p <= ' ') p++ ; if(!strncmp(p,"font ",5)) scan_fontnames(p+5,psfile); fc_state = 2; } else { fc_state = 0; } return; } /* * Scan an initial sequence of comment lines looking for font and memory * usage specifications. This does not handle the "atend" construction. */ void scanfontcomments(char *filename) { char p[500]; char *r; FILE *f; integer truecost = pagecost ; Boolean trueknown = 0 ; fontdesctype *oldcf = curfnt; #ifdef DEBUG if (dd(D_FONTS)) (void)fprintf(stderr, "Checking for fonts in '%s'\n",filename); #endif /* DEBUG */ if (*filename == '`') { /* * Allow scanning of ` commands. Better return same results both times. */ f = popen(filename+1, "r") ; to_close = USE_PCLOSE ; } else { f = search(figpath, filename, READ) ; } if (f) { (void)SET_BINARY(fileno(f)) ; fc_state = 0; check_atend = 0; while (fgets(p,500,f) && p[0]=='%' && (p[1]=='!' || p[1]=='%' || p[1]=='*')) { if (strncmp(p, "%*Font:", 7) == 0) { scan1fontcomment(p+7); } else if (strncmp(p, "%%VMusage:", 9) == 0) { truecost += scanvm(p+10) ; trueknown = 1 ; } scanfontusage(p,filename); } if (trueknown) pagecost = truecost ; if(check_atend) { #ifdef DEBUG if (dd(D_FONTS)) (void)fprintf(stderr, "Checking for (atend) fonts in '%s'\n",filename); #endif /* DEBUG */ fc_state = 0; fseek(f,-4096,2); /* seek to 4096 bytes before EOF. */ fgets(p,500,f); /* throw away a partial line. */ /* find %%Trailer */ while((r=fgets(p,500,f)) && strncmp(p,"%%Trailer",9)) ; /* look for specs that were deferred to the trailer. */ if(r != NULL) { while(fgets(p,500,f)) { if(p[0]=='%' && p[1]=='%') scanfontusage(p,filename); } } #ifdef DEBUG else { /* r == NULL */ if (dd(D_FONTS)) (void)fprintf(stderr, "Did not find %%%%Trailer in included file '%s'.\n", filename); } #endif /* DEBUG */ } close_file(f) ; } curfnt = oldcf; } /* * Is string s less than 30 characters long with no special characters * that are not allowed in PostScript commands. */ Boolean okascmd(char *ss) { register int c = 0 ; register char *s = ss ; while (*s) if (*s<' ' || *s>126 || ++c==30) return(0) ; return(strcspn(ss,"()<>[]{}%/") == c) ; } /* * Output font area and font name strings as a literal string */ void nameout(char *area, char *name) { char buf[30] ; char *s ; if (*area==0 && okascmd(name)) { (void)sprintf(buf, "/%s", name) ; cmdout(name); } else { for (s=area; *s; s++) scout(*s) ; for (s=name; *s; s++) scout(*s) ; stringend(); cmdout("cvn") ; } } /* * Output commands for defining a table of PostScript font identifiers for * fonts used in included psfiles in the current section. */ void fonttableout(void) { int i, k; fontdesctype *f; for (i=0; inextsize) if (f->psflag==EXISTS) break; if (f!=NULL) { nameout(f->area, f->name); k = 0; do { if (f->psflag==EXISTS) { cmdout(f->scalename); lfontout((int)f->psname); k++; } f = f->nextsize; } while (f!=NULL); numout((integer)k); cmdout("fstore"); } } } dvipsk_TexLive-2009-stripped/bbox.c0000644000175000017500000003001311372532227017171 0ustar uwabamiuwabami/* * Calculates the bounding box for a one-page .dvi file. * Based on a lot of other dvips stuff. Requires a total re-scan * of the page. * * If you request an EPSF file and specify -a, you may end up * processing a single page four times! */ #include "dvips.h" /* The copyright notice in that file is included too! */ #include #include "protos.h" extern char *nextstring, errbuf[] ; extern FILE *tfmfile, *dvifile ; extern fontmaptype *ffont ; extern integer firstboploc, num, den ; extern double mag ; extern integer hoff, voff ; extern Boolean noomega ; typedef struct { integer llx, lly, urx, ury ; } bbchardesctype ; typedef struct { bbchardesctype *bbchardesc ; } bbfontdesctype ; typedef struct bbtft { integer fontnum ; bbfontdesctype *desc ; struct bbtft *next ; } bbfontmaptype ; static bbfontmaptype *bbffont ; void bbtfmload(register fontdesctype *curfnt) { register integer i, j ; register integer li, cd = 0 ; integer scaledsize ; integer nw, nh, nd, ns, hd ; integer bc, ec ; integer nco = 0, ncw = 0, npc = 0, no_repeats = 0 ; integer *scaled ; integer *chardat ; int font_level; integer pretend_no_chars; integer slant = 0 ; bbchardesctype *cc ; register bbfontdesctype *bbcurfnt = (bbfontdesctype *)mymalloc(sizeof(bbfontdesctype)) ; bbffont->desc = bbcurfnt ; tfmopen(curfnt) ; /* * Next, we read the font data from the tfm file, and store it in * our own arrays. */ li = tfm16() ; if (li!=0) { font_level = -1; hd = tfm16() ; bc = tfm16() ; ec = tfm16() ; nw = tfm16() ; nh = tfm16(); nd = tfm16(); ns = tfm16() ; ns += tfm16() ; ns += tfm16() ; ns += tfm16() ; li = tfm16() ; if (hd<2 || bc>ec+1 || ec>255 || nw>256 || nh>16 || nd>16) badtfm("header") ; } else { /* In an .ofm file */ if (noomega) badtfm("length") ; font_level = tfm16(); li = tfm32() ; hd = tfm32() ; bc = tfm32() ; ec = tfm32() ; nw = tfm32() ; nh = tfm32() ; nd = tfm32(); ns = tfm32() ; ns += tfm32() ; ns += tfm32() ; ns += tfm32() ; li = tfm32() ; li = tfm32() ; if (font_level>1 || hd<2 || bc<0 || ec<0 || nw<2 || nh<1 || nd<1 || ns<1 || bc>ec+1 || ec>65535 || nw>65536 || nh>256 || nd>256) badtfm("header") ; if (font_level==1) { nco = tfm32() ; ncw = tfm32() ; npc = tfm32() ; for (i=0; i<12; i++) li=tfm32(); } } li = tfm32() ; check_checksum (li, curfnt->checksum, curfnt->name); li = tfm32() ; pretend_no_chars=ec+1; if (pretend_no_chars<256) pretend_no_chars=256; bbcurfnt->bbchardesc = (bbchardesctype *) xmalloc(pretend_no_chars*sizeof(bbchardesctype)); for (i=2; i<((font_level==1)?nco-29:hd); i++) li = tfm32() ; chardat = (integer *) xmalloc(pretend_no_chars*sizeof(integer)) ; for (i=0; i0) { no_repeats-- ; } else if (font_level>=0) { cd = tfm32() ; li = tfm32() ; if (font_level==1) { no_repeats = tfm16() ; for (j=0; j<(npc|1); j++) tfm16() ; ncw -= 3 + npc/2 ; } } else { cd = tfm16() ; li = tfm16() ; } if (cd) chardat[i] = cd ; } if (font_level==1&&ncw!=0) { sprintf(errbuf, "Table size mismatch in %s", curfnt->name) ; error(errbuf) ; } scaledsize = curfnt->scaledsize ; scaled = (integer *) xmalloc((nh + nd)*sizeof(integer)) ; for (i=0; ibbchardesc[i]) ; if (chardat[i] != -1) { halfword iw ; int ih, id ; if (font_level>=0) { iw = chardat[i] >> 16 ; ih = (chardat[i] >> 8) & 255 ; id = chardat[i] & 255 ; } else { iw = chardat[i] >> 8 ; ih = (chardat[i] >> 4) & 15 ; id = chardat[i] & 15 ; } if (iw>=nw || ih>=nh || id>=nd) badtfm("char info") ; cc->ury = scaled[ih] ; cc->lly = - scaled[nh + id] ; cc->llx = 0 ; cc->urx = curfnt->chardesc[i].TFMwidth ; } else { cc->llx = cc->lly = cc->urx = cc->ury = 0 ; } } if (slant) { for (i=0; ibbchardesc[i]) ; li = scalewidth(cc->lly, slant) ; if (slant > 0) cc->llx += li ; else cc->urx += li ; li = scalewidth(cc->ury, slant) ; if (slant > 0) cc->urx += li ; else cc->llx += li ; } } free(chardat) ; free(scaled) ; } extern struct dvistack { integer hh, vv ; integer h, v, w, x, y, z ; } stack[] ; static integer llx, lly, urx, ury ; void bbspecial(integer h, integer v, int nbytes) { float *r = bbdospecial(nbytes) ; if (r) { /* convert from magnified PostScript units back to scaled points */ real conv = 72.0 * (real)num / (real)den * (real)mag / 254000000.0 ; if (llx > h + r[0] / conv) llx = (integer) (h + r[0] / conv) ; if (lly > v - r[3] / conv) lly = (integer) (v - r[3] / conv) ; if (urx < h + r[2] / conv) urx = (integer) (h + r[2] / conv) ; if (ury < v - r[1] / conv) ury = (integer) (v - r[1] / conv) ; } } void bbdopage(void) { register shalfword cmd ; register bbchardesctype *bcd ; register chardesctype *cd ; register integer h ; register fontmaptype *cfnt ; bbfontmaptype *bbcfnt ; integer fnt ; integer mychar ; int charmove ; struct dvistack *sp = stack ; integer v, w, x, y, z ; register fontdesctype *curfnt = 0 ; register bbfontdesctype *bbcurfnt = 0 ; w = x = y = z = 0 ; h = 0 ; v = 0 ; llx = lly = 1000000000 ; urx = ury = -1000000000 ; charmove = 0 ; while (1) { switch (cmd=dvibyte()) { case 138: break ; case 134: /* put2 */ if (noomega) error("! synch") ; mychar = dvibyte() ; mychar = (mychar << 8) + dvibyte() ; charmove = 0 ; goto dochar ; case 129: /* set2 */ if (noomega) error("! synch") ; mychar = dvibyte() ; mychar = (mychar << 8) + dvibyte() ; charmove = 1; goto dochar ; case 133: /* put1 */ mychar = dvibyte() ; charmove = 0 ; goto dochar ; case 128: cmd = dvibyte() ; /* set1 command drops through to setchar */ default: /* these are commands 0 (setchar0) thru 127 (setchar127) */ mychar = cmd ; charmove = 1 ; dochar: cd = &(curfnt->chardesc[mychar]) ; bcd = &(bbcurfnt->bbchardesc[mychar]) ; if (h + bcd->llx < llx) llx = h + bcd->llx ; if (h + bcd->urx > urx) urx = h + bcd->urx ; if (v - bcd->ury < lly) lly = v - bcd->ury ; if (v - bcd->lly > ury) ury = v - bcd->lly ; if (charmove) h += cd->TFMwidth ; break ; case 130: case 131: case 135: case 136: case 139: case 247: case 248: case 249: case 250: case 251: case 252: case 253: case 254: case 255: /* unimplemented or illegal commands */ error("! synch") ; case 132: case 137: /* rules */ { integer ry, rx ; ry = signedquad() ; rx = signedquad() ; if (rx>0 && ry>0) { if (h < llx) llx = h ; if (v - ry < lly) lly = v - ry ; if (h + rx > urx) urx = h + rx ; if (v > ury) ury = v ; } else rx = 0 ; if (cmd != 137) h += rx ; break ; } case 141: /* push */ sp->h = h ; sp->v = v ; sp->w = w ; sp->x = x ; sp->y = y ; sp->z = z ; if (++sp >= &stack[STACKSIZE]) error("! Out of stack space") ; break ; case 140: /* eop or end of virtual character */ return ; case 142: /* pop */ if (--sp < stack) error("! More pops than pushes") ; h = sp->h ; v = sp->v ; w = sp->w ; x = sp->x ; y = sp->y ; z = sp->z ; break ; case 143: h += signedbyte() ; break ; case 144: h += signedpair() ; break ; case 145: h += signedtrio() ; break ; case 146: h += signedquad() ; break ; case 147: h += w ; break ; case 148: h += (w = signedbyte()) ; break ; case 149: h += (w = signedpair()) ; break ; case 150: h += (w = signedtrio()) ; break ; case 151: h += (w = signedquad()) ; break ; case 152: h += x ; break ; case 153: h += (x = signedbyte()) ; break ; case 154: h += (x = signedpair()) ; break ; case 155: h += (x = signedtrio()) ; break ; case 156: h += (x = signedquad()) ; break ; case 157: v += signedbyte() ; break ; case 158: v += signedpair() ; break ; case 159: v += signedtrio() ; break ; case 160: v += signedquad() ; break ; case 161: v += y ; break ; case 162: v += (y = signedbyte()) ; break ; case 163: v += (y = signedpair()) ; break ; case 164: v += (y = signedtrio()) ; break ; case 165: v += (y = signedquad()) ; break ; case 166: v += z ; break ; case 167: v += (z = signedbyte()) ; break ; case 168: v += (z = signedpair()) ; break ; case 169: v += (z = signedtrio()) ; break ; case 170: v += (z = signedquad()) ; break ; case 171: case 172: case 173: case 174: case 175: case 176: case 177: case 178: case 179: case 180: case 181: case 182: case 183: case 184: case 185: case 186: case 187: case 188: case 189: case 190: case 191: case 192: case 193: case 194: case 195: case 196: case 197: case 198: case 199: case 200: case 201: case 202: case 203: case 204: case 205: case 206: case 207: case 208: case 209: case 210: case 211: case 212: case 213: case 214: case 215: case 216: case 217: case 218: case 219: case 220: case 221: case 222: case 223: case 224: case 225: case 226: case 227: case 228: case 229: case 230: case 231: case 232: case 233: case 234: case 235: case 236: case 237: case 238: /* font selection commands */ if (cmd < 235) fnt = cmd - 171 ; /* fntnum0 thru fntnum63 */ else { fnt = dvibyte() ; while (cmd-- > 235) fnt = (fnt << 8) + dvibyte() ; } for (cfnt=ffont; cfnt; cfnt = cfnt->next) if (cfnt->fontnum == fnt) break ; curfnt = cfnt->desc ; for (bbcfnt=bbffont; bbcfnt; bbcfnt = bbcfnt->next) if (bbcfnt->fontnum == fnt) goto fontfound ; bbcfnt = (bbfontmaptype *)mymalloc(sizeof(bbfontmaptype)) ; bbcfnt->fontnum = fnt ; bbcfnt->next = bbffont ; bbffont = bbcfnt ; bbtfmload(curfnt) ; fontfound: bbcurfnt = bbcfnt->desc ; break ; case 243: case 244: case 245: case 246: /*fntdef1 */ skipover(cmd - 230) ; skipover(dvibyte() + dvibyte()) ; break ; case 239: bbspecial(h, v, (int)dvibyte()) ; break ; case 240: bbspecial(h, v, (int)twobytes()) ; break ; case 241: bbspecial(h, v, (int)threebytes()) ; break ; case 242: bbspecial(h, v, (int)signedquad()) ; break ; } } } void findbb(integer bop) { integer curpos = ftell(dvifile) ; real conv = 72.0 * (real)num / (real)den * (real)mag / 254000000.0 ; real off = 72.0 / conv ; real margin = 1.0 / conv ; real vsize = 792.0 / conv ; real hadj = -72.0 * hoff / 4736286.72 ; real vadj = 72.0 * voff / 4736286.72 ; fseek(dvifile, bop, 0) ; bbdopage() ; fseek(dvifile, curpos, 0) ; lly = (int) (vsize - 2 * off - lly) ; ury = (int) (vsize - 2 * off - ury) ; llx = (int)floor((llx + off - margin) * conv - hadj + 0.5) ; lly = (int)floor((lly + off + margin) * conv - vadj + 0.5) ; urx = (int)floor((urx + off + margin) * conv - hadj + 0.5) ; ury = (int)floor((ury + off - margin) * conv - vadj + 0.5) ; /* no marks on the page? */ if (llx >= urx || lly <= ury) llx = lly = urx = ury = 72 ; #ifdef SHORTINT sprintf(nextstring, "%ld %ld %ld %ld", llx, ury, urx, lly) ; #else sprintf(nextstring, "%d %d %d %d", llx, ury, urx, lly) ; #endif } dvipsk_TexLive-2009-stripped/testdata/0000755000175000017500000000000011372532227017707 5ustar uwabamiuwabamidvipsk_TexLive-2009-stripped/testdata/ptmbi8r.tfm0000644000175000017500000001060011372532227022001 0ustar uwabamiuwabami`ÿ,À[^' TEXBASE1ENCODING UNSPECIFIED°ÏÏʨÁ¬À&Ê4.ÐÀ|Fà Ë\À”zÀÂ. Ê: ÀT ÛÊÊÃ;ÎΠŀ>CGF:HÊŒ Ê À À Ê À Ê Ê À< Ê Êz~ŠJhŠK ÊLÊÀMÀhÊÀtÀÀ€ÊÀ, À( Ë9ŽÀ]›À¦ÊHÊA®ÊµÀ ÃÏÏÀÔÊÀeæÊ1%Êq$Êy#ÀDÀq"ÀÍLÊÍÄ Ã! z Ê z Ê( zÏ¡ ÊÊÏ ÊÊ zz z   p zª z zz z  {ΜÊÎW> Í` >: Í ÌÀXÊêiÊ Ã$ Ã$ ‡ GG°Å Êtizàq ¬ Ê ©@ À¤Ê ̰ŒÊÂŒ ih@ʰ„ €Å$Å,Àh Έe/ÅÂl iÊÊÊ ððààà ð ÀÏððàà ð( ð4 àP à€Àê@ú ú ê êê‰Üú1ú1ê1ê1ðqÀ Ï Ê Ê Ê º º Úz  Ê Ê Ê ºÊÊÊlº˜ ʺ Ê Ê Ê º ºš œÊÊʺ Ï Ï ¿¬…A€r¦ÌÍSô‘f™š9Nffšá@åZ ³ 7@ ²' Ƨ ¬ M ó³ r¦ OÚ Sô9NšÿþÌÍdS&ç‡&Sôƒ Iº³ \ 9S  ñ¡m™“ÿ÷¾€ÿùŸÀÿúšÿû"ÙÿûÐæÿü§óÿý?‡ÿþG³ÿÿ™ KÀl†n“íX  ' ?§$Ú(ô- 1'53E™VZ^3bMffjsnr¦vÀ~ô‡'‹@Z—Ÿ´¼fÀ€ÄšÌÍÐÚÝ'åZõÁýô/?rOÚhfÎÍ ?ƒ £Íþ¾þ¦þŸþ˜þ‘þŠþ|þnþ`þRþDþ6þþþåþÊþ¯þ”þ’þzþxþvþuþpþlþjþfþeþcþZþYþWþTþRþ:þ!þþy€'€Y€W€V€T€Ÿ€€Ý€Y€W€V€A€Ÿ€À€Á€Â€Ã€Ä€Å€€Ý€€`¡'”v€t€ €s€r€'€€d€,„'€€”€-–€­–'€€”€€<«€>»€`¿y€w€v€u€'€Y€W€V€U€ T€Q€O€ G€ C€ Ÿ€Ç€ Ò€ Ó€ Ô€ Õ€ Ö€ Ø€ Ù€ Ú€ Û€ Ü€ €Ý€U€ A€ À€ Á€ € À Ä€ Å€ Ù€ Ú€ Û€ €Ü€ Y€ W€V€ A€ Ÿ€ À€ Á€ € À Ä€ Å€ €Ý€ r€ .€o€i€e€,€a€A€À€Á€€ÀÄ€€Å€u€.€ o€e€,€ a€A€ À€ Á€ € À Ä€ €Å€ y€u€o€ e€ O€Ò€Ó€Ô€Õ€Ö€€Ø€y€'€Y€W€V€T€Ÿ€€Ý€A€À€Á€€ÀÄ€€Å€Y€ X€W€ V€ T€A€Ÿ€ À€Á€€ÀĀŀ€Ý€ .€o€e€ ,€a€A€À€Á€€ÀÄ€€Å€U€ Ù€ Ú€ Û€ €Ü€ Y€W€V€U€T€O€Ÿ€Ò€Ó€Ô€Õ€Ö€Ø€Ù€Ú€Û€Ü€€Ý€y€w€u€;€r€.€o€i€-€e€,€:€a€O€A€À€Á€€ÀĀŀҀӀԀՀր€Ø€A€À€Á€€ÀÄ€€Å€u€;€.€o€i€-€e€,€:€a€O€G€ A€À€Á€€ÀĀŀҀӀԀՀր€Ø€y€u€;€.€o€i€-€ e€,€:€a€O€A€À€Á€€ÀĀŀҀӀԀՀր€Ø€u€;€.€o€i€-€e€,€:€a€O€ A€À€Á€€ÀĀŀҀ Ó€ Ô€ Õ€ Ö€ €Ø€ `“€`€u€.€€b€ k€ €h€ €b€ il'€.€ o€ f€e€ €€,€ o€ €e€€v€y€ x€ w€ €v€.€ €,€ .€o€e€€,€.€o€e€ ,€€a€ €e€ .€€,€-—€­—u€;€.€o€i€-€e€,€:€a€O€ A€À€Á€€ÀĀŀҀ Ó€ Ô€ Õ€ Ö€ €Ø€ -–€­–y€w€v€u€'€Y€W€V€U€ T€Q€O€ G€ C€ Ÿ€Ç€ Ò€ Ó€ Ô€ Õ€ Ö€ Ø€ Ù€ Ú€ Û€ Ü€ €Ý€y€w€v€u€'€Y€W€V€U€ T€Q€O€ G€ C€ Ÿ€Ç€ Ò€ Ó€ Ô€ Õ€ Ö€ Ø€ Ù€ Ú€ Û€ Ü€ €Ý€y€w€v€u€'€Y€W€V€U€ T€Q€O€ G€ C€ Ÿ€Ç€ Ò€ Ó€ Ô€ Õ€ Ö€ Ø€ Ù€ Ú€ Û€ Ü€ €Ý€y€w€v€u€'€Y€W€V€U€ T€Q€O€ G€ C€ Ÿ€Ç€ Ò€ Ó€ Ô€ Õ€ Ö€ Ø€ Ù€ Ú€ Û€ Ü€ €Ý€y€w€v€u€'€Y€W€V€U€ T€Q€O€ G€ C€ Ÿ€Ç€ Ò€ Ó€ Ô€ Õ€ Ö€ Ø€ Ù€ Ú€ Û€ Ü€ €Ý€y€w€v€u€'€Y€W€V€U€ T€Q€O€ G€ C€ Ÿ€Ç€ Ò€ Ó€ Ô€ Õ€ Ö€ Ø€ Ù€ Ú€ Û€ Ü€ €Ý€Y€ X€W€ V€ T€A€Ÿ€ À€Á€€ÀĀŀ€Ý€ Y€ X€W€ V€ T€A€Ÿ€ À€Á€€ÀĀŀ€Ý€ Y€ X€W€ V€ T€A€Ÿ€ À€Á€€ÀĀŀ€Ý€ Y€ X€W€ V€ T€A€Ÿ€ À€Á€€ÀĀŀ€Ý€ Y€ X€W€ V€ T€A€Ÿ€ À€Á€€ÀĀŀ€Ý€ Y€ X€W€ V€ T€A€Ÿ€ À€Á€€ÀĀŀ€Ý€ A€À€Á€€ÀÄ€€Å€A€À€Á€€ÀÄ€€Å€A€À€Á€€ÀÄ€€Å€A€À€Á€€ÀÄ€€Å€u€;€.€o€i€-€e€,€:€a€O€ A€À€Á€€ÀĀŀҀ Ó€ Ô€ Õ€ Ö€ €Ø€ k€ €h€ ÿÿhsÿÿÀÿÿ¶MÿþáMÿÿšÿþÐæÿþzæÿÿ…&ÿþffÿÿ33ÿÿ ?ÿþõÍÿÿ× ÿÿ™šÿÿ\3ÿýï¦ÿÿ®ÿþ£Ùÿþ‡3ÿÿG³ÿþ9Yÿþ¸Yÿþgá@E¢ffõÁdZõÁdvipsk_TexLive-2009-stripped/testdata/pfbincl.xdv0000644000175000017500000000140011372532227022042 0ustar uwabamiuwabami÷ƒ’À;è TeX output 2009.05.28:1334‹ÿÿÿÿ y ý£ ? ýä‘MóKñ`y cmr10²A‘îa–ÿa“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“aޤ ‘>a–`a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“aŽ¡‘>a–"3a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a.‘`¼A‘"'a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“aŽ C)™‘>ï=PSfile="pfbincl.eps" llx=1 lly=-186 urx=347 ury=124 rwi=3460 ŽŽŽŸ‘>a–Jìa“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“aŽ¡‘>a–9”a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a.ŽŽŸ’è1ŽŽŒø*ƒ’À;èy—óKñ`y cmr10ùÁßßßßßßßdvipsk_TexLive-2009-stripped/testdata/texps.pro0000644000175000017500000000117111372532227021574 0ustar uwabamiuwabami%! 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]/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[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{/Encoding exch def}def end dvipsk_TexLive-2009-stripped/testdata/ptmr.vf0000644000175000017500000000322011372532227021223 0ustar uwabamiuwabami÷ÊœCreated by afm2tfm /export/disk05/tex_play/texlive/share/texmf/fonts/afm/adobe/times/ptmr8a.afm -u -p 8r.enc -t dvips.enc -v ptmr.vpl, then edited for Greek¼˜s ó ptmr8ró psyr ¥ã¬G ÊÁ¬D Û#¬Q ùÛ¬L Qì¬X Iº¬P xÕ¬S ë…¬€¡ 5?¬F ¸R¬Y Iº¬W ¥ã¬€­ ¥ã¬€¯ áHSø€¡ €¿r°SøSø€´SøSø Sø€¯Sø Sø€¸€ß ¬€æ P€œ€ø9X€Æ9X€Œ P€Ø  !Sø!"‡+"##$$% Sø%& r°&'Sø'(Sø()Sø)**+ %+,,-Sø€­../r°/00112233445566778899:r°:;r°;< %<= %=> %>? ?@¼j@A PAB ¬BC ¬CD PDE ƨEFå`FG PGH PHISøIJ9XJK PKL ƨLM9XMN PNO POPå`PQ PQR ¬RSå`ST ƨTU PUV PVW WX PXY PYZ ƨZ[Sø[\r°\]Sø]^Sø€ˆ__`Sø`a abbc cdde efSøfgghhir°ijr°jkklr°lm r°mnnooppqqrSørs9Xstr°tuuvvw Pwxxyyz z{®{|33|}®}~Sø€˜Sø€¨€^§ð~‚ ¬€ÇƒSø€Í„Sø€Î… €ã† €ë‡ €èˆ9X€š‰ Š P€Ð’å`€Š˜ P€Ÿ𠯍¢€¢£€£¤¬¥€¥¦€ƒ§€§¨€¤© (ö€©ª €“«€«¬Sø€‹­Sø€›®å`¯å`°ff€°±€–²€†³€‡´€·¶?}€¶·™š€•¸Sø€‚¹ €„º €”»€»¼€…½€‰À P€ÀÁ P€Á P€Âà P€ÃÄ P€ÄÅ P€ÅÇSøÈ ƨ€ÈÉ Æ¨€ÉÊ Æ¨€ÊË Æ¨€ËÌSø€ÌÍSøÎSøÏSø€ÏЀ—Ñ P€ÑÒ P€ÒÓ P€ÓÔ P€ÔÕ P€ÕÖ P€ÖÙ P€ÙÚ P€ÚÛ P€ÛÜ P€ÜÝ P€ÝÞå`€Þà €àá €áâ €âãj€ªä €äå €åç €çè Æ¨é €éê €êëõÀºìr°€ìír°€íîr°€îïr°€ïñ€ñò€òó€óô€ôõ€õö€öør°ù€ùú€úû€ûü€üý€ýþ€þÿ€ÿøøødvipsk_TexLive-2009-stripped/testdata/psfonts.map0000644000175000017500000000572711372532227022115 0ustar uwabamiuwabamicmb10 CMB10 ¸>??@ Oß@A ¬AB ¬BC ¬CD PDE ¬EF ¬FG PGH r°HI9XIJJK ¬KL ƨLM9XMN PNO POP ƨPQ PQR ¬RSå`ST ƨTU PUV ¬VW9XWX ¬XY ƨYZ ƨZ[Sø[\r°\]Sø]^Sø€ˆ__`Sø`aabbc cdde efSøfgghå`hir°ijr°jkklr°lm r°mnå`nooppqqr9Xrs9Xstr°tuå`uv vw ¬wxxy yz9Xz{‘h{|…|}‘h}~Sø€˜Sø€¨€ ¸^ ¸~‚ ¬€Çƒ9X€Í„9X€Î…€ã† €ë‡ €èˆ9X€š‰9XŠ P€Ð’å`€Š˜ ƨ€Ÿ𠯍¢€¢£€£¤¬¥€¥¦€ƒ§€§¨€¤© 󶀩ª€“«€«¬Sø€‹­Sø€›®å`¯å`°ff€°±€–²€†³€‡´€·¶€¶·™š€•¸Sø€‚¹€„º€”»€»¼€…½€‰À ¬€ÀÁ ¬€Á ¬€Âà ¬€ÃÄ ¬€ÄÅ ¬€ÅÇSøÈ ¬€ÈÉ ¬€ÉÊ ¬€ÊË ¬€ËÌ9X€ÌÍSøÎSøÏ9X€ÏЀ—Ñ P€ÑÒ P€ÒÓ P€ÓÔ P€ÔÕ P€ÕÖ P€ÖÙ P€ÙÚ P€ÚÛ P€ÛÜ P€ÜÝ Æ¨€ÝÞ Æ¨€Þà€àá€áâ€âãA‰€ªä€äå€åç €çè Æ¨é €éê €êëÌÍ€ºìr°€ìír°€íîr°€îïr°€ïñå`€ñò€òó€óô€ôõ€õö€öør°ùå`€ùúå`€úûå`€ûüå`€üý €ýþ€þÿ €ÿødvipsk_TexLive-2009-stripped/testdata/pfbincl.tex0000644000175000017500000000135311372532227022050 0ustar uwabamiuwabami% this test is from David Jones, see 2008-05-07 ChangeLog entry. % The bug was an eps file that includes a pfb font, i.e., arbitrary bytes. % We don't want to strip out CTRL-D, etc. \documentclass{article} \usepackage{graphicx} \begin{document} A a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a. \begin{figure}[h] \includegraphics{pfbincl.eps} \end{figure} A a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a. \end{document} dvipsk_TexLive-2009-stripped/testdata/dvipstst.xps0000644000175000017500000120140711372532227022330 0ustar uwabamiuwabami%!PS-Adobe-2.0 %%Creator: dvips(k) 5.97 Copyright 2008 Radical Eye Software %%Title: ./testdata/dvipstst.xdv %%CreationDate: Thu May 28 15:21:11 2009 %%Pages: 1 %%PageOrder: Ascend %%BoundingBox: 0 0 596 842 %%DocumentFonts: Times-Roman Times-Italic CMEX10 CMMI10 CMR10 CMSY10 %%+ CMTT10 Times-BoldItalic %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: ./dvips -D 300 %+ ./testdata/dvipstst.xdv -o %DVIPSParameters: dpi=300, compressed %DVIPSSource: TeX output 1998.01.01:1040 %%BeginProcSet: texc.pro 0 0 %! /TeXDict 300 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}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{dup dup 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 /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 sub]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N /cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add /gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{ dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1 adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2 idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg} {adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{ adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]dup{bind pop}forall N /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 /V matrix currentmatrix dup 1 get dup mul exch 0 get dup 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 /IE 256 array N 2 string 0 1 255{IE S dup 360 add 36 4 index cvrs cvn put}for pop 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V{}B /RV statusdict begin /product where{pop false[ (Display)(NeXT)(LaserWriter 16/600)]{dup length product length le{dup 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 rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg rlineto rulex neg 0 rlineto fill grestore}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{SS restore}B end %%EndProcSet %%BeginProcSet: 8r.enc 0 0 % @@psencodingfile@{ % author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry", % version = "0.6", % date = "1 July 1998", % filename = "8r.enc", % email = "tex-fonts@@tug.org", % docstring = "Encoding for TrueType or Type 1 fonts % to be used with TeX." % @} % % Idea is to have all the characters normally included in Type 1 fonts % available for typesetting. This is effectively the characters in Adobe % Standard Encoding + ISO Latin 1 + extra characters from Lucida. % % Character code assignments were made as follows: % % (1) the Windows ANSI characters are almost all in their Windows ANSI % positions, because some Windows users cannot easily reencode the % fonts, and it makes no difference on other systems. The only Windows % ANSI characters not available are those that make no sense for % typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen % (173). quotesingle and grave are moved just because it's such an % irritation not having them in TeX positions. % % (2) Remaining characters are assigned arbitrarily to the lower part % of the range, avoiding 0, 10 and 13 in case we meet dumb software. % % (3) Y&Y Lucida Bright includes some extra text characters; in the % hopes that other PostScript fonts, perhaps created for public % consumption, will include them, they are included starting at 0x12. % % (4) Remaining positions left undefined are for use in (hopefully) % upward-compatible revisions, if someday more characters are generally % available. % % (5) hyphen appears twice for compatibility with both % ASCII and Windows. % /TeXBase1Encoding [ % 0x00 (encoded characters from Adobe Standard not in Windows 3.1) /.notdef /dotaccent /fi /fl /fraction /hungarumlaut /Lslash /lslash /ogonek /ring /.notdef /breve /minus /.notdef % These are the only two remaining unencoded characters, so may as % well include them. /Zcaron /zcaron % 0x10 /caron /dotlessi % (unusual TeX characters available in, e.g., Lucida Bright) /dotlessj /ff /ffi /ffl /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef % very contentious; it's so painful not having quoteleft and quoteright % at 96 and 145 that we move the things normally found there to here. /grave /quotesingle % 0x20 (ASCII begins) /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash % 0x30 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question % 0x40 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore % 0x60 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o % 0x70 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef % rubout; ASCII ends % 0x80 /.notdef /.notdef /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /circumflex /perthousand /Scaron /guilsinglleft /OE /.notdef /.notdef /.notdef % 0x90 /.notdef /.notdef /.notdef /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /scaron /guilsinglright /oe /.notdef /.notdef /Ydieresis % 0xA0 /.notdef % nobreakspace /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen % Y&Y (also at 45); Windows' softhyphen /registered /macron % 0xD0 /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown % 0xC0 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis % 0xD0 /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls % 0xE0 /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis % 0xF0 /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def %%EndProcSet %%BeginProcSet: cmex10.pfb 0 0 %!PS-AdobeFont-1.1: CMEX10 1.00 %%CreationDate: 1992 Jul 23 21:22:48 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMEX10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMEX10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 161 /parenleftbig put dup 162 /parenrightbig put dup 163 /bracketleftbig put dup 164 /bracketrightbig put dup 165 /floorleftbig put dup 166 /floorrightbig put dup 167 /ceilingleftbig put dup 168 /ceilingrightbig put dup 169 /braceleftbig put dup 170 /bracerightbig put dup 173 /angbracketleftbig put dup 174 /angbracketrightbig put dup 175 /vextendsingle put dup 176 /vextenddouble put dup 177 /slashbig put dup 178 /backslashbig put dup 179 /parenleftBig put dup 180 /parenrightBig put dup 181 /parenleftbigg put dup 182 /parenrightbigg put dup 183 /bracketleftbigg put dup 184 /bracketrightbigg put dup 185 /floorleftbigg put dup 186 /floorrightbigg put dup 187 /ceilingleftbigg put dup 188 /ceilingrightbigg put dup 189 /braceleftbigg put dup 190 /bracerightbigg put dup 191 /angbracketleftbigg put dup 192 /angbracketrightbigg put dup 193 /slashbigg put dup 194 /backslashbigg put dup 195 /parenleftBigg put dup 196 /arrowdblbt put dup 0 /parenleftbig put dup 1 /parenrightbig put dup 2 /bracketleftbig put dup 3 /bracketrightbig put dup 4 /floorleftbig put dup 5 /floorrightbig put dup 6 /ceilingleftbig put dup 7 /ceilingrightbig put dup 8 /braceleftbig put dup 9 /bracerightbig put dup 10 /angbracketleftbig put dup 11 /angbracketrightbig put dup 12 /vextendsingle put dup 13 /vextenddouble put dup 14 /slashbig put dup 15 /backslashbig put dup 16 /parenleftBig put dup 17 /parenrightBig put dup 18 /parenleftbigg put dup 19 /parenrightbigg put dup 20 /bracketleftbigg put dup 21 /bracketrightbigg put dup 22 /floorleftbigg put dup 23 /floorrightbigg put dup 24 /ceilingleftbigg put dup 25 /ceilingrightbigg put dup 26 /braceleftbigg put dup 27 /bracerightbigg put dup 28 /angbracketleftbigg put dup 29 /angbracketrightbigg put dup 30 /slashbigg put dup 31 /backslashbigg put dup 32 /parenleftBigg put dup 33 /parenrightBigg put dup 34 /bracketleftBigg put dup 35 /bracketrightBigg put dup 36 /floorleftBigg put dup 37 /floorrightBigg put dup 38 /ceilingleftBigg put dup 39 /ceilingrightBigg put dup 40 /braceleftBigg put dup 41 /bracerightBigg put dup 42 /angbracketleftBigg put dup 43 /angbracketrightBigg put dup 44 /slashBigg put dup 45 /backslashBigg put dup 46 /slashBig put dup 47 /backslashBig put dup 48 /parenlefttp put dup 49 /parenrighttp put dup 50 /bracketlefttp put dup 51 /bracketrighttp put dup 52 /bracketleftbt put dup 53 /bracketrightbt put dup 54 /bracketleftex put dup 55 /bracketrightex put dup 56 /bracelefttp put dup 57 /bracerighttp put dup 58 /braceleftbt put dup 59 /bracerightbt put dup 60 /braceleftmid put dup 61 /bracerightmid put dup 62 /braceex put dup 63 /arrowvertex put dup 64 /parenleftbt put dup 65 /parenrightbt put dup 66 /parenleftex put dup 67 /parenrightex put dup 68 /angbracketleftBig put dup 69 /angbracketrightBig put dup 70 /unionsqtext put dup 71 /unionsqdisplay put dup 72 /contintegraltext put dup 73 /contintegraldisplay put dup 74 /circledottext put dup 75 /circledotdisplay put dup 76 /circleplustext put dup 77 /circleplusdisplay put dup 78 /circlemultiplytext put dup 79 /circlemultiplydisplay put dup 80 /summationtext put dup 81 /producttext put dup 82 /integraltext put dup 83 /uniontext put dup 84 /intersectiontext put dup 85 /unionmultitext put dup 86 /logicalandtext put dup 87 /logicalortext put dup 88 /summationdisplay put dup 89 /productdisplay put dup 90 /integraldisplay put dup 91 /uniondisplay put dup 92 /intersectiondisplay put dup 93 /unionmultidisplay put dup 94 /logicalanddisplay put dup 95 /logicalordisplay put dup 96 /coproducttext put dup 97 /coproductdisplay put dup 98 /hatwide put dup 99 /hatwider put dup 100 /hatwidest put dup 101 /tildewide put dup 102 /tildewider put dup 103 /tildewidest put dup 104 /bracketleftBig put dup 105 /bracketrightBig put dup 106 /floorleftBig put dup 107 /floorrightBig put dup 108 /ceilingleftBig put dup 109 /ceilingrightBig put dup 110 /braceleftBig put dup 111 /bracerightBig put dup 112 /radicalbig put dup 113 /radicalBig put dup 114 /radicalbigg put dup 115 /radicalBigg put dup 116 /radicalbt put dup 117 /radicalvertex put dup 118 /radicaltp put dup 119 /arrowvertexdbl put dup 120 /arrowtp put dup 121 /arrowbt put dup 122 /bracehtipdownleft put dup 123 /bracehtipdownright put dup 124 /bracehtipupleft put dup 125 /bracehtipupright put dup 126 /arrowdbltp put dup 127 /arrowdblbt put dup 128 /parenleftBigg put dup 160 /space put readonly def /FontBBox{-24 -2960 1454 772}readonly def /UniqueID 5000774 def currentdict end currentfile eexec 80347982AB3942D930E069A70D0D48311D7190FA2D133A583138F76695558E7AE9348D37CAC6 651806D08527C1BB4A062A4835AC37784CC39AD8841404E438B4D52D3901E47A1DE4F7924E0F B3DAF442499175BAB1226EDF692A4956739F8828E80592F450C5D5C22AC88BCFBE9748F61D18 243A16F4A4467F084E8E2BE46EF47FC51C3A8199E3CDA62FF9C4FB73956DAB8B6683D2156377 808CB35026073E80523F59A30D195FCF9B9FCE4FFAFC6D5649664203AB24ACB938D58D246707 FFE7D62F04BEC4B70C21EF75BEB2B812622B3C74E969D72D3CD11BD7106294A99CAF0B1629BC 7D4DE6B96CA82930831D64575F23F4AD06A0E45E315B1D392411BE8D6D73C998789FF258A07A 3C8C2057325784514C845500BFD1A971310CFC11D41C1A167DBD5FF012C60ADD4E87325F6E52 99032A839DE65FB1473A166AAE1876A4414A434F22C1D241591FB36F857DF6FA930608750FFC 0C54F44994662B1F00F1400BF752EA8D83FFC4CB77A290BC2D99981AE59A191748BA5C7BA1A9 D2583FD21398452B6FF5D83A059F7EADCD2EF744E9DD22BDF9C79D049BF06835E878C32B7765 C69BDD8EF4DEB4EA7CFFF4CF9354A4DDFFA689DE961D16772491C7AFBD7FFFDE42400764C68E 954EE5C455A5687959829BC3B319B2147DEAAB3628662C8030C5E02FEA09609ABE4EAA12E217 BC3AF673F1BC36A7039EB13FCACB4218FE0FC5A3F9452D4EDF46CC91DB67B624D4F2D37502FB 9F11AF4DA18CA40B61097F95D44329375467ED13C5CB585EC53F62B83EF9502CC755AF44BF32 B87B8AE9F3F2F8DBF72DAB90ACAFBACD280DB6AAFFAEFDFF6D5EFF26669BAC56280A950560E3 D01714BA38659B0E4E28BF8CDC1F15FF7E3EA9D95A6AFBBE3D8E6905AA6D531D6B6DCAB89E20 36CC492C65F76DDCC3CFCFF33FDE3D9FFD10F7A90530FD5D04F12CECE01D9E3B7784FCB4AC99 71D125317E4D6DAF1ED113C795C56C6F57465A10859341F41089169420DFEBAEA770C4FDE4CC 11ACBED014A3E2EB6CED1694EF30BFEC4F805C6423283D2444975F5F62AC48B88111EE5C79A7 6A4E64AB2F9488DBE6E21DC00BCA4304C3DBD06FA60DB4DD88E26870B08BD880B67D6ACE131B 559CBF999E98F3196A47320BC412DEB6C6CA990485CD34B69ACFC6F2A2B534D17FC5C68F1416 7B3CDD7BB801D960C04043511A268040ABEACC65A28634EDE6B4E209FA3AA93A632CFE1D5A57 665B3085F9E2CB8AC141E2220AE1799768777D096B6795B177820DD3AFF63FFF0A80341F473E 1455868EBD9D97AC9DCB3BE4B7AB4E0F3D5411E0A90C9997741FCFFC8C3DA19BCAD2BFF0CF17 2814D4864D4C5D456FB5121F0431754907A704D2BF711CE4F2456FAE5F0E602AA29334DCCEB9 02CF1709B53F918BA5F066948694F2CE9F150439F0872E3E1BC2CBDBA9E05D99AA6C0F6ADBF0 097EC658F2803D63D020FB3DDF1F3ED08235FBA9C110EEEC014D81ED6608F58889A40E3C3A7F 93BB13FE3D88795BCD841498C6422CDB307C376457776A8249502626CA0E1A3E48B8A45E77EC 0551347D0A5D51EC0F39A8C2BB330F4B76F3B4D3883606472F29041C1B7BF2CD8620F4E9A5A4 EAE0B60091CB21E30470CB0219C96B8E66AF03B6744E1DB4FF453E38BF1BCDF3F0DBCF5EBE04 7B84AB96CF851AB13C8942EEA52AF99324C6E5088F8DE6C30B385E624F4534AB603A3127D708 DF8879B3D15869B777300E3B1B024F79ECE64A860DFF0EC8D0CC8D28A79A339F99AAFE9FD775 98A37A01A54994E92AE0D20050CB9DCAE953B6D2B3D6FE9D26FDB3CEC0A6F9060E356503E3DC D1984772CDFDDD8C020349BD04380BA9508546B281F116F67372B0C73798C5EC98FDB9346F03 9B663ED52D97E678F9D1C177C35A93833BDDE68C0BE730B565B34903448914418AE29780F437 EFE69F259FCC78F9C5705EC781FD699DAC1831CBEA3ABFB9D0189B8A45E79A539CE16A34FCCF 16B5DF776D5B2AFE24DB54949A23792C1A0BF0E741477928ADD22F2B5566FCB82BBC0CA9BBD5 BC03D6E8901D01652C4782A3803F8042EECBADC97142DC63ACF1A92BB10400116A6D2320447C 07BAAF4D8B69ED93E7E1BAEF4BEF80544B94463073D584490849EE9DC9B726D60E2A80EC6D8A 9B28984277FEE75C0231F0E5A6FF9D3193243A15AEC9C04E98401881EF0C94942F68CE4A0121 EF50DDD3950015F28E40FE2FAC789EA0982982EBE270DA274CE9A0C88415A68E610807633374 6D099B85E94F3B7E8F59379A99CA7980548B3A8EA7ED739A988971E778C0FFFB4A843DF0D98A 56F326C650A94DAA94228083216F89D47AB514C6CE1CFD7B7CB9CDD2BBA61E41B414197843AD 1FECFA306B3E1E4B866F8F98D8DB93A63E7C6C7149EE3CDFE0E0FE0D0CE35A7568B90CD2A30A 8D53C95B678F0A739F27856BFA8E4A7D50B942ACE78189E476379FC3A86478C34048DD44E8AF 60D1099886E485A0BF74638BB3FC929106BDB7C4EAC624F75CF273B38A2909311FD6B6A98F4C B426A4610DB5A316F1AB1332E840DDA030047CC203CB1030CC9A3B7550CBF46163ADD6C62AD8 DC9CC792DB6C8D45C8A71E60C0170F0DBBA5D60EC88B7B1047015B37A2769F96C8738C215D6D 5BCFCC9EB5884E01C00191067BE0194B994034BADA4BF8CDDBAE88BF9FB7F09420CC50D248F2 9459574B8857E3A8C22E3113B22D282957AE02BF5DA8D363E012CDBF915BA5215832449F261F 7C4D4FDAB7C17C2758CBFD5300F3137CD72FB2C967D473B2683628BE64938788E646D945F11E CD20FA16A9CDE65DD08D2C59B2C5D13D1148BF9F6F78F0243B455BC43D8893CF1A756B60FF5B 5528354C8BF1CE8F81C142E762BB6AD54AF2BCBEFB67B75BB822C3B53A92F45AD494C62A0480 22E4AF0A3158857BAD671F0F49B51301151D3EBC1C9BA6DDAA408B4F923DA1DF1CDBC451393A FD47B4201ACE732B74CD0079C67A8E29B02175044EA6A643890CD60C45BBFE15963AF3818077 EE34EF93F357E77B4748F3195745EC632B359510A528399C8749882FBDBEAB684FBE22307353 3E428C28D7C6A20C0C1F805F350230E549B2F8E8A8E9EF89EFC7C71BCDE2934CFCB8A04A17FF BB92732DC202F5B3FFEA1EFD96B4707D1D51F6579F86BD348AD46E233869B725EB4CC76191A7 A82264BA610C293C3D37714C42166EA68EB5205FFD4DAF30AD23AB140D01F66F56A320ACDA94 339A653255FF06365D97BF5AEAF769034D36B9DA6044579779DAAAB309204172F69446413CD7 912A19898C23487AC3B994BEA258203F894D89BFA826D744FD8B31EB2C75CEDFDAE2E899FFD0 50D36AB3A63597D19CBC208847DF2AFCB05C29477FD20244511884AC9CECEAEE6C6BD8554A55 0E7186524F967839E05EEEA9A4065C39C864A5D697B7B88FE47F50844FCA93A63787426D186F 3CFFE14BA7E4607B65CD8CD03B57341FE369A3FD370303D0338B26506BF0BEFDA0C6FF84BB2D 0AA65BAC14B189003388F0FBEFA62C9588D1454133F1CDE8CDEC574FFF094D7F4E3D5AC225E0 B9B00A61B8D667171BB19FFB38121239073334448626D20AC4FDB1BBF6D314D5E034A4EB0EB9 C26B1604683B18D7E328F6E1B967146EFEF1A9A4172ECF0238BA7DF28E42D01ABCEFD3BD0B06 DD1FD4CBFD4FA91F06E437FBF0497810E816E7E1482F9F9B42F0B0BD8225C87C6F366D3BA0A7 80CA78EF6915F537DFABFB7105F2D4E26E34CED31B3E7340404751202BAC85A39D9FA283417B 682D37CECBFC4C4E20B4D494332003B1FB913942040340B03FC0721722C39CA4623BA384A3FB 003441641A8C6F39FA9C07C830693D15200DB67722029A76E28DE8EFEC1B1D6C043A9BD4D7FA D0731A087A4A2AC3B78B07A464BC374A67A220F0D08A9DE5411C698A2DFEB1889067CBC83BB5 5EECD734B253D7134E3A0D7C5625E0C2205F5B86B67B237DAD8D47D297AFC42598842EE341DA B855828CA1AD4BF332657CE9D18832328B9FB81C9B4843FDE4D63C2C3B06BFB57032C30BE07A BED913D7CDB8C4FB359543D39705A5BF55F8DF6268CB2528805172581204111D71C00DA14275 776D95E0FC612687A33EAD514C267AA0F90BA9A2962D10FF3FC8BA694372266350E8E7E58387 97D6CEF8561F116CAB2A9DE2CAE98C5AF5AE04667E763F7BBA244F6CFB71DDCD18F69461BAEA 70EBF2B3A8E2AF95DE0A573CB3470BA4A8981B269E12D3F9E4D2B9A272E2E7BA968283455A85 D9C6B4B0A3EF125ADEC61BD8EAF92E008FD91E88B578D48415BE071276A1C3545A70A1B3879B A4554D7E63110EF362972E5CD986D19EEEC5585333D99F72A91449BA61A14ADC3A08577FCE70 6C702333DA1ADF26826C4F4AB734014F7B78735F8851D0B08660DD63D8EAD834D2C49900EBCD 0E16EE67F6D499337046A47624ECEB8F285944C477F253CD65E29B581A9B86886385DF1B68F4 62520D04DBB5DA7389A1EC090EC908A2D90BD0E19999AD9607E3A90374DDAD1CEEC4DAC6EE43 A80B097AD9069C46BD657B6D0EF9ECBB7B0BBEEB66C344620E661EFDDAC45FD823F55B5EFC3E 531E4D8BA3D4ACAA00143437E8E12C30940A77A00F010CCB899AC657F07257F7356564D772BD 698F08BA5C85406326FF01541F232AF035D3FEE1EEF01C94BC41B6EBBE5921A8D11FC57B8F01 2304EEB08A51BBC7767BD5D7B17BF636CF36EDBC9B5C731325ACE70F58A39003600A9A8096D1 3A5E6AB6A7EDBA92F7CE3E2945D3FDF4A2DBE54F1FB71CEF37389DDBE546F1812F1677BC258E 27FA55175E3E8AE1B4B05B58BE4B3CB9A2D3EF7D0946BA3639F598EA5C41129BFCA77F6F875B B9CECC1662D4A621345A2C8F73930043469A418A2C040AD773B6D56C0CA0E77425D2AE23614B 29845A00DE99C321C29DD12B2B3136A07690F9A1C282AEB900A3F0CCDFE7DD325F4873DA0FB8 3C3FFDAA40F1B238DF8682031A5ED40EBF4403139AAC8EBB115C072B61BE34CCFB94881CCF55 4302F6538F8888A7EC630C5967835168E70E9A87DCB6398A1D34042A91103E2E25320A1AB0D0 70008D61FADC148F347E1E87B6609B9878F187BA8EBB4F3EC451023BDE08A9BB411FD9C7B4CA 39001D15845780F5688D49857B8B34590EEBD0AFC283411B936CBA9B3E962F6F6FAE49709899 DB74F9721D586E6A23218262481BCF488B4823AF2AF0E7331F8314EA87E58DD53A2FE0118B4F 28FF5929F4635CCD542245117D87E421436904E32C2472A93B58091D7372A128C3B04D30E689 950CEDD6351598E5F794000EF381B29CB2182FB819BE5264BCBB5943EAF4B8B9B68FD5394300 6A7FB068B1FB6A9A9CF5EE9F5AE5E3BB878EA5DD0F1629BE7EB4E4710F0E5E60398911FA8D13 300086327DAE5264A588C9D295450C11F4895F4504A878540A3F1A6DF09791A98BF1B5417725 F332F83920B4DE898E9F2C07FF48FA34C584A0205DF9062A9833CC8E8C3DBC50E2DE66CCC67E 6AC0A9EF9BB3AA0224EC6FC292E7D6BF889E43535C51F56B7A4CFA52503CA10942D7B91AC34B E854A38D9E14174C9D7EBCE32BEAB91C0597DB46EB00DA8D68BEB0D090B9B72055F53253A8AC 64FD1C4D47EC8EB8A43E9A02CEDA9E86CC9D84D59997F1195A1E228303DB4F7B97AB1DBCE002 0E1D034EB700AD969FA2FA1381DAFEF50A53CA061380AC2D1B7987CBB5DA9705371BA16BE247 AF74DDC22EC95F0C4D051CA108359F73EAF8BD9D22E951965B6BF487A7F2914F095575591F9C 2FDA75C88B443237CD280D2B71C6D0E129FD4259422EA339BEB5503DD63F85AE4CD37B14410C A50DFD5AB93E8406D59628CB6FD45DFB43E67F55C657EDC6BF991FB7CE51A79B2EB22B8963A3 3F653655913048325DC02C8931B75E90D1536C210373C35B5A88AB6D39CB138CC5459DF3BB1D 73C8DBA90B6A3FF057DBDF509B8E58FD0D9C6DD90B824062E8E6F9F3292B0821048D591FAE83 866D46C4CC284B57CB74BE4923A7E3A701FFD0CC3E70EC16B4E3A594C7EA0E230964E3BC1F2C AC6E2B88563ADEC039827D62A66B2885A1B9D4A5EEAA5F8C817806EE1679B9AAEBAFD6AAF82A 753CDDACE98313587FD4A73C5F39FB43A03F9259F5FC7CDB4D9A7485F18A99A644DADAA18913 DFE230606A612FC7039A0BCD636A4ACDFA5348A5FEDD06DB53FF807C6143798ABC7D6CE8CD7C 97437734BCB251A3EAB27E3AD0213D93229AE9442062D63136CAEF2D0992CD8666EF0B28165A 69B5A54A114B46348C801C67892D8449164D82A3475EDF45F0B9C3473FCF02671B02BA27120E 931F1044C620960755D9968B6C534920E2518C33BB0771B93F1A3DCD4173895DE50A0738D2ED 4B6EEDBD8A2A5608E6118827BC9218D2F27588DDED4D4FB84B657F6DFE512B1AD3698FCBF662 1FB55735BF7123365987E087F7F66F0508B9A1F409912A9D578C9835005F49EA23556D15EB91 E1C3D363872A815BF46905F98E2FF3F2956D3A9680A1414AC5C5D2B60913A48230E4E645F249 04977F108C4782EA721909484785FDE4E5506CF1A6D6C888BCFE3559CFF0D969E559D3349765 6D6F5E31F0EC0553F11C5AC177617B84ED497491E6858ECD8DF826029239BC2BA35C243A56F7 233EB71AB68FDFEC0DFEC58198FECE9818B257C97279D7226C7BDFA9C9CF1B0DB516E58D6E13 26DE5CA2574AE16B72DC3CB5790D491D358D444979C1FEF7DC3BCFD5FD60D781BEBD4B6F34E0 9430E2685EC1351A48FF1D8AAE34EAE33F8EE8B0FB99CC4C1CBE73A7534A964985FA4A8211A4 E0F2B14418D28419DC5FEB3EA64ED3B7BA19CC3BFC6064136F74FE0935B346E62C3B705C8F44 CB62166DD9BE118A804234A4ED039147F5039FA9C9E7099CBED5EE5F1F35C452FCDEE040B385 438FA027C72A3E9770D75DDA47FFAF2A31B6EA9C19ECE24C0E3F270E14015EB7806B7091D825 6D6AA9617C06BBDE284F88C87E0363C994E1947A8F61A2978B2243DB550E0D9B23069FBC8AAF 34C1D8E3603D8E5CD1EEB90A84CDC76AA57D8A1F41BF014E5057EDDFB0F94E97CF3BE7C2E184 DC2B042A6C6A3C7B04962FC6B9A345519321B68FC37C5C208CCD1BAB4BEE30E67A65B7EAFED6 F3E45EA0B18840FE9E9E644A4F590573889B8044CB3CBA33F5109B010157AB152A0E75FF1371 9D3874823F151E5D10D771683B26E8688752E6085921DE52B4AD4997297834B6521A6A4AB145 B7741595DD1E4E65BE01E1E3376A2DEDF3E549637E1F39E7F3920DE885097964CADA22F3F0FE 4B5EF75A2ECAEFD8E2E1BD0459803F88BDDD64A481224B78B24EC04B04FD8FBAAC444EE0CC32 A0269FFFB2EE23AC4D7C8B2AC867445F21DD7C10D102BE10DAA2DE09BA1220DFFB0E9DB7650F 513F8061ACB90E99BDA8D5D60178CB5B93DEF50A531638FB006AC1D24474F7551FCAEC5658C7 C34EF029911F9254D60131A66CA84210464E7DC2C8C92A3EA5E38382AD2E8BA82F69FD8C176A A13312EA491CCA82E1617703D8DE5F5E8D42BDF02CE82CFD161858DB1CBDAEEAFF55290AE576 7467E27DB575C4696DD2C43ACF7E9C04D029DBD92697471376F5A2332D903A255C43F932EC9A 82F397E9AB07A5B067C5F3F8B3B872B6A64C5A46A21EB2429F66541052FAA5ACC66A48CB4E60 F13F05ACA8F91DF03E0896FDF9D587082CEE991F24A32ADF2457A2A1B81718875AC906DA044D CA8E22C66B706626308AFDF1C720738DDD8AA97D424C581AE2364BA63BA3CCEA4797EE2D829B BEEB24688A057E6CE6E763DB025EC57BBF21BA1E0594D39E4A9F84D8942B1BA42F971FDCFCCA 8D9E7AD8C14FD56DBE960CD018C653FAD91CB82DB9D18306A51129CB6DFD28FB1DE7752E239A 7EA8E14351B21ECFD04F02E9D0C8E401F8E7984FBA9A859912355248A027D1A41E78F79C9D0E A35D2EB8F67392F91F061E8860B8B2C56D424C8DC0464128DF1F7908AFDE457F58F3936FB7EC 6CAFA33E554BB04A8E8349406AFEEE75B9BC301D85B577390168FE969EB89B273A48ECB271EA 9385BB6C66B9FDDF0F63738EC74086359D917D8035DAD870D81FD8475F85FA03B43392802B0C 499FC23E1CB1DAD8DA9FE3DBE20447C2CC55CC928ED5F55FA5276CA200728900D02FCDF5741C 7BBEC226FAC879318FBC7368787C761599C1992D0B3CEA1601AA23D9DF1BDDDBA3D289AA1A65 45020967D8086A2EF6241A1102523C40DF5C4A6BC009D41B4AEF4FC44BC0E4D4AF44F5186C20 45732FF4F0B42946069259030CCFDBA15D74B8A4A4205FA03CFB27FF73CB11FA18AC1AA40FE6 45C774E1DE506EE3E1BD558104F20EE06B144FE808D393715EF016BD4C9AAC827DA83C099300 B66357DD205570ACE2C8CCC7BEE741E2D9EE2B4E30E631A7BB3710941285434BBFAB8458282A 7E2E7895A2FD07A3E41B4A8B5B6A95A078CB4407F48405D0565EE77D9D73ABEDDC906B9089F1 FD130F7DC9042CC750CA6C5F912CFECCAFC848FD93F26B530ECFF1129F62A78CB9F0031DDAC4 664EE0C556FF3ACA2E3D33B030AF56E7973EED267E0A8D60171DC648C0B836C86CB2FC0885AB 2521253B22586F283B3C653BB3240D872A790A2F8DF93E2136524059335A003F4538EC6594A0 8FD05C3D9C4A4EE05C9865FCDC82DDA58817AE98EC438690D5918B4F8D05AC6DA49E9D2F537F 41B374AEF2F719812D63DB2489C30CCCC2EE36616F15E7B18E4335C4AD05F5F5EA4763DF7A34 D3F457CEDEE65416967A008229DB777D512AC3A24857BFEC811C93C87E83772A0C803F2D031E D8B2391828952D4E689B38FD92639469815ED5C1168BC9E98014FC6E2E4018D556EEA620ED05 780D5CD225039EFEC55BBAEFD42953DBAAFC669084DB913E7E9EA345E9098F023790F5E81B36 36F3B7AC73560C25B850F5189668D562B16B748B12E61E0361F68E07206033D3ABFFDFC8BC86 C7404B589D49C0CC25945925BD8F8ABE46546B981DB956A93E1E96F5868F0FD6603D8A119B5B 3766672481E7BC54D2A640C28CE4934D39C3D7F9D6376BAE6F4D712457573D7378C36C01A568 D8DE8CA3EF801FBC960E091963AE21422FADCF1EA35AA3ED57BE34868E56D0B893F98DA41361 4D08AE6F053A32E14176493A4DAD192440AAA7D96D731A93288A5B5460D310A173BF9793B7D4 61AA0CDB3E81AF0F1274E2BD71509004BE9C1B0CB64916A9F7222C6A3A2F96307EEF886F627B 31F8674DC27065AD1E94AF77B5F0ABD0E5F246B0596149183EBC6509AB156F83B95F45EE9AEA BECDFA82AEF6036FE06DD18FDB21E6B4D70BA8B24BF04920B240294DF74859E2B34904725EE1 591262340FC6BE02C3228D7824CBD20DA72B1C78FC6E490B20136313F3ACC29AF7BCF1C5096B 1907160B0CA2C5744A1BE927FE23F4836101EE791738EFC0AFDCAB00358D70545C8CE899B12E FD00691CF7C261F5B2C45ED79CFE0730CD4412DD7844D5959FC8A249584375DEF1715A9EC182 2E04B80F94E2D551950114683AE08C8B160143D27298076E12E6EBA5ECEC93936EB86FF20F70 A16074B07A3BC3A24F9570BFB5C18822CF4807583E673ACA60D949BFB09CC5BBFFDBB8FF60D6 AD930E439BA8952EB49AB2AD05B02F1A6653C344432A4820F3976F37FAC741D2A27F0BC6B30D 3B8461579171F2581F88BAE17256D349990D6FA2AE099FE66D478D13FFDC3E3C359AAA0949C9 3D2F55DF7CADD2BF133C735B1E5D808A127504FD3E03F3B2FCA2F49A73351A5393FA6C7FF2F4 DDB48E00124CD7409AE82C0F90E24F98B7DDDFFB24CF335E07615A2D706E36E433D2D4450545 6C17123DAF7C16CA2C75B263008F0211C71FA8652B099224607C46B8D2BDB195A6F21B4724F3 70BD67401750F086D1F2CA4D1D811623969F199BC4BD025C12A4A79F1D9BF0D01051D5121BCD A370CF0E94771B7A7A22D9752374DD2743F2E000534695349B3DA6BA15022B9B6EA1651ECFAE 2236D1380984FFFACA97FD45033A7DC3FC4C413D46BA5FE1473122190ADAC68462586024559F 6DAA7A684C1E41524EF21306CB7262E8BFC23F221E6A865172D9FB04DEBA63F7AC988A1C23A2 72A70A75C9BC7783B028760359049625113E895A8D6282FE868E27F88E92002D82B6D82EC758 DAEF8807EED1D03D5264C7E59213C84FBFCCA99483D1A467ACAEF12045E27BB094E4B0879428 B3CCC1932BAB4F7D94460CD736A69BB2B985BBF0FF6A3B330C5911BAB107D4163A83A426AE2A 8ACC75BE3701293653E27707BAD40C37921ADF3AF21589ED419E416BCA7EA1A9119F16102098 C5471543968FEC3193AB6737078644B531F70B52DFD05B92C1CC4D5C37690D32CCCE5E0DA13B 651989CDF99F7F110BC94F0E3B8C4B9519354B2E34FB4693ADDB869AC9EFF2F46982387F3BED 111F82280926671FCF2C6B816B200146EB04F3BEBF63A484270122AF0046D985F71A63243743 D3B8E7912E8BF769DBE65DA046C0BCBC9E5F4AC2B86126C755ACFDFFC1789B2A212530B46B88 A38404F127204E23A01709296D4FFBD9B2E664D1AEC1E9CA09DF111C08521797662832439C8A B4FE9949E21564582CF6608D45C29B6CB7FC4E70559C5024609BD62E566B4F39C1F88FAEC09B 558477C16A5F226E6AAD7A322E4B49562675EA07F6A02605BDEAB892CC94DF857E46519D1D4C 73573491E18C8E800D239AE08D49D5A1D0122DF50115F32680BC5860E4BEA2B14DAB9CCF15F9 C3779310EB296D174CFD6CA971D8183CF6C3B69A562EF8FF96A74EFAE84ABB37DAF5AAB468A8 E2DFEDB1DDC17DB85F1C50467A5C3856C43130243060A0F961CB6D81A34E2428762EDE19EBE5 DC5178D334C2686AF7FA88E0154D0DBDE6BF1DB30D1BC2A200FA677508774B2B8B4FC0E40BDD FE9ADA943F64713955FBBCFEAB86ED7013DE435A0E4136E0D3999BCF350D2D2AEB9ED71096D5 2663EFD809EBFEB0B2A605B9AF40D5D438E2A2DDC23DA63A127FC0F52456379F9B5F26ADDB65 2DACD4C3351529D8119D1AF722141DF0D768A4AF4EAE17C8B2197CD305ABAE4FE35D0F0BF386 6F95606491CFA6B283F5E1AF08BAEDCFF8EAEDB3929CA49F5BF68E26051AF7643B282212C9C6 DB78F21F71E8F645FE9FB3353DA17DA06313B67DEC4095C95C260242CF9BD00131B738AD9BD0 B091274F7BF1F36510CB8A8AB0BF76CC6AF8CCEA1529FD82D7C118AA70F40F8092D312132AA9 AC61CADE4AF18E1C999ABFF8AE15290BCA544A0026D296C372C04565947EF9170051E3967F26 74FBAD5F36959FE281504397548DC28DADFBF8AB5C3E6AF69C53B942F321335CD5E84CA0E11E EE3D38550904D52D340AB61ED5EDAE7CAF21857AE55E9D1ECA2FA7DEC6E7D8FCE4FE34D3A600 47235CE182460EFCB285CC246512A7CCF00481068E0A6910D36EEA3F2348F031A442BE0A78E5 637E4FC4CA531C3E724C29B06D61FA5635C517C510D444DCC450EEF428487ED17443A19516B1 15D7DD25C11C6143F510714F3F8754CB79E6BA78699FF13CF7DB1620933B96D364701D9B296D A702154D7433EED50834DD70739AA5BF0AD1BB60A47F0CD4C65407E7B5D154174EA2ECC1855D 5A451F6E00930E6770958471ED4E1F86CCC297D333201E911B7ABABB60ECE5502CFEDADBEEB1 BF187E65C4A99D236B65942C288FCEFB904BFE7091DDC667C661A0167B268DE3A42F5E558EB8 36D1A49838F695E442A4037181CEEA10AB51C89BD51F711648469F8E70900A4073CCC6166AAC EBA0D5F8D34B129D7EB970AA4F9004B4104D5A5F041E369B16668635CEBB5AA27108B8592401 8EA0CA05B862B28D44E6A3B1CDB7309D5B571A468CC0818F8210A7EBECC6B2E6AC97C077A9EE EB69616CCB8A4AFC98BEC0B558DD18F2808B520F59D8C6E9788E85A8F1AA5E4E8DC378FD746D 613E20131221C3868EE10BE0609739A6A6920A9924D0D89C42D3909A1AFB118A14C9BD6D81C3 A6232B10ACF861F407CB7A86B15E697ECAC04FA2AABF895187BA396C1382EA00EA0B0B85E338 D82D61F4AF8B84D5AD8759D1744808FA112763B35FDA1BDA3C04DABEEB017837BD66D4378AD2 2D71A5D38FA13136209CEE5344F6E14A12782E407B43C7D70D7FCC2F0B0A1314BE6FB70F3C9C 4AF9CCE96E83F450ABA31EB90285DD6DC207A07CEA959BEB979642CEAFB14B52C0E49617E1E9 30D884C860CBCDC691FE50D975B8263E9DC7704112B775EA0C4EB991B47853991C3F59ADBC7B 671FDB432877EF183CE5A78ED259B8BCE792F0984DC179309734973F3D672FCE6F52FA3DE58E 7D4D054517FBB70337B00AF36A119748680FF6A53C16C624CA11D757388E7C37F2186D335F34 1FD289673A71FB7CD39670AF901F5B0C37350595A0836E67EF9064ED625B7EFD8C7EAE865848 E19E0C2DB2EFF734948DAB18CC81E495F09EF1A17C4DD7C6BF95AEF0289B2C69E6773462EB50 6B39457909253626F2ED229DAB86047C729386ECB845703BD84C8B97969FB7671A7E31C647C5 80B3FB7251C1251891AC34B482E6DD7C11DFF66F0FEE4488BD4961374194731BF81947A3EEE8 AB8C013ED3D6584CA2713DBDE3FC8B386D52B28441B6DC17E7831DB23051CD59D21C7F36F8A4 873FF75F1E76E2FC9F20819A6267E594BEA4948AEB07C0561218D2A18E677EC323455EFDE5E0 0F0A11459FCD3788DAE330A3E7C07AAC5FDEECD0730E7124716507BBF402595236DAB2ADFB13 8299B80C2929B2A6F516F61CAFB8EB63012CCFA240040C1C3F7E9F1AC2D82AA3A669E1867B49 D5C7DC7247A55DD3E53CDDC6D9582BFA62D255D019CE37E08286E65CD57AA9C2F4CF84DE2B1C C6F65193A033D0C50477D424BAD4229786D89B0B9CDB8BECD0E36867C14EB1E4331F8CDC7C34 2CC8F538FF6710D796B9655CB47D83A547547340F26426744D8F6209D177879849BD55572617 C36EEAF43D8C8DF78B040283AAAB44438E37EC497209D63F38F8FDD82DA65EB3C8BDC3D4FAF4 2BA67EDBF845911E829244052C2A5894B08B328EFBEAA6C978140044AC09CA90B4B7D973D0F8 775EE424F599FB1980918F856891C260AE50DF3C081AF3493B5343888BFE8BF1EFBE6C6FE97A FD03B28C9399FB21B90B9F257D02CE7B362C33E8CEED0A916CDCD385C480769C4BE8B0384184 02792C2B50AD79DA8A743554079C75B72933796CA0BEF5591B5F8226A00D9FFDD8439FE0C9E4 AA22D034E3A345E7E71950D151F3A92D69BF0174BDBDA1D2BF4D2F37A5EF2381418B80EAF7D3 9CED1524B28051B74425EE8923C1D7049A557CB8A3214D2E56F9BA262A4CAC9C750C2176E70B FC929AB6B049262FBB984F4E97D602C3EB2A43A7EB1D0E82E69F8D04755712083E2124A90F2E 0FA66BEBE58C756A965BC48E98F9D7E08D9D69340913DEAFDA977F910F3939537CFDAE2B619A 8C73B2B97806DE736B6E3843D59F329D79133779795BA7133D66D39E7589BFDA6D3F2CEE30FF EA9381B8127C39A6519B1942476CFEC61E38CCB74C411B5A5A8D2096278AC5A5EE91A9C1E6CE 23205823D537A3C12D88F69F6BD73528DF71359460D5CBE2AE49891DEE90C67799684E9FB603 C17AEFE75ACDCCE8AA427596594F61DC6EFD65620F50A4C3223E92AA8F00102F044674360609 E6841E701AA3031BEA950EB1B284A05BBE623D59A704D5F5744071B069D41F0253F9A0DD4567 355DA8FBCD8233111AB2DBF86A3A0AF6C6A0B3E244B916301EB35FE0CE7D3F7832D8A40C2596 2A57CCEC710DD262DA454B7EF9974723CB34E8E8FCAC0EAA6842E38B81C8C08C79B656ACA3B8 FD09780274AE6060AA2FA47E34D3E3EAC1AA4DBEDC68845D524E41DF44E375128B838DF92AFD 0C4F2FAD0DB17B58A2DDFEFEA3A5AC364E05DA44CCEAF60D802CFB7E2E8C948D229B53B2D39E 3EA2670B6CFAEE513B639DE08D58D1178C317915C0EF0ECC006CDBBCBA5AE085564D5C6AD5FD 6F707A4C1DC08DAA8B06BB169797FB81C229681E609D0F9CA6F7C7157D50BB46F54643E1AB10 3A927F4BA889B0F211197D1778BE459F598EBA61B55F351C6C9FCDB85673833FB323B6602A3C 2F04451DD408D5CB9D54C3C92D429A3FB1BC793B73AADCFE9F48397B2E07B6593DF26F46E964 DF0545B89800E6C462B502C17520871513A8C581181EFCAD179E30E79C832FF52EE7496E6010 446A8A6C29EC2243ADDE81205D7A45670621D5BF63392975DAB10E01258F1D66AFFC731D001D E415257C61698CA8B854CE4998D1383468DABAA619F7B37DD1CAD246FF12308CF78606957419 DC6F1D539E96D452B624257BFDCCC2D78257C12764986DB6AC0EB8A632BFC76711E1FA30CDFC 5ACC188189674112127D8BC4AE0959CED826CA2A9D3C6BE736F9E5FC4A95B97AEA8A0C55DC86 E138955FF10239308CC61BE2A14927D6079A5E10C757B60648084B3DC418887895D14A1C7E22 B63A71342B9A72C12C45E932D863D3E8CD8F60E39E28BDCF61542A0C2B417852B99EE3180B74 37DE70ACE5A809C0287417A37DA19670B411ADB2E837181D75667239DB2E6AAB2C56E6FBF45D 72E956003DBBCEA38C633C72C6B9D4336953CECED0FC43725291DF357C3D53EFF9D875B215F4 FD75A183896254A67F519498C1F6DB8A0C3A7A3C9EE7ADBC64B157FF5EFFDCFC949D5D332687 2976D98BCDFCDEF97E206613F5E193E71F7F08F4F9F489E930204C9E474C698A18373AF48868 CD2FED6E0A886CAA4DB8BD8730D601D78E369576EFB485B14BCAF41FAD1372E04F207FC06A2C 0B498C11B6C19C75959DEEA960177F1C9D50E39A0EDCE9CD2F5B4AF04703EA6739302B1344C3 00CA7FEE41B77768C1C16A5DA38CD240C1ED2403CD0D1A78E8420AD448711B4B49A1EEBE2A46 04C15FD67961F6CB28186D41228AE20287A18903A5366C9A42B9BEEC723E6BCBE788172B8305 66669782BC3864FFA2E19AA5C5348317611C123D7456036923806F2F9411D7A1005AB2FF242B 3F1A6A064F71AF10CA2ED88A4DD1828F93DD186DC544796D132C8FDDF8D9CD03A37349A6F6F7 DEC6D929E91E247C182F4F572B60323D4A52426669B4DEB335CCC034363072F49CBA9817EC7E B195E271679CF03F95475D0414403C7FE22A63289CE09D3238B64FD22BEAFCC3396C3EA3E6E3 AA7339D6B0BE8BCEEF7DE6D5FAFBF96C62DC55438BD45A6AC4C587E5878EBAF6A6284B244D86 96025A61C7DFAE6F6C2A5ACCD5A11BB7AE0C1384134F00DDC6679E1E472E331B6AC2A8312863 F92AD9BC45B3CC12B1A7290E30CC9970EC12EEAC9915D5C3FD7C995AD57756F9D2F256F4C6C8 FCD2A83EB0F92D46C8D680E438215173F05387D2694C772E718E1327F3ABAB95143C64C93B9E 9F0AA92AD57E2A138BA22B0A3EB776BBA9ED5BEF57C714E7C17096E80046DE1D7D2B7DE9F494 F0468091DA15FF36DFF3803A5937B1C8D9ADE4697D8BB9B6EDE81E28B0FC5D7F53750DF6747F BD6E8BAC7733081DE5B4E9F1243B94F5D3FF1AFA0B469DF8C0A981E26B685870DC4C585103B0 A869B0256842F1E9356BC3DB8D6A69867CE154F98DBD0CCAD75E965D2EE76E68F5732E7F3FB0 01E48EE15236908C4CE3022BDEC61FE1A18562FCD0475E298ABF2F91534E235AA1EEB4E860C5 5A1818DE4CFAF1BD036AD51E8DE5942857CBD8F872245A6A91848435EDCD0423E1D6C195BF24 102E53530798FFD02ED7D988A086BE108154CC598C53EFEEEED12809D6B883C0FCDD70DCE9B6 6E1298FDD4B00EBC68E11BAB2A876D379FB378D3ECF178DA526EBA354668F384FB4748C56568 92AEEA403E9E674904B5EE6E36A3A690FFA6A2618EA960AB4ECD151369BA6F05FBDE1D104683 E5F14CF0559CDA91708A75647609304535BFF1FC1C1D8497E9F0EABD18263B34EE2EB97D6819 272B8E9134F8CAE12F53CC9BA1559CE52B00D7F464D3BCDC8B9C924270B6B77E4870000A2019 682C15984AA766EB448FFF834EE5C5ABC83C759066834EC1526DFD3CBEDE60D0480ACCF07629 1F2277C91C9DA25B94E80F6B494869BD324BAF918BDC3FC008819672A50B5F42BB81C5DF23CD C3A0B1AF94B984A244BF3DE49812CD96C78614C0C56F2B86EB72ABB428ED7D820FEC817F967D BEBCDEAD9C6B77A20B25FF55D49106078B79156880389FE4AF92425FF295F306E96EEF0DFDE2 D05E098AB10D1E2B8906B20428D8DB67FAFB77B3F24E4BF8835EEF626492C7CF978496A0BE1D 6056898E99606DCBEC3F90320E6AA342049120A963F5DA6783394A1C6956CCE618C20ED83A83 7E7E7E0032CF8A4A8652E8BA5765DE7349BE9B81F8A0D75BF408E52B93CBFEDE4EAF1E0A5504 7FF55251AD91A1B95D64C06DB9A24BA89D3B4007F9D1868708ACCABAB4E68400C61561D38573 395EB7332C9765E95B36CFCFF62BA0BA444FE5987729E1AED16A10C11040D42A57991D1864BE 92DAF4E7694E5C8C20A63B948C2AD083438C9604F858B84000797DCBFB97DEDCAE86EB7E5E07 E7E3A31043AA7854033A3F644A4F7FD443B177ED1EB42F711A5E7312094A5669EEE0036FAA39 EE6FB9EB44065BBE5130DB601E96AF8B23DD0759D633A7F5CC08089AB85906F4E1523249F685 DFFBB73C917FED2920C20437BF7F8C0AD585EBB777ACB5443FE9F8922BCA049FA8B0252019AF D4EB76A43A59F5A3D98DCF8CEFE0E8AADCBFF93E2E8D88842D7793A4BE3B0C5BA4E4D9217693 1037181D9E07494675C0A86EBA9E8AB837AF46ED8B3B0EA64585DC8C0A72EB5E6C2614104864 C1E4821E2E5A13BCBA3E33B19DA87F837D4940687429086AA32715CF0F72DD340A36527F540E 1873C988C5FEDFE96B2C2C893088DAFDD58B21B21986843A69478A0D517468BB86DB36E84CC0 996C62942233A5604682C2712EB7F074F97E6C7C8870C3E91B1F5B5160774896715C26DB90AF A8004708235B5475575469F7B18C234204E5377D35B15EB146D083C96CDABB658D486F632F5A F4CD3DE59A2EBAD44B9B85BE364362433BA8C0C9DEC17108B6A4763997603B6CCEAF1C056E59 4D28E6A9F01E344403B424B2DFA49C5EA735A61092C1B4ABEAFC6F39A60B6C0AF70D92944B4B BFD79F6A4B67B40E6DCD7330F03F7283E8BF2AA0DE68E5639ED2665E6B252636C7726805FE62 36EA67DF66EE7E46930D5EAFE541338F3621EA64C05A177AEA44FF71852703E66F8DD8F417E3 E6864CB4355B18CEE3B87ECED2325D83727EB06F10D41F20E9D40EB5378F25583A21E93E0ABE 444CE3CDE27B82E081DD54C1C478F673EF38B15AFF3C95842B8DC5B90488B9910324B004638A 0B8C6C894C58EE11701D9046EAABD2C417F17ECCFE15C765220D74C79FDB0B98B96CC59BE479 63E6BB98E066B7ABEB7DAD10A03352FA9916457313407E5BFE80ADB801E229208AFA0B474E99 5C6EF5A3B4DEC5AAEEBA2579551BCA9ABEC0142D6051910EE3F3397459A2F12471B36BC11F16 B53AAA39CFB69FAF02B04D71D74D567C305BC0DC85B5DC7829ED9FA8FFC65D1AEE665730D1B1 2B0920F7D828D547DD172231494D3BF562B5F516364E355C80B6F20564817E8EE7733107575A AB37451D75A292D96EBACBAC3848A5E0842A52E8F5258215CCB1517673F4CEE172467E4EF066 C18537DD91EFAF2EA46F7F5412B3108C5380EE7B4A9807DB1D5A396ED802C3640D520EC22E28 8D66A13BE5E8BC8276FB9A2FA09DA2A93BC59C9C3E0A0C20FA823921251C8AE01576D8232C06 C51EBA11DDC679D9C428F2F60F3F9B99F3F08DCD410A08FA9E4CFA4D82762C6CE53EA6F7A270 2CB45B6EA563053B02C07483F0EA3261F1644517E9AB19E7F5C1CCBFFEB62E3BC1CC89D6E185 6AD87B84A37184FB4CCB61CCF2063E41CC8E991E5081D7DB64E3A17D43D5308B069608230570 696F8ED97AD3814B72896E217A699F8F3A8EB79D915E85309FBA414F8E2BB2849E540A9146CD 914CC20542F2A4FF690F4E6E60F137FAB4201EEDA336E81A2D944A5ABCC9E3979C20E65435F9 2388A87B132C6F1C5231E03784306BD033417D147C83281D8BC3F600B773AA2D7D9999C8F378 CF7DD8B5F8D5FCA3114CF1A7DB64E81B2F80B1930DE6316C241A831F4A655377D77C6E4FD0FF FF5A287C648BA2D78556CBC196BC98E1428E9E6BF9B6ECD0440251DCDAE165CAB80DE77F733D 13E8F3C65ADB56B14AA17ED1795BE79727882A24F89C5B95F9B2D72E2BD201331FB2FCA0B60F E5AEEF092DAEF95684BF6F04D9D3736F5A9072DA7EBCEF0B78DB112E83B80943B49BFFDD5233 A7D4C4A4364F00B815E6D672233EBC2AA2A1D626E9E003A59B3BFC2C153A9989E36575F345BA 7DBCF7CBA0275A3404FE7B8A18711555229B49AD536DFCDEAF5BD74F63B623856A1E7642F079 CEBD327620D4E52BBD979975449F5862CECC7767EB8936DEC3B7DD5A7A604B7E04D1E58F6057 9FDF2FF8EB2DCC816F554474E73ED43FA1AE99159B0F74AC866A811D90C56DAB4EF12939B902 A7FEF046809744098378BAF764F8DE2765EAB5EAA0146440DD99FF87F402BCAFF83C13816167 14B520074FA71349AC18CA9833F67A3B3A264B484CFAB91124DAF0E89AAAD9B5591D2366B510 3F34266E864FA987F24765F7120ED14D6366456B6844038E8B46B4B600EBD0B7941DA2298608 72F09B5289E2BAFB83DABD00A62F34C723661E192F40E8FC100B79718B31005A779A80CC4837 7EFB743663011B1DB82630ED3504ECF66336C0DC05F6EA16A661D94A786370543282CF001E0E 7D9400695C3022DB750789C5D7B52EDF84B5A19F4D8ECBE952EAC9ED292A4C7D03338A223471 9A987BB30331BFEA3C032460B72C18B693CFE54B7870D30B9AF90E52F478C7F72A1F51ABEAEE 8A030C0AD7F724DBED5CBC76B35942581EEF6723EF1C82886A9972134EE9FDE3CAD93D9D75D0 01A0B34770786F240F4D7439A5E515CF88A2325041EB2D7BF29BD7F0A733500434D5107D3374 8FDF40D4AC6E13718FD1FFC953427277B8EF4F374867B373E4DF9175C96EAA6E2DBE8EF9F08F F9613F374BE9B9641381CF22E6192AC68AB497CADEEDB362C4136A170F72B0BCF9D0573C5799 0EC403CAAD823187FC9898D0ACB86D0E07BA28790FDEF3D459761988DD5749F2518EE1EBD609 B5C18675F84BF646A2141695342995795952B68A2FA6504E0FDE43723CCD2C0D0D4F5642A0C1 A3F8CBB216390DE851A841A7EADE53403D7A328FD1C4F5A847180F8283FDD648AD6572E4B0BD CC58EB9656B68D4C067AE86C5849D6C542F54A026552364D21CD266AFAC2AFC0EE943AA5CC75 245F8B47B4AB89D017C52174AAD03B1435DE24D9D2F41AA924C407457022A02E5F0A6B760D69 7EA94BC5E76CAAF6E085CCA5D32B560D5E3B74F6BE573FD292FABC810A1DDCB486B52A6BC47A DDA03997610248F7E13E44DEB241A23D1D4DC1A089457AC6AAF9F8A3FCA2BC2844DE8F64FAF5 62757A42071E7A67E20A2591963765DCDBEADC1264A3728C4DD3FAC7F907DDD3C41D0CBB3F82 E605F7C437DFB286E521454889F7A43DA468B3A68835ADD2F16615CB5E5F540D7A3BFB29BDB6 E382CDFF9AB5DDA834C676D72D34C94C8FDB4B29AE25C9B4B6EF7455F112DC723853A9C7E485 0BCF12D782C1E74FDB9395116D7BDE6BEE11B5A291CA3CF04BC421DF912B594688359A7CA1DE 9257FE99BB9EDFD0BDEEE158F56BAB3F1ED04D457FD0AB90A5F522FFDDC6B0CC829926DB21F7 61B1C2F5CDE5C08CF1873B878B6507BD187D020DE418A365225A7660118FF45D0983C22D2C52 580E1EC7B9D08311B5DC9DE8BB569AF34AF493246A03CF7787D9EC555ECC2E3E9F1A2C0CB926 B47A0224560D4F8D2BBAE077E948FE94DD3813BCE4D18BA4B71D185DEE9B05C0C06667308D43 EBEE794B6000AEA93C7B400CE527F44BE49788E1E7299B2D642A28FAF5D579DBEA8B46AFBF0A DF1546EFF04EDB2AD3C3391DA5BFBE5200EDDBD52D509D248AEB2FE608DE9888D7B1A5CE3904 9F984CC81628A894A463A4825EDC345067F3D1B05C0D97AA16012FE0F05F102070BADD79F188 FA819664D203153219785EE915FC79B87A95F551913F94F5589D0449789F57C7A104920DE6FD D477F43D8B96A219F4025357FF3C5FA0DA800EBDCB38D85BACD230C8EADD88D978ADED975B25 72B9738B787C2DDDF73F5A4F5F98F6A29E9F0929CA4A1D68ED266256FD80DC1A1E0386996F4E D82BDFCF46FA24EC3F48CA364DED12245EC661F9E312F416097E89748409972A88563FC6DCCE FC0948A9AC7A22ABB67681DAD268F92A73D2B30A8CD5BB65746609AD40652F18E18EEBDEAC8C 3D11042757163469F42D5DE1E7016B740213B82E75EE3CC01060267874F05748727014469CCD 005986ADA6841072C58054E3D9CC51F6AFB99AAB069BEACB8060F3B489C7A468716574AEE183 643EB3BF17202848FB2593FBAA222C7F02EEFA10EAFD70959E4F8491BB11E359E98C6F089FF8 57BAA11FC00E6B78260516E5EA81066148432AC35DCCE35845C34460BAA8E20653A90ED7B901 977DEAEDD3625A9E8952E8367E3854130BCF23A3F4D62D0C42FEF316AC36238B501FC12FD95C 27C821F7A5659E8486A1F67F72DE27258F26F786EF982CC3934FD43199E89D440BECC0B740C1 6D72A30BE83E45ADC79DF42D4D6A0C4A7D3B016F4DF327C4D396FCA1DB9B9791B8F19879D104 D971347250E39E37A3FFD258578A2566A65C568D2E1AB6400D0D7BEE41CBD8632008DA8F5C4C D677DFA389AD66837344E100DF6695C607BE52BB5A3C0C2F01F720E0546C1983A5092455BD6D 3BDA8B15ACB5F4253FBCD9DE3533C3F34E3B1D55ABFE7108CB47BAB62B734233834909927AF3 C54C449BD76FAD7C30B12B04175C9E1761F8523A255A407D4772B7E65E0336F16BD67DEF0B67 4EE1771906E9D1F160F812EFDC3D1080F15E2C6EF25C917DF2989B3D53BE6547734D07C3F344 E50DBE5DC50460FCF792850D7DD52FB24F68D97C99F05BF5DD4A8CC83AE5565F0EAA11B8E630 C6947EA6FE7E686A654D30B2E285F8E01BBE0AEEEDAC9B0CBFFF941F232AFD48F3A46102D207 326DF0CB0F26A8536397EEC39381E1C538E8A319CC37E51E0A2435330B6203B441D45B60E57B 2D84A357340037D0AFBF788E55B23C35F311BCED7F28C7A826426C961E5C1C6F41218F5305B4 9ECDC9E03252ADEE4F56CC68A85E9D9AF4227B2B30C326911F627EA521EDC0714B7A9A71DAE5 BA1014C7A507F2B5E13F6C146A1C38F7CEE8BCC4C0A64B175802D0AB724A2A0160234DEF23E8 29E2DFC1983EDDF81F406A24BACED9C1DD2295FAF5EBDC447DB47B3A38643196DED4A4862E39 E9B416389CDE7DACCDE02B9D5614BE3531763FC9ADB76BD58E6E86B0F321F1EC99EE55A7ACE6 8D39A83971B2B2FF924DB84D944747B7C844A562A8A70DDB4DACF155F5F9BFA0CEF24D8D764B 7A8E4F1755178460E9D26918768B50683D1B5DCA6F8CB726A93E5CBA5411ECB0C84BC1B49078 DBBED17774642CD7EE12E5A88929AA3E680BAC36089E1D5FA949279050E8270C96915C0A4CDF F9C536C89E8988ECAE1BF6D6E0A4B9A065CFF4D531D202B2E737B2C31145A45AB4E4E0C2F2C8 217283AD316A662E01B4706F44F68C9B4CAD5EFCBDC06C38A0599D784A3D235537692D06012E DB740082D6D1CEC0C2A80084F37B173C5F74F7E7C674FD0BD158ED4638C75CC7B7EC27DAB42D F2F15D2B362EC5F014021594C3CE09DAC8733A568C61599DD138F366AAA24685309691993A3B 4D7070A562E9A2858E097C56F9F9D064E9E94A1AD4CF437212FBEEC6F73A4A661566188156E4 325314E92A58C54DAA0D6334B045D8018E3B5FAB5FEE34E4A6DD46B63B08F8BA13B9A555A367 B692E503BE3B42D3AD9592BE76EE0CCF4C0D667317F8B4FF4D8229CE466EF032817A3E5F0D63 44264C5045817ED0941608C6A1477AB55CB23DD6ABCF67067A18295CDC352D1C4396A237E551 3B4768F00B0E0E383DA9A7A35B21B3E1B7957B3527BD83A424C68B0EB87B60EB7494AED26234 EB613387F3A8045D3FDB6EAF2F947B5BEB73FF5C995AB888D7D995AD599E646415B2C31ADF21 48A44D7E7B148DA6832F9364F15D7DBCFB3D0BF08B74D2C3B3BE860829C1DA4122E4920640CA E5730A9DB7C58E73E92981D6C72471FA2812FAD88EFB7F77AB8061C481319001B945D8A0A9D5 123F4D8632A161C450548BE9866B6503C66576E1C815E01F6DAB0E11789F6124B3E4BA0A3558 67AE1FD312D25987F43E0BF054A18A4B6684A66CACE90CAA56B6538BEDDB78102D90C64F9484 D76D44A7D846C5DB81F2B1A5F65BC2ECE22CBE2D8FE3E3615C211FFA0EAC3D5CF7A66C1D4D5E D1859729EAA4FF523F4E307A48A412AB9F31C5CFA58ABAF92286A2073BAFDF8F1C1A1A51B790 C53B4C3CCF3EFADD0527AB576F6ED5137D207E9D8657924334FE2D570E03C671FE4217271CC2 C5D6EEFE5F6AF1409C893926F364B51B0A2F1731E14F4C4B6FE31DE072B7BD091B30B093ADC5 18FD393DF26C5DE75E9081333ADD05FD745DF049C16B3D6E0E2D75301CB57CA0A09AE1176C63 4F35541BA284B22EDDB016E36ACE80EF7B3D3C20F1DAEAA50CF668BC65055B7375974D85C1F2 048FA232B22BA300ACC251831F65289C2BDF785AAFAF5C75B769ECC8F36C2D82E072F0B59B10 198A4ECD0FB55F7B77F64B4BCBB8B6FB5A16FFB86E8FA6D750ABA4D74A1EB67BCD81534EE47D D60E3A30743F15DCC3E235F442572E7BA1E7682D6FB28AE256FABFE7488DC3C5500973662B5F 8890885D5C7C3B538680F6668989AEEF446B2B3EB435255436EDD1C3143E2D82565924BA0D88 EBBA169B0DAD999DEBBE1062B20838AB245131BCDC6FC446C817952D627E8A6C393BDB789257 536E1E60F68F9F4CDBE0C2167947F98E6140769C04412F53008CF108C89E56A9587C1BCE40B8 390EE1A87EB6B12CEA750ECEAEA75A0AEC405CFEA761E00E4573450CE95B874B75A7A1649B48 9E6797B833497E2A7D03823E158D43986BCE89EBAA3A3F41506FB7B8DDC8601E3035BE6F7F6F D57588305389889891938210929F0E25E0E37AE9E812731F225E1245DA41DB935A590D88FBF4 574C46E12C9F7D689862104526836DE9174DE954DA8551D0EED02E74DEB8708690B92A31F500 C6D1717C739D97761337C5F7FCEC0D48E4DC54D6CA16F7D18070122A17775C87E08C230AE3CD 1EEDBFC16A276A67462E1BBE217C4EAC0EA22BEB8FC1EB93277516E78C5769D83223AB672259 002329BD69E1708EBBAB9EA93BE0F3EBD95E7CA39D76D35173D351039B3E2D5A4CA40107E249 F84FAC05A46CCF2F112A655FB35F8EFF03150128A81821A422997678A2BE9737A22D05FAEB51 9DB7EE5F1F0B43D1D7CE589D30B8B59817ED0D938CD940603105EC746075D53A642C556518F3 97B36456AC9BF2ECBD967557278331CE597AC716538E31704548CF36248C183B503D1A486E0E 0D75CD162FC8E53B2243664254EA11478E3971E4B4F1A2D800E1BE02AA4BFC064775F2947681 B84AF4332E77DE0D577E39DA5A70C6365427FD658BB0EDFCBB279C9ADDC1A0DCD2049BC728D9 C295916BEFB36926762CC071D9A542C2AFEFE506AECB8D7A9F5374DBB0EB2A1E7EA8596CDC6A EF8E21ACC8545270A3F85E82E337EFBF5A3CDB3AD2789A718413A886D1595DCB9EAC464263FD F239857AFAC9B61E3F79EFCB9A2411F67A024D4C15070816C4687DA58CB2E2CD42780C0FCE94 AE344EE73CE00440CE9D33E490E77F0F3AE6A088D5C26A24DA0EF1D4D2C9B05CB207F8EE1CB0 75E0DB123BC9BDCF2DC689E4D7138DC745AFF9E7A9C787AB6736D793E628995D540E60F9E70A 17D0A6294623E4FFE49DC9389E063E4AC59D4CD603E6D3AC91FFF3A7E89EE69F7CC970CAE3AE BEBAD9254906E19629145DA42B2DC38058BEE8144CF1B02AE83206902C9CB9F6A52188FA59E8 0FE75D226E3793712A4C6F8F240AA386933AE394DBA9828E1A73315BB8101573BE81C153D449 31F60B3A7285127C61B775AA2CB3916A57D48462F47CC6B6D5D77B733D553D784CD4A8C269C2 3CA69DFCD2275590BDB2D357F928921D925B0B648141266F85E92745A543E73F33FCF3E5D816 622D65DA2974D9DF684CB5B481D46546A5F96833B1011F9D66A547F7B5F5978A4C7A9234176F 4C07106632A15562F968CDF47B4E6140005BBF60E131EDE887EBDC71748654DAE8DB23A740C0 41964357719D9180E01A1EADF9410261B564ACBF2FEA3A7D465A370C3EC5520F97C00B3070A8 7B8892D8DBD84239CA52B664A5A1CDFF4E2CF711D6319B2B833EA5E038D84323E53BBDC19EC6 EDF6CB15B6E76703079FC117D2C59B45EADC98EBD88ED8 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndProcSet %%BeginProcSet: cmmi10.pfb 0 0 %!PS-AdobeFont-1.1: CMMI10 1.100 %%CreationDate: 1996 Jul 23 07:53:57 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.100) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMMI10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMMI10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 161 /Gamma put dup 162 /Delta put dup 163 /Theta put dup 164 /Lambda put dup 165 /Xi put dup 166 /Pi put dup 167 /Sigma put dup 168 /Upsilon put dup 169 /Phi put dup 170 /Psi put dup 173 /Omega put dup 174 /alpha put dup 175 /beta put dup 176 /gamma put dup 177 /delta put dup 178 /epsilon1 put dup 179 /zeta put dup 180 /eta put dup 181 /theta put dup 182 /iota put dup 183 /kappa put dup 184 /lambda put dup 185 /mu put dup 186 /nu put dup 187 /xi put dup 188 /pi put dup 189 /rho put dup 190 /sigma put dup 191 /tau put dup 192 /upsilon put dup 193 /phi put dup 194 /chi put dup 195 /psi put dup 196 /tie put dup 0 /Gamma put dup 1 /Delta put dup 2 /Theta put dup 3 /Lambda put dup 4 /Xi put dup 5 /Pi put dup 6 /Sigma put dup 7 /Upsilon put dup 8 /Phi put dup 9 /Psi put dup 10 /Omega put dup 11 /alpha put dup 12 /beta put dup 13 /gamma put dup 14 /delta put dup 15 /epsilon1 put dup 16 /zeta put dup 17 /eta put dup 18 /theta put dup 19 /iota put dup 20 /kappa put dup 21 /lambda put dup 22 /mu put dup 23 /nu put dup 24 /xi put dup 25 /pi put dup 26 /rho put dup 27 /sigma put dup 28 /tau put dup 29 /upsilon put dup 30 /phi put dup 31 /chi put dup 32 /psi put dup 33 /omega put dup 34 /epsilon put dup 35 /theta1 put dup 36 /pi1 put dup 37 /rho1 put dup 38 /sigma1 put dup 39 /phi1 put dup 40 /arrowlefttophalf put dup 41 /arrowleftbothalf put dup 42 /arrowrighttophalf put dup 43 /arrowrightbothalf put dup 44 /arrowhookleft put dup 45 /arrowhookright put dup 46 /triangleright put dup 47 /triangleleft put dup 48 /zerooldstyle put dup 49 /oneoldstyle put dup 50 /twooldstyle put dup 51 /threeoldstyle put dup 52 /fouroldstyle put dup 53 /fiveoldstyle put dup 54 /sixoldstyle put dup 55 /sevenoldstyle put dup 56 /eightoldstyle put dup 57 /nineoldstyle put dup 58 /period put dup 59 /comma put dup 60 /less put dup 61 /slash put dup 62 /greater put dup 63 /star put dup 64 /partialdiff 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 /flat put dup 92 /natural put dup 93 /sharp put dup 94 /slurbelow put dup 95 /slurabove put dup 96 /lscript 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 /dotlessi put dup 124 /dotlessj put dup 125 /weierstrass put dup 126 /vector put dup 127 /tie put dup 128 /psi put dup 160 /space put readonly def /FontBBox{-32 -250 1048 750}readonly def /UniqueID 5087385 def currentdict end currentfile eexec 80347982AB3942D930E069A70D0D48311D725E830D1C76FBA12E12486E989C9874C2B527F092 5722787027F44470D484262C360CDFDDDF3657533A57BB16F73048BFBBFCB73A650484015441 FDC837ADD94AC8FBD2022E3EC8F115D4B4BB7B7F15388F22CC6198EFE768BD9FCEB3446EE4A8 DC27D6CD152485384EF5F59381FFDA43F2D20C8FB08AA27AB2015B774DB10DACFDCD33E60F17 8C461553146AB427BDD7DA12534BA078AD3D780414930DA4F8D58ABEFD45DB119B10EB409DD8 97923C6E705479464A4B310B58348C4B42393988FEF4925CF984423AAF65FEA9F0E64629953B CF50B919D968D99BD185F83112B2759CC411764E9BDE677F57C5EE5AC555448D5F81A16259DE D1E11BF4119D53E8AB07A802DF900D3A2D5CCC1C6876D29C5E9EFFB7AF3EF83400B0910C0787 3A8C56FA7B1EB1BA426043B00CC95DBEDC6E136CBBBCB3F67509964F9F281EBF81FE5B018122 EAF66C4A838487E82E186E006093042848A903EFB3469AB6B4049767AADB95C30408DFD58D8A 10F4CB22168DECD9F3EE100F07B49AA44C92139B669CC312BA20192454EB2375BE6284B02665 9D964B96AE82D4942E758027FCF23C25ED01115AF27CE7F20EFE2A822BB684004F20243A49C9 E93301FC21B80815C033C3E2BA58EF53DA2157D524B395F2B37ABCA13BC6A2F42E824AB7E471 06176B0D6DB267FBB795AC7425582DF2E3DC55863468A9200742BD7B552C48F8CF58BC21343B D3B95ABFA140F33F37C6F3F78B0D8A5154EB7C1F62EC598267F13E841A3E64172663935AC8B6 65D86540D316DDECE329C008049C5E74B27D59022C5515059BC3B89370B1BC6A169C888BB325 E0B74282D6F053A50DA4024ED1E433271A32AB8C17D41C632B41CF9F3ECD5FE124DAF7AEA7CE 8A63047B245822930D517DF7BAAAFA69D2D17F7D93CEBD47DEB85405D720DE0BB4DCAE731A8E 27BDBB6E6BE38D168B7DAFF815ACFC32CE367374BF9FD98C0AE5BA1BCCDB84D94B5C173ABC92 F7D18E19A68F64A2241A0A1639108DC46B8A04EAD17662B7BBFF3D3D9A95D5937698573BFAC6 4973DC8D8B8D9F68C52D0C133119ECA4FAE72F7553D276C817003234A98337D7C037C0F1BCE8 A80457113BCD97515C002D20F836FA086A3277727873EC2B64A92BEDB01193491134B6692A08 DE4A201A3F11DBE070D797F7629AD487D2B8DBF89A0631956C93864A4460AA3BCC8EC6B98DB7 5209AA1B4A2E2B1B9866CC7F3BEE4E0EB0DD68627A97A3FE6141FAF10A2CE00391796C5438DB AD93FBD065D1ED7E8B7879E0D1BE9AC145B9AA91756EB6EB81146048072303229CB8DCEB133E 572EC8E2BC954BADCE75356EC8EA0C7F76CA08533E874BBAEAADB89D86CEB974A52DE0F9A434 80E5076265AA6EE49ECC896182E6091EB30B7DA8CD0E3A26AE7FC03BA5C0D56526ECC6F2D6F6 91D84DC9E7DF306863FE0B6DAB3CBC588C28292DF3F7A47D9C4E3652C72F6BBFB3F4983CAF59 C7D877103DE7AD73F95A100AE860B4E55814F00A7026C306E85B8A48F8F69CA48AE710950A2A 1F2892F31A3849CF917002086DCA5F66B84EFEECADAACEB33A0932E394A5E17628D52E725FC0 C69E8B00C9DF81DFA32B2970756D947A9F56831B19FA3A2F2795017381C05919032FC19A6B8E D2D0188DC35923F486A62C8AE61E0A5BC681A57DC20223629C0339F67D689B63D842909188E2 CB82A4E0471B9F17CB8FDC6A6D2C3AA6FEA17A756B4D4860FB72B50CC39CC7E5329DC202A5D9 0160DCECB7ED07B9CFAEB7E766887C9B93727E5DF348FD2F5158A2424F443A8C72811CFC9CD9 E2CE8219667D7364E85BB01D8CBD63CC11533CB0D14B793D5E1DA99278E636CFE6A34AB61D46 44DFB5939746F67C71EA1632A43F457583D3478D159400E04CB7BFD0011048ECFE912EA5B72F 6C01F941C78CE1FDFE23370848D6DB1C88D27C9118B3C8C8CF0BBF33FF12B509D3594E187F52 05B9E96F9854002E8944B8126A8B2B41BD572E7FE727B10441F3B4B303FB576084008DF04128 F28A3BA5BF987BDD3AD278F316615D70634C47E6C924A9CC634A249D1D57DF395AFFD6B0C524 68061B62CCB46EC8CF95AE99EFA5DEAADC48F433ACE21B45CB502F37F06EF95B4D8880FCE2EA E511E2F7130A96097066127391923616B95EB7E3D70CAED613BAE4F2D65E6AB1F81D63745FCF A57A9BC5788BD1288607539A0EB5D7C139FCAC70436ABE12B7D57C1D915C3AE1575CC7EEDC26 297231B8A510CEECD3F0B291782BB1C342BD44219F004AC2F1A869F1448354BE54DD59CC8CC8 DEB38E3B8F4899845DA13CCB707CC10D715B01CF3D7D3BD1246A449F90E96D40BC79F879B7AF 43B7A09D9DD4884F7563910E4CDA099284CF094D1D0246583B01F1E687F0A365B463E7C7B4F3 70E924900712B02B20792D0DB404E08ED5ABBCA0F1F447292857A96F3F73CCCBC73F223C7FFB BC96E095E349CC72D2A37DC40D196FB55782050E83C7097617FE0D2C663D32A7F03460EBF9E1 904A12877EE0D4A4053BD5B673B3B65BDBAF76D7BE76E4F49A0C0912A87BF7BFEE30BC1E91A9 55729D55B0691D2E573B7CA693ADA3E865E87F4C48122AB163919CEDEEAB29E83020E4391D59 00AE2FF0F086AB51FEA2FBE72549C4CD3A674C8EEC28AF24EE314876F4ECB7F161CB9F55A2FD 8611C48F3E8396DF873D8EFD9141474A86B8906CC01736588436A3636933ED22C8B8D97611D6 26BA7667B33BBB0DDD4EE1FDA2E89A3F03A18516456C029B96AB181F945C6C81990E19A732E9 ADE2DC846D19386E874ECF08F33C48C812BD31E6056FB1ECB4049E6C66A5FC814A77709745E6 9A645627D45362E798F3336BD9996C42B37134CCBD6A4BBE9D938DAF6EC6240A4C4F4DBD4E68 1C77127B4D3DCBC7D770AF6FE20529F19FB6B332D0B6CC01B4E4B2ECFA05F2F768775B311574 F662C4487683A979D3A65E824E55EECBF4789664EE971B374F62F34918524BF9671A57C8A7BE A7518A1D5FD3B27A5D116A6B0F9E3A9E4CE276A5D103FE6A4FA0E28B6F68F5A4D89C032B298C B03ECBB2E1D94A4199C6255D93BB029AFAA00B7D6E658713FAF433F2777FA3A0AF6F898D88A4 D32FC6C3E0D8BFC67CA1AD7B9D6FEC4A2A99325D83CBF1F6165842FA8D033D7682EE635A5DC1 185DE824BDB8EA5BC7F3BC046E83527228F17459BA440F783D08F1DD156DC0BEE9E8EAB6F8B9 950C39DC03000F0488EA4071047ED99C550FB8AB843AA639B6289B7284EA8E69AC785AA88066 D9F3D4090D01878D960DEAE07C2A13B8015556AB50AEF2BB8FA969764D3CB40AD44D5A9E548D E2BD511FB8E38AD40181ED288C8FF88B04120295677DC6228939DFC33B7764BA80C32D4664B6 61D7407309CDDC605428A7F4CED1F86708466E0BA2F05D4DD7244A803341D0B0D86E48DECC59 25A75DC331472BBF13E3D024B85ECF438073303ABCA65B8309BC57E64AA97C244F6B89E82B17 F68D520E28182F101116F48A34E349107DCC6ADD53F2084CD42720E35946F520E56669BD5EAF BB02185D6EADF788D2AAF54D2E2C2ECACDFC7C91765BAF663BE838114B333687A1B7DBCD498C 8A28876426B354E6B5556EA862DE3C0305645B75235A32A2AD5DA5C9B9CA573D6C88A3CB4CA8 847F60F731454F264150DE6EFDB9BE02E6F5B868DEDC1E7C55F2C46F99F80AFE84260B4D94FC 5947754F7D98E96D932DD3D13E78ADF22B9A06360B38E7395B7E2339C07FEA445F16C2022C0E B8CEA6EF469AEFBA3A398FBF747F271C26E1870A86732E4D23B9BD9A564CAB079620105583FA E5EEDA2B5395E39DAA46FE5865D29ECDBCAB4D5FFF236CA8834777B0D1CD347DEEA5EFA2F387 006125E46AF358867E7CCA258AD4A5222373749041225381D44BDB3BFB3661FC5CB3EF365444 B2D19559411E3861C3468AD08A3330D842F16439E1C7CC62F639EACE059BAD656B292C9D8C3F F72FB53CBFC7F942A57C78A9B4EE3C531413D57C2EBAABF4F32956626AFCE2BA1F7FECF1D36B B77BFA4DEC303C0F3B0B011BF3A079A32DE973D5198F82771ABE8017F9D0D40473B996CFAD73 A36D4DC52BB211880E1924CF30E191C1BBA6FE59F54E0F0DC2471BF45830ECD99893A96E136B 1A45EC4EA86E357A5A8BB49B2161AC9A7472454D5BF9748F34177036D448D14BE4171F0B81DA E7008F0C3ED828FEB647F0D06661ECD3997B3D87648CA02D3B6BC5AF94CBCFA12EA2B41DDE42 B61DA7C83CD97B66C7C0EE10EF0A4EC5E063A24B5AE434C55753E6A8245A0F745669801755DE 324CE91D1CEE35E5B44CA4D6CE8DC88E15057A20B14035DB0B84B4E9D938F68236992C1A5F3F 7620D04972807F8C4FBB3A610B5E3C5295E2A34C14504E2DD400019A770A8F28344B981DC493 976B115228E575B89406EAEB7FAE63933FD79FD29A1A489DC4B5C516F09830CF7DF23889ED50 2457176F21D1D3D192EC42A5C39E7D301D4BD47CD9B56191C5CB0D1923AE941B336451EC95B9 519326AC3014798A56C22A9CB24FDDC6C46184F14B6068854D0FDA7192F97F7B783B7F51053B 3DCFF411F4C965649F7E61880B194037C6C69CB15907E7989F4188B1B1FA92CCB2EC1F43DD09 6B3B1D991DE5882F43AF1E023F2A4437F684757EAFAA011EE65F1D9507E79C44873366253EB7 84CDE128401BCFFCCCFC56DC8900376552F45397EF8F5D40D5D1BEE737C6C307A475819A5D33 7F4B02BF28461EA571CDD79F39F9491B37108525EC550E9D8A90AE63D56A1A733CCA38407505 C1A7690C67529EF6E51E117ED62274135F8744241CF456F827E15D512E78DFF679A117FCD7EB 45D7818BFE675607F002E8902B6A179B4210296EB19A6B5BC646371784FF5137220B6FB81DE4 5FCD8901A4A0FCEBFCED40F456F6F09D59C66B0BDE0EDFF2070D64B1EEEAB48C1885A939463C 4ED7E10D194A31F9859D58F160C881C7E7679052EF3D0BD0037088C5BE74CF9CD8B441655AC4 C21C063D5CF157E63D154E2A3C0FA0A1B796B7EE86207252EAB2A8F6BCED4901CFD178EF5B0C BF5EE7CD9270AD1B1055025C14AAA045A9C2D6F01A9AA133870EFE0A7FC63104EC2B4AFBC027 7013E787E82B9581B38E70F585F4F2E01E4E7804ABE534F97D8F92C460A609492ABAE7D236E2 70CA04C2E5ADAEC2BFF1F219208B2F8BF5CFB5F13EE94D3B9A601DCC6D9AB03EF624DDF287A3 A950856F44B3A31E54D64468BF8BF92F4432937DE368FD31D7A2E0710CAAB3D479B52105E910 787A4C6A97C11496550971442CD159755924C31ABDCEA68A874A9C6529DB2563BE8880576C07 7C4C5A20262C89FF4391ABB2DFCF24500708D191BDE0FE49FF456AF3D8355E56B0729BFDEC11 884ECCC7CC061B44F48766D6C2F31793A5898A8F5900587995A2A19FF4619131F5E665C98C19 1C2D6F9511DA129C471823E78138C038B17314B37FED7AD3190C938F040BA89E65EA6DF47460 6138937EB395AFFD6CCB55FC0371F8BA2650CF2846015A912D67A848D29B06563A76A65B5CDD EF34D1B76DDDB801B3CC0B910B8487BE26DAC3695DDDEFDED0347228D046AE30B64637C3DB66 35E697493A0E72AE1C2CFC611BB42F9138F608DB7DE51CDE8520CAEBBEB05A29F7578395CBBA 7B01DCF6AE7664EEA3DC1554A62028DBB478A18F6EB6EC084917427CF6D40689468406C923BE 93E0A8DFC250DE798B7211E91855FF7CD3DFDC9D0F67E52DF1AC3C2020B593C77E8A5E6FC3D5 7AF2957B4F876A90A9493941F316AC9C1CD05F73C1301537574A7EF78D73D23C31C1D4689387 A2D4396185442858A745B98D81F2580586C88D6CF54AEE1517549241B59292C8DA1F6FAFC3F6 1F2E82315ECF37E5E8306F4FD0FB4B4D0BBDEDD2BA55ACA3EA3EB02705571DBCDF339F326842 0DA8A59DDBF5CF721D9BAC5A1BE8CB3C0B4FF98D6B15A2DF24215EF121CC06F4700F2609C817 C7C4A0659AEF7C646DDF125E9ACE18348DA6770D3DFA3B9486D9971834A7EA6881368A9612F5 293601FAE200974434D1C24354AC8E9335D5DCFC27D447CCAE4B0923CF15178484B24C944FBD 847A64B146D0F77DEB7665247E855C600237B1E311FAAAB4E80A2B8058F6F26054D111E94142 1A2A143F3C4106A506F844DCB8EEEE5ABB05C2D0B4563C1D1080B42EC330D3DEBE87B65D9FE0 A684FB5D125F7EC7ADD81FA8D82E938BD2AD25E1DF6E473BFD81659317C91BD2256FB4164888 73DD9D67CA6D52BD2C5524903C68989C3F5132F029EF0A078B8C2DB830186A2DC9CC47B9E6AD 6AAC42FC7A12BF5FB5386C558A73DD4AD02D7DD4FDAB2152B138326D968EF837B79A3BA3C0FC A3A629D8143DD8B974F8326851AFE08BAEC65344751A2B076D71EF4F49148E6FC9F3CD520645 604726239FCB202117EE1CAA906E37AD6CADB6AB92B1D31D277FA27F6930ACB68D128CD0AD70 60C4960C4B409664C8580F1C5F3B93E673A74B8094284837117A644F0CA9398FDAE7CBB29DB6 AAD38CE5CDF855E84B3794DEB9362E1DAFFF74ED1E87561A4D33A7B6C93D18F231ED180B0D11 2D789C9E7B35B31EEF4D5FE50329D6AE3E9324DCD038EDF01F1B10E249CE33E8BC8E77E84483 96FB9B74B316EE1A78F2463AF742CC468215923BFC5477A74A353A3CB7286AF8D782111B09CC 436ED7E7126E5C70122E81142DA5F1056694F2CE5D5706C6C3DD6384CC42563E5BEA094392D2 876486F313B8409A2A03CE6718B7F5A58A6BDC7D7E3967D6F7D2F2A1652D578C0C43438B67F2 E67AFCEFE2F1A031330A1337D7442AA8D15A4B1B0DDF56AE3477599A1C04370BB06C5075A9CD D5D9A6BD26B3901F46D90B45098E5940B44BD1485840CB585B8B8BA7CD45625803FC1420C850 F434E84DF2CDB1C6E2B48716DC287BDBDE64CF54C9EF6C3DF4BC3452798A72DF4C2AEA80415C 9521648EBE5B65ED763B5A393AAAAC1227C1E017DF5FF4F2428423373BD6D5FD39D90599D30F 8D39740D6255FB22ADECA70C5EC3A8F87A59EF93EBE91BFD0C9AA2BEE6B3748B3914752F0E5A 34D2624FAABCD7EAE3D4051B088C9AE1105B541DC62EEBFB0161D05818A73DE9606A3BE82B2A 37D1F7F22CA33F57AA00A40F3189FB57BB46658710E278833C08F3C5D428BCA99ED499E1B3AE 16892C9ABAAF45E29C7036D1B0EF9F17FC51399EE7E7BD85EC424EC4AC17275D980FFD2EB1BB 92E78B2B38868AE908740E0CC26F414334CEF4E8CF5222F46E1AA40E0032E59FFCBB395B4ECA 2573730D1965B2D4939F24A154B6E44334BC0C465360BC2827B14E03E0F428DF065E9F36D256 E9A76F41C0F81747DE63134EFC9CEE6DDFF528FD0FE979237FDDA7782127B2A44B2F97A2611E FB1B03BC3846CC19C86330F9D2B4B557D47B5367D597E4964257C0109A26DEB44CCA07186DF2 D26769BBCD6BC499B3717D6DEC05675016943C69EF60BE9E2A004340202288D22D6476A05A27 FFB9A4C7A2AB606619ADF733C05C38C80B1E2300CF34A1E32213B83735EF20991D4C487472B0 571AF8F33EAC2B12E0F302C63371A42F1F27DF2027211D6ED6EF86766E35151B67AAABBA4B46 9F5F2164CECB46FB0866EEA5480B615D6F9BEC31CFC9A898148363C039BA8DD87FE65F1F9C8F 754A1D38B643BDED590D7E4B45DA77B64FDC835CB412C5CBA906DC46A7C9D3584B4EA5F7701F 257DF04B12274B3833957D2869D52433EBD119E69278D93D7423C0AC9AF9DE81B6CB125C02E5 723C495492060D6CC6B4BCBA6033601A6BB3131A474BB29FF433A1F3FA9EDADAB29F591F029F ECBFC5CBD578BF738D57F8AC962C6C4196FECD4CCE3B8679A2B805E736ED48F01E027151421D 1AC18D5473F299FD612542DF45DF5E8CDE582D236BA5A3A7554C7111BD2D9AE4BFD5D53C025B BB737716686C68645C01327F7E91AAAC5FB9B31EC344CD1BE4427C612F3E397C8C9756C7B30C D4A31FFC6EA5C0BBB2453D2FC5AF8CECC5BF27F3D22E919E9B4C70BDE1E55A39461821B30266 B8DD029B63683997CE276A28EB79E52DB38E3E00FC6C9F0C98A2ADE2A3FCCF651329F33E754A A2637EE13D8F0275BD9E3670E9B6DF5E5C7B60FF2E9BC284895179A6B54A6501B09C90CE1F53 7B181DB63CFA3502B27699C0FA32BFAEF33560EAF17035A22B24AD1A92204835506F9AB0636C 7E1C4B9BDE7B1E3C85A6746574082D5A66DD35BF0925B91BC10F973B607D990EA83AFE2B43D0 D12B61D5246A4B2E6399C626A2215C6B477B33355DB9977D26F0F4E0E750EFD66855852780E4 70DAE19BE56CCAD5DA484E8A1405860F582219BD238F18084A13DBA3BB6673190846660FD16F 243A0188B6626FBE383F47C9D115AC75810B9FC34F56F4B223D6ECEC3CC04A64D56CC48029DB AD5CB5723F037904AA357A377635B0693F08BE60F7AE5E4825C939A53D481553C1E5A5D57DF6 073D9E94E402AEC39387B6534B10D27E16A85F20F20D17627EE9CFBF60CE0B42C6472C7A21ED 5FB251748D454C7B7FC51C447C6AEE85E84FD3112EAFB348EC75D99D8FE3F1942C261D1D8FE2 1CF2D4A7350F05B983594E1F47BE21E1BA9A263273ED14B9161B494D50B9B9EB5FFBDFB088CC 1CFE9A639A8E405BED650531A96D1C3313617FE5E0DAB14A2E3E95CD4A0B018A08AFFF8C5E0B 9728642B9BB9905689CC6FEBD1072CC9881DB5BD7F102BD4CEAC2D861F3AEF8F1E24DEB48A0D E5C10011828BF7F0EFDA8992F6EC5C053F050790739D0D9D04272FE9FAC41B86562075AB2030 C9329A89224DE27FA74F61FD49D8CF7F13F0A5E69600E075A6090AECB2DB740A6507AA28A7F1 57B20558FFA64A4DE9DEC8F877EB9DF61ECE54E3281AE89C207005EA3C9F5E64F2966BAE9DB2 21365367B95AD4107A842FA8AEDA660FE530D0B37E5B8E46A2956E7DAF0A5231E33FB6D96395 CFC427B7F6866C1730BD33BF55A4C43A769585D54699B5B956751B6E441ADD82A2E5ABD2B9D3 3608E9333F408B931E77D48258415A789435EAFB9A164E651162F587565CC912731A5F840D03 9CB7EA0D281A34BBAB93238A449D8E8DDCF9B36DF3D8DD2DFDC5278B98F0BC3E070E3C354A3A 39F9A97A92397D6D0F618F522A600035529518D6D90420A8D79AA2AA712CADAFBF5DCAB8E183 D4AB84232717D60DA8C9711DD697F2F46A2223DC3E48008DCFC18618C35D237FC2D7A84F709F D570BAD4BA6D5BB74835E3540746B0535F04EAC2EF06A74134742AC32E0C4D2A726EB4155C23 3275C7348BBA01064F695ADFC933B502006D654C2B21213918E177D3E4751908A3A6FEB3E612 268DBF27A6C253738D34396F50EE834F075AA4AEF14FF3A3BD5CB25DF06253212F75ABFC9BDF 7F480D66719C3A5619DABBE3EAD77F6AD80A6B7A6D83AF722BACC170293F9A5E51BF9B4152E6 4DA40806AF4417E4FD9308A4D8EA2645EFAA35B30A6214DCAA83E2F531DBB02AFF7015EA1149 A333CD619B7B614BA3B5069ACFD80C2D4DD5D19BAD17C3AC5FCDA1818719A9CAD9913E187027 7B6383290E27702BD87E10AB54B531B0A7662398585F7B67CFA1EB1E252E5C477025D77AD4D9 D7D943C3B5F6127EF5BF7F422CA9AF4A648E4213E1D6A9B6F02AE5119F91385B93F00C438A27 ABA9D0D1E52AF1CAC6A56C9E2FE7D5D37B9EFC4BAC853C23D07531F8F7879313247F9A978468 5048DB25AF1CC60602089DBA16F25E9AB0855D83BA874C00E28ED5633EB234EA457467BFC887 27A17C570FFB595ED41AA2EAD4D68703D0D70EF899E43E3ABFAF95447349DC61EE1F070E8F5F 580D691D80913A1DE2EED591859D684670E5CB9E3CD6354DBB51F66B5DB8469364E709033D02 C5F13179E5400C71A9A82FD4FDCB5DC94E53B116506B41EBA9B34741D3B5BAC7468FC68527A1 E51C12A45DC6A61C55B21CD9F8C3FCDBCD037044833BEF5B8EFEAE27A1C406DF2DF775BDBA2B 055C86BDD754577C83632A70D63023D3A80ACFCF501D3407CD7B880D7BF5C9A6EF55F643AEFC 6306BD9080505AB7395F809BA5BDC8CF5BF56BFF4D2F2DA56425FE88211CA111426425D4BD5D 1D606C1377C2EB7014A6EC0392D74A059E5CA21BB6C505DF776AAC0704488DADC008DC89843F 73806262ECB38180595CEAFC29311113C41E8FEC8A6BC75A4CD616A02607B1B0C3F4C2423C98 F45B76ABB69CA4E43F37E2F3CBE32A0947B8FABB8664C0070D72B4A464381DCBAF741319E659 7D5E648BA2A11F5B7CE3A45A83E094A1537E7E7DE0150210A675EA77F9B563423F71B2221AD3 FFF529649172CCE6F6493AFA7D2FBCC812C269309C426E8570C6992255BB8CA8157C9F2958E4 C63FC2CDCCA1A3EC1AF935CC9C35B71CF779E87B51A16DC602BFDB4C9CA1653E1BD1AA6DACB8 C038276107AD61D6E33D65B6B98E28091D4568B49DEDB9E9023F2977B4FE952FECCB1ADE607E 3C60D74DE8662C1A08C6C4F6A8E50F91C62D104A7812DFC67EAADB90E674686585680A0F2EB9 8CC92A793F13DF552E6C695623CD5F161A15807FB396DE2C4B32E0E168D765EC0AC448089A24 5B65FEE72EB77E1593EF910B1750BD29BD0DCF35890311254BE990D9E4B558753B34600C67F2 6B24E701287462CF8A7CCBDA97CFE5060A8C36F8CFFC8A50555C576B443D6556E14541F7C5EF 1B6E11CE520946F91918E10E90BA750FAEB158A82317039AB53ABFBE65B0D3989FE4128FCC22 124E162D559F03AB07E2FF289087B48582428CB9B124BAEF00A16D4678C0708BB70F692F8ECD 4D417B8DA0371716D3B5939D56D8AEC084CC07D0FF21A5F69C1EFCCE09FEE5466D7944B1598A 8152EA86FD11F3FD1FFC2D0BE04EC6C36CFC39CD29DF6F32E4A030548333EC9C9ED69471A989 368488364FA7C8D83992D35E01868114852B9BC5E66B43BDA19F82102261426FFA730C327C16 A92C2D840BC951183A666C4761B2383EA8698B5740671142E07B5161B7988D39239AA04934A1 928EE775D311C59F12D3BEEF3CE7EC9BF6DBC9DBBFFA124AD23568747DEE4AFE3310D19FD2F0 31D782E4FC8980D315FED5BE69715AE90F45A26D5DEF008316DB5237B6254EC881F5F42B22A7 70A9998430DFC54E223E1CB1F2C3CC21CC968C3A9CAD2F935699129A0B05E76D7850FA8F630A 6A76B6B428F022C17F7E72A0AD107F044CE76574ECDE1F674DEB9DFCFA5C860F199490958B06 18F599CFDAC6B2FC5040C32D1632428D250F97A5E5C686C2767808C71A3D6E86F619D651EE5F BEE3F6EBB220CF2E34E3D0B7B9EC38F2B0FC78085867579D98DFF2DEE6ED400B19E34237FCD7 5BCB901F2E6A3DE5D721A239BFB003CB4F5C58DE63E8F7F8A6647C06275236ACB4C1199EF950 EE7CC5FA7B0CBD4852B3062C1CB39137C29289A42CBAD2BEFB0116F948EFA5637F75C0325848 86F85008300C3B12E01D9B15E5EFF2D44FBB3C6FF28694298FD8F8DFA6817138DD586FA00D0A D7EBF5CD8A63949B54AC4D90FC8863490561EACA5207259A76E3EF1890A2B59099C14BD58F42 CF224C34F1305F4E30E9F12E7AF0519E80938035A2728D433D75211C73B9740EBA4926B9676D 874E41953C4E59A48579D3ACC872952A65ADE2ABEDD6128CE9C40B058D126C68EA0D40B0A081 CE1604CDD5EEA12AC901CC12AF8771E39B66487A9C94B35D882D46C5F3C43BE6AF8654CB09EA 74A24A58CBFF5A25EBF7D98E08DB4CAE7D71F112503FE689A27D75DE94B94D7F0A8F6F4F9CC8 29C1A441EBF4A22A85FF6479AFBB1A4252AFD7FABA9B1CAF518F1A2C67392B44FF9E173A6621 8C1DA8CED86B17861052E3F9B758D06CF8864B7B8B7B55322A5E50629229FB515754697C0269 41F7AAA8C6D0AD6682440A4908BDFF03C4D413C3A7353F6C9275788610F8C8340EA671506F17 4EC79EB0EBEC7BE8E62470601B32ABAC9AA3E2678367063A57CD950349635726DB14DE55B488 8E481DE009CCE2676EBC510CD94A12ACDA187D096ED6417AA1E8B781299CED175C4243EE8D51 E1AC2382FFCBA41F49D19F60761052E59B75A2D0D4CD2EA45B1859CF449B7DB95FA7311F52EC 28A8D028D2343A958DD54500756D2CC13BA81E72B69F01DBFB636C9299A2F0D3A147740AED1F D12C59B2D7D8F0761A86B140D3545F38A21A8D6205A57CB7160FD7C5971266FB21A518CFC331 39AFB70DA7485350EE8FB0134762604617AF0ED255F06616DE76569F48A2474D7F56A1829DF3 0034F290B30E3F2B34C433C11C1DBA265059490AD1704DA42526125EB03298F86C56495FF67E 63B06416A7B4FA2C2D086FB7E9A7EC218DE891051219E566566FC1B9C16EDE9FD2293183CD29 16E3572B0D770356EB2BDD7FD92794C270D364D12D14DB02C65A6E6D636C8DC0150372FAA09E 488E28525048EE8A866FE1ECC868F6059597225BB1C588A12349996BFAD2F6D0131F04185E1E FD125A2B4C4B8F2C32B6A307874B0D94DAA68CCBBF71D8427FBE1ACC6B3B279A52AA66CD6F5A 5B1E3DE70523ABA543F44074A6491ACEFBC6DAC617F805F99CFDC01BB5DD8500265878FEB2D4 E75BC616D30F63D11EBAAB94EA65A4BF64A484210A08C0604BF0BC0275899F5AF6D217B914F6 AC9AA108F921309F9580701530CA11E8B5AF77D22767151FC64BE8AA6E4EA7B595E7AD726ADF A2872D007EBBC41EDB3380CED9743A88424A665E37B941DE405DB5BDFCF89D4F8BFA6A636C97 3254709C81BC54570266EE5FC66FE4717CCBCA5CC309755E8AA8915E16E4C3D032E2D295A2E3 9F81AA5E712A29DF3D6F1DA12B51D414E60FFDA3499CBB74847210196C06FDC32A42E3417319 8ED7A9EEE1CB52E97C221C79D0BE506C6C8B493EADA00E172112B0B525E9EBE24A081518432A F7BE557EF7F37D1CC2DF1E86AF4EF353E8DFD731EEA986E5C203B343320BC3D35F4FA4423FBF CBEEB1BC75F27A40F4D9F5F5282828E9545EF54F5BDED9915385E400BA937594325973069070 71E72887D2C648989B7A4183FA3E750FECF13B04FDB5FFADA6DAC6DEFDF7CBEEA85EB154EBAC F8758A185B3EDE6F3BCC0CCF0A878DEC6D1121198361FEBE57819539E575A6E0CD675A3535A1 A245CCE669B1C31D3E87998A956EE116369CAB04EF8506ACF9E8BD2E4E43BEBDC9A067C4F1AD A019503E9725E1C44BDCC4BE132F5BA29B56B7E281400019A9122D02D49C768346D1B7E30BDE 6E184E0107507C10C132939A052E6084B66B3A30B6F4E855D489F12C9AFCE7714E68869683A5 C74A5697CF1B4D4B9BFF4E9098E98FBBA712E4E717EBFE6BA439CECD1A99F6C372D264A4A255 C3B99A41A2F04DFF796C9EECCC20AD43B5002E8E3CFD9F09831F4F02F9327E23F291C755D3A6 E57D012F519FA46A63B32FF9A98C3640517D077EE1A472CD000A80467B28027AFFBC9904D19C EBA6FAC4F1EA359AF2F3142FCBD6C28C1F2B2DDFB1D6799888DAADFFAA52EDFEEEDA38F3F94A 79C79507BDB7782C779374A9BF2B0CB7FC5A216CCE50B8446FE894E9419E3EC6F37817CFA6AD 52434F2415369128209778A9BB1A81EE08E4F0842BC8CE8890636D6144E9BBB416344D9DEA5E 65719B332F66F9CFEDA829FC0AEF7919253ED138C92C0FF7BA23BA9EE1841A4491ECC983B1C1 162B30B75F8DB608CD41FB8FA402AC96CE57D6E27060CB88BCB47FFF9132B63814964E162EDC F06A2F9452EEE25E1DD7340FBB273F1759BF9FAA1B2D252563A97ADFB26412C605C2C87F5725 753497293A53FE3B708D2394E19BC998AAE5580A62BA5924A00C90EEF883A69C3310C64E52BB C41B70B89DFEEF80B73556FAD1D947A079E8D0BE5BBDBBCC689E6C379F5F6430E44D937696CF 99C6F3A226E27E567D945BAB4997BA2A7C04FE4D9C2CA4691B687B2EABE5188E302493326FAB C6B5876541C4666A26B3B65C228AADCAC6BC98760F3D3735B89B2A2E3D43FC4CF6ACD11C96FC 6C3610ABDAAEB5FD4C7FEC50474BEAF06684A49B6B245956FC2936A68551DF931353C2939326 36FDF56F0DA797EC113DCCFF2E3409557028151EEF5AC29077BB032800F10E47F79CCA5C6F5D D75FA56638FA4E59A085532C7D830808B122DCA20D9FE537A04F5279E6F96AF0F0D180EC5243 0438E8CD1A7C79CA9340C0639367FB2AF768F36637D67F7DC6C71B14DB7A35C567A66E460EC7 0B91357D13AC281D18617A861AC04A6B73608467999B1DB7D06A52832482FB4153D95E6AD9A9 885137C837BCB0D9F2AF4BBAD66C9AD04265A9BFD47DF89D6E2E990DA21CAA3883B815F541A5 9FCCD6DC47830E5E32AC631EB16E1784D94F5A31523D31509B4FDA3F13CB6D0535C7B9D5FC50 EAE72B74C5596E271CFDFACCCBB66735C67C32560667A2AF34EC48F09C574B30D4510E8BEF41 E6EC0DF52C2B26344B9EB25501BC1207C24B8844DB1852366A48A991C345A8B1484A19E7AC52 BF541D2F95EFC749AAEB3859E9030FB12EA35ECE6739FFDFF7A6809848FE1C04A6046CADB0A1 2F541366B97451BB8D3AE48E96B7E97B5BBE5ABA1B460820B24115A03DC01721F7A423650DAC 1E6C305FA5178FCAB92386687B1D1ED0B07ABE6E80A7A46143C05D8A9C8976FE3D1761C05766 12CB9AACB370ABB8352694514954D538CA0F19197EBB5A93A2BB940FC8B5256B183C769D382F 61B0AF9C9A98FDE7BA8BF56C4F4882E0209FE14108BBBECBB8338A768692CE2499F2B612B6DE 3D617D16B5AA3BF42ED95A2B2BBC438461FF8136420417E2CD2B1A8FF07F1FFE31A9DC926D59 B968CDA1E6946260224CB22E598B1452AD408C56E8D085F90404DEE4FC07062C72BB12564162 33385EEB99F2B67C5A0D6B1044D29D972567AB47FC55BC918A704DDC2F30F12A148E660CB724 0A412C6FCDA1A34B7B8AC1025F384C41CBD2773FA11A868349DB8EB97AB311220261493A57E2 D48A2492A23F0DD6DE1F1A3D84F4F665EED8A7163C7A339D669ABE07A854E4B614C126CFB10A E94E76E20C0B855AF9E96C46BE1DCEDAD02CA27692F792AD423135E4BB034395C71C6A87BB23 A549D63823FA513320AA22C24CB1EB499F150BE279199BDBE09FA0E5D2B0394FED0CD68E13AB B329304424D14D1BF7C2DB7D5D78F7A857FF6FE7A9E121D3BC71D3E178779FEDB2F966A92EEB 6CEAE29A21461DA66535E418972DA8337358AC715E50562508CD7330FFB465FCB613BF5AFEAA 2D2E13CEF53DCCFEC3D7029CE1088E73174A9D226E174AC7A80EAF60CFADD4BC51F934F794BF 24AEED2FDA5486D883BD597EC42D4201B49BA0F89401129B0094188B698D09B1E82E2898E1E1 3FAFDE14F40E3F7B8E5CC25FBC45F123F48FA0D0A7846D4F94C27CD4635C8EB988C92C03F824 FC4C0E7DF36F0E01D36B4349FEAF75EB5D8C23E513E65F247F0CB86709944007B62313F4BFD4 E3499B67CD55A3DE0A1E030B74BC3A97B7D9AF2EDFA06A41BF4BBBA292BFB500255247026812 4B13EF6135E45E213C46AB4BC40EC5F57FDFFC62233A1D294EF1A0984F4399C925B42A2F597A 64044943D0DC84247E98D231C2D35986C58A0C62006C1E4C0D6FDC531BDF7FFF5183DF316D61 185BF17326E745C5B533E0B7A51433FF5691D84DF17AFEBF80303F9D5F05C797B3E767D788A3 BDD1191D7A6D576FE079784263E782CC6B284AE0D59EA5D60842BF0A7F55CE33067076597578 60AB8F0609E46E9B4036DDD034F5AB39D1B0A639BC8BD55FD4C800CF360014D16BFD3828ECBF 97409AF47EA32B61F162BFB3C58DCE3039692C566BF70B2A8B6F2CED7479DB7C0FE286EAE554 B601025D57AA3F26F1F6E85D17FA279899FB61BE82B59F6C70E0ACC2E600652304FFEF3E6771 C348E2C088F7837A7CF37CD1C74CF0B78299D26B5EC1AE192471FBD996FA3FFE6169087957C9 50B70C7BD174722FA2EBB27F6542F526D3D0842F17449389F3E6CE0B5712CDC5B1CEAE6C7776 0B8B41E8444FB992928844B224F4FFBE0A4EB44027E0A75E74DFADFAAF1566F957C1999F768C AC8A735F17DF653F58BB9BA4AF0985A0CB32FABBE787B9A133B8AE7D68C1B41FD3E138DD26AC 083DFE79A8C879256E5BBBD14E7B31478E3DE8ABA60893ED06F2C6479445644E795F46A9C95F 308867AFE83D0CB1DDA4C68E8634DA9E30694ACE6EA93AF1D1E9670616A7AD444F9B6CE89978 062B81346D81DC0C058F3740FBD591408A8A4F6EEBAFB5D7772FEE8F467B83713448DBDDB5D0 90E6481BBD8636BA2FD30B79E9AAE4A98E673094FA6A597A8F0DF0B74C9BB69AF42F5FD4DB7A 0468409A39EA5CF8D4882B9606E881A59A729EECF60339D5225090157843A69CEE675AA56785 8B49FAA306D8A8D6BD630D7E38C54E88CCD548F96B22E93F780CCC6FBAD75976AA2D966FD300 429B03F166E241C575A0469C17E427ED8502CE6A49A8CE1AFA36D2BB914A2E0F2BE4B2794D3A E15C8E5914B36BF9880B575D65B86C1D620B3BD6F9587EEB090CCF1AC48C73930D76614BDB37 BE7FF457AD7E07D812D10C2E425334E0E66F83F024F2FBC764F7E9C9D07A35EB9297BC7AA519 14BAA5055D2034DDC15AEC3EAC9311D99A0B9DA9DF9642FC4D5CE51ACCFF41402B227B0528A3 4B6FBBB1F9AFDCE1706BEACC566F054B3BFEF75D735D5C92656AA780E9F78D3D67933C74BB7B 7E1A3BA96BC716BEFB31099771D1348611184BF76E78E0B75655C18C42DFD2B39F3377633FF4 CBE887574EC8AF654E91294504A59D04417F01E8C6C0EC71802D74F55020B6D15AD0333F5F50 4EAEE5C47BDA9E373C09581B8DE96B4E6FDC76A8DD8F7B4FDF62DC852973B828F2F4FCD97C90 17EDC5E0A6BDF87511A896327E39267E86C851C08317E13B413C7FA7C4B180244D1A26524368 621142189D70F26DCE33CE009EFCC33BC35B211C67C9FFD68DE3AFDE61BF54A485312D6D66E1 6BA9022B97C73D77ED530E606F54ABE858F2210821328018168BC89B5D1F0EFA0C02E4C2CA7C C4B2BB366131DDC427504AD454F6E8A314D9A5A4994F21607A2991083331F559B29930DDF0E7 CC86A2DA421AB5E26341F26B5C9B9F1772F0B244B62C4686A2813DE622267588C0E5DB3CB458 D2C490768FD6A0AD83DF55504C3E791554FA56A474C44A26256BA539416ED3BDB54EDC8A3AC8 61CE565A334ABC80B8DB73490595E01986B45B0D82693C41DA5BFAF12B9EFEE509F25EC7678C C1E4EF735FFEF5158E0AB72DC3939E4F361ECA40DA40368D5516A55444957866029259BC233F C3F000F54CA33E2B82C999674B22725990A9BA8DDDA889F8DCA18A64EE31C4C82DB2BD653E55 5B147536E03C8D550CCDAE2E891D81772E10A1FC43DF9A600E025E028704D40AAF27750C81D3 F0A8E2BA60FAA0F3F4F5BD7F66C690944EA6254A33DF2A503715510772F9D8822EB0DCD03FF9 2500374920E0AB941100569ECC2C26C393DD56EE48BC914794696A4211212E8A77B1A653EE24 A02BFC350E7E8577FFA1FF9F11B587E61C08EAE8D88B073B780F5FC2FA97F6B5DC9F7439D84D 3ECC2C67B8100EAB30D6CD8F07F2F2426749A47C7EE77541FB716463F8703B6BCB80F5BD066E 94CA265473CF95D4ACEE36D05CB22C83DCC8B27C7B6BCDAB943C899937C29FE456D9D71B748F 1B57625597D7EF30813823DF79B8E368D864FFBB72251DF04F862AB1D808E25B506804443959 3BC6A7DABE86E0793C0186D7DF54BBC6012FDE7E30C4FE5DC9FAC9171D62CE801C5B77540930 F5604850AEB85A13E06620150AA55137F66E6DFC97EB36A16A9311A97039EFFBF3E5080760CC EB073475C1E9B07E1E23FE1F65ADD9F68EAE159984DC1BE07365EA94A90E2305A90D33C46245 6CB031BB031F0D34B570F42507560AB26AE4B64772CDFF3034681B7E3CC6B610FCAA65187436 00CD4889AC7551F101B927F16188792AA47EA95BB05E2EBE5C96E92CBD487106FBF63CC9DF2D D0E0C2339402875887CBF2DFB17C3E32E1DA3EABEEA3EE9CB461A7898A1AFE29609E67AD6DD5 7C91964296FBC5F09F4DB2C8315B1F7D9D324A8F745BDFE3EC7903279D78DE6E129D81CFFC2E 674714666791C5A6DA8484577531BED634A6F7EA50448E68D959F743279B9A80C8885CFEE79F 47DF6B9196F79FA4383B8681ED4754F901BD36C5A63FB1582857254DF71516F53D04F8617898 1F3E9D10558C4C7E613754D3CF26957E0AEE795F9DEE25EFA913D3623D98C1F96E0AF34F67B4 306BF5F593A96ED074700673DBECDC9B2BB27558525BA7544029DD9DB5828C6D8E563B5BE801 3E96131B9E2B11D67DAF49A1ADFAE1FC536F4DEC7C75DCBE0D6741697FCFB8EC8D2D3DC85FBE 8225A86EAB86652E0D32A00E59985E495D975EFF48812495EFD19DD9CCD93141D361B0D1DEE4 8ADC0611D1DE2E8EECD62FE9A162542BCAD738167AC417A156212A8229EF17605EE9A3E2AF8B 5795784CB576C5D2C8688A849E2F04B7A2310958CEF0380AB87E39F1D0270E002A11B97F866E 77C1CF7AAFAE209A57AD12DB90DB20026D92F123F3293ECA4AB07B86CE5A9EE650D3D1491156 A6199132B271607782E30F03E4A333E5E0960F798EAA25418313DF13C5D4BB186C37DFBD0392 459885CAC59FE71D22B1BA70083CC6D81F800F1033FE0A250DAF09E03CDE1865FBA52D2AF2D1 FD4072AE40706C969C1BB778CC4EEB3FCF993DADCA323BA2C6B72FC9B2C4679B9868B19A7E58 40041BAA7629877B130A05D1594C855B4853E70C8A1D1F58A20438C39C1E3800FDBEA47EC323 831783457FB0BAF72C02F0EF8BECC7D5940CFDB008CD258C094980C358471A2C6102C83EAA60 5523C535EDF3A96E699AC6627C5DABBBEDC9D06FA6906A3E524C2103CAE0E2DB5F926A1FB5A9 ADEDF9AA8663B026115791B810FE0EF2CC1E1BE6E7FFF7DDDBD27CDA85A34B3548B2129A5DCD 9071BCF917D9C6BFAE79F41DF7FFD4303525FCEE0F8D47179ACF13FF109E748B83584AE2C8C5 7FE3392653DE7EC742918F68F86E4694A8C9C3115A9E459DC45557A492DAEBBC306B73DFBE5D 27DE382E17AB54A77475A79E38BBC97FA60C738C9B017BFA6AB85960F34632C6010E321668EF 6647698D00DA3407DE9599736E3106D8C30A13C63D8B447506768A6771A3C18C7028C1E28983 1DBADBDDC8BABF7F5D2FE992594CE0F01ED186A4226F8B312329D30431148743E29A1C4E81B8 DC2290CCCB1B1781A397D4510DD2D08C81862C66353CB95DC06C67F2D783F0826CE879CE8BB7 6C93F57A64CA5EF9A563470B1143DB3ABEF694645337284C1EED1B94A8EB67F62AF99CCF1263 EE69F09109AA7AAF5F39A9488C7F0A1B3B59CCCF641B0789305B3E27B6DBC105C385B06EEAB8 CF7BB5A6A514BD597A401590DD3D8DA4E0C291621D9F2D9964A408FF77025134020215A605D7 77D1E509789DDBB548DD22A7C5A0C9FC6F2B84F9B94067AFD956AFCA3DF219F51671692A7EB4 8B0E91741BA2D2F3F533AA458F7C373ED76A155C18094E372F8C4766C93C33B142C87068E00F 9CB93ABAE9291F33D1AF2560892C50A3EE480BC84C46DBAED662A4BD34774E36310D91BFC3ED B9BFF3D0061C5FB6207042680713CA4C272126A4D40352320CF87AA4C0AAB5B77E2B53792F62 6048BDB646480C5FDC25725FB6A11424D3F521D72730490ACD0DB15B91E94B11CDB8350BE714 1209FAFE5222129CA80113D1CAAFC9E5F84269080AD8ADD155BA2307F82D8DA59AF65A328A81 EEABA59183F6F12B9AD4EC9A10EF0732ED2F05A3BEE8C396B3663E993B02D145A5EE5F66E30E CEAD5A7FEBC39BF46EC8F6C4CF2B31129084A58664C4A4B413F99B831807561415A15E5EEC49 585CE724128F53C19786921430DD793960103153BC86F58C760132356E51BB62F093B97A4ECC 7DEDD70427F00B45C644C523EFE1597912C4D9F53FA7E8FC6C3608338BAA4637D6EF1EEE30D1 CFE8DF2545A07388D8376499566AEEA76CB191E8DB5FE05C9D91622F262BF5564ADC064A5B3C AA5569EC5233DE0A488CB544533FBAAF602CE67E0B09F9BBE7E0BADA637D26A7085E80BF5DF2 E06690306186F13A400B726A9BC0021A34BA050079520CBA61CC3D3C61DB0E5909C2FCC82E31 4DAEDD2228D3D4173163FAABFCCE8C4ED96829B0289799755C4484CBA8FEC61C3F53D2319010 62677888699BDB42672629733D4FB910C73B307E8DCB837F53346759455702F04A42CC42325C 29D16F4ADEC550CA0CF5C9B7EC60038D7F444883FEE1A93EE0673F67798AAA71AB3B1EDF95BA 0DFF0F45DC9D6E0588089553A091962BDB39B2D19B9395380DE4D8615F054AE7A1D8B26A16B3 A0611469ADA90C9A3818D08C89A7CA26B0CF98DEF23C8C123977F2087107A1550AC33C50F076 A30B84519EB46669EDA19728C6F4455D41DE791CAC6DEDA07A108670972C428438719F847BD6 FBA1CE8E7101E972A7D5924E749A2916FBED44BCDB2954510BA71142D7708B38DB6DF559823C AD34881594717BE8D205679137747AF78A8AFB389175B5826903CD5819726980A7981098B02B 2F4B47DCDFD89653538327E431B843B4FBE0F0703BC3E211BA7BBD965B0407E31946757D1009 BB2EFF7E611654857FC11756351C0E2732BC8B99B20EC5E520AC9CC638010215CD5D7AAC58C8 BC907B6010F6CB74396B7486C0906F9B879B67814A23FA9E89C79F2019A935125EBCFBC931BB 9EEAE79ED464065D458E49AA025660B1543B0588B97C0D755430EFB05154814F5FCF0E58F03D 3DCF0C01197A4D4B1D94B0357CFCC6B6D9BED2F84C084AC953B3B247B46706C71E8BD717B93D 602241B21096C3E6B271B758CC50F2657481ABFB0A80B54B0D2F0AC2B14D0F552815885B2EE6 399ED0A9A2D3C133305339D97E44CA08D52C9071B8F34D06B2DEAD4549C591719BEF6194DEBF 8E7064C18B15DF49A73FBD1B32C1F16413F462857A76345A462419B74DA65FFCFDA65075CF3C 6201C6710BECB92696653C0B927000B26F5289CA6FDEE0EC2C39945ADFEAAFE397907A92D266 EC4568635EC21FB10C18BB9FF8B975ECC778C77B7E8E66C9D508E23E136F7B1C2E6E03AAFF8C E77008005B13217B9293CE534416FBA358F1CD5CF26314E4E6880641D8B987DC504CD4F3E384 06E63B8EC62CDF13D0C739F60799AE269706761BDC78A9F80F726739DB2C211949BF1CB2F947 7E17227E18D43A875FE5ACE8446A887A14C77D01B5C9FF11C3AFCCD91C2411072632375C3F99 8343651BC7F583ABE03439CEBD67BBB3335B94193CB3CF36210C431A202B12EBD03D1AF9C6DB B1F255D8C101BC17E301B4D37C8EC7DA0F797767C6EA0166C74411F7A5D54B7E7AA4CD62C856 99F314E11014CEC46FD5BB0C0B69A397A60D4DFEDA87B095341DF659CE1BC3A151376C2E7BE1 1A548D84F0F5777FA0C07DF33068C2EDB144719CEE27D1F6DB1FD83F254BE273BBA9CC1FB51D B3ACA31D8BBE5AEA00F61C23BA566415E9A0E1ABC230F46E40065C0D9F2F7245C138149BE9FE 0FB69C0B945DC165176EDFFCABF56B9FAB33DFBE78966064DA91DB7706BB6C6F04AD34E042F4 C6FA48B0B9F96BF5CF68253F9AF738CF671AB6B553E23F34B6771E4BF150E6B6B0B170DD494A 8D1ACB6786CEF859F934CC7736A170BBA986EC19430D19B9F090ABADF9AC0943F36685966113 9C7645141E8A7A2DFE554F8397FB10064996783310500165171D8420D1ED8BCE593C42805A2F 9EFCB4B88D09AC7E6A4B23C21A84B94F823CB3AFE754E79B9C77D2C3E29D5D4BB0F29569875D 71D142362E1FAD2AD2186258D1DF52692311F53A608A276F70AAFAB6E301FC586B0F4C6D364B C2F1815FDEE94EEE51BB72236F3D4B64DCECE6C7B21176CC09E6904DCC1FBDAB59260507D488 5F24270FE2A6F133D47CC2AF2AB27637ECF40EF51D8CC1352EBA3EF27C745663350C4EE97B0C D24ED09A5BB618024436FAD4BC458A6B259BAE107DA6FDD814B646E95B1F39CA2C7E9EA5B156 A44FCF514EF96C5865DA6D96FA8876325A9F83B75C5D156ACDA42A69ACDAA7BB306A5807B013 38297F76D0CA3CA851F9178168CC5B1ED97E4723201DA85D59FA9E3EC837297AB2759B02F921 CA65072573A35A942DA915675DE04A02E5221B62D9EF635444A37E1686A816BC71F496678378 0A328F17D3F8D3754AD2606524C0FABD57F1D02676154BCE181F8B97CE2B0C0E0F06988F5AEB 5AA15E7B3A5F2080F7347D950D3B005E462336AAFF1504378DEF84AA51AA528C2CD232EF2382 63BFD3388D0FD290DC4558EAF24F56B0F74A674A3CB2E61A88F5F4E97CB9997B380B68572043 4CFC4362BA7B23C804C22793341388502F4AA4ADABE34DE967FCB82E12616A22067947F4CD26 AB2762ACE46046E73FAE30959005EB576A10FEAC6F307233BAC38DE2D70D037F56C0B0ECA2F3 A48D4C0CF69CAE3CE44B08E5B10D3F938131F5F5E6F4A9E211312B04709E73B246639938CDAC FE24396907B7C5677335988E9D6EA7BE4D7F6850AD924E44D85D494023EF0AF57918EA99A779 34F389A5EBCC42E26B85E47EF7BCC2375DF221BB5E0294E3FFA8A51838D9ED322FB0979FEB0D 26D4E36244F5B0557EF0101B5C3D6241A1EFAB943FD5ADE870AF75E24F25772BB65B26CA14A7 034C1F69CCD38DE4AC79A8D0311978A8134810437E5A04B3363F16D4EE6D23853BC1298853AA FD9C619279AB747475BD433D2186040A934A0F05B294D28FE45801A802DBD20AF0887B9B00BA 5C4D885643B7A645E990A49A8111E6ABDDBFF944070678E003591249551C1FD79B40795C8CE6 1F8FCF78D1BE0A44A2D32C199E46DF4A734206BD97A0954BB778C0BCA6EC76162FC4222AFEF0 4DB282A73412FFC5EF9BAB16CFFA50A8A259BA0FA1BABDA8BBDE95A321AB4196D58C12D8AF91 89EEDE485B3C951AFE3230189BADAF0652535CFEF04777F0C183489D90CADF9A6553473A18A9 A36EAE70ACD5E815C03E9964703BDDC7706FD7D14B668EA1176E438E49350DC8807A6E4EE528 33C6D110475AE6F96B6318A989B6BDC1D88D28C26606E3D71380CF186C2997E8194513D3F43F 9F570BF9C3CBF688060A12885355038E9754F89DBBD90C25FCC2922F11FF1934AAFB0EA11F8B DB6C3257D7BA0F8E2AC7365A9FC76D3029325506AE25D8DE203D295617F85EBFA351FBCD7956 11D6FDA7F3BF6E34DF41B13138ADAF0F570BEF6784FFB896388ECC95087E0B7F425B6758D8A5 98D41A87B3F0075508B708675C56726022F450D6DAA8B60134BAD5328A36424C609E99B31480 01DBC05881FD423B95EC9772B9AD22A992062736432C390F55D692C90AC64A1272F3414C537D FDEAF1BDBF157726C59083DD303A6E1DED50C6F5B94C61E81F9F138FD8AC67B673AB38E5CA16 6611C6726DECC1C0647D6188085056CB939E2B1D66E25BEBEAECE4B97DD342078BAB4867B7E3 CDBD2C68B9E7D88BE56D90573085C9DF10E10B19EBE83C8A1C41F58BE78B93040C928FED3B1E 98F354823619ECF7C5764F2D98E958A375A5F0CA5D884389DE854F91A766295B01FF8CDD420B D2A52A41A0759ECED87DEAE73D27A1DACB0D0F7E4658FB724BCCEFA08B0C3D5BDC9CDD6A9463 6F8B7B4EB66971E8C599D5F15BAFEB89258185E3E935C15CE57AA6CF4F2CF79BACD605747AC4 EB081FC98BBF61D2623350375B860155B90EE6A159DEDCF7A33604D7E83C50AE7804E9A43462 2239C5A7D891859D31CF7A37DF61BAB489D857E93D5C2C8CAEE4C61E7F4E3316DC35FF616189 7D5529EB2656ABC3367ADAC4EA3342C2EF308DA183C6F40402E231586A37198970612951B383 FBA8E8C375123429CEC97A52B455CA8B384913E1527E77EC48AE423B6BE28F3F8E0FE77F8D19 7BC6FE350D817C8858CE5BABB5A6BC1276F905BA942A1601784CE8E8ED96DDEEE65D9EDE4FC7 D5BC5BFF2FC3A966FD25961A430A063DF3D8766631774C9625F1CAC03C135B6B122D4B5F68C0 659B1B2CB634D067218E127A589F87FD1EC9715443A08284837ED2BBDDE3325B7EC288992F1B 5166EA175EFA6FDA164E8391DE99E4A88F43199C3DBD617667D6FCC2561A1642F45D76564EA5 B0E925BC960CFCA1194F67743B854899EF834404C8596279150CC61909F367EB17924CA9FCEF E89FCB940710E470A5E7C9CFEBBB8B8EBB2CA8CABD973EC4D8F32DF8A39E6ED4C520BF932FD6 7BA02EADA63CF55F33EC75216F75E29E2D6937379D61EFA2C7F83A187FF93E4F17A66CA3ECEB 26B9199E1915922667CD1793FD0842E6648FF80150D7A0A447F5FFA2B8C36507F7DECDE7EB99 2FEE6E9C8E32D9BD971771ED9D0B3E95190550058FF0E6F80576ECCE287AD895AD56DC8F78D1 9FD04ED854529719471333B1C313A002D8166BB91B2983E99A09812E9BEB52F5EDA7391DA5A2 FECE694761350B089DE41343F04DC45E1B4231F265844CBCD770EF5BE05B2F97434CAF711D61 6613108312D08A9B4D3A55B2DEDAF47CD5BBC2718DA7D18A7079FAC6A7D4F7CB4F09D4B027E0 5629C14EE77663D8B29EC009924B41F873E4024E092DF7343A1864C80B6EB8E4FABFAA90F5D3 9154FC4D14438A502E60B5AF432A90C7A48C523B4267534F171FDC02E57B9EF3867758A97BBF 9CDB99DC41758BAD49A7D780FA0BF66851B52D46BFA8B96E60BE89E4A5E78BAAB8736ABBE338 C1283CC1D2BC3A07F982122A3289E35CB097BE9C27274BDF3ED19EE8628BDB48FD587159E7E4 84F6F5005F22E636719F9327173693810F978816F739574DB0382222B9B717E394DA21A4F80D 5A95C552264DFA0727FED213EEF886C149D392E900DC4DDD0CCEC84C5DE5DFA3DD5F903B93FC 649FD661BF20618BCDAAEFBF9C71CFC11B8C68143068B78FCB3354FF5555A9774FAAE88328BE D4C4996679E9285A00C12B32757C74E8FEF1ED1EEACCEA315D56DF2E814F2C8D75E80D3836DB 71C5D1CF0055A01C1EF725AB4858D73CD089B3A66968C2604F97C861A7484BE84BF95DBBA43E A6EA2C455574B715825DBCA643BB023B77D3CEC870FD30899E7788986813915FCD3F909E3D59 6281B4D858A29465DBFA76EBA156B0761180BEBE2A6C218A51A67D400DCE29A3F19538DC28F2 9971A8B01B4C27A42FD9AD8A89B7FA5F188D3135B5567C8E0B87912EEF813FB15C63BC9260EC 3D7A6909D2295C0C31DC77B0A468CA4B7F801BB06A0486470201437ED678AFEC280DBF80C771 823FB23A5AF549CFF74620AB2EE1EFC50EE09F4A0BB4AB05579670940D20F01C61C7461F08DD 8560F5C1E0C73E0DBFC8532155A5F92162F05D19E6634446EEFFB764B9BF4B5E695E9B4D8037 8EC8406C588C3EB7C919BF154BDA4A878B45479F6111798DD6FAE11A29EA1E44934C82E6A68B 0025491A69037808D3FCBDCC7C80ED848EBEC3F7CA954CEC873F4E404A699A7A980BD66E9E81 2BF39C85C55A010D95B9AA147E5826D0DC8EFFAC979ED602F7414DD64CBF2518A5B71AF4B6FF 0F59657D2412B47391921252D0A723DCF2EEE67AB89F8C12D3EC1089DA75F364E4E6E1041007 2144CB14352C56F9D8D180E45861FDD26B68A02B5A86560F3EADF5367D8B06876ED8F79BC79C 3602569AECED48BE6423888D86C3DCD811CC26C29239210EAF574CE8730016A3AABF2BAA31F4 8CE3BCC43DDC31DF81883CA92F2CD4A7B1E136AF70037AD22207F8F5E5EC06ECA4C9EE9B199E 15590E9F59D11688D22CF11060E87423F3E01EF613FC230FDDF599D1277CB7FE6AAE4312282C 4BA8A28D794628136FA0C5EEE83CC6ACFD043AE7FD985D226AE4D91D00218964C161C4A0B147 E58A4D143917A592A8FBBA3215D1E3AF1CB952BF418C9B07A5ECA3457B591A0E9C49234DB043 99EFCF129AEA7A96694BED7073AE4502979F2F0286085B799669DC8EC22ADCA51E92EB0E2633 651E822F4910B716DE01CF09B631187A6B9935D43DCD1C68111B850B7F21EE142A7A48836D8D E7F4E63D72B515728D9AFA7B11118DAE383ADF97CDB92C17075F437FA0BDF5250C251013B612 C593D93E8F9ADDEB8C03E1D38F56E6EC42C7FDE744866D4B873B725074754CDC10CB0262403B 9740596A661A2DBF057144991F0A1A4FE3E316095978A88CF38BB1B5DD0FF4E8BCCF1C7D5636 9CAD0C2EC29D56A6CD2535EF610026AD120B4BBD5151EDDC7F385B229E79B22121416E74463C 4D5246501C7B6632ADD04F8C460C7D5A505F29BB3F45343ED5D576302FF9D8EC1F400B190922 BBE646CD809A6BF2E0EB9E7AC66422EACFFA93876695B8E88ECA149CE738586A0CAF105CA587 8572E58ACF6D523F2BF3D410A8E79507A0E480AF8C618FBB459AC768CFD240F32B0B69265332 20552D8325D058C2D30B5A437AAC867CB5BB6C007717FF089C65FFA92C5C8D159E0833C54C53 040D448B93FB48B5FF2395E4774BA3764B6EDFA7EEECDB2B9736E5D7E427CE883C67AAB05B08 26CD91AF342E32F2179CB109F2228138978ABB9C8EB9B555C1269FBD12975929E91AEECF0915 D6B2068C7B2DF726FEC9DA54ACBD64AA808FCE20A34EE78463C4A831E33F94A268C5454A1CD2 E05A662786E7392B24EF94B7EDCF28428B52FD85DD03F7B38000F38C4C80BDBDA46F62B9A964 FD0B5B33F3B8FABE28538632F1B229418E1AFD6FE9263CC220BAD30170816AAE06D54541F854 B68CF72E08DFD272021DCE628962A7BD962564C054C0E6AB2742846899F9D0DC9424D820FB28 9EC582BF3B56C48D32DB2768406491C837B125B62AEF198E85D6D579899EE59B53271EC329B2 83DD4C498294A27DF14A783C517288E3B6B4CDEFD2489398B71A712AB154E55499E016D7862A 14BFBCEE308D95509CCFFCED78FF3C55510CF91DA90F10D3203706F0592400847639F47C8A70 D98F48339A3D7017A8C8462D6316BAC13DF9E12A49805E695A1C632C63E223A2799C84DAD656 DA6ED692520DB379C727B8375DF9D548F693BFD9509B3028B1EA529AA6EB737380A4FDE879A6 CC623AE8F5F992523E167791F3D33BFDDE0A516C6901A202A5C154A0E69CC5FECC0B75E61B9E D91834B659805E8B7BF32FBDC4DAF5520A27D508689F692F1D69D4E0B00DD7AA134C1357DE1B F8804FD534600ADA4790738325759F35D9DC3B077FE48817AA57CAF862713E617BF7BF09344A 74BD13F118D26D30C1511B20327C460D270E5475371AA26BEFFEF03B66564E0E669724E38959 73D98C7150F035FB52D8D328EEDB5C85E7EA7BE5373E514BCF881C4147DA0C1656523A95B63F 86B3017B93AF76536DC19979B9F617CC855DC3B8FAF171780D352F93AA78C3F25A0AF51FAE91 878FDA9DA3B094876526BF6D68A650008DC13D0F17F8445236FDCE4F725A82AA5403B568F65A 087169993A3E81684234620F58568D2801F344F5667140F9DAF63DED0AE4AE391F717AAE8B56 6347257987D49186C82B911A98F94DF8292DF7ECD76FF09EAC1400B6C34658B9025AC42B7DBC EFA9173258680D929ECBFAD99CE071C35DD8D34126A036DAB27B3F2A0F4B79A509433784D317 7324A8DBD271401AC904E072ED118331DACC31CF4EE21D1A9D805971DBE8D17AD377FAB5450D 1C0448C6C65FE4E8EC9B4BC1FFA74D7D0CDC6D0CBF0C1F905DB3F02B944281CCC10165CDD730 2F4DDF57865D32D47C8C26FBD0D410E4DEC820B5D6EA0DD6B1769AC0550F15AE88C0EFEDBEE8 4B75949453669DCF1B447821480ACFE750D13F8A3E574F7687949B525B278DB75C3102FD4706 6AFC56C4588A258813C3C53DF147FA5F225E901A297E5E322920F131093304BB9B2895E46DBB 1D020EE684B08C64E1A159A6829DE9510E5E985F53454EC367507D4B84B80E28133254B7B60A C194C776F734D6E8837CE23EDC94531AD2E46DC6BDC1E921CAB4FF785DCAE7B556706FDED6AB 4763153EC5F4B2E10491E5E427DC327C21B26DB2AC272588FC41FC5490A102ED1C2AD82B0811 C34CC8DB42CE97B4B24E194CAF230E58A04943934351805A9A0C5975E98C0F11CB0AE28C5ED9 8E52CF035F823FD449436B20CC0A913B7606A6FB2CCF4C7A12714C99B60940CCFE9CE26B22D5 DC1FFFA01C8E4A04AF28C9CA3F2A7CB2B33A725C456EFF23BB62B69878F8FB185F653F41C596 C9BB7C7A17CD9B5A07FC405AE7E182567621FA75FFBCFEF42E7373B2B15CAE76D7C07BE16A23 086500A789CCE988CAB9B321CF969A79132544B7D9503C7D30A4C86D8601743449D619A5CA87 879AFCEDA5D16FE6B31E17529D17A95C027D481B6C11FE9477412DED852C15A026E36735239B F5063B7FDA776C1282B9F50F602526F355AC3516E5DF327C227EDD44E453B27D7074E0F9D9C1 9FAA49D3DE5138498B0569B4FCFF2041977F69484CCB916856DF1F07E40B450C250BE68FFCF4 D159FB8F1208EA8904567BD552116A28A95425CDA95D4FDC06E59449065B65DD2B7047BDACDC 29A66C8FAC9BF2EFD6886FD859BB0F256B21EF2AA03E6EFA6A614B222B84B7E6BBF2824713CF D214DA92F04543AE0011D51A50FD08C4FE4BDFDB9E184EB32C399D3A2FA71059CFB9F6AE1CCC DB4CAADBAE20AE4F65BC58334164F127DE5C476EA5BBA3644F2F24F0DBADD3D1E80DA16A6483 64C1BF86D0A76523317C7D4F46C419FA31BF86D5B700CFA640273BBB9D6C8AF13E7CAF3A2510 01F06DC2D4C8F57AAE5A8B4E4379163D732756D3A7B97C778DC8637D06EC36A951DAC426C14A 58DF97D2777E7B45EF2C3F9D35202015E420C5E35301AF195403F3ACE5FD4040ECAE467282C5 1E7A6AFC69936F6D81216FB0B2E3B3DD942DB10D9BBCE24E186AD3D46B49414CE148AFAB9C95 8E7339664510E2CC5624DB80A708A040C0EB2E48E8CC67EAEE7856DD36BA948C8A8AEB120BC3 28BCA0A629FEAEC6419D70CB8469D82931C1B08B8EF46865819F4D6E3D2A9BA5EA2ED7E7221A ADB2660B474E576DA104AE298ABAD60F6607D9D03C9AF768707D5F2F299927D14BE80E258469 066AD3C2BD0ECE20975A061977CD4A1246E6B545E7E9788BD51E04DFD285F9636C663D7C6AF3 64ADDFD0336C6CD6A46A43EB252D2B72DF3B52050D4C2B20DA4F6CCCB1C1CA85EE1C9A5501FB 22EB7FDFBFD0838F0359E295D3176EC8F0A2A7A262155DD2F20CD2632FFC30E4F274AF926570 85147A75942D1611D5B0407504708CF782398C366A02AD6A8B103DF8E615126B33DA380BC2AA 1160FA63665B883A5A4A7CE7514DDDAF8E65508B2B6FC341A00DE2E976C07A499BC758ADDA72 B65780DD06133027E1D7FAFBD4CF7085091ED9DD98D91E4EB4BC0BD4DFBEBC947544A96F47C6 4E1CA2BEA3E739A65BECDE6B2CF0713743B881F403AA40AEE5A726A8B54659852EA518675CAE 5089758C77C82EFBA56DF329AB46166154F0780319347A050002319438096D4EF7F851876CE4 07D436299F7D3A0FB6E8816C37A028D62426BC615FD635060F1C69E3E7FF6D9262E06679E415 088687B4E65813C86D481C41B5D74E0C208882B13EF4EEAE0C60850DC1BF54075F41763705E3 CFF0B9FFACB9E2922B40AA7209970FA5F3563D7E6E4D3D2249E7E946E97B5FA40291742EF9BF A2DC7D4E5EE1A25F6D0D930A50262F17F38744D7A07FA9B6DB3C4D7CC96DDA023AE2F3DDC571 FF48135434E354979EAFDF625460CBEA8B65B63BC612E44D05CC3C3FB186403F994FD1919A62 44E728857A54DF535AE149D405CE6C83C96A6DC117BF178E088556E12D3FD88017FD2C031059 1A89077E0D6455E76A3C8AE37B8DF495083B9EDAFAC2E3322C07209A21B5C33AC6AF3DBB527D C1AE916CBA52E68C2A851EB073D09CDECF8C3AEC94F5728F202BEF1083215895FB76B791CA26 6B925512AD89EBDB53AC81DCA3EF1796D1E91AE23E5C60DF72549D625AD1BA68D4B7B5C338B2 1496653F61F735A9D60C437A6397899304B3EA36BA2AE138A700681EABB177D32CD0DCC8B226 982EC3BB7EC84A831569BB9A3BF30FB4A56D947464B1F7B49DDA4621907F605A238D6C5A1F21 439FB67080A3AA1864CDACED6A37D1FDA3E95EB8E70CB3B78D2CA77BAB36D6FBFF8CE6AB6EA9 78C1C8FCA06C3112FA831E693BE7562B859AAE3AAFDBBD0B119392037F1658D9FF7473B2D4EC D67B80F2EC39CB32391E41E2F8466B9BDBE8E134186312F0C97F2ACD4EB52F835D00880928EE 1DCA94DC6A6E25ECC61B5E549D1B8A2C130D61EA7A42465F0EF3E3AB242799D2639AE4B2CD23 6F195D3EE06665DC3674C8CD681E0B49C7E5B95E4DDFBA0FC01DFEC2E17A77F16116AD14296C 0825E9859CE22241EFC60ECDC3F4C56D22EE448F8263394CA1848F95AE78D46DA9FE03328476 8058CC5A4CE269EBD36B01D04B772864E136FB076154A52C165A9A0ED6A9415474890E85738F C1E112B733B2CB78D73A294367C4A6B33D15CCAF851135BEABDA0AE764091A3EA5B65D0BFB32 36760AB084F8C9C16F1E93A7531EAF2130CDB62A8DB7B42040D0A92F2B20DA2FA00A73738BF8 AA9DB2581B00857BD6D781A2C78D83792012C83D4908012347ED651A2FDF54C70D53910D6DC6 D2D278872C6E7D58019E8D04407A1A720FEFDDD6EBD79B98B77A4FAEE6EEE00F2985F8B674C6 A27D04C992B7E8B53A1E621F9D3C66DEE950E1F705D02DDB78A081CFB94006AAC8105F5D3E46 5796D2C10018F65869FF73D7A9ADB035FB37EDFFEB469D7670A13A43DF3CE14D277AEABA3833 83D36460880D924138C8A8374AF1031AFA2654D5A118A82149072BCC38F87096D240B55679D8 221041F2F7934C27D3F1B543B6761CD2D2D42BC27D7C16317D651C2E041ABFC027D3472514ED 04642E58C1E729945761DE2758A438569DDB55505284045153837A29D3BFA889C6AABB26C108 F27571D832CD930D39CFE96814370B2EA5A39376975E378B752E6E14FF1322942114E4119A30 7CEF2711AF296AE3F88D550163EAD08B2B515364854990F25AABB23D975FC84DA81CF63A416B 32AF608508DDFF86CC694A6B668B3F382E3E3AF223623A65AAB3EB16D000D86D663EC6031D2C DE50D54A55EDF6C7E47B4903C9922BAA00D2C00798CD367613F7549D9873AC4EDD3C2E8A044B AE53643AAE392DAC91F6D335112C2DD4B188C5F1EF1E5E42457E4C2F2D2A282EA3D2E9BCBCCC 6DDA43161DF8F8985745E86461108E080F647C09B183ED67257381C512947CE954FD786F0B86 A62E40327AAF77C3F5265A47BFEE2F3919A7073E84C49DB01295C730AD18F45364E2F19BEE93 8B7C92235D9E32754139E8C2F64C738A5716EE5BF2C68D09DA48166FB2490EC874C723D6E72F AB7C597CCD0ED2398BB9D99159E2D4A3FE605ACF6F7A5D4A00BB9156FABAD02D727437448B75 E6F08F1C5F17B251412C2E698CA1FD7D8D7A80AC6C7343CC7CEA23245812247F35F0F4480E10 A1D8F9D8446EE41E435166DBA0CA3B29155146C96C05FF1FD2661DBFD9AD2A7341362BF8C2A6 C10B91541D2E4CB6F8AA01F1C90E118E0DB81FC03048F54677CF96075EDA05B928E200E1620D EFCACFC777BC76E3C911229C64699560D630BADFFB00206E4DE61E3D06959B2C4486FF5DC7BB B22C634D8B136077E5062096D3C99B142E2D1AA6C26E58AFECDC55A8B90441C0459140363FFE 8928C20BF64C8BCE4DD15EC806A2AC7CB1DD58E67B69A34B28C4164BB0262FF9267544A6A905 AC3290DDA8F97CCAFC12083485AF20B6875B355D98CB5E45DFBAFD80FD63DD590A2EBE0B0429 2A1D37C906FF3042E608B3D983DE1D829FAA8B658584600E5EEEE90FB0CB13EC9633B148B696 30B8A4617527B0049E107F4F7E14BF421DF26B08BF193EF2650E7930F567BF3A05CF55F3BE9E 651C2273F5DB3C4D08D9100CBF5F5672C702696D823A43082A79B159DFD315278DEDA56458D0 B8208C7FE90808E0D0566CC2A176131AFCA80DC312C9F7E4C25A0E949AA384CE254B885CFD9F E74E88B40862238868C3F7D1B435DAA876B5875563C3C5BB3B962BAE3F9909BBB96997A76533 95C7CBB41D74347B78547085368A5B2D18CFC3AC56DCD1D9D5A53EA63F4241F1B35C15913F4F 773A48F42B4D04B594F33FF14C0B16989C4354C2DB18EFB3132AC64D02C86EA8198461F700B9 8BE371A968C0865BEE44E8DF5A7AE98B738C034CCF07E1CAE4FBFB8A50C9C31362845BFB67E0 0732FC33378066D3B8F1D69224E627103CB706AA5B6F3E4DEC74445625CB052F5AC48681CD3B 204574A1041CEDB74A51D4D21B37D465593A7E8F7AC1184C5EC7AB9875852D88E15AA1C5203B BD9DA15C25BF2E908C97678DE40D9A8226BE09A735156D1AA028955ABFF46DA51C07E8E1234C 9FD06F9B54C0E8ABB2AC28721F5CE5473077BC6A4AFD0EC98F4FC29BCFB29BDFE99D931BA28E 200F5D58136F63C5D18B4917F79F9650343873C44F8F9F699A0F5495237E2E748B3E5C3DCCC5 9DDAF98E1C4F5252F0C52D2BC4399510496E4844A6392F984204282ED84398E7C8862D9462FB AD609A8C85945B758B88E37A2A412380B6DC884BCE142DDEA569227FE306C6B4274C07CDCAB4 B48EC1806E45A27109D0B142FB3C84019F4C1C275E8309696F966705B06292C8F8622FE8DE52 6C591659D7780D424E8ED1D83F59A0289DC59556A84B5EE4BB34DAD12A92974CEF6901517285 42E222B0C32B05B2C3D819A40C4BFAD0E080E60AA633D91ADEB117434C58A7BBB334503FB9D6 85166DA7425F35097878325385C28C2F1B10CE6AF452AE0FE66C89A9426D1B25196D06CB9271 C6E973F2FD6722B1EC18162175A9C00CD155FF3EE679FFECE6889B2EF40D682FA2972EA03622 24A1C43282A08753A5205D3BAEC16DF17AB6F6162F9A61292F32F2D9DA34A45F3DFF377848B6 E5CAADF938BBC92D8553556817316F4F8F8D54983D8D72C2145D4D83682CA5D528867E8CE66C 050FE52B0269FDC98E5B48A185B979B45CCA3D99C870B1049461007CA15F4DBCE8A306D460D8 F6B44A2506FD7217F11B69A0077D3B7C2F016ED954BA5E58C9B51750E4FBE8E88E4B0AD59B1B 9969BB9494CC19C030DDF9F586D80CDD03FDA4D655D90AFCD4CFC93ED8B70C13FEB1B3F052DE FF4EAC734E8C1FA2B4AE1423E78E529443074F58E3F5D84DC1E8AF60866E49AC96210FB526F1 B4DD10AA19C53B92973CA6E13B60D319FAD574A46301A80D69737B9F60B4466B94F4AC8DF508 0C92A7359ECF6883D87D1BD45037F84CDFC93F9CF0B7D8D8795EA37B8A0CFDDB837D8F9A2327 42995FF55E0C38E2CC9E57E10C5C5D6E9EC93650DC90A82F545E54C66133F9381262E21CBC52 CD865192A781BEDB71AF318DC25239D64CF458839FC2C809EAF85AF1AD027E0BA8BC70AEB164 8F345E7B6043BF59FE71C0B20F8BD21CC93C9A426E80D62AD487A60654EBF0E364D99B90574F 072C52775B239A0DF62F256F44870302D077D114DBF83715E4A07069104876317FBAA1F7ADF9 F99DDFEACEDADB48B397B7EB2A37E190729F6D31474F4F6E2644C697E0FD8836DE337E05A8B1 B8CBB7A5A6BE292FDA3FEE754C5F9FCCD6E4528349392FAC86F7E6BFC953ED5378B7C5EA0D8B 2AFA34DF6360198E5FC5ADFEB120D9FC498D8DAC8644E9643AF39DA434BDC546FD2BCAC23511 AB1687B7943F299285D071115B4CBD650F356E75F478C5505A7FF036BEBE3682C3A00D047626 1791CF08EAAEFA6F9333C66CCF5C9E59C14829B853A660F3FE3CCA0F1F869E3A31D089E373DD A04D765D25FB0B6BF205A9FD881F00E99113C5DBFD2FBD7ED608C32E9D51FDF6454557DC52D7 2EECDEF0AC2D8E89706809648515BD4037379C6057BB89AC4B6768DBBBFB672329D3C21036A4 804682C6CFAADDAC7723C715842B25B03FA1F12A2291125F34EF7DEDF897EF4A7506F804E337 0814F4B62612B35ACD43A33A3ADC76815D29178EF7B6D2C170FCC1AF75A9157239DDC78A5FAD 4B7B759755F63031B1A7A6F6C9FAD4CA3B4F36E065E3BC3ECE67C990411940787058AA52A00C 51E29250B624EAF70C9E236898B1E2491256E9C4399ED8ED5B19F5941E76F51B8F16EB0A96A2 9FB928E35ECFDCA1BED3B12D5B5CA1D55BB2E4AD69FA1BCEC3876142B7A194388538F5BFB028 402E52505302F482BFA1D6C2492FFF4C7C882B6260215B52279E25E8D797222A2E4473CB30A4 489A6F2C566A79E9FD940BA0E15C52C8044B4C725358C667522E784194F87C543D9F77342757 2CEF02F46AACBB4EDEECC15C3E813C67E68EC8485112A1E19054AE9B877B857D9466E69E81F6 C24BA540A3D716F2E92659D252692C1D5DEF79BBA8C6A7BBE9EAA7CFB7721810FEC93F176E8B 9DBA3BEEEAEFDB577C14D52D2676566F0D04DE6931DC8ADCCB09022D30B84E9703CE37845966 5946CA535D26B3094D1B493A5695DA6DCF79527B841194790AF65EA24FAB98EC08F519743248 FC600029F2469C8FCCB2B27182928BE3F1AA4405E14C7AB842A370E45D48AB1EEEC9168825E9 88147928854FCF974821B19B65D9FFD57333D3EC10B21588F04F652A218D8E5CEC3ED25BB6CD 5EB1789E3CFAAACD95B72455C5BE8FFAEE0636C0788A587C992E6D1FA1E2D5EC8EEA82B6F75F 413707DA0EC878352E92FBB1608506CC3A4D1F676D364524C8B72C3AD5867E03B7642F335B4E 0DD6B59957CAA5C0131C8A58E0F95EC0DC6D75837291A7C1DADBE3F92642D2CD4C0EAB79CC23 7BCB33E4631BB90B0CE4D63A936348B7CC37AA207BCA6410F010890F23F6B3F6DA3C7A0643A4 44D2E3D226C754C1598D72AD25C25BF5FDC1895E6D23B9632646EF4F314BDFFA94971BF6FCCF 20EC37B31520221BE10025C386A8A1B3280BB47FCE113BB4A5F29AB70059611EEAB412C0A969 3E30993FC944B38B11211594B5AD84B0D622255A372F56A150BDA57451FCF52F3DBA2DF25BC4 16759E32B7B19309C1FA25AE1C33D668145F2E645107CCAC86E741342CA4301685936E12234C 8D612F9314090D5C9209F5D154E678BFA3985B03CE6635AB80B8ED2630B41D7D223E6ED1625B FCC417BBC3C9E5BCA6256260A06923EC1B9D2DA78C8B55B05CADB5785C838CFF582FE167CFFF 88167D7FB3B90B276F5D6F78E919FEBE8F9B58915129CD7AE5CCA6CA9885D22CF7084994D101 B81A675D0314C93041B5DA1899B36DA5DB30676B5F1FC0F3A98A33916B47E0496E3DDB771098 9AAB7642A1F77E5CF5EA22F75432DCB7DD2AEA6FC7BF8C9FA07C7F28F7D37CC13D3586D4EB49 CF579A95DD3ADE1DE06869687639267085352DAA0A19E8F95E4A7E31FF0D17CC87373690D263 4852D465CE0FEC652FB6D710163C738CFB030BD4935EFF80F7DE7D7F06F0FDB1F4C10B07938A C60C74E442E1F3A6BCC8BBDC7814B6E710C41AE1E157538871AFE3518CA8834A4B4DBC59CCCB 6DA74715ECFA03E98289479C36D00DD0D125B12F63B45E112C7AA1C5E60B986E74E56CF95C80 198381207AF0CF5F17A6635E2AA89293E67D2C549D110A2A57C02C581166747BA758DE5D5F10 686029D7F0A82E7E4889BA7160762431E00091524EA5B12C9D4493F0CDCE0B4DD38EC792B4A9 2B0DC4539A51FF1D613E75D981BBB9C20B3D53400AEAC4970FF843EFCE5EB250C1283AEB8315 73AE15427928CC2A9C0C3B04B7CEF0DBAE549AE82AD2FAB68F5D7463420EAC2CBDF421BDC88F 2A6B10521913C6BFC6258598EE979570E9E555F475B1B26721F94A5462135E9705FA27259BB9 564253D058772483B35A487ACD624B8D9FA02EE6BABD73D308EC29A30CC32BF271CF95B3B070 160E31B8649192444A80DBEB812D1D4F4BE00FFEE6BF7E4CEA75A1142ACDC28EE252228DAD93 7A69B3580830CA904CD6F5CD01977F6FBA3A13E89667DDFC777F48DB2736D78856BAEEFC2E41 C82C82466D361AA2D02FE20568F584088F4038B72E10695253D8E095DE4288A48605FF431809 8801CD4FCA473F8C3316E8FF9CEB463D3AC98EFD0E30EB743E250B974E758E86DF712E13453A E6882333F16696A670D28AA612FB9A03D46C4A866155D21AE216E7017F06C6459708EFAA13DC 465BF43EC202C8F556945FDA8F0E06A527A368C577BD0E5857F35C0AE8D0401EC43D1FF17760 A7D9893DBBCFFC86BE0747E7E6E07736EF0146BFF75DE5715E45F8EE823070433000BF015DD9 44265CEE7BA9BDD434A1D78E419608A4B19C0F74CBBA354BBCCBC13D0BBE4BF95072C69762D2 318D2E637A918ACA900ED1D59011198197E8DCD7D1CCC1F43890453AF9F70F821234C94E6F35 5E494C38E279E28C60BCC6C4132405B8CD1523A1BD77A4CBFA12C6009F5669AE3363A405EEA2 8E7A28044EC8B461B342654B2C24D50F43CBF0887C60C225409A289EA660B77F2286ACAFF8C4 656D4A369D39875D0F10436857033D2C5AD5E2619557B4F2C88A753249C2DA0552BAF19916F4 6F7F3A1F1356AD2F047B55F002D0509E266C184A77C6FD56071A28089B1082C0E80985242C8E 3169E754E5CAE6AB2EC06B5D8F1189E325485950ADA8A30F12BE6872D8393BA32C1ECD6A80DB 0FDF54919E9A7D9DA15C1BB823881033ACA8C21F3B806722F5277AACAB4A4E80222B3536E50A 2E5BEE34484310CEA6573B48F992D2B361B13F3BBD14A1E65C58B6D71CE393C3F340FF9806B5 4D82C04076AA5A4343E53785B3BED4C8A78593988BF3432A217AB637583E2898257BE5EAA11B 84231F6C9761F74DC75FFCD351F3C4101A69C98877EE17AD11541D7F57F6F5293CB956A7633F 541EAF253262699FC79E4A396C5D3289C3CAD0C31AC6CD59E794C80617E102B306EAD89EA036 85508781C79645ABF8BE697710D4D5821D1512467B66DB602A2DA5E46F646D685E09E0528C47 9C6E9D6A5503B99104E0A5535E0A62683E520063BF2698701896B39D26FE9D2FF2BA0BAACA77 A75FF905B3CAF7C7C8A5243C54469EBA42D0ECB15AFF53770C93A32B18205D2FD601F88A36F5 3B93CDB0A247C4E5750000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndProcSet %%BeginProcSet: cmr10.pfb 0 0 %!PS-AdobeFont-1.1: CMR10 1.00B %%CreationDate: 1992 Feb 19 19:54:52 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00B) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 161 /Gamma put dup 162 /Delta put dup 163 /Theta put dup 164 /Lambda put dup 165 /Xi put dup 166 /Pi put dup 167 /Sigma put dup 168 /Upsilon put dup 169 /Phi put dup 170 /Psi put dup 173 /Omega put dup 174 /ff put dup 175 /fi put dup 176 /fl put dup 177 /ffi put dup 178 /ffl put dup 179 /dotlessi put dup 180 /dotlessj put dup 181 /grave put dup 182 /acute put dup 183 /caron put dup 184 /breve put dup 185 /macron put dup 186 /ring put dup 187 /cedilla put dup 188 /germandbls put dup 189 /ae put dup 190 /oe put dup 191 /oslash put dup 192 /AE put dup 193 /OE put dup 194 /Oslash put dup 195 /suppress put dup 196 /dieresis put dup 0 /Gamma put dup 1 /Delta put dup 2 /Theta put dup 3 /Lambda put dup 4 /Xi put dup 5 /Pi put dup 6 /Sigma put dup 7 /Upsilon put dup 8 /Phi put dup 9 /Psi put dup 10 /Omega put dup 11 /ff put dup 12 /fi put dup 13 /fl put dup 14 /ffi put dup 15 /ffl put dup 16 /dotlessi put dup 17 /dotlessj put dup 18 /grave put dup 19 /acute put dup 20 /caron put dup 21 /breve put dup 22 /macron put dup 23 /ring put dup 24 /cedilla put dup 25 /germandbls put dup 26 /ae put dup 27 /oe put dup 28 /oslash put dup 29 /AE put dup 30 /OE put dup 31 /Oslash put dup 32 /suppress put dup 33 /exclam put dup 34 /quotedblright 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 /exclamdown put dup 61 /equal put dup 62 /questiondown 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 94 /circumflex put dup 95 /dotaccent 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 dup 125 /hungarumlaut put dup 126 /tilde put dup 127 /dieresis put dup 128 /suppress put dup 160 /space put readonly def /FontBBox{-251 -250 1009 969}readonly def /UniqueID 5000793 def currentdict end currentfile eexec 8053514D28EC28DA1630165FAB262882D3FCA78881823C5537FE6C3DDA8EE5B897E17CB027F5 C73FDBB56B0A7C25FC3512B55FE8F3ACFBFFCC7F4A382D8299CC8FD37D3CEA49DABDCA92847A F0560B404EF71134B0F3D99934FC9D0B4E602011B9CFB856C23F958F3C5A2FBE0EF8587D1F57 74879C324E51FCB22888B74F241550D7401EB990D4F3A7AF635198422283CAC1B6CD446DDBCB D915DB9BFF88844E784C6BF7389803D9450B0C21756A017306457C7E62C1D269F306BD3402E2 66DEFC3B5E7D8A8D2F5BF0FE6DDD40D07391DF4FAD4A6018DCE29A2B8F692B29F2023A7C0E66 DE8ED85C14F1F8492167357F51A7E84CC5D92E0FEE4D81CF7FBC8DE52D2E7BB57142033993F9 C08C315ABADE8DBC4A732E84E142D3BEE51557910E12CD8AA37C459A5E6B7F5269F59078ABA3 BE4641A11AC48D0B625C8325B38EC08E4C9E5E7FED976A5650D99D82114F449B9CA14C4EC957 702295A39A93EF93F61899B8EA06B092C3C1E503E6E436E0A9FA22576C8930AB3DC8C20F5D82 B69CDDF8FF4DACFA9C54BED5A3AA3EA5B129FE96BE632843B9B6BC91B615581A985DB56B1E01 CA60EE69CA92CF5C0882ECE62EDAD3E106D835348822400F0B66AF658F2AE56ED08F8B001057 1807009B73AB12A8CF14CA6C71F03C2A48C500F9D62266AF154A6375FF600D9BAC3F05CE3414 2D6867A79581C533176BB2F3117336671E2E44638A97167E2EA9644E31EA16C2AD2990EA33C5 4001E0C8156E6DE8AB6A4D40A7137BA275F39589FEA2E2DB8256ADC103D6F9CC038037A47E8F D469C5F98A5E3C15BD4ACE40D340018B1CFF7D1ED8ABB0AC57B5B5A2C20A51957B96C453EDB7 DAE5AFFD91A46D938FE0A13363001D844DED4323F1EE6D30012AEA19B024A552315505535C85 DC26BAD31E09C50E6512802976D298C4E90D0044C362E6BF3AB362A454EE93DE25CE54411090 C29E9D75C80CE26A84404BD9DE3AEE0E3F921AC587F907572B8354A5C3165EEA7E8B2BA4E333 802132F760B41A900C698EB3D2738BEA0AAF7AAE96A558F08B61AEC7C7D65B2889BB7B99800C FFEE5BA19AC90FCE11437BE1DDFCF0BCA5670B543B9644A71C8726D0C1005ABDB96F6E0CF7CA AA3195017CA81519151C2C0B04F81E717C0691B63A76E9B25329CE2625B711CB7BF99D23EC2B B5EC8AEFB8C1A3B422AD617B3DA4D49685FD44CC21A1FE5E1541163AB3E1594601D63C7E9880 1D7746474377CE93F81404F3570AFBD5DBFE77578605917AB96963987E6EFC2D3F99FA56ECAE 6422579852567F90CC90E4EF6D6F71D1858270205477E221018A375CA83C572B3F972C5181D1 8643CECB04909D84CF767174B3C0C8EC69BF1E9FDFBC0FC7ED97EC67D878EA4DDAC8CAA522FD C6932DF721B81AF837AB56B547D4799241310D6692918FCF8A46189A78D6638AAD7CB4462D87 74EC73D184076595C94C0B4A8233CD34F2D92F6FF94F941DFD589DEF2CE790D5CB2159B95333 8C7384CB68C11779120A68BFA20B993D8C0313987EB96A2EAA2C11CFD838E6AA48A89E6DDEF3 FAE1A1B078BE9787140270556A96E2725A8CF1AD46FB52938900730154AEC60F544C3D49F176 3861F54B46A3B70315B46EBE51C42FABEA87A5339ECE2B64270749188D73A07E0E3866EF9AAE A996FA92AB443C08FB8A840DED26BA68E94CC23CC1F6968B0F3C7E8F4FC0C5CAD0F7A332E7F9 55287ACF2485539C7B652F7A29D9E4AEC20A8E023AEDE26BD4C761BD3561269FAAC6FD5A651F FFF9211F8DF220994DAD6D105A92D5794CF2AA526B2143C7150BA584A2B597F6982403D93073 CB066B569BACF95DA04B4202BD24059A8DBDD3ED8AA9E89B2788F3B078A81A557BC743C12A1E 00FDEFFD030C032E81DE3142A106C0EDE1BC9D566440BCEC4260295CEACDD54BD0E25F6B9DD8 FAC41F453BCC731777E1E6ACAF37A8178D11BE1BEDD6681815F3D5EE8D240B7CE9B14FCFAFD5 04216F26DC2827FB0F6158416EB24F8BD7616EBBFE9378718824CC6E51135F8F489E9A55A0F8 40608A99A32EADE4251F27FF86EC7F324DC9B534D7135E30F2EC1B6D93D7DB919651E03F30A8 82F2DFA457D307F17751532AD70E632A04A63CA1A507FC6AF4073126BE0127D86974B426F489 FF62A53C1986FD048AD76454D42BE16A6060101239B138BB638765C46EB006F7F8DD312337BE 08D4381272FCEFBD74B7B2EC098B436365586A832721A0113B2BF1D853FA8B062BEEA25CABC6 0998CF4D38B49A3F4BCB372198A196C9EB6DF2CBE59A59858AE212031C9AD7FBB9C3E8E9E6DE 45DCCA521F3AF361282F7B3EC507C8B3AFCF18B9678EBB2F11C01C9DC3C4FD3134C5A3DF6B6F 4C75EC985466C4F505847F1475C91E5D83A6BF754837DA02F9E868EB0DD76EC4D31C8B1ED935 ACCA73E1CB9B4192BB0A853F947228C3064E8F923A9133EEC9C52C626E29689DD54FA433B970 2636FBD87C5D81C4F278168783509D5F4256C77A855C97A48D18DE6EE1D47C7C33E9AD227ED7 02F120303731BEA6F3055D764046EED36A06C75855A928084C5773168AB985DEA7CD767C780A 91E740E6E088CB93D43A489145030221DE0E1B2DBE954EF414B9568F3B1C5329F5FCBEE927AA 23309AD22E10F9349B6CADE7A090D19B9460405CDEB89BF1617B2C297AF5629458235F1B8C95 F5BC442DEBB34DA5D20B11E96660CE9E5CD19A84AA54F42B106FC87C7C0405B0CBBC249950D3 A7C353D691D77BA031C840C8F43A220CFC749CE34C2791DD627CA074753963D2E59794496D55 AEC96FFD48EAFDB29F8ABC8D91932DD5B01F65EBDA034BEF3C7219E097670621058662C5BBFA A939DEBF999E9F68E5C4E64CBB0774A9A186E741346103865FEFB088AF547545CF7763DA0664 96986377B587EFCA5C9EDF22EC13D1AA6F483C4A0ADDFE395F83534D7BE5285E6A207D53A8A9 60ED89E9BD27AFCBBDA23B2D9876A8D8CFCC299990D521E076CF8387D514570871376C21509B 95EA15CCFC7278851F14DE8308B72E111893F0338488BCEDD0F2F8EAF07326BF97C3727459EC 89F8121C96A45E3DB1C63D478D0A6DA5F5E6834938EF1CA41B910F25A82F2774E3CAE9F1909D BE21EE8E003E27B84C43B39FE247B8E19538648F246D325357A246365B9B2B13DC68CDD7E44D 99D86C642565B1FC376D2E530048B27A7C44B6811719054D3AC99CBBF5665AE76F11E2781B8C 040F73454BC794B1432E6C3A58BBB8CBEF345D3178C8D01D6B26BF7F485A5C3BD36DD01F39B0 34E536ABDC6632EB4038FCCAE0453E85B3BED8C3D4620A2AA2DABD0CD93090E9B8E964C491C3 AEE45B592E4EB12970647E2A5E68BDA429F53074257C02975268F8C28F06350C26646D658008 FAB0562F40644EDB0FBAB79826B16CFFEF1302C8A13173CC9CF7C8FC906693E486FF096B2D18 E96841A5FA8A34A5B4B68462BFFA48102464DC22EB50F1F80A26E929D4CDC4B90589266915E8 433D46D433ED8920543777360D25546794CD9A3A1EACE8AF188CC18DDB9DD1659F9FA462A5AC E6A6AD068140356E8C1E48DEFD171947F78F086C6E267FEF13D16EE68D0FB0AAE589F7E090F0 88FE80BD6CF8EC0EDD28C735748FC6E7FD421E33B16EA6319937D2D63A94AD76F95B61813DB1 81A113274D5F3B4DF5EE90E69FAFCAFBE4466F5D5F48EEA62A7CDCD4F9418437707F706B290B 86C30FEED99522875EF5E2D491920983BF4E9F1C71F20F1B9645E30521EBF2F1C9010103C60A 9A6DB7E6297F7C3E29CB150307FB7A1A1A94710EDDC6AE88742CC7044492DD7A217583C99A6B E7B720246FDAA00683A3B82EF6BFA87F2FCD741AD8BBA68B751740435DC6AFB1BB88D1593DB1 52CE92C19E1AB29C8E8FE89477CDDBBE29B8DCF1EA6F70990BE9A0425000404F2F5DFBAFA35E 70BB87066464C992343E8BEC66EF483DCE474F3ED7953DC1F6BBC14EB3495704D1765D0B3285 A05AE494342F6B70D9A4241291B3147C77A8AC0E08E5BFE60C8B6E2048876A6CBFAD8EFE4860 95DA764F4AB9E4D8153F89BFA2D9BF2759826EC18F64F1AB083949F4BC127411A477D4C24D7E 0FB0C96A96A31386CC5892B398D48750FD09638BA6D62CC685688E79AF31F13B744F395984B2 0AA483FDA558C6A91CB9AAE9053E7A5B5B8659BF0631C543F4C370FFB006290353908786BB5D B373233C12F3506E2C4DB0D59C1EA8EA75A7662B90C4AC1561303F4FB8536C1534FEAE4ED772 DCB49734F5285FAFC99FBB081ABC3DBE87180D9BDE2A844B054D8BBBBEF5CEB39F5CADE252EC 6164A74E75625050CEAB8FD8D8513550D4420FDFE6FDDCBB816E204115614FE82CEF36DB23A7 DD31CE6FC923B575EAABEBB5820BB2739CCBB41BE2A4A95CFFEC9332DACF05936A3194AB4F77 39E5B4A868A7CAD3B1D940056F84B41E81B072C02C0D0BDE7C64DEF54B1097F68368AC0B39E0 DF5E5733FEACF02EF12A1CD0ABB0805C2F7E7FD7C824D9B348E893D68F3F31B807829015C54B 8D2AA7E8DAA14A364428F3E706FC649E274E47914452704B1BC56A41CAAC736C8826B7BACA1D 4FAEBFEDDD0EE8FE3BCB53EE291356B7A4B699C33CD7EAAC34E3B92E7F3ABC32852453259908 74E34513647D521ADA13F83584CEF20DC503EB352BF881AAD4C00894CC581A819CA7CDE96A9F 8DBFC22767B215141C8677BFE6F1F0DEE4254986AE871F87BCCDCC10E2298BBD90A625337936 3FFB2B093C2F54001070E655E9C4CD389266DE373971BB763279F9EFC4E5A223990153618C66 54B5740049A3DE2A80D613CD5AC5BACD34315C43996D1A420DDDFE7365060EAC81AF060B8344 3FA8176CBE3F4C2EA819B493FB5B4A2E4A0039F028CAB0B47FC70F178DF04C7CD4DA22BFBBE5 344C9E9CDF1020AC1A43C8E5B9D19B621565A6DAB2B1CB6CDE2524B33FB1DA6B5988F5BE4E73 08A17C73E406DBCB51FEB3D79B84FF8B0284F7EA92BEB9CBA6CD5999CA7DD20EC02E000FB48C DCA51B8E747C0E25B28431543D9095482657364ACC1C647B2140C502623F7B9E3F335C2E44DB 33DB82C01AE27AF66BC2284971A5249911D897263210DE4A9A65232738D83D10AEA8C5D3C687 128B64EAE94D6FB30B7BA9105BA8E01BC9925C312CCD8BD273E904D8FF13F4DF7EDD21C23D0C 09A32A4C90B0577ABE7AAA53E836CA60B1697621049BB36F8013026D77910193742725574222 DDD3ADF4E872E6D57C1DED571A1636893DD7F49D8280233CFF4339B075628AB591783783548F 17134E69EC5EC25B3B8036039DA276BA1507649E7DF1EF9E29F0AF07BEEEA346D470B4F1DF92 5040602539BD1D8218384B53BDF16C74A1A6BA2A7871B67E06CCC015BECF2F020295E27CFAD6 2D3EB7831922FAB24780FB158C21E769875373606E1BA9BDA9F15352EB5413FFE162EB2AC194 4BD7D980D232A2F3DB3CD38390E0DCE3241113CEAAC83EE29B2980EA6DDDD4EF5727024E4343 AFF44318AA1382662A78A41BFD6ED98264A6B0BC629CF924EA0A635B0885D682C26819043E39 ED44241D4E8B50AB92256F9431A8123117D77891AFFE4E2833BC0517DE287A747E88409CC30D 7D098A4FC80C6D91534304E7FDA873FEFF704EC1F7450226F09D5E89E245622973D9A789736C 71E6651182BABE81ACA969C62E1458FA67A3B9D38CF364F383E719F7066D2839D95F262F8A5A F87DEF903EC3269466519E68E857088D318839FD0B0E51A6D358A93A543E2401F57FF7E970F8 BB7BEB37BEACAA000EC58DF62D2064EB45A81144C146B744B10406EAC2C1E350E2DC328B6A83 9DF820B289A84167B404BA1FC63E453DE7B58A9EF959D7E2FC1DAEB5CE90A1DD935E8C5D7DE7 E2684FF0502901BB451FAF9ACB439F548657E3BE938E7A2B5924DDA2E7010CD26A181D84A5D7 5294F6E56DFF88F3C207C9D457CDDBF2D3037AC9A93CE9D53FA0CAA4F21057762954580F0F2D 47AF43D5D7679A9D44D45D682EE73493A2B8C390E24EF27C84E701C879BBB1FAD6BC8B89BB27 959EE86BE486786D1C81612D9546AB59D5216367C027B5B0F51A41C9AE2778A04965A846990D 1727F3F3E09AD0B913C9742371AB5669A2CF4863833A19CE69FF161B1D6BB0CD61272CF94526 4584ECDCD290E2767F087A836F12AACBECAC49C3FB28A605C6220E8233EA2C9AEFDA87EA2CF9 D3D52FD6D16612AD07279DDFC4F20B59C905A146B1F4A51547DB82758886E9D3609B495BD941 616057E460B94856191791A2D16B90A7C33534A9DBAE17C96D68E009219857FBC92EBE189875 EFABA56704CC9305DE0D32C4CA5293B306A4EE9DCBB131C128626C4171EBCB2DEE830B9BCB98 B4FE23BC63C9186C21EB7D9CDFE2E685399D57D6D1A857C11FFE47F6D0BB79839B6C88702EAF 6A59BEFDC8B35A03768AF411EA16C277F7EFBADA006619B31CD2EAB657BBC8CD4A44340F4D9F D34007ADDDF2DCAC3058D22267490E90657808CC716B7EC3444638215495A7BF077956F16EE3 053864EBD2EAE7B210EA370D71414952F2076D689ABD98E76030D92E4D49A79734FEA3F05719 8F8DE62F64468D06D0E6443EEE3F2677049B08E8A09907A2785D91C009F8FAF6F1DF1CC39D0A E11E8F1C939A0C13E49A448E89B0EDA7CCEF06166A8449B358B0C661E40A7935A6E4F866ECE4 23CE4C978CF749F3B2B8AAB56AEEEDD498DB77143F77B4FEDF5C6502A3D2AB4D0BDB8EE456D7 DA3B9CC800DA8D0CCAAD981DA5193A528C7B5628F065B7FD1DDB0FBC4A74C32751E8B4747206 8A3A6F380CE2258D33FC49780EF2570FD279BBB54D4246F40CFA9F13AA9E13C6CC030DC19960 115C2DAECF52027F917D3D9D44C60B0B2D1030EDC6BB055926CCC512AC2BAFAE7C12D8ED487D D3901FC2842D3A7A69117A8B82292FEA44FBD40BF6C27686EAB94A520F63B77B82D5425478D7 4B5E4E81A8439F560B1CE7C626E51CC3EFB877A9AF37BFCC1A72D40855995DF53B3F4451CC29 A5600CEA6B2FD2BD9DDF106FB7B6B6E19477426212F3B5C25DCB1B777B643A318046E02ABBEB 67201DD98D892D6E13B0853CC206B62AC7E7D386A77C6C9A3817FFD5009D515EB5F770DCA0BC 4D9DE562EFDAAACEDE34096EF6DCEE08C735DA36893C41592443E0B69446B93EE9F758EB75C2 4FCC4E8193A1F77999F2D4395E1BD24909CB805CE3A26A47ECF376A79F480C9402DCF3A86BFA 971DB7C977F813C21AC8C071B6F210B251695A40B735D7F8E27F9DA47AF7FDE2A6E7321488DB E7555BA82E23FA2DE3092227E1A21C5E6DF4EC83A0578B4E99FF377C9E655D7D6DE412CF0F67 D3ECA45624BD1AD4EE76AAA5F99C73A1FB470C8C7EA472890E1436BB51FE764F95810DA0C3FF D1C3136223F6610F3B226978B8F9E35C9B09DC863C05DF439717251910A64E4AFAF2323CE1D2 A168DC57CB1F4F2F9D24071F49444B1A5C6956F236734816FA3147656FD7C5F547748AF983E5 529FA4787E540BDC4023377A7B7E248A37550CB0FD519F30F1BA3A323D171612F802068AE4FE FF8D067185F9E5211B1218656EFFB8762824E05EDBD304B71678B3C4808F7819AF193B247D3D 7A3EE51986157E6D101C07A521379A097751CC6C53FC6AA6519E2D0093AD0CCC5145F4D788F0 46EABE997100DEFFC6B7D79BEE09A92E34BCC15124D2405BB614B4E265378126544D041C4A16 71E65832930D6F15E11387F39862F9BCD513CC611A9F9ECDFA53175DADF03BAAF5C32FCCAEFF 3446E67A62D3B15294E426310F64B6509E88D3225DF909BE2C73A9CC8CC643645B394CC3F5C6 1FEB91F1522CE9882A60504C14C69CE7089F3EE5B3202D3E5C2C2A98B8A4C8655A911EE03DBE 72E474EFE0A0B1FB9062E474DDAE008B0ACE5016AEFBB40F157B9BF07ACBCA319380105AFD61 5DA19C9F932BC8D14480F6AC4E607FD4A7C34AAC43CD26301EAACAB8A4DC8584EFEB56A2E569 5E84030F39501223DF87FD3F16D3950713C483D8164FE2A180AFD985C11D55A9E22A61F0C5FD 3A0036DC51904A84B07D409388B897FC92C1C91A971B2482E668A27386B33494F751B5B9EC4C 5ED765A88F5A675960AA7F644E77696BEE684E098C69A8119BCA27067E52E1FA95C3E54CFA56 8FEB54B92C3A8A2DA2CB44C9DA1DA7BAE1B05087D025F767658D885E89D654620C2827013ECC B38C7021F83863313BF35116AEB2669FFABD5F1F035C23BF0244099A32D2FD13EE00C09E30EA 3BFE334227C6A143CB716A3C584B6ADD52C6370F7BA917855F2295B9DFF2BCA64A0504D0E557 861EFB856A19CE99B64EB7EAD11C2474E79D5EC30DE5DDD094AC37D8EE50C4F4D39E32E284B2 F347848ACACCF519272AA1FEE3000AC3A495B54385CB50373AB7B790B473D0449B7622AD526A 1BAC985945964D6D2B05089ADCF9DB30F1032639205877D7E78DB7F9B136055C1451663CE4D3 9FE864E02B1339006A1065FB76C6E438EB132629AF5E1FCF6022E608674E3546CB02A893B558 F3B2C76BD0A897B4EDE61A21B8F6C34FFE820D66F3B89EDEA86E13EF5CF0E33E82BAC2B4CE6C DDDB572ED1C9AD69FF853ABC58C0CACFFC0D86D80D7C8D10139ED4C9DDA73C4B56E375CA70FC E18EB1E322F046A4A44AD7F2731BC2059E391688C03B86B305E9BD9BAB8F3D1B6EE52789D559 A5200AC84183FEE544DB210122C74BB2CA648599DB3CD1AF261567B84AEB332F0647288F8F8B 01D5068D74D7E89472D8DF3E901F6B523FE04C519843E0B730F403BB99CAD493201F950E943D B95FC52B13A3AD8CCC6478D5CBE5DD019BED1ACE4D02E09353E6E31B9A9EA9C76D89D9490D71 3CA451693D235A0C8B0A3DED5CF2A846ECE5CAF52627ACDBE76CF57A09CF6768D0A53906B15A FC5183B9DE1029D19E64B64BC2E075B536663C524BFE35C9E412A7C0D23D316E0645BAA41DF9 ABA61284F801F7CB852F49B24A96CD4C743F9B1D1A69F3E30808282C32C2C4655715D8F3AD53 F3FDE97823989864479EABAB5876C77CC134EB66C688BE3777C74B3A87EF1616DDE5A8A46185 997DF2FAFF5518EA7AEC3379730BC509D09C5C378B47DA67F9F5740B641DC790766896352D0B E0EE84D686496066469C995583EDA0BFA51178091918D2B9EE8CED4163E45FA312885A64F177 F03E6D77DD649C7D71B47FE885D72887927AC070CC64E825917776264E722AA6157C22A429BC 0D38B56E5A0D6473FCCAFCC17B4BD8860ADDB9BC33E2FDED66EF95205FFF084578C37913E205 9CB3C1ECFA4142C0A2AD1781C373CB6FE9819F4CF8E5B5774D7A6BABB1FAA71D0C96175B9DFC 08A3154C2F1AD566E0D03E6A01D3848F0C6C06755A0511948D51FE8626A32AE97CEE9C01E15E A61A556170E7E4D3697783BD42D586535C38CCA8D543A9AAA828C4813E89BC30B686049910A6 C01D7FDCC55895A3F7019B0CC78C23925D8CC1207C51FA19E6B8992A289EDD5669C33186A7E8 38D5A0A3C101C82558785010F877B05D943C5F874D0524622D43EEE25CA87C2AA4553804CB6A D1508B9406BB1CDF868DCFFD19483BF1D8EE2844E62A2E1CD09807983B7742A841BA2A03D8A9 2568624EF3C504F9B2F4389E23E323D1FA1F4F0670711DA7D827400F36C9FC870EA2553C7E25 45E2A5086FED5BF966114D5FB48721AF70E04393326BDE080D3082C292C9C251E2D82C0C3F03 04E9A46203E0E5E76829E21A3B961F02AFAEA15397F0060E5059A5FC66A2B622AF1D62FCAC51 6EC3327C95A0C2810EB42A7209D12E90D1D41EF442D0F3DE55493615D4135B4F44BD09759657 58B16A8DF9D39E78A73DF41C2EFBACC2C91ABF75C849E2BBCBAD263F8577E16D60BB6BD463DF 3A4BAC62F28B44CE08BF52A268AC27779E3A317B965A44321615891B627541C53768F33694D6 EE76903BBED8ACC45FA00EEFD20224E09D95E93605987839D92C4E0E1853D8C3F25FDF0A8268 B38A6B8D9286535A49B25631BF31451F81B5ABCBA66A07056EE34EC320367DCE6CFA97113291 32E1155535F8094570639F9FC72E1ADBB4EA99EF7C7CFCEE8D74C2AC70927CA9973C4E1C4DB1 13613466EAB58C0037BA93230A3D6EF41739122912A15319374C6A6D7FEDA8B1DC15EDD2F286 12EDD846D8AA051F24523BF92C6920C2AE3CEED5868BDA6ECD483ED181AB69CCE78668A087DE 0A00A960810675F75412A8EB6018C638583DFB07B4B4CA48C2D3A7CD407F552DDD7A91556004 2B173D2DFE64EAA41500FDB64FE572E09D06BEE892AAF0CD711F3D6752302EA4F69AEA675A48 EE69C2416805E7E6EAD9889FE072F1C2F5D3A89D277A90DC9EA38271DA1A455CCB3598FA99C5 5A788073DC12B2265D409DE2DE24FB4399E911CA80169AD5812BCAB83BD0692C37A1B8053585 BD7303C20B6A06BDE9873823DE9E9EDD9F403E78E7C386341919035561CB94379210A5E14CB7 43687CD843FB306B6946D8BB1C290D802EE3F096F54D70743B22E661F81C89F190971F27FF9B 0E6C273CE3B35E6F5A586B411F6CF55C2909AD70D348C6F6322EF1DD08EA36F1B99ED590D012 3DB978BCFF31E5EE9EC3FB969E71C0864757AEEF1750ACD6A6F08A086CCF15E65A712ED37564 B73DCF2A5E86E05C7725DE9F13DF59ED3E92438D9017754365735E5731853520D9771223DE22 52388C4C6F7FF44614112780B14180C0CE01C50F94BDE65F4692CFF4B52F6D9D1FB562475BF9 E94120A510389E9B3574C62FE0CD45E19615971BECB8C2388B4D5D095B914E6F887F3F708D7A 65B516758CF5EEEE4DD127315FC3EF04CD5915978141B2CEFB3D2C0FB5DD64E25EEFC85CB2F8 80CC6AD20B9C9F0C1256A9C4E8CEB2B400C8D50079E6F58F7A064CCA9FC3EEAA7F7C34BC51D6 799520C5534EEC1A1EFCC52B9ED43E7695ACAF3EC4590D9C0BC16915769DEEF8F39BF7992449 4888D4DCA2484053A29598DEC70C2BF94BC2494BE4841F9676DE13196AF9B9A329DA016F17F6 2ED26A75CA3089750BE5DE919429B989EEB4C10C20AB764BA2C4035F14264B055771B6AB98E0 D673580FDEBADD2719C80E9B8322112C9AAA9AD2329B045EFFA948AF1EF7B0038B4D3C068CDE 62E5F808213F4A04D4979BFDFFFAC94483C546B35E965D4D0625FC01856623E146EF193A5538 09C0D1E182E8D7759CD2B467A84254A2EABCEAF9E764A05BBB84522353B2505C56115F489E4A 906064C9C5266F823741A1BD1695796BCDAD01B38003522EEF9FFB7FB7F79F8D6C43B6685C17 F72F06060993C9A30F8E31AE8CAE4F3BAD51D8262688A6443CE6A07C1CF676CC4F755849E2F9 DA19B14130FC72E31BC6E4E062C041EAC5EAC486032535FEDC0DA2F8BDFEE2B72C1BF0BE510D BA08E0A5700FAF1686EAA93420F20F92C0516609ADAC4F7EAFB5FB2CCDA18BB3FEE2702A462F 8AE39A733B0699D29FDA1E821FB03964F477A2FF5580FA4874F60D6F3505A4287E17AC2BF565 9E42FD41F257EF45798CE2D8E09C0593FE7C41E67D79316E8D61CDEEEEEEC60EFC9BF26E803F 5C3EE7404D05ED2018F8C9DD0EBEC3BD39E20AFFB51582BD5049DE9AD7437849330674FD17CE 6B9B6F646F9CB66CB5DE5457BD512BECCAED183FD5C5D834846E6F8BE301FB267A4A67758590 3CE45864294FEACC65B46D604D84D846098339D20FE034B77A49DDF85718CF9DE18D10028B37 15994C5F2571EA3DC7E98F66601C647C80839E3F3477D78584870837F653243BEF6FF49C347C 5FE9C7F45A28F7BAC5AD9929D508628CDBBD4EED3295F06CEB89D378632C34D514A0B22BEFA7 E090AFBE45EA64C03BD1367B63763F4570D25F59E83D344E8DDCD26CA66C1787FF09EFB314E4 CDAA3BCAF8C94372828623E973768B6FAB1327C6CF5BEDCD37972CC2505B12D2A26F7D5AC9E3 F623024A9370A44BC95FB17C035F71BB43853DC7CA66BBA610CC29FAE5636B21C2366F88675E C0EB2BE3C127BFD579CF818ED98D657779430F5C75A0CB97A52F3547907BFE2AD55A59B0B5A0 DF0D25000907FDB6D5781EA549FA89078516665CBEF095D9411A2DD1CF6A355BC77E2447ABDD 21DA230AA18D5E130DFEC1B75E5C1F6CB9D3C860A95E9FD960EB8D73EED1E168E357CF305786 A8F01B63EA2D9301A6A3F886CBE4F678BF1BA1CAD67F3924B6408561A435E0720DCDD29C53AA 53C1747BA074E6588B3AB7B66B5686AA58EC9BFE7DC107D97B8EE627C9E79601B95791704FCE 469944BC90EC77AE5A9A5F2A73A4894712899DEF4BA334DB850A7187988BFC315A5E207AA6D5 76741B3068F18C7AD741B6A4B6DEBF5A3C3E178D10E25FDDE0A01AFD5EEF225849E3B5BF1846 28EE473A34303C2524D78B8E7B8D9308F1A90852C8463AC1997C91DD233CCB7E4A16E95CCAA0 E4AD48E2C499397A4F558C23360EDE957D872238A446C39024A369429B2CE348AA5FAB425897 EE02B71F085DE26264002AD168130598150C4F560E0510A135014E55A74F65B4CE7E1A96146C 609280B49F0AF1830C3C8A6045BC7774D3895348962A7AEE947AC962547AA28B02608CE2F91F EC34848EC86C4BF8507A9C0AE9A0697699531E11ED9E85CCF52231672F0879B801860B013181 5CCFC49012F03305D6D382E4E4565BD1D2F860EA8BD636D8582FD332972F1CBE62844355C933 786BE37490A7EE43217854DF7797EB8680B93D9220F643DD70B2993A7A0A194159A9BE04441F 478A77B3D2CC38302701166DEA70D72224C9481BE0E68BB6802BC6E9D131C3B3FED642779139 5CB3393D4817AAAEDD39AFD6508C9CB4FD67FD3BC18C65F27203AE022A522C1B750960B7A745 0EEB8718DC911D645198227B2E729B6CA4149EB9D21369500208D94593A087C76205D1046B91 4C31FB5F5D6FA1EFC908532B27AFBF73C27E2FC9228ABF72920CE48C03E3381A952A0B1F25A9 9EDCD216B154AE6279B33315E822EACF095C00D7359EA834885DB0E6D07BAA9091FB364CFD43 E378ED0C06B9A1F7C3A7922C85DAF6CAC5FC111A51292D4C7D43E9773F262AA032782252CEBF 2274842EA390B0056C3E0BBAF1DFE11D91679F6313316735FF6820166D4FDDD7E76A72469529 1E224466ED210C82AE79C44A828E7B625F872C5A3723FF9A09E7D77D0555C9984F7EFCBF3B9A 1B156E5047E312C8CB86D26B0E6345FCE3BCF8D0196C95C5AEDED0403733EB6BDE2F6A65CD1A 0FE13DE66A2DDB3F912ABBFE0CD59D4A6D9299E1309CF7494C93896FE76C132FFB98E3315B28 950E21CACA613DA51EA612678FE24DB3B04BA25EAD7E2A020318D2C79619B78BAEB21AEE2E60 69D8470392695EDFBFE2DFBC2274D8BC8BB3551CA84E341419C7E718187260497EDCAFB7F588 D1C7663CCBF8DDF1FE23C48D1A9B211BB0C75871CF8DE53C45A00E601F87BD65B9471CCC46D4 481C5E83BA65153CE608D5FF6595FCED940CC0999FAFB2F44E0055E57E59C73BF3AD6FF70CC5 A0F32A97D61CDCBEDDD34A295A3A7A9DF1EDD9169616D1F8D4C5E20A86DD2FA590B46A974D11 45FE89D1F0664C3E0FEF70DF6D393AE7CF0B662E285C02E9C447672F73E90138E68F216C0072 F5BBAB3943B40D24FB09841E142889A4B927E4A7F762E0ABDE430D6C4D8026F76A62B3B35BF9 53B1EC19932E8E24EF20D2A50BD0EC86D6C0A61D1B206AFDB625353E1FDC15F96F3A48303DC6 CDB7E4131FB3B6E7D80B1B332673F6D1DDA6BCD90F359014D59EB5445FB90E31E51D9E1962D8 20792C2AC64E60125B0EE5CBBE02AC8BB9CA43A2961A5012E0BAFB42DA92DCC8948B043F0F98 C522149E57FE699C9BCA6DF84D5FEB2F55C49407AA52345AF0F2B39C360876D5A6FD1C3C6D42 82F070B8AE2DD3BB78DD78C7801A235EEF4A700128A9CFC7CC3B122CE69DBF577F6531B7898B A31A1B915CCACC4B3B1226104877EF805795A93A2F2EB41CCB759441A17E6B7B033094D0861A 5A55F80D94B203FEC9582926A9CB5F8CB395C110ECE72754485D674DF6CC0BB84882BA26FC17 01E3B2530A2D44DB5E8702DF2CDC597A8BD9CC12E95B7D274A51136B61E49C7F920BE8E6E17F 1B20EFD1F6F84ECF575B2CCB40AD7876E8B8C7B083E2CF8253D06CC4F6CC2A5FDBBD8CE6986E 18F759ABB35F7E77AEF16D5BB2DFBB457DA2ABDB2148EEBD4F88DE2B9B3244FF78BCEF9F98D9 3AFEF587269D7952B9557D0EC61FB268980730EF3B6C5CF569EA19DEDD3AAFEC29D8FB9DBC80 43E7C702920C678DEFE3017BD9791D74A6CE7A6BA312EC7407D2771A6F22E3E81EA35351C3CB BDA7A7A5256C67AB65C84F0193D75209307DA141DC60D87B33684BCAAEAC9047A0F3861EC185 132A14F5F48F19E38E132FEE76B5D7C70AFD29FE30411C5B7D624BD75FBF27D89844B1845F02 7B866433344AF2DBF37587F2144E40358096A2F6CB884595E57C3A21A1B5FD1A9E007C530FBB 2FA384169531124511C0E643D093478AAFD5CBDEC5EB0EF47546A893EF0D04E30A89BC3D4516 351662F937F26C80CA874E471EABA85AB541F51FE6F94E01BA628A0EA320FF000A2C3B93162B 40E33F49C81F759B0CDFC167B5E06A6B2592D78794A4A91A03F9F95AAB96850F726DE1782B03 F66CF1C647872FE423AB0DAD21098C19A267859AB150D8CEE49EA83C0984C348D06E99EDB60D 797683B4B5255E3C521619DA2C26038BEEA2C6C013383A30D6155C3C6FECB3FEBF3205D291B3 E26CB6F76AB6E222FAE350EF49B9C15AB1DBCAE734E377610A27B1013F0AC3B11E9235E952F6 C65DAEB43581FE06E04BD94DBDD42AADE4CD6B475DA642910A0240BCFBB2848039B614F11B5C 0DE8B157BA49EC715748F2857009BBB3A0B550B4EB88631B53A69F025F61E4F0A1BF13265E20 78C6291C114B8ED63A7F3A2D3FA6EA7BDA7445CE3DFA913FAB9FC964D6A5599175CE8EDE602C 7F17CC5E9390AF0D3148FBE8E7D5C8780DF83D34E4C1CFC0BA9DB11975A171928147D4053086 BB7A29B4CB6620278E5D7D42B5778DB639D37D3149B525FA9A2B972D3F33A2E6735130446448 EABC73AD3E00E0B2F5E774ADC1AA4E9ECA4C0E5DC2AEF0F7DAA42D37CAFBCF8FE67CDD3E7C02 413E617562850E2EE2E68744895071D192B4505470D228C8CE86FF4B650F07E454F8DF8F5376 8226231441DC5A026FB268E920C71680BB1426E4FFB38B27A019398C3CBBBEBA91C4988E10E3 D873D3A7C8FC4FAA207B94A23E653BD646505B8688530D3DD734EB22AEDEAEE8274FB964378E 744E82C76A1E65E40A60DA47189ADB7FEF7006F180C2AEDE96672B55E12700D795951BFE14DF F7EAFCF483E8036C07226D1259883EC8380404BA3523D786E55685878EA1CC6F9D2B32DD91AE 126BECFDC77B9825D602E3F18EA08021413BC95E5F64A120D41C719CD786BF2EF3E1A9B5CF28 D80F65B01191653515BE6B53E59834541465F45839682F587530B63A3BA92D74062042AAA119 12B071EC81BF6667D22DC7302F0A5299F3F3432FD03820E43BCE1007BBF0620163A0AE9C1A62 B6FF44204FFA819F9D85849D450ABEFF5F3EE19B3FCA8EEB405ADB8A05C4809BCA050F846975 C56B5079AE720299A7ECC8D846776048693005704658E43640CD89E6149093B4778AB677B379 7DE560AEB7E09DBE57D723A4AA62EE8C42A83C10418133D262E5E9CBD39532F3881662FB84C3 8F33ED685443965795C725956506FB106FE0960832A2C292560D3A43EEB72F4355B836CF5044 767477AAD5346469F8E4E90F712DF820A0B7183C0FF090444A994D81E2941EA3C373282BF57B 9952FEE56B1B0B7AD89AEC79A85DC03FD2A35F5B87E061D15B65A48398F836788F6B41C749DB F425391D99F0B31420DEB5C800EE281A427DB0C1FF7E03105C434F95907BD74775C980B4AB46 A88652C8D59BE6CDB3531123CB25E9AF5CDADC324AAEFB9F8DC7E1EF4D288C6DA52487B922A9 C9526875CB3E528AB79122F9886517E892115104A20A8EB4CA7628083B24C0B0F0DD2BB0D35E 3E1D3BD0D50135F7B7F1F5FA5349C9953C4F61F00EF5F11E662AD12E8D9F156E32B845FB8E12 1297658DBFCD943F1AAA74F38D43EBD080C41DDC92101722D829DFD3EA37DD5120803EB06734 6B636815A8738403DBC18BB8D8164A8E450A7273F8164031290B465A44A268CAA510E9EFBB71 114E603718BBE415F2426ED24BA413B286C42902D8C5E483070D3A3C57058E6D640369797383 5C78166A00C235F8B4A4D155E723010F7500A7179625D248F2DCD8A368AA5FC85600143AE81E BE8D901EF42702D30AA628595AD111ABF0E1E06A7939420D648F03FC840A51919C588BE0F7B3 BF71B51EC7DED081D0E2FACC72D65C77FD6864A2A30748803D0558ED2BEC1FC3A91710CC9F6B 2C8A66F8C4EB43635926CB75B89AF438F224DCC5A542C653790E2CB2831E6AC5590BA51EFF51 40C5F620102ADA7E964D21ED4E7AA39B2735E67E1862227C6E1DA2210EA7080000E90162F5F5 2677F188D75022B9A6173AA3F4E45449348EFA7A4D119A8C4682A1E205DD922BD9D65A5620A8 D9D103B853D56B872122F3B649565C904E6284D66979793B16C853BECCF478864EB043CFB096 42F0675D88E62AAA8088291E844F34AE84CE4A93721B4F262E0BFE50BC17184D4A2A469FFA94 8671A565C708A79A8DA61041C5F60B1D82A50C52A6E145FEBDBC69CD0F32D81382EAB87FE7EA 2EBAB016E169E5092C277D28A0C1197B760AE2EE5E307FE6B23D120605E03374AFA65DE773C9 B543D6B6321732A158873823AACEDAC38B2AE5DC0DD9EC0BC159C6861C99B18722B6C84CE819 07EA32F1D8434B6CD6C68523720859F1C1663A921B7DA0DE2A9775B181AFF992AB12E1A1F3E4 54E7342B9947D893557DEA500F36598D00064657C8B952E299D679BA20D0583FD6869F131495 6CF2D1D8E81A0C20556F28F8729ADC075535CF1006D8F1750E479AC6066823B31E969ACDC75F 62EF2704DB581A7B4FBCD22ED0A794B52494A69F4D57816E604BEDB0C1CEECCD3F80B6B50C76 065503F13C1DD3834D7DB2BF297B0C8B4875985310DDF076F0D6721FC205C9C0957E43E07EE2 CFE21647A2BFBAB8136866C9C4EC51706D04E2408E72B6106F02085E5213C5D88BA0B90E0078 FCD4A4214120820F0809736F4E3C06C6E0E6B4468A4089236565AD25A85730BFC3E476E5F0A4 DE180BE7A504ED02596543DF24359B7EAB8E5CB1AF98528D4F0FA8DF2EDF90C2C6D75600BC94 61924029635FA8E2BF07BE105288333A93A0A70A6C4A7F6D8D5F3EE677A017478747CAC65A57 A0FAE14371CB16FD6C39BAAFEC9AEA1CEED0E66F30E5F4B5D0E8D9D56DAC6D552163270CEDDA 49E5272BC389831BF07FCE638F7299F5C0FE332B7E29089D77B0140604B8AC0377C10C002046 8F250B3F03BBB37DC29F5B1CB2189063B8BB0F278AFF414A86A2F8A18FF13EBEFF00B4D723E4 90B2947195648367E0A7DFBCED6EFAA53EF849C79DEE21E5665409A44422C3A36FFB74FDFD10 17D31C32F9E269640AC36C3A519DB5F76198F1AF12F71ABBDF8CE85E7E6C2ADABE4B47897CF2 4A1C7B5934494F07790965C18296B977E332BD853232F2E2BE755F36AB8B1773964A689E1BA8 48F9F7F01BC585E125F00B90576FF82BB1BF90557D064D38079520D19DAE87A298514BAF1ED0 0B89467F5FD445762B80F1EE8E67FEBE8B5B2558B32CE738201712612A56D824983EB5403A70 6383D135BA5F1EDCE9833B81465B34244901802B7684AB914548C88C32FE91DFB0917751D843 5058ACBF0BB78D11118F14A0B9411BAA1A6E04088543E99B70130884BA971F4DD03F1AA3F9DE 4B1935663AAC294C9597AE21EB145DB431FFFDBF163B23F3C2675662C37CA63569A818D47B85 3B59983C8B6EE24560B2C7D426283995D86A7DFEC4B6558BCDED8A74D214BB6C86CFB902CEAD F6C5FEFFCD06777DD761F9F9EEF09E9A510E0DA31C3B847130961459642DB3E533407A19AE36 00973E4F70EF0912C462769AE399EC9861AE5D2A243CA6538943520DCDB2A86633F3D95F1F14 E6D63126FF361FD287539C686CA9A6E4B46154467CE9CF10EAA3DE0EFEFDD09BF305A5584C29 DAC82DF9418734B01CCCB57666E0EB5E5617EFFA3059FBEC27D3DFF8DAAD45EEBDADBD272AE7 9909A4CD3476F9E1275298429DDA620C15B1E229135A472B013F5457269B9682A3D41E20C66E EB7B874F26FA9CE0B2C8658937711366BD4BEC4F30A14BB1FECA238CE9476D66D1BF4259941F 61A7DE0FEBA45E5002A9AC44A7587FB206277C01F479D7CFCE8809687AAED92F7D148432CE8B AC0AD62DFF7640554D59E88CD83022A8A42D2CAD6EC197BEFB73669DB969D468E7519943F53D D324F2E9795526537393C3E5298B9F4E9961A182A324DE0D8109539FD483E1C6B0588584A30C B5052487BA59B78E2959B3A2BF30DB1374D585BDDA52E088AA672AF40A933C94CE9B9F63FC83 ED72B19AB818CBF269FC03F38DD982A48B8206307A10E6833B3CD33869526F10FE1C92F7D0DD 56C163CE8F04442CB0DF0E496F2A1DCCBA88D0BF260C0EB856E081EED167C6EC1D8105B2D3F1 73D367CC27D0F26FD89995A2EDC6D1A215F57847F7236753FBEAB4954510CA68688E51034121 F2CD0D46C7B8E89E138FC4EE229245D537F8F5009B76D6117403E10DB46109C7B58A67E0C14E 6347DDE8242030734D02A5C3986148528BF20973DF3D17DA67E53334B678643F09B7F887CD90 87A6F635FA5FAD0A2EE43668A8B1973A42866A399B280787809820D0AB51787DF2A3907A564D 10FACA4D9B6349C60852C06444FA49F8E2563ADBB0EFE7B8250142BB06FC4C93C81BD8B51F85 86AFCE9678D4373ECF051908E3435470C360935180B80B2C03B5033E2AE1B256B426E09FEC5F 902F7A8878B3ADE833EA39EF3D0AAC1160E1AC3FC15170DC3FAF6D17664E6292C51B268666DA DB416E5738176D6CEF2152B529C6DBEA6E563B5F7DEBDA3E49EE6EFCB88677EA2AAD003CF528 6B21E648EC332F0F0579EE648925B05D50261FCEC1BD57A22E58595CF326B5FDB2FFD9B8DC79 4C5E7854EF9EA34411546D28C5112B9DE1C25B861233341B2CC117C9C310160F612AC6F13F53 4DFAAEC92D6B2CBD9C3F3C0CED06B910260F7A2DD09B1B9D44346CC5A7D10B4D637275D505D1 301078EC936B96BCCD9A2B783A93019C5B769C15636CD94E9D4A24BEA9521A41703FD6F4EE8E 362FE33E21EAFF8AE02DEBBE9D9B379B7AA0AA0FE94C3320CA64F41FE488FB58CCC5F13314A9 F8A8428DD1D713C07489BB76A462E9C0E237FA5FCDFD3A0349B6B77067F055B7FB0F28953384 537535177D190465C354DFA1280FB3E804D3FC0D6E2FA88A5F2829E9AE07E9F7844463AB695D A17806C271E20C58939A04B5F8DF439659990D8D8F885F3A7A43A4BE49C7ABD03DAF5DC78CE6 6ACDE634AD08C33363EB642ABA7D9C34C71C74CCCBF7F4ADF9A201E203F6540BC467DB200646 9FCA0ED2234AB1A31E73FC05E8D8D906E40B3055B3696D72C48080934CC62E8E850350E70CB9 558CEBAE7EDDF38DFE79FB501A6EE6676F9B7697FB4A90B84CE04808434D244ED68AE441F19F FCB2E0E62DB832C31F7EE26D90CB6FEA5DAA44C297E51E6F9952C794562BF286BE8727262E51 5DF58D26BD9B97A5ECB5641D517DE35941143757645D511409808347297FD5D84E4BC1595158 9C4E272C6DB003B51628D3753DCE430C6154F4A7C5009CF5AA61D9CD61CFE3398701B65CAFC9 372339E6642D01C461EC04840A4F37E8289A232B1C06D659AB081C25CC56DCB1B914EDF4C7F2 3CA7598B264309A0CA15F079ACA4F69630C6AB6192EDD8A2350D3D1F239FCE30CEC5C7597971 6E22A6B3917E8F0A05D75F8D1EFE57E71836EF46D41E4CD87F11CD8857A3821E6A7E4D596C39 739424E37535699B423A22CB07CC47041D7B97260181794435F38CFAB11A7F571A725D084101 07FE3E53B16CAFF56F14B35CEB1363EF20271620260552B0B9FF5ACC9E8C508A0F07A4768AD1 77975F80D7EB3FB92B04A9AC5FCDD9738982DFE4B8DBD646D0F1035589116E961E1000B677DF 7B598EF17FB7442E07F625CC07E7B7BD4FDFED5CBA26EF286DB92F99CED631ADA9B6E4AB3654 C549D5539A2C6B2BEF7D9685F6C5BA2AE5273D15CA66EFC6FC14B3DC2FD47B50E6FE3678531F E11B861DA29708943D8914EC5B164EDBD2B04DA634314AA7EF8158C3F4311CE9FFD5973DA940 22C33E3A69931930572FD8DA9DCF8AB915CFF613E7628C5773652D55C64E1DCEAE37C879FC17 A35028F33B8D14731DC832193B35D6EAE7B2B5BBEAE7DAF05B3B34CA3235D81FA537EADC80DD C32567E15F80BB2A484CA51AA8F3C853696A740C271E1FB34D3DFA72394B88ECABC1F4E92CDE 907A139A5B57406DAA97AEA576412937FFE4E2689853C7B86FD869270B2FED848BDB95AB3E04 C77836021AE12BBDFB0BC68C09AA4F5B607D8B724C24CF6DCF4F54222CEE4EC643F1D4024C39 8ABD99169DE91191911AEFA67675C21D539DB7C39462FE640C5F9C9EB684C6037315B548DD49 F0C35252F2E9D5D4571880E66CDE49FA9653949D2F28AD44426978A2127122CD77B607E9D03C 74D9DD7D11E4A9AC2E3457FA9C79DB76AD398AD5743F6E077C36423E0DAFADD1D391EE4451D3 F94EC65470BC74FE2D2252F0540BED609F760145914E9437D9CAAC61BE91F76C5F1979C9C6A6 F73E690DDADE3B1295251F0E9DC3100CACBC3EC17689A8CE1AA3089A387B2727035514F69E27 048AAC20A38EE49ABC7928D0109D3B230B37F6092388AB62CA5B382DB76922CBBDA2D61B5745 6880763654B4D83478DB9C0F63790EA68F5C154EA4853D02B9A849FFD65684C368E68C6CEDCD 85BF1F041EBA86E9BDB490CD8CEF298DBA42ED4FAFD561C2CBA47869505575220B8E3390BA7D 411C2BB7B16578A834BB1504CFE2644713BB30F2C76D9DB397F45967B8F146E7C4782B203A97 BE20412D4B2B6D53511525292E48896BC91D3891300E48DB9B7A650DB26FDF8992063729A8FE 4E8C6F786FF4F4BCA2018C2861DE6002A8D4954BD7EC80CEAB7DAE6CD07586E733B1E862DA8B 1D4D2B0381058A810522C303C06AE34D5EA6F05C97B4FDB3FB1DEE799511F2EA9750D53E2A1E CB6058C9988B55BE1E6F1B682C689C996749691B6057DBCEEF6AB5EFCD604DF7420EB44763FC 30B4812891FB2B67402A24DEC15BA326BC89E6C574597178EC7CC644FBDAB6493E545D89CC86 BDF8826284E8697D2417FBC5630CFFF686E9F8F6C5F7788E975FA9F201FFD1E99B75E69C2395 F2EB3CD74E2E61B44049DF0B65F91195233228490EA9B9380800C1B43905B862770DD378C920 CC3EEA51351DDD3EF6C68302F96DCBE3D740F4A3E359419599817FE10E5EE241B516A7AB852D 01B570CA085D306C75BA899A5BE0F5BD883B1A6EDFA8EA72E5F66878BFE1208151032ADE4804 2F2C7DD0D66220F5EF66F4D3BEA1014EE7327242F8A8D948750934D22B7C36B2CBC01971D5CA B439BB320D7831FEF3C9785645D9996615DB538084C5072F2D20F6A8909C248AA6D34DEE11C9 1E5C41C931DD5076C9CE87398A58AB06A1AA7A07DDAC01B730957DFA34FCD86188DBCC7C8A94 101F09209E7B123FA9D671222BB65EAB845F7787EBF82A0F59A7EAC3CCD936F54A048AA9E36C 983FA1376E1F825FE112D4FAC62BCE3DCB285C5138215EEADC3FF9504496AEB0C443DC9EB28C 1C3F27BD1C449FB7ECC661697186F9C31CCB922F2B9C9CD4AFD63BA3CD71A95A52CCCD50C9C9 BE17A47D3123DB4898A75275D93D74EADFE72B7BE3679FDD9DAD4C885196194DBA0D297F8033 1B1471EF61A839DFB26FFF95487496B4280D02CBD88C1DFABB04F98207ACB5E5AD8B4D4D26FC 232FE653E9B30BD50930833E2B9D72A7A3C57C9744A0992131CF0AE770788FC6376FB187EB6F 1605CAD55B40D0B9132B1799170BA18EBB01A6B92D5CE2580E5D5BC15B14113CC32643C74805 17AC33E95FA1B318328613709D3B05296982772B4784B762103E906EABC30A8C542598B970BE 13D8F79EC2D4229118B8A71E708F049B728205008B75CC96661B1F19CB27320E6231644CABB8 E8A3C07ADD08A88F5BD1448FAECE9C2E9E959FF42AB856C9F0C45B170D4BD63743867FF08D0B C568D473801E2B40F9E99DA8DF577732784B52FAAD05893033ED069CC2996540E9BAE9916E13 9276031E66E1ED34CAC0228B8C7B8E0E0A8C9CBDEDFB20E406D5C2698733F1912BE83FC517C9 268D3287C66D5059D84F52604387E0684850DA394D1F2B4BBFBFDECD45BF88738074512A1905 70057E2275BA2803036A91F9A32E64CD7429AAAE7DD6D28C3159694901450896D483717E9ECC 4820349ED3E5FDEA88B1F9AE1A7E9A9090DADB0DEC035EA6EA90399F3A942E3401EBE5B483CF 0779ECA7685E8D278CDF6EA2FBD2A7CBF18314F5257756CD3E342479E3AB75A6DFD4F9D7C3B3 5AE5042A2B7FD3CF5C93ACBC3167BDC9A7F0D25D0CEC8F73D79A98EE89A769E5A41AAFE97D55 688F39C661B575A6601ADB6399B43DC5064D54F07E8299627A114254B11F1E8DDD1E7783CC7C ADB44A96E8E54CB72A448CD387FACC2BE66A5D9A4583EA6B1C0E4E7685739E22F50E52488EE8 D38903E9BDF9CED151FFBAB79C1E159A06C11C70D91E114ADD520627460CAF3E57F77063FCAD E73F05C563FB50CBF0F2913B6899926A6BFD891E986FC06001C9D8073A781F0981FE9D4C4D17 E49D1793608913238CBE6B973F9493DF8C7123702646446944399EE25B1E5A40D3AE74728879 203E2D5F005C3955382FA450B86A58C68BDAD3FE1793D8E184CE250070CC6F8C21E277DD506D 4C8064374CDB89D4C5EF1859FF45BCA98BB91FFF5E52BC1458991E9C296CE2F8BE62B7A34D2A DE95004D86ABB1925B24296C39130971B68A2B1228EBA1575447FEFF25F6D887EF14B66FEB4A 377F60681A4B44F63B6A067E367E379628CD7342D80B79913F4797FEA6506A56D47DDD7E0AE0 B06D1E9D52359EC8D1FFF0502D3D7898ED4642974DA2483F6D5F4F48FBA2862B9684DAD5F1FE 7434786F28446523FA121E0445942EA29694E03F2CE367B6EF118288033B36F87CD456F566A4 767D31794A827595EA4E03E805A5D0255463FFA40893B34EE0107FBC6CC1D25215A70FE0F9B5 526E65C3E50376D9555BCC9F60BDD3DDBAFAECEFE4659ABCE230EFCC3BF8BD7F7AC3F5CFEE3E AD7E09C9F2027DD12F7D85837C9A693A330281D730982A1A2B854D5BB19879DC69A0FDD1033A 7A858BF14C949B17D26B491B123F3DC89E67100412DD9DC767EC66FB690EA83850B80DCFAE83 EB437F5A5F4D22517DA8A21075D6A0CB1FCA94446C8138FE3F28B8BDBEEB3DCD67E4D6C9AB24 9F3BCAABF7EFFCF8162C37F3DDB6DBEA59D74D515BF19507880F19F99EC7AF622FD9ACE7BC07 5D853517B494438AD1B7BA2F0C696E77543EA59F951D5B8C2D364DA095F4B174C878FAB8CE90 B0312FC2D3C62B4A9F02166FA0EABC1FDFA7839A250BF3627D3AD5ADD5BDBCF75B271157E012 F723A51A76ECCACCCD693F81590D99FFF80B21C7FEBAAFB921C0A91AE44E8C3A870FDB69B2E7 7A65D13626A3113B069A1382AEA90C6076D4D4B553153B3CE24D1382117307E0D1195E39AB80 58E44DDB927058A8D71AE41B86ADD4692AF0E852F0C1C92A6B5CD4E7C49C7774BCE30E0F5256 4437E6553B1E6486FE7F8DC97451C934C3939EB137A8EC09486F10F2A7FC4BD3ACFF77F03B1D 92F19A015FF6F515E9963C870DB70977F9B697E07CEB75B9AE87B03FD70CE2008B941924DEF6 27DE71F750EF0F378CB2648EA07174E62FCA3FCBD6C6F1F91C9BA4EAB493E28751FBC57D6897 8F553DBD6759FA9CCA70AE9A7372A70CC6CE35137CBE4C289575555D92083E92DAA3845FB214 DAC0FDCB355A5C08A1F3647C85E3B747F1FEA12CF8AA1D2162E03221BDCDFDCAF4B74DC3ECE1 657CD9819BC34ECA91FE1E7987FD75D3E434307B208F2077457E99134E108E38B99B6D1D8DBB 530D3AC7CC5811A7FA92BB080D8E2A3A09CF3F6452941D063D275E2AC849E0B35B39C63551C1 90A43F3C3564AD6F153C44F67E6D50E311ED225861B94CD108D278A4785632CF7E47E89C8FF4 3114044CA9D48BC15C5EB1E9D1DD3965B84A20522340F81FD0EA60D7B763BDE818B5F9522634 7A5220F043B89DBC6A41DF825DDBBBB05736F7709B752B42A1FC78B1DC61EF6DFDE867C1EBBE 0E7F332C0BDCF86B706C2089EFCB1896B62ADBACD8E2358C75060046A54784A41F66B5DDE678 06625477FCA24396747DB263092F82314E7440FEA9CE8630FCC10D7F4BA6821613F64A16D00E 4BD9BCBB0EBF087C2A88720504CAC249D2B2E67A823C4F34260A7672E8D6E7AD168806779B39 ED0847E82037AF28416AD3B5C5C6823ED9D1912A6B45874E5C67B258DACDDF6BACF5D735899E A6C62DE3BCF40145859A58C0D744588D070AB252A26E87FBBF2CE51E95E5AF46AF3EEDEB147F 75EA1F698B2D3F582B76381780E2BA8F6F2AA75A0DF480A0B5BCE7C3EF61755A4D9BFD0E9AC8 5CF716407021CC32CB84C16A90C37E83EB5F0D6B7BEB221FDCE3F9A6701F6BA690748F767AAC D6F886F1B2A54037AE8D8B8546E9DD0ED71C2E03B1148BC4763F95CE2A92F2E29E3820F8BC5E 610200FBCA96221AC7CE0E8DE251618EBA754542FB8EDE1632D48C0D20E882F915BE1F742ECA 7FFEE8F323B05EACF81846F87CF833E6FD877E01172686BF92B875FC6977B3D524E8D8BF0215 C3D72182BF368C7F89506B058A2A6042CF86D8DE16BB8210321B5CB1CF42CC5DD52E29D82D9E 84C957E52BAE129068A6417FAC32427F8C1AF08E2CB44F7CBF3E8B1451DEB7B2CBC772227117 736D41FF4A6772569A4B2C2C48908A1E36FE12D950521F269A0DCC4449DB961E101D3203E88F 7910663B7C672EB85F26562A35A26871947B14D69F7E09153F1CC980F0663644C9EBE030EA87 1399577ECE5CFFD2B7490AC8CBC565359683207E92D072854E094E718CE9D4DF1117A46C223A 5F095DFF3C1721B52502F7366170444898620985ADD2CD198B292433C88ACF33C022AC15E910 E56EB3B821341BF3ADC6FBCF1CB7BA72A2318D1C6D36810768674C325CEC8B2F86E19A0CEB06 64AEC6E1F57BA2952DE44C1DC85FA8AFBA808459222C7608842D4DADE3C8D21210F366BCC222 BA7BA907328AF3304F9AE2A542FE84DCE9B4B3E13C23E687BC3360E578F660F31F948694ECB1 766365C13BEABAC7B589D2ECBA799491735B417532E392D56C9DE2B503C2A49CADA4280C863E D36CDF747D1BADF31AA0F4C6AB910BFB708F2B3D763C041836C9C4792C8CCCF39519F3B80BB2 0C7767314CFE03C5BE8FC81AEDF28ADA7C576135618BCE77ED1ED0ED1F8804D4DAFC126B4E94 83E61917775578AEBC58EE5823CCE006610FF2108E5EC5E9F6EE0B7B09BCD064A2EFCDF71CAB DBA10D0FE3DF95A68F85965CF756B19A9664A167263B2751A9B7CA9CD76905A9A16D070912C5 FD49959C93601DE4998FD65F6B506B9F54A16C92BB88C6CA8751CEFE60731952B2B9550251D0 612901121CCA0D3A8A51D7F1F5D9C771EB86BDCE40ACC8F35831C9E5ED6F5D5332275D01748F 88428E97DDD24A036CF030A8D04E3EEB7E86E6B6E6F01BBA6ECDA8B4806DB2DB9D053CA1299F 5C6D43A64ADE6A7A6F19AC608CEC86FD93407D6BD802EA487D7C46E5190B6B34266184235859 250E09C49583F8B856EC06E4C120A0E12E4E305540AC662E171DFE00F687EECB571D2DE79473 E7D22FE4BDB30B9A526F8D68B4129D71FB1620CB3182FAE6B55625F9C2664AAA3FFBF9B799E2 FC92EE7A19C5E37F0EF4B3A6A902CBED35E34E86D9B7E5E41E5ECAE9876A83B2F2BFB7038EA9 0A232AF9F300BFB6A45F55D73BCC6B9E5852395D5CD5C77819C568741A7FDBA3A2FFC81FB1B1 EA0D4D9B450199617FFA0BA8CE26FEAA16F62CBD663798FBB3CD164D6EE6E4F505067C0EC75C 1C5F81C699DF4165633E0708F8CD2BE2280350C902890FADE818E5B31A6FDB45F7A6F8E5F924 B4D670B9E3D4EFE00D2B04D6F433753454B3D3EFA16276577DE3F28D146907CB6C05570A6D4E DC284093A4B2588162BE6BC867A00CA1A9254234766503FCD3A0E29D9C5676EEABBB3E26FF09 1E21CA21FEB29365A56B6960E1E76796C097D80454261FB63D5F941B66D9DEDFF932793F1569 75004F36E2D91D2203049E5D9DE711D832E78CFA18E2B5348B74AA8605E6425D8099C6B10EF3 E4A299FB76F028BDCAF8ADEA2E908E3535BBA4B42A905F30D13129209DF390139E3C548087BB BB46621E71CDE60F450A8C61B247CEBEF47B5F311B3CDC843790CA79DD6C72AE76A679AF24D3 6D0B1B5388485F880096057CB6287845EE438CE1E6404C5BE7371EB6C060092ACC76AE336835 1D481984240E51E33061F1D9FCE34A4C65C441F5B4E4D0781103AE0B0CF637CA2FF26182B855 B696605FE114AB2F7DE5F016E396B5A4FEC79F05ED451EB3EA7CF718936E0CFD2F9CE7781162 825FD98BE70C3B16123F8D9B0C970DCB545A7CF6A8CA6B4FCAA319C6C4256B10D6D7AAD98931 40122431F2B0068C10D0398F55FB91DAF2C624A716726513EAADC369BB29FBD1B2B7DC5324D4 08B0B02E46ACCA565D1413D1F65F545603B06E28637C326053DDD2B78DA99BF320DA2A565258 CC9F548B2F87511C628610AA00A6C8F5CC5BA2CCB13BB9EC7F123EA7FC49EFBEAF5D7244EACA D013A08D3FE370767128687A488302AD3D95067AF108B76886ED16B59E7345DFD143A24CBD75 E828AE300CA7D24437D4A5F0038DD5265D82CBF39A4F8F542D491486F5BC3566931665909986 41510AC914312D22803F242311DFBA932BBBCA9DF24B56EB52209A5A9CC8AF2688B59F348E7B 8FB08281143B2C849BDA4FBDE9D8819E97589EC110FA9F31FF85D07B6D58D58CE5DAC7F22D0F 97468FC790D913622007DC8045E2D05DCCAF592A540870FB4EBBCE3B5AB9818D49B4E40FC919 FB8FD87617733360FCE02FDBA5E57B33461D5E085569129B5B7B657DB36D29E3F87E17E9C7B3 8F6F1FEFD369D314E329440BD0AC26697B34D4E87048EC54F7C381E66C908A658BA83A811285 E93E32BBC6C641BF0F2412C276B85CB18FED61F22ACA7FFDBD37B994314CE4B711B82402DD26 632B7DC376AFD3C4D66BE5E40E282B74FB120F6E4E144D90404C7A4513F2AB180E00FD410AB9 C10CE9B1C2A8EE695E4CEB0F1472A959E70899B1A07DCCB20546431FE6B541A05291D5DDA490 991BD3560490CAC148A2D623903B630DE49F10DDA865A74AF0866C2FCC595F6FD0A0CDC0A146 5398818C46554C37A4CB1E543C4760E804B39564BB853400D0E1E9DAAC58D0577AE177726D1B 9075BBC70B2AECC2F7F44D34F4C691485BBAE03E43E8BC5535CCDFB1CAD1D66F38A49001C4CE CBD71202FCC47BBD3B224812C677F4F9E4FD523D44EFCFB05A57E45AE2078E3E16DC785125D9 55D3B941F4FD72FF547B069EAB30BFD33E3EFF0686FC7E582CF73EEF9866D6E62C19AA005F73 4CD8FCC0A012F41F38107E135CE4C0AD8A8B81101FE4EF8F32065B2C279A435CF5A032DDCD52 9628509FB6773B475DC13517625705B5D3A9D9EF6995A37DD3F0D6CE5451845CF9151C40F990 60ED58E0F2CF5D6DD71944731CC4ED0FC72641E287E295CBB53AEEFC3FF3EC0A5DBAB8C3AD31 E5F6B339C1748A9E58851F6CDD6BF091227B2835761B7D9A10DF0242A7B61B39AEC0A0697F43 794FBD2A51A66F860FEA136A9D7DD82B42B61710909104E0FABABE3F5485CF1474D494B97508 DFF80A698BFA58ECB590D8C38873724BFBA60FB1150B04282AC1022A1214E9513D27C5D45DFB C47631BB27CFA2806C2CBB130DDA940B65E75F956846F4E6438773C94E8EAED71EBA5E87A886 DA7A846EE29A43CFC2D130A3FEB4762091B6AC357C973487573A230DFF74A29E203BD78B89E1 729B747FF9B58BF1FE5FAE6DD70E9DA091A330078845363681AC2BA501286DDA2038A0FE2235 C10656143783D50129A728B4EC2C64405B7C97AE562AFA240D35FD9E3A6E034683C60F32AC09 968A76C775D5547D85D7A3168D6F19F12FE132DEEF497E90951A56CB17E543A76F8A526B1B7C 481CEEA4F5FFC637DA5CE954A742BF39837F08DFD7156A4F4E4805494C1957B2577ADACC0D3B F9B0EFFA5860F454EC947625E70D7E4E652ACF276F57F2137F451540ADC35D501CFC1F7597A1 502A198EA502D67E7886790A84DD9D225E83D9ECAA18FF9EFFA77AAC3AE57D034E67CBA014C5 FE1E3403AE4277D864856FEFADD2EDDB1161E8595DB1B2CA6CCADC4253B95300ACEFFBF9C3B3 32E1FFD71B91898CD0EF1B9F64C3969FFBA7929BAFBDCCCB943373EFDBA057003069C4ACCBBD 82DF6ED1624FB8D0D4B3E561A05B13550A7EEE9AB35E47E9A96FE49EC2716AA68224E3A65AE1 E96D530FEE45054DDDCF949E7F3977334E3A9AE459085F366393D232B2CAA244B029F2BC602D 05B421E14C08563C4296D3E9AD328DC324EA5685E2FED03DFA3D3AFF2482EBB368484FF8D015 53CB8D5686067F99C5617FA2A7F6F183F4BEA8C1AC39AF726341501AC8875104D11DBF241B9D C9929A8B70ED71BD62AFAB7981E452086163DA2DE543E52D57AFD080AFE373E8E321670F8A47 4E9DFF36441F6C1A4D2AC6DA6E5C9FFC0C4EC9CDD8614C2D65D55019378D678CF46F483FA9EA 0152D9D3A12175774B56B11BE03362D2A36BA13945979C64163A696B0A6CC760BB6111EC47D0 A5260DFA7FD147FF35AB84DA889DCF4BA4146647D5BF8773096FAD1EC8001A6085C4F4721428 F4D4B85F1C03C71576F497D3A5A99392C647DD42F8804DA5D33CCDCE19DF1A16C143C449F1F9 37F6F75B05ABD0CE90E4EF696E1BCEFCD950634E414DC724B0084BCB515CD4ACD71A6CD3784A 402C3CF3ADAAFFB763C5F7E17BBBE19172E4455923BA48869B4D9D0C1EAA623D9C728D887C15 BB8377AC74239EFEF6389EA10C7C8820AAF857BF8EF2B64EAACF096B742ADB9B666D96715364 CF18D88AD8DA6A0CD303557F04908CD28D11ACB9A730AA3A37B6028914674816E6AC076C4559 A84880E82D433A5F5722531B0287F11B24AB4CECC2264BAB4E6601C990E32E1C5F9AEA52CA22 2D2698507A4B235531C3FB7E9FDF6FDA186888A74B902A0EF3457537233376E8667035C092CC C3797AD2FDFE1CC8BD71C49B91E4520091922CE87856F1DC60A209A9BC9D97B0141D8820E1F3 B86BFF25CD1BA07E5664D32C09CDAF569EC7815F41E0E8731E2FCE769BAFB3A751B3EB7082C4 992A4FD8BA363D0888FF39FF986B80D5568CDFE1DEEFF98CC54F05B842694BE023E0E0507DE4 7AC1B53BE427D31E0DC9CD5963BC3A5183C54D8C9046068BD6F300F4C0CDB8CB779E6828271D BB9EE44B70BDD1C1B5A345AF01E5E9A74260781AA473199CEFB232EE9C60D14DA8C5D3D22291 A33E592BB7FBE5E9B28F18EF70DD0877DBEB43EBCD12F9AC95B7D46A2E0DC88E3B7D34C6FB32 1593E7FD7C070D44037B2EB5C5E7F40C2BFA3A282D85932C19D3C3D07F5BD37C5CAB34816E9B 008BB5988A1703DD971AC36A0F1C61DE0828A6108A1454A17E63F68FC5604101184FAF38061C 515C0439010551A933CE9701EA75A59D88310C564CA3C4D9BAB34668C6ADA1792C550D08B029 5E6A2AC490B06A3BA9118ACA61A951BDC06EB5EA612992BAD973AD703F5B25D1007F47CD92E7 4D824140CE1A827616DF813898FBFE32C87E692FD324FE78FE9101B1789C8C094207BF77C290 16ECC3734E103ADE9FC7717ED2E6979BE347F72A514B943A7F1101ED25B0AFDCD6C8374182ED E624911F458A5EA76FA982C3CEDA0195275DD50BE2AB3FA62F5545F802CE3784159E281A810B 87DACB95D4D75AE2EED997DAD39BA7346083A046660F0D63D4416EC1AFBCDBFE18966B4C4C10 9D5C9E9DD7B1202D6AA73AFAFBC169E752DB200656FA28A29A9AEBFA1D4EAED03478778AFE82 E0AA2DB79ED37AF8C5B940ECC6A5FBF38762505235415B285C72DA21F4FF986376E407C04843 24B3A2ACFC6D796FF53B5412A1A73DBDAD921F402308041C18C5D7FD9705959A8C0F5EEA851B 5AB726748A6F0BAE196F879A3A1A5A87F7FC723B7A6E85189914EA451E2BE92B908AFCD4BE5D 3D2C6C1C40984D10483A9F85648CA31977A4CD0F9781CEA0EBFB97B8B07DA6FE5694C32F0B5D 23D58CB259E54C46DDABEAEC138EC1C5922337B8CB2741341E3DE7D141E7316B2F0DC75C1A62 ECD7106141548C31F7B90C0F70106E4E788FCE549DACF492225530F427A6BDFF5ACBAE8913C0 BBD9E3DEA41EE41FC7C13796A4A7D32AA56305F2420AA9BA5C0A0425861F97FC2B0D586678B9 5F28A395FC340E5CB4D0DE633E406347BB83E56126872B389CBD57C359807E3AE6CE23C5F1EF 746BE92625E161BAC1584CB79940DB009844EA870326A7BB6CC8FE67084726E36EACCDD1A5E1 87D49E1CAD01037E58EEA820171B29968A2E4A08352959052EF9CA920E736C7337D85A44A3DB 0DA96FB9BFC14177AFE17AAA27B79E1C92B4D53F4CB9C277BAB838C640EFAF3EF4D95CF7BC61 4F3EECEED6A657E1FB361302500E5DEA28E5B5EE4F3886C23F670090FCA5D2EBA7A5E4B3ED0F AEEA8A7E6DC041F9988D43F645BB388FBE848EE495B391FBA4C0C3939F3B5B3203A5527F397E D758BEE1E0F0FFE9A379DE0FD8CA3DB83B767C3BAA6214BE3FB012708F1327E1C96B8FE26597 A0B8403DE77750565067F42F1587B5EEB69D5024A807E98A3BEAF5FE5F88DECEF57F2FAD58E5 20D282ADEBD2051F086B3B871F0839C71379E6A0F800C7022978C84EF6363B7A79B10386E38E 8C7DDF0606ED85B780145FA4428DA212AE5386205BA129AD33D28BCC36A0B6CDEE13C37A6C2B 7456F0C3402FD5B3E3DCE43B479EF0F81DC571FD102BE21029C721E4148729755F19CFF14B1E 0E30CEFCC09D175AF0811BE99498F4A8632B85879AF0E005495FEF5548F2A1F8C989140726D5 4BA1FB448E54549A2434A1FBD152E7DF166EA70953C6595CF824CC77984DCB8F8807B7347131 CB727A589B651697C32E0D52BFC2B36B4C050CF9A1CE072746992EA2ED9B052DE1B2B9A21A89 682B2BE4A1328C769DBC40BD71202D0287D1F8B909AD0E95E5D80BF8314B457A042F304CA330 14D4578D50158EECDE6821D1B672B1973393FCFCD432EEB0EB4FB362DCD9B4B280EB5EE2091F A3853D779EDAC21A120FA7E03B339CED20115F404C3A086EED187281EC31F25A664811E2B712 351528C4F0ABCE55D29BDBC1E067C01CB44F8A3E094F104097C5A36DCD1CC621E32747176643 18D99F5F5D1EA11959CC751FF9F3739F735A12612629BD3346A840DADF0A61567D880597EDC2 2C70DD8EE5DA9171AE46A8D1D78A64DD2E0F01042CA59FF7F83EC74E1CC0E786DC17A112A062 7640B89D5F3EA4A57DAA15E9965A81021CF737E0108267C404ABED66D9CFFA22E05C351194A4 1913A0D12931F26477A06773829D8AEFB25184755DA27F5DF42B23F493D024CF38C544257830 1EE65AE593127DE8B9E0F19287015892DD881BBF034DF3C789470B567B7AE5130E821870E504 F893CF1844FE400752C5CA00371433A36DE4C96938F6B7FC81D26DEDCBB7AD4F2519857A81D4 F06F6A23A74825477C912968FC03B13DE8517BE24831C0E223A601AD7834A3CE0C7059822D1B 663094AA1D7DE8C524D1E0E5558C664655454A3AA0A5034B50429C5A2AF0C3C862C6D63C415D 92B2B720CEFCEA0D0C6CDEB5CD89EB701CB49CD568E39059E7B7DA7A85B44213F1060598CAA5 8D8830DF46C628B18F908DE0C7360B9175F698FF66C5E4EECBCC0010F43C251001F06C45AAA3 174C8841237E204AD5D7E1C403DFC40F9FD5F469C65625EBA0BC5DF2344228399846C285D9A9 6E21EEBCD9EA38F25584C5D4B7893E64AF5261656E3FFA0CB1FC10CB512328E87AE3C83CA38E 9CCF96AED112B93EF8E4D5CE7BF47E8A800E00C4A0AB624DC3C03089BD5C415E8BA33DB289F0 8E151E5E45865E9CE2EE9E160CF3646726DD25D5EABC96B72A7D2C89178FB92F0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndProcSet %%BeginProcSet: cmsy10.pfb 0 0 %!PS-AdobeFont-1.1: CMSY10 1.0 %%CreationDate: 1991 Aug 15 07:20:57 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMSY10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.035 def /isFixedPitch false def end readonly def /FontName /CMSY10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 161 /minus put dup 162 /periodcentered put dup 163 /multiply put dup 164 /asteriskmath put dup 165 /divide put dup 166 /diamondmath put dup 167 /plusminus put dup 168 /minusplus put dup 169 /circleplus put dup 170 /circleminus put dup 173 /circlemultiply put dup 174 /circledivide put dup 175 /circledot put dup 176 /circlecopyrt put dup 177 /openbullet put dup 178 /bullet put dup 179 /equivasymptotic put dup 180 /equivalence put dup 181 /reflexsubset put dup 182 /reflexsuperset put dup 183 /lessequal put dup 184 /greaterequal put dup 185 /precedesequal put dup 186 /followsequal put dup 187 /similar put dup 188 /approxequal put dup 189 /propersubset put dup 190 /propersuperset put dup 191 /lessmuch put dup 192 /greatermuch put dup 193 /precedes put dup 194 /follows put dup 195 /arrowleft put dup 196 /spade put dup 0 /minus put dup 1 /periodcentered put dup 2 /multiply put dup 3 /asteriskmath put dup 4 /divide put dup 5 /diamondmath put dup 6 /plusminus put dup 7 /minusplus put dup 8 /circleplus put dup 9 /circleminus put dup 10 /circlemultiply put dup 11 /circledivide put dup 12 /circledot put dup 13 /circlecopyrt put dup 14 /openbullet put dup 15 /bullet put dup 16 /equivasymptotic put dup 17 /equivalence put dup 18 /reflexsubset put dup 19 /reflexsuperset put dup 20 /lessequal put dup 21 /greaterequal put dup 22 /precedesequal put dup 23 /followsequal put dup 24 /similar put dup 25 /approxequal put dup 26 /propersubset put dup 27 /propersuperset put dup 28 /lessmuch put dup 29 /greatermuch put dup 30 /precedes put dup 31 /follows put dup 32 /arrowleft put dup 33 /arrowright put dup 34 /arrowup put dup 35 /arrowdown put dup 36 /arrowboth put dup 37 /arrownortheast put dup 38 /arrowsoutheast put dup 39 /similarequal put dup 40 /arrowdblleft put dup 41 /arrowdblright put dup 42 /arrowdblup put dup 43 /arrowdbldown put dup 44 /arrowdblboth put dup 45 /arrownorthwest put dup 46 /arrowsouthwest put dup 47 /proportional put dup 48 /prime put dup 49 /infinity put dup 50 /element put dup 51 /owner put dup 52 /triangle put dup 53 /triangleinv put dup 54 /negationslash put dup 55 /mapsto put dup 56 /universal put dup 57 /existential put dup 58 /logicalnot put dup 59 /emptyset put dup 60 /Rfractur put dup 61 /Ifractur put dup 62 /latticetop put dup 63 /perpendicular put dup 64 /aleph 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 /union put dup 92 /intersection put dup 93 /unionmulti put dup 94 /logicaland put dup 95 /logicalor put dup 96 /turnstileleft put dup 97 /turnstileright put dup 98 /floorleft put dup 99 /floorright put dup 100 /ceilingleft put dup 101 /ceilingright put dup 102 /braceleft put dup 103 /braceright put dup 104 /angbracketleft put dup 105 /angbracketright put dup 106 /bar put dup 107 /bardbl put dup 108 /arrowbothv put dup 109 /arrowdblbothv put dup 110 /backslash put dup 111 /wreathproduct put dup 112 /radical put dup 113 /coproduct put dup 114 /nabla put dup 115 /integral put dup 116 /unionsq put dup 117 /intersectionsq put dup 118 /subsetsqequal put dup 119 /supersetsqequal put dup 120 /section put dup 121 /dagger put dup 122 /daggerdbl put dup 123 /paragraph put dup 124 /club put dup 125 /diamond put dup 126 /heart put dup 127 /spade put dup 128 /arrowleft put readonly def /FontBBox{-29 -960 1116 775}readonly def /UniqueID 5000820 def currentdict end currentfile eexec 9B9C1569015F2C1D2BF560F4C0D52257BAC8CED9B09A275AB231194ECF82935205826F4E975D CECEC72B2CF3A18899CCDE1FD935D09D813B096CC6B83CDF4F23B9A60DB41F9976AC333263C9 08DCEFCDBD4C8402ED00A36E7487634D089FD45AF4A38A56A4412C3B0BAFFAEB717BF0DE9FFB 7A8460BF475A6718B0C73C571145D026957276530530A2FBEFC6C8F67052788E6703BB5EE495 33870BCA1F113AD83750D597B842D8D96C423BA1273DDD32F3A54A912A443FCD44F7C3A6FE39 56B0AA1E784AAEC6FCE08DAE0C76DA9D0A3EBA57B98A6233D9E9F0C3F00FCC6B2C6A9BA23AF3 89E6DFFF4EFEC3DE05D6276C6BE417703CE508377F25960EF4ED83B49B01B873F3A639CE00F3 56229B6477A081933FEF3BB80E2B9DFFA7F75567B1FA4D739B772F8D674E567534C6C5BBF1CF 615372BE20B18472F7AA58BE8C216DBDDF81CC0A86B6D8318CA68FE22C8AF13B54D7576FE4CA 5A7AF9005EA5CC4EDB79C0AB668E4FEC4B7F5A9EB5F0E4C088CD818ECC4FEB4B40EC8BD2981B F2336074B64C4302807FA25AFE29D1EDFF68FBD0141698DA0A0FD3FE352AEF6618408EBA8063 0FBCF58909B21CA4B9514EB27F9FC7B78FF460D374798DABAB857F6DD422BC7983C7CA213870 1652B6C3901B98B43B641F905F54AFBE00822DD60E2BCEB957BCE7CABFC51F153F3DE4095395 28E20DEE4B8C15E2AEAEA9A46FFADE11A3EBFA3456633B298DEC6DDA6D6CA41DAE03F5C6B56F 68E58C0706D3A97E34FD845F8F2C6126BB6FFB72FF4005A1385A1EF92F2BC0FE7441C157B1E4 AFFA17A5D2057DC2BA87A77C45F8442A36BB895C4FC24FC83BE3831D0588E9D66DC2E71D11E8 8E9F110493314AE48233D708568062829ECB94AF0441975CD8F1FDF4F626E6B0DB35683B790B EFD89B94894C3CCC5AE9A57EDE5B4C5F71CE1A7C5F34108EF589711E2E4572D90CB501068859 E2E333876FC9251E6A574543E1C2E7A55E186CC9A194DBDA51724FFFE506B0B754666C59F449 3D069431CDF764DD7E62720625B3E02C1403427A93362205A4BA5AA6727E3D486795D7EA749D AA5A46A7C3FF9EBE73DE35ED38DE2A0E9BA7FD370B5B702E21DDD6A69A6B2E2916A5A93849D9 24B844C3A0334A0D2C95E089BF141DF55E25620BB31DA68962DD3C51A9336EB11FCB737E6906 EABA756BF7B55EEADE38994C5FE146FDF725AC74CCACD70BBB292DAA5B1C60CD39AC60239B12 33579444E8846826D3983B0D6A8C5BE07DFE43961897355ED8E72CC4A4257620EB7E113EE988 D0E8F7947CC822D8563B7BD56D69F144159293E3E2CDED7068F6E3046F14AD559D712D7FED96 740C962CD9EBA9CBDB0B45D5DD9A05C0CE28DD27D2FE6B7169B409BD1E080B32D6D9F2061BD1 B9292D0506D482354F59DB8BD14F8D975B8A30B212F524C8664E5BD9C170BB0488CABFB0BDFD D18BD44D443B08FB2781840ADDC9BD22376AB814B0429D7B0664B96E183A2675A28B68F1FB6F 88132C796CE2AAB0B9409396552D7C16F6ABF5B85E93B397A9E1CB74F610E81319CCDEEB6D31 EA13F95F792841402245230868FF37BC57995ACA98FCA2DF474817BF96B0ECDD4F42DE20A007 49A91297CB25EF1C7AD56C5D87256AB41195624F1977ECF9246D7B1DB6CDBFCC654AD428932E 5C0DEE8CBAE5D2CDA5F56C16D62BCB93B05BC6CB5E13247F59F321B3B824A73D4261C6A85609 ABCB95C4B14FB51FA0B8826A05696617A2DB092D909FFED178BA62599012D08EE433E800B54C 77C15DCF02086B1F04935F7B79EF163384FD4137391F5E4936EC38677BFBA1B4204F5F80505F 68CAA8F538EB157E9708306A9745D2E2855EF01450E3D2F8BD3C4C5B4F3697A51038011D41F1 6E4C7781B4EECCCFB86EE892AD6E9A2C69C1AB0B11DE2BF88964E5DAE8A3389F18DF163B375D 17895F0D91D4D52C3A5BE455196251EF12B8742CB54D14611BF5227EE52BF8F464EF8860579F B8BB6191E9AE46F27BE34D732C2DEC814D00FB9763848F847AA9FAA73CE9053719C781C3B3A5 F27E614187D3F00A330C2F76496BF32E924E27ECFB6C459353845D446F642061864356CCAAA2 BF7443515645B51F4DFF4E244F8B7A556EE38389EE3BBF9E69BD72D6BC0D134E134D6FF43608 75EB8838A885DC681004EF4383CAFEEDC688FE4735F5AAA4A11B1BE4D956AE9CBF8D8FDDBC29 A600215C189BC812A1F441FF1CA1FD6C5F3C4013528961E676FE3C9ACA3D44B913F51DEFD42D D4F67BE410C4152B675731F18315030FC2CA4BCFAF5C5BCADBBCBA4664FCE78984D5C8997B40 088F68F31C8D54D44575ED23533BA3A504C1BC90794AB111F1C011BE57696786AE25551ED73C 35F6A343579DE01675DCFE26ABDE7A3CF73C121B7C33CD3D42BBCFCED99CCFEC4AE08EBF2AF4 FADEAB53F6A2076F8189503DD57F84AE53CAD55D97D3734E706D9442FB175B5CC032EC649776 00A369007A47B17569E32C5BCF5722AB7CE03EDC4DB3C1B3D31A73D3BD274C53359C6BE06BB9 3D0026080B9D76F51DC69AF96C8F73B83BC8CEB5D788E69571EDC574E71C06B3504141D47179 24EFC2CDD8D0CB9645A06922CDE8EF7B297BCFDC0C9D8C65A0D0CE542BAD98B08BF75D814CAA C3C51877584EDD5412CAF5C69599666DB2E5571E5662B3DA510358234D553A54025C8DCE413A CD0B4FFB252BAEE591382C0C0A293011F3649508A2C7DAC8F153B869C77D148A0A81AAE057B8 D32CFDA1750180C98F70A8D0FC62A976F785B6F67E9665D1A54C2F591E4B9BC1B8CD0B23E6B5 3CE5EE85995417A8199F68DF12C88173F69D45D8E6208DF7E1315CD08C9F0945FA751B9400A4 F44F1977355C5FAE4EA84342F04AE3E785DEC832DE82B9C6D57835734080DF60C2AA44702FC5 BEA1AF1455DA321341F3613442D63F6B547FED5707EF114B654E0DA6ED340A9372DA4A99A987 CBE785342FA9D2E98789417B87BFAACCD46C16D11B5C6ADBD5619770810A39D74BE2620CD99E 49A9DC91E7E6D0B6AABE9AFDFA8D532FFF1310E0FCC91C0B103340E0F1371FE7801B9EEC0F67 A7C7A26D18FDDADBEF951FCE20EF0558B9F32C560E41A87AD4A94DD0E0F1DC333F6667C22C65 D995B27D25371579458748E078D5EDA6ED9F84ADB3D35547FED29BE03ADB683BA50A9E1CF955 CDA99F95EC45B6B23F43A05D0607CAFDFB9E1D830613C22F1C583A65381CA5C8A736A8B34DBE 70C116699E3144AAD48CFC32405F67614FEAFDAF0106B39EE47B8902B1511665BE23981ABC5C 4E148F6685ECD9575C66DD36A22E41198227E7D7433ED856151154E478D51F5B093AB0A7A923 197864F4FD6AFA7282DA51534B0F9BD0FF070795BF954E02204BCC3B0907CCCA5F3C478F7EA5 402556883EDA2211C394C0D6E921F502368BA96DF89C39B9A36805BC76FA3C3FD390B0B75262 7D8774F66D18A074BBD255B9FB2A2FE94BB30A928243B9F308BB789FA83E6BA7B94946DA5B70 A5047B8D9BD59EEC2DE5A21A7AB0A826CF02CB675CB5C2EA3B774647962CF7DEB01554CAB8A7 B949723EB847A544E8C839F36C10E9BAB10C3E4B05CF6CC46CC6A567D9BAC1DDA8825C726450 68690EC820633567BB2275BD1271E284193C4402D5AE384669294AF99467162E790B3CE41F0B BADEEE07EE77BC47CFBAA76F28DF5F7B870F95B04A8DBD85454405DFCA87B6B4DC65B3D5F125 65BAD0D22082001D0061F10991F3E1682527EFBC3EE8F072F4BF29F3EB210E403B142B82B97D 6AB9A5CA512E448EFA90F8043495C2FC11730F67949E0F54544094592989D7A1CEB43AFD0BF5 0EF49C81C996469F52451CA818176ED2AA6FF8276030EC931A9CA6BA331A4B463CFE77161410 C4E8EFAF9395F51D13D1BCB2841DF7DB65FA51ECE17B5A321B37AF3215A69E72A74C4FDED676 7930CEA4517DF9A7148A0041F4745E4E594B0219C9AFC5EE8059BA9BBF415302A9CDC48D0460 516A270EBDA3A6997EC4335EDC0F20FF994C69A486316AEEB8584D0DDAFF255F7FFB07C77E29 D58D32BEB7F337E28DA97B8C7C44F8452D9C629C38E03F402824B24CBCBC6B4980559921D69A A48F593C4791B32FF0C6DB1546E37F831A82E3EC733773310157F50DB7AF0684981345E7E23A 7284029CB27BBC36D2D41EDD1CF0C3E30895D9DE0A2319A746127C37B6F08BB7F9A414FC9FCD 2C17998F7E6CE30C395E2BFC589CC0FEDFE92C659E4078DC7F83E9418B340BBEB23B52D45983 24238EA02C94591014A4D7C12451F7BF20F3F9DD26C515877D6C33A2166A4E433A1748AA192B C0D33F1C4FA89397E39AB886AC737440C31FAA635676A62E6D3F194A668FD0F8FE5B6A8BA3F4 B4BA2198C837E4B9CA708754CD0804AC78C9218A770AB3EF5765E14A69D14C3367F842B72352 3AB69E5E4FDE7893F99C88273DF486B4080089A0DA5136C59E1DDC48FC71C1E9C8C591E8BE5D 3C9426A657E65FF430EB154E2DFDF4333FCAFC588B61F8071F65CC8D1CB15E27A425ABBB0D78 BC366BFC4F88122C66DB571555B5D6E028912BFD89CF3E0E56C464392A4D505A4F7E23CBC169 CEEAAD218C7553668F549AF2CBF9A297805B3453B7C61112BF8E6325B7569E38F635B2E13B28 AA8F7188E4C94E3E047B6A6ECC050ED9F3A43B131193D84B32C0FF1406B9B66E3627719A781B 676DDACC16915ED237D6B1342F3A9D981D9E96A1A8D5827BF165BB901800D6C900A53271C906 D3D106D26636438E1B5A0C9C97CEF25F0C8B4B5C037C10A9295DA210CDD608ED6E0B77CF2EEA C5DC2FCB7B5FD0122A3C3A03DCFF782E3C877F210425F9FF99235A969ECA67AA7AA290130D3A 64D6165CCE3AC29C5EE3B4B86EA3AB78373C664DBF6B99949EE56B0BF0F94838701D554B26BC 45C4DF406D9015CD0B2147D338D1C71F7738E3B922291C96DAB5D9230190FE3299551698D8B1 4EF02F5948BF5B5E4BE42849C001CCDBFC06DEE4FF6B12832575D1E5863F1190BCE902A650C1 BF869CE7082C9388A1DAC4CA0E02967E3937BA91CDE0E931BDC07DBD87BF028F46CD00E7A7C2 D26362E0FC0BF267D6DD23E1DB2CF41C3BDCC785F2A8D12067CCF81E1F113DA147CAE6B729AD E0F85369AD28239F35C7C5CAC87CDEBA07AB233B9321055B972A98CEF27C1B41EC063015E8D1 A2DB01AFFBF0BE01C43DA54A86F199E68432106D252837759AE1618D7008D615AA436341DD35 583DF423EACC1B48D568FF5985145CCC285B2803F03B5B046E7514A8024FD786D3033AF60962 0004CBC2609766039EA8B28086019E4BDA30113CC40E854A159D86AC49E50D894595349E8B37 97239DA96F55B565D5185E630DF0BDD44612DC4E83D31BD8A4372AFD5420F6B379EB8D7373AF 3C91C999CDBF3AD418DB84AE6629D44EB28AA5EE9583686EE4F9435DF0971A3059BEAF8651E7 4E33E7B712174BF952795561BE53B5926CDDE509665488354D5C3E288CA7B679B9B969C9C6B0 44AD882905663D1F5AE476951A637D4125E26575B2CAF43DFE5C6181238D78E0F41F7F798F03 FBE9390561CFAD3F29E9DBBE20EE524344A7E3A730C529A2BD8506FEF7D571AB99A36E136C67 897F7C38582782BD04DC799F8F66432E0D5AFCD239185E95C8B6842CFF16F2CC128B8FEFEED6 95C85E4FD702A60553A254E9EE2AF1A0313A5D2AB5EB559064480B13412085120CB6C90B1AA0 8AE1FBEC261077B9FE65E3FACF4DF582E89B68A4422D0460DE7A8523B51928F1416A9AE025F9 541FB5FD5A9AB5508ACF97EA891BC25EA5FB8C7C58310720CC40B8366A806DE9E4DED30426B1 E7E9D9C145969B2B6D27CFD7F7BB7B2265E79B4BB865B0645209728891A88C68B20E681B4472 CD3105C2238931FD048B43400A9819425A2071367B962C69374A22A06990EA59D0FDE438D552 2432C1BDA7A54E52B594B662740FE6923CD04DC2E7B05748A8BEC182DD5079DD44C0FDE807B6 BF4025992BC6B6F24C2CCFF8385CCD37167BFAC7934E521BB7327D8E88B018877D690F959245 FB26551A75A06E6AD8E5B1C2363D2493FD947431050608AB63F15D1966D6BFE4F1A5AFDE5BCE 8B08E91CF0514B4CE56E1C62BFF778159B77A5919DA5F4619F7A580D6053126AFBD8363082DC 12A405201442BA72742E26C7C8D3430263C9A0EF34E0205065977E7952CBE0FDEFB3902D7716 7F088103CB7D4A508C867077CEEA5D1FCBBC1AEE5F26AA7A85FAD4FA3C0D9207AF49B373F70D 0FCBA87AEAFC7298793693865C156FC0E0E8E7B31AFA7C473275CD08B7BEC07BEEEE402AC272 C666C61F5BA5C1C513DE5909D2998EF7C439ECF9926DB57E82772263979BEFB72DCCB5842BFB BA0EB1586CFDDFEF3A63F1B4FCCE3894E981D6268A62D1D39F918D4F296381D5AB356450FB31 CAE01FD7F36718C7A54D503EBCB479CA191D5DBBBC08723B8279F2491931D2BF54BA9A93C214 549F66C3C314EE37B5A9951D62A6776E6C7B4989BCA05ACDEAD7DEEC09BA97A0DFDAD7429E3F 480806EB9C7A3865B5A0648530247CCB71AA31E1F8971D9649D6A430BD8753FFD295F30E4E7E CCAEB12F4A5D9B7902FF57B08B3ECB4593C988758CED4A394E412FD5A132CAC5DD3DA61CA3A1 3E91703702388EAAD89443E70F7D037C9FA28BE7C8261EACBB7AF473EEDB0645BAF01C5F506B A85813FD1D5164F541E0E85D228E92E60D9BF5C108674C621D38E726D2E219411759E8063C2D 2E64120C66BB2A8F6F00289C3BFADDDFAFADC3285CD6AE1E624A59D7621276362382D2156A49 319A5B1E2B6B6D9B9346A59E1A4E9214C66E17C3EB5A31B394EE2F030C88FEBFF5C659E29FD0 5F57C35B8C986ED1B6FE33ABAC7334FA0653DE6A935CD0CFB4F785F80DEE2D651BE3418CC83B 18B5B4C176DE3263ED6B4F64D4395A48C2C5CF13B8D21D63D85E2228F6373BB766D288CE9D05 AAF98D0848D1AAA42CA0629165C7417E47906AF4ACB4353CFE396B82BEE33EFCFA2531DB7237 9E81F0389A72E0A1D423E1DF66772732EBCFF12D3F83DDF18C46A00297345166F3C3E7B11974 D70AB02EC9629D4AF1F2857FE14D86C9B47B79AD89044CCE0AC09FFA4621608F7AABC07C0C76 60B96C4EE1456B998F509F7D77C9C194A148C48B48738A6A0AC12E50137764914BF6696B7049 C8F13763949F04D6A5302B9E266EB035A11FF5EAFD296F209A3FDDBEB62F1C7064CE0C449A70 A29012E041EDFB71C9F93BEEF2A564FF2D8B248579769A81617ED8DE4F232577E0CD2CD650C2 DD3329069017B0B427651E532CB6D7602A81BE2626EA6AB6D0C85D69BFD8772D62DF7F6C86EF 67C8FBD17F2D2DF34DC52256C72181093E4C876D86C9A66C91A8AB1E01285763EA93EA6B7A4E 6131497BFC536F69B7C02D28E4645CC6FE5D061495512429A1D3752BC565F769A4475E2C415E 8CA4985CBB329D49B8AFD45498CA630C3CE56E7E26CC0C4FA9446D3A402D66E39E3E3210644F C9A9E0E4445180C672C32734872703910DAE90D102252EB56864F1CB6D1FB8E4A51335136989 08C42B718DDFC4008264791D325E6633CAC13611B10672C263BACF0820F84B7134EDC9E2373A 61C9C8665B25AB7A583A4983D30386AD84EA9C7E021F64C9E54F3F9B3A3D3267EDE3787DC949 BFB2AAFF21B6CECB88129DE3200AD2693B8B454B18CAB17134A471540C009EE8DEFFD2C70AF0 A98320EDFD6909B0B17C3F4B857D1FE5D963EDEEDD8CD3077A2980FD1AB6DD9AF5B151BBF7CD 6B645FFC9C103E45552F43CB401BD5F084116D21C958E1C1450973C0C393F4BA75A9EB1C5438 9CF6C840FEB5BFFF673E058D8738CE2BB8C07CF0B2B5A837948FED64FD7244D5B5C53303C50F 1187FD6B085A9BB6E5DED081B78F4E486E0E17811A552AAFC50A69CDACF0838029D3DA87BFAA 13D89DE7960E332650E5986F940C4493102DE366D8D574776E019205B25F16B6FFED5AEA7C87 BB558497FD216D2937452B62D8A63D5EC72AF5B83E91BB72BD04CB724B4083C60D2CA9D125A6 9DB5D2F4212BD48BAB37FCC933C471245AB99284671F9E3E7E6A9076117F5CCC8D469B929BD7 C4B677DE5BD0272D78BC0434B4A1B4BFF267C4FB588631B1BC3DE1DCC912E3902D96F16B2A35 0775BED06BEB2F1B7B530CE45337F744FE08822331E4D2913849A0890434088063B0307DB4EF A561810F9C2073B890C67108A95CA581632553F76DFCE780AA175675B186D24379074DBAE021 89DCDFE396A8FC790699C3ED4B7799B30F119D60EA3754549A3CA44CC2F17744DA59E11550D2 B0604AB45A2FFE69ADE126FF2F92CC75EB1D8FA6CF2C2FA2DFB49C1D16F8074A7D7115339E93 C09265B38789A6816B12C803178A72C7C51CF78557D3BEB2D3D5F0A4C53511158145EFD256E7 89DF517BAE8DA9B9B4C494AE42712EFECAB7A7D5BF4668F1FCC23EDAC598CC414BEE707C4C33 1F02821C296725BD4F14F5BC97A15B8ACED9CF5EEA5BAAA216EC582692F7A210BE4F6A41E96C E3A8C65AFDDBE800E035BF0595C7AC0D12B87B4D409DD6772D125249F273108ABBA0973A7CEF 4F1ECA5C9A17FE3071E54E68507DFD8EC6B787DBC547A90C43AD42856C26324178F2E6D2CA3E 9043188372819D3F02A9125A3BFE766E7D19027CFE5980F5E1E1A7033A5BF236169FDBBFD2F7 3EC6D56375B09FA750EB4741E101241CA191B49DE9C681E42849E23E17B81973E903F52B9AAE B07855AD04C30DF51C9D9B54F718C7A11038F8DF63DCFE6C2728E69E33AD933A517CB08D3DCC 7681F673B2E17FC38DEF47E2A2F7FE7173C3B6922EB57CD9D7988F6D3A768E56B46AB8C7EB9C ADDACEFC45E1E245563C0A52F719FCC81C635F159013EFFD5432C697C105CDDCDE49CB5C5696 3CFCC2BC4506BB906910876395C8239C8E5C161471B3A85A353ECA17FC9BC12B805B05D53AB5 BEE2625109ED742C14ED2B08C5D19E7B4D9700D6D3191358D481D2C0C74EE8BDB1B7C40C36FB B823E5502F9ED6367AF146BC4E07B428F90B1E42E6D470958FFFB5C863E73B1904CE37B9A8E5 90196BF43079DC61FA5BACA8F312E8E8A9B707DBF255BC5B3DC1DF58D374702DDB45265644A7 BE315FCA2665192E5DAB08A6BEF085AC370FB81F2267D4D1E05BD8D69BD3D01A1498020A03CB BB8BB7A095F10C9D88DA27301FBA0AFBA4D3B056D38EE6A6BBC532B464630BDDBD4CCBA50C2D B04E49AB8E596923BA3495E7566268B226353E7DCA7B11F28E795CC39F974F426149E0C625A7 EF0B4CEF3E3A5C0A964BEDDC2AB981E564817B963022BBBEC1BE0FAE2E05B6F5F41648FC17F7 9A65162E31A88D0ADB71557142D8545CF2F2EA1A0362E2FDE496923A87C8578D5482C51C52BE 0852326DE3D75F2C6C3EF3024EBEA779DD63F39BB8E2726A7B49A901E3BDDF9586DE02082B13 86FB777D9F09DE377682E14AFDDDAC3E81F485B21CB2537130EB6F69A77B87A702E24BBC2070 6467E82621211300687F18FC809E976FD8EF3932E5213EEBDB9D184D31433B353CAC68BDE9C9 6DA802FACDD168E79491070754E5DE227FE2DBA96C51C16D8C8F0EA9B302A398B2F9491562DF 08AA4C97324B6FF2FAC68A5D079AAC79CF77F0249A0D1C42F441BA372744951077F8DCF83A26 575EC5A87AD6DD4F95EAA1B7F9393C27ACD5F79CE6031E808E13A55C3829D158D1E59E177FE5 0E87F3CB39A81F14F35645FCAF56EB49F5EC78EDB848B396C72F5D928E3561240E2DEDACB37A 994154940F412456119657381B52EAEBD728B026E87FEB8D7EA1EE49067C5D6BDBC56C578728 820D583CAC747F243F6F4A59DCD5B91CFF0232F18183E8E25C76A2C7D53E6823899D43FDAC50 4221799C56EA08F26BD03501FABFDCF4CAFB9E7E2ECF335D8C25F99D40D91B8C93BCEC6B11ED 9671985B8BFCDACFD77CBBDEA246417FFCE021DE54FD0AE4CA7AA19A9458426161513A0F5D7D 4BE2A6DFBB4D6D060E5EFB596F76083B53EBDFBBA1EEB78137466AEC283FFD78BDB6DFFF9748 E47A24614104CEA06D88693EF2203D8792EA5333A697E7B7CB488C01FD76AE792AF0B8F88F02 7CD4BC3EE5D4A09B968DE6B56DC55419A716DBDDB733F1B86A27CDFB8B3AC29DA7613E6D9042 CE9F648A058E2321DDBC10E3374366D6BC4CD910DFF41037CC909580F4650338C9CDF3EB01CA E0D33DD1E1B41524E0F27A77337BEBB6E91542F599C9C7A1A4551D90537F985CA14DB562DC34 A07F072202E86FCED29D1181A2B1D57CBB62BF6E5E7702A00592F8B018A12C826E569B7103B7 8124D887F03A935B54255DCA6A01F433308A55A71B305EF69ED070CD7CDA1AED6BAB529BB506 970B92DF62DE28C05F21C5FAB79AE4BF3A8B2865C408553CF4CC12E3DC69A0E3A683A637D2BA 187CC5C615056B1853B349A1B88EEDCD9748FCBDDAE70100551ECF0B897A0CEC97A456FCB787 49F74B25168181B75AD5F523F4408BBCCB011D55B83A63A0D96052FE523DD891664A613652AE 3A979AF585C69FC4C34CE353AB52C5DF99D6908E1CC86D89CB6A138F42FA4D472C48E334F334 9B2C47DBD9B6B6A92004B7D3C994EDF5B17F1FDDCAC72F8EF393838BF5280CEF41B803513605 381637E38638004FF04BBE10C46A8135E0B5DB123C0F2F6453C0B648124CD0C7E379742950E4 B7CF205BED93FF6C0439BB3BA0DA7B9C2C9FEC48B5E49E10F944D2F499C6FFD3250F8F7AC82C 93EE7C6B63056D1278871FED6BDDE70B1530118D556696CCD90FA33010B35AC56176D0BAF342 AA846BF7B1A95D98FB7C05D56B4FFCE922F6DF7A09BD8802CB536ECC23C89445544F922DE501 700910AB28C892BFB1548C48FD3D9B0BA4B5F5CA44DFE67A8E2D42FDA79F9473FC6EA646483E CEFFFC0254E3F930C4732C8AA392E4AB4E26064CB1A185BE4CF0677CF1706C4DC8BADF32285D 6D02D2C4806B6E0E2C5C2884F30EBF9BFA16BD7BC9E2B779173208C156927D2848DE30A5B3E8 622528D9DAA63E06D14E2E368FF5331279680849F8D9B5FEB448633D444CE06BA1F3C8831018 FE7BB9ADB9A896AA75F9E489E9B88342E424DFFE90976E4700E6C6EEDAE9BF6280AB78CC5805 93347841BF10EECEDB86AF0CD461336515CE50989396665CE975D1F1CB0BDC36B619F67CBDB7 B090B04F447463F62927FCD0E1EFA73BA22063732CB8557E27969D5945D8E82F4A5ADE094068 6AC760EA8FFD127653F954F0287C74109997F1B26328FA9556C42C7B01F0A810194A9CF0D716 D252504BFE2C2707456A4422E84AD233F4B32DE1A825F72C45083C7D7742B6168565D48AC1D5 2F9192ABB0D491A9A0A9416420474D9EAF1E146B2EF1F703B2B33838C4163DFCF8242CA6578F 37CDFD4144EFC3DBCE88D3754AF1765E677D670ADEB2FD2DF7882A4BBA95FDBAFCB9E09B7177 CEF80B03DE222CB6070D7D7E09FA2297EC831D561A2069F6E95E9EEA70E41B126893ACB834B1 778BF4CF338A63F53E4828D75ACC76E29EC822866AB6C5756BADDCE0E3181837E1F7DBAB1405 DAA2231B88E176444594000F12C8351354F3A5722E9E4C376B983CD441D6D465F3865C8111E4 7604C61A04CC59D185CDC89933B13B3A9A15360AAAFB18008FB2048000622905641874659693 57164FD31ABAE5FFD1C7210275EF0198C74BD7F04BC02F9012A6BF7A8B9CCD76D4F449DFB3CE 7CAA4FDB6E04DB1099861B53FE6A8497AE454438A0099C7F14AB799B9E8337128ABF5C523F79 49E9931D233E8466029DD3B7CE86298700771876032656034991E213CFB22FFC1DCBD88EB6CF 20EED29B983BEFC5889A4589428151A249BF85A7F38E5F70CB6F87A706A7A057F63CF366AFD6 AA4A481FCF7F848B650CB9442EDC33673CD98F8F895F4D82DDEC9AB457CF21EBD339769292E1 D17CA465997DCE5A6829C57392E08C8BE708ECED1A9AE4786EDA0095A05014D4AEB167C1D1E7 83F9EBAEA78816BCD4AFE2E5D356A30828E11A5641344B3D46A3E8AADCAF22DB74FF57EBEA7B 779B7C5DB027D6FDECBE1B0DA2EDF3219CEC627E64CB3142D303027F74E694A983B16B33FF62 D1B0E114CA59B30D2261AC4337DFFD0273ABC09B955E740E6ACB4F20969DA27883B3C162810F 194A9537F13E58865F2B4611D8B9A9C4A59586E583F9BCA6E8684C982FBB42AAFEB00F6A2428 75A8D5246830E5D9FA8B479C36225D60C79390094C3820D9D20483BD8B28C5979DC27905528F F829C14E346511BEFCCB0CC2DDFAAFFC69FA01F2DD592B0A554C8BB1D3DDEB53D871DE3048FB 9A816A40A5EBDC1EEF6725B59F6EFF26E4DA46360D4BFE49BF623955485875028F78DACE31A4 B8F4771090B36B82E0E91C9F6B63DEFCA85E751F3A1E6D47FD674B6B75D34CF5D230012A2A02 EA49017E9AE4E22440C836923450A7CBFE44FF5E90D9273FCE99A56CB0B4AE070410144DEA9C 75282AC74C8D426C20B54D48BF5E893D9AED7CCD4EDE4B3EBBF29320E9F98E36571E545C09DF 06B72ED2DFDF058446FE62D7F591326F7A0405718B97692CAC9B02D77A37662F0BB150102D5E 820309D5E1D4DBD95606111A4C5D0E606F890732383B96D58065880C679C4FCC3F4FDEB870E0 022EAA40D367A1CEE2E43C31B0ECE28481217A77201B361541D40C4C7ECBE26EE0263FA70942 A9C4F90B986284113943E170F7C6283447E8862701E31BB28A72DEAA7669688BEE2939086378 99339AD8C2C1BF9558B06446864DB50526FF514EBE3122A3059BF27307F10BA5B44ADE0EDB6E 2693D7DC2B80E1A84F635126960FDD3B6110E84922D484261C92C8055314E5A2E8FB6DB0A904 E291714B4B1D28E2F88734343E42C06ED7DFF193B1871B028E7A0AD51249B36258C0EF6A5165 F5B7AA3061F0ABD6BE779D7E845D6606C9576314C04E98902DFC7CD027934BFE804B12F01E9B 5438301E280AE84371CC2BECAA06AAC7A65BB6B3F7B642207D730AEFFD55ABB33B8FFE0FE0C7 B16356E092BB0360FB94F1E8A2FE7FA999CA66B6675025CA605A65540F6D5619887D7E1A6869 2B76EF901AABC5A15D529F5BFD446E04E95A1BE213EADB545806854ED5E346813ACC82C927E9 DD5B45DAA1C1D57A2B451FE91CCCDDACEDE657B9E37D605CD4D6001FAAA843B9EA84917602A6 7519B99DFCD39DA8DC60A1DF52A0A0C8CD35BF9069C1B8A534B4EFAAA4B42E932BC61FF11A84 6190E9BB2111D13F08570DD9C9934D0C1DB1EC459A3BACC8F10BCCAC2BC8270B7774BD3065C4 D146548D1959395266F420EA71C05EF4D37ED0EC391890BAD4D686D3D0994B98B9A2629C2B66 88E453167FC651BC70DCC608B453FEA208329E9B93BCAC1A7C9C5575B43D32708079AD2FEA25 DB03A13440388F8A4BF9C5D9CE42281284C0A1FEBE6B7BF94B58257DA32011484398DB2C2856 23803D4E578F30BAE73A57D039A2CDF56BC2A625CBADAF7FDDC7744E8586D8CAE909162D2A56 1FAF91099DF981C72617F43F1E8DBC986A1944B370DDEEA5CEDEA04C704BB45227680EE2A7A9 1D5F71C8B429D5A1E22C557932A19B669A6F7D60BE8B5A1A08538D5396492500E8A30D8F085B 9F1613E18FF8511D8F4ACEBC9DBD742C6F27AF4B62026BFCE268E3239ACF3CD0C54176F1839C 9CE2618F5680353A0D234181172DB3A14523D69A204CC7A5EA4A9CF1D78275804D60D41C364A 8725CB1B72759A30DC5E2920B76E1B486795CCFF14FE6615700ED97A1BD4CB16090CCD430640 36FC003368B1E949D23BE8E7CCD7F4FC6F54BF25174B56B42B505E99BAD37A9868A92C29DDC3 29F1D5A84806B9382870B3908CA87C3F840341E45731E5B7EF5B066AB120DB45D72B0E444BAA AF4E948B34D354C244263505EF3FA995E2DC1177B8EBC01A6E2C7AA5766CEE90D3AE7273D569 87BB665A43B4697A0EB98C120EFAB3C61684520E148FB5227939D6208E30CA72FE0D661B9792 C8656B44986ECDF77159F0ED52F695DCE64595A243B635A3B4D328F73D248E1F8D8244B2285C B5F6374E32B2FA7F2E29828E177F81938E2AA1C70EC9226DC45840F8F7CE4A377D32FE6C6550 61389B70C4A5AC6D62FC03BDC16B1C15A79DBC46623501D263A948BCB2747E85EC1D0DAAC606 206398A2FC008F369B673FE9C12A1D4D06D80D625F2412FD8912D625F182307FA2731435CDF2 0C944C2ACD5094A89530A6CF54BA8D347B3819B31ED56C55AB6CFFA8C8C3C0D3C6034FBA9FBB 373F08C76E79F50400FCF3D1F65CEEC11C3623706EEC7ACFE84B89510867C0B2FA6F25996733 E4CC394872726138D7456CB398052F4C03705E27BD85EE755F1992D1C6D330A95B6D208ADC76 D4CAE80A78C75AF6AE4976E564F859429ADC4DE87D26A9A6277E14016491D69C6B9368A6DBF7 2C68EE9B4B32CDBB6A186728B354B347DF5D5F33DB9CC2F757B113EFC0FB491ACDBCBCD70D0E 8E22322E6BD3336E642C6C48D6DD0DEC32C39D6E786A99702B83F644E3039DB0BC3BF91918E2 41A1D20AF0CED35FBBCF8892858762FFDF4D855DC043CF348F64B9F0EC40B0D58F1A267C6567 8609A29E8508F0F5367E0528845F666D3DEED15A880691675C9977278FE5A0C75C97F10E201E 97D255C40BE2DF023F3842ECCC0F474782716CC0697D2305D2894B2149C94ACBD4DB97A8CC49 317773662D6533D2E3BA293FF6EC3BF29B897723B200DA0875803B40FAD899E953168BDEDEC9 75D3461618652733F9F1AE97FA05454DA0C39B27308F81D6624E7ADD0E909A721B0B5B87C735 A0F81402E1BDD37437951BAE5735BD2D9C5A201DCFC832893AA343A6E4C8F879BF7ABA330F71 AD22AA121C49015A6E1B4DE63337C3C9B4BFC3E8456D25309AFB76665AF8D3558841D95E1577 87426288F3A108CC0388A47FC77672F9F837AAB1BB03395208BC7800F59D883023DE8DE4984D 3550AC1E435A4A9EBFB9024FEBB3997847FFB5AC94EFAC7E480B15F49EDC4E1EA47CA691AF89 E372FA1D51A68D417DF4D7011D8B129191F8CE9BFE2D80FC9391E51539A8EF2FACF34C91BCF3 C5C81BB7A3050E0EC13E3CC2D03387335B307D3CDEC0D43A6C2F348C3820CDE916070CDCB485 D1ED73B708BD083E4653EF4F4D1BEB104167E5C53243C72B5DA52CC360602297B86B012DAFA7 BB0D762D78D7AC49D84DB797D4BC25A89309E3715BAC2970BB31C959221EE2656BDD93B51D43 0644E3EE633EEDA51E1AFF403FAAF247B15DF007EEE990B21ED684D260AD6B76028F80D65884 4D4E8BBE91DB43DF55819FC456B9402805DF67958AFD45DBE94E54968ABD3AFD2C456B785092 7353FB25A936D9D554A21262A3CAE1692F978F58BA5DB38A55548529695BC0A455AFB4BE3128 FE733C7234154F4BA0F00CE4ABC7C240C9283831E9A7E0BECA118792AFF6CADF3FA74A572F1D B4789FA83E7E9881E48568814E40E4235A2ED72E8FBDE71ED0FD40D348F66D08E56256B0EA0B 46F54720DF7E39654B4B7B23CB4863AB341CB2045EF7A71A9AB550E1C14282FDA3B60D306906 09B9A2F535670C9F7C6062684E1062BF1B1675288E002412AE17FB3D63125C4A577D3BB97C12 F4CD925282737CE2DA3C2E11733BA9B5DCEAE115A0EDB3ACB8BDB1AC0F687C829EDA0022D654 DC3D051BB7325CFB66F96C7ACD1A8BAEF2BF65C167DF291DF762720D39904AE50708552D754F 8F43FC2D5B91B632D2BAF70C67D3AEA5CE731C380333E66A149E46B32412163C743D128F52C1 24CADFB65399355B4BBD4C0A3FA7C02DE323911051DA20124B77AB931989A74D584C0F6126E4 31C6DCCE725FE72F83CCD0CB35F2AC901501411270FE902BBA4E6A4C1DFDF12E2E857221702F F0749C495E170F01578BAB3827ABAD809BFED83F6FFB243F40DBED47F896DBD37CDB7D63FD08 673E13DC24F4052E1551BCC080685ACE8D3184AF5A1818B4D48811F32DF210C8F36FB6A20C9E 239FA888CF0EE5BD1A87F15C3C6A3E459BD006A69D2C027A09E83541D4ADDBE98FD665AECC35 C311871A4A67FD59EFC06B2CDAE51F00659B4C4F9F79DD824485BC073CEA94DBD45CDE541355 F7244F5B5BCC6C76D82FCD1CAD3E2D08175A375098DD8157B3E30184658EB500E224782ABBA1 297432CC25FB54ABC54C8CD85667DD42BFABFDE7FB7A4E83107AF3AA508F9B20650AB6D01CCD AD374C67F31A666BC1F505A6D94C0C94E4E73EFF7D57FF69F4F145504F60A032109AD829EA90 EC25B66869ED39434EBD3154E4CE7E044F01AB126454339B41193FA9618AD7B49CA2A9B2B595 684A35A5534CC19A989D5F09DBE09830284F895A4876FC5F7920061B06CCDCCF168D5022CD6E AFEE4D796BE4B9BA38C0AEABB4B195B81B621843DB7DF74790FB46F5C07426C8A4FD0D9F99B6 C0A26AECA5F89E36FA8DB06884AC9A3ABB1AFF9C6889BAEAF13CADEE3F0CE80E00EEA152BB64 85BFA7B5AA02BEE1905EC4F666449CADC026BA91B9ABFCC5C2002950D35ED46575004D566225 82500274E2ABD691D0013343966037685138B76C4218BA60855DD1A35E4505273C2CEA443018 DB1CDBAE7DBBD948C96F5DB10BCA8127CCCAB09705EEC19399F31F3F8AA774BD4EF950ABD0C9 1975B346E7CEE612B6A4FAB61E6CDCCDA47B51D499337B98B0B6EE8973317DEC69E6F1564868 A50EFDC5086C806759EA40BA0F036E86C8E76A6346609A7D87C6FB2FD5FCBD9B1744FED5F412 E3DC55E519A941C4193F66E6E4656D04BDBFAE608110803F9C72BA22DBEB7AF2068A1425EC76 E6574311E3E1200DFDFCB4A0830AFFAC7809FFE3404AC5EE8ED43BE8425C1A13904B1F9D220C 9A9A6B9295AD0B13BBD63E1AF6AEDFE6F54DA8AC585B2FD53AA94B2CB65377D10EE13460F6B3 08BB6B3476DDA5FDC5EE7DA695EF118D79051184BBAC35EE74D6F046F17166E0F12604157979 399734F16985182FF1BECD19131570B97A817C7467520EB148C3E2887020F8C09CEDE0A54A25 4E0311A504A411407EA89C2E916F60F32C4BF8456EC370ABF03D1B2D95C991464EC963368441 1664CB33186BF6F897706F7C500A9D0AAADAB811985D1B741AEBB6593FBA0E07E004E86D87CE A653B87CAB70900D1915CE3D19BE1969312EDBA894C541F1227586721DC33555FB28E81307EC F93F164399A58988FBECEFF7CB8D1A751B4FEE0AD6D2638B97016B2DBB034EBD0528BF06C08D E822804EECCD4C943ABAB45490FE47DE7584C569F9789E8C1F213C1924D196C63B3D57DF4385 FDB9BB4D584F6C4B736D32F0D533C3699E90D1E54C3F4ED914A788A0C364F7D5571EE6F61D85 E5CDF8315FDEC93DF38BC0C7E5BA9DAF885F99DFC9262F77BCD3137289B43D2C433111E8937B 5CBF3941AED5FDF09ECD0971144E020FC64656C88A01F9B749770DA845D7F690D1C12141C7DC 8724FEFBAE909D2E5383083402BF005598FA8B67301934E98FEED22625CC852AF51E7C647385 A14B49EAD19C2BBAF578D35943A3B8CC943A863187AA79836CB71DD8DBDE642E1813FF3C21C0 90F3A7BC39AAA1F5242E8BF68692A567578A4795ECF926CEA68CF77CD6B6520367BA3C98CF22 D618A2764323297D1F2E210637FB6CC84674F01C04CBAB1295558A148F7F94F64900596F834E E0F333DF86C59200992C77DC32EB5091B7F5E1061F75EE9AC11D4F7C18D975FB2AF04245638F 02FC7475556CC1BAC14F33D0F36CD94CA20CD24AB4B587B03D968175388ADA63FFC99E11B340 AFC6C97381612C825A4EF6201B13C813BF36F5897E6FE3D95BAE2BCE401CAF0F9D7F1D0729D5 0D6496CC99DBA29E2300A5307420DB31875196A26DCE6B59453A810B704FA8ED0E654B02C36D 7D3D870DE8CE82532009C4E9F93921A7B088EE995060AC598E84F5E1248864269A2358FF4463 A50134F113431776066909C2B52CE0114D3391142F298974219ECF3506BA1830359D186760DD C7E42E376A41B17ED88E6C429768C73F52095F491784661D89815ED8B71ABEEE1922DFAAC7DC FB2E427C480A235F533F523C7B4CCDF7D3E3E7C73BBE89CA8B04F89BF496310792B445122235 F55AC0660CAD4476ECAB30D3FC774ECB381ABFF4BF4E50BD0954E240AA7DDF07924D53BEEC0F F8DC680A30F8CBE921F5BCDB02BA1CAB4C15143898C5C6E9DB4B88818299C4CE29F78E88052A A3D4F68DFD93BFDD1CD6328AB1D2C2888FAEE513E922320FF0C084E617BD1EEE5442DAE79108 B34835214A330742AE9F99ECE561D29B09F611EEB154B1498929A4A6B3F09D63461489AD6EF3 15AF77054026DE9F8120FDE0BA8012710C75266B9C310D06A842451C5A2B1AAC9433E08CEB23 A872593F49C0397A1AE1A6443E4BB99C1E24AF85DFF91C97D4F400B3572BDF28174C5C358427 ED6CF1645BDC283910C47C8C5B112802E549F1D60E96C7FB2CD6F0648F2189B7FC0FA2652152 CDCFCB1B20367A2033AD1188576017E0F1272E701A5FC7BDEF08BC4104D728074573E40C87F1 A2520B3D02EB8CB23CBAE6449EE78BB857E3EE7FA228F91E8007B848E309B38873EF3FE1212C 1635404DB7A0BB06E21EC03E9BB358643F9E9972015362C58BB56BAFB7FAD31C60D0DDA2A30C 5B5FA028896FAAF05A73AB8610BC521DF0226A922DA532FED3E6619E58D9F76F3693269506F9 CAC08A56B7EBE8F9C8759D617BF44B03C2510C6235AE30109DF7DB6A7A391342AABE9D153366 69F98D88DFB213F19140A52BD39E2E66BE39BEFE92B98D7271917610BCC240AA5EB2406570DA 33CD0B66FB032241BB148A0F200E3937ABBACC878C934BB65A41D01805285754E9A3FD0DFAE2 2C434D1D86783EE2693D3FFDDD895F8FA00F83417BDDD173E11F9E1E4119AF293F58B5DECA41 B5D6F4AD983F668EC561EBD5F446B84FDCA10865202528F60BC54003413AFE4FE3E89FA6609F 2F21DE8D5AE7D701FD349DFAE556D6EDBB906DCBD5B67EB59B2B22AA1C26726A069F08AE407B 6AA179E313A4856F5878007837D6771DA41AFDC5F9C341F5505661DCF8D7E14A16E9AD360685 7F67D8E9C62E41E5A505895FD0386DA34679735DEC0E3F71385009C45C1D2B9FC124FF7844AB CB056798CBDD336AC5462BFA9C012966FC34D9628F962285857C14FCD4FF243AA312F6177937 3915880BB730E4F075DC14634C01317641C7E1C3994B40BB1BEB74DD2BED0D9D43DB000833A2 ACC8A6F297DB5E7962430CC727C03462E63C2DBAB60F6221BF5DD3FFB0DDE89EF98BC1A5C6C5 C59E6DA88A4DFA99F5DB8BAE29F26E34B421E7E74C2C05A8457F605FDB727DC1135AB363E3B3 9CA32B2385BA24C78A1E0C83D42C513E3383B28D9554D2F5DD6F4BA1FFAEDFFB8923C183E35F 75C57CF48893E4CCA18087CCF8C84795F8A31839EF6F6CA25CC154F6CA3970F60126B252465A 76B1EAE8B240FD387AB315E1E710A25B339DC2C0706DA7B1C47AD15D5B6837F7DBF5A95E98D0 EAEC6C121598076C6BA66E471C87F9947929E01B386BE55EFA5E6067CEDE9F54B0B278ACC43E 56987848ACD559621B05C67228622540EABE7183DBC1305FCA26654D9BBB734355ABC4AF90AD 7A7406D123A73695F77FB049B0CDD25170D8CF8F9A892D3636FB152688153F58E333849BE3E0 45F8E18A4EEF42F191FEA6F2FB54206C981FFCF827757A22E75A7FCF21459E7C42FD5194DA16 D0A33B32318FF5122EEF24C81D4C3B9391DC8D209EFF13FCB43FABF1FC67A712A53756EA65E8 1AED88C0BAE56CE5DB00F2F3BBD89AB87B9D4C12F35FF1C95D8F3DBB7AAB138E3C387C135A32 F00FED1C25B0F96895792B4F0276C3E2D702816D4A686DB2662E06451A3E1C3A5F6AE239B240 505ACD4DCE12BFFFE205016956C6D6B986D2163AB20EF7B02F27F9E0F3518E5E51D7B8A81B6C 6C0CE8A32956C435D20CC226D0F16C91662A32D05ED7F66B995F3753D05B91B030CDE048D7C8 2885174A896F22FCBE7625412362C5D6A664D9BA41504DF972B79C442B5232B8EB90DE4C29CF BA9EBBDFE5B37F91A630559F797C22149AF8852C5EC4AB945C8A042E5DE43080684F4908BAD9 69F290A1CA1FA0E916B6FB802C7B15D2A54C8AE8E4EDB91D926DC622DD5E42362B4BD9266222 21607EB032181D92A5A0666424921456F2198580910938EBEC7902B759EC3B66A10C946E53EE 98DD1D28970D44818C30C76FE735F2BEDE5526E47C64EF7D0D74C7564DBC64298D270B264658 6835DD7E6255EA99C66AB9817F4093FD2E219FD9E67BBACBAC0A9D3E678111BC985151D46E06 CB7B326E767512DCE309A0B40AEBDC854EE7A3060CF8418DCDEC028CE80577FCDCE3CDAB46CA F8A84A66E8860A034A390B444552D669C1C1BE764711367CC71152101FAF804C36E90D4E1BCA D89392929F998314FFEFAAC52FF96439F19C20D2EB9148BC6CD80C8B5624CBA39D84ACCD5525 23A42A4301C7DE9AA5637F717C46D0E57350BDBD4F0ECF575F19FE94D69C213777FB5ADD543D 485B47F3A76851E8C57AB9574A00E9A99641279642105707D75D97FD49E4FC53B79EEB0A8689 E88097CCB46CF8497977406081C7EF28A2E7169589F595997348991FFBBBDD8DEE44ACCB0C98 968A5814783927350D73DBFD9AC11A9F571AF46363E6709987C46EA207622FB319FD5519E7FC A3DFB9F784C1ECAD5472236CC2790015D4CF9F410004EC03AA9C247483F9134E742AFF8E3D7F 62778DC6E9CC87469D083E9849490B66FBA43769044FDAD7F59EBAFD5B07A7FE75F064CBC81E F7023AEB4162A787F1C4D4005998D969DE4C7ECB3A67861CC5E13F56F1EA7A4EB7521CF0E282 F513803658CFF5FA93EF5B15098FC2941FF4E0D6E2DD9CC056BEEF2C4E15DC0790291D385E09 1D2CC377FF252EBB7214C2CDC948A9FCBAC418A93CEDC58375E3DC347F872DF735D0127274DE 42F4E3709CD11CBB6A0320647CB97AE4531FDC8CE56ECA5CFE4DBB83B3C71BEF715ED3E0E001 F497042D7D9859A0FCFFA87D37FF66BBD4C420913CF0600FA055C3CDD6379C8DAF78C8A03267 EB381B64796CDC066833EAA949F74B0ADBE615F62C0517CE582A1DB047288C316A2B501D45A3 62B46CC674C913B8980DED11D1462B8C03EB3D93BFD47D33661C4FC89E49ACDC09DDF08B32E1 4F876BA1F0CE782F79DF52F10671BAE136A9B6D5120A011594F22864BC61600575D5D958678B 94D71991D55E26263141A80C091A2E356B9DFC5E718D0833309431DD80F5DC39AE470E1120E3 0A862464C96C1957C2CAA9DDB5FC3D1873C08A7726DECB5D73711461508D4F0EE3B3D9DE4BD4 24D60787721A2AB50ABF2F02AD9FB20E483025AFE53CCA0A54331ADE5D5859D3621820CA0E2E 3E7591BF4BC2004D0B5F7EC9A1141A36B0F1F9E32E46EA6C6730DE24D911748F83710F8A4F02 A7F5CD663967DAFAA7BCAC3E29D900677EB2351CFAF46A773D363CB7D48943E1E245068B8F4B 9434EE8F820B79832A8DCE28E3E36DBA17ECD3DC93F38F6BB4505BA7580B186C818A251E38CD 7DC03FA7EA1AB8D290514909F1AB56E1B2C6584E86EF32741B58C79EAEBDD62F7864C19554A1 9FFA1E73CF2C75D00C903BABA7E117E56B5EF27F53C94AE007DE0FA5726174D691F0CA7218BE E50892C6CEBED4CCE891EFA7714804AE54761D8F0379B063B8F8037A0B488A487FA3BD0D4B16 B34FD4B3E52646AC3509C5D4C7C191189FCEF1D1131B4DD9799DF6E8A556049E28C5ABD4216B 6CE52A1ECD99432D8316093235BE3D91885DBF346E18FA2BAFAE67B650467D23196FCEAEF414 8A2D9BA1F44B3B43563450F006D5767D86D942710A820EEF0BF57028B1F1291C69118901B5CC 99907C205C919C81E80ECEB1BEBDE1A67CB21D3D7AA431E0D1EDBC1F4DEE88E91FDA97DC4C2D 49215DD18458B42106B452362956D407C064E29048513A2CD4A534062EB007216961ED4566D8 CC190F990662F6C60703F35F0D8D643578E8205D1FCB0119C20D43BFD046842D885885127653 65E7A007E770CE8E8F5B20FAF8B602E8291D93A7B56F8B2E5A952BD803C196AE98C27272BEC7 9F806903EB3D3695782940138CCDBECFCC06B8A46907159095CCF0E792EAFC60435D33BC41C8 A28617BD5A5228172CA784690311898BFCB7A7B22CDA56A53467E6421C413689CD41D59A3FD7 FEFE1A8420695909716B8ED59AC6C3C83F5C0207463A369C369BCDBE4A9C35A49301C952664B AEF8BA31541DF5C1400B708EB3653AB8F8A7DFCBA52DB26A43CBAFAAC4960E4048EA7D164BA6 ABE831276534750D13251D9421BFBDDAC7E3A6C61948333060390FDB5DD7AB5A42CBE7B00367 5AADF5B52D8F709E45F66593B51519A4B37F8D0408554DD87783C103C31186E170788E8E4D5C 2D1368D35C90BFC155335AA4585F371BA0D2D36C12F70CCB54DD316DF4A5B928CD36921BDCD2 80996FF337E7AE9C4C0DA2ACB795614ACCA8BF9C5F5A270198A99B0BA923C041E65D34D346B2 ACFABC9A68B059FB4EDB2AA741A93D768E5FF077C0CABECB321866513057B12B25613F5B1B34 78334FC0FB18085E27A7361092F84F475BF19FC88CB9D9BA18AADC63AC383CB8266E01374F9E A36AADC06168E4772D6EF439FB8FFF2EFDDBAEDD8149168F8525EB7D8260A1E9165511AB194A 91CF9358F1DF26499505F3F2DFE1FBDC2E28C0E5CB48BBCE6D03EAC7A02AAD6DEEC7FE18703E 6DE77A677E9C2D6D56EE24769908189E8ACE09C55979830C1DEB6D7D00F931888C2450ADDFC4 15C25DF4787597D0E6499D3ADB097738BD599479CC4E3488524983DBE2BF7CA9DA2DF888C2A2 4A92B597FB8CB9B285A8201AA1BD6E3073C6B4828984E3EAAA4123A0C9053813FC43CD724BCA 03CAD9E401ECD7FEBC2C9D28363BC8F058AFE54E479D1B518061EAB166EDA2B3A0BFCB5DC88E BA7AD44AB66A74099007FBEA682E45DFE3E6F36ED2F18527AC2A3443897F6E1CE8DBEE7E03A1 C2D78D2BE6A6E7C6F43B828AF56BD8A86EDF9BFFFF971E1A9D56EB626AA2F112324A53AD874E 1B3166EE3AECEB372893205D3F147209C9DE0BA3AADA432773E150617A6B7E4EA8E636F99BE7 60B74902FEE6ECFFCFB1E039BFA7C15E9416CD2B5F0EE6EC50B42351B95B18BC1451F468092D 4F08477516A287D8020C67C29D0CDDFC48838C99B8166C20202D3F5B8555AD9AD5DC2CB946B6 B97FB0072EC9165EC95ACBEB8603D7DB6760B9011A68000687ABEF5966C357EA1E0F94767E2F 601DBD9F9FC01699BB0743B4C369B7D2B009CAF12354D81F73F1B1FBA08623B38E106CB11FFD 6E7A2B88F1F5C5C9380EA7159FF41591EB7E67FA45E4C4315B4708A5842A75B1B9C1CB4AC492 C26178CB5DA50F0E9571F9DDDC6E223B34006EBEF59549CC34548F815BED1B123B012BD2A6EF 67D97FD477B31C7F626FE9826107AA9ADEF80C1A36187E2453562217478157E3B0144158A69C 658517D4CB79600C700A2509EF75A45AD060D0294AB4BD9A5D2CD590340B79D4D8408E856958 D0F403F696B543195888A2DC7CF4CEC3A102814BAD5C169C3C911CF7AF7858ECC33716870D2E CCBA716B87B796159490F25C027D3F04717F355DAFD0DA4737B7F72DAB5D1CE95D11B4A8832A E3563F41BE06ADA6F45B38EC1BBF9FE0525FD46F0112B5CB0E947A701DAEE6664FD426271BB2 B63E4ABA8FC1037F8BBDBF97D3F1EC8C98DB89B3AAFC6D597EAD9EF2347CD5B3874138BEBEAE BB2690B8539DBD000922A141A7A6A2A74BEFD03BC165CF3C7C3B3F49552193A9B453A37D4F4D 0D9B8DB8896B27951EA7103EF7FCD483097A7997AAAC483762FDBED0FA53FCBFC245D32740B1 759947C74E3B19CF333F30B131A65784863F93F8DFE7B7309BD5D5887E943804C3B3B8C3C4A8 94BC3145AB7BDA6F33A0C72D5F70BD538EB8BDFA06FFDD053E6152B10A2CA929E9572783B01D 307B50E86A189F747E690DB2D0B3AA5590FEF074A2515F9DA7635EA85771B45EDD4A5CAE324D 81877E0B6E5C2157C03188725BD5924364E0A12350855E3B39C414127A33361DAA5BADDD1D50 5F386ED72E80CDAC8B0D9CD6A92C687F913D617A9295F75DC3C4EB08AE11047AB7041DE8EDAF E7DE24796CCB9D44640ADA774FCDEB8244C6672A4AE9B282997C5606423E149C4553B9E3E23A 2E03501A5A8BE7AEBC3C16B079C38D2A0690ADB258C414A44C2E080FEF8198107FE7B2A75D89 B4B097E42AA237F789EA7727B2B4BE0378D5DEC71E7062B088A76E92AB2EA36CCA35E39D8364 70B3FB7A7A1C07F37A9F37558C058582AE3F8EB48A11F9DF0A89796785D238393580ED4D425D B670687973E30EA79C5F778B42BAD782152CFC55E0D4E9B5F8F57E7627EEFBD9078A576A57B9 5E676B0CBCBEACC8C685716E7A925BB69072C9C9F94724E389D723EFEA841DAC245B613A3AA0 C6CADEE8CDC90C7881CE3D7657B16594740CC202D4E809F38F2CA4B219B928C335B51705B957 2459489E1C176FA365D867A723B699BE25CE1B51DADBD150A5CFC7AF8F6FA901B7F32BD2758D A52601332EDD0E1C2D334B5BA3B85CCE0F17D8ED535A8E4A9E6DB4F279F081F2BD2BCB319DDF 5E4A649EA13F6702A431E9C6509AE16F361E702BD804FEE570BD4FA7205B3B2531382FF34E8E F8C254253584CFFC2E955CA1BEC100A9A0A42D3F1CD1DAD265F9364D1CA695DF664856D6240A 46CC6473F64BF2608E21A184A475AA145BD925B00ED5CF2D4E845B3764797F3BAEC5FAE70C5B AA6721A0C0571F5864C8B2B2B782A4EE2DA6A91BE91F0A90C6D906103B07CE270FE326711A37 F52D3971C7B23EFFA647A2131980D6825B3DC2E2CDA81D696F9F84793FFA99C6B732939B09D8 11DA361B87FF76CD0F93C965E5292B7033870C44A584B2D2D5725F3C3CAA3713BEB980741DA3 DD6BBB035F2B998D8CB26FF81E3FD3BE87DF7501730B30ED40A1328B8608E0F0C50733EDCC10 AFFC4960B25BA762068BC7F64F878E2641D6077EA532761DE0DC35195DF0F32E410C6BD0227F 737E9167FCA17314BAF216B1A8FBA2DCEA54A863C384722376E8818D723F2EE9BF382652CE2F 635A30498688A711DBD62E9E6E40899A848BF8C35F9D5D5646510113AB8630014D640EB1937D 94654050B59DD22BF74B0C8A116EC54A108E6A6CC82E9874B0BE04191E9FA3E7F2072EB17F72 3FAC1BC71006597B99794AD61A993C36D1E5250C996D380090366F1AE783704041FE9BE38195 1C34150BE82DAFC805D10F73B6D0CF5103FC051DDCFC5AA91F5D7E8CE73C39EF9B7B0699CFB4 0943BF950B5E6750C0DB54B476CEE4719AE515E40A8EBADD57F80A6DF09EDEA191B00DFF801B 2BAB79C5657588ABB23584CEDB768DA618BD0B5D295A128DE877606D49A12FA73BC9DEA32310 0F2960C76E6E8B30401572527611119C3EE06D3B34CCA355B4B202682277464C8B6B197BECFF 0864FEB01BC53792AD1DF825A73E5F92B84AF103934A985D9C65A24FBDFA960325C7A73D2989 ECAC24CB3F8EF1C57EF43DA81D0B64A5306837F4361D8BDD4CFFD94D6DBF7A5F5342464205F1 B5EB6D724D9409ECC3166F3518B501750E89A9B7110FD7EFD43AF3C32E7B93BE8416B7A540DA EE25D1497DAFBE6D30995C0643431041D5B1272BBD2CE5FEEA317B42BA7E5910F75A91525C80 DBDD061D053815C0B251F1BEEBEDFB1567632C46D647A745A2DE0AA08EE35FCBF4D3710C8F5A A6A9E0DB9BB0962CBB7E4177EF3FA776DCEFB988833B0CFC39C8C6B7C89A713DD018A5D35126 4DF859AE5903A5757D5F039B3D65614F2597650BAAA3188D1AC6A8BB1DDE7DDBAD1EF9C4C980 3A3148F3F4AEEF706A7094175DDFDAA29B5F8A012FB8CB301450B4E78B58259DE6503679955F 5509F5025E4C799C55F0CF271717A296B096F03105E61DCEBF5D24698A96BB364AF38BA20D11 7D59E86030C17A30AEB4B1794A6D72E2B62DA0DF92047D6985DF1BC950BDFB38AE13E612E183 6DCFEFE4003A0F3CBC1A7C3398C0EC71A8AC8DB32BF58969635E46788A3DFD65EE12523B8FC6 70A727016094B8381403F7762D6E4329319927DC1534CDB25F620D3FDE4383943D9942F75523 CCAD080F5B1CA86159B6956CE56B5FB8A07B33451BADD7FB9ABABB37A10F04B58559BCE193DF AAD6A9F7763B11167E0B899B5B6E4591608E6B540A81CE22AE3C151A215F316E89D2D4F0FD87 D0E803EF412DED542C369615852466961517B5C77DB3C39ABBDE32E1F503476A8326FBB08A4B C9F04C202CF5A1896BD05EA8BEA583B10E5B5AD45963FC490BB9A9636381DFA47B42132D80CE 66F4BB1BF889DF9600B08038C1FC334E69A76D7FF65144B9E48D939E5497DC67D5374C4453BF B1A9FA6C6685F43B7BF9AC97298A3320DC74BBCD9A432B5D8F8F1CDCA9DCA04380A2D7B024A9 B0E2B4EE3E1325B3C0C4EB2B8A20C97D5DBB73AB15166DE381F7F83283F69479EEE7CD091F8E 4D6DD13C2E78E12FC59042701E7A3BEE3FBEC32693FA48EAC541B85465B9C62D21E71E463654 1395D0EC9846F16D599B28E53BC109C34F17C2A85FAFFAEAFD20DD89D53CF5638F9978618B61 0902E38A9E5A5D6C5B00264D30B4CBBAA2D511646B2CAEA65E716F31B1EF4F8CE618D9E61DED 2BE5D247D4E5FD9C51819F2FFBF3C6702210EE5509C942E781DB52ADB4A65F2DB3688F419447 0F33AA11384BB47EA644E48BC508F8C4F561FDE0B5879FC642A7A9E89F94B273892DDBC44E59 DC35EED991B4F4EBF0C9CBC525C572CCE29F3C7EB313D067885368C2EE54760A151982FDEF76 B90F50E763271B1FB242038148631DC2BA1A3204EF1206D0AFA7B78378AB031F9069B8639FC7 40D165EBF123F69A5F0DBEC5D7EE2016E262FA4B611C383E2BDAC77812774DE0591248C23038 B9CCD681FCB91DA754279FE274DEF1F3810617559F2EB5EB47FEDFDE4B5E6DCD68951E685AB5 06EFEABB70343C619507C4B78CE07D198413323BD6A4A33517EEF599D6F71BBEF63FF166D35E 9D2DBDEF74EBB3CC0A316D11167CE2F226F9F1FFDEBD612A2452934CDBC9AD1FE8FED8406FC8 DFF39820D6F74FFE9B4B70DAC1FBB22F5ECEFBD7591DD4365CCFD300AD9544C492A899173611 CBAEF46FFAF6F94367BA0FE02E198290BE926B80D9B626D15A0AC90D5C0B2A28D55D1323E0E7 FB203AB131D783F6E3F878D1AD7FAD7FACE0A9A91566A636E6FC041986FC25E6D59FD6D535FA 42C1952E7C0AB503A57DFBCA3ADCACF5AC748583F112F3EE9DE553112AD7ADDD4C15DB76F3A9 10058AEC9DFD32C233D5B9498C33E7BD33611EE3DCCE65712DEECF4670B51AE23C42E2512B62 A38D37201AD34EA9ABE5F0B99B223DAF1F96C3C1D4B2EF67FB0CE63B4E1C6EDE64A5D30DD3E1 0A6D4B92CE81C7DC1EEAF96F1F1DA540F94D6C4FDFCB72D408647A4877B54BCFA2626D4E110D E46938DDD15B14A4AD6F8044B7AA6371CE2F2EA1CA4A13ED372CE415ED370F5C6B2EF218102C 1A338C8C4D6004F4962065A028E68439AB20120B5846EE1B66B4396C8F3C73B9A65754D7CDC6 A5AA7E5B4B7A179AC0AC55346E084A7BEB4E344B817E1131C2AE566AD6115AEB56C3169DEE98 C52EE0AD6F4DDF4B05FB7A6B4D672D1328B539DADE8945E8E39873AC6331727D144AB149BEDE 92D7CDA9FFEDC8821A61726ACD8326AE6EBE5FC4FDC885BC16B1D1C22C757B8B594B29AFFD48 981DB54370FDA73FCFAA30DE3ED760B144404F38A4AC17817E52B0856ABE4459AA3721BDFF5D 2751CC876C1BB1FB64C380DB6181E2F3729F4AEB99C49B3D128D2661B2050DB77992E189DC35 5BCB9D15A819D60E831038FFD66708F50B2CD66B62BB8092A13D012FC70C815923E08297C7CC FAAC8EDEB41A52F041777881D67B19867C4B766C5BA0D18551CD1471D53489D807286A6BFAFA 46271735B699E48807BDA0C057CB88AAB5279F5E6F7ADFE5F34BDF3C81A1C5C83DF44D07CBF5 464A1E0A8F0CAFABFDA5992B64BDB9C13E743F44C2F4AF0C9A69503B14D0BB12D467F62EF24F 8EC8BCA1A1D2E4FBDDC856104A67946D4A87C08F38AECAA481D401A98C488E622CF8CC0B3205 1AF70DDDB4E73888FDCE173D8F5FA75062B974794E9FBD6C3499A3333DCA75C681C38345CBF0 75F6B8F49788DB4C4DC96B93F7A166D33BBCF7BD27778ED38290A439C1974AB944D04FB6151F DDAE7C736F1B0A21DDED2DAD0AEDDDFEEAD170E750F81B750ADDA463B2DA2693BA21197C9625 1CA59938E82E5BE892C6C659605C1558A6FEF114E30F0FDB712BF1DC93F2F3D876CF694C9FB3 1622FED5C30CFECAE5A637013C3036CDE5CB296A8710EA0141C47635B6758756CAFAB2A04B92 05564C82BFE89649B1DB5D5F255F925C754A4C3E81D0D040F6A5CD9B28D071687377437A47BD 692AE6867C940BB2CBD3E93EC8BAE25406DCCC2ED43D1F3906E39FB01E1057A837F70FE104AF 10E6AF578B8F557B4522D7BA0CF1C553438B7621921D297FABBBA97103E7F6BC35E48F745AF5 A1383F71CD46EE88A33F3989795F802F0CADD26839DF33C849032D7ADF508880B4C1252BF9D2 3F025344BEBEBAF35333E02DB37FD3F64CA9F17B789D55C7CE6DF7512660D4033C85C44B7144 46D9EEF2839E3D953F81BBB8CCBF7F4496E197786F43CD1CDC39602C40B402B7698E2080FB9B 217433D390BEF7A1B637EE1902D810B11BD1CA27DD4FBE2C58640A91B0229FA8F4C45D5660F4 72F10704E9B9970CB77CB14036C4D8603098B893DD139735CB18945BE26755506995DCC27E9F 94D1B63659B8399E9EDC933DE2E3DF9D113C1410898E2E7A2E40736A7FB7E9979FB0B5FFDCDB 2BF0C4D699EEC0B3D55B26A3FAA6C9E9D06ADB9F4CC1F14B0708986DD9F86601CC4CBD392B36 6F8B650B855919C8FA8BECC44E5B1DE3DE2453FF62E0EEC0F0CF86D2E165F1145D5E8C2EFBC0 9D96F537505EB861BE6D21E9C054C39627C804F05966EC1DCC8FB8558696EE825C11BA95CE2A 7EB40507EA5FA7DAB4DC07BB973B935DF8ECBE10DCE441B82E982FF92264975D92C6A4C7705E 90585A308CDBEBAC9B467522015D492B0A705C10F6C195196AE3C532913ECF9BDF3389A957A1 D6F552BFEE7B1F9648915AC3542FBB1A528CEC05370B2BDD7542685A8E4ED35BF2B8772EBC5D A1FB2E09782EA61A2B8772939F13531140277AC633BB0AB6F2D237399C78CA8DE0E2E271BA8D DEA24B3ECDB0F551107B3220E2C842F8082A75DFFF85DA55AA2D40518D7401179E6BC7E033C0 92E5F71D8A48F571F7C7CA5B6D0F5E4A109F39AA559CD30EF032766F692E47BF0EA5723C7758 A1392999A28F042005B7E667E62A09CD60F807BDADF794076F23211196024A47580DD9739FD1 0E53D04EE4EFDDF89FFD6E07F107CCD9634874E156849CCCF624FDB9C85145CA2057FDE5CE44 8E4510EF1B3FEF2A57E0125B37DF08CF935EE8FA0BAB7CE745C8CCFDAD35CA730A284C1DB31E F26ED4B5C397DDBB2A741049A120AC4D8FA9A2B91D3EEA75D61B28B19FA8789DC945588F17C1 4A81BABD6E0E5487E2BA1AAB46994D69F7E5A928CEEC73DB5317B3D58033895595A1A2188E45 7C1C8845CD7312029093574CFE59D8C25DFB577C949A5E4E56624BF9942AE6F8970A1BAED98F 135CA7565393E6C4F80F1A81930FC3F90342EFCC0819DD02CF88343D4955670DF65B59AB5F55 4BAFBF5A9404241A3274A7D2C90A1E49ACCFAE2FF5D9624E708A99A4C8104B76F8EFBA7A4753 05BF47661FFB2FBE93858CC5039B3279626A7F7B9A1E210662EF101252FA4F38DF01407F143C 007DFCE4FD95CA4FF7993FEB03B7CA5A6C1B6C770D684037AB195AD689100484E7D044834519 7D16231C3C129A3372574B1D261B458247A6604A8C3842EC7C6FEA54AE1EB01B6E7E922F28D5 6566CA27879BD0EC14C7DF9562BF8F934321335C26C8AD8477DB8CF0E267CF8BE322758CA333 7F010D2CF9C2C9BF88B51ED703E036B0BDBBFC3F92D7E0B4601573A0218552C5215532E9DCCA D95BDD11A0A9ADAE050C87364075B8072F819F49464E1BFD5EAF51EA922287EE507223F017C9 E898DF5E29F57AF38DD390F93F425BDFCA14492295773B5AAB849002C613A2B8BAF474C7FB1D BBF6B1599EFE3EC5A49F72A3B69F1F9073A5CC06E2B29FFFA1B689BD8FDDBA766254F68B1D85 C822EC842B897CBBE246CE8CE8BD44E718B10E0535423DE475643472152C4C607486AAF92A52 574BF6465DD6231305CC359045D3641076DBE7D55AD508D7383E5FAE63A768AC188DE72F7F29 4211E87A36F2F18015A3DEF4CC333A25926989AD4CBFE49FB9CF9FD2D9BD167117882F707842 DC72B1932492BCB7062D86EE51437B696BB597F657D482CA902E779B52C727F02010A21C3D17 F1750D4669743288DAF186CF289C59BB4E0AE268FC305ED2CD69EAC3047C1AB6A6751DC634F3 71841623B74EFC893094EAEBF841AC1F5A160427F3D810623098C1F36E0F553E51A11B0248E3 2E1E9B3B092FE2A6B785BFFE8BEC4F8BCFC164B5D7623C123C8C2087F256E2F9D71C363CFDA9 D097D8CA2A02E48FBCC9BFD5DE8ACA3D8461D78FC95CF53AC18EBD48E959E44B1039E84C7426 576CAD6FD4F07A9A328E86061E8DABECD9D87328AC532096DCDFA647DE1C049FA27EE5BC7717 22195AAA84338E6D63507BB45B560220FB24F93DECE0FF3B043D1912B28D4D913888E424E6A1 E139FE7A7DE79DF5DE84E31075A132179ADBEE07F794B129DE7BF93E2B45BF0100949B359CC2 EDF8B9701B4067DA2AFB6AE00EB03B79F2C0EF420B42D9FD22AF9FA5DC68BAF29DD90BC13826 2563BBECB07781B9A9FC1A98A53F9036B10C49123CDAD4EF342C5C0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndProcSet %%BeginProcSet: cmtt10.pfb 0 0 %!PS-AdobeFont-1.1: CMTT10 1.00B %%CreationDate: 1992 Apr 26 10:42:42 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00B) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMTT10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def end readonly def /FontName /CMTT10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 161 /Gamma put dup 162 /Delta put dup 163 /Theta put dup 164 /Lambda put dup 165 /Xi put dup 166 /Pi put dup 167 /Sigma put dup 168 /Upsilon put dup 169 /Phi put dup 170 /Psi put dup 173 /Omega put dup 174 /arrowup put dup 175 /arrowdown put dup 176 /quotesingle put dup 177 /exclamdown put dup 178 /questiondown put dup 179 /dotlessi put dup 180 /dotlessj put dup 181 /grave put dup 182 /acute put dup 183 /caron put dup 184 /breve put dup 185 /macron put dup 186 /ring put dup 187 /cedilla put dup 188 /germandbls put dup 189 /ae put dup 190 /oe put dup 191 /oslash put dup 192 /AE put dup 193 /OE put dup 194 /Oslash put dup 195 /visiblespace put dup 196 /dieresis put dup 0 /Gamma put dup 1 /Delta put dup 2 /Theta put dup 3 /Lambda put dup 4 /Xi put dup 5 /Pi put dup 6 /Sigma put dup 7 /Upsilon put dup 8 /Phi put dup 9 /Psi put dup 10 /Omega put dup 11 /arrowup put dup 12 /arrowdown put dup 13 /quotesingle put dup 14 /exclamdown put dup 15 /questiondown put dup 16 /dotlessi put dup 17 /dotlessj put dup 18 /grave put dup 19 /acute put dup 20 /caron put dup 21 /breve put dup 22 /macron put dup 23 /ring put dup 24 /cedilla put dup 25 /germandbls put dup 26 /ae put dup 27 /oe put dup 28 /oslash put dup 29 /AE put dup 30 /OE put dup 31 /Oslash put dup 32 /visiblespace put 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 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 /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 dup 127 /dieresis put dup 128 /visiblespace put dup 160 /space put readonly def /FontBBox{-4 -235 731 800}readonly def /UniqueID 5000832 def currentdict end currentfile eexec 8053514D28EC28DA1630165FAB262882D3FCA78881823C5537FE6C3DDA8EE5B897E17CB027F5 C73FDBB56B0A7C25FC3512B55FE8F3ACFBFFCC7F4A382D8299CC8FD37D3CEA49DABDCA92847A F0560B404EF71134B0F3D99934FC9D0B4E602011B9CFB856C23F958F3C5A2FBE0EF8587D1F57 74879C324E51FCB22888B74F241550D7401EB990D4F3A7AF635198422283CAC1B6CD446DDBCB D915DB9BFF88844E784C6BF7389803D9450B0C21756A017306462C563D51ECEFAACD079732F1 2C29315E4B9623A5752C6F1D8145869E120D910B2644887CEA7E30B15676A92537C29D3AA80D C30082ABA94B40990B82FB1A877E805E0C8C48F61E9F2EDAC05B944EE4D8084EC1D5CC517AAE EC5B3EA379DD011EEB454CECAB3AD2443C887C58278972355673E503AFFE0394FC7DB31DE364 E4F56C24033C7DF2265C56445EC63A1D5695A6041EA1B94407E1CDB7C5635603A4FD047E6EDC AEB2D0DA6C9E0E9396D51A4A58E8FDC1578730F992435560A6E2D3E3687703EE2F78F5896389 AC8470BC806169EB01762E89B6DC9ADF857EAD656620E2589AAE722C37A2ED7A2941C360B067 EE34D8D5CA3BF68DB725614D936BCB207781F4D4EC2AC67B13A5AD161F3F059ADD7B5E3D9048 31E31C20C04546FAE83CA93A35989E65C201756888F727B97E5313C9870EC96E4CEC3901EA03 A5C744754485E7D169BBC98BF872D0796E189D43B712950C3786257D8BE06AB6080B9D939231 3298327549A8A41C00A2CEA3690B4A333E45AA815A64FACAE1C2B44640860B8B8687AFBEFDBD 5B4A541A72514EE7D3E0752AF3E96A88C95D31FA16D34BA2F02FDB0088B165844F02611C734A DBCC2037BF741FDEA7E8BCDC130C70C33772F777D8BCDDF4611DB99001CCFF14D7AF2BB05DEF C3480BDAB312A0EFF2F375AFB4E0DF2F803C594B7C93F71CA4AF861AE1711932FEF19BFE2F9B 7ADB69D68E5A70EA4D1A3D5BD85231B16993F65EFB37A0A823F0542F8C2340A073DC1BE4A834 7F9D3068A6435CD8278B0DB1809E8AF9664C2C989B9F16873C009449B6284B85DA4DEE11C96A 05BA83292F0EDBD92CF674AAD6AC1A5FF966FFC37E88A66048DEED053565B55EF6BDB8C2F2F6 7832F8939A32442EA54F13D003494D6350A2864B427A9126A9C26A031909FE53FA8463B80C3F FD536C9A5DD29CEB03148DBC24C0033AEE72DDD159F2E8A6FC113F428070EB36CE5A38A72ED5 BD94D81AB4DAF08EBD42C8E5BC695622E02AECD4004E6D4CFE72534CA56291FF5F2F83361BCD B9489A993F663289B6DD492499DD5713227210F89370928ADA0085E2AF277F53E4CEC34D6C4B 8CD5F2E016052A04C20AAECE8B81AF9E9F33643C0FA69A5BA864D2A173221071A965F9970D72 93DCDE8C3FF60A86A4D3706850CBC45440DCD22F307261E2F6FAA3EE156A58069DF979C9B5EA A326C5A36B6E0FC0333D7B4046D636461CA2EF70648C37A953F96FAED6266EC9022753EBC390 BE93C0CCB7C318C4314D9F6E54274C8046A8C5CC7EEBE625BF59A03F5405733ED120841560CB 93210EA1EAAF3402ADCF1FAB986521BDB7CBA72A2353942FBEA4A0D1B67ECDE589A65AF8E7A5 FA4B87672AD55F57D783C66DE1D11E0A16BCF32530692380C730D12834777AC6750F85131D77 B0F53B626635CAD3BB8E9F0454FA085CBCCB0339034F5FB2E225E62CE12E8C792F5B7E234688 D2AA8F627A4670339E646399F91E94424263E5C12F9F3D411FA44449611EA9785A20FBA733FF 2A7892D1641F836CD42C58CCB81E41D6E2A5AE30FA18DE9846AD981923604C799B16A99779FC CBA11044740BBCC78116E857B4B390DE0E66921376101D621E1FA003F01AE344FEA0215F2577 E9C92C6AD07F2F4674A00FE42AC51FE5A9186C3C1956B535FF1DD64BA514534DDD73C0C61C54 FBD6FAC3B4FD9010FC55DF2A37A111BD1402D4E90FD8B3601DD3E9FE25634D709C289E524A66 DFC33CDA640D397269BD9ECB9D0EE84A7D7B93A97DC522A16B6965B7D5D7790A3002341ECB3E 80985371A5169B38133B13FC5C1DEBE2D90C43BA5D2CEC7D3B972D32AA1A932B750D6CC83439 73FBB9972D84670AC5CAC5D0B5E75CE021F99493CE29AE90BCA0CB75058BB0A47DFAE6C8D075 043BFD738991C2A0B80BE18386D7A6FAF89FEBC4AD142A1B0EEA8884EBFA87817E22C222170C B6D04BC6DDB541284E16400028EEA275244B69B033D200AD997BE7D1DEBE13CF783BE1137278 24006CE4B5E3F34D09FAB236749D3E72C033997A652982829376DF91ABF533F0100BF224C279 D3515176DFD56C325B3D7A3EFE0BEFF84233B5A7EE262557F84D754F03817C900945DBD5DC59 B46BE8847D1FBEDD70799DC42D0148841DE2F816F894ADD5EB2C0E1BF19F52558AF84DE5B693 86020DF814DE7647FD41127459D65798B06EC5D132AC0F181BE211624E97F8096C0A22E6B216 0878909D00A918E90B435C8C87D1033E40B56B4F15752D5A8AC019837604DB9E1AF709A2EA36 4F174DC2EB1957F0E5F477CE06A0EB78026BD1B23D76102C6862156C47040EC259FF4E89F83A 42D8DFE53F96127C8AB4037EFEF724ED011928C2CEECB4A8A4B5A480595A2AAF93228EE37205 2428BCCCB4685246BF3E9FFDB2845CA05DFD4902E74483626C2FEBB4E76C78B2AD6A96372D0E AE47FDF4B8D1F068FF0D1EED01C6860C86275A2EE3C2A97AA6033AAAC489E1A540432BF92A75 7205428AEE30CCD48DC234C521003D7EF7B88BDA8E72A12AD36C2BEAB1177CA82BB2458997A4 B5094A9DABAAE0A83D7ACF4F7727223303D5D8ACB9B265B3326CFB1AAC4BDB80B28E828DA936 BCA574722A73B05D447C9F7E506D78B33F582B3BBEA37BF8380CDD32B15E74ACFEA5BD635C2D FC3A6090E7D96DB7E9127A3660024258A3A7DA06D08C4691B19F88D0BC719B1414E953B26F09 6A0379BD71ADCE16DA6EB552A50EC318456CFDE8FBED1DD92200A9EBE83849AE3FDE58B5400E 0C173E01F5E23E883119421C7BF5F12ACAE87B3C3DF0D824A67A320273D41607306B14A63D46 2C042A6C6A31B92D54E01D7AFEE232DDAC002D012B950A71C2F065BD478196779544093A5B61 93247AAD7970AB5E306EDBDC24EB4C6B71A174ADC6565A99EBD7EC83E01ECEA533D364C2F07D 8A48C84C0A3941DD6B75422FCB49AE7BB79245CFE9ADC2C9B3E6B48A46867CC72F26D8C82C2B F5E8F60763CB9B473473F521FB016CD1D07B3216C496CDC68F72C6E9AC5B8193CB3E20EA84C5 A7CAE4905261B554D6BA006C787658463215646AE218972219EB34A5964F0A277A1D1A20CBBC 94FBE359573A672EFD0019B2C0A6A02F4B15D14B961383630F0CC578168F9DF7D33D3509CE75 D272141AC8EAD6C708227A193A5542A213E6435AB543754A75D066C000A1FA060053A862A013 799F762B5403BEF0E52C8208D3E690393BD3FF71C8EAA08C49C77F33BFD9A6F9370A88CDC3E5 B1012FB13C784E637A4891503B5FFB4A0BEB105458413D3FC880B92671E786BFD03F158429E1 E80EE252159C6B61079092C2035748A3C0D1B7C400B88666F94601D53C2EB3308AA791F66E40 DB8CD2CD53ABE4A018A2BEFF566806C6CA7108EFE8C70C7E4058853019425AA8EE77D3E75973 1A80FFFB59CDECD15D099E336A63A605DCCCAAD3FC55300B12402FB10A9FA4292D61F8967C21 8E008343617BE44D29AA7DD755609EBEEF555F8291543623BE6CDAD4F46CA20063DDE0EC4F24 B9052D6092BA0FB03EC7277643F178CFDD5314F597B93139183823C2049FA4FE0E1F7913348E B83F151E13251C3C2ED100CB9C907969669D98C5F349FD064A677FB689671C27B658C3118B20 6AFA9478A4F0AC3E6325139045C83C046D0F81BB002757DE25E9778A4D835E6D61E563293923 CCF415FF132B34BA9ADC441B806151561C59662867F91CDDA7579CB77326D5C34BE9149E9629 8787F98EAE3B5A2E2190D932581F36C547680C3266770786DF978FDFBF96D7DAD68969EFC46F 5A39567D97CCF08BD361FE650629A6CEC31DDF856640E6A2842447A87264503B7917AF46D7D5 14BDCC09B23E7DA51C47816EF27100FA60AE3FBDC320B6E792AF15CCE9412C8C80B3A46F5E31 E380D93EE3D17A5F674684AE28C56381892B66AA5A37B67B6E7CB9D65D359791E8EE0A36A4B6 537315C99505BF6264B6C3BDB62A368AA4C5784409166831B36AC6241C24C9EBEE261196E7C5 B55480CDFADA76C0F979FBFC9F3AB5A53CAC4C6DE0BC8CC9BC93221347EC17FC024CEF796410 67DE49A3460AE6C83464CE27DB329E16605DC22D727F578F14764720F4D6BDC24E171B27EAF1 43EB293A70525452FEE8100DBB2D7ABCC5177C7BA96CD07A8667103312BC495FD7813A5DC7BD 37C1C96B1DDD53841B9DE37C5BE008AD67706045EC1AB4F418F60A17C0786136A5B9617CAEA4 BF319CA20636691BCA83918785CC15FA19B4E8CB5AFFA398DCB868AE139124E6DF8BC1CA29C4 3E4F7D57AD6D625D570B498FD8D2B3FB7080E312D95DBED16A8FD3ADCFAC9FC0EDA131913647 6EA4C0FA1B6EEAC95FFC35326124EB2DDA055EC0FF6A304EF0CBFB3DEA094810A52D5193F041 D99872CC6A71DFE5B46ED2EFC3F45D6560276FDBA056A78F9D76EDA2467AD4C44930558DB88E ED42F6C88B0C1E3DD5101A6590ECBF56E32BE0BF76B515235D00121CF0ADC12346997AB62DC2 A1FC37DA89CC3992BC1C6D5380D0D5AB94551833B65A2336EBC9923E58CB1E47444BC6E49BE3 042C94624373B1C34F593E7C8E043A6DE75A27DE4E305272EC9996499517F1577DEE3F9ADC0E 3C21B61F81D165E903E1457BF33830E5369CFED65ABC46089647B5C01CD089DDCC7CB8CBBE01 EDD7BF01C3636CE3D274A7C59B937E4547BE0DDB0FE9616E0EBC5078ADF5D7C8984C5DC85FF5 099A00B84E44178D78B293288F664F19C7FFB7C52C04ADCF8718DBC94021C28290E2E5808687 5C2B23EDF938C52CF0274F8150CB577FA02A7BDDD290839B69F6D5AF1B70896ECBC07CA8F1F8 6EA38CFC5F852A5F5249BCF04A878BB56EAB61A1F53B60697DB77FEE8327166B399D413C62B7 42870C3D77544FBF9B63511669E778C3CB1C009D17EAA536B93EEB5D15DF014673A66B43A102 02C424DB51D501610A59B01D5ADDB4A62B7E86688D86A3786B08F14D5BBB93C63C88D7F70D57 4AD84DE70430799DB3C19FC1EBC35D44C8661ECC763B46445AED62F1BB25A6C7D1A7E8C685DD 1ECC9660FE97CE2CDF6D259CF0869BB93F00D98D4BF87969636FB6DDAA09FD32F6F31DA2F1B2 47ADFE919932298D32C8C96FE9DCE6F4A75F071EEA657935F7F30C32353DC4B25819F7070F6B 518C909BE0CEE0FB262EAC59C893DCA6C2B69CB0147206BDD4ECA2C4C8A232FE1B1DDB9C9B7E EE10FD8A0259364B697AB94D2481FF1751FA9782EB84DD7B481D0FE16D09AA95C00861F081C4 04B638F1086D8C108953B5828960BE46BAC02B635F7E4290EDECDE73860DDB2E987467C70E20 D93CAD40AE9BE998D64B3BD4D600EA6C8E2F5155A9264F9D090567FB7ABE1B4E2E1EC5D4E298 66D289B5647146B7989DBAFEFB7AC0DBEC9DE8D12749113212DA3C5E9CF4224825F9AAA5ABC1 662AE3B3FABD40D17408BBCB0FFAA37EA2C05569ADAE243114BE87B6421590A440036A071E70 B77968A4A6C6AA4FB68D32417DA597F5396A4ACDB74BDB1FDEA82BAD3B998B8399029F0726C8 F83C65AD45D14A1AEBC019F885BA60B0B6A260899BECA00C0F01E1AC25490DD78CF40924901F E877E66F23C977B8754623D1D0F7ABD00753C3A0D124FC297D647F78380C139C2F82EFA9C9D6 7600079805EA3BBB31C79716E3A4DACB2BB00A21F34220BE2A202FE29265024AAE48C23B0FCF 6142EC6587DA235577B6E57345FCDF32B83F6532023F8A3DDF97B01FBFC8B853E90536165AC9 29DF10E253D8C4569616F297F7E09C06489E67618FD7148E6A89E249C62898E64A03D958EB88 F6E3361F0EF2148BE4576E4D97D320B4CB7F412FEDBAABBFAE057AC533AF9CF9627BBFAED3A6 C6CA676148B005038149259589FE227CBB4B8576810EFACA8EBFB5B52ACD96B373462336D791 9FE2D926C0B23BAFA3024F15EA433414CEA280F1E20650F1EFDD04959A61A5C362C98B855361 F2971287F63D512AF98695C02A5473AC45088D478509C2BA84967AEC0FC1D538654523791773 D8A5B9D73C2EB52FEE2586333FBF6241A829811E06C2CE93EE1F0FA3CE620AD06984347CB30C 2AEC9CDB0F97CE991ADD184ABA3783B556662C833A874E5C38A64B6438CE5348ED802000631D B9B3B33F0D90941BA80E92D4F00C64E62A7A0520D94E76F782CC734DE498ECFF23A5F24BCAA9 7150F721064114CCA8CD690993A1274A5BD3F15A6D6EE5C237D7823E18661667B593FEFA30EC 07E974AC8C6629A8DCC41F3F02D14F620BD415841709E7296D2E606D040D29D501927F9CEE38 A4FEEC83A2FF45814700D41437C65AE671A5A6E83964EE131D909E56926D3BE03871341FF7FB BD19437C7A0C3FFE3D6B50479B56D774F8D2EFB59006AF71B47C7BED0DBFA8E8D95CEB3E5B1C 65111377CB66E0817B2AF45607708868976661C469D4C1A3719B90B43FAC9BD8F0FA5558DA8A 158B31D4866017BD8E144C630CB3FB547A0C6035D3D4565536D88D219D98FE96580B651FE0B6 4FF75E13BFB841137459E93A0779616B9F67865F5F72503E60EA30AC387ECB6BBB2039582DBD 891BB344D685BD7B4A44C73B3ACAF4BFD4170B2A529E8181763CF0990EEC3310B321F4D6D5F8 84824ACD20B409B7DAA1186B998DE184C41A1C815F09C5902EFA03BCD1AC9DB7B844353B399C 184088DA2DE7A98D789F1F7B56FD8375ECF32AC7AE6B9645C3EBD42D333061835230C4068720 4AB8AF146DB9E945A631AFA80CD3237A27C6ADA5DF3F1E65DD74289E58048A40AB6374A4F479 13A872042CCA0CF0BC34A30ABB0AB215BB09AA2FEF09CD664AC1F76736CB236AACB271B9783E 1A94EF666A52B5A56A0BC90DB43762B33CECA87E1C8BC43B6B1FC6F0D8D8829A1DDC6A87A8EC 8287A7D9FA52C848A76BF04EB015DC3C79DE6AACDF7316415280AFF2DFD989F8C7887253E6AD B49D6C78C8350F6764BA14AD14ADE05C76D9BC480B394753468AE029865248C2C760E3BBF647 178F10A294506950073262EAFF3E956E7484636D18F2F4B4AC01F7F3DBA5C647209C29CC0ECB 195764FE2AF2DB0C9086B587EC51A76AF1590D67102AD6BCEBF7B6D845FAE94D6BDF6BD0E910 14DD679F56DA651F747FD08494A136E401A8E23772D3EC931A7524673346AC575756E278AB36 4A1055CC920294D276373C881D8AB49CEC190A4DC921BBEB75A413CBCC503F96B862F1F446F2 CE232E45652292A02349D7856904B46F9606D6AC8446F91B03118E28ECB7DB4BFAA9D79A12ED 57B1F9086541F1D2AD9C55834A5061B1434BDA4F001BB74A3EBC61CE7D8353B6C57A7DAD0FD2 403CB55B1111DB56CA38D2F5BDF3FCB687B08BA9CA70380EF03E837B95CA0C7812EB9D7D0B51 00E052493BCFCC91B26D64B3B95BEA68F7AB187F5BC4B15CD5B2182103FF8C21D7B23FE7E302 69E19619103362EF40128B0E1A0285299853239D28EA3EAE1F32ADCC813FA4C2D2FE80D3124F 4BB2BC57F386DE387454AADAFF1CE4FE5769DB0B7A53B49DAF9E6B501834A117988081D2AF14 56160BDF52CE6E1EEB12FD7B4C8B4C8C71D766C71A99F768B16EF1574583006FBA51963655ED C565B7306093E356B223DBE43B25162600F4E0254F9D8BF36306ABAE55C77640A63F4F7EB19F 091F533DAEF035E5F7BFEEB59AF6A3DC336D953CDC9B527B1E6CB4E75BC0D6704AB8AFF7C511 35EE9EC739B4DB64B145E42D7CE5C33FA78310654E0E02359BD52B49074CDE8768741ACB2922 4EB52BABE235547A693E94D591673F5070045973D20AA8B76A525F6F3BC6E456A1BB17DB2556 04A60A8344A7CF57411CB1626CEB4E02375AD6F549E6B21AF25C18418908ED928057525C9C84 71F15F7EB1A471F57C314ED9EC16CA55B2D2492EF44BD9104AF9C7283FD1B192457AC32F8760 32F204BA71A9010FF71FA0A74E6649BC382F883FA09EC0C46410E3AA49A39CD0A56F30A74233 844F786EB37AE9E0FF1891EA5A7BA07A826D3A543462B30F5DDB9398B3618D06AEFC7221C8C5 D1313BDD8179E2C38571CE735ED88592E1464E0A27876F40C2AC6CDC00D6B6BB2093AB39C825 57D0DF90654D57EB09E4978BD9F5AEF16B76F80154EDC4CB61A17E2DEA5EAB9032101B259058 4600FE5F74E288B16B41B18D42410D91E391F31FBD5B9DBC1A42BBF529F33EDA35757560AC9A 13336809D78CA855015D9B3254F54FA9047CCAC1A1DECD2359FD6C5388A54F21C009402E5E6C 5B2E4A504FCFD286EB6448E94012BF6AEA62AB724D774589B1818D2372E76200C1E13194A2B3 4C2445AF8E6A63E7E270F54694CD71967FECB36CB10F9B7C7EB9C53B98128FA6A2D8171FB911 20FA46D522C6682030000BB239F8BF8D1D9A923AF7104DE7DE2125425951040FB14466EC2B77 E04DADC9CFA4E13C52CF0E75237E3CA0500857930D1B5BFF827AAAB103F5E220D1FA7FC206F3 6967E00346C436BF3D15B0DDED15E17A33EF57991C0727C12863177BE68654EB63B242CE4D8A B2992DDB37130156C9D380F721C6B954ED6062033A11291332F32763B7DE9A35CFD34DFE9D76 8C5187FAB040057769D2E52AFB30F7D5372165827680E85C3BC7645AF4441B11712C9DD1935D 32C58B92709B7ECAFB1F9008582C8E0FD93FDF6BA3F93E38666F37C79DA45E8A7F0017F3A887 A4F54923C9C107801AC9736E344693D57BA6648B44B9F6ACF6A9D940CA7960F35E0734213EBC 6745E5AB6424B0F1FADAEB69C35319266314003C80EF00DD1C373DB42EBCF5ABE5D16142B44D BAD5C8E9E291C912F828D2BAF4965CBE826AC4D2081C8C382752C3EE0BCFD391A46B2A304187 3BD2B28D7038EADFC4B031D06E4150801DDAC8B18264BE969DFA3C80C4FF17D29BAF3AF53F93 6DD506C33704055B0AC76E436F2D54F4AA3CBD545FF1B67CD57325D48F28F3F7FC171548C106 8AF2AF4414B92A014FAC72BB51A0279CB33B881DD767DFEAB867D0069273EE9DE19FF1D63A59 AE534DA02495E0E4E5AA0B52F923228AC819E084F4E94CA631BD44B01B3025D8CAAB06F57D23 1652FEFE73803221E39F284150DC944B0D2CD9A1F208AB552CA3C6A23D5ED3E0A350FBC963A3 16B37D2CDB610A9FCC069B7669E2CB7505DE6D003D7F4F695DB88BC696AB9F87CCCB1EB635BB CB1978F46F4D1EE5A5ACB380BB435E424A7FE8A20F6F3F1E8745781601D76567AD9C1076FA1A 1EFBDFF6F9969DF3C0F337B805B1AE318124274C0D7E0EC6F43299EE7DC48AFE50D428430524 73CCA6ECA462CE40CBD2ADDCE28D3676DD125D404EB2C2706170EB35DA0FF60C1A8A9E36A659 00C02D19219C6AF5BC3DBE759153B27658663F7C6ABA6327031A37F58F948FA4F636FA989C95 3FA91EE86B93617C3369C51841B3FC5A533FB1754ACFB5BC80E97B002B34388D365CE95067B7 F31DF8D6BB61DB83C0FC5C3FB54350C9B3A2F69153620AA7D2639116DB4A06166BB58FA0B9EC 87726935BC6324D503017B679F52840957DE5C018C4F02F86D2F555CBE67568AC075877B1B96 A759556EF292881CC358114E60A1B72F589F749E64BE973B6BF41692AA93F7604AD7D8376A94 37A13EBE498DEE73F6E22BACC58108C83791C496773240B7BCFE6702FEDB9C4A3BEC1CE45396 C5E88A770A61BCFE8755519D7E4007CFEE9919D528C651E40E05D7D03B28839255B7182CFAAF FEEAB7B7BD2DF6C56F52F7201351BA2B7705054B418E691276A78984A2EA2E7D991721C368BA 22A7C8B738F1A9266064FF5DC036A20C8570A2CC0BBF74B25D7A691A20A1C1A5FB1400C66AEB CD3013C43D1328F5F5D0635631A3A21AC4884F0306623EE1C2EAE491DCB845E34D749A6CE4CC 80B2E2049C0907249284BBBDBDE08588D5D1FE1031B2A2FF3756E7E2F670FF768F638D83216A 2270902867F072D9E4E6735CEDE427730B942FA67D89494D959D0FCCB923A85C07EA3272FE4D 018F1EB2A34FA95FDB6D31650AC2D6355EC338D36DE42547A6432CB847D27C74834036DB59A9 344F59C9F610091E2D5FA6157C8BA4232937DB379D43F922E2A7581819A4598B436C60510B95 6450A6DD2AC04FEC337B443463B4336008DB2289A8F9B126F0A998431D8E503B1781F42443E4 0BE700D6C47D1D65EDC74E665C0EA196767E46BB11BC0ED69199F32DA3F4398342DD22EFC529 6CB169043C3C902DF485A8B50A94C307FC14A6274570F878C6CBF18AF910EC20B0726684ED02 1F862FD1F9273F32826D6D9569BFCD3DAC8B6D9BEC14562E22031BD61B4CFDA7B2C95F25E78F 045E616A6090417F1DFC14A7A168B1B121C229598FDB040B336E1959BE810C03401D601A63E2 7F8D501F830A591884EDCFED1C2A44409DAB3CFCEF74FA27D44734D071E33EC9C23A525E4612 32135D02388D032BB8B9B8C1C8F46EDB55C98EAE149619244642D2926D3180BB66CB7D0C0146 561E452B59FC7437D42B5F3424D5F30509EF1914E75D4B73E483701026F269169934EA1AD0EE 3D1DBD25DE247F866E6FF52999DEFE6F5D5DDE98E974FF9DB4D9B99688652D209EC49AA0E0EC F73574CCC419039056CDD2D2EB3290D0784E295400ABE8331D978DE83A2B4001D35F51E39034 E0BF49945B9B7C4EA6CA382684B996F12EC9438567A20C6C7713D4A6CCB3389B2934E45A1796 42CC9E65199AD61C07769C3030D87E9F23E85469C583DB065691EE228FC2AF56632E9EF15646 67ABFDD20776425AE23D22C16C3C005518590DED8A5DB841CE25BFB4C1BEDA4FA6575726517A 269274B1517662BDFEEC6018FF525B4604446520067198FFE83C950F3D2880B5C9FB91DAA169 91BFE63CFB48A3EBF24B7A33F43E1C7827D81CA611DF3476CACCE15A7978271C3DE2B48E1929 B4233CE6A62F54BAC964C9ACBD1DC4B64C5CFAD4682FFC880B8B6E14DBA2234D6CE8F0494E02 9A2123FE0D63B39DF8DC30F65969B8A659C0C40DF04B603EDAE85E81E634E58D053FB8826603 96B30790E8D2613B273B238365F35F21631335882693410ECFA8749E23D34371FD28F3CE9AE7 192389D7162E3F180D161B3A46B371F27E4596209057C4EF994E2D63791F32B77F9ACCE54577 A56B50B4FA026D6C1573F45542D9B9338BBD2D4695F124C83D489606103807B66385C5E70078 5418C29853BEC2D18985AE0640DC7F2FEE566599EC473AB3E04052BCA6F6BB26C27D6CE87187 A3D4C69845A242FCAD1B66F5CD67D7F70422577DF10B05CC54D9F7FB036C289948F0387CBCEA D3A91CDEB9C2D1547BC6CB7B4A2581F39DBB75EA08A22542A723CDFFE7CFDE9D9FD926D1003B A3137A003FEFBB9FC84B0665D5B2DA9B37A3951A3E6EE16CE6F2216575C7C53061E5D64250C0 9E8EEA685306DD9F693CBBAFDEE2A6A188B21EC458230E078BF9C7CAFC1FD601449F647C4B59 B37CF7DB2B3070356900B3056B9272B476277AA35B97486585983EB96361D26F6714B49E000D 16007B397175B0AC21D7064AF77144D1C0800689468351A1605E21FE5175320701DFEFBAF066 2B93D79B0E5E7CCCCF8CEA636AB27E0A852F67B2C5F201081335D3C2B4EE9BC5D7F342B49848 E6DBC3D2BC0F4274C2C6F54DF2EB4A23D2D736BF0823581C1EB35C8C0471AD17FD0E177F4C85 A33522F002954E8BFB33C0ACE5DCF7B8310D71678C0EEB45A6F0014F0080B4DAF40BE2D890BD 3FD44E14F04AFF9FBA9D98466BDED50680BDFA0C95011E2026053FCF08E0C67AF107D50CE001 C7AAAE3FE75F5C3505BE54CC683FC9660425C17C9740D27C0634F04B784F758A6947A4F69010 8FACB2D6B08C7FAE8D40A4183CC6329F8B921660E54420E2FBC44E43724E8F30196888AECD45 5CFF68E47E28F68A8D82E0E7FDA8CCCE35EBDE0D146D120B1044A6E0BBD91B29A38FCF4DC8BE 9158C1C698DDEE07E0BB6D0AF5DFF5C1020E8406CD1449E012EEC3A82D6CDB42F8318BDFF262 54F3B528F01E8D09C147934DF965ECE201038EE90F5982CDA85381C2431A2BBC8DD5BA1FDB8D 9236B699215626F78172D3B4135716D592EC1DA0F30B6EFA498CC3192847C45F2019DC74F618 A7414DE75988D8AB737EE75A0CC778B00D6A84A647105664A6D147715C2CD14B78F261C05464 490115BEF6A00282BF422807BA6E62E5D6FDD7D838E8C39EC86970CC7D86BB6EF72E885987EC 8D919C37112C63FBE1993071D9B5B467E0917B35BBACB4ED99D4DD7E037B9AF008A5F7EB8308 037E0E5C6862864C9F77CE7054ECED04E93A1FE549E1200368F3702A95B519D50AC654CDE6ED 297A3C6A60EF1BB36A036900D4BE955EB4D72CB719B08694DCFB3125386C7CDA2DADD0AFE974 C974E18501F4A21AEFD4E0B4A9D2124EAD0F97C5F20F67C7100921B151E8D492B0D607D0A208 ADD6F315FAF3F054CDBB8EB9C5D39B56752B0AF1187F076A7CB7FC79DD1D01394FA6529C309A 77F74E0614E79A84FE47A6518F74376B4E4E76A6E0BBA7043066C177BC8B979A6F5EE3EB5BC3 16FF17BA8C4026F9BC861D524B223208CF94D89633DEDC9D80E79C0B8A620A5AF902879CEBDF 1E0EDE231BDBEF0BAB71952B8D04A1D572EC97FCA725883FB2D4CAB5572261FAC4BDF70615D1 5A1B79B856F0B393F2A065555FD2522EA74FED08700EFA68270627E09B91ED5D02299E75B066 C5908A5790E45376C149AD782BBC1DD01D49B555B7F3B4BE829E3D28878F575C778D26FA2CC1 74683854E0FA65D3969A3F9200F91258F274CF60978E45534514703BD6F1B7D69B41526CB310 2FC836D074C3FAD523CFE04EF705552C365A82E2376D208AC859E308CB61603C59C80FDBEE2D 15E1950EC314F2039B03B0FC16F45B2579CE2D45AEB8B978872E19E55CB9841859BC72AEFE96 BC6CD048DD1F2FDAF87E31AD8292B7BFB9623B1D1DF85325B5F757206F8228A5F81BB4D93A77 550632DDD41E61DECC1441152D3743A5074B6381F5842D8C9B5B468AF871978DA6B8A7301640 323C65FDDB483A6F7CC512D523AC9A2F47616BB4847A61D187408664C758A79904D81DD29127 9E8134FE1EE90AC55B2DA653FFD91E2D9D0B3594D19FF546DB593C8A699046C0F841B5F19758 749A14CFB0AB686D7E17C58468E950255FD299DC7E6435A303B5100FF844DCDF52E3FCDA4A20 8F42CC3BB0960E28B8ED5906AEE9C176BA5FDD3EF8BEF2A6C00E01D44AF23ED706E740ABA3D6 FE39A0E806A2FAC4E5D7BDF53322682A8D0DC5FE490815F388223B0316592FB2DA05434BF842 29DFB33DB898A5CC233102E29AB9C0DDEC5163E8D8E5FECF77C3D829FC98099C1F43A56161BD DE9373A14F69D5C35FB258CB96508DDB7B35A191C49ECD2A14C1907107BFB583E7B9BFCA5C7E E6D72F573E067990572BBC240D4C828E61F6394B4A071608637338987115F7437A65DF30ABBF 5DED1A9DD5059610EB306071E42F46A55EB396EA11832FEFD4BE1E6F8704E5124A162CF209D9 27F725D8D528408E8CDDA8BB494EB5EF2EF90DADEAF45E8624E89FE5080A04D2625DE67AD601 DFB2131AF164F8169239A4478434FC2C2D882FF899721938BD643A41298DF0BFE1EE3F3698C5 128028FF6BE57E6700B20649CEB0FB3C78B2BEF03BA238615FB8AE5201B111607CBE45241AF2 AD6473AA54E9739E20F3F84DDDE871F1C881705E2C75FD0143398D968F49BE08899FF79A6076 B4F283588F2DB488B2B58275E6E28739D80D0B4D18EE94EA308C01EA16F856C94C95DAAAA0AC A857F66E40498FD7CC3A8A98DB095BF04C6411A90A534E5FCFAFB3A2EAF29D2C9B24863F1D9E 12A63FEF41A06F1BA5D26962C6A12D1A73DA880AD379F14BF568C90F206CFB6D5D53FF552D15 C261F08B12965ACC6D86C25C0D1278A0F929EB931436A24875A01CC6E793EBBE243D880F9D38 9C96E63793DD75CECD3D86895117F3AE55D9921A1968AAC765AA2B99AA4B21B203EE68F644EC 5C1E965BE0885CEFD3FD0A2E0537BD02EB24102C8F3B365E255AEEBBC1CEDC7BC2A8DD1EAEC5 7EC0E642A22805F2BC745A778E25A9723B420C1FFCDD3E641445E18AE18097A7A8E54E1C9DDA 53E7EBD84CE3C18D56BBDC54C180E899D4BCF87C1CED04E10C401FDB83C6F353A28688BA6317 D51A09250E1C2C63A6F9E8707D4B578CC61CC39E60B29EC86FE27FE12CD893C0C4CE3EC5F88E 837623E202D5CF939AD560888684DF0A6C0BEBC5478F588F5234EDC52384895A564AF2145FE1 E11228F9BF5106D900011F9A9A953B768B5CFDD595987C6F5A1F2031261C2AAB5B5CEDB11F76 BED3147F301F821662B24D3FEED7A7A2D08F1009BD80593A7B885A4998E59683EC88DEC130BF CA01BD0A9265D74CC75A2560280FEF13012351B99176CE25E7BBB0E3CFB46BD5D7C64494478C 87E7060C80CA5D5AC356CFE128783D6513670E1574FB06F009BB2671F0201B847460A54C669D 8059A0056B75EAA5236216911B9FF62DB67979DE3DF71977EA93B3626961CE1D174A10B675A5 763B8126E0E7E9D862ED49D82F1CFAB85CE6C94AED40A3E28EC2C7130C1BB420AB7DB578EAF4 D81E4FADECC7E639F154D90E1194E1FBA01F611AAF2D634CAC03A34E9E25CD247DA54A1FB27B 2888342850824E004B167D9EE44BCFB4541344E4F7884591622DB99132B1AF86A261CA17DA15 FD4A2584681C7189FE4CE25B2986CDDED549BB0DA8C06FDEBF64C80B0B1A89D2585B9190EF58 847BA4559EFB7C7BAAE64D37D95549061A8064637238FE3DE8AE31F06AE4E7FA588F85C45766 EED78D8E2D9E8D96E40CD161D820C00CB0312463FEDE8441E6CD3AA8777F8D4FA553FE9A747B 416A83FA728A52AC033A2DC128EFAE88808CCC435F1FD45CBCF963B263E714CD8C11715B4BFD 8E0F5613101E11720C2EBEED9879894FC85927DD8303B990A2062198CE7F3A0A48528FE25497 0DDBEBCA2C1A2160548C1E97EF58769EB684598ABA001EC66A278D4E353CDCFFF720AFDE2481 B9DBCAC57EE38D9C464FC1F331A45D1CEEB585388E00B139F638BAED8F6ADF8D11FBD0677716 AB72017C1349B72739749FFD24D00D8435AFE78805E455DAD15F6F4500A041E25E4E890DC0FB A5E88B7354302F59D03203997948AEF1FD05116A2856CC2A44BD0C2147C7CFE5AE9A9575A49E 1EDAFB0FE0C7F18D1466946398B8099D3CD61F38950BADDAB531B2757395B3718FD42651344F CBB9AE1783CEEBD9F1AE5260AFEE7A037D195E25C673BE0389CA160BBF2D117DDFCC409DDB63 DCD48185ADF29955FDB42537EC1C19A0B5E51D8785F06769C0ADCC90F5632A9F58F89D333F04 623ADC50F2C78661B84FADFC524445374F394EF24EBB0FCF338FE9F86B654F112E8C987BE7A9 A23C0AE29841F69B6F936E22507882D1A557E36B4F9F2C3D5D054A0167CF2890EDC16E5D260F 3D48E5117E6B8758DA5CB55694862564D0060AFB15641040F1BFC982926BDD21FAEA2264C8BC 94F5E4F882DC8772C4A0E049AD5561F0F240C28F7F863AA572E1743E27C1E9C1FD00D0C501E3 A90E9F86536B2695B38955C97095E1892ADFC6A6BE12A986F2C79F218B1F0BE6BF3364A29B20 3FDDE896664EACA5D770C769A36BCB8AA57083B55E9A31457EA37E4B83EA4C28EAADF56256CC 630EC37F5CA96952F816EC04A3797A8DD0A33CFF1C4171AE5163D786105B0AFC689BC96336B5 B28396E0F56193E684163234A361A57C826E805477BFA84F78BED285E64C5C0B0173A82EEC75 A897AA2739DB136529C9CA30E67832981685D75F7B51360A97256CF5CF87E2A0CD4FCB59E64B 3B506871549892DE880F4C39D40865E1A643D72B5CF0AD4A56FF0A6E68B356E2FF10265B069E 954D2E1C5F6D0BF4633F5CA75617C42D53A35AF4EA98654303B54BF58EA419F054E4786704AB 99B67A3F293A027B6F3D6EC6ED3AAF74B7CFE18ACEFE143F65CD7774191CBB8F00B3027BA684 194B6CBE20796A9A85E205D774C47EDD8D68D754C8EED1211044BB4DCC0E7E14A1F1EB857BB2 5D4191E0984EEFDBB7CD70958673AD34A0D182687DADC837139F087F94F526B93189C2AD5495 56621F38A8D492B144881C69C76E611DEEE5606E8D9A3620B946571711ABC30BD4C2BD2153D5 E557F53B667F996199989CB477381AAF8B554E4B0D0B3B41CD2DA66E120856DDFBE6894484C8 8EC36E804C598C9DE38490313ABFC3B2E9E67F6E304B347F537995416CF9B00CD0DA9045003D 7D3F6C7F358C00BCF66C9924D4D0ABF8BA9EAB1F37ABC4FC276D18ABCD2CF5E583004A4787A1 0DD260923D86CD83BCB52B8E1A7643EC39F4EAAE5F4C7FA0B93177D273492F0EE0688F63A0C7 765168619C5793BFF01FB5E65557D3452BDB63377DEA0462A0294114C125D79A59BAA2DB0B61 0E9A5DDBA3A298AB82E721674656EBADAF525861D924DD0BE6182B74B548ED0912E6D0216F94 D2DE6103F81C8DFEE4E771DA478E303D5A19170CC4CCE2DECDFCE2260A491DC221A04CE42EA8 2AC34011E8DF80DDDBB11D5CD87C77EFEB80179BB5834D4D4F84CD7ED478DC2D5D6C20E9F666 B5345B4C34DA11391C607CB413BC8C7169ACB9C2BA5CD27436B274C5342B2AF7AF334A2D6307 6DA21B66E87F86F916C03AE2D514931A8251DF60C4E50780F4622279B8A8612377401411A808 2EE7A7363381C053BB136FBEF76B96B3AD7D1018C9991A4D17CE2F3B626169F606787B2A54EE FA97EDA191919F4C9511ADA863E93135BE665ADBE9C523813004175CDA72A880C72FE711ABC6 7446CBD6DB20D7EE6C0EC8CE999A4E28B7125086B0600AB0F34C5AF47892FE3FB9403AF0EB4C 7C8E39E2229A2512A6944119F10C7136F81385372B28D39F1850E77DDF02E7A0FE4063915E12 BCCEFA52086840D7E26B6FB8BCE852311CAD8B0FECA03DC393B896B0EF334BD4A25D80EFCFAE 9398CE495A8176810DF51AC2C7D6145DFCE312860248C802EA7373D7B1F59BAE9A8EBC594E2B 11C184AD793E8F9F0C03F2BD30EB454101EE8ED0FB66B9AE0594897F908273E591849F822285 35D122BEAED330283C76080394C89B534029B637E895A8F1A36B01CCDA7924FE2AC9F0442520 47D9979C77F4F52442A806A9CC723EDAFC8B9AE8AB884E9AC1309C9E55AE8B5935AB1F70F413 41E718E995262DAA8716A2BE97F1506441317E556690684E040D23A1B83A32B747E7C44F3046 58E9B8A364028086EA8BB8E654B4612BA44D8E39A1163E7103912B98894A79BD5EAE70815A16 8229B8965DF0D76B20B081B527F16039AD39FE609510F68BD48D8B6CFE02A9784E282FE64DC3 061AC3094BF3BE7E9E7F7EC1807F0EEBB0225CB37A4443CD9E4B2F25DAC8196ADA984DC31CD3 52424CAB7FD0497A3FBF2F02435B8E661F0F73D21DA704FA37C69407AE9DF10DB5723CF9AEF4 0D3A860F9027D0B1431CD2A92409E1E4D986D34B64DE243CA561293D0569648D5BC9CAD90581 C666709DED4565C386907F9397C442A2C0D358701AC2AF50D5F376B384D52E395D52BF6A741D 18E6AD76914D68C7E3FE1246CEAE4BFFFFEFBD7178BD8EBD239EF6D5D59F2BD71E899E763A3B EE734080790DE33CD9D0FE3D1289E80C3EB0C8ACAFD4F3BD4DF6537B1ACD2BBCA186CE615A9D 0F0735048268D370AE929E84D2953882F8762D3819F61C0ED85A115C6037BCB108B66C7CD1C8 3673914FE883AE6331BF32C3E199F7235FEFF1895577D216C8ED6E77DC5708F4CBA32CF1EEB1 3D9C0145713A954072637DB4FCC1C1FDF0B5FE965DB518500063090DA4BEB238EF9F67F92B1B ABD56D2D82975D246E6AFA021E0C23E88A70554C2B5F0A328BE693E22400BA163AEA84453BFB 05396E1C1A90AE9EE51F5C8A98EACE0A0CCDFE699B5DD368CBC7F6FB25A237FF848C01414DE5 63BC991CC1A0A5AE840E8EC328303206D4FDC06BC7D89EB8498B611A91DC1037378AFFBF21EE 248D15C95BC9F07A856771546E28EF1954445155DF4689527EE4B72A3F54D2F66696371B6AB5 848A50D4A3F5534BE82FF257BF014769B253DEE02AC57A1CC3325B5DC44895D210671E7C77B3 0C8266A1C9D9552DBEB49177A44A6F5F018C1D6DAD19F65C5ABA1F7FE55D80E93507338B0F0B 3FEFA0565E6BF4334D98AE53911433146731E6399A8E5783BDBEFA8EF739FEC5353E07E423DF FE5CAA3DA0A486E4DA42E84618ED89E60ECC6E103BE8E61ED5C396EE9D800CC83AFB6E532BFD DD96ADDAD7DD85146F410B40C43BF1F12BC27E07982099BC4718170D8043297DB95A571E1268 638621D6E295CAA2739F9251E7644EEA31715A42FC9A56EC891B5366F3C4F26C77AAEBDC1BC1 FDD5E1AF4A140D6AE1EAAF67C0C28B2B4F886F0D8674B7C0FA6E7AE7F05D56457D1A9E055C2B 30B809E3A84E706CE981107FC33D61FB6B6BBC9FE5952EFAAB183C994A2C606AEDA95E949231 926FA1CFEFF17B86469CB504ACAB435E8CDC732380E4B887DD9E08618BB8134F4E75417EE647 8B9BFB11DA7595E042B8D1BA639A1606441872AC2BBF7065341604565B8D266D64340B9B1810 8B9A065E9614107C3B2A6E1E7FC4C65331D63278F113D9724A92C0AE7A1F98D5C07DD09A7802 A77F14A551508B77316E4DF79497DA97823812A6153D81DF7F172C96E5827A5BEC3BF2401009 E212C8AD794D49548485B72C67DB2815DDDC3055ADB819C1461DBCF71FE60F7E0D5BBFD010ED BDB843603BF2DBF73B69A9685CB4D282B4B5CFBD47D805B9E9BF38949A59B4DBEE9FFFD200E1 8E163866CFB2300DC446A7F7BFD22AA5474B706573FB73336840A60CD62906CACA961B801AF7 8DE0CEF472C0B96413847AE7A911CD28638F44BD04E6D1A1F6847A50407CA9A351B914EC5906 540B097448B4473F56E77E568DC0822CB54B312E4F9AE5742F6E61C1A5557BC04BC08F39AAA4 2AB36A10996E1412D7B046EBE11C4131F1859178DFE84AC8CFBE05CC3B919D5BC91DF294640D 4FD5835CC5CDA37E9062634745E5F3D3C310CF73F810100EF5945725FBF38496AC8763E28B9E 69566C0F8032129D569ED8B93FB794473094700911A2090A9F6D8FC5186ED4DB8648C32BA583 65D1DC247BA2FE69FE4A42F5423EC4A8D1B9B07A836B83201EC205D158A80A8918143CAED74A 60A4D022EFEE3C44FA24FAAFD7E0B08106AC9B851DF68C1643D9BCDDC72905440C980113BD78 91394313840F7B4ACFD26CA6C1FC757436AE7D499801FE39594393E0FB3699AE6A7F387AAA2A 6D955739B2729CBD00BEFFE282E12D0E938D512C451E186E82703BFAC1FC85C57957B482CABD 8D3032CEC83C3F75D981129A6B5736577CF55C417D11F26BA143D197B53FD97B7766971DBDC2 BE12F9EFA47A0DAF683F504EF5726AAFDF01FF5B5D941722C6D1973FF92DEFA5DAAE8554DD48 B01FF2660B6A31A210F504BEF75C1E8EA6E243972114DB296D19C790F1806E58CEF7F17673EE 6254A4D8D14C3ECF591AEBBC869861604E181BC8E70E19A178F0118FA307C16778810FDBDA4B 148BA33FF3A4B38F3175267E7924E7912C52CD78352688C45644794CBB843A501F6DCB88BAB4 6CBBD6F36E31DD0FDFE755081BF4F0168AC57D32E63BCD9E95C6C55D9E56690B7ABCBFB535C8 0AF3825F921CF6C3953E40BAEC3795A32B04328750932DDA02B0408EB74210EAA082D7E81C04 DEFE9E7923DBC0A175EE616161F96FEA8BC29953EC47B82951DDFD4996A6573C40220A36355A C3E696C07F61D6C0B16D2124F2CAC8766C65BBC7B8BC8B8B0D5D766533868A1664E319719863 F29BB802EEAEB5D384E95FB9A784F894CE477D8A41DF73E6B560447644F54EE71741AA8C3CFC F40547426B5D397F873D38051A1C37C05DC2BF7C77F4068D01DBB0E5FC2E3CF2524774C37525 8AB840929F058BB06B958E6C9157425C3D7A2C047272C387E92ED820C92583E3624E6E498A5C 23264DE1CD9000C7B97081E40023C071EC3968D22331DA058AB5DC1A4039B0A313D70255281A B7CDF91FCB32A991EEB82E6AFB4313D4E236E57819ED4739863997EFBF139624F650842DCF91 A3782B41851EDA4B45FD9E46BD4002379C66F700AFCF7B04328948841749EDC07B03277B01DC DF1527F14E261788FBD4D326177246589B5D6003653154D8CF5B262FFEF2BC3C5A4F2C1000CF 1E22408F1C4C972969EA4156B3B0DE2905EDCC99326C3F72438C659BCFE4E420C643BF6FE226 5CE6EC9092859A20C8A8D0BBEE2FC3FB0D14217E973E4C7B318CB7A8F6ECE8021EFBA044B1FD CA1BB763C1E37D622F833FAC366C66CCB1C44D8EDD405087D720BAB0EC695D22D86272BFD95F 35FEBDE770C397DA6D5B212AF2DBF1A16FF5F125F3F524F53B98BA064535346D0DCDD2CC02E1 C55EA0E0F847F766720D6A9D45B9D9776F35B65DA3D8A3C78BB235B0E5FF8819217B77B86A46 FA0ECC6ACA8C6A053562FAFFD3350F2A056D2622A3A4D673A6A586A03042815ABA31AEAA78F1 09410D270DDE0CC99110A420B54AD9CE4B54D4687B07EB3AF950C1D4B88B0AFC37D792407D94 50EC4D77EE6DDFF803CFD0F67354DE749FCCBFE296924AEC3A305857E94B65E91FDD9F11B289 CA47B191C7613DF209896366E9D07431BEA6A229652AB7FE6A210277334784C8D6627D7D8ECA 43D4B8E75E1E6AE21651E7B9942FC0E781D502D8D51D7ED6F9576A12A2CDC40F3781AB70437F 9D958EB6477833B9B85F391AA10201E89C70C0A6B053E5D95A550BD380809C3D9249602F7EFD 81EF86F7BEA0CEBEE78FF7E51FFDC2CAC7BC2692E3096A1642F40687ADC3CAB1626F7311CDC3 B1EDBCF3BC8A56153580484B30875BD19B65F77320A26A4540C1079D23B07C48FE5D69EBD7E8 AC5C11333D9837FD706D1C52FDCC2AE9D13B3CEAD494B7D0AF602A57E5032F872EF41C71BD1C 53896529E6050BFB85998F489CDCEFFCF9B70E5D7371422F031AC9C00D00E8C436B6EC76C9A1 1B9F92AEF7246D46EA779C051C539A5D0B537F05ACAB9C2C22BE43EEA3D56F52CC7087EBA41A 894CF633481422F5E6270A4E6445496DD020BD3CD846F98CB64061BC16E6C7E5430EC1BBE8CA 2A9390EC2B3EBF282226EB70D5AAB4B911EF1347299FDE67868D6C1ECD96B2A8377068808629 E2BEF81138EE0966A059BB6058CDB7D418CD5F217DE21C03C596471AD4125FF448B5DE9D50EF DA9CCF04B3D4D74B452BD00C7AE549FD0F2F1E7919DEC06ACB53D39A38E75397296A32E61A43 5D4554A1DB7757288ED367DC6989FAE7F428A8E28E806EF90C4CE040D1478FBE47E2CED9C3C2 4716AB2E4A138046BF7F7C5C6ADBC75A3283CCB5F9F53E1FF05D09186C8EAD24CE641DF1844B A76AA15586A93049EA5C279CD92F070B162F59A7023B716D9901F332C7C05DF88C27BEB76A50 4BFB2F9DD053627942AD6F04315B51140A6DD16A9CE1A4AF46AF3EEDEB07EFF17F6BCC85BD86 6E763C64CE25F9F9D278F04AC4B12A03EA26BE39FEC35434A1A105DD410FFFE7B99C0AADA93C 6A834BA7774BAA5C01D2A8D89812433D5AFA22507ECE5014737136641953F6B053E93500B069 34C25D5F2E7F45B00D78A4702A086AD89A965EBFAEDE1CCB95DCB9B8F0BC376CF29EAB1288CE A94F572383D358AA48EE8DFF88B20A78262813BC1A2849716F6FE7295CC153069E511281DE2E 1135B90F14A9AF09AB377E76A38D0A8C87AA352130228BE170E0845B1FD3C115E7BCD94A807D 0B079CF9D0A4FBA455CA2CE547F24A5AF1A58EE39CA617E2C15ADFD2AF1B6625EB8310CF7831 EA2744FB523816373E69139B2014771C6D7C9DE12CDC486943D716B9ED76F5500455641DBC52 D5D20D43A41D28FBD23D557AFE215ED0E7B9ABED8A5F908CC8331E3FB61C9A9E73546AF3ED88 A024607B738849BCF80112E995BEB93433174D2FA06F12B159979743EA404625BA7448F54DE4 46C9252A6A2769506905F8448A938EC2BF8EEF3F73BD5C7B5B5DD81416DCE2EC74AA7ED2D510 CC6F591D0C51F2DC4B8379D06775F0C2BEF70343097C44EC7FA8F711A745F3330DF7B8BB7742 EDE598BED07CC879A10B0B34B20335A36383A01057A53A5243363855C70AFF48F259A5B2882B B302D320E533225326249E426BA07FBE02C76D5193DBDAA10FB23DFFEAC7E2AD096F324E86E5 A6B76FCD07D6129338D14A893EE8D92F71A9DE75D6195F71DBB650F0AF3989A02002DC32D1EA DCDB40CA3ADB7B50286F2618EC285B822EBE484E9AD72591F5DDB07F3A31EA9FFC3B26039676 D1BB14983439F0E7517674C9E36D1F86FF8032E6BF2801ADA6BD004454BC61FBDF33A2788CEA 419B4BA1A0AC2E19660D6173F539E7EFE000AB18CE9F724E5CC641D6052A70F994A38E050030 ED2CF32A037B56E9CB96C149A10F34932FEB06AAF48C2BD54D25B58412CA1FEC65891DB9064F 3CAF93D6FCC90EDCB298BCD09ED00AB7B46F5E776DB5AE0E397F8E780C4F9F19A339CFF8C9D6 6920AC9E95B3D90F335B7B5BBEA40082EE405AFEB3397A4090BF854F0A34DDBB7D80FC30BDF6 DA9032106C0A090004D0DAD25B27B99470796E5C4402D05D82FE0533A2FC0641E06086D5A63D FB4C9E35A8A6ECAA9259F93B812796C4A331895EA2547ECEA1EB254B1AB777FD3EF87E583817 4BD6919E04FA04FF349906D4AA7AD2CE33BA754276E5712F3EF752065019563446103EF6713F E9ABEEB69D73A66FE463A37EFBD1A37A53B42F445D13DC40C1042C38B09478E35901501053E5 6E98C2EC86B364594FA23DEB6EC3D4B16C41A5FE34A13B880066B3DDFE51D5DD7C74CAE27085 9934A57FDE18D4BCCEA46CF0B05C2EDED63629700526B0FC9B40A3ED89A3718DDF61A554FAC0 6F4722CBCC8FAABD7960DD7D733A73E820787F5AE1F5B0526A76FE49057AFAA7D42654C95B39 C9294C20F36694DEE69404A8F1FAE78CD75FBF9F59AA7D9887DF8783775F26CFACBA6CB01B30 602446E1754E2F6BC3CA692B4A6F078736F9FC74312DD87AD5974C45B386CDC5E64205AFAEED 297B40BEDD7630660FF644A7A9734113E58ED8893C3B93A73F183C1CCE12035FFEE9A515C349 16A92220D07F065436313638617BF3780BE2C9173472B8A69E9EF800CD93709AAFECC61734D5 DFBE4DF2AA1AF855786753A0CF176BF74CCB46D2CF239BFC37B2554F17C1DCBD693786A0B5EB 82831F9E8A4B42EFAEA6B10E7942AD1B783B1D644DBA9B5EE4B45CFC496FDA6F98881689760F 734AA938CDEA288427833C4F24999E85DC610EF3A484587266F72E1D9EC3ED7798DD3A9EFAD9 854133875C0F42453C21287E5A4D1854CDD50DF26F572A5933CBF0944F611366C6E6E3B80D2C 4C44DD99E80FB8351C9DFBF38CA541892804DC2FBD14B1CB344555FE484BF649C9308B751AE3 F27D7FA779B59C3D796493D14426A31C4825DAE251B80D462C98F287C5E60B782153854E29FC 3BF95B2C4B3A987909ED65D3345F947DF42A7C0249602EC342404301F2D1D1DF0CB61DDC5F38 C3A967A0CBB707EF6D2458AC4F51388F803C2D4ABAE337F604D8508BF79A9A1BC185C5030DEF FAC72A16CB51EA6FA8DA134DEE3EF13226FC0C5C5A00573CCC71B7F414E93442B0558A328805 786DBAF0E9470431002F0EA58A40AC74DBD1805734CEC67FF5B8E3AD354FCF9AAA26FC636EA3 0B026DDB98B7749DE54C37EED9B0C614C1CC5F1DBFD618BE5728772E67F85AFE1DA3E907AD8A BF69F6CA96E5452DDE3C047E35FC55AE164729E59AE10FE733FE1B58FAB7EBAB46120ADFBE71 3529D6B8728C772DCF0B43D42E9D7B7DE2FD45B042DABB9D573FD68BBDAFD6E26ECA6672A425 5D591136049F9C2CD467299EEE7766880F5B174C2CD570011824C958D102EB97BDEEDADC9B07 33BDDF99CF1C20136F34EE2461C6D5CD1A77DA5A901A66B2E3D57910CEBB30C60AB149336F2A 91A9CCD9C6771D4A48DF99FA4683DB39A8161B83CD29E70D51E2ECDA3DD5A34455585899F61E 7E4FC376111D29CAB945D3FFA57E7DB12B894948A37DCB2BA9E79537E3FF095C81CDC6A4B228 19D7E579355B281A4F44C5F475AC8F984B78A91B20D4B11EB47BE5905059A211A6696DC066D2 A5792F6AA667BD5AFE92C81CCE1753DD689FA80010DBC4E0BC917CD4FC8171C991D6FCBE5D42 CCD8EA0017C0DA02CF307EF321A0F883FE33731655A5528AF87F05C406C7A05DDFD4D6889654 99A3ACA7E82F3F2D85941653AC8E45C3956CFFDAF91CEF1F1AEBA26EE5495A3A28073D190A38 1DF5F2384D12C1FDE082378B6FCEED74831C12A54337D64A6352E2EA85E67DE10B4CB5E09E5A B6A356F2345EB68EDE34CCCBFA9AA7DE38B5FBFDC6973531B20F85D127EAA05DF03AD933D546 0C50933F551493AE28544F62D126F2964E834DAA0C652C2EB4DE3B0FEF10C974FCC7C10F0196 AB56D47E268AF927A96EAFADA234F1030E58A257163B72793D8340957515D2E7FF6153923E5E 3EE290B6284960967479B4D81BAEB242B327D6B2D0FF46F77E43B4A0F820F66204D507E7C1E7 BBAF0927478F9F9F7121E11CA789C0E0418217CDAF10875F96FD05D49913091B920DCA3BB373 99A1D88109D834742524CDA2FEC84E86F232E5DD433F924E9E01BF6E446A63DC40741D349420 26DBFC8D3888A3A834BD4AEF3F5D38000FE075AFD4CB3DEC0415EFE16FA1820341A48EC4B3A1 086BBF729E68EC9DA96296A4C9D551E099E3D3BD8F464FAA5735B99963DE4C2AC96BD0FAEC57 E61C59133EF494085A9DD295B45B5B86307C7FA720F7170DEE2728CC31C58BA1360EF0733918 D1663BD355295CB8363E9C53B1F271D5CAA6D53B80D8DAA29E9B834271422637CCBE92D7D9F2 7B3D3BFB8B3FDE5C6959CD831B09948F92943A455E911801BB69CDC4AF15ED67529D529B9915 2AB50B8ADA7690135C54465F46AA2D6E17FBC36E92E3C9A2EE01CA9693646DDBCCB439F3405E A6C6FB477B56BEF0FA5C5EBCC067C959C4453046959C4A9F1B166AACE020CA94F082899CD9B0 FEC62E8B60851D872E56D48C6CD9D69D5540D1B3F1102E0B641BC40E17FD99A9FCF1048E44F6 ABF60352446E3C8520273DED902ED39EB7BAE21995A6F48D89A74A31C40E585D6206D90434DF E9E3FD3DAF501AA292BDAE3040FCE06586D10B19612590DF6D9D60C086C9BE4D2467DFC042D3 4BC7C37C93E58924BDF35C5380B84B5BB19F3658696D32AD3E48F95A0EBD2005E50423C9E3F5 DF1DF53F001CF6A914D3F7545531E578422D99F9D914C7D83FAB83424C583F4A78C51B194E0C 5A80BD051BB9C62553EC3443315DED169EA666119BF3C5730391FC08EBFE0F2B8D6B18EF38FE 726E9EB4C41E11C9A22351C374341AB728D0224582689A104A8B3E7DE0FCAE31EE8BD13397DF DFD04211B18938BCA715A66A1C7AEC553A14C20C909AFD757241C62DCA34D6CF7ABA262066C6 3BDA13D3ED508F90AC4CC8F34A3C7B8596A47A24B0C048898CA14D7DBE9C48B8D1DF2057BF83 1C0C89C470F3E526DCC94D247E54757DE9AB8516A1EDE99EA0902025818A06C68064AA4A7706 3908CCFFE4751E161EBB1F5BF09AB351D39D0FC2CB8021B73A8CBFC7BE80FF63577CD226554F A9DB429B058B02314ADC063D859740747B54961512B3160EA441AD31F6DC6A0D8AE9BA50B0DB 545870A451690DADBE35FD8BF54D32C06BAC67C886516BDC7FC91CB9B6435525073E37CF4670 708805243C6F9809C610CCA49C7D53A638B04B15FE1FDC4F6C2C6C274D18DE17284A4A6E871C 22D1D525C23FFD924AAD6367E6F3E576667A2766102BA4754E6E3BF0F854B328874BEAE2065B 5984E0FD540F228BC854E6DDE07788975FA64CB562656490CD30C95D4DDBD8171E4FB1A2B5C6 D50755375446CDD0B405B47143538D4FDBDA098AF40A06B1CF7A0565009458CD116069C86746 DAD2C0E2F24AF45B40BE740E7485BAA6B776D99ABA9BB0A25C53E3AA56EDAAC25BCA78BA2A7D 0AE5DC30D2D80493F95AE152DC0C07946BC5B5EEC417E1903B3ADA7D1738A3EFCD223F743CDB 75F34A83E3EE70339BE05C352D8A8C3D3BB7B3F934A43C26EB2A849A2B390D779C9989E57006 AE913F406998391013A463175E9E4C8DFA17ADD0A743322734CE5BEA82CD7A4CC1115FB00D1B 212C8A340B0AFE77568219B9A3C523090ECE0515CA21C05264BF1934F557AA0197934B8D27DC 634A30C5C325309E6E7704E97BA8C06A8200B041FCBD0D539D972FFC6B1250F047C4D6C5D549 7B3FDDC7DFC0AE135AF47C31446D8EBB91190847F870897CD034F87F76C4AB03901B37B18746 0A32360B86D753C9FA87EFA92B79919BC2D181A81CEA92C438E05EB257839443FDB5E96A4CC9 898801D4D69EABCE3B92AB3427930C462290300E334EC1DBC9E54453F466B9CE2374CAB66535 DCF6312784A708A25165D6667088BEC143F05A827EBA0A9F6AB536B69F8EECC44CA548F7072D B51B6A189B4260ABF269B0A1869763ADA330A595CEBE655FAAD08D62415ED6587B393360DD36 6E5350EBBBC3098317B97581BE36742DCC36CCDBB3B42420C791A20CD92FE82947EE6144787C 4C3A6EAE1B13EB6BCF4D0BFDCF25DC941B47FEEBDF2D49293DAADE949AE1CE74037676E01A39 C2AAC54ECE35A8630A1756AB03059A7456E1048033C7F1248324643395FA6FACAB5E915F76D4 40CBF009E1AB1F39E87D9D5F2B5F6BEB9034A987A18F05A558C173B145BB865FBD5EEEAC935C 70E207BFCD63C514FFEA2250B6EBB33EAFCDA4CCFD0503E5842D6B1E27E546BE5FBED519603A EE73CBF5B83C51C1BAE439A559477FD7BABE6B33AFF69EBBA394355679A1518928FBEED5A751 6488EDC265BE1C1BAED666E33FC9CFFC35347FF8834489A916F048B25E96AD4E8DEE3AE05C75 D3AECEB30547329D9FFC69BA98E2FBB7D1D78FB6355CCDA87826AACCE1AD13C39D718AE32310 14EEEA3A5C79309FF453C8461A4C66C3751F1CBC06CB25B9DC60BF3583B142AFB8334EE23DF3 C69F8AC7C2CBEE75CD7F4A33DAB9C8481B6282FC58ED195F1780E493541C208686B71EAAD9F5 358C0DE284D54F0B6341807BE697E3D737BA6D7796529FC73843722507DFC1598C1B808BDC6B 12A4259862FE387617B2E189B194D96AC95DA4DE3663FBB4770341BCEEF13C75D76C655B40FF EBC66713A3416E7BE641F5F8875D36495DE4E94A8B6508E6F3EDABAB9FF52829CC674340DB57 B248864BB9365AEA3A6C84B6A1D0D6928D275B5A79ECADBC1836F4768A715556B98FAF6AB81B 289831B71AAD06F5217610CD7BF4F92B48F7681EEC635B26E9DA602962E4BB9B3FC4E561E629 767C0816DDF8073E7E387A125FD81592A714B58A03768A8309BFFE17F7BF45FC0C0820F0137B 398E2DFA6376F9A7808E9F7987F7E8D4898CC8D16500BF4BBD6BE2B9A166DF05DA84AAA132EC B88A11BE7929811EAEA87299F26CCC439A374173B6AB3CACC2645781F787F3EEEDCE87427F6F FDCE837946A0D5171769FB3F150A51E16448C08B8F8D78CFAE3A98D5F18F26E745CF9DC64403 91AECB0B61C713978EA17623CC5ECCD22F4BFA6E655BD0A3212B9E2ED3BA6E85D61F099983AA 1EA8CF1D1D852C03B2BD92F0F51E09C154DA9EC5C879CF489BF99923DB4D9B68A6EC66EF1D37 B8A1B27D50CB931B87E74B65A9130423C162E66AF90B61A32C63B1C92F9A01C4A3917407FE69 A2F64FA60C808EEDD1825A02C9AC689641B6AD379D64F153D063CF3664751B06FAE88D17014E 5E0B0DB0D41A5817149DF3773F81541EBA95093B338EA9CA58ADEE6578A540B59927384F0F08 536A57686AAB0AD877E29AB626E9B14FA7B1C4710300583DD5AF73098E1CF1B807D647149523 E1B64427E7E5D1CE78EE1E7025A34041E87D9F6A97CD1B37BE324571FF184EF3DB86EBF77894 5F7277D0C194419CCE2546727552660115002034E6DA52BDF3FA669EA30318BEDDA7E7C02588 8C1DEC52925AF96697919C162167E3746FDA83CBFEB79DF4D2E8576C8F186C31ED02BB428817 B0F8BDA82D74DB4903CC1F7B18872EBE75C7EEF577BE9309DEA7ADA7565B6943A28BAB624C0E 7FD1783314A82C41097031886D8D70FDF368E95BAD9CED5F620A11031ED312FFC1C2A587BB5A 6570AD89CC3FFF6F5AF56C361BA367A5FAF9C1E4D9F2F799479730FAD7DDE0F1557225054646 9C9C64EA50DD1071701D2E0CF69F227C2400F01B5ADBD34887C95CE68F26A6879CD224D2B1C1 8F11E02E3CD42E35D3C3D30084688F798FF91EB3D0A82F11AC9212B2F7D9E135BD3411CC7188 76775573497F2E5D97F5FD3D0C8AD2FEF53654D0E016A39D4E5717D09CCC87367E1F3193A4ED 5714F783794436403209E50D8B96533F76CC66151CC6124CD63F33BD572D25FF824AD44D5163 7BBB017453E4B3B37C0140075422BCAC441047654119577EC6ECFF0B580655C21772F99DE072 503A7688E22BDD7723AE7E7537ABEDA2064A1C48424B0BFCE52607CAC741B762622E6BDE5B27 794B4989FFE55F4F2EBF290B0FFB53C62A2BF670946C8CFD089242341637B237C37269FC32B3 E61A27DDEDDAF2897844A3AAC99E2E23AD7EF3010D2AD92EA14FCA6D68448E961212AD79962F 1608F0193E7C301F5117C3B7CA92DCD9613F4F90FE4235916F17598AE3CBD144CCFE9F2937FB 44CE9CEA13CB7298B02621DDCDF2CCEAC48D2A22177E244592FDB96BC75B0D4D9C2108DE86A0 1D197E13FDF277FEC5D59A04380AAEE76ED736324239FE2103240000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%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]/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[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{/Encoding exch def}def end %%EndProcSet %%BeginProcSet: special.pro 0 0 %! 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 0 N /rwiSeen false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{ /CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{ 10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict /md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end 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 0 setgray} N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin /magscale true 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 count /ocount X /dcount countdictstack N}N /@setspecial {CLIP 1 eq{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 rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath }N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{ end}repeat grestore 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 @defspecial userdict begin /bop-hook{gsave 200 30 translate 65 rotate /Times-Roman findfont 260 scalefont setfont 0 0 moveto 0.8 setgray (DVIPS) show grestore}def end @fedspecial end TeXDict begin 39158280 55380996 1000 300 300 (./testdata/dvipstst.xdv) @start /Fa 25[48 6[33 24[63 17[22 11[22 11[48 4[66 10[63 3[22 16[44 29 37 18 26 26 1[33 33 37 52 18 2[18 37 1[22 29 33 29 1[33 23[26 4[48 21[17 6[22 21[18 13[37 3[{ TeXBase1Encoding ReEncodeFont}33 66.4176 /Times-BoldItalic rf /Fb 138[22 22 22 22 2[22 2[22 5[22 22 3[22 4[22 92[{}10 41.511 /CMTT10 rf /Fc 214[42 7[42 32[32{}3 41.511 /CMSY10 rf /Fd 128[21 2[42 2[22 22 30 22 23 16 16 16 22 23 21 23 35 12 22 1[12 23 21 13 18 23 18 23 21 12 1[21 1[21 2[31 31 3[30 23 31 1[28 6[15 2[27 28 32 30 1[31 3[32 1[12 2[21 1[21 21 21 2[21 2[12 14 12 2[16 16 12 4[21 3[42 37 1[32 30 21 5[21 2[12 35 1[23 23 12[{}65 41.511 /CMR10 rf /Fe 156[18 18 22 71[24 25[{}4 41.511 /CMMI10 rf /Ff 137[44 44 44 116[{}3 41.511 /CMEX10 rf /Fg 152[208 103[{TeXBase1Encoding ReEncodeFont}1 415.11 /Times-Italic rf /Fh 137[42 1[23 32 28 1[42 42 5[23 3[37 1[37 10[60 1[60 1[51 46 2[46 6[28 2[46 51 60 2[60 6[23 58[{ TeXBase1Encoding ReEncodeFont}20 83.022 /Times-Roman rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 300dpi TeXDict begin %%PaperSize: A4 end %%EndSetup %%Page: 1 1 TeXDict begin 1 0 bop -225 -200 2331 25 v -225 3108 25 3309 v 325 -77 a Fh(D)m(VIPS:)21 b(A)g(T)724 -58 y(E)764 -77 y(X)f(Dri)n(v)o(er)g(F)o(or)f(PostScript)836 238 y Fg(g)-225 695 y @beginspecial @setspecial 0 36 translate .05 .099 .95 { 27.4 0 translate gsave 0 0 moveto dup 90 mul rotate -10 -10 rmoveto 20 0 rlineto 0 20 rlineto -20 0 rlineto closepath gsave dup setgray fill grestore 1 exch sub setgray stroke grestore 27.4 0 translate } for @endspecial 441 770 a Ff(v)441 794 y(u)441 818 y(u)441 843 y(u)441 868 y(u)441 893 y(u)441 918 y(u)441 943 y(u)441 968 y(t)p 485 770 954 2 v -180 x(v)485 811 y(u)485 836 y(u)485 861 y(u)485 885 y(u)485 910 y(u)485 935 y(u)485 960 y(t)p 529 788 910 2 v 865 828 a Fe(a)12 b Fd(=)-7 b Fc(\))11 b Fe(b)g Fc(\000)-6 b(!)11 b Fe(c)p 534 846 900 2 v 534 880 a Fd(the)17 b(phase)f(of)f(the)i(mo)q(on)e(m)o(ultiplied)f(b)o(y)i (the)h(n)o(um)o(b)q(er)534 930 y(of)10 b(angels)h(that)g(can)g(dance)h (on)f(the)h(head)f(of)f(a)h(pin)f(while)534 980 y(the)18 b(ric)o(h)f(man)f(threads)i(the)g(needle)g(divided)e(b)o(y)h Fe(\031)h Fd(or)534 1030 y(some)c(other)g(transcenden)o(tal)i(n)o(um)o (b)q(er)-158 2836 y @beginspecial 18 @llx 18 @lly 577 @urx 814 @ury 2796 @rwi @setspecial %%BeginDocument: mtest.ps %!PS-Adobe-2.0 %%Creator: dvips(k) 5.97 Copyright 2008 Radical Eye Software %%Title: ./testdata/dvipstst.xdv %%CreationDate: Thu May 28 15:21:11 2009 %%Pages: 1 %%PageOrder: Ascend %%BoundingBox: 0 0 596 842 %%DocumentFonts: Times-Roman Times-Italic CMEX10 CMMI10 CMR10 CMSY10 %%+ CMTT10 Times-BoldItalic %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: ./dvips -D 300 %+ ./testdata/dvipstst.xdv -o %+ dvipstst.ps %DVIPSParameters: dpi=300, compressed %DVIPSSource: TeX output 1998.01.01:1040 %%BeginProcSet: texc.pro 0 0 %! /TeXDict 300 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}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{dup dup 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 /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 sub]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N /cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add /gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{ dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1 adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2 idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg} {adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{ adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]dup{bind pop}forall N /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 /V matrix currentmatrix dup 1 get dup mul exch 0 get dup 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 /IE 256 array N 2 string 0 1 255{IE S dup 360 add 36 4 index cvrs cvn put}for pop 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V{}B /RV statusdict begin /product where{pop false[ (Display)(NeXT)(LaserWriter 16/600)]{dup length product length le{dup 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 rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg rlineto rulex neg 0 rlineto fill grestore}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{SS restore}B end %%EndProcSet %%BeginProcSet: 8r.enc 0 0 % @@psencodingfile@{ % author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry", % version = "0.6", % date = "1 July 1998", % filename = "8r.enc", % email = "tex-fonts@@tug.org", % docstring = "Encoding for TrueType or Type 1 fonts % to be used with TeX." % @} % % Idea is to have all the characters normally included in Type 1 fonts % available for typesetting. This is effectively the characters in Adobe % Standard Encoding + ISO Latin 1 + extra characters from Lucida. % % Character code assignments were made as follows: % % (1) the Windows ANSI characters are almost all in their Windows ANSI % positions, because some Windows users cannot easily reencode the % fonts, and it makes no difference on other systems. The only Windows % ANSI characters not available are those that make no sense for % typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen % (173). quotesingle and grave are moved just because it's such an % irritation not having them in TeX positions. % % (2) Remaining characters are assigned arbitrarily to the lower part % of the range, avoiding 0, 10 and 13 in case we meet dumb software. % % (3) Y&Y Lucida Bright includes some extra text characters; in the % hopes that other PostScript fonts, perhaps created for public % consumption, will include them, they are included starting at 0x12. % % (4) Remaining positions left undefined are for use in (hopefully) % upward-compatible revisions, if someday more characters are generally % available. % % (5) hyphen appears twice for compatibility with both % ASCII and Windows. % /TeXBase1Encoding [ % 0x00 (encoded characters from Adobe Standard not in Windows 3.1) /.notdef /dotaccent /fi /fl /fraction /hungarumlaut /Lslash /lslash /ogonek /ring /.notdef /breve /minus /.notdef % These are the only two remaining unencoded characters, so may as % well include them. /Zcaron /zcaron % 0x10 /caron /dotlessi % (unusual TeX characters available in, e.g., Lucida Bright) /dotlessj /ff /ffi /ffl /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef % very contentious; it's so painful not having quoteleft and quoteright % at 96 and 145 that we move the things normally found there to here. /grave /quotesingle % 0x20 (ASCII begins) /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash % 0x30 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question % 0x40 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore % 0x60 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o % 0x70 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef % rubout; ASCII ends % 0x80 /.notdef /.notdef /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /circumflex /perthousand /Scaron /guilsinglleft /OE /.notdef /.notdef /.notdef % 0x90 /.notdef /.notdef /.notdef /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /scaron /guilsinglright /oe /.notdef /.notdef /Ydieresis % 0xA0 /.notdef % nobreakspace /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen % Y&Y (also at 45); Windows' softhyphen /registered /macron % 0xD0 /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown % 0xC0 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis % 0xD0 /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls % 0xE0 /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis % 0xF0 /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def %%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]/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[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{/Encoding exch def}def end %%EndProcSet %%BeginProcSet: special.pro 0 0 %! 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 0 N /rwiSeen false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{ /CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{ 10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict /md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end 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 0 setgray} N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin /magscale true 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 count /ocount X /dcount countdictstack N}N /@setspecial {CLIP 1 eq{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 rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath }N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{ end}repeat grestore 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 @defspecial userdict begin /bop-hook{gsave 200 30 translate 65 rotate /Times-Roman findfont 260 scalefont setfont 0 0 moveto 0.8 setgray (DVIPS) show grestore}def end @fedspecial end %%BeginFont: CMTT10 %!PS-AdobeFont-1.1: CMTT10 1.00B %%CreationDate: 1992 Apr 26 10:42:42 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00B) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMTT10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def end readonly def /FontName /CMTT10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 92 /backslash put dup 97 /a put dup 101 /e put dup 102 /f put dup 108 /l put dup 111 /o put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put readonly def /FontBBox{-4 -235 731 800}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19 38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204 EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727 A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593 F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714 4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA 6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F 1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438 452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF 8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369 5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9 BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19 741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79 E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712 E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7 D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE2E7EA49AABA75AEEE C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DC FF798F2ABFC4F3539392985C4CB324B0007229586D1E0321559F67C057FD7902 194490A4C133DA790FF3BF23A13C2B1B69EEB75950F9106F2BA1E3CA65C90FF5 931DADF03DA48AFB8561FC2E710087251BFC42B80B297A3DB0DA138A7622A931 DA293B0C740987ACE9F2A8EC2DB98F85783C01623FD3612C7E4A84FD93446770 C3DD7431F955A5F3734F6931BD790F0A45B8D17CB74BDAA4BFF6DAB5380CBF61 72F37CB67A909E2842E0AC5D9D07D01A4BABBDE2AC70FE5753460D7E1A708B7D 0EFB2B5FF55F9E4571C466AF1F91E545585845B09D855C3A01F713C1BF081EB2 7E2A0E598708737D475BEDAF60BC100FD0A0628C6001A203348CF6A3AFEE6DEA A2EB57E35599FAD0B8A52BE1B77757E92EA2F51BF07A285E26A452F417D2751B 3D54B875B02A026097A3A165328322752746417C65AB1B4F59F97F2A13C267EF F9D7CFD1A202580A25AC5E687976650821E6960CA91E6BD946213FEC6119B72E 7A1E745CB4426C0B58421A76F7F4C0C7733A6FEA4BB288C0DD7AEC8D6A3452F2 21D0151ADB4DC2C46E2ED92D563CD5E4578112195B3850FAAB179C83E9E6183E CA0F2784611B128DDFD3B8061FEAB76A8540964848F46093F44A2C3E1C69ABED 00F6FCFBBD94A05F164820C0DDDDF3EFAB051A5D28691216A819EE9447D744DC CAF7CB4058BC595C664580FF97584BBE6CF595DE4DC41FE94A3E453767B683E8 739F5115F0754FEEFD47443B48CC50CCEC35D30F9F7707A202BF3FD3B15068CA AC946FCA5A6A65D6E641CD24E3386ABB55DAA03413291775B8A35065128C31B3 1E402A25B92AF23A2E45CD5227DC8E75DD1981D2DE20BFE8443EA9F932837043 F13B09D5F9CA23860DD59A552CAD11FAFEED97CE9D99FD6DFF88F23DB24CD33F DA99E52E45C2D8B290B667E643F7BE5ED111C84009FEEBB1443FBE53CF8A5152 3B7CFD9D90EBF447CE616DCE81893E0119192C79E64AF719DF01C32007B56B00 D93FBD986700B02FA75FB2C87C170C3F2672C1B257F87771F8E8F704F948A2BF 98226B630B9B5701449F22B479DBB74C0A393CC539E6242A51878C6FF5E19A11 E9D6CA044B56F6CA8C52A0F05D75C47B04352DB2CE5FEF6A747C9D527849835D 4C40007CF5AF6A6312FD152294838CF871B2EF62D049B9D88094F7F2AFB1558B 278A955718607D6154B1FF998B699A14D9AF2954E75A07F8FB5FAE7861ED3997 442BA78FBFF9731826B9D3EB0F6AF739862FAD6FFCE419E7B3C8CD278FD14981 6686B788E74B063EA849732CA901F3826B116087AB46AF4F55A9C64BAA1A0233 EE37A4FC4EAB32778DC855E1AB74E9D830D18B77BA25DA4F72C92F189AA4D79F 72322AC38B52BEE53AD1E9AE27C50E7F635290BD73A52620D7B8AC17D3221C6E 55FEB7AFA436BC59373939C196BE6C46E7EB8447F5D59673EB5DDF23A0399A83 3065F2D59CB0A184ECE339407F248EFF8B85D60106BF986FB14943462D605955 4E36E6D2A0AD906ABCE421EE2793DE72E0A8BFE060C82E3EA46EFA72DD96D94F 26FDAA164C481D2F3D895D223C9BDF78DDF5E3E31BE886AB8DF56E6D32E839EA 8D45D8EA74D58BFE4637C591B954E763466422C8AAA4ED233DACF4570F680624 9FB3431A2CC3E3C8EEA2EC638E52280BCFF391D904B1D975F9CFF5FB4A6F40B5 B4CA74BEA299CD2422661D8BEC1F6E5BC793364620029B240BCDE2736634586C F488D24FD23065835392350F49653E4A54BD3733A1B740CD73FEAF6F465D3261 4E012C4A800B6C10C9DD6A5C387A3590B4FC83DF3D8F40F09772009D7B984CA6 8BDD6A82D7D3FF1066A3F682DCED7AF3FE02F7D3F2A44946423FA595A273F489 A4364543C9F98E4C6F4FED2B9B225C466ACE04E82383B656A0FF43EA736436CC 3A50C42105313D1EFAF28FF1C13BDC8A8301ED99809686E53E90A3ED5178D63B C204FF6A3D40F84229081715563AAB5AAD8E4356BC45F4B88B9DE0581E7A3846 A8EAC6D8A8DC6D67E1BA8956E1E1EE45019BC0A6E50DD4FE6BC3E61D78477EA5 CCFA401C134486C36B93021C109CC145739FD3D78FF30776A54C6A902AF782AD B37ACEE163BCBBAA0CD6081AE6A71200EC9225FD4ED17399869B84E2AE6B2620 A0D998FCA2DEDA4A5F063468E39A7DB4B631A8A4AF9B7EB5C639FEC13A5D9F96 E360AD4F668BD019C1303D0881D70B5BDC1BA47C9BD79E415CC53889BA5D2841 DEEE0F20FDD842995E13C3F247C327B51F6874EB2709B23C2CA4B01FEBC2C420 66CF75BC4C023F15602A180C6181CF18414000C5E3C050E2EB618793A4EDF896 3D53DE1BC81EE1677DED14C464520139EF21FEA3368297A88E6EF48E1919E485 35EDCF222334FFDC174BA9EA94A3D1EB83782AC1CDE4239BDBCA371A27F0BCEC EE3F9633D075DCEE8FD162A70CFD0F56AB10ABF063F372D7223C2CBD355D7FFD 350320F9483803D47CE51893AC165CC8CADD662C99697505CEA88526E36B7A37 80685060C9346C0675C2997710E714417C78A8CCEF717ED78252EAD23A6B640D 7F4607125F77CD07EE38A912F5CF8E91F62E023B3FE31511495A73AF03779108 8C8C9B20A0C5312BBCC54AC48844D667976FDE7087474F490505D18E52AF5B58 65D4B4FD5DF824882AFC69A9EA2E3F992223F25A53E29599BAD25F95F020F477 77C8FB079A10836ED22B4D82A71087C0C50D1A6DFC4AD4DC5FADF6F5F757FFD2 5D91C1FF7A4CB16FC9FDEF3CCC4861049F4CD3927287729DE465C5265F24BF80 3ADA07327839C8337C3B95239F2AD99DD867FA336D2669F269BCA4BAE23E2F07 43C5B8C39054 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMSY10 %!PS-AdobeFont-1.1: CMSY10 1.0 %%CreationDate: 1991 Aug 15 07:20:57 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMSY10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.035 def /isFixedPitch false def end readonly def /FontName /CMSY10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 0 /minus put dup 33 /arrowright put dup 41 /arrowdblright put readonly def /FontBBox{-29 -960 1116 775}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A 221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A 27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF 5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09 0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730 DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A 71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09 4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C 515DB70A8D4F6146FE068DC1E5DE8BC570317AAEA74A842CFD26F9591866F5A0 9B4EAD7395F5196B36997F1D59E88165C94739E74C2B40820F8C972B175ED79D 87C9E323C3CDD5C2BEE6409017767534E19F45AFCE2C6687733451AD2E75D112 42040BADFF90F5FCF0677E04D0E99358A8268147FB0BC093C9E6B3A686D273FF 8CAB1B38C943D6756EFF83760A0822AB4C2B5BE81D64C1AC67B3E8E667D6F1FF 8533A43741F7EEBA4F86D9C805D5B0D59E7CBC1E6BCD384DE24DB7D67EFEE2F6 00A1A7A4A134EA64D9D1484459CBD70C13FC27BD779BB5B95E9C0307F9DDFFDB 5EAFB43AC29488B09B607AB4C84373326CDE445A132DD4663AFF2DE925CE5AD3 1127927EF2D74A47A2D4A77E95415677E6E2CB6EC819F07ABF3B4E9C2C5E047E BE3BE01B785307EBE6F05D8D9BCFFDDA175631DBA328F49BFD39D00DB8618522 85F3076E388D451280D1F3C714BCCDB231A1CED5BBABCA193FE0677BA667A0D9 59DF3025C5095F6F1A9D9C61F940218D59F8D772A0F1A4333B4E63422F58C19C AD564EC3212C9A1A13CE2394DB0944CB1FCB1AD9D595832967918B0D639D5077 E778C16FDB0ACF3E24FC76799A57B8357EEEE1DD10C16FF5F38C974997053B6A 57F77E9203C9F088ADA045F98E0016A00120AE91CD0B7C0BF058EBD19B1C2BB8 DA8278D76910BD5400457BB555E930EAD253EF34C9D961ADE76CA22F9ED0E916 BF00EC80FF636FD2A51E5D5889BAE77295D3D78431725DBF4CEC743A00 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR10 %!PS-AdobeFont-1.1: CMR10 1.00B %%CreationDate: 1992 Feb 19 19:54:52 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00B) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 12 /fi put dup 13 /fl put dup 15 /ffl put dup 16 /dotlessi put dup 19 /acute put dup 25 /germandbls put dup 26 /ae put dup 27 /oe put dup 29 /AE put dup 30 /OE put dup 34 /quotedblright put dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 49 /one put dup 52 /four put dup 53 /five put dup 54 /six put dup 56 /eight put dup 59 /semicolon put dup 61 /equal put dup 65 /A put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 73 /I put dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put dup 88 /X put dup 89 /Y put dup 92 /quotedblleft put dup 94 /circumflex put dup 96 /quoteleft put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 124 /emdash put dup 127 /dieresis put readonly def /FontBBox{-251 -250 1009 969}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C 295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75 409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C 4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF 2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E 0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008 24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B 43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575 5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC 96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3 7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65 0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830 B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007 97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8 FEF3D8C63B2F8B99FE0F73BA44B3CF15A613471EA3C7A1CD783D3EB41F4ACEE5 20759B6A4C4466E2D80EF7C7866BAD06E5DF0434D2C607FC82C9EBD4D8902EE4 0A7617C3AEACCB7CCE00319D0677AA6DB7E0250B51908F90A32C4175B6BFB279 024EAE1B04D721A6C54FD623E38A7F3F8BCF859C78E546BBA7FCC19854611A6D 807792A9BB489C26149D05FAD3B703CCF8812EE946670180F7711831F3260EAC 848FC9328D91FCBBF00DEE2C307796541CCB663ED2825617AF8D2380278FB9B8 E12D20F039463A8BD2900681702C48B26957CC339B20A07AE87DFAA9E9A35C9E 793A1B9400027E5D5F3921B971F6B6E7B41DE05722D7C98D7AF71AD4F9A2270C 93F54869098BFB46FC48D365AFA882CD3DAB79E62BA5C3D0DCB573C959BD809A 5D50B74A264E3BE5594E45ADE87DC8D7AD29DC25C14065D013427D282B07510C 3A6A9597B5C69D8943C8936798FCAF1AB4CFD1799A16772F79611D38C429C5D2 4FDD48BCAF025912ABFE4FC77845137F1A68A429E09A9B7AFDC554CC6B2F7DAB D244ECAE9137087CC14ADDFB5E222BD75CD440AC80988AF042E78338BBC54369 1590E5E0F8B101D4DD8E99CEB625B35E67E359C111A621FE322F246F898AEA1A 7E66E26A45DB7AF659D2C0BB3C58AE5527E4C5A0CB74BF1B5AEECFF673807918 70D73E5CC43F457F912EAC1FD98EDDDFE90A8454551BF9047BB71EE344228516 4996CD000671173E48D4A90A7DB5437D587EDF76DD6E9C7B5D8E16EB4F5B81DD 222C6BF19D8EF0CFA6C89F08E56C9637125725BF8CAC5473F8755B70B3376251 E80A93FEA61864BCFA907DA7513A5D5AB90477DEF35CDBE85C92A7B0ABE4D5CF 76156F109C74B0D17FACA01BBEED50FACCCC757F2E899110A5E83A248EA17D5E D2E938A41D2D0BEC8F58532BF23D7ADB430557D9A576A2D64099981124E128C9 BF55A787AD12D2ACC5CECEC26D94A05AE74D7ACE96E533B3A197F2F5E3F16FDE A469F813742495C32ACAFA6E0E81CFE82C47B4EC6D48F3C60181B793757CD287 1CD89B161E015DD3FD766354E4C88D710F09FAE64D0DB16BB038FAB72D384B06 3CBC46BAAB56BF4FAC1867B6EA2F20009E1EDBB43F59E3EA3818FE430035FBDC 38EC851FA6C8A4012904C10444712B9A7564AAE4250DD63FDE67B194E0C85D0B B4B3D8D1BAB71109C9F4DF5849BC24A7E6E6A9EDCFF44B575EC0664DD4E38CE7 E9E4B041289EC759CE8FB489B5847AEFB05D758CA82184C4763E9AF7DBA244DF 2663935BC91CA74850F02B962930D3D0C3AABCE7BF840A7A035F2CC57E1F80C7 3C373AEDC7E9E8EBB300140059C2DB3F71D60BA3576745F6D17B9F0E06E5FDEF ABC0A23ED95449D6862B5FDA971B6C484DF4DA28A8D051F2FA12C4C14E2F22C6 AD8DFF966E4EEBA04BDA48A31C08D9C4E318AAA88EB4DAEC6273612F13108DE3 31F3A1A6B2F426D79D19EA9EFDD47810A0FD1D2C64F071A7CE510B233B754E05 C61AA3F24441DA88AA9E83A2DE0FA580D25EB51433BFDABCC711820896D5E85E DBD8227DBC490C394AA1682E7625B3888BFE9356AD421C6218C453AEC42B1FF6 B8F42D9022DB94C3D5EE98B5990C09C1EF5398E252907045E9984AD71187BE78 6C12C1A5ACE30573556D2B2AE6F34E9D792089409A0ECF4003FE516DF68D997A 6589CFED34EE928D42FA3433D1DDC5DFFEFFF8024A22BA3291DEFD9E886D077E 93AD547927BD8F581C95550B4076FE3C71C4D5C12E5303BCFB8E2C5C9537EE32 AE4C578EF0D1F20A7F24697ABB62E6BDCDB3AD86B487891DFCE40390BFFE3A18 A6BE497D04D1CA70CB2C284B4652D0D2C0327381490713C2A92C777ECA9C0278 FE2637E7DA2A0443951BDA667EC63AA2F8C0E29D962210BC6F4F73AF1F2D57C6 25C1BC5D192D587566DAD00055973DAEE23D136EF5BFBABAE91524EC3FCC5B67 B76C5F6FFF17778EE8427FC185B0C1197FA7EB0398011E29627D928B15AE6109 94FA3BAD74DF9996F13272E6120B33DF9F7D2B4C0633C0A27B298CC3DD48C49D 3B55789656BCDCF6A9AFC53043F9401C7F4D3193570C241E8D9648F135A50CEC D30CEA6582B6CEF83816CDFB3D829ADD74A0B1460D253496EFC48DDC15D4090D 20E4EE0009A10080079305824B2E24FD22CB805EE76FC05A6F202765999E516B 14602BC640FEBAA52E1C3AB0CAF26022627BB169E631836F7655DF2C6BDD13D4 876181D083106B25983E50E5DC14C9B44B3057BBEEACB110DD59B8C38C7A01D9 3F5852CADD6F080DC7A6F537A9D2FF8B0EF0E59B9D8286AFE3F930DBA48E9587 C69677B876CA70DAF758AF11870358CBC4244FF4562E85BA5C6748A29517A1DA FD4BD9EB6A3C63FBE4781B880D636442A3C4AC2BE7409BAF0C3EEE78B77BBAA1 E91E7962A0A24DF886DC5513E897E662AC71615A18B70C51DC861C5CCE4F7360 1F0C1DCFFF2D069498EFC3CF185687DD08620740FFE69F0A8055C8EFDA09639B 3DB4369CE16CF1ACEE4AF24D5AA8FAF9C9047D281C6004F24074E4E08EF57B49 C1CA84C9C1870358DFFFC16496797B53C5001E3B466A409FB8A9E0A758FD49C7 8B370C3535AC824C6EEE70B8439FF282E80C577BAA215FC7892991438D9EBF61 BBB158EF232E076CEAB9C1A9217E0036AF3C1E17760EB482902565575B623F3C 2660008E5E4F9D8E72A3B3642509A0DD6C45C91C42BA9CDDDD6DD2DEFF2D1642 E5AAFB0DFC641665C0F855AB7E396F1FAE5EADB5728F103E0DA5179171C9E893 50E855F58CDEF065C4590FE34B6BDABEFC9B6BDCA75F91D606A277A26DF16BE8 C3A17D349CCB6EBD641FCBD38AF15238157FE27E17AA09FDDCEAE25623C76E68 10987FD7327B31B05420629DA63CA8E304B7081D2FD2391064C313E2AC8AB700 2110995C3AEA7B5B17175AE54ED73CAD02E6646A7320B84456AFE81F83F8868A 08AA05C993D0EA7867B3968F44B7529A4A261E6EF39055453367DB9ED74396DB 54CD02A8365D8DEA611AAB9BCC24AD6993D41EE5FE94ACDD3933CC4685F47DFE 9015F3D758DDD6F64B28B6CD39F6DB36BAEF76A3B4A26020FB328C5B435E56F7 8F52EBB7F17B994808F529859E85112EA13A84948505C055D221E779F53E2F75 DCEBECF78D5CCCB896DB67548CC48E0D49FF5F6A4F658CECB9FF9AF634DED9A4 F94E7646F19DAE3CA2DA649DDDAF8F7849D5125A0731677FAFFDB3C3B05FD8D1 A2E084A2285785A19216F145B801E2675226B8E403FAE381B7BB0BB2611AD624 FB9DD3D976E8B6AD6E2FE3C78CFB912ED2C2B393E0CC9846ECA42C58B3FF8B54 F6B35A4B961821785FDD9F4E0449CF7FD1141BC59E99CBB32B53D0CD4837AB25 CDC744FD25D37D0A5843E20B2F332F8EC158B0C13E0E31053B9DF109E7CEEE60 61FE7911DAAE7C591BA4B437458173A0882A84DCFFAFFED0EAE54F0ED33F5302 856B7A73A3A3A1F341B3A5E56EB5F6832EBAC6C4AA37F9D42DB903737A61EC28 53C1BEFD0E5F0B81F5FE099D2B2C7F61FC81CD15FB1A58DBA441AE91F3FD6973 BA37F8261DEED05164AF333D17A8B5D5E418F7DA619F55D464C284E50B471ABF B5E5EA42FFBC948B30F589EE9456607F1FAAF4BA46E378ED0C025DD67339D56B 32CC499FF7E2D227F570E808EA925FFF98422452BCFBAAF488C405C90CFDBDFA 368C10567290703FEFCDB8EE4B3DBEF9B0B079F60D004858F73FD160496DF329 8F4AD50388DA010CFD9B2719E55AC7232465A323F846E0E6E4DF8B372DD98A81 07FB2463F1DE900D0F7BA873C479D106BF77A04E5E26EF8814BC8C34973E35CF 77A22B4364B24C87E2EFA0065E860F16C8059D2EC3B3686D85DF2363447D4E31 A087B1BA7207145227F5EA8523F91977E1A8BF1965F4E12023B30CFEB94024CB 5E90858D28C8ACE22BD451589EB67BE632FAEC8DD7B2703D1D5E51D7A309B72E 6358E7E0A5DF7D668A6177BC96CF1C2E7F0E179E323B55BF75EBA26D65CA7131 73E8E7F74742EA82CDC82E3CAF14DDB2F940B5AFCDA3422BC1B7C8634119A463 0E1F743A2A903F815530B7930D5826FBDFE13ACAE2F0D665E3CC2BA0CB8DE1AE 39CB2C0A0632474C22454EC0EA602D67E36FDC5EB0A16743D76D9FA17572F752 47365600A28CA1078D8E62B311FD56C87462A67FE09729314086E56B1F17F84D A5A27DE5E12AF504757B2172B2CCA2197E405440FF30B2F327842B1328C55206 707BC71517BF00BE4FA366C73212506CE912C9654965BF682B5A5189EDA4A855 31D501693AD24D313FADC4442955C2DBACCA0626B59DFC0137BDAD696D81A2E3 20D2A123B881E19202292DAC29E53FFAB3A49E4680901605F1AB2D06F1420F26 F07DA957DFCFBCF6211E6A5B14FCA025FB3A3D0278FA7F3397916A1B3B30BE92 7E21AD33B692E3CBFC509308E10C92BD188E00974411B422B3B5F09E0DB6248D B5EBE423FFC29C730FBEA103B64D975D1847FA93E0B77110C9059C765A4A7692 5AE0EE29CFD3186EFA81CD6626DD1E68E8A4B5941DC3F9FB3CA9D1597AD8E82C 13AB953F4E8FBA0EAC41C4F4935950E2346265C55A228487FF0865183C15D7CE 5C65729C12FDE3895682C992E7ADF372E4BF89B40D479BD92DDC78E600E452B3 903F0E4B516392BDC58CF3DABE2849BE0E2C1441C19B778881F40D4A5BFAC13D F1B8FEC7B5177AD4A38A959EE03B19D885938D86C8C770239310969195541C12 1CCB45E4A90F2AB992F46EC1EAD1C53DA02D844FAC2F0E5AAFC830F5BAAC52C6 D37AB6F889ED1D4082622B1BC00E38C84CA7479C06FE7B2F636F344A4FC32FD7 3097709D8201DE977522A58D8D7422A95F1A8A110EF3E342DB2CD1B0A477C124 1D0ACD51F855AB737CEC022475D28119DC7A860975D446D9A68D40A9F2F456E3 D39FA95586F082B4EBEB54DD6B2277A86854014B9D68742CB63CA3325F1B7A0E 54478187485416C944DADC21D6E3E5D6AA1C4F942D7BA4893103638F64CF638B 391CBB09FF5A392CB649FE8E33599AFF104F32021A261E43999F78B26146051F 5E09BBF2289B217A24A4C92AFEA9E2C53350866729AEB4D02D95AFA2386071F1 3E722F378E86CA2835A09F98AC6935F9915250AEEE45CC8DF477AC78D596761E E19EFE87A0FDB2201AF839BF9ED7BFAC9B0B425012B10C94D19FED3241D1C9B7 1190420792613F91BA4EE4840563ABBC5A6721C8EEDC5617D139864D17DC77C6 98AFCBFE1CF6DC1AAE3C0FD13F5367BFAF80E587B601C9271CC94A776E6B2941 D0ADEA4D3039B67E6AD195391D4505EA64DC0238B010286F7DAF07403F0AC5E8 80DB9F3B8AB2C1425882B7AB1FF9754DB86C5BB1FE11AF7D0A054A832B3142AA B446FD79D2554EFE1F5B2D5726B592FB29E8354DCD15265F33ADD1200F30E023 C09C6A3546BA0A766D11832E2E99634B5E763C3CFF2619776B6B656748B0ABDA 603BC0F594944AFBDE9045D1F3949C9EDC43EED5C0A831D6AE50D7C60A5B190D A1B8463434860CBC9F9AADEEFB247DDF8408D61842F25AEE46159E2C96421352 A35A0D395502ABC53522EE75116CA9EA81AC955AE784FE4D8709A5316880B9CA 6FC3A7A93F6E9AE3C1C2BE8831610DC791CFC720D1ADB2668B6C79D5B488218E 932570E0E0DB7412C7BDF4C98DE98F9227552C82467978420C07D7764EE81E02 B5110C10104BC2AA16F00FD3C9EC2E1527617B568C60A9A95515C28AA9ABAF43 DFFE76DFD6C03E5BEA99AC66DF32C4362034AF96AF0C39AF3A9072CE64CE154D 4D63A43CAAC4621FFB99DE350365F646C9AC2A248064ED37C20C3F9A4692FFB1 2E0D2E8D419B255588D458620E7BD7BFDF4AD2B5F898DA34A360E799452CCF0B 1361ADE7875F75981B03D1F64C0C66F60E1911F36EE3EC9608F10DF0A86DB268 10DA174E36E94289CE7FE7C7C237013AEA60F9CC3075F5A1DB9133989245305C 640A288DA355D081D6E03F3C6D20B46B16E52E0605919CE374283EF201B1DF04 D05C797AEA6AD9A10CE067846C0242A000E1C38BC2024DE1F5D72D13622B23C0 991E08FA9542A4F0A3F80BAF04818DADD81FBCFF9DE5CCEDBBEF069E7B2F4878 3CB225DD2DBD8CFF8BE996055E838E81101083441895A257D52FA21A2D1E2B83 45A9AB908549ACE1F307ACD8DA75C78B852C3AB324A51C1B846C00C3EA8063D9 B2968ACBCB8C779D8A880AA814E1D7F4D9177F32D5EDDE9A5DFE5709B211F602 D3ECE773D7421B33D1224D9A1FE334FE1EBAB361FAFC915156925FF9A26872EB B27E09813EAF27A603478962BD4E841A5E3D87E7E3AF932D372D57E16EB1062C CE6915D6FA23FA2757F45E0E6DE9226AAA4B53AA9A92694FD43C14D416CEBFCC 9647C713437A0E2C70746FA464ECC25C6B446F641CFA9490ED8C23F9C1ACE09D FA227C62E963AF8B4DF1CD6075A09347DDE8ADA4D8F3F15F921D6C3D9BA477D1 B1EFA0D931F3A9C0595072A497BE9E79D2CDEAB35C2C4F91A300670BB1022F5F 951A477AB5EDF223A4D3F521461357C0C60F5E7614E7D74EB016985F0366E288 106E4A92A9DE0B6AD542187EC75034A80C7AB1751B77D55682590FBC354BC62A E20BB135CDD4391778956F2EBFCDDB2E013B858F00510D1FDBBD08A68F276359 1AB4FEFB720F50CFB9EE67A6A424533D5D13A55541B89B8ED1F53E8BEF62CAA8 888CBF259D47752EBB996BA1970589C5613DE25918FBCD6541C6CC504362FDCB 00A94B9B56C4895674B87B5505DCAEF94440EF57C2D3FFA97138A308DC243BBA 147053AB12209BB8C42E3AFD8168EF544CCF08C74C1C67B99C81AD98F51421E7 F9B48FD368BC3440A42685AE339C0844D1614B02EAB00D918137D8D59A8E49F5 8EC039DDC57A21EAADFDE3D33F10C58A10C340CAA5B862419D5E49F2854C241C 4D0F0AFD85B321F7F95A8D2F0248286C0E0E2071DAE91E616D7DBCCD2D1E57F6 2D2FB872231877E23D82C300677DF4EC977F9C78D5D5028F084151D6B05023CC B0FF5668D35871320BCCAD41FDBF370EDAE33A651EF0ACFFFDCE8FFFA10EF128 4D230F296AB2B21766CF00992EEBAF6E55B30799C4A3B18390EA388CF3C18428 BB2A1A341FE47D3C631F7930DC09BEAE38C54277F8FDD4392B2F5C3C7774D434 B97EF89A1CE35A9B30CF483154703DBFE3DED4E86086698B6E41361AB6996C57 9850A37621F73AD3964E7E69D7F51F4688061C97167E378BA340C739441F37E7 3FBA9AEEC2817C2A96C787B88D838E4E1E172ABDF2AD67FA4F05549F57BD7928 8E6E883BBF34639AFAA9CE2E5F7C4E1420AF65A14C0707B40944C968ACBE8451 07C0564C57C0F6BB632E0B89AAAF0A9F0B96E9E2B1AB5B21196CC9ABF8866451 860FFB3F451777E628C464E01699FA883039CABAA343477E1B2F262E7D896C8C EF10C66BE57C5F37E24489C7125F43CEB97EEA2E0A667E712A25D1E607DAACA5 BA7B1851BED7B5EEC4E0CA2733197B43E952C124100923361A7F9E033050F895 16C259DCF64AC82A13925108FC8C298187CD690EE435DA33F8AE947558205223 FFFF05AA6B946886DD11E47D3A2C63C37957E885C336888203F00CFC151F66C4 EB48825E84596D6192D51F7302D6B8AC176E6792C6EFC0E7377AB3F261392665 8D62FC4D2B2E3E7C98C34D095418D317BACF8633C86E65CB21F0334476DB7278 DB74CC13696978683A07DFFF7307492BFF2762B80D720AF9E7C85FAE38946F4D C94A8C9CDA123B7C4CC9A3106CE55841B0E3935288196C0C7CCA03B8948753C8 206265FC45CA79D21CCE24ADE4C2FBE74B1A94C488819766D03538A4150459DE 3ABD0AA491EEE319E4A797A5E4D7B2F1DC42F67534E5187C418B482E08D502D9 38174EC2A39ACDCB903031B2A1B4E4135B79208FAE581BFB6FA9CB5A81518A18 665DE696E3061D82DF55F4B9A852ABE70C13771C928F6F3ED4C2BF6A6A5A92B6 187E630DD03EF046138F541A564B168D960BA243CB0944215F0F786CDBCAC6D2 59FE1DC30CC445301745492C395A8070B5213556A50D05FC3CB9C71BBC51F0C2 7A6054570462B40A7983FFAA48E838924AA1722ABC558F1BC5BCEBACC53CCDB8 0956E4FA3932C433120EACC66D2B1EE15C49FE4C6E3A66918EAE8C907B2BCD17 2702B4D8B5D8EEEB00573CF628D93BE0B49CE97302FCF282B3DE2357D5479DCA B18BDB744AA9FFE6D445E31ED1B57CA3DB4E11864828DEA37B54833084278E88 A497BAE8A7929799415B2C13D2F5EABBC25310676A20745D0EABFBA2E5B96FEC 9F3ECD61A0617AB04A5329185EBA16BDFBD4BD5C2628FB8932EF45BD42B7874D DBB10B113F07963DFCBE4D738B9E8F9DB94C8DD8DB45DC00FD5F3B72918A956A 2FE0861FAFD4706AEAC53031E69CD8A1544675066E33447DB48756C39C150B55 9D21D7B1B7CBA504B46F8366AC6673F2783930A45CD869A8580597ABF129E411 F72BEEB5364DF72BF3AB107165375164231E2CEF5A4A5DA6FDFC54BE3B144C9A 48EFAA9E9D36894641DF13F5E0018E018B6F43CA21F1504AABFEEB73A540C288 9BE94801A2094C44FF677AF42100D0266BB635B14F2EA8766EA774F3AAA9275F B7821AD29F503A84F8314F5EED4C6E1EEA9BCF010EB77427EB811E8B303084DE FB060BA5BE9544B12E8B302259EEB8A6ADC4611B6376A8B2A6DAC912E7342B1E A7C45EF55DAD1F350BA5347E7838BD7C806D84FD6053614D1792E5357813F1B9 4E10EA06B0B4BCA33E25566B9356C01C29BAEE70B15225A777B2FC3F172267E1 FD961A682A90FA194C1CD0FA821DAFFFABAE989605640FAFCD933C209C1F5515 4B203F37AAA8F3239502BCC107FE0A0F046B7F8C92349CD90F96C8B903A339E8 A63BC86D9B3A90105E62A8609F455A6FEF32CC2B6B369A31B7EC6D4819884604 C654B6D9A455F372F132024F5F9CC92CF343BDFAD3F9A962671D00DA22E3E851 9D9E6F9E5997371A194F712A2AB8EF90DCE1EB7332411F8AA18993C97CA94561 10DD5B3E303A981D1394917CA9CEA0BEEE71B58349AFC2D310DF3324816AF6DB 8C726098E308195B06C21F726B04A79942FFA79B1776BA2D42F39D2BFDA3B66B C81A3C00B5D21AAD640BF79F8B62D5B94FF2B4E574566BB7FD2F043FE78F00D7 A664897F6022F3AD1DF5FE76F6FE4B60D53563DF6F019B8475E28C73208EE5EF BBCD53A41F5569C26EF64BCD3740466051C05C322E1B34D7DCCFFBBC9D63333D 47B5928A4B1ED21E59D6A2F1E51D422818870B31FE0809DF823CB6BEB9183B81 64EEFAB67B0B8046113DF8BF09BFCA5926253774C720BE6B4AA65AEDCD02176B 90C17C24AE11132C2B091C5DA0B456DCC20BD605592A5528CE13714AFABA91C0 49BC61EF5CC5A1F532E117AE64B95F8F8AACDD3E682A15218F56695F237E564E A5B0A8D70D006638DC676DF1DE25806166EDFCFCBA8C133282E8B29A8DB3AAA8 4AF176A111641236EB5B355EC1E3506C0D7C394C4147F972107D95FCA5394DDF 3A044DD4488C3DA3CDD49B0851A6EAE06FC64EAED599E0D4FB98DC0A2B8A44AC DBD8FC3CA91CF74DB878A1A02C25BEB3DC08AEF57FE40CFF1B1E1849184DDF4A A5F8926E6A7CC7AAF66EF16442EB1A4DC93A7616F055B2639CAA46369F620C57 4701E8D1F177BB896A63F92DE149C5E421812B98BBA4465388EE68EC9DF4AF0D 7CECC0F2824C4AFDB25E2CBC213B9A3B48542D553F94164F8B177FEBAE64E8C0 9C6084F0C622125BF55CDF2CAC85481D55B0C77BC6EADD5DF7C921BF25B424B7 F1DABC5AF04E8A6091A1EAB28C18939C0666101A2BC892ECDFD47C2159AB5D9E 113268C8AB6FF8DCFCDFF27A99CB0E5FC47873861B900A055D6479055E968B42 1CCF51EE98B7D67DE709781173C8EC7E746AA733F3FD5DF0E4281E7C4804E889 2EBFB52171776BFBF582002BAFC95BD115DC50FF6544C790D1DF9E0AFCF98CCE 009C644822D1CDE4AFDFB21B4D923425D334F1EF3A5F37B48F404492CFC73264 E92326062E1DF70C126915B12CF1A03DBDB0C534BA02F74349174B314C8B914A 53F1A7AFFD2EEA7170456E230190F07927A4948BAD8272A8C7A4A72C51F770F5 96387A1337ACF333DB7DCA3048A5ACA50CEF5F03711A4365BAC81464A82A99F3 E2C91AA72B85FC6F1BE8C532DF88005582023C1B6DA806BF54CE9AEBABCE8CBF AFF293725BEFF9C7196043EC6DCFC4CB4ABFDCA4575EBA24BBB65DCDBC55362A 97477E5F989D32F4ACAF24B26C6B2B907C91803834F3E43A978C7987B6861AE3 1A3268E438FE4D8D8080116B373937A819099A1780AC94115720DDE3BB6D2595 3A84538EEEA3FE2980C5E42C7167029E1D7FEAAE25395EB4759199669C80162B FF143D809A1B6A9D6F33B2EE6C7196703261BF929E698854883D30791A9AE37B 01EEB39E1B5B7865D76B3113293D024D4C23B8AECC2CA075689883ED61DA653C 151F38D20434C95EB2BED3904AE0F9DC61EF6AA45570D0C98304F54DC78E1640 FD0E06EEB7558806B6B776E84C64B2C2C5C2362DBAE280FCA03C0DD3E2E4956B FB0E05AD42C72E572CAB74577C5B99431E2B13AD0CAE128BE7BDC6B13BC16530 D550D5CF24843466857B5ECAF2980835B2993AA31F60704A541E5FF9A103ABE1 1C237CD13A86725C39DCA1B4AAA3E8760BFC85B58FDFC5C832057CB466CEFE66 6F3E925B8E28824901C2BF28D72A156D543A6A3299B125D398851A87E090712E 106464D951C07E1222B76BB526D30C5CAD1A454739E288AACACF72B0BFFC134A B21A8E8DDD304BD485018C5C27AC020050A6F22EED7AECD99A903112EE1CD2DC E402B398B6CDFC66CA8B6B15C2E3B0F0BA9A41E3BD167D625C04F26DDB61B4EA 0A3302B2CDD093DB34BD1E59EBDD7B6E14583B96DFC448299B6C9B3805C1390C 31B07AE240C7961DFF7B0658CA5C81791538A246CF92DAE9002B0EA5DD54B9DA 5F7FE621C6A2721ABC0FD6023B8B7BF87E6B135D1DB9F1124CE7CC15DAF53D70 FA87CA8914156A2660D7A39BC9ABBF3438B25C791F1C66BA4234E9F34AC11C16 8B3ACB75C21454446FA8358034AC8BF792F0EEB23D33DE1936E61EC2F4544583 9D39F0B3693495C1A9125F4BB13B85A93EA79990BDD0A68DFE76104901358560 789FE0F8A32C9340EB4E376658B5226A2D8C7889F6D16EFDC2238901B0BE925B 14CCEF1241CF5744C1CF2A0FC17976FE1DE61AFC32FEA400218D9217C994D734 A8D2061BBE9484583076D7C83F3BEDE88BF37DC3CE10E5ABCBD7F23EEA63A72F B18423DB01DF007A4AE06F3CA6AAFBC9971DDD6E1BF14994399B702A8253202E 4EDBB0B872DCA33AAC714F4A828D86A4CB39FCD7C790FC46AB2049FC7D030C4C CAAFCDAA08A51B18F64A71F2F9B678C18984C9767444425D6693DB1FE95E6C8E 7557B9E3C36248B3568D2295D62BB87FA48F0BE9710CA7469B25F67607FEB9C6 3C78E363A91EE117A4C20152D8F5EA697A72B19BA9688047A1B7FAF148C28AD9 213C1BFA108B7939A4AD93F8821D76775B311507906E09D777674C022A012529 762AC3E7A743661E6BC69E077E50A3F922450D93657679B772EEE4E3B3452760 676AB264FFB0A6D2F6F266ECE0B3CEF615A0756309537E772E3A553D10D646E7 E33C8520AB299EEE8326264F5AAF1F1C8C5BB53D0101CD3EA395E774FED3BBA3 ED82D5C602AFC1DE5C01A393AD65CCFA813F1B7BCAC7204794A9E7E3C21C86D2 485CD7D487E66916AB812213DAF2B48A3C18F1A1400A0470434F3921E059B7A6 260B0993C5890D65BEAA5359942E235084ECF86CA5ED9FA7A887A6C97A7F3E9D 15BD35848B69B21E06270F4A6455E8D4625EAD1E198325C3EF6591D0F106C106 6DC6A8A024DCE90D98EA41D9A314220474DBE673E605BA51338AF4FAE235E912 32EFE03540A41FB8486ADB8872D29ED6C4ED407633C3C23C3233B1F8A4409F7C 2BCFB1161A76C75AAECEF42BBC765EBB1D5914A3E2856498B0491771FDF1D2E0 526723B040B19782633383FFF2A2CD68D6BA6C1EDAA5BD864392BAADB9F4A48C 0EAB19567BCFED42D17B651A4E25E8995961787C859BFD3BCD0862A6A3B3257D 5B109CD32198AF949BE2E1C7F27E20AFE55376E59D70FC2C4F5300DE43EB7B7E 88C574A7C5F9A4FE693C28612E7653E0957B0AE0D7B39C89188A00075ABFC41D ECD99E99EAE002A0113F46F36B95C8A3BDC9F66BB71115FA8C1D547C24B6F73C 90CFDEDEE23D1E22C106A006C331CD7A63A107E38E955478F01978A650271A81 C284B8EF00FF4B677D9CA4B561DF9ED93A5366565D2B96544E8CD4938EEE534B 4D2D90ACB82CE5138AC3E6B3A4C4B7E09DB62FECA817D1074E11A15C80F8310E 68A1117FC99872FE9854B9D7A64E11BA9823BD35612F163F3974DC3DE214AF5F B5AF46DB5E0DC32F589A6CE8519961EE512F5622AE2ED5414000C5937B706987 145593B0FD24DC175B19970CCC0B30A9973F32777BBD749C8C2AEB3593803C95 6983ABA1639D808D64420A82E9322237F4E1AE756C5D43C7CD25D8598104B0E0 8E5F9891ADFF60377E074974F151522E90E5331C04558D1578F7D88C3E8630CA D60B096EDF29681C76587F5A7BEFE405D41B84EA0417A63E6CE104A75AE5B392 01E5B7329986D7C5A207DB9BF961DC311DF26C7CE7EC1B9C6D3C950220B86654 AABD1FBCC32560DF604BFBF9E1912D63C41DAF097EB3ABA459FE3E843AFDAF72 16B02735662A420A4672E28C8B1ED8C8EE639DAC60D99D058999FDE25821CBBF C696430151B43EB10B65049FDF84B5263BEAE8AF727A07C9A9BC8CF724D6D9AD EEC2663323D648D9772A833CEF6BC36FF0388E725AE9357CEAE8CC44E659D216 C4F096BAD2057328446D78EA87478D6F9A7F692EF3313D1557F99FF7924EC1F6 FF5F808BA6E296CDFC8979AB9DBDB275390FC293BFDF70330981042D36E8594B 954318F3C43756DAB756C820E774B0B6FFB7D00270C2453C22AFE8ECABF590C3 4A76E15AE4F8B9FBE2095ADCB78D544C9E7BBB15F268534DEAD899810C07EF50 D36C20616FA079AC4F57C30E1E6DE8B929D1C9F3E692370DBAA3A0C5249E3B53 78AD9353A893EFD006010A490C39EC1BA9D4B33C75A603E55C9D18DCCD48A498 669D4832EB328F40DB4B35914922DD3A103B8250DBF409D96922504A6EB6F488 0731568217A23186DD4D7E0CE483A6F9192B5BF414DD65BA3D00D05DDA5BA346 2DF1AB3E909ED409A21CAF43F09007AAFA7BED279A28946429DEBF4C43EBF8A7 EFF4972A62F022F42D104F60FF175842BCDAB4FBC99B983A9D98BBE63A32B245 D66123D9BB5CEDCBC224B20959B3DAFB8F0670D6F4217CF22F7C34E8A1548B08 D44EB282D5E31A3D01E2FA0080195868C665CFEA67B3EC1F6D47DB1C2754E86A 03C3D61ACD33E9D98CF222E8C4D7E4319AF62E8501BD2E84E2E30BF12F92ABFA 2395ED4ACD6F600A17A315ED8AB4F8A649DC0D7B7736D5D8B657ECA525E617DE A69655736272156199D3CAADC41069EB085C7E18E9018D93E15781BFE4CE179D FDA27F2175A94E6FC48CE589C16FFD5C82A23EDB9F552BAF281B0D894369FBE7 5A156EA972B150E879645710C75BBF437340E844919B8C98A55A8077CC4FC458 7FD6DD0AE59DD3A3426717EEE0AEFC16AF02A798026E0F7FD5068E611D0627FD 8CA0FDE1A0DD55FE17A19A7D3BD8D464BAC571CD7423602DA09A67B8C4BD54A4 EF3ACB1736946FCEBAE8DD070EE33BA708A21A34EB78A06521DD42E772E5AC0B 94AC03C9267D0DAD66692CCC6A1DEDE8D06A551A37FDA589E516EF907155F26C 33273F8D52E5DD93D455CD3A325D232D97A7ABA92D20C9492A84C14B002B7DCF 090926F0A371EC66FBD71FB710E01146523A8804A861F773913363C73FD7E0A5 8217D76A94BE80B3D2DCEAC97438B737DEE8531D2B647F74292781A9A626A201 24062E1CF1C9AC22E56F9B6274AD0BABB88D5261D12A15CEF9C4DD00067A9A47 9B25FCB2DD2D90FB1A9983E1D5B72AD063CD23C67D0130EC69367D41E861AA4C DBC23854A42BE0422B59A08368DEB2D6D24A6377C0B7C8009A6337FA503C0966 9F28AC5E36B6CC44E56E521A437A2E234E6E5C84C6C35E61A51C7C3A4178CAF3 2C431C6B347024FDD1AB91CFDEA9B3005ABCCFC19EE20E916ED8253EE32181BA 9B86A2D3BB2969552985BE6B9342D25B3828CB0971109BB80D26B2FB3BBDF3EE 09E6501087911EA72DA6A8B1A237BE3307CAFEC928B6DE06BDF39382B5DB0E1D 52A7A3835B6B43B3BAFF3122F5C8FF5D9F42DA34AFA147070862827F52E073D0 CFEC51C6C093C0FA3B505FF099D1DB1BF5133A3F7F6C98E9C83700AED4716E3D 4B8492ABA8DFACDFFCC49551E57D27B8C060B5101BF9AE54433FE3A6A8B3B0BA AF32A60BE0AF146B6BC0DC547D7218CA109BCA7A7D80C6AE80CDCFCC4E89B3D2 8AF2B414F6DE196D72C7E9ADD877ECE8C471500551BB14C56DA61AB3F7EB602E 9025D915033667928D240D4BE8F9B8017D11DF3617A4D09F3498D8E73F877ED3 C9DF08DDF98FE2C21F0476AE2B3B0D5E4AAC53E72C83AE5A0C5D5825757D5501 52B9390C59C6925661656E23C090B55E9AE1131569CDF35F19A8AA993785F0B3 470D068AFEDE8E11694A3BDAD98EFE77F12584E55ECCF6AD9B6399D9EA3B4321 D6FBFD92D747BE969C1308DAB64198E97BACD3AEB3C3C57A16C01F88506B1ED0 173A79106ADE0C9DC86F01D3D548F5A49079650A16C291A26F66D2F6B211668F 02F021F864003D078ECC5801CDFF4320A52D469BB267211E74CFAF2857F4BC5F E3CF44F090E828271EE0C4812A5EABA59E0C1F7A631F0420E5DF4CCC28B10F7D 5A0867B2BD8684C4BDE5F75A3978C2A0BE0162C2769ABCF5DA1562161B1FD81C 9D480A0EA74B1F11201CC44CB14997A471A46725ECEE791559EBEB4834C44645 38023ED6479473DC01A025B28B09A961BEAF25C5CAB2239B6C37F3DACA63C3E1 6BBE908D84314738A0D7E2070A8F0CE53857B7F2D16F6AD79D71B42286FD1364 5AF12A49F7C992ABF9BC7606134FD86701EF128D218E0AED544F8AAB4BB9A93B A821AEBA870383EDAFEA34D5633C6B9966C6CD4F890312E52DC6B4077ECF7A1B BA26EC8F0EA1C025FFC61F61B942B9A2ACE0EDBD25951928F9C28DFC55DCFF6E 23B0CC9B091158FBF767D7655436C66AB4999B2CE839AE8734FB3180F23F1F9B 67A39C641CF73CE1E3B1AA4A7F2CB960FDEEB49118FFD6C3BB2370D8C980E5AE 0C119A529EBF111BDE8B81AE02317CEDEEEC4D6621930C2133C52C59CAD5F99B 2D1EB3EC663E42F971C7CE809AAF8659004753DE688C104167C37853A4E722D7 D5F034D832F0998EE4B35343548AC33CDDCA81E40723E6800E36D36DDBF5A20E AFF91B6CD905C66CE3E4B26D9F2324F7CC0A533781260D81DD290959C9381625 5CFEE341A15E899C0E2ED21F91325949B54EA0E7C2D310B3A4DB9271628CD493 CD88485181E8C3B9695FF4D8573AAEE39223B2CFAA9FBA43CA335A50A7BCBE34 F43E07065A082F9C03D451DFBAE8E87032C64D3C5013872EE7863B8560E1DBA3 120108C7C1E0F67B876718497246B683620807D5BBD7775E39348D35527DB218 9F2877644F667692750F3287F309BD221C47DC8EDCD7CDA14E77D3D3149DBF6E 572FEC4F85B43B3DE3B85E8B16D0434CE54AA528FEF9187319332183BE1CCA49 E7149D6D1F53A178E503F3E42F1DD32939D6DFD826BAB7F4733722EA4ACDCA27 02C5357BB7DA5A76D5B0949F7E7DE6EAB10D29F8596D3EF4EC3E1EA921517C51 0400A227B83EA425B6581AB43D66174FF24CE46F32039E7620D9A8A5D8109EA7 A91B5C5CFD62DA90EB11E4AF290E2A47F9184A029DA8BCCD08D1B5C8CD0AA068 0B8D29B875FB54126FAEF1C3F566D959C7A3840DF85D38938AD8902078640253 7543A879805FC87FCC77F766393BD5EF65CD07D63CC78ACFBC01361E38EB19F5 1FB5A2D1192CC62FCDB2A1F5AD267320157E8D2B791CEB17B6BDBD73763B6D4D 131FC9E017045369D2EB9834426FFC0DC165BDB98450EEE98CB9A44B11D87626 D46A57C3784418E1BCC9581724D6E8BC8E07AE5E92A6C10A2793885BC3C10837 794E97B98C3824AC33BFBA16A2B92B2125537C7E45B4EABFCE02FCD8369FF20D 134C2E981EFFE7075E5C43A24EAA0FE3C570236318C9F3816E466F396D2D3FC1 A4E3D0E72821FAD511B8DC658637C1591737B2964CBBB4505B38C9A72363A779 9E20EC461E461CFBEC238016A9BE12651F87E40FBA599468DC574415D906351B D830B2DA736714C33583F1C87AF29AD29CB4C78FC54A028932BFE028AD056A97 B5E443AF1E50E029FA0D7359F86EA37FBB65D456392D0023176FA72F3F11DBFD 9CD96F2FC59D0337EEE495A5D247C5EAA4F83A4C60348CC2EA604C8AF35B0632 AC422191985A11EC38AA780BE26EBB11CF64893B6628658B9C8D2E9BCFD4447A 6777F03002F2D8F84F19D346D1A65CA5ADBEB4060681182A5D62812ADE5A688F 02FCD465D82A9AC8F28D721AE4169C1B0CD842D0DC92FC41BE78B863468C437A 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMMI10 %!PS-AdobeFont-1.1: CMMI10 1.100 %%CreationDate: 1996 Jul 23 07:53:57 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.100) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMMI10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMMI10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 25 /pi put dup 97 /a put dup 98 /b put dup 99 /c put readonly def /FontBBox{-32 -250 1048 750}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE 3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B 532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B 986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321 990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E 6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721 59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823 D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF 8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808 6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9 1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE 03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909 95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1 74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2 3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8 47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19 AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8 42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8 40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837 B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53 9560176671A33FC55340CD04C2DE46FD812FC2711A85E6184AAE1B43B8B0A13A D8A6164C4C9C67695E1FFE93E69320554A74F70BA2E3168A45458027FD102D11 B6239022DCAE461D7ADBC03A5960E7741A22F6373497765AA72FD31663F42DDE 49B0537D9EDDB009E071D62C23E38DDA31C1B9EDF73BE2FE534F364C6291EB7C A98E432D701938898E1CA06C500C2B5A9080E63E4DA8C2E9612653701502B6C8 C51E42F237BE7B854BBF8D7BE3B97E9511DA810822397B43122BD26BE92B5A10 691434D7157DE034A1366616817DDB4270BF13685F38BD7E33B01B15B2ECC8D2 E6C7B329D5CA976CAEA54EC23CE09669CFDCA1F3D99B117B9CB36434BBB8CF83 2A60ECD80506B56BE09E9C860608628D560BDD7C1FB8EB5FD86D1F0FF176D419 14F7B946CC3C665904EC5B5ACC102F54A0FD2CED13C05EEAC54F124FBC8E9A06 0D847C135E98B98D4748E6D07D8783C4762C47E29ACE9EEBDBF31925F0A1D5FA D4993D43B363695F4D0D4B5BCACD8011E9A761C67C2B2F97F2ACB8EB2FC39A48 6A32FEB289DD0EBDE728A097D63B3973FE73AC2D51B4ABD970A25EC97B77E871 63ED02458E2AE9AB924AADC20F058C0EBAF3644EDE70614645686A205761377D C10477E0A8606487489FA3F870FA8534ACE3DC57B66F2B2C93C73FA988566DBC 228748925C4208A84A7E535C39CEF2B7C6F53652FD2DBA170C5D6B7C036D51E9 49637907BF7E596A5CAFBB509348E32D0F52A676FBD4D1D91EF919ECACED6BE3 45439CF7CCBA81A52C05A35245B7CBE9B789F640A5C087A04A9381C4A5741964 6EECCE1C11FC9CEC52D0AEAE464331DA17D784B0CD75FD3DE3DF8FC7BE58A8CD 7172FBC9CA39AFAF962C884FC7BA55742A782BDE373D47723029AF9BBD898BFB 312A66463B52ABE8FDFB0AAA43FDE0BC96CF51B6A2DC5D5A491F6A4F6B501E99 042105B31CF1CB4936E05BE3F86FA014436CA041FA698F1665214F6D568A248F 519080321F25A4BD7AE12DBFAE6E67D51759A46FC98A4685FD34085A90BB3C1C 40DD3ECD638D53C708CD91E8F6BA2D33638897261C14D451B387D49CF7E6EECD C203F1E04125DB5DFF17E380ED20BBBB3EEB301987C05D5E866624518962809E E0C337B635013564279DA7E7BE39F45578CD12943B135AD7CF788F420FAEE875 6446AC62732070536093CA84D466D1117378FC5C0CEED1225DA895CE6BB3978C EBAD72 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMEX10 %!PS-AdobeFont-1.1: CMEX10 1.00 %%CreationDate: 1992 Jul 23 21:22:48 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMEX10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMEX10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 116 /radicalbt put dup 117 /radicalvertex put dup 118 /radicaltp put readonly def /FontBBox{-24 -2960 1454 772}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5CF5B8CAC6A7BEB5D02276E511FFAF2AE11910 DE076F24311D94D07CACC323F360887F1EA11BDDA7927FF3325986FDB0ABDFC8 8E4B40E7988921D551EC0867EBCA44C05657F0DC913E7B3004A5F3E1337B6987 FEBC45F989C8DC6DC0AD577E903F05D0D54208A0AE7F28C734F130C133B48422 BED48639A2B74E4C08F2E710E24A99F347E0F4394CE64EACB549576E89044E52 EABE595BC964156D9D8C2BAB0F49664E951D7C1A3D1789C47F03C7051A63D5E8 DF04FAAC47351E82CAE0794AA9692C6452688A74A7A6A7AD09B8A9783C235EC1 EA2156261B8FB331827145DE315B6EC1B3D8B67B3323F761EAF4C223BB214C4C 6B062D1B281F5041D068319F4911058376D8EFBA59884BA3318C5BC95684F281 E0591BC0D1B2A4592A137FF301610019B8AC46AE6E48BC091E888E4487688350 E9AD5074EE4848271CE4ACC38D8CBC8F3DB32813DDD5B341AF9A6601281ABA38 4A978B98483A63FCC458D0E3BCE6FD830E7E09B0DB987A6B63B74638FC9F21A5 8C68479E1A85225670D79CDDE5AC0B77F5A994CA700B5F0FF1F97FC63EFDE023 8135F04A9D20C31998B12AE06676C362141AAAA395CDEF0A49E0141D335965F2 FB4198499799CECCC8AA5D255264784CD30A3E8295888EFBC2060ADDD7BAC45A EEEECDFF7A47A88E69D84C9E572616C1AC69A34B5F0D0DE8EE4EDF9F4ADE0387 680924D8D5B73EF04EAD7F45977CA8AD73D4DD45DE1966A3B8251C0386164C35 5880DD2609C80E96D1AB861C9259748E98F6711D4E241A269ED51FF328344664 3AF9F18DCE671611DB2F5D3EA77EE734D2BED623F973E6840B8DAD1E2C3C2666 DD4DD1C1CECEDA9D8BEA4AD62BA3D1CEC6121BD58420C04FA69FB3B339562AFC 6BAFCECFFC5C8C780D2C95919B6B3D1CCE932EC07458A1DC640800F7F138B2DA 72E3453FD3E4DAA8176E5E594B138EFC4C0597D85B391943F580B7397FE336A0 F26F611AA6289C6B4636940ACE7AF66676DB1BFD0BE816D660B7440F6E75040D 6FD16502293D02B6E971B766DF74D25CBB3E3893D09204744C80FB1E7AFC02D6 ED85073D0E3AC024272B65CB18A9F648710943CFB503721FD86B99C8F656F672 645DA97296D522FBF63C258A0D0DCFD1425D5DC635C36CD684300047E26C526E 75031C8E68CE53A7EFCFCD3257780808054C44FD1BB0E2D6CEE793DF4E4EC61B 999EE7E565B4AC741FADE15805772A406ED0CC325B1298AF6BAC84E92E4822DD D947ADF2E63C179BAC2E72A365FBF5F869E7D7EFA68AB399A67781652BEEE071 F5C06ED2813D497084760B26DF06AE2FE8121C36AB0EBB0B11AAD13185C274DC F8980F8B3D407EEF700CA06AEFE888723282FE3955CF6D704A3F5A8BDFCFAF7E 51B1B79EB5DF940A468200581C754019F833422D803421C9CAC13B9D957C2392 35E1EEAEB8E6 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont TeXDict begin 39158280 55380996 1000 300 300 (./testdata/dvipstst.xdv) @start /Fa 25[48 6[33 24[63 17[22 11[22 11[48 4[66 10[63 3[22 16[44 29 37 18 26 26 1[33 33 37 52 18 2[18 37 1[22 29 33 29 1[33 23[26 4[48 21[17 6[22 21[18 13[37 3[{ TeXBase1Encoding ReEncodeFont}33 66.4176 /Times-BoldItalic rf /Fb 138[22 22 22 22 2[22 2[22 5[22 22 3[22 4[22 92[{}10 41.511 /CMTT10 rf /Fc 214[42 7[42 32[32{}3 41.511 /CMSY10 rf /Fd 128[21 2[42 2[22 22 30 22 23 16 16 16 22 23 21 23 35 12 22 1[12 23 21 13 18 23 18 23 21 12 1[21 1[21 2[31 31 3[30 23 31 1[28 6[15 2[27 28 32 30 1[31 3[32 1[12 2[21 1[21 21 21 2[21 2[12 14 12 2[16 16 12 4[21 3[42 37 1[32 30 21 5[21 2[12 35 1[23 23 12[{}65 41.511 /CMR10 rf /Fe 156[18 18 22 71[24 25[{}4 41.511 /CMMI10 rf /Ff 137[44 44 44 116[{}3 41.511 /CMEX10 rf /Fg 152[208 103[{TeXBase1Encoding ReEncodeFont}1 415.11 /Times-Italic rf /Fh 137[42 1[23 32 28 1[42 42 5[23 3[37 1[37 10[60 1[60 1[51 46 2[46 6[28 2[46 51 60 2[60 6[23 58[{ TeXBase1Encoding ReEncodeFont}20 83.022 /Times-Roman rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 300dpi TeXDict begin %%PaperSize: A4 end %%EndSetup %%Page: 1 1 TeXDict begin 1 0 bop -225 -200 2331 25 v -225 3108 25 3309 v 325 -77 a Fh(D)m(VIPS:)21 b(A)g(T)724 -58 y(E)764 -77 y(X)f(Dri)n(v)o(er)g(F)o(or)f(PostScript)836 238 y Fg(g)-225 695 y @beginspecial @setspecial 0 36 translate .05 .099 .95 { 27.4 0 translate gsave 0 0 moveto dup 90 mul rotate -10 -10 rmoveto 20 0 rlineto 0 20 rlineto -20 0 rlineto closepath gsave dup setgray fill grestore 1 exch sub setgray stroke grestore 27.4 0 translate } for @endspecial 441 770 a Ff(v)441 794 y(u)441 818 y(u)441 843 y(u)441 868 y(u)441 893 y(u)441 918 y(u)441 943 y(u)441 968 y(t)p 485 770 954 2 v -180 x(v)485 811 y(u)485 836 y(u)485 861 y(u)485 885 y(u)485 910 y(u)485 935 y(u)485 960 y(t)p 529 788 910 2 v 865 828 a Fe(a)12 b Fd(=)-7 b Fc(\))11 b Fe(b)g Fc(\000)-6 b(!)11 b Fe(c)p 534 846 900 2 v 534 880 a Fd(the)17 b(phase)f(of)f(the)i(mo)q(on)e(m)o(ultiplied)f(b)o(y)i (the)h(n)o(um)o(b)q(er)534 930 y(of)10 b(angels)h(that)g(can)g(dance)h (on)f(the)h(head)f(of)f(a)h(pin)f(while)534 980 y(the)18 b(ric)o(h)f(man)f(threads)i(the)g(needle)g(divided)e(b)o(y)h Fe(\031)h Fd(or)534 1030 y(some)c(other)g(transcenden)o(tal)i(n)o(um)o (b)q(er)-158 2836 y @beginspecial 18 @llx 18 @lly 577 @urx 814 @ury 2796 @rwi @setspecial @endspecial 1090 1185 a(T)m(o)i(run)g(this)h(test,)h(remo)o(v)o(e)e(a)g(\014le)h(called) f(m)o(test.ps)g(if)g(it)1049 1235 y(exists.)36 b(Then,)21 b(run)f(T)1429 1244 y(E)1452 1235 y(X)g(o)o(v)o(er)g(test.tex,)i(run)e (dvips)g(o)o(v)o(er)1049 1285 y(test.dvi,)10 b(sa)o(ving)g(the)h (output)f(in)g(a)g(\014le)g(test.ps.)18 b(Cop)o(y)10 b(test.ps)1049 1335 y(to)17 b(m)o(test.ps.)29 b(Run)17 b(dvips)g(o)o(v)o(er)g(test.dvi)h(again,)e(this)i(time)1049 1385 y(prin)o(ting)9 b(or)h(sa)o(ving)f(the)h(output,)h(as)f(y)o(ou)f (c)o(ho)q(ose.)18 b(\(Including)1049 1434 y(the)12 b(do)q(cumen)o(t)h (to)q(o)f(man)o(y)f(times)h(inside)g(itself)g(will)f(o)o(v)o(er\015o)o (w)1049 1484 y(the)j(virtual)f(memory)h(capacities)g(of)f(most)h(prin)o (ters.\))1090 1565 y(Some)i(things)g(to)g(c)o(hec)o(k)i(on)e(this)g (page.)25 b(First,)17 b(the)g(large)1049 1615 y(rules)c(surrounding)f (the)h(page)g(should)f(b)q(e)h(exactly)f(one)h(quar-)1049 1665 y(ter)i(inc)o(h)f(from)g(eac)o(h)h(b)q(order)h(\(assuming)e(a)g (8.5)g(b)o(y)g(11)g(page;)1049 1715 y(for)c(an)g(a4)g(page,)h(c)o (hange)g(the)g Fb(\\afourfalse)d Fd(to)j Fb(\\afourtrue)1049 1765 y Fd(on)i(line)h(16.\))1090 1845 y(Y)m(ou)f(should)g(see)i(a)e (title)g(at)g(the)h(top,)f(and)g(a)g(large)g(italic)f(g)1049 1895 y(under)f(that.)17 b(Then,)11 b(there)g(should)g(b)q(e)g(a)f(cen)o (tered)i(ro)o(w)e(of)g(ten)1049 1945 y(b)q(o)o(xes,)k(going)e(from)h (dark)h(to)g(ligh)o(t)f(gra)o(y)m(,)f(rotating)h(slo)o(wly)m(.)1090 2026 y(In)18 b(the)h(`equation')d(that)i(follo)o(ws,)f(c)o(hec)o(k)i (the)g(upp)q(er)g(left)1049 2076 y(corner)g(of)e(the)i(radical)f(signs) g(for)f(alignmen)o(t.)30 b(Also)18 b(c)o(hec)o(k)1049 2126 y(the)c(righ)o(t)g(arro)o(ws.)1090 2207 y(In)e(the)h(recursiv)o (ely)g(included)f(page)g(to)g(the)h(left,)f(note)g(ho)o(w)1049 2256 y(bad)g(the)i(bitmapp)q(ed)e(fon)o(ts)h(lo)q(ok)f(\(they)i(are)f (the)g(ones)h(under)1049 2306 y(the)g(radical,)f(and)g(indeed)i(this)f (text)g(itself.\))k(The)c(thin)g(rules)1049 2356 y(ma)o(y)g(disapp)q (ear)i(altogether.)23 b(This)16 b(p)q(oin)o(ts)f(out)g(the)h(resolu-) 1049 2406 y(tion)11 b(dep)q(endence)j(of)d(dvips)h(output;)g(this)g(is) g(an)f(unfortunate)1049 2456 y(necessit)o(y)23 b(of)d(using)h(bitmapp)q (ed)h(fon)o(ts.)40 b(The)22 b(P)o(ostScript)1049 2506 y(fon)o(ts,)13 b(on)h(the)g(other)h(hand,)e(should)g(scale)i(\014ne.) 1090 2586 y(Finally)m(,)c(at)h(the)i(b)q(ottom)e(of)g(the)h(page,)g(y)o (ou)f(will)f(see)j(some)1049 2636 y(tests)f(of)f(the)g(accen)o(ts)i(in) e(the)h(P)o(ostScript)f(fon)o(ts.)18 b(P)o(a)o(y)11 b(careful)1049 2686 y(atten)o(tion)18 b(to)g(the)h(w)o(ord)f(na)-5 b(\177)-16 b(\020v)o(e;)20 b(there)g(should)e(b)q(e)h(an)f(um-)1049 2736 y(laut)e(o)o(v)o(er)h(a)g(dotless)h(i.)27 b(The)17 b(text)h(should)e(read)i(\\Ic)o(h)f(w)o(ei\031)1049 2786 y(tats\177)-21 b(ac)o(hlic)o(h)15 b(nic)o(h)o(t)f(mehr)i(als)e(das.)22 b(D\032monic)14 b(sou\017)o(\023)-20 b(es)16 b(ha)o(v)o(e)1049 2836 y(no)d(r^)-21 b(ole)14 b(in)g(na)-5 b(\177)-16 b(\020v)o(e)13 b(\033uvres.)19 b(|\035sop's)14 b(\036uvres.")100 2963 y Fa(Ic)o(h)25 b(w)o(ei\337)i(tats)467 2962 y(\250)461 2963 y(ac)o(hlich)g(nic)o(ht)g(mehr)d(als)i(das.)48 b(D\346monic)25 b(souf)o(\003)1729 2962 y(\264)1725 2963 y(es)100 3027 y(hav)o(e)18 b(no)e(r)363 3026 y(\210)357 3027 y(ole)i(in)f(na)595 3026 y(\250)597 3027 y(\021v)o(e)h(\234uvres.)24 b(\227\306sop')-5 b(s)17 b(\214uvres.)p 2080 3108 25 3309 v -225 3133 2331 25 v eop end %%Trailer userdict /end-hook known{end-hook}if %%EOF %%EndDocument @endspecial 1090 1185 a(T)m(o)i(run)g(this)h(test,)h(remo)o(v)o(e)e(a) g(\014le)h(called)f(m)o(test.ps)g(if)g(it)1049 1235 y(exists.)36 b(Then,)21 b(run)f(T)1429 1244 y(E)1452 1235 y(X)g(o)o(v)o(er)g (test.tex,)i(run)e(dvips)g(o)o(v)o(er)1049 1285 y(test.dvi,)10 b(sa)o(ving)g(the)h(output)f(in)g(a)g(\014le)g(test.ps.)18 b(Cop)o(y)10 b(test.ps)1049 1335 y(to)17 b(m)o(test.ps.)29 b(Run)17 b(dvips)g(o)o(v)o(er)g(test.dvi)h(again,)e(this)i(time)1049 1385 y(prin)o(ting)9 b(or)h(sa)o(ving)f(the)h(output,)h(as)f(y)o(ou)f (c)o(ho)q(ose.)18 b(\(Including)1049 1434 y(the)12 b(do)q(cumen)o(t)h (to)q(o)f(man)o(y)f(times)h(inside)g(itself)g(will)f(o)o(v)o(er\015o)o (w)1049 1484 y(the)j(virtual)f(memory)h(capacities)g(of)f(most)h(prin)o (ters.\))1090 1565 y(Some)i(things)g(to)g(c)o(hec)o(k)i(on)e(this)g (page.)25 b(First,)17 b(the)g(large)1049 1615 y(rules)c(surrounding)f (the)h(page)g(should)f(b)q(e)h(exactly)f(one)h(quar-)1049 1665 y(ter)i(inc)o(h)f(from)g(eac)o(h)h(b)q(order)h(\(assuming)e(a)g (8.5)g(b)o(y)g(11)g(page;)1049 1715 y(for)c(an)g(a4)g(page,)h(c)o (hange)g(the)g Fb(\\afourfalse)d Fd(to)j Fb(\\afourtrue)1049 1765 y Fd(on)i(line)h(16.\))1090 1845 y(Y)m(ou)f(should)g(see)i(a)e (title)g(at)g(the)h(top,)f(and)g(a)g(large)g(italic)f(g)1049 1895 y(under)f(that.)17 b(Then,)11 b(there)g(should)g(b)q(e)g(a)f(cen)o (tered)i(ro)o(w)e(of)g(ten)1049 1945 y(b)q(o)o(xes,)k(going)e(from)h (dark)h(to)g(ligh)o(t)f(gra)o(y)m(,)f(rotating)h(slo)o(wly)m(.)1090 2026 y(In)18 b(the)h(`equation')d(that)i(follo)o(ws,)f(c)o(hec)o(k)i (the)g(upp)q(er)g(left)1049 2076 y(corner)g(of)e(the)i(radical)f(signs) g(for)f(alignmen)o(t.)30 b(Also)18 b(c)o(hec)o(k)1049 2126 y(the)c(righ)o(t)g(arro)o(ws.)1090 2207 y(In)e(the)h(recursiv)o (ely)g(included)f(page)g(to)g(the)h(left,)f(note)g(ho)o(w)1049 2256 y(bad)g(the)i(bitmapp)q(ed)e(fon)o(ts)h(lo)q(ok)f(\(they)i(are)f (the)g(ones)h(under)1049 2306 y(the)g(radical,)f(and)g(indeed)i(this)f (text)g(itself.\))k(The)c(thin)g(rules)1049 2356 y(ma)o(y)g(disapp)q (ear)i(altogether.)23 b(This)16 b(p)q(oin)o(ts)f(out)g(the)h(resolu-) 1049 2406 y(tion)11 b(dep)q(endence)j(of)d(dvips)h(output;)g(this)g(is) g(an)f(unfortunate)1049 2456 y(necessit)o(y)23 b(of)d(using)h(bitmapp)q (ed)h(fon)o(ts.)40 b(The)22 b(P)o(ostScript)1049 2506 y(fon)o(ts,)13 b(on)h(the)g(other)h(hand,)e(should)g(scale)i(\014ne.) 1090 2586 y(Finally)m(,)c(at)h(the)i(b)q(ottom)e(of)g(the)h(page,)g(y)o (ou)f(will)f(see)j(some)1049 2636 y(tests)f(of)f(the)g(accen)o(ts)i(in) e(the)h(P)o(ostScript)f(fon)o(ts.)18 b(P)o(a)o(y)11 b(careful)1049 2686 y(atten)o(tion)18 b(to)g(the)h(w)o(ord)f(na)-5 b(\177)-16 b(\020v)o(e;)20 b(there)g(should)e(b)q(e)h(an)f(um-)1049 2736 y(laut)e(o)o(v)o(er)h(a)g(dotless)h(i.)27 b(The)17 b(text)h(should)e(read)i(\\Ic)o(h)f(w)o(ei\031)1049 2786 y(tats\177)-21 b(ac)o(hlic)o(h)15 b(nic)o(h)o(t)f(mehr)i(als)e(das.)22 b(D\032monic)14 b(sou\017)o(\023)-20 b(es)16 b(ha)o(v)o(e)1049 2836 y(no)d(r^)-21 b(ole)14 b(in)g(na)-5 b(\177)-16 b(\020v)o(e)13 b(\033uvres.)19 b(|\035sop's)14 b(\036uvres.")100 2963 y Fa(Ic)o(h)25 b(w)o(ei\337)i(tats)467 2962 y(\250)461 2963 y(ac)o(hlich)g(nic)o(ht)g(mehr)d(als)i(das.)48 b(D\346monic)25 b(souf)o(\003)1729 2962 y(\264)1725 2963 y(es)100 3027 y(hav)o(e)18 b(no)e(r)363 3026 y(\210)357 3027 y(ole)i(in)f(na)595 3026 y(\250)597 3027 y(\021v)o(e)h(\234uvres.)24 b(\227\306sop')-5 b(s)17 b(\214uvres.)p 2080 3108 25 3309 v -225 3133 2331 25 v eop end %%Trailer userdict /end-hook known{end-hook}if %%EOF dvipsk_TexLive-2009-stripped/testdata/pfbincl.xps0000644000175000017500000103666111372532227022075 0ustar uwabamiuwabami%!PS-Adobe-2.0 %%Creator: dvips(k) 5.97 Copyright 2008 Radical Eye Software %%Title: ./testdata/pfbincl.xdv %%CreationDate: Thu May 28 15:36:38 2009 %%Pages: 1 %%PageOrder: Ascend %%BoundingBox: 0 0 596 842 %%DocumentFonts: CMR10 %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: ./dvips -D 300 %+ ./testdata/pfbincl.xdv -o %+ pfbincl.ps %DVIPSParameters: dpi=300, compressed %DVIPSSource: TeX output 2009.05.28:1334 %%BeginProcSet: texc.pro 0 0 %! /TeXDict 300 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}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{dup dup 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 /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 sub]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N /cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add /gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{ dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1 adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2 idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg} {adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{ adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]dup{bind pop}forall N /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 /V matrix currentmatrix dup 1 get dup mul exch 0 get dup 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 /IE 256 array N 2 string 0 1 255{IE S dup 360 add 36 4 index cvrs cvn put}for pop 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V{}B /RV statusdict begin /product where{pop false[ (Display)(NeXT)(LaserWriter 16/600)]{dup length product length le{dup 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 rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg rlineto rulex neg 0 rlineto fill grestore}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{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]/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[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{/Encoding exch def}def end %%EndProcSet %%BeginProcSet: special.pro 0 0 %! 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 0 N /rwiSeen false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{ /CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{ 10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict /md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end 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 0 setgray} N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin /magscale true 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 count /ocount X /dcount countdictstack N}N /@setspecial {CLIP 1 eq{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 rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath }N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{ end}repeat grestore 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 %%BeginFont: CMR10 %!PS-AdobeFont-1.1: CMR10 1.00B %%CreationDate: 1992 Feb 19 19:54:52 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00B) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 46 /period put dup 49 /one put dup 65 /A put dup 97 /a put readonly def /FontBBox{-251 -250 1009 969}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C 295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75 409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C 4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF 2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E 0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008 24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B 43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575 5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC 96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3 7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3A3F5227524C4A2F39 CA1A051624664D7F64567C9DC21A376ECD0302F3976D8AC8880CCF3EEAC4658C E24F7DEA160AE48B967273A51E56A298EAC9BA292CC9230BF283B611F1467F9E 3A95B26BD7F0E7AA0A2C5C7D279051FAB8406A0D53459138C37E31BD451B61A9 450664751BBAF49D13B3A98CF599C671ED2663E2CCAA6A5D50DC4FD4790CC8A4 85CD0B565AD1447A7FE4282BA1294BCEEA64B7B3BFDC1BCEE990AA8B26441324 A228BF89C162EB68EA6DB15691F445DD18C42150008FFFDC9DA85E46A319CEB2 46DE1E57E1B738ADF6FD49E6A53BF48C6C2A730AE985B6EA0D59D1D2749D40D9 52A27047D6A5FE354C7E876D3A2E7E499D9D4104762FD19BA0526D38D1F12B5E 1A22FE803AFB2171FE5A3E58B2FB78175770EC2140DC00FD5F6F1725AE16D44B 8FE84C3E122D4EBCE7ABB9AD43927837F9B19E1BC01AD5D9081E247BA5358E0A 1B05164210F4453883898DE5BA43091340BF27979656F1A784A31205E7FCD7CD AE6896C7ADE22B3A50C3275885620061EB2DF4472122948167369C32BB614830 B33AEFDA5E40DF238862E45E699A220A3E39C772AB771A74EB93E3DAC78B1A95 2BCB3C63ABB68AF0DFE853171B0D1612A3DFA5264D6B64371277ABFABFF62611 EF483C9711E1B0D84F44171C48CF754AB1E627EEC7FB8DCB92B7BB4C8AE7AE77 C7BF3544E99D2B7E139C4371DBF46D0F06053DF9D12BF3C5837E4B6632FF6D53 076BCA820F31513270C66D023F327DC3897E4DB66CA9AB7408DC9222E1E405A7 ACDF23B73F6E52ED2F1DD38A57AB9AA6FC582E9A9B3EF96AAC484E58D9063DF8 846397C4002392AC424665DA8863744609E7D1D6E64A866955FDBDEDBE874E95 0F44B5510AA5DCCF129D5478DCDDE23D488CECE5733E90D1CCDA927170EDA7DE 5F3FFCE4DA65F284086887575C6B9C7C0A4301A9661A0FB87BBE1A085E7CC196 1E29B7A20F9F27C8553011E82D7929FDC9CE8EBB647CFC4DD5DAC8C5B077D8A0 70F49EE5C3857DCDA2BAF6E0A56922B78F78B1203F35C40672603327E5607BE5 72C04A7465C04E129C18E53ECC3FEED26EEBEE5DA303409AAD9B168191F02C01 19FCE5924F53DD644CCF860B18B364F5E87C56392DF1070CC4C62DBFEF7FAA14 6D42DA2B954D4D9967D6D73B860CDEA52A982789A5778758241D18A5CAD7CB6B 92459C050FC765DF1C525500D5FBC1F7AF391E97DA1442522781E594E54686FE 897E9AD50D3CFDDE2F3D981E8DD6C30DF1BDFBFEA6FCF2E1410C026A478BDD5D 1BF3F35E404FE784161CAFD9F5BEC956452AF2DD4282747641C524D246471A11 0148A5FF37CD998FCDC0C29B7E827AD294ACEBFB0A4F9519712365BADFD65089 C2D4D2B6EC41DF3E227F6C5784D0A1BF690E6FD4B2299901451AC56BD90E7D90 209C4CB6E359DECE4B1EAAF0AC78AEEE735FDB9EC8D72A85BA998263AB4EABE6 CA1A81AF095CFB7FAF0BD1B47A54F4048461D876640D9B7809C4388F8D68F56E 34A158752237C634CBC5B804D5D5EB1E4FE13ACC3272AA3AA02295E5F62D9B8C 1C7FCF513906F09288AFACF88B7574395FB57C2119DDB8FE9BFBBE06FAEB1B28 242A48BDC8725E93EE1AE270936078D3910CCD55B063927BD2D5ACF20885133E 8E8CF472035BBB13745CEDDA9E16751982B9EE54C3AA812A3F96DAFE4C1BE830 9FECF9BBE54467B1D2936D682BBF715A479A341863503A28236F4920146711B1 2632DBBA7FD7E0ED130B5DADA63DED3C2C6D8C9C333D7734D41E730BAE16E866 A50DD23152E45755C20647DAA5F9F248C36B18A4C707216BDB381A1CC05569E4 34553D6397A76687C349E27C4A1F9C920D01 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont TeXDict begin 39158280 55380996 1000 300 300 (./testdata/pfbincl.xdv) @start /Fa 158[21 31[31 15[21 2[12 46[{}4 41.511 /CMR10 rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 300dpi TeXDict begin %%PaperSize: A4 end %%EndSetup %%Page: 1 1 TeXDict begin 1 0 bop 320 262 a Fa(A)12 b(a)h(a)f(a)h(a)f(a)h(a)f(a)h (a)f(a)h(a)f(a)h(a)f(a)h(a)f(a)h(a)f(a)g(a)h(a)f(a)h(a)f(a)h(a)f(a)h(a) f(a)h(a)f(a)h(a)f(a)h(a)f(a)g(a)h(a)f(a)h(a)f(a)h(a)f(a)h(a)257 311 y(a)g(a)g(a)f(a)h(a)f(a)h(a)g(a)f(a)h(a)f(a)h(a)g(a)f(a)h(a)f(a)h (a)g(a)f(a)h(a)f(a)h(a)g(a)f(a)h(a)f(a)h(a)g(a)f(a)h(a)f(a)h(a)g(a)f(a) h(a)g(a)f(a)h(a)f(a)h(a)g(a)f(a)h(a)257 361 y(a)g(a)g(a)g(a)f(a)h(a)g (a)g(a)f(a)h(a)g(a)g(a)g(a)f(a)h(a)g(a)g(a)f(a)h(a)g(a)g(a.)k(A)c(a)g (a)g(a)g(a)f(a)h(a)g(a)g(a)f(a)h(a)g(a)g(a)f(a)h(a)g(a)g(a)f(a)h(a)g(a) g(a)257 1703 y @beginspecial 1 @llx -186 @lly 347 @urx 124 @ury 3460 @rwi @setspecial %%BeginDocument: pfbincl.eps %!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(R) 8.0 %%AI8_CreatorVersion: 12.0.1 %%For: (len) (ams) %%Title: (condensation-of-zeta-functions.eps) %%CreationDate: 4/25/07 1:33 PM %%BoundingBox: 1 -186 347 124 %%HiResBoundingBox: 1.40039 -185.0195 346.4609 123.5684 %%DocumentProcessColors: Black %%DocumentFonts: EuclidSymbol %%+ Times-Roman %%+ TimesNewRomanPSMT %%DocumentSuppliedFonts: EuclidSymbol %%+ Times-Roman %%+ TimesNewRomanPSMT %%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0 %%+ procset Adobe_screens_AI5 1.0 0 %%+ procset Adobe_typography_AI5 1.0 1 %%+ procset AGM_Gradient 1.0 0 %%+ procset Adobe_ColorImage_AI6 1.3 0 %%+ procset Adobe_Illustrator_AI5 1.3 0 %%+ procset Adobe_pattern_AI5 1.0 0 %%+ procset Adobe_cshow 2.0 8 %%+ procset Adobe_shading_AI8 1.0 0 %AI5_FileFormat 4.0 %AI3_ColorUsage: Color %AI3_IncludePlacedImages %AI7_ImageSettings: 1 %%CMYKCustomColor: 1 1 1 1 ([Registration]) %%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) %%+ Options: 1 16 0 1 1 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 2 3 4 %%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 -1 -1 () %AI3_TemplateBox: 174.4004 -118.9033 174.4004 -118.9033 %AI3_TileBox: -114.0996 -478.4033 461.9004 274.7168 %AI3_DocumentPreview: Header %AI5_ArtSize: 612 792 %AI5_RulerUnits: 0 %AI5_ArtFlags: 0 0 0 1 0 0 0 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 2 %AI8_OpenToView: -198.0996 457.5967 1 975 750 18 1 1 72 73 0 0 %AI5_OpenViewLayers: 67 %%PageOrigin:-114.0996 -475.4033 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %CLEANEPS: Wed Aug 29 14:21:48 EDT 2007 for ltd (cleaneps v2.2.3) %CLEANEPS_BINARY_WARNING: yes %%EndComments %%BeginProlog %%BeginResource: procset Adobe_level2_AI5 1.2 0 %%Title: (Adobe Illustrator (R) Version 5.0 Level 2 Emulation) %%Version: 1.2 0 %%CreationDate: (04/10/93) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) userdict /Adobe_level2_AI5 26 dict dup begin put /packedarray where not { userdict begin /packedarray { array astore readonly } bind def /setpacking /pop load def /currentpacking false def end 0 } if pop userdict /defaultpacking currentpacking put true setpacking /initialize { Adobe_level2_AI5 begin } bind def /terminate { currentdict Adobe_level2_AI5 eq { end } if } bind def mark /setcustomcolor where not { /findcmykcustomcolor { (AI8_CMYK_CustomColor) 6 packedarray } bind def /findrgbcustomcolor { (AI8_RGB_CustomColor) 5 packedarray } bind def /setcustomcolor { exch aload pop dup (AI8_CMYK_CustomColor) eq { pop pop 4 { 4 index mul 4 1 roll } repeat 5 -1 roll pop setcmykcolor } { dup (AI8_RGB_CustomColor) eq { pop pop 3 { 1 exch sub 3 index mul 1 exch sub 3 1 roll } repeat 4 -1 roll pop setrgbcolor } { pop 4 { 4 index mul 4 1 roll } repeat 5 -1 roll pop setcmykcolor } ifelse } ifelse } def } if /setAIseparationgray { false setoverprint 0 setgray /setseparationgray where{ pop setseparationgray }{ /setcolorspace where{ pop [/Separation (All) /DeviceCMYK {dup dup dup}] setcolorspace 1 exch sub setcolor }{ setgray }ifelse }ifelse } def /gt38? mark {version cvr cvx exec} stopped {cleartomark true} {38 gt exch pop} ifelse def userdict /deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt put userdict /level2? systemdict /languagelevel known dup { pop systemdict /languagelevel get 2 ge } if put /level2ScreenFreq { begin 60 HalftoneType 1 eq { pop Frequency } if HalftoneType 2 eq { pop GrayFrequency } if HalftoneType 5 eq { pop Default level2ScreenFreq } if end } bind def userdict /currentScreenFreq level2? {currenthalftone level2ScreenFreq} {currentscreen pop pop} ifelse put level2? not { /setcmykcolor where not { /setcmykcolor { exch .11 mul add exch .59 mul add exch .3 mul add 1 exch sub setgray } def } if /currentcmykcolor where not { /currentcmykcolor { 0 0 0 1 currentgray sub } def } if /setoverprint where not { /setoverprint /pop load def } if /selectfont where not { /selectfont { exch findfont exch dup type /arraytype eq { makefont } { scalefont } ifelse setfont } bind def } if /cshow where not { /cshow { [ 0 0 5 -1 roll aload pop ] cvx bind forall } bind def } if } if cleartomark /anyColor? { add add add 0 ne } bind def /testColor { gsave setcmykcolor currentcmykcolor grestore } bind def /testCMYKColorThrough { testColor anyColor? } bind def userdict /composite? 1 0 0 0 testCMYKColorThrough 0 1 0 0 testCMYKColorThrough 0 0 1 0 testCMYKColorThrough 0 0 0 1 testCMYKColorThrough and and and put composite? not { userdict begin gsave /cyan? 1 0 0 0 testCMYKColorThrough def /magenta? 0 1 0 0 testCMYKColorThrough def /yellow? 0 0 1 0 testCMYKColorThrough def /black? 0 0 0 1 testCMYKColorThrough def grestore /isCMYKSep? cyan? magenta? yellow? black? or or or def /customColor? isCMYKSep? not def end } if end defaultpacking setpacking %%EndResource %%BeginResource: procset Adobe_screens_AI5 1.2 0 %%Title: (Adobe Illustrator (R) Version 5.0 Custom Halftone Screens ProcSet) %%Version: 1.2 0 %%CreationDate: (03/24/93) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) userdict /defaultpacking currentpacking put true setpacking systemdict begin userdict /Adobe_screens_AI5 15 dict dup begin put /initialize { Adobe_screens_AI5 begin /screenid deviceDPI 600 gt composite? not or { -1 } { deviceDPI currentScreenFreq dup dup 60 ge exch 150 le and deviceDPI 300 le and { pop 60 } if div 1.41421 div 0.5 add cvi } ifelse def 2 screenid eq { /customsize 16 def /customdata /customdata2 def setcustomscreen } if 3 screenid eq { /customsize 24 def /customdata /customdata3 def setcustomscreen } if 4 screenid eq { /customsize 16 def /customdata /customdata4 def setcustomscreen } if 5 screenid eq { /customsize 20 def /customdata /customdata5 def setcustomscreen } if 6 screenid eq { /customsize 24 def /customdata /customdata6 def setcustomscreen } if 7 screenid eq { /customsize 28 def /customdata /customdata7 def setcustomscreen } if 8 screenid eq { /customsize 16 def /customdata /customdata8 def setcustomscreen } if } def /terminate { currentdict Adobe_screens_AI5 eq { end } if } def /setcustomscreen { deviceDPI customsize div 0 { 1 add 2 div customsize mul cvi exch 1 add 2 div customsize mul cvi exch customsize mul add customdata load exch get 256 div } setscreen } def /customdata2 28 28 mul string def currentfile customdata2 readhexstring 4180E8694988E2634382EA6B4B8AE061A01939C8A81737C2A21B3BCAAA1636C0 F8795998F6775796FA7B5B9AF57656952ED8B80727D6B60F2FDABA0626D5B50E 4E8DE6674786EE6F4F8EE5664685ED6EAD1434C6A61F3FCEAE1232C5A51E3ECD F3745493FE7F5F9EF1725291FD7E5E9D24D3B30C2CDEBE0222D1B10A2ADDBD04 4483EB6C4C8BE1624281E96A4A89E364A31C3CCBAB1535C1A11A3AC9A91838C3 FB7C5C9BF4755594F97A5A99F778589730DBBB0525D4B40D2DD9B90828D7B710 508FE4654584EC6D4D8CE7684887EF70AF1131C4A41D3DCCAC1333C7A72040CF F0715190FC7D5D9CF2735392FF80609F21D0B00929DCBC0323D2B20B2BDFBF01 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 pop pop /customdata3 28 28 mul string def currentfile customdata3 readhexstring 011DC7F5E73D0421CBF3E43A021EC8F6E83E0522CCF2E43A2B648BC4A0762F68 8AC39E732C658CC5A177306989C29D72D5B6521A6192D9B55219608FD6B6531B 6193DAB451185F8FFCEE440C28D2FCED430B27D1FDEF450C29D3FBEC420A26D0 BEA77D366F83BCA77C356E87BFA87E377082BBA67B346D86145B99E0AE4A1259 98DFB14E155C9AE1AD4A115897DEB04D0623CDF4E63C0420CAF8EA400723CDF4 E53B031FC9F7E93F316988C19F752E678EC6A378326A88C09F742D668DC6A278 DBB350175E91D8B8551C6395DCB24F165D90D7B7541C6294FAEC420925CFFFF1 470E2BD5F9EB410824CEFEF0460D2AD4BAA57A336C85BEAA80397180B9A47933 6B84BDA97F387181105797DDAF4C145A9CE3AB480F5696DDAE4B13599BE2AC49 021EC8F6E83E0522CCF2E43A011DC7F5E73D0421CBF3E43A2C658CC5A1773069 89C29D722B648BC4A0762F688AC39E73D6B6531B6193DAB451185F8FD5B6521A 6192D9B55219608FFDEF450C29D3FBEC420A26D0FCEE440C28D2FCED430B27D1 BFA87E377082BBA67B346D86BEA77D366F83BCA77C356E87155C9AE1AD4A1158 97DEB04D145B99E0AE4A125998DFB14E0723CDF4E53B031FC9F7E93F0623CDF4 E63C0420CAF8EA40326A88C09F742D668DC6A278316988C19F752E678EC6A378 DCB24F165D90D7B7541C6294DBB350175E91D8B8551C6395F9EB410824CEFEF0 460D2AD4FAEC420925CFFFF1470E2BD5B9A479336B84BDA97F387181BAA57A33 6C85BEAA803971800F5696DDAE4B13599BE2AC49105797DDAF4C145A9CE3AB48 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 pop pop /customdata4 28 28 mul string def currentfile customdata4 readhexstring 1139B8E0FAD2531B133BBAE2F8D05119417180A6AE9A7B4B437382A5AD987949 C08867272F6F92CAC28A66262E6E90C8E8DE5F070F37B6F2EADD5E060E36B5F0 FED6571F173FBEE6FDD5561E163EBDE5AB9E7F4F477786A1A99D7E4E467685A3 2C6C96CEC68E62222A6A95CDC58D64240C34B3F6EED95A020A32B1F5EDDB5C04 143CBBE3F9D1521A123AB9E1FBD3541C447483A4AC997A4A427281A7AF9B7C4C C38B65252D6D91C9C1896828307093CBEBDC5D050D35B4F1E9DF60081038B7F3 FCD4551D153DBCE4FFD758201840BFE7A89C7D4D457584A2AA9F8050487887A0 296994CCC48C63232B6B97CFC78F61210931B0F4ECDA5B030B33B2F7EFD85901 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 pop pop /customdata5 28 28 mul string def currentfile customdata5 readhexstring 010B34C3EBFCF7CE3F16020C35C4EDFBF6CD3E15102552A4D6EADDB5632B1126 54A5D5EADCB3622A3958768499C19E8C7C5E3A59778498C19D8B7B5DC8A99370 47334C7587AFC9AA936F46324B7485AEF1E5BC6B1E0A2351A3D8F2E4BC6A1E09 2351A2D7FFF9D14219050F38C6EFFEF9D04118040E37C6EFE8E0B7662D142856 A8D3E7DFB7652D132856A7D4BF9C8E7F603D5B7A8195BE9A8E7E603C5B798297 314A7389B2CCAD906D442F497289B1CBAC926E4508214FA1DBF4E2B9671B0720 4EA0DAF4E3BA691C030D36C5EDFBF6CD3F16010C34C3ECFDF8CF4017122654A6 D4E9DDB4622A112553A5D6EBDEB5642C3B59788397C09C8B7C5D3A58778599C2 9E8C7D5FCAAB926E46314B7486AFC8AA947048334D7587B0F2E4BB691D082250 A1D8F1E6BD6B1F0A2452A3D9FDF8CF4118030E36C5EEFFFAD1421A050F38C7F0 E6DFB6642C132755A7D3E8E1B8662E152957A8D2BE9A8D7E5F3B5A798296BF9B 8F80613D5C7B80952F487188B1CAAC916D443049728AB3CCAE906C43061F4D9F DAF3E2BA681C07214FA0DBF5E1B8671A00000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 pop pop /customdata6 28 28 mul string def currentfile customdata6 readhexstring 081A44B6E0F2FDECC150250C091B45B6E1F3FCEBC04F240C1D336199C7D8DCD3 A56C37221E33619AC8D7DBD2A46B36214864798091AEB1958C7E694C49657A81 90ADB0948B7D684BB99D8475593C405C7888A1BEBA9E8574583B3F5B7888A0BD E4CBAA712E1215326098CFE8E4CCA9712D1114315F97CEE7F5F1C6552B040719 43B5DFFAF6F0C6542A03061842B4DEF9FFEDC352270E0B1C47B8E3F4FEECC251 260D0A1C46B7E2F4DAD5A76E39232035639CCAD5D9D4A66D38231F34629BC9D6 AF938E806A4E4A677C838FABAE928D7F694D4A667B828FAC3E5A778AA3BFBC9F 8772563A3D597689A2BEBB9F8673573A14305E97D1EAE6CDA76F2B0F132F5D96 D0E9E5CDA8702C10051742B3DDFCF8EEC4522801041641B2DDFBF7EFC5532902 091B45B6E1F3FCEBC04F240C081A44B6E0F2FDECC150250C1E33619AC8D7DBD2 A46B36211D336199C7D8DCD3A56C372249657A8190ADB0948B7D684B48647980 91AEB1958C7E694CBA9E8574583B3F5B7888A0BDB99D8475593C405C7888A1BE E4CCA9712D1114315F97CEE7E4CBAA712E1215326098CFE8F6F0C6542A030618 42B4DEF9F5F1C6552B04071943B5DFFAFEECC251260D0A1C46B7E2F4FFEDC352 270E0B1C47B8E3F4D9D4A66D38231F34629BC9D6DAD5A76E39232035639CCAD5 AE928D7F694D4A667B828FACAF938E806A4E4A677C838FAB3D597689A2BEBB9F 8673573A3E5A778AA3BFBC9F8772563A132F5D96D0E9E5CDA8702C1014305E97 D1EAE6CDA76F2B0F041641B2DDFBF7EFC5532902051742B3DDFCF8EEC4522801 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 pop pop /customdata7 28 28 mul string def currentfile customdata7 readhexstring 01061B44B7E1F5FEFBE6BD4A210C01071B45B8E1F6FDFBE6BC4A200B09132A54 A7D1EAF5EED9B05D331609142B55A8D2EAF4EED9AF5C32161D2D3D6993C1CBE0 CEC59B7140301E2E3D6A93C0CADFCDC49A713F3047576C7B828DA2B6A48F867E 6F5A48576C7C828CA1B6A38F867E6E59BAAA958A78634E4451667A8498ADBAAB 968977624E4350657A8398ADE3D4C99F7539251A273C6892C2D7E4D4C89E7539 241A273B6891C1D6F8F2DDB460371005122A53A7D0ECF9F2DDB360360F051229 53A6D0EBFFFDE8BE4C220D03081D46B9E3F7FFFCE7BD4B210D02071C46B8E2F7 F3F0DBB15E34180B152C56A9D3E8F3EFDAB05D34170A142C55A9D2E9DFCCC69C 7341321F2F3F6B94BFC9DECCC59C7241311F2E3E6A94BFCAB5A38E8780705B49 596D7D808BA0B4A28D877F6F5B48586D7C818BA043506479859AAFBCAC978876 614C424F64798499AEBBAB968977624D19263B6791C3D8E5D6C79D7337231825 3A6690C3D7E5D5C79E74382304112952A5CFEDFAF0DBB25E350E03102851A5CE ECF9F1DCB25F360E01071B45B8E1F6FDFBE6BC4A200B01061B44B7E1F5FEFBE6 BD4A210C09142B55A8D2EAF4EED9AF5C321609132A54A7D1EAF5EED9B05D3316 1E2E3D6A93C0CADFCDC49A713F301D2D3D6993C1CBE0CEC59B71403048576C7C 828CA1B6A38F867E6E5947576C7B828DA2B6A48F867E6F5ABAAB968977624E43 50657A8398ADBAAA958A78634E4451667A8498ADE4D4C89E7539241A273B6891 C1D6E3D4C99F7539251A273C6892C2D7F9F2DDB360360F05122953A6D0EBF8F2 DDB460371005122A53A7D0ECFFFCE7BD4B210D02071C46B8E2F7FFFDE8BE4C22 0D03081D46B9E3F7F3EFDAB05D34170A142C55A9D2E9F3F0DBB15E34180B152C 56A9D3E8DECCC59C7241311F2E3E6A94BFCADFCCC69C7341321F2F3F6B94BFC9 B4A28D877F6F5B48586D7C818BA0B5A38E8780705B49596D7D808BA0424F6479 8499AEBBAB968977624D43506479859AAFBCAC978876614C18253A6690C3D7E5 D5C79E74382319263B6791C3D8E5D6C79D73372303102851A5CEECF9F1DCB25F 360E04112952A5CFEDFAF0DBB25E350E pop pop /customdata8 28 28 mul string def currentfile customdata8 readhexstring 050F2747B6D6EEF8FEF4DCBC4D2D1507111D375F9EC6E0E9EBE6CCA4653D1F13 2939556F8EA8C1D1D3C3AE9475573B2B4961717D808999B1B39B8B867F73634B B8A090827A6A5A42445C6C7C8492A2BAD8C8AA97785232222434546E8DACCADA F0E2CFA768401A0A0C1C365E9DC5E4F2FAF7DFBF50301802040E2646B5D5EDFC FFF5DDBD4E2E160806102848B7D7EFF9EAE7CDA5663E2014121E38609FC7E1E8 D2C2AF9576583C2C2A3A56708FA9C0D0B29A8A878074644C4A62727E818898B0 435B6B7B8593A3BBB9A19183796959412333536D8CADCBDBD9C9AB9677513121 0B1B355D9CC4E5F3F1E3CEA6673F1909030D2545B4D4ECFDFBF6DEBE4F2F1701 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 pop pop end end defaultpacking setpacking %%EndResource %%BeginResource: procset Adobe_typography_AI5 1.0 1 %%Title: (Typography Operators) %%Version: 1.0 1 %%CreationDate:(6/10/1996) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_typography_AI5 68 dict dup begin put /initialize { begin begin Adobe_typography_AI5 begin Adobe_typography_AI5 { dup xcheck { bind } if pop pop } forall end end end Adobe_typography_AI5 begin } def /terminate { currentdict Adobe_typography_AI5 eq { end } if } def /modifyEncoding { /_tempEncode exch ddef /_pntr 0 ddef { counttomark -1 roll dup type dup /marktype eq { pop pop exit } { /nametype eq { _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll put } { /_pntr exch ddef } ifelse } ifelse } loop _tempEncode } def /havefont { systemdict /languagelevel known { /Font resourcestatus dup { exch pop exch pop } if } { systemdict /FontDirectory get 1 index known { pop true } { systemdict /fileposition known { dup length 6 add exch Ss 6 250 getinterval cvs pop Ss exch 0 exch getinterval status { pop pop pop pop true } { false } ifelse } { pop false } ifelse } ifelse } ifelse } def /TE { StandardEncoding 256 array copy modifyEncoding /_nativeEncoding exch def } def /subststring { exch 2 index exch search { exch pop exch dup () eq { pop exch concatstring } { 3 -1 roll exch concatstring concatstring } ifelse exch pop true } { pop pop false } ifelse } def /concatstring { 1 index length 1 index length 1 index add string dup 0 5 index putinterval dup 2 index 4 index putinterval 4 1 roll pop pop pop } def % /TZ { dup type /arraytype eq { /_wv exch def } { /_wv 0 def } ifelse /_useNativeEncoding exch def 2 index havefont { 3 index 255 string cvs dup (_Symbol_) eq { pop 2 index findfont } { 1 index 0 eq { dup length 1 sub 1 exch getinterval cvn findfont } { pop 2 index findfont } ifelse } ifelse } { dup 1 eq { 2 index 64 string cvs dup (-90pv-RKSJ-) (-83pv-RKSJ-) subststring { exch pop dup havefont { findfont false } { pop true } ifelse } { pop dup (-90ms-RKSJ-) (-Ext-RKSJ-) subststring { exch pop dup havefont { findfont false } { pop true } ifelse } { pop pop true } ifelse } ifelse { 1 index 1 eq { /Ryumin-Light-Ext-RKSJ-V havefont {/Ryumin-Light-Ext-RKSJ-V} {/Courier} ifelse } { /Ryumin-Light-83pv-RKSJ-H havefont {/Ryumin-Light-83pv-RKSJ-H} {/Courier} ifelse } ifelse findfont [1 0 0.5 1 0 0] makefont } if } { /Courier findfont } ifelse } ifelse _wv type /arraytype eq { _wv makeblendedfont } if dup length 10 add dict begin mark exch { 1 index /FID ne { def } if cleartomark mark } forall pop /FontScript exch def /FontDirection exch def /FontRequest exch def /FontName exch def counttomark 0 eq { 1 _useNativeEncoding eq { /Encoding _nativeEncoding def } if cleartomark } { /Encoding load 256 array copy modifyEncoding /Encoding exch def } ifelse FontName currentdict end definefont pop } def /tr { _ax _ay 3 2 roll } def /trj { _cx _cy _sp _ax _ay 6 5 roll } def /a0 { /Tx { dup currentpoint 3 2 roll tr _psf newpath moveto tr _ctm _pss } ddef /Tj { dup currentpoint 3 2 roll trj _pjsf newpath moveto trj _ctm _pjss } ddef } def /a1 { W B } def /e0 { /Tx { tr _psf } ddef /Tj { trj _pjsf } ddef } def /e1 { W F } def /i0 { /Tx { tr sp } ddef /Tj { trj jsp } ddef } def /i1 { W N } def /o0 { /Tx { tr sw rmoveto } ddef /Tj { trj swj rmoveto } ddef } def /r0 { /Tx { tr _ctm _pss } ddef /Tj { trj _ctm _pjss } ddef } def /r1 { W S } def /To { pop _ctm currentmatrix pop } def /TO { iTe _ctm setmatrix newpath } def /Tp { pop _tm astore pop _ctm setmatrix _tDict begin /W { } def /h { } def } def /TP { end iTm 0 0 moveto } def /Tr { _render 3 le { currentpoint newpath moveto } if dup 8 eq { pop 0 } { dup 9 eq { pop 1 } if } ifelse dup /_render exch ddef _renderStart exch get load exec } def /iTm { _ctm setmatrix _tm concat _shift aload pop _lineorientation 1 eq { exch } if translate _scale aload pop _lineorientation 1 eq _yokoorientation 1 eq or { exch } if scale } def /Tm { _tm astore pop iTm 0 0 moveto } def /Td { _mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto } def /iTe { _render -1 eq { } { _renderEnd _render get dup null ne { load exec } { pop } ifelse } ifelse /_render -1 ddef } def /Ta { pop } def /Tf { 1 index type /nametype eq { dup 0.75 mul 1 index 0.25 mul neg } if /_fontDescent exch ddef /_fontAscent exch ddef /_fontSize exch ddef /_fontRotateAdjust _fontAscent _fontDescent add 2 div neg ddef /_fontHeight _fontSize ddef findfont _fontSize scalefont setfont } def /Tl { pop neg 0 exch _leading astore pop } def /Tt { pop } def /TW { 3 npop } def /Tw { /_cx exch ddef } def /TC { 3 npop } def /Tc { /_ax exch ddef } def /Ts { 0 exch _shift astore pop currentpoint iTm moveto } def /Ti { 3 npop } def /Tz { count 1 eq { 100 } if 100 div exch 100 div exch _scale astore pop iTm } def /TA { pop } def /Tq { pop } def /Tg { pop } def /TG { pop } def /Tv { /_lineorientation exch ddef } def /TV { /_charorientation exch ddef } def /Ty { dup /_yokoorientation exch ddef 1 sub neg Tv } def /TY { pop } def /T~ { Tx } def /Th { pop pop pop pop pop } def /TX { pop } def /Tk { _fontSize mul 1000 div _lineorientation 0 eq { neg 0 } { 0 exch } ifelse rmoveto pop } def /TK { 2 npop } def /T* { _leading aload pop _lineorientation 0 ne { exch } if Td } def /T*- { _leading aload pop _lineorientation 0 ne { exch } if exch neg exch neg Td } def /T- { _ax neg 0 rmoveto _lineorientation 1 eq _charorientation 0 eq and { 1 TV _hyphen Tx 0 TV } { _hyphen Tx } ifelse } def /T+ { } def /TR { _ctm currentmatrix pop _tm astore pop iTm 0 0 moveto } def /TS { currentfont 3 1 roll /_Symbol_ findfont _fontSize scalefont setfont 0 eq { Tx } { Tj } ifelse setfont } def /Xb { pop pop } def /Tb /Xb load def /Xe { pop pop pop pop } def /Te /Xe load def /XB { } def /TB /XB load def currentdict readonly pop end setpacking % /X^ { currentfont 5 1 roll dup havefont { findfont _fontSize scalefont setfont } { pop exch } ifelse 2 index 0 eq { Tx } { Tj } ifelse pop pop setfont } def /T^ /X^ load def %%EndResource %%BeginResource: procset AGM_Gradient_Sep 1.0 0 %%Title: (AGM Gradient Procset) %%Version: 1.0 0 %%CreationDate: (4/26/96) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) userdict /defaultpacking currentpacking put true setpacking userdict /AGM_Gradient_Sep 5 dict dup begin put /AGM_Gradient_Sep_private 100 dict def /initialize{ AGM_Gradient_Sep begin AGM_Gradient_Sep_private begin _compositeJob{ initializeSinglePassSeps }{ initializeMultiPassSeps }ifelse initializeSeps AGM_Gradient_private begin /_fillSD newSpotDict def /_rampSD newSpotDict def /_nCustomColorSD nd end AGM_Gradient_Sep_private { dup xcheck 1 index type /arraytype eq and { bind }if pop pop }forall AGM_Gradient_Sep { dup xcheck 1 index type /arraytype eq and { bind }if pop pop }forall end currentdict readonly pop end }def /terminate{ currentdict AGM_Gradient_Sep eq{ end }if }def AGM_Gradient_Sep_private begin /initializeSeps{ /currentoverprint { _of } def _noImage not _level2PS not and{ /linealFill{ currentoverprint{ 0 0 1 1 rectfill }{ mySave 8 setImageParms _color{ _nCustomColorSD begin cyan magenta yellow black _spotColor{ spot1/tintImage spot1/tintValue get 1 exch sub makeByte8 put spot2/tintImage spot2/tintValue get 1 exch sub makeByte8 put }if end 4{ makeByte8 4 1 roll }repeat true 4 _nCustomColorSD ncolorimage }{ _nCustomColorSD/black get 1 exch sub makeByte8 _nCustomColorSD bwImage }ifelse myRestore }ifelse }def }if /_whiteBytes 1 makeByte8 pt /knockOut{ _noImage _level2PS or currentoverprint or{ gsave false setoverprint 1 setgray 0 0 1 1 rectfill grestore }{ 8 setImageParms _whiteBytes /_image load 5 execImage }ifelse }def /newSpotDict{ 11 dict dup begin /nSpots 2 def /spot1 7 dict def /spot2 7 dict def end }def /initSpotData { begin /name nd /tintImage nd /tintValue nd /spot_C nd /spot_M nd /spot_Y nd /spot_K nd end }def /initSpotDict{ begin /cyanInk nd /magentaInk nd /yellowInk nd /blackInk nd /cyan nd /magenta nd /yellow nd /black nd spot1 initSpotData spot2 initSpotData end }def /copySpotDict{ /_dst xp begin cyanInk magentaInk yellowInk blackInk cyan magenta yellow black spot1 spot2 end _dst begin /spot1 spot1 maxlength dict def /spot2 spot2 maxlength dict def spot2 copy pop spot1 copy pop /black xd /yellow xd /magenta xd /cyan xd /blackInk xd /yellowInk xd /magentaInk xd /cyanInk xd end }def /setCustomColor { 1 index /Black eq{ 6 1 roll 5 npop 1 exch sub setgray }{ 6 1 roll _ccAry1 astore exch dup null eq{ pop 0 }if setcustomcolor }ifelse }def /setCStop{ /_colorStyle exch pt _colorStyle 0 eq{ 0 0 0 4 -1 roll 1 exch sub _spotColor{ /_colorStyle 3 pt /Black 1 index 1 exch sub }if }if _colorStyle 2 eq{ 3 npop }if _rampSD _fillSD copySpotDict _colorStyle 4 eq{ pop 9 2 roll 3 npop 6 -2 roll } if _colorStyle 3 eq _colorStyle 4 eq or{ _fillSD begin /_spot1 spot1 pt /_spot2 spot2 pt end exch dup _spot1/name get eq{ _spot1 _spot2 }{ _spot2 _spot1 }ifelse begin begin /name xd 1 exch sub /tintValue xd 4{ tintValue mul 4 1 roll }repeat _spotColor not{ /tintValue null def }if end /tintValue 0 def end }if _fillSD nsetcustomcolor }def /renderCMYK{ spot1/name get null eq spot2/name get null eq and dup not{ pop spot1 spotConverted }if dup not{ pop spot2 spotConverted }if }def /currentInk{ true _inRipSep{ currentcolorspace 0 get dup /DeviceGray eq 1 index /DeviceCMYK eq or{ pop currentcmykcolor add add add 0 eq{ pop false }if }{ /Separation eq{ currentcolor 0 eq{ pop false }if }if }ifelse }{ currentgray 1 eq{ pop false }if }ifelse }def /currentInkN{ _nCustomColorSD begin /_spot1 spot1 pt /_spot2 spot2 pt renderCMYK end { currentInk }{ gsave _spot1 begin name null ne{ spot_C spot_M spot_Y spot_K name tintValue setCustomColor currentInk }{ false }ifelse end _spot2 begin name null ne{ spot_C spot_M spot_Y spot_K name tintValue setCustomColor currentInk }{ false }ifelse end grestore or } ifelse }def /fill_ /fill load def /fillOvp{ currentoverprint{ _inRipSep{ currentcolorspace 0 get dup /DeviceGray eq 1 index /DeviceCMYK eq or{ pop currentcmykcolor add add add 0 eq{ newpath }if }{ /Separation eq{ currentcolor 0 eq{ newpath }if }if }ifelse }{ currentgray 1 eq{ newpath }if }ifelse }if fill_ }def /fill{ _nCustomColorSD begin /_spot1 spot1 pt /_spot2 spot2 pt renderCMYK end { fillOvp }{ _spot1 begin gsave name null ne{ spot_C spot_M spot_Y spot_K name tintValue setCustomColor }{ 1 setgray }ifelse fillOvp grestore end _spot2 begin name null ne{ gsave true setoverprint spot_C spot_M spot_Y spot_K name tintValue setCustomColor fillOvp grestore }if end newpath }ifelse }def /expandSpot{ _spotColor{ /_len xp _rampSD begin spot1 begin tintImage null ne{ tintImage _len expandOne /tintImage xd }if end spot2 begin tintImage null ne{ tintImage _len expandOne /tintImage xd }if end end }{ pop }ifelse }def /rampImage{ currentoverprint{ rectImage }{ _enabledSmoothShade{ fillRamp }{ _color{ _rampSD begin /cyanInk _cyanData 0 ne def /magentaInk _magentaData 0 ne def /yellowInk _yellowData 0 ne def /blackInk _blackData 0 ne def end _nSamples setImageParms _nSamples expandSpot _cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor true 4 _rampSD ncolorimage }{ _rampSD begin /cyanInk false def /magentaInk false def /yellowInk false def /blackInk true def end _nSamples setImageParms _blackData _rampSD bwImage }ifelse }ifelse }ifelse }def /nsetcustomcolor where{ pop }{ /nsetcustomcolor { /_nCustomColorSD xp _nCustomColorSD begin 4 copy /black xd /yellow xd /magenta xd /cyan xd 4 copy 0 ne /blackInk xd 0 ne /yellowInk xd 0 ne /magentaInk xd 0 ne /cyanInk xd end setcmykcolor }def }ifelse /nsetcustomcolorend where{ pop }{ /nsetcustomcolorend { /_nCustomColorSD null pt }def }ifelse }def /initializeSinglePassSeps{ /_decodeNorm [0 1] pt /_decodeInvert [1 0] pt /spotConverted { begin name null eq{ false }{ tintValue null eq tintImage null eq and{ true }{ _inDistiller{ false }{ false currentpagedevice/SeparationColorNames get{name eq or}forall not }ifelse }ifelse }ifelse end }def /dictImage { 20 dict dup begin /Dict xd /Decode xd /DataSource xd /ImageMatrix xd /BitsPerComponent xd /Height xd /Width xd /ImageType 1 def Dict end /_image load 1 execImage }def /bwImage{ begin gsave currentoverprint{ blackInk{ [/Separation /Black /DeviceGray{}] setcolorspace _decodeInvert dictImage }{ 5 npop }ifelse }{ /DeviceGray setcolorspace _decodeNorm dictImage }ifelse grestore end }def /ncolorimage where{ pop }{ /ncolorimage{ begin renderCMYK{ cyanInk magentaInk and yellowInk and blackInk and not currentoverprint and{ pop pop gsave cyanInk{ 8 copy [/Separation /Cyan /DeviceGray{}] setcolorspace 3 npop _decodeNorm dictImage }if magentaInk{ 8 copy [/Separation /Magenta /DeviceGray{}] setcolorspace 4 -1 roll 3 npop _decodeNorm dictImage }if yellowInk{ 8 copy [/Separation /Yellow /DeviceGray{}] setcolorspace 4 -2 roll 3 npop _decodeNorm dictImage }if blackInk{ 4 -3 roll [/Separation /Black /DeviceGray{}] setcolorspace 3 npop _decodeNorm dictImage }{ 8 npop }ifelse grestore }{ /_colorimage load 10 execImage }ifelse }{ 6 npop gsave spot1 begin name null ne tintImage null ne and{ [/Separation name /DeviceGray{}] setcolorspace 4 copy tintImage name /Black eq{ _decodeNorm }{ _decodeInvert }ifelse dictImage }{ 1 setgray fill }ifelse end spot2 begin true setoverprint name null ne tintImage null ne and{ [/Separation name /DeviceGray{}] setcolorspace tintImage name /Black eq{ _decodeNorm }{ _decodeInvert }ifelse dictImage }{ 4 npop 1 setgray fill }ifelse end grestore }ifelse end }def }ifelse /getRampColorSpace{ /_renderCMYK _rampSD begin renderCMYK end pt _renderCMYK not{ _rampSD begin [/DeviceN [ spot1 begin name null ne tintImage null ne and{ name }if end spot2 begin name null ne tintImage null ne and{ name }if end ] _inDistiller { /DeviceCMYK [ spot1 begin name null ne tintImage null ne and{ spot_C spot_M spot_Y spot_K 1 }{ 0 0 0 0 0 }ifelse end spot2 begin name null ne tintImage null ne and{ spot_C spot_M spot_Y spot_K 2 }{ 0 0 0 0 0 }ifelse end 5 1 roll 6 -2 roll add dup 1 eq { pop 8 /index cvx 1 /exch cvx /sub cvx 9 1 /roll cvx }{ 2 eq { 8 /index cvx 1 /exch cvx /sub cvx 10 1 /roll cvx }if }ifelse 4 1 /roll cvx 5 -2 /roll cvx 8 /index cvx /mul cvx /exch cvx 9 /index cvx /mul cvx /add cvx 7 1 /roll cvx 3 1 /roll cvx 4 -2 /roll cvx 7 /index cvx /mul cvx /exch cvx 8 /index cvx /mul cvx /add cvx 6 1 /roll cvx 2 1 /roll cvx 3 -2 /roll cvx 6 /index cvx /mul cvx /exch cvx 7 /index cvx /mul cvx /add cvx 5 1 /roll cvx 5 /index cvx /mul cvx /exch cvx 6 /index cvx /mul cvx /add cvx 4 1 /roll cvx 6 -2 /roll cvx /pop cvx /pop cvx ] cvx bind }{ /DeviceCMYK {} }ifelse ] setcolorspace end /_nColorSpace currentcolorspace pt }if _nSamples 1 gt{ /_ndx 0 pt [blendColor] cvx exec }if _renderCMYK{ /_C0 [currentcolor] pt /_C0_Space currentcolorspace pt }{ /_C0 [ _nCustomColorSD begin spot1 begin name null ne{ tintValue }if end spot2 begin name null ne{ tintValue }if end end ] pt /_C0_Space _nColorSpace pt }ifelse _nSamples 1 gt{ /_ndx _nSamples 1 sub pt [blendColor] cvx exec }if _renderCMYK{ /_C1 [currentcolor] pt /_C1_Space currentcolorspace pt }{ /_C1 [ _nCustomColorSD begin spot1 begin name null ne{ tintValue }if end spot2 begin name null ne{ tintValue }if end end ] pt /_C1_Space _nColorSpace pt }ifelse /_rampColorSpace _C0_Space pt _spotColor{ nsetcustomcolorend }if }def }def /initializeMultiPassSeps{ /invertXfer{ [ { 1 exch sub }/exec load systemdict /currenttransfer get exec /exec load ] cvx systemdict /settransfer get exec }def /ccThrough{ gsave 1 setCustomColor currentcmykcolor grestore add add add 0 ne }def /spotConverted { begin _isCMYKSep not{ false }{ name null eq{ false }{ tintValue null eq tintImage null eq and{ true }{ spot_C spot_M spot_Y spot_K name ccThrough }ifelse }ifelse }ifelse end }def /spotChannel { _isCMYKSep{ pop false }{ /_spotDict xp _spotDict/name get null eq{ false }{ _spotDict/spot_C get _spotDict/spot_M get _spotDict/spot_Y get _spotDict/spot_K get _spotDict/name get ccThrough }ifelse }ifelse }def /getChannelData { _isCMYKSep dup{ pop renderCMYK }if { _blackPlate{ 4 1 roll 3 npop blackInk }{ _yellowPlate{ 4 2 roll 3 npop yellowInk }{ _magentaPlate{ 4 3 roll 3 npop magentaInk }{ 3 npop cyanInk }ifelse }ifelse }ifelse { true /nonZeroData }{ true /zeroData }ifelse }{ 4 npop spot1/name get null ne spot1 spotChannel and{ spot1/tintImage get dup null ne{ false /nonZeroData }{ pop false /noData }ifelse }{ spot2/name get null ne spot2 spotChannel and{ spot2/tintImage get dup null ne{ false /nonZeroData }{ pop false /noData }ifelse }{ false /noData }ifelse }ifelse }ifelse }def /renderChannelData { /_tmp xp _tmp /nonZeroData ne currentoverprint and{ pop _tmp /zeroData eq{pop}if 4 npop }{ _tmp /nonZeroData eq{ { invertXfer }if systemdict/image get 5 execImage }{ pop _tmp /zeroData eq{pop}if 4 npop knockOut }ifelse }ifelse }def /bwImage{ begin gsave dup dup dup getChannelData exch pop false exch renderChannelData grestore end }def /ncolorimage{ begin pop pop gsave spot2/name get null ne spot2 spotChannel and{ true setoverprint }if getChannelData renderChannelData grestore end }def /getRampColorSpace{ /_renderCMYK _rampSD begin renderCMYK end pt _nSamples 1 gt{ /_ndx 0 pt [blendColor] cvx exec }if _renderCMYK{ /_C0 [currentcolor] pt /_C0_Space currentcolorspace pt }{ /_C0 [ _nCustomColorSD begin 0 spot1 begin name null ne tintValue null ne and spot1 spotChannel and{ pop tintValue }if end spot2 begin name null ne tintValue null ne and spot2 spotChannel and{ pop tintValue }if end 1 exch sub end ] pt /_C0_Space /DeviceGray pt }ifelse _nSamples 1 gt{ /_ndx _nSamples 1 sub pt [blendColor] cvx exec }if _renderCMYK{ /_C1 [currentcolor] pt /_C1_Space currentcolorspace pt }{ /_C1 [ _nCustomColorSD begin 0 spot1 begin name null ne tintValue null ne and spot1 spotChannel and{ pop tintValue }if end spot2 begin name null ne tintValue null ne and spot2 spotChannel and{ pop tintValue }if end 1 exch sub end ] pt /_C1_Space /DeviceGray pt }ifelse /_rampColorSpace _C0_Space pt _spotColor{ nsetcustomcolorend }if }def }def end end defaultpacking setpacking %%EndResource %%BeginResource: procset AGM_Gradient 1.0 0 %%Title: (AGM Gradient Procset) %%Version: 1.0 0 %%CreationDate: (4/26/96) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) userdict /defaultpacking currentpacking put true setpacking userdict /AGM_Gradient 20 dict dup begin put /AGM_Gradient_private 201 dict def /initialize { AGM_Gradient begin AGM_Gradient_private begin initializeVars /bd systemdict/mark get def /ed _level2PS { (>>) }{ (counttomark 2 idiv dup dict begin {def} repeat pop currentdict end) } ifelse cvx def _level2PS{ initializeLev2 }{ initializeLev1 }ifelse queryDevice initializeRectFill initializeShading initializeOps _producingSeps{ AGM_Gradient_Sep/initialize get exec }{ initializeComposite }ifelse _illustrator{ /f{}def /F{}def /s{}def /S{}def /b{}def /B{}def }if /image where{ /image get /_image xd }if /colorimage where{ /colorimage get /_colorimage xd }if AGM_Gradient_private { dup xcheck 1 index type /arraytype eq and { bind }if pop pop }forall AGM_Gradient { dup xcheck 1 index type /arraytype eq and { bind }if pop pop }forall end currentdict readonly pop end }def /initializeAI { pop pop AGM_Gradient/AGM_Gradient_private get /_illustrator true put AGM_Gradient/initialize get exec AGM_Gradient begin }def /unload{ systemdict/languagelevel known{ systemdict/languagelevel get 2 ge{ userdict/AGM_Gradient_Sep 2 copy known{ undef }{ pop pop }ifelse userdict/AGM_Gradient 2 copy known{ undef }{ pop pop }ifelse }if }if }def /terminate{ currentdict AGM_Gradient eq{ end }if }def AGM_Gradient_private begin /initializeVars{ /_d255 256 array def 0 1 255{ _d255 exch dup 255 div put }bind for /_d255- 256 array def 0 1 255{ _d255- exch 1 _d255 2 index get sub put }bind for /_sSave nd /_dUserSpace matrix defaultmatrix def /_bUMatrix matrix def /_imageMatrix matrix def /_saveMatrix matrix def /_xm matrix def /_ccAry1 5 array def /_bbox 4 array pt /_level2PS systemdict/languagelevel known dup{ pop systemdict/languagelevel get 2 ge }if def /_level3PS _level2PS systemdict/shfill known and def currentdict /_illustrator known not{ /_illustrator false def }if }def /initializeOps { AGM_Gradient begin currentdict/Bc known not{ /Bc{ _renderFlag 2 eq _enabledSmoothShade or{ 6 npop }{ pushBSpace _rampIndex 0 eq{ pop pop setCStop }if linealFill popBSpace }ifelse }def }if currentdict/Bg known not{ /Bg{ 10 npop /_gradName xp /_renderFlag xp /_enabledSmoothShade false pt _renderFlag 2 ne{ _illustrator{ _of setoverprint }if /_enabledSmoothShade _level3PS{ _usingSmoothShade _producingSeps not currentoverprint not or and _noImage not and }{ false }ifelse pt _illustrator _eo and _renderFlag 3 eq or{ eoclip }{ clip }ifelse _gradNames _gradName 2 copy known{ get mark exch aload pop /_gradType xp 1 sub dup /_rampIndex xp /_maxRampIndex xp mark exch aload pop 0 0 }if pop pop getRampData }{ mark mark }ifelse }def }if currentdict/Bm known not{ /Bm{ _renderFlag 2 ne{ _gradType 0 eq{ linealRamp }{ radialGrad }ifelse }{ 6 npop }ifelse }def }if currentdict/Bh known not{ /Bh{ 2 npop /_yHi xp /_xHi xp /_radHilite _xHi 0 ne _yHi 0 ne or pt }def }if currentdict/Bn known not{ /Bn{ AGM_Gradient_private begin dict /_gradNames xp end }def }if currentdict/Bd known not{ /Bd{ AGM_Gradient begin AGM_Gradient_private begin /_nColorsBd xp /_gradType xp /_gradName xp }def }if currentdict/BD known not{ /BD{ currentdict/_gradNames known not{ /_gradNames 20 dict def }if ] _nColorsBd _gradType ] _gradName exch /_gradNames xput end end }def }if currentdict/Bb known not{ /Bb{ AGM_Gradient/AGM_Gradient_private get /_illustrator get not{ AGM_Gradient begin }if AGM_Gradient_private begin _producingSeps{ AGM_Gradient_Sep/AGM_Gradient_Sep_private get begin }if mySave }def }if currentdict/BB known not{ /BB{ /_tmp xp cleartomark cleartomark _tmp dup _renderFlag myRestore _producingSeps{ end }if _illustrator dup end not { end }if { 2 ne exch 0 gt and{ 2 eq{ s }{ S }ifelse }{ pop newpath }ifelse }{ pop newpath }ifelse }def }if currentdict/Xm known not{ /Xm{ _xm astore pop }def }if end }def /queryDevice{ /_inDistiller systemdict /currentdistillerparams known def /_inRipSep _level2PS{ currentpagedevice/Separations 2 copy known{ get }{ pop pop false }ifelse }{ false }ifelse _inDistiller or def /_noImage /lv1Fix where{ pop lv1Fix }{ false }ifelse def /_useShells where{ /_useShells get /_usingShells xp }{ /_usingShells false def }ifelse /_useSmoothShade where{ pop }{ /_useSmoothShade false def }ifelse /_forceToCMYK where{ pop }{ /_forceToCMYK false def }ifelse /_cyanPlate 1 0 0 0 testCMYKColorThrough def /_magentaPlate 0 1 0 0 testCMYKColorThrough def /_yellowPlate 0 0 1 0 testCMYKColorThrough def /_blackPlate 0 0 0 1 testCMYKColorThrough def /_compositeJob _cyanPlate _magentaPlate and _yellowPlate and _blackPlate and def /_isCMYKSep _cyanPlate _magentaPlate or _yellowPlate or _blackPlate or def /_compositeSpotDevice where{ pop }{ /_compositeSpotDevice _compositeJob not _inRipSep or{ 1 }{ 0 }ifelse def }ifelse /_producingSeps _compositeSpotDevice 0 ne def /_deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt def /_dpiThreshold where{ pop }{ /_dpiThreshold 600 def }ifelse /_screenFreqThreshold where{ pop }{ /_screenFreqThreshold 150 def }ifelse /_contoneDevice where{ pop }{ /_contoneDevice false def }ifelse /_subSampleOK _deviceDPI _dpiThreshold le currentScreenFreq _screenFreqThreshold le and _contoneDevice not and def }def /initializeRectFill{ /rectfill where dup{ exch pop not _producingSeps or }{ not }ifelse { /rectfill{ gsave newpath 4 2 roll moveto 1 index 0 rlineto 0 1 index rlineto 1 index neg 0 rlineto pop pop closepath fill grestore }def }if }def /initializeLev1{ /currentScreenFreq{ currentscreen pop pop }def /_byte 1 string def /colorimage where{ pop }{ /colorimage{ pop pop /_blackTmp xp /_yellowTmp xp /_magentaTmp xp /_cyanTmp xp /_cnt 0 pt [ _byte dup 0 _cyanTmp /_cnt cvx /get cvx _d255 /exch cvx /get cvx .3 /mul cvx _magentaTmp /_cnt cvx /get cvx _d255 /exch cvx /get cvx .59 /mul cvx _yellowTmp /_cnt cvx /get cvx _d255 /exch cvx /get cvx .11 /mul cvx _blackTmp /_cnt cvx /get cvx _d255 /exch cvx /get cvx /add cvx /add cvx /add cvx 1 /exch cvx /sub cvx /dup cvx 0 /lt cvx{ pop 0 }/if cvx /dup cvx 1 /gt cvx{ pop 1 }/if cvx 255 /mul cvx /cvi cvx 256 /mod cvx /dup cvx 0 /lt cvx{ pop 0 }/if cvx /put cvx /_cnt dup cvx 1 /add cvx /pt cvx ] cvx bind /_image load 5 execImage }def }ifelse }def /initializeLev2{ /level2ScreenFreq{ begin 60 HalftoneType 1 eq{ pop Frequency }if HalftoneType 2 eq{ pop GrayFrequency }if HalftoneType 5 eq{ pop Default level2ScreenFreq }if end }def /currentScreenFreq{ currenthalftone level2ScreenFreq }def }def /initializeShading{ _useSmoothShade _level3PS and{ /_usingSmoothShade true pt initializeLev3_Ops }{ /_usingSmoothShade false pt }ifelse }def /initializeLev3_Ops { /initShFill{ /_index _gradType 0 eq {0}{_maxRampIndex 1 sub} ifelse pt /_rampFuncsArray _maxRampIndex array pt /_boundsArray _maxRampIndex 1 sub array pt /_encodeArray _maxRampIndex 2 mul array pt /_beginCoord _rampPoint pt /_colorSpace null pt /_firstFill _rampIndex _maxRampIndex eq pt /_lastFill false pt }def /linealShFill{ popBSpace _xm aload pop pushBSpace /_size _index 1 add pt _size _maxRampIndex lt { /_rampFuncsArray _rampFuncsArray 0 _size getinterval pt /_boundsArray _boundsArray 0 _size 1 sub getinterval pt /_encodeArray _encodeArray 0 _size 2 mul getinterval pt }if bd /ShadingType 2 /ColorSpace _colorSpace _rgbInCMYK{ /Function [ _cData sampFunc _mData sampFunc _yData sampFunc _kData sampFunc ] }{ /Function bd /FunctionType 3 /Domain [0 1] /Functions _rampFuncsArray /Bounds _boundsArray /Encode _encodeArray ed }ifelse /Extend [_firstFill _lastFill] /Domain [0 1] /Coords [_beginCoord 0 _endCoord 0] ed shfill }def /radialShFill{ /_size _maxRampIndex _index sub pt _size _maxRampIndex lt { /_rampFuncsArray _rampFuncsArray _index _size getinterval pt /_boundsArray _boundsArray _index _size 1 sub getinterval pt /_encodeArray _encodeArray _index 2 mul _size 2 mul getinterval pt }if /_rampLen _beginCoord _endCoord sub pt bd /ShadingType 3 /ColorSpace _colorSpace _rgbInCMYK{ /Function [ _cData sampFunc _mData sampFunc _yData sampFunc _kData sampFunc ] }{ /Function bd /FunctionType 3 /Domain [0 1] /Functions _rampFuncsArray /Bounds _boundsArray /Encode _encodeArray ed }ifelse /Extend [_lastFill _firstFill] /Domain [0 1] /Coords [_xHi _rampLen mul _yHi _rampLen mul _endCoord 0 0 _beginCoord] ed shfill _radHilite{ _xHi _rampLen mul _yHi _rampLen mul translate }if }def % /sampFunc{ /_tmp exch pt bd _tmp length 1 eq { _tmp 0 get /_tmp 2 string pt dup _tmp 0 3 -1 roll put _tmp 1 3 -1 roll put }if /FunctionType 0 /Order 1 /Size [_tmp length] /Domain [0 1] /BitsPerSample 8 /DataSource _tmp /Range [0 1] ed }def /fillRamp{ /_invert _midPoint 0.5 lt pt _rampIndex _maxRampIndex eq { initShFill }if getRampColorSpace _colorSpace null eq{ /_colorSpace _rampColorSpace pt }{ _colorSpace _rampColorSpace ne _rgbInCMYK or{ /_index _index 1 _gradType 0 eq{ sub pt linealShFill }{ add pt radialShFill }ifelse initShFill /_colorSpace _rampColorSpace pt } if }ifelse /_endCoord _endPoint pt /_rgbInCMYK false pt _producingSeps _forceToCMYK or _rgbRamp and { _spotColor{ _renderCMYK }{ _isCMYKSep }ifelse }{ false }ifelse { _compositeJob{ /_rgbInCMYK true pt _cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor dup length string copy /_kData exch pt dup length string copy /_yData exch pt dup length string copy /_mData exch pt dup length string copy /_cData exch pt }{ _rampFuncsArray _index _cyanPlate{_cyanData}if _magentaPlate{_magentaData}if _yellowPlate{_yellowData}if _blackPlate{_blackData}if _nSamples expandOne sampFunc dup begin /Decode [1 0] def end put /_invert false pt }ifelse }{ _rampFuncsArray _index bd /FunctionType 2 /Domain [0 1] /N 0.5 log _invert{1 _midPoint sub}{_midPoint}ifelse log div _gradType 0 eq{ _invert{/C1}{/C0}ifelse _C0 _invert{/C0}{/C1}ifelse _C1 }{ _invert{/C0}{/C1}ifelse _C1 _invert{/C1}{/C0}ifelse _C0 }ifelse ed put }ifelse _rampIndex 1 ne{ _boundsArray _index _gradType 1 eq{1 sub}if _endCoord put } if 0 1 _invert {exch}if _encodeArray _index 2 mul 1 add 3 -1 roll put _encodeArray _index 2 mul 3 -1 roll put _rampIndex 1 eq { /_lastFill true pt _gradType 0 eq{ linealShFill }{ radialShFill }ifelse }if /_index _index 1 _gradType 0 eq{ add pt }{ sub pt }ifelse }def }def /initializeComposite{ /bwImage{ pop /_image load 5 execImage }def /rampImage{ _enabledSmoothShade{ fillRamp }{ _color{ _nSamples setImageParms _rgbRamp _forceToCMYK not and{ _redData _greenData _blueData _nSamples 3 expandColor true 3 null ncolorimage }{ _cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor true 4 null ncolorimage }ifelse }{ _nSamples setImageParms _blackData null bwImage }ifelse }ifelse }def /setCStop{ /_colorStyle exch pt _colorStyle 0 eq{ 1 exch sub 0 0 0 4 -1 roll }if _colorStyle 2 eq{ _forceToCMYK{ 3 npop setcmykcolor }{ setrgbcolor 4 npop }ifelse }if _colorStyle 3 eq{ 1 exch sub /_tmp xp pop 4{ _tmp mul 4 1 roll }repeat }if _colorStyle 4 eq{ _forceToCMYK{ 6 npop setcmykcolor }{ 3 -1 roll pop pop 1 exch sub /_tmp xp 3{ 1 exch sub _tmp mul 1 exch sub 3 1 roll }repeat setrgbcolor 4 npop }ifelse }if _colorStyle 2 ne _colorStyle 4 ne and{ null nsetcustomcolor }if }def /nsetcustomcolor { pop setcmykcolor }def /nsetcustomcolorend { }def /ncolorimage{ pop /_colorimage load 10 execImage }def _noImage not _level2PS not and{ /linealFill{ 8 setImageParms _color{ currentcmykcolor 4{ makeByte8 4 1 roll }repeat true 4 null ncolorimage }{ currentgray makeByte8 null bwImage }ifelse }def }if /getRampColorSpace{ _nSamples 1 gt{ /_ndx 0 pt [blendColor] cvx exec }if /_C0 [currentcolor] pt /_C0_Space currentcolorspace pt _nSamples 1 gt{ /_ndx _nSamples 1 sub pt [blendColor] cvx exec }if /_C1 [currentcolor] pt /_C1_Space currentcolorspace pt /_rampColorSpace _C0_Space pt _spotColor{ nsetcustomcolorend }if }def }def /npop{ {pop}repeat }def /xd{ exch def }def /nd{ null def }def /pt{ AGM_Gradient_private 3 1 roll put }def /xp{ exch pt }def /xput{ dup load dup length exch maxlength eq{ dup dup load dup length 2 mul dict copy def }if load begin def end }def /mySave{ save /_sSave xp }def /myRestore{ _sSave type /savetype eq{ _sSave restore }if }def /gMark{ counttomark 2 add -1 roll }def /execImage{ /_tmp xp { exec }stopped{ $error /errorname get /undefinedresult ne{ stop }{ _tmp npop }ifelse }if }def /pushBSpace{ newpath gsave _bUMatrix astore concat }def /popBSpace{ grestore }def /makeByte8{ /_tmp 0 pt 255 mul cvi 8 string 8{ dup _tmp 3 index put /_tmp _tmp 1 add pt }repeat exch pop }def /setImageParms{ 1 8 2 index 0 0 1 0 0 _imageMatrix astore }def /linealFill{ 0 0 1 1 rectfill }def /testCMYKColorThrough{ gsave setcmykcolor currentcmykcolor grestore add add add 0 ne }def /expandOne { /_tmp xp dup type /stringtype ne{ _tmp string exch dup 0 ne{ 255 mul cvi 0 1 _tmp 1 sub{ 3 copy exch put pop }for }if pop }if }def /expandColor{ /_channels xp /_len xp _channels{ _len expandOne _channels 1 roll }repeat }def /blendColor{ _color{ _rgbRamp _producingSeps not and _forceToCMYK not and{ _redData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _greenData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _blueData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if /setrgbcolor cvx }{ _cyanData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _magentaData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _yellowData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _blackData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _spotColor{ _rampSD begin /_rampSD cvx /begin cvx spot1 begin tintImage dup type /stringtype eq{ /_ndx cvx /get cvx _d255- /exch cvx /get cvx }{ dup null ne{ name type /nametype ne{ 1 exch sub }if }if }ifelse end /spot1 cvx /tintValue 3 -1 /roll cvx /put cvx spot2 begin tintImage dup type /stringtype eq{ /_ndx cvx /get cvx _d255- /exch cvx /get cvx }{ dup null ne{ name type /nametype ne{ 1 exch sub }if }if }ifelse end /spot2 cvx /tintValue 3 -1 /roll cvx /put cvx /end cvx end /_rampSD cvx /nsetcustomcolor cvx }{ /setcmykcolor cvx }ifelse }ifelse }{ _blackData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _enabledSmoothShade{ 1 /exch cvx /sub cvx 0 0 0 4 -1 /roll cvx /setcmykcolor cvx }{ /setgray cvx }ifelse }ifelse }def /useRectImage{ _subSampleOK _enabledSmoothShade not and{ { mark 0 1 dtransform atan cvi 90 mod 0 eq 1 0 dtransform atan cvi 90 mod 0 eq } stopped { cleartomark false } { and exch pop } ifelse }{ false }ifelse }def /linealImage{ _noImage{ rectImage }{ _producingSeps{ AGM_Gradient_Sep/AGM_Gradient_Sep_private get /rampImage get exec }{ useRectImage{ rectImage }{ rampImage }ifelse }ifelse }ifelse }def /linealRamp{ pushBSpace _ramp{ linealImage }{ linealFill }ifelse popBSpace /_rampIndex _rampIndex 1 sub pt _rampIndex 0 gt{ getRampData }if }def /radialGrad{ /_usingShells currentoverprint _producingSeps and _usingShells or pt /_firstShell true pt _enabledSmoothShade not{ currentoverprint _producingSeps and{ newpath clippath pathbbox 1 add 4 1 roll 1 add 4 1 roll 1 sub 4 1 roll 1 sub 4 1 roll _bbox astore pop newpath _bbox 0 get _bbox 1 get moveto _bbox 2 get _bbox 1 get lineto _bbox 2 get _bbox 3 get lineto _bbox 0 get _bbox 3 get lineto closepath 6 copy gsave _bUMatrix astore concat 1 0 moveto 0 0 1 0 360 arc closepath eoclip fill popBSpace }{ fill }ifelse }if pushBSpace _radHilite{ _xHi _yHi _bUMatrix idtransform /_yHi xp /_xHi xp _rampPoint 1 lt{ 1 _rampPoint sub dup _xHi mul exch _yHi mul translate }if }if _rampIndex{ radialRamp /_rampIndex _rampIndex 1 sub pt _rampIndex 0 gt{ getRampData }if }repeat popBSpace }def /getNSamples{ 0 exch { dup type /stringtype eq{ length exch pop exit }if pop }forall dup 0 eq{ pop 1 }if }def /getRampData{ /_rampType gMark pt /_color _rampType 0 gt pt /_ccRGB _rampType 5 eq _rampType 6 eq or pt /_rgbRamp _rampType 4 eq _ccRGB or pt /_ccProcess _rampType 2 eq _rampType 3 eq or pt _producingSeps{ _rampSD initSpotDict /_spotColor _ccProcess _ccRGB or pt }{ /_spotColor false pt }ifelse /_ramp true pt 100 div /_rampPoint xp 100 div /_midPoint xp dup /_colorStyle xp _colorStyle 0 eq{ 2 }{ _colorStyle 1 eq{ 5 }{ _colorStyle 2 eq{ 8 }{ _colorStyle 3 eq{ _producingSeps{ _rampSD /spot1 get begin /name 3 index def /spot_K 4 index def /spot_Y 5 index def /spot_M 6 index def /spot_C 7 index def end }if 7 }{ _producingSeps{ _rampSD/spot1 get begin /name 4 index def /spot_K 8 index def /spot_Y 9 index def /spot_M 10 index def /spot_C 11 index def end }if 11 } ifelse }ifelse }ifelse }ifelse /_tmp xp _tmp index 100 div /_endPoint xp _gradType 1 eq{ _tmp 1 add index 100 div /_midPoint xp }if _producingSeps{ _tmp 2 add index /_nextColorStyle xp _nextColorStyle 3 eq{ /_tmp _tmp 4 add pt _tmp index dup _rampSD/spot1 get /name get ne{ _rampSD /spot2 get begin /name xd /spot_K _tmp 2 add index def /spot_Y _tmp 3 add index def /spot_M _tmp 4 add index def /spot_C _tmp 5 add index def end }{ pop }ifelse }if _nextColorStyle 4 eq{ /_tmp _tmp 5 add pt _tmp index dup _rampSD/spot1 get /name get ne{ _rampSD /spot2 get begin /name xd /spot_K _tmp 5 add index def /spot_Y _tmp 6 add index def /spot_M _tmp 7 add index def /spot_C _tmp 8 add index def end }{ pop }ifelse }if }if _rampType 3 eq _rampType 6 eq or{ /_tint2Data gMark pt }if _ccProcess _ccRGB or{ /_tint1Data gMark pt }if _rgbRamp{ /_blueData gMark pt /_greenData gMark pt /_redData gMark pt }if _producingSeps{ _ccProcess _ccRGB or{ _rampType 3 eq _rampType 6 eq or{ _rampSD /spot2 get begin /tintImage _gradType 0 eq{ _tint2Data }{ _tint1Data }ifelse def name null eq{ /name /Black def }if end }if _rampSD /spot1 get begin /tintImage _gradType 0 eq _rampType 2 eq or _rampType 5 eq or{ _tint1Data }{ _tint2Data }ifelse def _rampType 2 eq _rampType 5 eq or{ name null eq{ /name _rampSD/spot2 get /name get def /spot_C _rampSD/spot2 get /spot_C get def /spot_M _rampSD/spot2 get /spot_M get def /spot_Y _rampSD/spot2 get /spot_Y get def /spot_K _rampSD/spot2 get /spot_K get def _rampSD/spot2 get /name null put }if }{ name null eq{ /name /Black def }if }ifelse end }if }if /_blackData gMark pt _rampType 0 gt{ counttomark 4 add -3 roll /_yellowData xp /_magentaData xp /_cyanData xp }if _ramp{ /_nSamples [ _rampType 0 eq {_blackData}if _rampType 1 eq {_cyanData _magentaData _yellowData _blackData}if _rampType 2 eq {_cyanData _magentaData _yellowData _blackData _tint1Data}if _rampType 3 eq {_cyanData _magentaData _yellowData _blackData _tint1Data _tint2Data}if _rampType 4 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData}if _rampType 5 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData _tint1Data}if _rampType 6 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData _tint1Data _tint2Data}if ] getNSamples pt _enabledSmoothShade not {/_ramp _nSamples 1 gt pt} if } if setCStop }def /rectImage{ gsave /_sInc 1 pt /_bInc 1 _nSamples div pt /_nSubSamples _nSamples pt /_optimize false pt _subSampleOK{ /_uRampLen 1 0 dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt pt /_pChange _uRampLen 0 eq{0}{_nSamples _uRampLen div}ifelse pt _pChange .5 gt dup /_optimize xp{ /_nSubSamples _uRampLen 2 div round cvi dup 1 le{pop 2}if pt /_bInc 1 _nSubSamples div pt /_sInc _nSamples 1 sub _nSubSamples 1 sub div pt }if }if 0 _nSubSamples [ /dup cvx _optimize { /round cvx /cvi cvx } if /_ndx /exch cvx /pt cvx blendColor 0 0 _bInc 1 /rectfill cvx _bInc 0 /translate cvx _sInc /add cvx ] cvx bind repeat pop _spotColor{ nsetcustomcolorend }if grestore }def /radialInit{ /_nRadSamples _nSamples dup 0 eq{pop 1}if pt /_sInc -1 pt /_rampLen _rampPoint _endPoint sub pt /_bInc _rampLen _nSamples div neg pt /_optimize false pt _subSampleOK{ /_uRampLen _rampLen 0 dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt 0 _rampLen dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt 2 copy lt{ exch }if pop pt /_pChange _uRampLen 0 eq{ 0 }{ _nSamples _uRampLen div }ifelse pt _pChange .5 gt dup /_optimize xp{ /_nRadSamples _uRampLen 2 div round cvi dup 1 le{pop 2}if pt /_bInc _rampLen _nRadSamples div neg pt /_sInc _nSamples 1 sub _nRadSamples 1 sub div neg pt }if }if _radHilite{ /_xBCInc _xHi _rampLen mul _nRadSamples div pt /_yBCInc _yHi _rampLen mul _nRadSamples div pt }if }def /radialRamp{ _enabledSmoothShade{ fillRamp }{ /_saveMatrix _saveMatrix currentmatrix def radialInit % % true _producingSeps _rgbRamp not and{ _nSamples 1 gt{ pop /_ndx 0 pt [blendColor] cvx exec currentInkN /_ndx _nSamples 1 sub pt [blendColor] cvx exec currentInkN or }if }if { _rampPoint _nSamples 1 sub _nRadSamples [ /dup cvx _optimize{ /round cvx /cvi cvx }if /_ndx /exch cvx /pt cvx _usingShells{ /_firstShell cvx{ /_firstShell false pt }{ 0 0 3 index 360 0 arcn fill }/ifelse cvx }if blendColor _usingShells{ 0 0 3 /index cvx 0 360 /arc cvx }{ 0 0 3 /index cvx 0 360 /arc cvx /fill cvx }ifelse /exch cvx _bInc /add cvx /exch cvx _sInc /add cvx _radHilite{ _xBCInc _yBCInc /translate cvx }if ] cvx bind repeat pop pop }{ _usingShells{ 0 0 _rampPoint 360 0 arcn fill }if }ifelse _saveMatrix setmatrix _radHilite{ _xHi _rampLen mul _yHi _rampLen mul translate }if _usingShells _rampIndex 1 eq and{ fill }if _spotColor{ nsetcustomcolorend }if }ifelse }def end end defaultpacking setpacking %%EndResource %%BeginProcSet: Adobe_ColorImage_AI6 1.3 0 userdict /Adobe_ColorImage_AI6 known not { userdict /Adobe_ColorImage_AI6 53 dict put } if userdict /Adobe_ColorImage_AI6 get begin /initialize { Adobe_ColorImage_AI6 begin Adobe_ColorImage_AI6 { dup type /arraytype eq { dup xcheck { bind } if } if pop pop } forall } def /terminate { end } def currentdict /Adobe_ColorImage_AI6_Vars known not { /Adobe_ColorImage_AI6_Vars 41 dict def } if Adobe_ColorImage_AI6_Vars begin /plateindex -1 def /_newproc null def /_proc1 null def /_proc2 null def /sourcearray 4 array def /_ptispace null def /_ptiname null def /_pti0 0 def /_pti1 0 def /_ptiproc null def /_ptiscale 0 def /_pticomps 0 def /_ptibuf 0 string def /_gtigray 0 def /_cticmyk null def /_rtirgb null def /XIEnable true def /XIType 0 def /XIEncoding 0 def /XICompression 0 def /XIChannelCount 0 def /XIBitsPerPixel 0 def /XIImageHeight 0 def /XIImageWidth 0 def /XIImageMatrix null def /XIRowBytes 0 def /XIFile null def /XIBuffer1 null def /XIBuffer2 null def /XIBuffer3 null def /XIDataProc null def /XIColorSpace /DeviceGray def /XIColorValues 0 def /XIPlateList false def end /ci6colorimage /colorimage where {/colorimage get}{null} ifelse def /ci6image systemdict /image get def /ci6curtransfer systemdict /currenttransfer get def /ci6curoverprint /currentoverprint where {/currentoverprint get}{{_of}} ifelse def /ci6foureq { 4 index ne { pop pop pop false }{ 4 index ne { pop pop false }{ 4 index ne { pop false }{ 4 index eq } ifelse } ifelse } ifelse } def /ci6testplate { Adobe_ColorImage_AI6_Vars begin /plateindex -1 def /setcmykcolor where { pop gsave 1 0 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub 0 1 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub 0 0 1 0 setcmykcolor systemdict /currentgray get exec 1 exch sub 0 0 0 1 setcmykcolor systemdict /currentgray get exec 1 exch sub grestore 1 0 0 0 ci6foureq { /plateindex 0 def }{ 0 1 0 0 ci6foureq { /plateindex 1 def }{ 0 0 1 0 ci6foureq { /plateindex 2 def }{ 0 0 0 1 ci6foureq { /plateindex 3 def }{ 0 0 0 0 ci6foureq { /plateindex 5 def } if } ifelse } ifelse } ifelse } ifelse pop pop pop pop } if plateindex end } def /ci6concatprocs { /packedarray where { pop dup type /packedarraytype eq 2 index type /packedarraytype eq or }{ false } ifelse { /_proc2 exch cvlit def /_proc1 exch cvlit def _proc1 aload pop _proc2 aload pop _proc1 length _proc2 length add packedarray cvx }{ /_proc2 exch cvlit def /_proc1 exch cvlit def /_newproc _proc1 length _proc2 length add array def _newproc 0 _proc1 putinterval _newproc _proc1 length _proc2 putinterval _newproc cvx } ifelse } def /ci6istint { type /arraytype eq } def /ci6isspot { dup type /arraytype eq { dup length 1 sub get /Separation eq }{ pop false } ifelse } def /ci6spotname { dup ci6isspot {dup length 2 sub get}{pop ()} ifelse } def /ci6altspace { aload pop pop pop ci6colormake } def /ci6numcomps { dup /DeviceGray eq { pop 1 }{ dup /DeviceRGB eq { pop 3 }{ /DeviceCMYK eq { 4 }{ 1 } ifelse } ifelse } ifelse } def /ci6marksplate { dup /DeviceGray eq { pop plateindex 3 eq }{ dup /DeviceRGB eq { pop plateindex 5 ne }{ dup /DeviceCMYK eq { pop plateindex 5 ne }{ dup ci6isspot { /findcmykcustomcolor where { pop dup length 2 sub get 0.1 0.1 0.1 0.1 5 -1 roll findcmykcustomcolor 1 setcustomcolor systemdict /currentgray get exec 1 ne }{ pop plateindex 5 ne } ifelse }{ pop plateindex 5 ne } ifelse } ifelse } ifelse } ifelse } def /ci6colormake { dup ci6numcomps exch 1 index 2 add 1 roll dup 1 eq {pop}{array astore} ifelse exch } def /ci6colorexpand { dup ci6spotname exch dup ci6istint { ci6altspace exch 4 1 roll }{ 1 3 1 roll } ifelse } def /ci6colortint { dup /DeviceGray eq { 3 1 roll 1 exch sub mul 1 exch sub exch }{ dup /DeviceRGB eq { 3 1 roll {1 exch sub 1 index mul 1 exch sub exch} forall pop 3 array astore exch }{ dup /DeviceCMYK eq { 3 1 roll {1 index mul exch} forall pop 4 array astore exch }{ 3 1 roll mul exch } ifelse } ifelse } ifelse } def /ci6colortocmyk { dup /DeviceGray eq { pop 1 exch sub 0 0 0 4 -1 roll 4 array astore }{ dup /DeviceRGB eq { pop aload pop _rgbtocmyk 4 array astore }{ dup /DeviceCMYK eq { pop }{ ci6altspace ci6colortint ci6colortocmyk } ifelse } ifelse } ifelse } def /ci6makeimagedict { 7 dict begin /ImageType 1 def /Decode exch def /DataSource exch def /ImageMatrix exch def /BitsPerComponent exch def /Height exch def /Width exch def currentdict end } def /ci6stringinvert { 0 1 2 index length 1 sub { dup 2 index exch get 255 exch sub 2 index 3 1 roll put } for } def /ci6stringknockout { 0 1 2 index length 1 sub { 255 2 index 3 1 roll put } for } def /ci6stringapply { 0 1 4 index length 1 sub { dup 4 index exch get 3 index 3 1 roll 3 index exec } for pop exch pop } def /ci6walkrgbstring { 0 3 index dup length 1 sub 0 3 3 -1 roll { 3 getinterval {} forall 5 index exec 3 index } for 5 {pop} repeat } def /ci6walkcmykstring { 0 3 index dup length 1 sub 0 4 3 -1 roll { 4 getinterval {} forall 6 index exec 3 index } for 5 { pop } repeat } def /ci6putrgbtograystr { .11 mul exch .59 mul add exch .3 mul add cvi 3 copy put pop 1 add } def /ci6putcmyktograystr { exch .11 mul add exch .59 mul add exch .3 mul add dup 255 gt { pop 255 } if 255 exch sub cvi 3 copy put pop 1 add } def /ci6rgbtograyproc { Adobe_ColorImage_AI6_Vars begin sourcearray 0 get exec XIBuffer3 dup 3 1 roll /ci6putrgbtograystr load exch ci6walkrgbstring end } def /ci6cmyktograyproc { Adobe_ColorImage_AI6_Vars begin sourcearray 0 get exec XIBuffer3 dup 3 1 roll /ci6putcmyktograystr load exch ci6walkcmykstring end } def /ci6separatecmykproc { Adobe_ColorImage_AI6_Vars begin sourcearray 0 get exec XIBuffer3 0 2 index plateindex 4 2 index length 1 sub { get 255 exch sub 3 copy put pop 1 add 2 index } for pop pop exch pop end } def /ci6compositeimage { dup 1 eq { pop pop image }{ /ci6colorimage load null ne { ci6colorimage }{ 3 1 roll pop sourcearray 0 3 -1 roll put 3 eq {/ci6rgbtograyproc}{/ci6cmyktograyproc} ifelse load image } ifelse } ifelse } def /ci6knockoutimage { gsave 0 ci6curtransfer exec 1 ci6curtransfer exec eq { 0 ci6curtransfer exec 0.5 lt }{ 0 ci6curtransfer exec 1 ci6curtransfer exec gt } ifelse {{pop 0}}{{pop 1}} ifelse systemdict /settransfer get exec ci6compositeimage grestore } def /ci6drawimage { ci6testplate -1 eq { pop ci6compositeimage }{ dup type /arraytype eq { dup length plateindex gt {plateindex get}{pop false} ifelse }{ { true }{ dup 1 eq {plateindex 3 eq}{plateindex 3 le} ifelse } ifelse } ifelse { dup 1 eq { pop pop ci6image }{ dup 3 eq { ci6compositeimage }{ pop pop sourcearray 0 3 -1 roll put /ci6separatecmykproc load ci6image } ifelse } ifelse }{ ci6curoverprint { 7 {pop} repeat }{ ci6knockoutimage } ifelse } ifelse } ifelse } def /ci6proctintimage { /_ptispace exch store /_ptiname exch store /_pti1 exch store /_pti0 exch store /_ptiproc exch store /_pticomps _ptispace ci6numcomps store /_ptiscale _pti1 _pti0 sub store level2? { _ptiname length 0 gt version cvr 2012 ge and { [/Separation _ptiname _ptispace {_ptiproc}] setcolorspace [_pti0 _pti1] ci6makeimagedict ci6image }{ [/Indexed _ptispace 255 {255 div _ptiscale mul _pti0 add _ptiproc}] setcolorspace [0 255] ci6makeimagedict ci6image } ifelse }{ _pticomps 1 eq { { dup { 255 div _ptiscale mul _pti0 add _ptiproc 255 mul cvi put } ci6stringapply } ci6concatprocs ci6image }{ { dup length _pticomps mul dup _ptibuf length ne {/_ptibuf exch string store}{pop} ifelse _ptibuf { exch _pticomps mul exch 255 div _ptiscale mul _pti0 add _ptiproc _pticomps 2 add -2 roll _pticomps 1 sub -1 0 { 1 index add 2 index exch 5 -1 roll 255 mul cvi put } for pop pop } ci6stringapply } ci6concatprocs false _pticomps /ci6colorimage load null eq {7 {pop} repeat}{ci6colorimage} ifelse } ifelse } ifelse } def /ci6graytintimage { /_gtigray 5 -1 roll store {1 _gtigray sub mul 1 exch sub} 4 1 roll /DeviceGray ci6proctintimage } def /ci6cmyktintimage { /_cticmyk 5 -1 roll store {_cticmyk {1 index mul exch} forall pop} 4 1 roll /DeviceCMYK ci6proctintimage } def /ci6rgbtintimage { /_rtirgb 5 -1 roll store {_rtirgb {1 exch sub 1 index mul 1 exch sub exch} forall pop} 4 1 roll /DeviceRGB ci6proctintimage } def /ci6tintimage { ci6testplate -1 eq { ci6colorexpand 3 -1 roll 5 -1 roll {0}{0 exch} ifelse 4 2 roll dup /DeviceGray eq { pop ci6graytintimage }{ dup /DeviceRGB eq { pop ci6rgbtintimage }{ pop ci6cmyktintimage } ifelse } ifelse }{ dup ci6marksplate { plateindex 5 lt { ci6colortocmyk plateindex get dup 0 eq ci6curoverprint and { 7 {pop} repeat }{ 1 exch sub exch {1 0}{0 1} ifelse () ci6graytintimage } ifelse }{ pop exch {0}{0 exch} ifelse 0 3 1 roll () ci6graytintimage } ifelse }{ ci6curoverprint { 8 {pop} repeat }{ pop pop pop {pop 1} 0 1 () /DeviceGray ci6proctintimage } ifelse } ifelse } ifelse } def /XINullImage { } def /XIImageMask { XIImageWidth XIImageHeight false [XIImageWidth 0 0 XIImageHeight neg 0 0] /XIDataProc load imagemask } def /XIImageTint { XIImageWidth XIImageHeight XIBitsPerPixel [XIImageWidth 0 0 XIImageHeight neg 0 0] /XIDataProc load XIType 3 eq XIColorValues XIColorSpace ci6tintimage } def /XIImage { XIImageWidth XIImageHeight XIBitsPerPixel [XIImageWidth 0 0 XIImageHeight neg 0 0] /XIDataProc load false XIChannelCount XIPlateList ci6drawimage } def /XG { pop pop } def /XF { 13 {pop} repeat } def /Xh { Adobe_ColorImage_AI6_Vars begin gsave /XIType exch def /XIImageHeight exch def /XIImageWidth exch def /XIImageMatrix exch def 0 0 moveto XIImageMatrix concat XIImageWidth XIImageHeight scale /_lp /null ddef _fc /_lp /imagemask ddef end } def /XH { Adobe_ColorImage_AI6_Vars begin grestore end } def /XIEnable { Adobe_ColorImage_AI6_Vars /XIEnable 3 -1 roll put } def /XC { Adobe_ColorImage_AI6_Vars begin ci6colormake /XIColorSpace exch def /XIColorValues exch def end } def /XIPlates { Adobe_ColorImage_AI6_Vars begin /XIPlateList exch def end } def /XI { Adobe_ColorImage_AI6_Vars begin gsave /XIType exch def cvi dup 256 idiv /XICompression exch store 256 mod /XIEncoding exch store pop pop /XIChannelCount exch def /XIBitsPerPixel exch def /XIImageHeight exch def /XIImageWidth exch def pop pop pop pop /XIImageMatrix exch def XIBitsPerPixel 1 eq { XIImageWidth 8 div ceiling cvi }{ XIImageWidth XIChannelCount mul } ifelse /XIRowBytes exch def XIEnable { /XIBuffer3 XIImageWidth string def XICompression 0 eq { /XIBuffer1 XIRowBytes string def XIEncoding 0 eq { {currentfile XIBuffer1 readhexstring pop} }{ {currentfile XIBuffer1 readstring pop} } ifelse }{ /XIBuffer1 256 string def /XIBuffer2 XIRowBytes string def {currentfile XIBuffer1 readline pop (%) anchorsearch {pop} if} /ASCII85Decode filter /DCTDecode filter /XIFile exch def {XIFile XIBuffer2 readstring pop} } ifelse /XIDataProc exch def XIType 1 ne { 0 setgray } if XIType 1 eq { XIImageMask }{ XIType 2 eq XIType 3 eq or { XIImageTint }{ XIImage } ifelse } ifelse }{ XINullImage } ifelse /XIPlateList false def grestore end } def end %%EndProcSet %%BeginResource: procset Adobe_Illustrator_AI5 1.3 0 %%Title: (Adobe Illustrator (R) Version 8.0 Full Prolog) %%Version: 1.3 0 %%CreationDate: (3/7/1994) () %%Copyright: ((C) 1987-1998 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_Illustrator_AI5_vars 112 dict dup begin put /_?cmyk false def /_eo false def /_lp /none def /_pf { } def /_ps { } def /_psf { } def /_pss { } def /_pjsf { } def /_pjss { } def /_pola 0 def /_doClip 0 def /cf currentflat def /_lineorientation 0 def /_charorientation 0 def /_yokoorientation 0 def /_tm matrix def /_renderStart [ /e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0 ] def /_renderEnd [ null null null null /i1 /i1 /i1 /i1 ] def /_render -1 def /_shift [0 0] def /_ax 0 def /_ay 0 def /_cx 0 def /_cy 0 def /_leading [ 0 0 ] def /_ctm matrix def /_mtx matrix def /_sp 16#020 def /_hyphen (-) def /_fontSize 0 def /_fontAscent 0 def /_fontDescent 0 def /_fontHeight 0 def /_fontRotateAdjust 0 def /Ss 256 string def Ss 0 (fonts/) putinterval /_cnt 0 def /_scale [1 1] def /_nativeEncoding 0 def /_useNativeEncoding 0 def /_tempEncode 0 def /_pntr 0 def /_tDict 2 dict def /_hfname 100 string def /_hffound false def /Tx { } def /Tj { } def /CRender { } def /_AI3_savepage { } def /_gf null def /_cf 4 array def /_rgbf 3 array def /_if null def /_of false def /_fc { } def /_gs null def /_cs 4 array def /_rgbs 3 array def /_is null def /_os false def /_sc { } def /_pd 1 dict def /_ed 15 dict def /_pm matrix def /_fm null def /_fd null def /_fdd null def /_sm null def /_sd null def /_sdd null def /_i null def /_lobyte 0 def /_hibyte 0 def /_cproc null def /_cscript 0 def /_hvax 0 def /_hvay 0 def /_hvwb 0 def /_hvcx 0 def /_hvcy 0 def /_bitfont null def /_bitlobyte 0 def /_bithibyte 0 def /_bitkey null def /_bitdata null def /_bitindex 0 def /discardSave null def /buffer 256 string def /beginString null def /endString null def /endStringLength null def /layerCnt 1 def /layerCount 1 def /perCent (%) 0 get def /perCentSeen? false def /newBuff null def /newBuffButFirst null def /newBuffLast null def /clipForward? false def end userdict /Adobe_Illustrator_AI5 known not { userdict /Adobe_Illustrator_AI5 100 dict put } if userdict /Adobe_Illustrator_AI5 get begin /initialize { Adobe_Illustrator_AI5 dup begin Adobe_Illustrator_AI5_vars begin /_aicmykps where {pop /_?cmyk _aicmykps def}if discardDict { bind pop pop } forall dup /nc get begin { dup xcheck 1 index type /operatortype ne and { bind } if pop pop } forall end newpath } def /terminate { end end } def /_ null def /ddef { Adobe_Illustrator_AI5_vars 3 1 roll put } def /xput { dup load dup length exch maxlength eq { dup dup load dup length 2 mul dict copy def } if load begin def end } def /npop { { pop } repeat } def /hswj { dup stringwidth 3 2 roll { _hvwb eq { exch _hvcx add exch _hvcy add } if exch _hvax add exch _hvay add } cforall } def /vswj { 0 0 3 -1 roll { dup 255 le _charorientation 1 eq and { dup cstring stringwidth 5 2 roll _hvwb eq { exch _hvcy sub exch _hvcx sub } if exch _hvay sub exch _hvax sub 4 -1 roll sub exch 3 -1 roll sub exch } { _hvwb eq { exch _hvcy sub exch _hvcx sub } if exch _hvay sub exch _hvax sub _fontHeight sub } ifelse } cforall } def /swj { 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef _lineorientation 0 eq { hswj } { vswj } ifelse } def /sw { 0 0 0 6 3 roll swj } def /vjss { 4 1 roll { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto gsave false charpath currentpoint 5 index setmatrix stroke grestore _fontRotateAdjust sub moveto _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto 90 rotate } { currentpoint _fontHeight sub 5 index sub 3 index _sp eq { 9 index sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto gsave 2 index false charpath 6 index setmatrix stroke grestore moveto pop pop } ifelse } cforall 6 npop } def /hjss { 4 1 roll { dup cstring gsave false charpath currentpoint 5 index setmatrix stroke grestore moveto _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto } cforall 6 npop } def /jss { _lineorientation 0 eq { hjss } { vjss } ifelse } def /ss { 0 0 0 7 3 roll jss } def /vjsp { 4 1 roll { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto false charpath currentpoint _fontRotateAdjust sub moveto _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto 90 rotate } { currentpoint _fontHeight sub 5 index sub 3 index _sp eq { 9 index sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto 2 index false charpath moveto pop pop } ifelse } cforall 6 npop } def /hjsp { 4 1 roll { dup cstring false charpath _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto } cforall 6 npop } def /jsp { matrix currentmatrix _lineorientation 0 eq {hjsp} {vjsp} ifelse } def /sp { matrix currentmatrix 0 0 0 7 3 roll _lineorientation 0 eq {hjsp} {vjsp} ifelse } def /pl { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform } def /setstrokeadjust where { pop true setstrokeadjust /c { curveto } def /C /c load def /v { currentpoint 6 2 roll curveto } def /V /v load def /y { 2 copy curveto } def /Y /y load def /l { lineto } def /L /l load def /m { moveto } def } { /c { pl curveto } def /C /c load def /v { currentpoint 6 2 roll pl curveto } def /V /v load def /y { pl 2 copy curveto } def /Y /y load def /l { pl lineto } def /L /l load def /m { pl moveto } def } ifelse /d { setdash } def /cf { } def /i { dup 0 eq { pop cf } if setflat } def /j { setlinejoin } def /J { setlinecap } def /M { setmiterlimit } def /w { setlinewidth } def /XR { 0 ne /_eo exch ddef } def /H { } def /h { closepath } def /N { _pola 0 eq { _doClip 1 eq { _eo {eoclip} {clip} ifelse /_doClip 0 ddef } if newpath } { /CRender { N } ddef } ifelse } def /n { N } def /F { _pola 0 eq { _doClip 1 eq { gsave _pf grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _fc /_doClip 0 ddef } { _pf } ifelse } { /CRender { F } ddef } ifelse } def /f { closepath F } def /S { _pola 0 eq { _doClip 1 eq { gsave _ps grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc /_doClip 0 ddef } { _ps } ifelse } { /CRender { S } ddef } ifelse } def /s { closepath S } def /B { _pola 0 eq { _doClip 1 eq gsave F grestore { gsave S grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc /_doClip 0 ddef } { S } ifelse } { /CRender { B } ddef } ifelse } def /b { closepath B } def /W { /_doClip 1 ddef } def /* { count 0 ne { dup type /stringtype eq { pop } if } if newpath } def /u { } def /U { } def /q { _pola 0 eq { gsave } if } def /Q { _pola 0 eq { grestore } if } def /*u { _pola 1 add /_pola exch ddef } def /*U { _pola 1 sub /_pola exch ddef _pola 0 eq { CRender } if } def /D { pop } def /*w { } def /*W { } def /` { /_i save ddef clipForward? { nulldevice } if 6 1 roll 4 npop concat pop userdict begin /showpage { } def 0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit [] 0 setdash /setstrokeadjust where {pop false setstrokeadjust} if newpath 0 setgray false setoverprint } def /~ { end _i restore } def /_rgbtocmyk { 3 { 1 exch sub 3 1 roll } repeat 3 copy 1 4 1 roll 3 { 3 index 2 copy gt { exch } if pop 4 1 roll } repeat pop pop pop 4 1 roll 3 { 3 index sub 3 1 roll } repeat 4 -1 roll } def /setrgbfill { _rgbf astore pop /_fc { _lp /fill ne { _of setoverprint _rgbf aload pop setrgbcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /setrgbstroke { _rgbs astore pop /_sc { _lp /stroke ne { _os setoverprint _rgbs aload pop setrgbcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /O { 0 ne /_of exch ddef /_lp /none ddef } def /R { 0 ne /_os exch ddef /_lp /none ddef } def /g { /_gf exch ddef /_fc { _lp /fill ne { _of setoverprint _gf setgray /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /G { /_gs exch ddef /_sc { _lp /stroke ne { _os setoverprint _gs setgray /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /k { _cf astore pop /_fc { _lp /fill ne { _of setoverprint _cf aload pop setcmykcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /K { _cs astore pop /_sc { _lp /stroke ne { _os setoverprint _cs aload pop setcmykcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /Xa { _?cmyk { 3 npop k }{ setrgbfill 4 npop } ifelse } def /XA { _?cmyk { 3 npop K }{ setrgbstroke 4 npop } ifelse } def /Xs { /_gf exch ddef 5 npop /_fc { _lp /fill ne { _of setoverprint _gf setAIseparationgray /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /XS { /_gs exch ddef 5 npop /_sc { _lp /stroke ne { _os setoverprint _gs setAIseparationgray /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /Xx { exch /_gf exch ddef 0 eq { findcmykcustomcolor }{ _?cmyk {true}{/findrgbcustomcolor where{pop false}{true}ifelse}ifelse { 4 1 roll 3 npop findcmykcustomcolor }{ 8 -4 roll 4 npop findrgbcustomcolor } ifelse } ifelse /_if exch ddef /_fc { _lp /fill ne { _of setoverprint _if _gf 1 exch sub setcustomcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /XX { exch /_gs exch ddef 0 eq { findcmykcustomcolor }{ _?cmyk {true}{/findrgbcustomcolor where{pop false}{true}ifelse}ifelse { 4 1 roll 3 npop findcmykcustomcolor }{ 8 -4 roll 4 npop findrgbcustomcolor } ifelse } ifelse /_is exch ddef /_sc { _lp /stroke ne { _os setoverprint _is _gs 1 exch sub setcustomcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /x { /_gf exch ddef findcmykcustomcolor /_if exch ddef /_fc { _lp /fill ne { _of setoverprint _if _gf 1 exch sub setcustomcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /X { /_gs exch ddef findcmykcustomcolor /_is exch ddef /_sc { _lp /stroke ne { _os setoverprint _is _gs 1 exch sub setcustomcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /XK { 3 -1 roll pop 0 eq { 1 exch sub 3 {dup 3 1 roll mul 5 1 roll} repeat mul 4 1 roll K } { 1 exch sub 4 1 roll 3 {1 exch sub 3 index mul 1 exch sub 3 1 roll} repeat 4 -1 roll pop XA } ifelse } def /Xk { 3 -1 roll pop 0 eq { 1 exch sub 3 {dup 3 1 roll mul 5 1 roll} repeat mul 4 1 roll k } { 1 exch sub 4 1 roll 3 {1 exch sub 3 index mul 1 exch sub 3 1 roll} repeat 4 -1 roll pop Xa } ifelse } def /A { pop } def /annotatepage { userdict /annotatepage 2 copy known {get exec} {pop pop} ifelse } def /XT { pop pop } def /Xt { pop } def /discard { save /discardSave exch store discardDict begin /endString exch store gt38? { 2 add } if load stopped pop end discardSave restore } bind def userdict /discardDict 7 dict dup begin put /pre38Initialize { /endStringLength endString length store /newBuff buffer 0 endStringLength getinterval store /newBuffButFirst newBuff 1 endStringLength 1 sub getinterval store /newBuffLast newBuff endStringLength 1 sub 1 getinterval store } def /shiftBuffer { newBuff 0 newBuffButFirst putinterval newBuffLast 0 currentfile read not { stop } if put } def 0 { pre38Initialize mark currentfile newBuff readstring exch pop { { newBuff endString eq { cleartomark stop } if shiftBuffer } loop } { stop } ifelse } def 1 { pre38Initialize /beginString exch store mark currentfile newBuff readstring exch pop { { newBuff beginString eq { /layerCount dup load 1 add store } { newBuff endString eq { /layerCount dup load 1 sub store layerCount 0 eq { cleartomark stop } if } if } ifelse shiftBuffer } loop } if } def 2 { mark { currentfile buffer {readline} stopped { % assume error was due to overfilling the buffer }{ not { stop } if endString eq { cleartomark stop } if }ifelse } loop } def 3 { /beginString exch store /layerCnt 1 store mark { currentfile buffer {readline} stopped { % assume error was due to overfilling the buffer }{ not { stop } if dup beginString eq { pop /layerCnt dup load 1 add store } { endString eq { layerCnt 1 eq { cleartomark stop } { /layerCnt dup load 1 sub store } ifelse } if } ifelse }ifelse } loop } def end userdict /clipRenderOff 15 dict dup begin put { /n /N /s /S /f /F /b /B } { { _doClip 1 eq { /_doClip 0 ddef _eo {eoclip} {clip} ifelse } if newpath } def } forall /Tr /pop load def /Bb {} def /BB /pop load def /Bg {12 npop} def /Bm {6 npop} def /Bc /Bm load def /Bh {4 npop} def end /Lb { 6 npop 7 2 roll 5 npop 0 eq { 0 eq { (%AI5_BeginLayer) 1 (%AI5_EndLayer--) discard } { /clipForward? true def /Tx /pop load def /Tj /pop load def currentdict end clipRenderOff begin begin } ifelse } { 0 eq { save /discardSave exch store } if } ifelse } bind def /LB { discardSave dup null ne { restore } { pop clipForward? { currentdict end end begin /clipForward? false ddef } if } ifelse } bind def /Pb { pop pop 0 (%AI5_EndPalette) discard } bind def /Np { 0 (%AI5_End_NonPrinting--) discard } bind def /Ln /pop load def /Ap /pop load def /Ar { 72 exch div 0 dtransform dup mul exch dup mul add sqrt dup 1 lt { pop 1 } if setflat } def /Mb { q } def /Md { } def /MB { Q } def /nc 4 dict def nc begin /setgray { pop } bind def /setcmykcolor { 4 npop } bind def /setrgbcolor { 3 npop } bind def /setcustomcolor { 2 npop } bind def currentdict readonly pop end /XP { 4 npop } bind def /XD { pop } bind def end setpacking %%EndResource %%BeginResource: procset Adobe_pattern_AI5 1.1 0 %%Title: (Adobe Illustrator (R) Version 5.0 Pattern Operators) %%Version: 1.1 0 %%CreationDate: (03/26/93) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_Illustrator_AI5 known not { userdict /Adobe_Illustrator_AI5 95 dict put } if userdict /Adobe_Illustrator_AI5 get begin /@ { } def /& { } def /dp { dup null eq { pop _dp 0 ne { 0 1 _dp 1 sub _dl mod { _da exch get 3 get } for _dp 1 sub _dl mod 1 add packedarray _da 0 get aload pop 8 -1 roll 5 -1 roll pop 4 1 roll definepattern pop } if } { _dp 0 ne _dp _dl mod 0 eq and { null dp } if 7 packedarray _da exch _dp _dl mod exch put _dp _dl mod _da 0 get 4 get 2 packedarray /_dp _dp 1 add def } ifelse } def /E { _ed begin dup 0 get type /arraytype ne { 0 { dup 1 add index type /arraytype eq { 1 add } { exit } ifelse } loop array astore } if /_dd exch def /_ury exch def /_urx exch def /_lly exch def /_llx exch def /_n exch def /_y 0 def /_dl 4 def /_dp 0 def /_da _dl array def 0 1 _dd length 1 sub { /_d exch _dd exch get def 0 2 _d length 2 sub { /_x exch def /_c false def /_r _d _x 1 add get cvlit def _r _ ne { _urx _llx sub _ury _lly sub [ 1 0 0 1 0 0 ] [ /save cvx _llx neg _lly neg /translate cvx _c { nc /begin cvx } if _r dup type /stringtype eq { cvx } { { exec } /forall cvx } ifelse _c { /end cvx } if /restore cvx ] cvx /_fn 12 _n length add string def _y _fn cvs pop /_y _y 1 add def _fn 12 _n putinterval _fn _c false dp _d exch _x 1 add exch put } if } for } for null dp _n _dd /_pd end xput } def /fc { _fm dup concatmatrix pop } def /p { /_fm exch ddef 9 -2 roll _pm translate fc 7 -2 roll _pm scale fc 5 -1 roll _pm rotate fc 4 -2 roll exch 0 ne { dup _pm rotate fc 1 -1 _pm scale fc neg _pm rotate fc } { pop } ifelse dup _pm rotate fc exch dup sin exch cos div 1 0 0 1 0 6 2 roll _pm astore fc neg _pm rotate fc _pd exch get /_fdd exch ddef /_pf { save /_doClip 0 ddef 0 1 _fdd length 1 sub { /_fd exch _fdd exch get ddef _fd 0 2 _fd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _fc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _fm patternfill } { pop fill } ifelse grestore pop } for pop } for restore newpath } ddef /_psf { save /_doClip 0 ddef 0 1 _fdd length 1 sub { /_fd exch _fdd exch get ddef _fd 0 2 _fd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _fc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _fm 9 copy 6 npop patternashow } { pop 6 copy 3 npop hvashow } ifelse grestore pop } for pop } for restore sw rmoveto } ddef /_pjsf { save /_doClip 0 ddef 0 1 _fdd length 1 sub { /_fd exch _fdd exch get ddef _fd 0 2 _fd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _fc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _fm 12 copy 6 npop patternawidthshow } { pop 9 copy 3 npop hvawidthshow } ifelse grestore pop } for pop } for restore swj rmoveto } ddef /_lp /none ddef } def /sc { _sm dup concatmatrix pop } def /P { /_sm exch ddef 9 -2 roll _pm translate sc 7 -2 roll _pm scale sc 5 -1 roll _pm rotate sc 4 -2 roll exch 0 ne { dup _pm rotate sc 1 -1 _pm scale sc neg _pm rotate sc } { pop } ifelse dup _pm rotate sc exch dup sin exch cos div 1 0 0 1 0 6 2 roll _pm astore sc neg _pm rotate sc _pd exch get /_sdd exch ddef /_ps { save /_doClip 0 ddef 0 1 _sdd length 1 sub { /_sd exch _sdd exch get ddef _sd 0 2 _sd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _sc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _sm patternstroke } { pop stroke } ifelse grestore pop } for pop } for restore newpath } ddef /_pss { save /_doClip 0 ddef 0 1 _sdd length 1 sub { /_sd exch _sdd exch get ddef _sd 0 2 _sd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _sc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _sm 10 copy 6 npop patternashowstroke } { pop 7 copy 3 npop ss } ifelse grestore pop } for pop } for restore pop sw rmoveto } ddef /_pjss { save /_doClip 0 ddef 0 1 _sdd length 1 sub { /_sd exch _sdd exch get ddef _sd 0 2 _sd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _sc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _sm 13 copy 6 npop patternawidthshowstroke } { pop 10 copy 3 npop jss } ifelse grestore pop } for pop } for restore pop swj rmoveto } ddef /_lp /none ddef } def end userdict /Adobe_pattern_AI5 18 dict dup begin put /initialize { /definepattern where { pop pop pop } { begin begin Adobe_pattern_AI5 begin Adobe_pattern_AI5 { dup xcheck { bind } if pop pop } forall mark cachestatus 7 1 roll pop pop pop pop exch pop exch { { 10000 add dup 2 index gt { exit } if dup setcachelimit } loop } stopped cleartomark end end end Adobe_pattern_AI5 begin } ifelse } def /terminate { currentdict Adobe_pattern_AI5 eq { end } if } def errordict /nocurrentpoint { pop stop } put errordict /invalidaccess { pop stop } put /patternencoding 256 array def 0 1 255 { patternencoding exch ( ) 2 copy exch 0 exch put cvn put } for /definepattern { 17 dict begin /uniform exch def /cache exch def /key exch def /procarray exch def /mtx exch matrix invertmatrix def /height exch def /width exch def /ctm matrix currentmatrix def /ptm matrix def /str 32 string def /slice 9 dict def slice /s 1 put slice /q 256 procarray length div sqrt floor cvi put slice /b 0 put /FontBBox [ 0 0 0 0 ] def /FontMatrix mtx matrix copy def /Encoding patternencoding def /FontType 3 def /BuildChar { exch begin /setstrokeadjust where {pop true setstrokeadjust} if slice begin dup q dup mul mod s idiv /i exch def dup q dup mul mod s mod /j exch def q dup mul idiv procarray exch get /xl j width s div mul def /xg j 1 add width s div mul def /yl i height s div mul def /yg i 1 add height s div mul def uniform { 1 1 } { width 0 dtransform dup mul exch dup mul add sqrt dup 1 add exch div 0 height dtransform dup mul exch dup mul add sqrt dup 1 add exch div } ifelse width 0 cache { xl 4 index mul yl 4 index mul xg 6 index mul yg 6 index mul setcachedevice } { setcharwidth } ifelse gsave scale newpath xl yl moveto xg yl lineto xg yg lineto xl yg lineto closepath clip newpath end end exec grestore } def key currentdict definefont end } def /patterncachesize { gsave newpath 0 0 moveto width 0 lineto width height lineto 0 height lineto closepath patternmatrix setmatrix pathbbox exch ceiling 4 -1 roll floor sub 3 1 roll ceiling exch floor sub mul 1 add grestore } def /patterncachelimit { cachestatus 7 1 roll 6 npop 8 mul } def /patternpath { exch dup begin setfont ctm setmatrix concat slice exch /b exch slice /q get dup mul mul put FontMatrix concat uniform { width 0 dtransform round width div exch round width div exch 0 height dtransform round height div exch height div exch 0 0 transform round exch round exch ptm astore setmatrix } { ptm currentmatrix pop } ifelse { currentpoint } stopped not { 2 npop pathbbox true 4 index 3 index eq 4 index 3 index eq and { pop false { { 2 npop } { 3 npop true } { 7 npop true } { pop true } pathforall } stopped { 5 npop true } if } if { height div ceiling height mul 4 1 roll width div ceiling width mul 4 1 roll height div floor height mul 4 1 roll width div floor width mul 4 1 roll 2 index sub height div ceiling cvi exch 3 index sub width div ceiling cvi exch 4 2 roll moveto FontMatrix mtx invertmatrix dup dup 4 get exch 5 get rmoveto ptm ptm concatmatrix pop slice /s patterncachesize patterncachelimit div ceiling sqrt ceiling cvi dup slice /q get gt { pop slice /q get } if put 0 1 slice /s get dup mul 1 sub { slice /b get add gsave 0 1 str length 1 sub { str exch 2 index put } for pop dup { gsave ptm setmatrix 1 index str length idiv { str show } repeat 1 index str length mod str exch 0 exch getinterval show grestore 0 height rmoveto } repeat grestore } for 2 npop } { 4 npop } ifelse } if end } def /patternclip { _eo {eoclip} {clip} ifelse } def /patternstrokepath { strokepath } def /patternmatrix matrix def /patternfill { dup type /dicttype eq { Adobe_pattern_AI5 /patternmatrix get } if gsave patternclip Adobe_pattern_AI5 /patternpath get exec grestore newpath } def /patternstroke { dup type /dicttype eq { Adobe_pattern_AI5 /patternmatrix get } if gsave patternstrokepath true { { { newpath moveto } { lineto } { curveto } { closepath 3 copy Adobe_pattern_AI5 /patternfill get exec } pathforall 3 npop } stopped { 5 npop patternclip Adobe_pattern_AI5 /patternfill get exec } if } { patternclip Adobe_pattern_AI5 /patternfill get exec } ifelse grestore newpath } def /vpatternawidthshow { 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto gsave false charpath currentpoint 5 index 5 index 5 index Adobe_pattern_AI5 /patternfill get exec grestore _fontRotateAdjust sub moveto _hvwb eq { _hvcx _hvcy rmoveto } if _hvax _hvay rmoveto 90 rotate } { currentpoint _fontHeight sub _hvax sub 3 index _hvwb eq { _hvcx sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto gsave 2 index false charpath 6 index 6 index 6 index Adobe_pattern_AI5 /patternfill get exec grestore newpath moveto pop pop } ifelse } cforall 3 npop } def /hpatternawidthshow { { dup cstring exch gsave 3 index eq { 5 index 5 index rmoveto } if false charpath currentpoint 9 index 9 index 9 index Adobe_pattern_AI5 /patternfill get exec grestore newpath moveto 2 copy rmoveto } cforall 8 npop } def /patternashow { 0 0 0 6 3 roll patternawidthshow } def /patternawidthshow { 6 index type /dicttype eq { Adobe_pattern_AI5 /patternmatrix get 7 1 roll } if _lineorientation 0 eq { hpatternawidthshow } { vpatternawidthshow } ifelse } def /vpatternawidthshowstroke { 7 1 roll 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto gsave false charpath currentpoint 3 index setmatrix 6 index 6 index 6 index Adobe_pattern_AI5 /patternstroke get exec grestore _fontRotateAdjust sub moveto _hvwb eq { _hvcx _hvcy rmoveto } if _hvax _hvay rmoveto 90 rotate } { currentpoint _fontHeight sub _hvax sub 3 index _hvwb eq { _hvcx sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto gsave 2 index false charpath 4 index setmatrix 7 index 7 index 7 index Adobe_pattern_AI5 /patternstroke get exec grestore newpath moveto pop pop } ifelse } cforall 4 npop } def /hpatternawidthshowstroke { 7 1 roll { dup cstring exch gsave 3 index eq { 5 index 5 index rmoveto } if false charpath currentpoint 7 index setmatrix 10 index 10 index 10 index Adobe_pattern_AI5 /patternstroke get exec grestore newpath moveto 2 copy rmoveto } cforall 9 npop } def /patternashowstroke { 0 0 0 7 3 roll patternawidthshowstroke } def /patternawidthshowstroke { 7 index type /dicttype eq { patternmatrix /patternmatrix get 8 1 roll } if _lineorientation 0 eq { hpatternawidthshowstroke } { vpatternawidthshowstroke } ifelse } def end setpacking %%EndResource %%BeginResource: procset Adobe_cshow 2.0 8 %%Title: (Writing System Operators) %%Version: 2.0 8 %%CreationDate: (1/23/89) () %%Copyright: ((C) 1992-1996 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_cshow 14 dict dup begin put /initialize { Adobe_cshow begin Adobe_cshow { dup xcheck { bind } if pop pop } forall end Adobe_cshow begin } def /terminate { currentdict Adobe_cshow eq { end } if } def /cforall { /_lobyte 0 ddef /_hibyte 0 ddef /_cproc exch ddef /_cscript currentfont /FontScript known { currentfont /FontScript get } { -1 } ifelse ddef { /_lobyte exch ddef _hibyte 0 eq _cscript 1 eq _lobyte 129 ge _lobyte 159 le and _lobyte 224 ge _lobyte 252 le and or and _cscript 2 eq _lobyte 161 ge _lobyte 254 le and and _cscript 3 eq _lobyte 161 ge _lobyte 254 le and and _cscript 25 eq _lobyte 161 ge _lobyte 254 le and and _cscript -1 eq or or or or and { /_hibyte _lobyte ddef } { _hibyte 256 mul _lobyte add _cproc /_hibyte 0 ddef } ifelse } forall } def /cstring { dup 256 lt { (s) dup 0 4 3 roll put } { dup 256 idiv exch 256 mod (hl) dup dup 0 6 5 roll put 1 4 3 roll put } ifelse } def /clength { 0 exch { 256 lt { 1 } { 2 } ifelse add } cforall } def /hawidthshow { { dup cstring show _hvax _hvay rmoveto _hvwb eq { _hvcx _hvcy rmoveto } if } cforall } def /vawidthshow { { dup 255 le _charorientation 1 eq and { -90 rotate 0 _fontRotateAdjust rmoveto cstring _hvcx _hvcy _hvwb _hvax _hvay 6 -1 roll awidthshow 0 _fontRotateAdjust neg rmoveto 90 rotate } { currentpoint _fontHeight sub exch _hvay sub exch _hvax sub 2 index _hvwb eq { exch _hvcy sub exch _hvcx sub } if 3 2 roll cstring dup stringwidth pop 2 div neg _fontAscent neg rmoveto show moveto } ifelse } cforall } def /hvawidthshow { 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef _lineorientation 0 eq { hawidthshow } { vawidthshow } ifelse } def /hvwidthshow { 0 0 3 -1 roll hvawidthshow } def /hvashow { 0 0 0 6 -3 roll hvawidthshow } def /hvshow { 0 0 0 0 0 6 -1 roll hvawidthshow } def currentdict readonly pop end setpacking %%EndResource %%BeginResource: procset Adobe_shading_AI8 1.0 0 %%Title: (Adobe Illustrator 8 Shading Procset) %%Version: 1.0 0 %%CreationDate: (12/17/97) () %%Copyright: ((C) 1987-1997 Adobe Systems Incorporated All Rights Reserved) userdict /defaultpacking currentpacking put true setpacking userdict /Adobe_shading_AI8 10 dict dup begin put /initialize { Adobe_shading_AI8 begin Adobe_shading_AI8 bdprocs Mesh /initialize get exec } def /terminate { currentdict Adobe_shading_AI8 eq { end } if } def /bdprocs { { dup xcheck 1 index type /arraytype eq and { bind } if pop pop } forall } def /X! {pop} def /X# {pop pop} def /Mesh 40 dict def Mesh begin /initialize { Mesh bdprocs Mesh begin /emulate? /AI8MeshEmulation where { pop AI8MeshEmulation }{ systemdict /shfill known not } ifelse def end } def /bd { shadingdict begin } def /paint { emulate? { end }{ /_lp /none ddef _fc /_lp /none ddef /AIColorSpace AIColorSpace tocolorspace store /ColorSpace AIColorSpace topsspace store version_ge_3010.106 not systemdict /setsmoothness known and { 0.0001 setsmoothness } if composite? { /DataSource getdatasrc def Matrix concat currentdict end shfill }{ AIColorSpace makesmarks AIPlateList markingplate and not isoverprint and { end }{ /ColorSpace /DeviceGray store /Decode [0 1 0 1 0 1] store /DataSource getplatesrc def Matrix concat currentdict end shfill } ifelse } ifelse } ifelse } def /shadingdict 12 dict def shadingdict begin /ShadingType 6 def /BitsPerCoordinate 16 def /BitsPerComponent 8 def /BitsPerFlag 8 def end /datafile null def /databuf 256 string def /dataptr 0 def /srcspace null def /srcchannels 0 def /dstchannels 0 def /dstplate 0 def /srctodstcolor null def /getplatesrc { /srcspace AIColorSpace store /srcchannels AIColorSpace getnchannels store /dstchannels 1 store /dstplate getplateindex store /srctodstcolor srcspace makesmarks { dstplate 4 eq { {1 exch sub} }{ {srcspace tocmyk 3 dstplate sub index 1 exch sub 5 1 roll 4 {pop} repeat} } ifelse }{ {srcchannels {pop} repeat 1} } ifelse store /datafile getdatasrc store /rdpatch168 load DataLength () /SubFileDecode filter } def /getdatasrc { /rdcmntline load /ASCII85Decode filter } def /rdpatch168 { /dataptr 0 store 49 rdcount 4 { dup {pop srcchannels getint8} if dup {pop srctodstcolor dstchannels putint8 true} if } repeat {databuf 0 dataptr getinterval}{()} ifelse } def /rdpatch3216 { /dataptr 0 store 97 rdcount 4 { dup {pop srcchannels getint16} if dup {pop srctodstcolor dstchannels putint16 true} if } repeat {databuf 0 dataptr getinterval}{()} ifelse } def /rdcount { dup 0 gt { datafile databuf dataptr 4 -1 roll getinterval readstring exch length dataptr add /dataptr exch store }{ true } ifelse } def /getint8 { mark true 3 -1 roll { dup {pop datafile read} if dup {pop 255 div true} if } repeat { counttomark 1 add -1 roll pop true }{ cleartomark false } ifelse } def /putint8 { dup dataptr add /dataptr exch store dataptr exch { 1 sub exch 255 mul cvi databuf 2 index 3 -1 roll put } repeat pop } def /getint16 { mark true 3 -1 roll { dup {pop datafile read} if dup {pop 256 mul datafile read} if dup {pop add 65535 div true} if } repeat { counttomark 1 add -1 roll pop true }{ cleartomark false } ifelse } def /putint16 { dup 2 mul dataptr add /dataptr exch store dataptr exch { 2 sub exch 65535 mul cvi dup 256 idiv databuf 3 index 3 -1 roll put 256 mod databuf 2 index 1 add 3 -1 roll put } repeat pop } def /srcbuf 256 string def /rdcmntline { currentfile srcbuf readline pop (%) anchorsearch {pop} if } def /getplateindex { 0 [cyan? magenta? yellow? black? customColor?] {{exit} if 1 add} forall } def /aicsarray 4 array def /aicsaltvals 4 array def /aicsaltcolr aicsaltvals def /tocolorspace { dup type /arraytype eq { mark exch aload pop aicsarray 0 3 -1 roll put aicsarray 1 3 -1 roll put dup aicsarray 2 3 -1 roll put gettintxform aicsarray 3 3 -1 roll put counttomark aicsaltvals 0 3 -1 roll getinterval /aicsaltcolr exch store aicsaltcolr astore pop pop aicsarray } if } def /subtintxform {aicsaltcolr {1 index mul exch} forall pop} def /addtintxform {aicsaltcolr {1 sub 1 index mul 1 add exch} forall pop} def /gettintxform { /DeviceRGB eq {/addtintxform}{/subtintxform} ifelse load } def /getnchannels { dup type /arraytype eq {0 get} if colorspacedict exch get begin Channels end } def /makesmarks { composite? { pop true }{ dup dup type /arraytype eq {0 get} if colorspacedict exch get begin MarksPlate end } ifelse } def /markingplate { composite? { pop true }{ dup type /arraytype eq { dup length getplateindex gt {getplateindex get}{pop false} ifelse } if } ifelse } def /tocmyk { dup dup type /arraytype eq {0 get} if colorspacedict exch get begin ToCMYK end } def /topsspace { dup dup type /arraytype eq {0 get} if colorspacedict exch get begin ToPSSpace end } def /colorspacedict 5 dict dup begin /DeviceGray 4 dict dup begin /Channels 1 def /MarksPlate {pop black?} def /ToCMYK {pop 1 exch sub 0 0 0 4 -1 roll} def /ToPSSpace {} def end def /DeviceRGB 4 dict dup begin /Channels 3 def /MarksPlate {pop isCMYKSep?} def /ToCMYK {pop _rgbtocmyk} def /ToPSSpace {} def end def /DeviceCMYK 4 dict dup begin /Channels 4 def /MarksPlate {pop isCMYKSep?} def /ToCMYK {pop} def /ToPSSpace {} def end def /Separation 4 dict dup begin /Channels 1 def /MarksPlate { /findcmykcustomcolor where { pop dup 1 exch ToCMYK 5 -1 roll 1 get findcmykcustomcolor 1 setcustomcolor systemdict /currentgray get exec 1 ne }{ pop false } ifelse } def /ToCMYK { dup 2 get mark exch 4 2 roll 3 get exec counttomark -1 roll tocmyk 5 -1 roll pop } def /ToPSSpace {} def end def /Process 4 dict dup begin /Channels 1 def /MarksPlate { isCMYKSep? { 1 exch ToCMYK 4 array astore getplateindex get 0 ne }{ pop false } ifelse } def /ToCMYK { dup 2 get mark exch 4 2 roll 3 get exec counttomark -1 roll tocmyk 5 -1 roll pop } def /ToPSSpace { 4 array copy dup 0 /Separation put } def end def end def /isoverprint { /currentoverprint where {pop currentoverprint}{_of} ifelse } def /version_ge_3010.106 { version {cvr} stopped { pop false }{ 3010.106 ge } ifelse } def end end defaultpacking setpacking %%EndResource %%EndProlog %%BeginSetup userdict /_useSmoothShade true put userdict /_aicmykps true put userdict /_forceToCMYK true put Adobe_level2_AI5 /initialize get exec Adobe_cshow /initialize get exec Adobe_screens_AI5 /initialize get exec Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_typography_AI5 /initialize get exec Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 AGM_Gradient /initializeAI get exec Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_pattern_AI5 /initialize get exec Adobe_ColorImage_AI6 /initialize get exec Adobe_shading_AI8 /initialize get exec Adobe_Illustrator_AI5 /initialize get exec %AI3_BeginRider currentpacking true setpacking %%BeginFont: Times-Roman %!PS-AdobeFont-1.0: Times-Roman 001.007 %%CreationDate: Tue Mar 20 12:15:38 1990 %%VMusage: 30487 37379 %% The digitally encoded machine readable outline data for producing the %% Typefaces licensed to you is copyrighted (c) 1981 Linotype AG and/or its %% subsidiaries. All Rights Reserved. This data is the property of Linotype AG %% and/or its subsidiaries and may not be reproduced, used, displayed, %% modified, disclosed or transferred without the express written approval of %% Linotype AG and/or its subsidiaries. %% Times is a trademark of Linotype AG and/or its subsidiaries. 11 dict begin /FontInfo 10 dict dup begin /version (001.007) readonly def /Notice (Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype AG and/or its subsidiaries.) readonly def /Copyright ( The digitally encoded machine readable outline data for producing the Typefaces licensed to you is copyrighted (c) 1981 Linotype AG and/or its subsidiaries. All Rights Reserved. This data is the property of Linotype AG and/or its subsidiaries and may not be reproduced, used, displayed, modified, disclosed or transferred without the express written approval of Linotype AG and/or its subsidiaries. ) readonly def /FullName (Times Roman) readonly def /FamilyName (Times) readonly def /Weight (Roman) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /FontName /Times-Roman def /Encoding StandardEncoding def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /UniqueID 28416 def /FontBBox{-168 -218 1000 898}readonly def currentdict end currentfile eexec Z¤÷UP7ñ¤1ºµU(= <ºYOu}#jþpèU$¼7F37j©ÁPaŠÀÿn¶³'3¾U¯ø°¨%ì»…þC´qœÂ¢\ ÌZ³IY`½ÿc¿Ñä޿ÈW-ê@Rš#»•¤Ó”«'ÝüØ8kgjŠ…Ý޽†Ò (‚űÄ)õ)¥ÅØ ÔÆù¨÷F¼EØDË!»É¾—V±3zE‹‹ð—à€ aÖuD}¦ž¨EêÜÔbsRÙ’³{$£©Tònœ†$k‡$Hÿ¡j—沞ª+­ÿ–Í3Ѽ‰ŸK¢-'h9uk}Î8&7¿)P]Å_"dÝÂE>¦¨ÿ-‚¹œû8ú^gcß[Ày4¯¨Ä Y%ÃLA`r8š·I·Õ«hÓ‘ÀÆB‚ ñ[‚‘ÏÎRÓƒf×m†Ç%…D´Rµ?¥ sßìL÷[+»Þ÷†9½8jàǹ*(ÏÈ$ °’´ôÒ˜°i²“€Z·äüXÂäMCmþü¾ÛÁ aeTÀ ½º4™%ê#«/Å+óôK÷1ªÐ‘©ºËœ”Ýðíw¯\Á Nµ|®µ€L¶qiI»Xi±0†ÂRqº›NàŠ¶q°ÑB­Rër»×ð.È•û~š¡›ûh©ÀO™‘àÀÑ|ž7¸×­]kW'¡¿‹€è¶ëp’]j51ÓË „w¼_ˆô‚³TK”9Œ®{ÍŒ&Ï÷¯U¨Œïñ} åÌ ÌýQ4¿9ëcR¨¦sÅwÂÿ¥?ŠyujÙ/õ쾸:Ó†Ñ'qòá«MX¾"j3ÜRl®*j«ýx¯÷"°>Ì(‘H›ÇœlÉC‰óßeZíío oF1®!A=„¤~b–¬ –øð²åüZÓUÓÄ-a¹2:×”&w€={[_mÇ­·óñ¾Ö'×ÿVó<‘‡ø£9×D ?sùXZ‰‡?ÆÛ€ˆŸ«3Xƒ1{8ÇO_5LÚgÛíÁF`uuø¿>äs“ÙOal¿íÎ]1J]DZýO‘ÚWñR<‹IÙºxÒ#O×ÞÊF»…>ÎS¶€\=£ ÀöÅÛIr­h†«¬ ÃLê˜aq™V?7ÍŽ'§)Ö+ÄP/H?@L)ʱ;‡é0į¾Óó²0sýj1_PüÂúùÛxm~q„ŠGp± "ápø²tùò1ÿ”#tb7,ð;¸³»Ø­Ú‘È1¬²ØßÕÃÑÈ‹ð¤Rêª †ÌDÛ£)LDÔ¦§ÿŽ ó„΢]íB.šÛìË’$zïvP ¸n4åb=mw‰Å]ªåK,HZ½7!,ùv:ôƒÿ¿DåÐîCx„•ÿ2QßÉi­œ6Ð̃ÅÉ”/xÛQ‹z,èR$Oè¤ÈØÒÛÔ!ßi“9æl¤ÿ…C¡¤ jvÜ>ÌzÚÍH‹>Õhú¾•æÔ$2Áø}ÒÜó½H"¯NLkÛ¢ÈUÛî`H¥\ËÅߺ][§>½šRSÀàŸ™|Íç ®ŽÒ³ò…)ˆ-ÒI#ëÍçG®Ç³«Ÿ*¸¶À['2Ö~5}Ù<Ñr+ʵmôòF4cÀè®ZA¸œnìÕÚïÈ—D¨ÆAþžæ!Ê÷lÚ!º÷Ï-ŽœçXfNê/ÿk'úñ‰8Ì^®S¶dsÔ²{7ÿëZHÄàPÍÿ…9‡QØà‡X”˜¥?o7¿Ÿv¥mSñLÐÏÞðvu„ƒ€Ð»©u´ÚVÕ^í_±šdE³‡*rCÁkàpÞŽW¢FDÍ º”šªˆî5h£cŽ:Có}G1ˆŠ˜Y~#üq5°0PŽ8gEÌ’®ü €b­J×åFÍE3Ý¿ Œ3Nzž& @D7~ü’…Ö 7´M`É/_B"B¨õý/Õ¿!¦h²F ÈòÌÿÞ¦ö Ïáüµïˆd¦ò5Ä@<¡´uü`3K 3Úú}è€3ë¨ÔhØÌ¥,\›ÆTë‥ù:ßÐÒ:‹iL²äPžêo£­÷ž–žkÅæÕÚ¯+ðßš6öQC6€V•åÇCż®ÿ☥ãûTGL*¥y°×;Á¦ÇœúÎA?jÒ·ÂâÁê ÷^è¥kjÙ'K`Ò×@[P;Sçq8Uȧc»;~4·Ï|J^~®¨Å‹+AP­X¡þì‰Ï]œö ¿.+ÛZ_$T3‘¯‹ø|ÚÌèãôHP>%!ÀÆâD‚–•o)õØ£ÏÈɸ¿gmºÒ3Ÿ—6DÄɦVX~³‰Ø; ’ƒN½6 )?lL꾟wÌè„K™åÓºc Y…‘v[}zª„‡Ê$òñU‚£4¾U¢–BãÕ¥ž:Ýì_ÈäSm….ä®bŽmXdóæ¦î„cùSð ß7w­à ùÒëª$T:þu¶k…8o!ÙÁÑØYB@Rð Ⱥ"1ûG´÷}“Ú(=+¾Ì#ø–ìÌ9(™6äT;nÓpAËñ÷­ òJðXI£ m½¾jª]hÜ?;œ0%`Ê ?ÊŠ8KôºJ²DýÔßt¨õ­òðù]ŽGåø•wÄ”6.”b6,é«KPˆ!¢ÉRû2%(Ÿ/×(k¢oMõ—TÐÏâ>_j­}o6IJäwrK+掺Z@îAùw'Y@Svš˜Š(ÿ¾²e‘2Xœ’a—"•´Îžé]Ã,ø‚ªC°~\Ö¾Sàœ?–P‘ÍÉ@‰¾üÖ—´/ë>×ÎÐÌ1aýù|L@•“aå_»¨b|ÿ<=‚ ž²XÒ®Ô9¨Z÷†È)C:éö›!Íþ[´z°¥ãûTGL,y’«Ð5ä`á >múÏ8'ž#۸ʡ:ö.Œ£SûÃy áGU2–Õ½Ïã-±Úɵ4[Åc6Þ7Â÷Ô^Ý"ËÄ@wN¾ã”EY%UüVj ã„[:J÷ÍT§G4,ÑÇAð¥1ùx”#ÁEB´²€º <°=:;ë.îç6‰^(õ‡Õ/}|I$Ö­¦¡E(öí?˜C”§µÖ²=¥€r=8«Þ=Ô¾:L˜ÐíXûAÎäÒÕzˆb2/£‹;qQm¹>4w-Ǫ™/š‹îÞ~&‰ß3–ŠzJkµf2ÛI$ö@f·¿o}Ô Åm£æó8€ôëŠÜ©M`”[–Às 4r"ÌŒ£ŒX:_OŽnÒÌ èÔÉ—¶Ä.ÑK%ìÊ;´zd8iØW}©td:;©8¡¥çl5Jê£ëx¼qK`ãÌS¢¹¿.Ó¥ô\{¥¿iàáQíaò v”ÉB½ú©ÅSdÊÕ ¹æuPæ× ×ëûñöê(Þí#M 0~êy4uÿ l¼ÕàrÝòJW¨y{»9ú#UjY’4$‹°j£{ÿbdÄnîŠ/]¢²R²uP@¡A '%µ\kºœ×ýßtí…¥(:º&ô2>NSpÕ<&ú…ù´ä}ìõ‡õ!^ì\¹Qz¸ö÷.w\NÝc1yr-¦ú*Ñøí\µlÒDÂç?™¾àò>ò ™[ˆ²@ÏO¾²Aª®ÚÝ·Æûdc¸¤¿kþj} 'š >kµ+ÏYÊ}£'U¬¾Å<0å ¤èû„‘H^çÛž‚Ì{ªgWËÊR¼ò²DGìýªŽ9d&SÝ)µ­æá¯¨ºÝW¢Ku{0œ1ÁÂ-‚¤ÙYã–ÈQ®ÝÃzo'¼J'r,—@û­×£Û?uÓ€S’ͥΰᢠN2…:Ê›jö¹–‚¡%¼Î-Šxx¯ðõTHÁl9€§d­>|vRL–ʼn?-9Få}ƒ(á%Å\«gŒüDÂ:y P ŽŠä:ûŸ„¦˜QÓ'ÿ®[öTèUdU‚/½6l˜]ƶ¤uHÉßó—ï¦zC7rBñ¦c[»‰ÄdfµF«ãö P%ÏóS ÀNU*óý!à,2qK/a¤¬ªÐ낆µ}h˜…Ž$EÑÙ‰O¥õ6<£r­–?v|åÖßPÕkëã»O•µÅséëígŒÃÉÿäNN<Ž/{UUP7ñG¬§(d•\!„bŒ' µÙ—cwo„ú®µ‘Sœÿ(³>hç Ž²%“w•\€ÑŠÍzÒIù»•¾Û$¨1€n_½4:~7qÐM^ê¬\ïŸÑ¾%9ÃY¨½M`FÞÄ*q/¤rz€†–!Ð×Åý¹Ï®3fY ¹.*žÂzz„h”C ex²û~‘1}*,øœÊ¥Ñy„¦¨[þÝ»˜ÊñDŒ é9<ÛL>kcbFdÉNÆ,p—Ð"|. |QUË@Á?v0ÿz ±*v‡©¥ákui£•ýn3i«G†T¢ÛK¶–jÏ:.¥—O·KÆCŠHdôg®U+[ü#ùâJ£âíãþ¢y#ñÓçÍR§GCï<åÖœý}Ÿ‘Ú›þ£–©âµ”ÖPýþ£—ˆô |~ˆPyjÄ'à«ÌÓ4‘ËäÅwšiâ–'C%Ñ»O=[Cðe„:x¯x0«a1çÊd^Û96Þ³8Ù6kÇ N¥“c»6ã¥'ÞK¦9ص³‰þå8ɺb F{5³iQ«Ü'({.Ÿ£NØÓKå Ú4å®P©/.;)â¦øzž4%ýk»#†£ÊÇ¡hê]©Z1C»†ÇA›s6B9×RœøpOü«në|ï3ÀS%¡Ì€„ói–qòŽdWþ¯X¸Â^ÕMaìT“rèÓ‡0X7ˆEúöfIè\ÎïÐmÝ@q}ÒPŽy‹}“ó„Ø7ð½,Ä8ø·«sÙt¡R*võš~+ùÁ÷ÌäàlÇb˜L³D ¬WU„šÒ¯UTéÞ„OžŒ×š§ÊóÝn¯ŸU[ö0lë[‹‘vi›{«fǩݞ?B>'îÔà87ÚÛ†RUÅíÚf]Åòi£ÍƶÞûöðüi°õOìærLì©ðŒ ^“âqki ¶Vnɧ7<:On°¨ ä†÷WƒSl»–âðà,³–ßûŽç+á¡ BVˆ9 ú’Öh¦yýM§wl|ð->{8·¸ ^m`fРCÚï9Â˸lÕñ"¶Æê.%Èɨžøƒ )Bxy¹uBžWU’T”u=}î’÷‘ S›Y Z¯ÐBb-ß‘Nu‚ @rzAYú<àœSï~7ñõ6ý€ÎƒD”4ú¿O­ÝÓ|¾Òv`•?ˆ¨ ,×4‹T6lµJ¦´!³:LKG?‚ºKïòO"œîi]óÔrå?“ù{Æšt¤˜Rß4„Tsf3rرê¢_b®ô÷]•dƒ•á•Ç‹/S‰öÀõÿa3`ïŽZ8üÂꂚ9Ú”¬ýôøPÑMêƒSQpkûUë¥Sºí_Ö ]þžSù,îâyÜìz+=¸-ùiàzÒA)†6fææò¸nŽØ›’XíÆíƒê\¼Í$ÚˆÞ½×Sö¶ëù)B£Û&é.…¡~ÇÚØD̬ÆV\I _caãaµÔ×OÜ/ûð©@zåƒü]{6òàIƒy~á*0–W§¹«˜ôÜ«Éìi˜px>NêK0s³ Ä’ê“ð¬å˜ÎopÖ³ê«Ú«°ƒöñ`ê±Iy]$»…@f r¡5¥x«Å:ײnÁWqÔC KYå£ýäF¿f1~AM™Î³3 Ì÷=‹ñb ’Ž-TD¼‚5ñHˆûË'ӯԘܭ¹˜‹°ßòÜçÙX^‹‘;¬Øs{c…Œ ªþ¦æ#?æùLg²ó€ø²“Kà^™·ÿyGE¡×édCK-¸Éš'_Ü”Öj~«¨<)µ‘ÏÍ”9^õ's5rXHG‘";p[¦Þ좋¢˜æ v"Ìy%Í âÞïþà™²"ßínHQƹҫu•‰Î+÷âl riØwé;-uú+€ë®¤ëçæ9&‘Ž6žg½ À’0¦}âYÌ·s—9ƒ€¡N«À(‹Á$Ü üœ'õX£BÆ_qB^>ÑzæÅhP©Àûr>h1€·zܰx°ˆ‚Ÿ¶HY‚÷Ùxû/ˆË¡ê5øÇšè’dòéX¶Eu‰™}&M{l™ë‰yá Ú%„s†ž þ.5™­‹õçEf,ˆ?þég¥%bSŽ{óæb‰ì…VÏmØóèGaé娂Æl•%ü;ýT“<Õìë.lhúmž(—ïºAµyºÅ”¿T×=)º;½¹9‡8†Ûù©CmEW–k&^/l[×^ Œ£Ï&íC9Õ5+ò Àao»ˆgSÑðAàNKºÈžçÒ'š¿«Õ<ú< cpMÓˆ“èÕ‚E©—[6é¥Ï¦PêvqjÙŸËù¹ãl¡h#”UÄÆHïô¥YI·,—´ÿâ /÷™ø9ûH æ#÷’ìξçÜ$!¶æy^Â_¹\4š.Š)ñ+«5È Um~ÎWnál‘ Õ6 ¯èRºÆ;?˜†]¸^mf½·ÍÐv0ny…«¯'–à×!#L×Ùôó ‚òˆêRˆ¨Bž\ïaHVj >È e;i~±ñOB5"aEQ ÑÎw5;;/Æm~5Œóï½]޵˒hù›e…*—kŸÎNoë3Ô(ÈŒyÅ ’W3—è"7†i ¨ÃÁé5w,’˜T¥§dà©Ô d1ÉŒö îèý&ΰIkAXŽ6ÍK…Qš&x¶â§Òýù(êÂDÊÖù¿P2:$:›ù8¤ôúˆx°¥ndAuâåÄ„ëšm⡤øzý´c"4bMSöFI/Úór¡jpsô=´Í ñY‹Êæw¹\Š•sj&Ò±ßYÍî [ÀàÒç’Ĭ\„ l–Š¶Ô³Æì× œïÑPæß³i²q[ñƒéëNID³%κfs0ǽnnUEmêÙTT÷ø\ðï­yjTEòh%åBë Ò×'Mx—Pî£Íµÿµeâ´!þpîMVâè·ËQNèÓs`>'ùFÖý:"OW‡sÞ°_k¯Sl?~òæË:ë©äDüö$J¡#) |kõ'È*÷Ð:L¯w¼›ÿq%ÀdDkæ`pYÒÚr€d·p…{nV.ºñÁl14Ò óÏÙÞ´ÆÔ{Ei*I°öõ1¿?<¢Ö•®Th/üC¥rÑÄ3æ¹:•¶y‘,gO¢òør·ú Hª[žŒVçƒá4tÄjÈê1ä+L ,.àôv’¬©g‘㘰×Öµä+[NIT«t$¢"QA3Í]?Hrœ#SU-]jïµëì£gXËÀz†JÚè—ç©ux¾wÚ«›Lžy<]nÖ/&2¨$ë¢h«vpkØÂ´9†~J]*“ÙÐß@ícl€Á {á]pä¤<³¢_‰vËwRžy£†¿ÜEÀW¨Ø¯Xí)ÎÂ`&öIJRZ¹² A,_‘ÞÇ;™'¬é*—Pª•JÒ¦‘ŽÈD–Ø×ºä ˆê¡ýEàsÂf éPe‡:öÚ›D±>ÖÝŠ€³äi¿OB‘à’Â];ö ]Eañí®{ê†uîJMÒv^;‘;°€Î}fBü+ÄÙY7»ŠcòËb4Ú¸sœÿ¾X4J´}K.…¥€tè{·äŒTéFƒ÷ïI>púÍŽ×ËZßú9“C°Öé²c´´r->> k7¸b¡"þÒ€^šp‘¶ýõHT#èYÉ á7Æ¿xYw“àîX>ÊP¢â cˆNJ£)&ŠL¬ä÷ŽY­P;Ãá¢â@Ê·!¥ãÄH­)`³«s¶¦±G¤ë@oï®7€~¥E (QÏ"àÖ\úá›bmŒ{ûNöäI‹5óܶùÚ[(©™‚Ýr¢í6ÛÜV[ƒ£²:Áí€#ñÁçNz-Ùîát¨+,õú¼%ý[ëm3š6X¿×°Eÿ²gÀz !]¹˜tÍb¡%OÊÀu 8ú—+"Nnô‰ŽcOÑM¯ÐRØ9¯« ;ÇCD¥îÍQå ÚdVüi®Ü^%¶¤þía¹ÆLƒ™»‹­¡vBhnê sgf¹‚°T£ ‌hª¶ €¸RÓûtÑX{+Wyöå8­)ñ9ËÅžr¯Ô¬Î7jJ¤ÞZšMd¤ ñˆC }ŽÂÅ8ÛÜ#)ë³NR¿~Ybw:4Ñ…Ü'„4^˜{d;$#¿ZT»~»CSa–‚ã86Ò#úâ2la䆠EzÙâ™`F…HI8g ºx0…¡Uz8w8âÞ1«“ÍR ‚{BÁa]ŽsàûÞ1\Q¿v‡Îjk°0rtÁÖ»8ÓÜò¡e}klñÜÏ«EŠ’Ì{ÁE` fZe|P‹vß› [lNN+õ D¡„vÁ/VqÙ›9(Ñ ËËeùkjÄô`¥ÉÿŸ‚à l_4Oˆ–”ø ¡t%ÊÏum=´!=jåa]…oÄh¨ [¨{ íß|èpÎl½º_ø†!¯• å0c\1œÄÖûZeè¸fèb‰Ä×[0¦$Å5ZÞl«æñðL™ó‡sõsr§&u‹;šòroו¨áŠ?øqúˆ’Mëã7¸è›óÑèÑ™±¨S?-îïŽãÚ,¬ÁPTJhülß‹€tëá³°9s׈¬ÜnMíjöå—ÌÙ{C!àJmVú£õ??Ru49mÏѬûÙ]eU³Bb­V1?í ;DS~ôÄ7þ|Çz:q.ޮ߉½‰U[ö)ˆK„_´¥YYœâF‹6~u2õ8̤/]‰”;*óÕ¤8n2“M8ø ÿS¥~º¶‡$›€ÂܬÅàZ/âfae¸î¼`\`+Mš€7³¡ä¯ᣢîv®çß4¶·§Ìv\V.d?BØÉÊŠ¡¡Œ„&n€Hú÷9Ÿ Õ†ž¹h­î¯Gú¿%¾e‡­Úˆ"ýâ--F0@îË÷no äЯ0VÆ•Éò6ÌES8û¾âÄŸ]ÛM°Óÿ*ro.~åWy±z”}Í–—â`¬ÍT,Š•:ÃýL%üxÓ.Ö*zFmãTž5©r¶û¶^ú¾ "ªU¶²¨ÔòWœºú:$ÜmDà‘€,°6j7”µwÍßïžxýhÎ=>êB†[kVg×_Š"‚fä¨ç=« 5€&›mäsï£q!íñfœè[`Ñò_1 s44špŒØÐì9ñ=;<0}ÛW$Æ–û=oO’  V#vöGÔ¸ê܉ff=ªåªs.ýO ø–äð½ùã’ž…ؼy8ÖÄÙ(J»\‹yÕÔTv.Š$~­.rõ+Ålÿ­­´;a=X!L’G sHKãWŸGe`u`é¹ñø‹^âøsXK%ÖýÝGÍB˜ÎéŽyßA[¨„h¦Þî°¹2èÉy—ÆHx„(÷þÚuRûŸ’[l-{Ã"¥ÂŒ…—;X<üåÊ2RœF]K¤€JäÎöBìp– Á{HE>Ë~M+Uöi‚«ÃØÆÒ{8d·ä*ò ¥™ëî ¨tq*fgjdVκ&±2ÑŒ ²1ÉüK›Li)PDƒ!xƒL™4<ŠNéÒ(;ؘÿÂ^uê7ºèF)E쉼Ö<·³LQTÈØ Zž£Þ|É35¬W™õ_ú ”=½¨·ÁÞ¥ €<ýµy¬9j–šáÒëRÇw·IìÉŒS‚àeFkã³L!mSUè 'ñ,v,ô/×g -噬e×V¹ôÌO†¶9ØDÒ# Ï¬B’¬Ý’î¨0åmç‚VÜ Ï›üK»“+žÇÈÀîô-Ž‡Â»{+ Í®’£Ú[ Ã«Ž®M”Eˤ42>NôUƒ9þ@­½¾¾¸H$¾dÝ&WœÇ.úІ•á#Iæ )_ÿ¸à‚FDKóÊïq Ž=`øª›/–3÷œŠ·ïˆî²šéÄîyд÷[·«8ÐÙÞzÆcV§[SvÅK ¢³È,r‡ù9N4ñÆçöeC./×åϺ74õê œzžøÿBç}^cÊù[Ðíf³@W}ò,Üø^³FhÒXÊŒl)+.~ï¿ÂÕw£Ñcn‰†¤D“òís'›æƒ!]O •šÚ[¼S÷+r¶[X©,Ö˘q8 øávÉMSjº_ÈG…â‚3²f[d#îÚ+¶ˆOÓ±½CÖvbÚÑÈéÃ1.ñˆ9È4«;ªLh~_%ǃK^àÖs¦œû«T LÑcÓ¡“"N·l'„Ç(_ºi¯=½W`ÌXÊ:ÕþãœÂa/\Âñ¬Í¦XJˆÓÛólYÙü‚åK ‚_H@“Ysm2ì?y5ù–q]xõ?vôz >X+ÚL§’¥9OsÏð¾Æ{x· Óü uLx-Ø1ÝÐLæ/‡Ëv±nöìõ8ÓúÅêêÎÏN–N¦º ËÊ!Åjÿÿ3]f¢1¬(}4±žËF(d¤Y ¬ð1¢ÚZ…ªMuâUã€ò8«¤u½DlÛwŒ‚Bõp2!‚Œ[þ ÃêF±Ó'r/®\«Zi“?rµ@H ’@œòq»;BG"/c†n o[_¥a˜ ˆN;±M~Hé^×4™Ùxþ-{ Vœ:\]_m3A‚9¥×%–G4¯ã°ËFÁl븎%sðÉPÍ4ó„’ Ÿ=6ÅF«Ë4¾Ê€”Ïóø3¾ÄÆy: ÷Gõ'YѤ!ç‚ÊïLÿG,Ïå}§ôNWhËêÙM9¼²©GÔ¬sÒzÈ+Pó<Ê‚úĪ5Né5ÉQ+C‹%ͬÄw=h¤4ZØ÷&“¿°ºó8È~yàË5*‹3y€Í—Vsíþþ`ÅqÀŽOH"Amá pÐÌ!ôjWéýv±,Ù%¯ç¼æÙIRNUÊóÂ…ÃX‡}q^:Ÿƒ*UlÅ·ÀHÄBJ½fÅ-úZò9Ó”Ìþ©îàŠk‘Ââ—Þ`bHLAKDâY—Üžè„Ý£­8ÔÑTü²ìJ(ååþŽêFëB©x„“sÁ344éÑ:ÔâÆ« Ü©à4„4À°6 ét“ ™~h0³˜åVYCE¯F€¹{9Ĩ­»‘A'™)‚oä{{IëX\›«LýÄþÄC¬®`–—F+¦¨˜ýÔîOs CQ¦dfpBüÑô¿Ût [J–èìb„8üøðmZü¢ßüÞ¦ä¼Ðú 3@,æ,b¡ÒÐ÷ý¿”Y¬†¦ \ ²tC{]‰-§&bA^Eü6"-Ó¡oïX"ÜÓô.@µ»A^_œñ7ÛHÄgÍ–<†›²'U5¢|ìðy“@_·Xwdw¯Q®52ÐÁ“ÓÆªòµ¼ûÛã&@Õÿ8iõãÌéîÛ½’𾯥O™›=þ°NÐVìç‹G&@ãt½Öª9Ö“y؉ÖùÊÒè! ‡«Ly ÇC‰mnØIØ´Ý$`pY‰TöÎf2¹üÞ,‹~Û{ÓýmCAT,‡×¼Oré,}…" :_miÈr­¢óéÿ±;™*¬¦$WTàÖn<<ƒéLM· |Y µj·*†ÛK m/òž»—æÔ­õ<\NeºKË^ µŸÅŒwA&‹IÛÈS–ÒìNR=4YK¤‚ÆÂXzñ S’XjÁ76¥ñ`žÓ*ÓOŒ±®Ö¼o9]WŠU´Š¶R#6C´‰Gà^ô=Q'k£Á„<*¾ é’Áµ|mëIu!€ZqNB·µëºzxrküø¼½¥#”ç:‡£¯Óœ¥çc3áÝõF%̨±€´sÞHo+’î¶ÈZaäŠGœÓ´Ð>ÿÁ#@˜7unçxàæ9°xÞRÈ¢>ªªY%džÜ]µU(’›ÈŒ:ŠÝ•,ã÷©„ÊÛ—¹? Ëï>U<êœPØOk¦s´˽¨ÞdÅ¿5øò€Ä{Ýß“0_´3ûÚˆ‘µå·˜^“lëʼ {ÙŽZUëÕh4Âvò-ú0­r jXÃý‘£»>ÃÈKýøÜ£7®Bì}mPiâ›cÎAʱtæ^û»Ü+-óÙæ?¢ÚN$PƒÈd5âWY{xkh\0d“]‹p†Öcó4J³ó5?Àÿ—éó¿‚’cá}¼<›b‚7£`çKš5LºàNvN”Ïý†mZ;ûÑ£ôþxþmùûbî÷¬Üëâ ÁÉ ÿklkéÐ?sF‰´ Ø¥’ä)iS¹»À×òfÿB­Q/Û)اÃÅŒ(2'¬0\Ðólþ ¾ÁmRm|µUè¸hD>çj¾+Æ;¸%èv¥ËdZ™¿äUè9?\WÀ±‚øÝ¡™þƒ»È}ö„ G†Š:áý8>ß Žw˜<¡º³Ó­eÆ¢&èIAj³i«†{ìÄÐúâX²k§˜~ŠáhD¨æ”ùîëxPC<ÆkPè]éRÛ\~Ó9¶Xg•`X`žßÔuÇÛMGÿwí“t½+°³”ãðžJmjxY gzžo‹ŠÞ;4¾Ó+ìÿvç_ß¹’©y(d6æ#·]™Gß’\Áº0cb[p×M¡ ØYûïC^Ç‹-UÐ]zJå1 ¾£Ú³úúˆw¡ü3pà:ó Ö#­9{™¨þó¡\£Éü^õúœ«]\´f<Ï·ÅS½çÉÅ×)óeh”õÜ8·;tûoň8Àoè¾è,´õ-8ÿN‚F½ ”Y7¢¢×,³ÈW;p؆Fs_ßžµ†ZACÇôVãQ›Ýª•y4í!®$æ¡UÅóñ¥Ø$FÞæÚÿçÇ’ÿ$;l’Ù›eÌœ7÷ÔúÞs^!†íõpÂ_ò:Ïž¼b®–IL@{iÙZ"µè,æ*ÝŸh@-]$¿ûyF äÌJÿX©8UŸñÎKÀ¼ŒË¸—,˜†¢¹ÑÂ&&áù3p|@ˈì0ßÙHì?ãë1¡SÝšZI*°ç¹ã®5zõ×%,z""dÞØ„îl³Û \äŸrCY^PÕ;`cÏ)t€·x4ÐbÒo¸4²)aðÌ}*"£ýÈU¤´Ë:°v2>×¥]I³r:zkªÁ³L”/σÔîÖ“!z¨?Å·#kÜ\Õ£§ämÙÚ´n#V.@‘ì€#w;Š2H½b|ÄW—ÞŽw;a}èE5'÷àPŒµû¸çgÇ™xíyUGÓÑ=?IÊ4¦_èKs÷’·¾'(A­ÞFÅ?(Gwý(âpÉKµ&‹ÌZX—XÃ6DŒ#à˜Ç‚0«ãx™ãtÌXݹGz´F§Œ;!Ð÷¤ýæ/¨A»¢Kä¥ú7ÕŠ9:9*.׌7GÛ€”"ªLÏ“ë²g.?4˜Ù5,%öCÆÈâÛtž(r(|ˆ•ÅäâfÉC(¥òTëâ/¶“Ú¤':â7­¶¦ÒÃ%N±ò€aM|¾ÏõŠG‹·ÑŒ~Ò%² j*“2w#ÅÝPýí³¯ß*«¸fåÔèË´ÎËš–ÖËÇÍ.NŸðr˜'A9jÑD’‘î9nþtšÒ1qØ}-‰ø£†û)~*UGp[IôÇr#ÅsʱƒƒÞHóÆ­Ü€—eëLóßЕ<á­iK°N"zLå Ÿ³º ].j2g>™E.¢ øô„¯™²íÍ ødöý³lj´¤KŸþɳ0Ê8©Y;úS"µ®«OµH¦ÞˆN5ZrÜñ?®T Ö›’?ŸVèÊ»=•a\QÆvx4»­F–oÉ -Ü@-²5Šø¹Åêølpíº'Œ@*¦¸æ$3œ/ø/¨Mè}²é0œ×ì¾Ú¡Ú/iŠ{Ô•?s<º‡¥øÝy)îkãA(ì©ú‘7â@f ƒP°ýSSsÊtžŒõAh—æ´%+~lsBs _Pþ‘»õöETàÿ‹Õr…ÿ#C—«‰s¶èx¸šÁ­O&:àjmEÄÆ}y nü{ÔÉÓ…Œ{Á15Oÿب9ˆ‘ƒŸßn®Ñ`¦Ôëš6y(ñ½v̦¯ÙEò…ùÓT3ô™ŠÚÜ.øiÖ£¢ ’ ݪ«dV8Mõ%­1x‡ªàÆ+úJkfiû8:©ƒ¥7@ÑÆþ÷~ÚÏ«ÂÃp5 ‹óж…gÙ¦ÝK5æ sø2àšc{Ùi<#D»Mêe?0MÛ@¡ðìq<`u“»úœu‚éëx%jüjï‹Ë\ˇ>{äMòê¯ïÒ‘P[t­3 0[­ª/¨8H J*v5BÕî3_†®Íš{E ÌåtAÈÃPH™î}@ûžä2¥»K~ÁÒ1 Ygª¶4£R3R|QƒëÝÕ8l´0ýž,ÑB <Ç‘³çayƾ#Ý|ïAå Ù*×Í\ÆX·™„pzK©¨CÂÖ9˜hºfûrÜé¨Vl õöNTÑþ›FÙ„øµ•?­cISÁ!t ‹D _„=÷|w®$À7*…¥66R¯“VéÆKœÖ¿,û´O®ïïÒE]ØrD=˜n)ÖPD. Ïvp”£AÒîË¥5îÖû ój’iâ¤kr_‚‡/Jév÷ôý!¼x¨Ýà˜«fJV¤?‚=ò:OöZ[ Cª«*¼JÎÄðöHÎd‰ôBš¢œ-v¸Ÿ Ú:³èíË]ñ³ƒ—D±Áu\[ê³î˸˜@'É­x×ë‚Õ;ÐòiåúÛ—REqL9þ_fãZ4qÑËð›´¦.ÆLD¯>¶O¿åÂŒKûÊM¼€Œ™~èÎö“J©|›{D#¯€¢ï€g,»%,jò¶Â#—:e¸©½ERvpìÁ•(ÄCŽÐÜÛˆêšüƒÔO6KÁLÏ çjDìÀÈ«õo}u^‚rÓÏ›–»ZJóùŒi˜âÅ¿`¨œã5ü~gÌŒé"™&¸ÏP®nŒJìðõ¯Y2mèϸöé8Ö\Q©ÛôH²¬tôüÀ·rd¾§ÝjÏ©v°q¢Ë¾¡/}?f¸÷[ìÀWýU]„û÷×`D^ÂzXòߣ¯6ð•ZöÝ$€Œú6g³‚ w.tN±”ôž§…›ZN÷àHsíãàõjü{Jrx0»94pŽ"-;‡ç:mÔC±ãƒRo©äêÔí°DۿܽSÞ ¼Œ~f¯°è©¨8ˆä K×?ê‹Çv%]}âÜ̬t?`cµ¡BÁ¥X v›´{ñŸ µ¶؃qâ™E!¯Õ æv¦°pÊ•Šß¸Õ[|ø” ^}ÃE‡G=3ÖõË£¢zü!eøëéÚOD‘Ñ[ë§nBgaª§÷ðÓVF]q#œ¯WQ¿ or‰ »ùx±H‡¤?Lÿ k¼—·9‰j”DL—À.DW=6º ßîýš®Pí”0P¼çåÕZá°y4¯}žwybP) "©…!Ñ+½¹B¨O#(ɲžú`Á õ7]±áGP¯]Þo­EUZÈ ‚54-ãgÞ×®17 ÚœFê}.AƒGG>%öÚ:¹BfŽ»ŒÐ,¯ì·™¤zW°:½”Y*ñÞ¡Å`—c¨VË7Έ„„Ϻ2#Wİ$ñÛ˘&2ÔfaÎYg 3Pö–  ÷kû P¹·ðV#6Ïì=½5h SˆX,ò$ îÔ?§!¨Pÿns¬B[Èñ˜ÉÊf‚)N\_Œ¹®Mls¬ëÂ@=Ý ia©Dyí¡VR®já˜_7M®ÈpòHGJ*cH¨÷Ž:­‚M3§ov… ª_(ôURO`CÓ¦‡;0k¢$Ö•¦ÀMg@Ÿ„³WþXÈ¡e°îº¨»¢q±Ó»¥Õÿ{õY3×BKµøûîÔ¡R~à*oд§wBOwYÐ…Ùê CªÔ!Ø}æu¾ŸåèÔ’j— ò?E–Â9&ùßv ;T€îhWLE°…õlÄyúÑ+Á½ñ…)6°…@Xÿ˜¿:Ø¿Q‡xéÚ¦ÆÛ†U¹w]dn@¯Òæ…ØñDŸÈ•¶×>BM| ÿ¸˜äøeØgÎfU:É©î®]2éððŠêD5t'¾HCg²” éQs¹Áí:rzÎhxÅ¡ ]ËZßÕoF9üØëô¿M¸Æ)­­ sIa.~CõL ¬€+®.®,¢òx°¡šðÖ[Ì1opl{öÆ´2ðœÙ¯g¢¹ÔBe‡¢àò.C)jh3qã†^°ÕùÜ6¨ïÐOX®chÜÒdÑEæž%â;ÿ ¨DÀT’Có7£z|Úm¢ª÷1‘°5¢2 Õ—±TDIªDÌá¯ú+êHw¢$1ú±7·O­lDkޤxyÕùJÏß 6t4#<7Sp)÷àÜkCg°àÜgÉhIn0vÞn £¼-Øå÷ï»Ï°ŸX(írXµñ()±ÍþÙ˜ ®6K¾Bý’‘6T’Ög“L^iõõ¬s˜ò¬X k¼oÕÃwÎ1ÈšÃ!܉OãɨìÐ üï5K»8Ô¸îY“v Xê£óü!VðTŸßÚs–çÕU•‰=ñsˆ¬Aa×£™…s1ª¢E±TP(µ4kÌ;ë•x¹ü¼„Óʘ€¬÷pnPxÝߌËXåêÌÑJ¨Í”@G[Ä(×(×™Þ÷#Q¦jÁN$!±ZoƒËf¿wQjÚ§ø¢âsÈD)nkI™&$‚H|Rh,Se~"æKPTû‡œgu–HÀóÁTpB3fQk¿¹ªU}P3>ä—keYÔ:‡lš×oÁŠí(ù ºÛ?õ#‚çå\™í&ápEW8nNWÒk¾:ñpo@@òâ‚ØæºOAó7ŒïhßÎDì˜(ž.«]iÔÓÃè!‰®M—ìÇKY±\U~•ˆn\•\1“ª’ºu,þµ8K¬…¯W S$€Aø>oæ‰Ä©ÂMùÇõMûÌÈœ5O# }¸ÉåÅ, ñ¯H]—£ò5„š–š3IvAEåç{JÌrc=Æ^ mx‰øI9МýÌ¡¦ª•À8}“×8"<0.M6x†áíé¡0\~„ ¾ÂínÅS‚ÎÞÌ¥ÇPËþ–™=yŒŒ3¿¤ªä]-–›Q–ìªþ*öfŒ,|ÿ@é-²€ñ5Öóð„ZDŒ ›®æByª@»ÌR:áÇqw‚hi]¾W¡øâž…t=wÏc=f€ÝûYhøËŒç81>&Õâøc@h/Á^¶ãfÅâãç–ˆ»oµ)€0ˆìoð¼Z‚£ [ÙVH¨îÜ•nU¦€ò·¸¥ÀÉhÚk"GN"ŸùäÚPºXÆÃ²AxçI‘™2‚’4^;€øÓàHûw«’'Lµ¶'|eEVäÝ„²¤“ýAÖrÅnðhrä žú¡¦%Ì•­¡wî‘1|¥Xÿa*nŽåcîüC¿){QU“X5Æò‘|p\¾†XŽ  Y×€V#Bɨt—÷µ‚§SÐáiÌKȨ³¢ qïüá¿Î82uê‡^^ —ä9ZºÉh{Œ´…‚¢.ÇN· È¥z¸‰ ú*vV¸›ÙV6’fãKf­&GÓêvµR<슘ŒÛqó|yï›_YrèÔ,ø×):E|.ÇÜÚ0ECác¥é(æ«3]-lXÊá2Ðë|®œ¼¶è$T¬Ü®PÞ’ŽÏ"%õ qƯV.pCtLˆ=õ …Ok"±g¤RH yÞ×\ ·y ЈýÜËù®zæK„C,beh¡ö„&€îJ3Üÿ1œò 4ZXÚg³ ?¦Rb²ZÝ­ŒJŠO ±µjH46²Þøßu”ÀP³_E½È‰Ôˆ8÷ó5—ô¼Ø…”(—¶ ˜¬ ½Ã㞣m 5hüS#Yõ|$€LtV§_Å@yº£f‡°±×pj?X…ƒîò ì%É>4£z–èF‰ Ãa¢ŽWx zfäæ[+×ï³y†~Ü|¯N…¼ŒÙ•<ÐÈ«ÑT¶°KæYÏ‚ÍÏ>=DòˆÙ×’½ ³Å Ùò ¸Ãñt,8Clî9EÀ"_/ò¾Æ›­áÅá]Ø®.ö1Ô`ÎÕ|÷ ï§ú@n]/6ü/µ|¹×ŽH—|‚b>• ܗЀBË鮆½erA)ÿ†3Hªà^ævÈtMÝ)r€gU–`ã(S}ÁMÃ:ÒMÏ,K ¡éfCµÚªÍt*@¸,b¯Æ%,mù¿ÕfƒW( qþÉŠKvóÜê¡%™.Ìj£»hÛW|Ÿm@Ê"xÐïMOXµî©Ã× Ö8x®âî ¢K÷¶r3¦Õ[{›ZEó4·þ¾OÇ[+ÿ'iòÿ¬íp|Ä·‚y›­ÞO½£WËTMÅ=nÎÇ®Œ|™a‡Ìª¹—U00#]ªö«Zæà]à93a7«Íg‹˜ˆß±Iè-È'9ÕüßäŽeÓÍ庳û¥Ä¹a®ìºí°ŒYyŸù€s§BÚ\l£´zöÔĘì¨P' “ú¤Þô£q›=`«ù|¸3b¼^1Ât%¨®èöÌìv ¼¤AA§" ¶ŒÌ•@3‰·DñÞÓ™·M-¸³\ Q»þS®2ØiâG¡6°½ï±3ªþŒ“‹ËŽlØUìW2Ù)‘éÌ ¸=›gº`l^»òâªåXå6ºéöÀ0½œèÍ:õýM tfŽóÝÚPO =ÃB<šÿ(Ñ·ú"ÑâéeD·;§5¿'k “ëðªG©K½–W®èÝ}+ñùÊ÷ú“*àñÇá”G-'^tM±»aˆèÄøÂñ=$)éåò‰Z¤öSh°f雇ª }¾î—HÌ7Mù3«‹¡~Nê ‚½xÚ:vl3Ùõa¹ (¸0XŸdæVÊ!·ë#nx~ Á\ƒ,¾Rí¡º”¼=5Ý((c$oÇàr»Â´¯kÀ… ñ¿¯tg<­Vvަ2#i<Õ gVå@dϘ>Ƴm+X´]|¹鳘N6JÝV– Å`kÔâèê;-ÐâoV¨2 èM)4zû ÆÑ¼T§Lh²7ZûªénôpæCßä5M)Ú¥t«ºWm6–Ûˆî|ûHºKÍ bÍYOˆåÖ”¾½Pæ)×]L 2"þyI‘úÁ£Bßd`Á› ÉÚþýe€,hïLÒ7LT­}L2ÄšU;Ný1[jO°&ëp} ÷ÂmŽWù¸d` ôÝ€œ|ÈçK×þÄò}áï ÉÓ5õ†)ö”FÁ&P|77WËÁãŠ"Áãñ(ÉÃØyPšÕKN»ß$ŒßÀé'yÆ1ÃDƒªÙû”zö)_‘(J²U-{aZ#Z„çϼêò€ôl¬/a.[`Ÿq$ör1ïÔ$wª„:ë×Äié‰8²»ŒðÛf'€Z« ޽³†—×8›MA¢h„W¶M7i ×i8ÊÇžãq`‚ìt™ÂÝ!ŠJ‡áè}|_’$ °s « G@\ÀRþg ÞÉn½x#­*ù„Ö "Mí¦ÆKèJ¬y~¤\©ðA?Iœ¾â3*\A˜¶ñZÞÍ¢:Jí”B¡²àØ“¢V5y‡TÚìPigX«õþ®ET‚ÇW²Ð­ì*•õ ‡E°ç«,M}sÜÅ"%4‰4&€²®[¾N…Ñ]ÉÄâ´oƒ­×c"=KÌüÐgéoÌ]˜‹9¦wiµ°2ùÄfºÎZ·Ñ¹Ô(ÊHGK€“ïð¤'˜›b ÉË׿(rÆ—®j| dÖ¬ïÊý¬ázN¼.棹-4óôí…+>KÇõ}û n™Å­ätº°áríÌP6Û|U'1¤ Ž¢µìHv§ËÇCM”MQŽ,['î›Ç·‘a\Z…¼Ò~ ±{FÒР#F]Óšú¡$” 2äQFí%v¦­tõgïÊÃÝÔ1&ÄÂPñ3e~š„pVî«1c Jž¹'Bäï¢bA©8˜{ƒ,žìç_ë£ñÔ]. µçe\¹&<À‡S‚‘Ãï¼¾à]¹Ù8P–Š™ˆ†–òê`¤‚á=+ 1.ß1ƒŽÈ_Ë”ýëƒ)ŸyÇîúRžÛ6e&g}o}Ë·¾¹ë«"lz\ÿ‡vútçg Üï"«¨ø™ÃpaóíÙr¼€ñÕ¬ˆ ú<ÙVZjβZÒ=E |Òc~P_Ÿøu_o¥àZ>NÀeN%T?ë¡`vþwüm~‘×Â2—¸w¥‚·…¥½hžü9![é5<vz¿]ôqœ ë^Ofʬ¥àù¢"ˆDÆyLQpØž›Ðupe|7Ò#{²µþýÀ¸(/eˆ?@œC­ÊL:Rù”CZªÑÇA1•ýiŸë;% YO I îÑmÐÏuPI¼Z–I°³ŒLquâ§5o]£1hºÎòÍåÏÙS•úã‹Â$›¶OŸ<ïpü!”uIÖb§CæÝp´i©Ö;XÚË}Ô2ÔþÃ,ˆh[øˆøSæÅž ³Ó—W«øaVÛv$¤êan/´ßÛ*ŒÊÜ#3zŽêyF ¤]5¡@­7ŸëÜóÙÀÆÈµ|Ý]"áXDãdçPèçÃ{¥Mw”÷ùs][­¡h>LªHÔp±]ñ´¸a_ï 3šÝJÿwû%x™Éï ŒÉ¿/$¨íÁ: M;ô ó÷ðw 儨L^?^Åwø²ñàE>Ò”Ÿï~——• ©b†„v&ˆ¾JT32iš#ÏcEY¯™hì©…P®’2ñ8Ôí=wrCk-h× žQ–ý¡•Ÿ99FÂ÷²K™uYÀrûÈ¥ÀÀ‘ž»¹w`éæ(o©1HnZpì€a&è¿€c—Û\m¼;ƒ" þ›©ú¢nîÙ:¼^ð4Yg-ËËU9‹u@.ðc¾Û3ÚöX?¯xéuT™áù*c¢]Xj®Üß^Øk늻+{õ|ù߈U¶X®üÏè\è¶ÉÊDàŸ ÈŽUþªÌK@ëŒák>Eà”€°¸¿.×$YæJå| ¹)¸ôºÔ?qŧ'¤u¸hâd›eŠ-Ôu¢×²vK Gža¨ÿŸkÂ}iŠŠô´ÁêMPf#VT=‚M©¢{¡õΑ&y>¶[ØI•݆ÝT_oý°15Šâ· ¸9yÄì¢âèÐ+îEušÂ>^ø/‘ ƒ$!¨OKµ0rÝVfù+`'#˜8è©9Æ-„ƒ& G !íš@“B6ͯ¿X::šþÓ8døî¶h§0ËFÎÜBkK¬FGÐêP/ÛÝÏÀg˜Ç.ÒÎeR¹eÝd|«J¡âD¸‹’™Ö'9Í'€’oŒÐÍM£‹R\©~“¬ï¤bºåd\ÆÝä)¯êþ­‹\ñPxÁ~íîœ7·rÔ{ó‹\¤%¸÷$L4Ý/HqQå0¹0jáŒCu·[þ‚#)ü©$6üž¨£°ˆÌ6ÑG`»ÌÖJyò9AýáÖ·ç"ÏÝ‹)åÿ‚þúßoÈí@ÀÛ&6Àq –m`‰M³]§\ÞãÀF“—¯ž¨ErMvVÀ¢>¢Y¬ ïš/R9_ŠúN~‡CôRøÛÅñW›â=JÕOÔô§…n#Á?‚tʵvR³ýJ‘—hù±'˜»Ý¯UÈÙÑâüååíí¿ ]æ ½÷ö5O܈{ÓènV=~µ¼ÅfÍ’ö€7x–eð,Ý"…·¥5î'Ýö‘r“–xá{kÆÉU Â{¤PlZº+,«x½ É\c\ܰo¶u9`NÃKÄÙlÓºN+ÙB›39~⬇³N}va}1X§'’º¶BÌ[V:ö¤Ø¾‘?ŒdåêteçóÔ&*yûâŽÙ¹3TÁõð"¨h×þû猪2rJ¹*ˆ„ïßÉ_fÝô#ƒ©‹Úƒ3PØ­k›…9îA{ýà¢hߣ!ÊüøVëai°ßÛ”ÑI=`e‡Êë5Áaª“µj0s¤*eÅW4 |JŒZQZa¯ˆ)eà °ÝLÖ*„·SÎ3G‚h8&ì’L*„¥ßÝdR• ™­Ë›‹‹ÊR¯þ¿v1 Q' Ìá\D×»ÆD¥<™—™KIÑ`ˆìÁÑá™'*ŽfIe¹Cpñ%OõV'ý,TXg £óÀq xž› º3¤Hðµ8®â × ¸G2¹uîmùOµ@ØITâAZo¯2Ê]‹×IÃ1ðjjìY蟛G³ÿ1ŽØ XÖ²euN€\™Ž}¦·áá?øÅ\¥EÕ×ÜúPæ5ÓQ+CÞ¾ª`®nyR×'Ib/>§ÿeÄWpæCeq)%9Z‚ϧ~+a´Ê®5'< sôSÒq»‘ÂLM3-C½ë>Hì3(Å;8µ˜i4/w*î†õk¿–Óµƒù‰8óa Ë@Þ$¸Ó3~œß7¹îüÕ[ø¨Œe ¨ä£E™Ö^Sˆ¨æ•T¸Û±¸ÑœksN.k91å…GYàДAÉô!GÂüðÒòýˆ°ïXÆüØ+õ-dl½ëÛÉÙ”0ŽÞþøÎauŽˆ²-?<œäËqÏð–b3žíûÓ¬G0ý{STÇ üRCÒ®š¿­ j‰äÉÙËÛ˜˜¬{ƪQ^8ZNb L’´4ßæ''rvÚa¼$ØáUvªØ¸ð¶€Á ø9ê„ >Ò¼Ûdu~s|þ…ÈAz÷‰È÷gv@¯8UkTÐ}U œ–Ô,tÈÜë‘‚Qâ¹Á{1‰b<÷T ‡ô˜#G÷íø¢—þ.8^_2ÝõíK• ŸòDd°ŠÈ&ÜÉÔü¾î¨ž>DûÎÇuiŸÆ3¥žŒ{KIk¾Ó?bè•yTxÆŒ¯ÂZ»›ï¢[+Ù{Aè>¾»mš:0S#å‘åbÝ]S§÷Eég¿[U¨fƇSáOs²äG½x>õÆ”óp 𢽉Úë|Ï®ù¤‚mÎé÷­…‘V>ër$·‰œ„xº3/Þä¡Å¯à:µgÉ…_3Å®\æiT´`Ú¯¥Ÿ«gwÙW˜7f戱GÌ+}H.T\êBÚw¿²ãP%s¼é»Ø½Ð­…f´8`jIE0¿ã…/üCÖžQѹ/v‰O=µ. #Æ­2‚«âÖ¢-xƒú¸ž\ßÁÀUt6½gô5“=ünê|&P\2¶E\‹¾(ÑfÑÜUP0hÝhß¡ð0Ö--Y¨±]~…÷Ö²>ü'·9ÔÀäÊ(CX á4çàÍÊ%‚.9ô/“VkÅùTÉZ]_\Gft=ép-ë/¢ÃùàT›/ý·ý OY2ÅGßåÎ_ß*·g—¿uÓç5õ¹KüG¼}x!iÿj »U+*#L›õ¿»™Ì[B,/PùßJ¯L}Ó«‰)½ßUZ·¨AºV4øi}œ\½gn }†V<3(ßæÔý¨•jW~K¬w‰üÔxõâ̲K¼èŸföäŸGwp°z]…A…ð­\XÀB$OP@Å16±”DË/ MR^'ÊÊÕUÊ„LŽÖÜ6³ }vŠõ¦0k…8yEGÆT®ƒº ÍíP€OïuY«‹Ôå ©[Ùµ½x¸¿k“­OÃ-qå23]_Ž>uÜTˆÖ®ÑzŸvئ@_å *?®•¹"ã‰eø46”ŸF|gžn¡øbO¹Ú²Y†-×lùÎ*cy˱<\½×ÆÆœµ% š©ÙIöFô亭¡b ÎÎ. ×ÍA® ý|–B’Lñ¬z·Âã`Tí³÷þ£–°*<%öc­=¼Ÿñ'¬î¬H0µ3iîÖ?Î÷CÎçXÍyÈ‹õŸäi¿áá5°Ç$ˆYzLƒ°“ñK©t/¸2ø€‘Q1óÝÖµmPÔfÀf£ƒÈ<üßUßlÖä +ÒZm”ñ^%Å‚µ<Æ3MÊ´ÄrŽ„V,¡«ßdDj­öÆ ‘8Òo£">,iÈצJÍÅ=YÚm‰Ÿ(%ÐÒË`ëVÔöIú”W>§9û(iñäàHÇòŽ–¯3•J]H ýÉyiçQ~ç3Iü™(=Ž„$7é>ˆ° €øÍ£c$Ó6Îþœ$è䢈£Õ {ÒÊ{a+ŽCÀÿ/®- ófè2?ílDb²…ÅóMWØ'Ó¼˜pCÝ-`“ÔŽæÁI×ðBÄ逫Èê G§kŒ±áÜŠdg~(KÜÚ¿þ5.ÁOEâŸã“]ΪôGµ»îyq*Èí@‰¿’SIÓ™õ%[wVì Á÷_åãsi¢¶cC¿*çü!dÊ{‹`ÌjgõìX¶´V,R»¤)ÀÚÀÛ%„ðýSïê„—‚0ë1Q›¾›˜ßÖ„TС‘Y@„HãC²SÅ¢sþVGÖ–®9:2+SáTuÅ äWÏw£Ødé‚=[ÚiõmÀåe¤É2¨[n"B½¨PßKX+¦k„lñ1Tßý`ÉxÝ|ŒlTóµV…b6<}ý&™c£î.‰D€ðëð<‘ÏÜKx£•¬ðþ³˜ÁÔÞföY„´0ÿiy~Á8¿½Ñ(ÃBX– ðºmºh–¡xŸ ¾OªàáŸñDœ(s›À¯ Ò¦4/`6-xša¼™¹éÁÄݳt6!Œ¹˜¼`çß]í)K—GtãmŸ'=‘Ž‘xx 1Ñï‰rG?˜« è#WvùYYг[Ž ýíü¢Í+øZ¾Ö2ÏåÀ‰È9@B’Õk K°’ñÓ­X œí‚ ºaˆkð|ø/['Öz£VXÑÏå:}Ù¶ÐOVçCm-±ûÜ!/ž¤ˆø©yL>†ù½÷¤;ˆ¥^">ø%Þ(Û}•=ÄÔèâ …fµNî>-¦(©ê«rÉb]¦PŠîèSƒWzQsdFƒ†2xå1ì¥k˜íÑWÐ|#ïT´Ÿ8€Óu‰\|”ã—(¶ž-m8guýªË\´Ÿ4– ÷Aãž)wµ¢e験3Χú‰«©sqŸT} |¹ˆ ç'êDÇÌi?ðÛ“ÖTM7Õa°3àâé'éßlåM+¤Ybð.BaœØ‚Os€øZæÃÚ4€?ä7G5TX®éÏbyCéšsKú¿ÈX÷°Vüt±£ïIÄÊ Á»&Z«¨"²çŠ>~DÍt%/DÕÙÆ#’FLÇ GpÅfh«3ƒÊ®ÞÜ?v›°W¥Þð%cS K‡ý Sÿè 6·˜~3iÀ¡ÅÏÔ2È<E…þ`v¸åhƒ‡uÜ-e“è›5ñÛ®ÓBžÛ =Œ”$î¾O'4¯Ý±õá_¥k}U²¹ ¶Zc°ËŠ‡Ç¦ÃçÇfñWÓ¤c#ïW9/÷¨[ˆ(ÉÕ ;¨\î¬Ðif½R¿öØÿ"~ùtÞ4ÞRSíGSú}[˜´Ÿ‰¹œ™GŸ~ÒÍmºÒJûZÀ]êÎ4§XÿŽÊƒµœ'Aºi嘬O¦Ó*„5DfAÒĆ\t¯Î`êú®+ésòØ1LgYp/êß2`ƒ$×€ú“e(ù0(gãüóó vìßÝl"Kõ 71úGصÉ)h´'½@›Á; Œâµü _©ØÞªÈÔ‹¨koŲùeü~|G—«„íº‚{bAV©`iGãåU?¿òîÄÚ©¸ ‡ÅÄIŒU<9´’KZ!¢›{¢ò1°!8áÙžu¤>Ö½Œ5`{>¥žs«´Dô¼$æJǦÔ5N:ò˜t”b· wŸ{hý™Ã('£SÒ_ßAœ¹S÷f’yWéËÉDç0€O5±UžA'|1mgÇ ¸]e“/Õ¯Ùl¶Ñ÷|oæiñä_]㊹ ¯=êF¢º¸£ZDl×jü’‡ÊëgŠìƒozå·™Ií»A¥ó䵈Jé`KâÚ"pÇKò®–k+6ú1I±:ŸÛªl€AÉ~ʼn¼ó†R Á_ÄSgKÀPP5Vë ¯ ;„„/Må¡50¯O ÉÍîÉ«']Õѽý¦*EÊ…•0éàÙDñŒOqäDÿ%…³V™cÊÆÖ,Ïv¾}•nšÅ˜Âü/‹åè‡ðIÐ 5^W5.GË/J ¶rÀk[Ë¥3¨!ç’vMF0GÐ—ØØŠÆK™œ/çL‰x"qï:Dè AÀ‹Ü µ•‚TCifP4º âö¯Ÿj“탔´æ׸–1Xí,¦›r7»h4tgµô]µÚCUH,ÓÕþxm ‡?1n aY5=žÐƒ¥Ý`TvnêFvhö¬ÓOƒ÷ÇŒäJ0]]¡¦gçF®wò«×¿‡v€'ü"[áp©Š¹ag˜|/·ÝD+ANaÚwµ7G‰,”¤éÊIzŒƒêàìFJ±faûðoåð¿?åÃêîŽ7YWÿ—Š?íFü©šôAgHd•“ëèj@nb-o=ãÁ`‹&77j#®ŸwäÜœÝ|ÂÚË`2Ô\)ž„§'ã Ý ÅÒE÷¯ Ñ¿°DøÓ‰(,Vw!¦9mø %š¾ËX1…l«ž:Dxs²¹­r Ü“¶Z KynÒ§P“†ÈÇKªB¾"8KS pãIYª@+Ý¢£s ü‹DtÝ’»Å9nÁK¨òÛNoCÆ`®3ÂÙA>û„+¼&FAydXÆú•AŒ—…íüxôÀûžÈœé®3ÈA:ºÉX40ú¶Å²rS®ðèÒŒi³¤%w“¢×Ú vu§uÁ°ÿª¦E·%Û©œÐ&Û5PIõ¤& f÷ZußVˆŸ(³‡vF!<ólAÎ_Ëž¦S´G.åÚ4i¸E~ãOAŸMt=ËÂëó%3†€¬moPð‚4·4«694QmSRÙA²DàlŒ•t7ÎgÉ nhî 8ޏÀ>Éb  ×Š^Ìå @¬hÌ˸®é‹æ(ð´TÐøg:ˆq×à^ÁódU0°Dt”E1˜÷XБìiâëŠòìéÜ6†KMÜËùÑn(Œ¡é(™|ÅP;w¸æ ¯­LöÜL9qÚÁ.n7èÜ©‡—aÀ„ýfÄôBL3_ºvráܲ^ü‘(‚$ûZ–I@ îiÊÂ…Ç`¯Ê‚É{FëkÖ³Kx[kê¼óhKÄnž†¬\&ánŒ§a¸ÒhžyÉ”¸Ä†dpCyôÖ„ÓM­ +óÆî‡h–ðrái1ìöÆbµzá2?ÏÅø¨xÅö¦/Rªâso 6)«z8¢ QØ·ù†Óõ!úÇ¢OÕ¿ŒZåêáÂM,U´ËÜ• ^˜ ¿x¿8‚‰L¥E÷–S9Oz+äâÄ©ú-ÄÝ¡ý|µ §@üˆð¿uF®_·XºtÏ¥Y.í—µº ùÝú*µñUqMA£ë,ÐÓ|ü…ÀŠ™>„ȦP0oµ8ËÈ­™×7!\žv#.L틸âŽí5³¸~†é HÚK±?ôýÅ¥¶¼sñ,È frB•? ÷]ò5kf˜ƒ¿ÉþÞ<íµ2ê‰Ð¼K§%9kè-ò ª ±¿ÐlMX1ɯˆf;ö³^f\›Í7dº—Xè*Ø‚yÊʾcKEì¤}^É>@¦wÀ÷+qX7&e\ÍÆ ÕVù7ÎðaƒzïáPYddÚxÍ7æŸáÊ®g¾/0Òå™ ¸¯¡¶X ùúAñè±T¸Üàý÷ç‘Á˜9 a!­O%ä.y9XMf9Ñ*@¶UÔöƒ5‘¥ˆŸh§àlÁe”ÒZtËâRý†¶yØÁ~u¶¿8.ÿG¯}î-cÛæÁ&eI¢¼*Í-¤Ý~ÒÍ%i($Áû†RGÚ,óž l^Öt@þUì¢3ˆ4§…dÄá¬Ó¦ä*½lrçϰ°:Áüwé¥Çœ²ó(qffʓə¸Ž®yuwY©Ú¹Õ}ôEñ×·¢J/íœâïQì(AböcÇ4Ééõ>Lrâ~²c”Í´½|“Ïùyy3͘ì«Õ6•Û!aj"g@Ÿ’/¾òôÓ˜¾BVíöÒM¥Dç!ý rÇ‘yÍ^¨õã&é¢Û µ‹dÍ|¦«”;/´gÄTNC•õVÛRâ B$îdw«:ùf©UbI½]þLW·Ò"þ‘"˜7\•Á¬Œî«&4«ö7Ì?_´«‡›XZOæÆ »/Ï?ÑBu½‚&Ÿ\'†bxÜ…)÷|(+[“ùƒ¿?¡.ö© Ê£kLä6¡5gàO\U1®ç¹Âfy<º—áï*Me*|öžO©Í’ï™Îá{xÕhù ˜œÝ7*öâÊ^M\ [i.%Ç¢R;ü͵Ûó(>Í÷©š›ÒO!fñVäÖÔ»@¿}&5™µâíÙ§ÂLHUö }±ÊßЖÿe]$¿…Ôͱ{Oõá%Q“á—=F{r™ð¯QLÈ qyצEþææKá7Æd’ì§C Î,â 6¢ ©mMýÍpTØ…„¬äÓ5?µ‘L:KÝÊ™Ho@Ód‚¼j26_—üLþ Âæt£nÿàãùX'W°¹ˆ°_Q+"£Ð¤ô‡G¶]H¦u9Zp 6otHÝY¯áëÃ]RjÊÙ3Äo­GߨHÑÆ”S«eIj<§ìt¯Ô –Ìæ 8èogÓT†n?ÔOÙOxë['8Èí:£¡×܈ðÁ©ª¼À6 Ëšæ0²ƒ'£ßÉ,c# a8'‡ÁŸÅÈíäÓ)}U¡Ÿeaå$ÄP’ýɪsÑaøôÐ[˜T…XÃî; 0Û;U1Û¡L) I W#w×[#òÐ|û¸ÇTÈí\*6¸ð’阮ÿ{YèÐrO3Mf¶Q͘ ÕVé ìA©¶6Çq÷Rü+²ÖkA <È¿e4Ïî!±FÁ “XãY’[þÝ>mñZ‡Ó(€‡*+¿¼µTë¡èò|²7rn„è¡1CÞacןï¶;N7$Îè|²¥Ê¦N q4Ï¿~šùçâÑã…IÈ_Ta«å?PnÈäªýqª@ééÚ6™Ù[i¤†7kGtC1’.›àGz!f ÛF´¼GFš-g0W¹¿†ˆÂî¬Àé} •5Ø4ñ¤WRQ ÊèEë6ÄüörÊ ´LuG¼L†ò¢/Äc‡ÿŠ®%íÙ.†Û’A/,–ê57Ú)1ºÞðô $ÿnZ›AUvÂdŠHWÖ@Ø>>\ûÅRtºvwà™ß—¡D ¹ý†‡ÞK_58›íù¹?µ¡V!??mM×i¬Þžpw¸ÞYd™È h‰É+ƒf^@—E%´g›.á¢Q¹ßs3šµ šŸø5€vQÄwêoO„³2­§0²Ó¬ŒþNû ì?„@M“ë^ïÅl îúÕ¥íÍ€ÝÔçH8„Á“W?„ÁbFæÔdµ™ÈxÍF€sûú:öÞ$öÞ‡‰ÕÌÝg;OoyGoØÝà«éõG„ó[BÛ 6ƒX\ðé½n糓ûëMƒ*ßž­ú•>ø`BÁß\¸«µœãddùâM:F‹—clŽšyјѧ£§‹Ìšïòâxõ2¸Å K=û‘à‹¾¹2ƒëˆý+Î×o†°Lº3“yS‚ÝÌóS‰Ž› Õ`‰é>XaÒM@„ývk¡® 9¢âIfá'R©Bth¢JlŠ®¯0„âïþUœýî)üj¼8Dº¶)ÉfÖœ@÷‚*ÊH<¯¿ï}>#M C¹z¸ _ÐoÛDµ£'þN‹f†Å‰)š+A W¬JÊ@»<áÉíW¼¿÷+Û)FëS´1Kˆ?¼¨YUSšàC¥”J>,sí¥îÓôî»fdµ“AÒôNìâΤFÂL ;ü uÊ?¼?†S–ý5 “VC‰×eÞ y[WPú5ø=‹¸~sÉ Â¡N`Àޏ'~ÜÊ®¦¯PŠzr +¿‹sÙͺ±=ñH¯#=:RL<]vBI¶tp@m_´'ŽF~Q‚L«HŠÙþŸžR&Ô dU (0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont /TimesNewRomanPSMT havefont not { %%BeginFont: TimesNewRomanPSMT /TimesNewRomanPSMT 15 dict dup begin /FontName /TimesNewRomanPSMT def /FontType 3 def /FontMatrix [ 0.000977 0 0 0.000977 0 0 ] def /FontAscent 935 def /FontDescent -221 def /FontScript 0 def /FontBBox [ 0 -512 1024 1024 ] def /Encoding 256 array dup 0 1 255 { /.notdef put dup } for pop def /l /lineto load def /m /moveto load def /c /curveto load def /BuildChar { Adobe_Illustrator_AI5_vars exch /_bitlobyte exch put Adobe_Illustrator_AI5_vars exch /_bitfont exch put Adobe_Illustrator_AI5_vars /_bithibyte 0 put _bitlobyte 16 4 string cvrs dup length (K) dup length dup 4 -1 roll add string Adobe_Illustrator_AI5_vars exch /_bitkey exch put exch _bitkey copy pop _bitkey exch 3 -1 roll putinterval _bitfont /CharMetrics get _bitkey cvn get dup type /arraytype eq { aload pop setcachedevice } { 0 setcharwidth } ifelse _bitfont /CharStrings get _bitkey cvn get exec } bind def 12 dict dup begin /K20 { } bind def /K2D { { newpath 42 192 m 301 192 l 301 268 l 42 268 l 42 192 l closepath } exec fill } bind def /K54 { { newpath 38 678 m 31 519 l 50 519 l 52 549 60 574 72 592 c 84 610 99 622 117 628 c 130 633 153 635 184 635 c 266 635 l 266 118 l 266 80 262 56 255 45 c 243 28 222 19 193 19 c 169 19 l 169 0 l 458 0 l 458 19 l 434 19 l 408 19 388 26 376 40 c 367 50 362 76 362 118 c 362 635 l 457 635 l 485 635 508 630 525 621 c 542 612 556 598 566 579 c 572 567 577 547 581 519 c 600 519 l 593 678 l 38 678 l closepath } exec fill } bind def /K61 { { newpath 306 8 m 316 -3 329 -9 345 -9 c 380 -9 415 16 453 66 c 453 94 l 433 74 419 62 412 58 c 408 55 404 54 398 54 c 393 54 389 56 385 59 c 381 62 378 69 377 79 c 375 89 374 115 374 159 c 374 314 l 374 358 371 388 365 402 c 356 424 341 440 322 451 c 296 464 262 471 222 471 c 169 471 127 459 98 435 c 69 411 54 384 54 356 c 54 341 58 329 66 320 c 74 311 84 307 96 307 c 109 307 119 311 127 320 c 135 328 139 340 139 355 c 138 384 l 138 399 144 412 157 423 c 169 434 186 440 207 440 c 234 440 255 432 269 415 c 284 398 291 366 291 321 c 291 303 l 212 274 156 250 122 230 c 88 210 65 189 51 166 c 41 150 36 130 36 108 c 36 73 46 44 67 23 c 87 1 113 -10 145 -10 c 165 -10 185 -6 203 3 c 215 8 244 29 291 65 c 291 38 296 19 306 8 c closepath 190 48 m 172 48 155 56 141 72 c 126 87 119 107 119 131 c 119 150 125 168 136 184 c 148 200 166 215 193 230 c 208 238 240 252 291 272 c 291 98 l 249 65 216 48 190 48 c 190 48 l closepath } exec fill } bind def /K63 { { newpath 407 181 m 390 140 372 112 354 97 c 328 75 298 64 266 64 c 220 64 184 85 157 127 c 130 169 117 217 117 272 c 117 325 131 368 158 401 c 178 426 205 438 238 438 c 259 438 275 433 287 423 c 298 412 305 397 307 378 c 309 358 313 344 319 337 c 328 324 343 318 363 318 c 377 318 389 322 397 330 c 405 338 409 348 409 361 c 409 386 395 411 366 435 c 337 459 300 471 255 471 c 195 471 143 449 100 404 c 57 359 36 300 36 228 c 36 154 55 95 94 51 c 133 8 178 -14 230 -14 c 274 -14 314 2 350 35 c 386 67 410 113 422 174 c 407 181 l closepath } exec fill } bind def /K65 { { newpath 426 285 m 426 342 409 387 376 420 c 343 454 301 471 250 471 c 189 471 139 449 98 405 c 58 362 38 301 38 223 c 38 150 58 93 97 50 c 136 7 183 -14 238 -14 c 289 -14 331 5 365 42 c 399 80 419 122 426 168 c 410 178 l 395 137 376 109 354 93 c 332 76 306 68 276 68 c 231 68 192 87 159 126 c 125 164 109 217 109 285 c 426 285 l closepath 147 403 m 169 424 194 435 222 435 c 240 435 257 430 274 419 c 291 409 303 394 311 375 c 317 364 320 343 322 314 c 109 314 l 113 352 125 382 147 403 c closepath } exec fill } bind def /K68 { { newpath 144 711 m 7 655 l 14 637 l 30 642 41 645 48 645 c 57 645 64 643 69 639 c 74 634 78 626 80 614 c 83 602 84 570 84 518 c 84 104 l 84 75 82 56 78 47 c 74 37 69 31 62 28 c 50 21 34 18 14 18 c 14 0 l 241 0 l 241 18 l 218 18 201 21 192 26 c 182 31 176 37 172 45 c 169 53 167 72 167 104 c 167 345 l 192 371 213 388 231 397 c 248 406 265 410 282 410 c 298 410 311 406 323 398 c 334 391 342 379 347 363 c 352 348 355 315 355 265 c 355 104 l 355 78 355 62 354 57 c 350 44 344 34 336 28 c 328 21 313 18 292 18 c 281 18 l 281 0 l 506 0 l 506 18 l 485 18 470 20 462 25 c 454 30 448 36 445 44 c 440 55 438 75 438 104 c 438 266 l 438 322 435 361 429 382 c 420 413 406 435 387 450 c 368 464 346 471 320 471 c 298 471 277 465 255 454 c 233 442 204 416 167 375 c 167 711 l 144 711 l closepath } exec fill } bind def /K69 { { newpath 112 696 m 102 686 97 674 97 660 c 97 646 102 634 112 624 c 122 614 134 609 148 609 c 162 609 174 614 184 624 c 194 634 199 646 199 660 c 199 674 194 686 184 696 c 174 706 162 711 148 711 c 134 711 122 706 112 696 c closepath 168 471 m 30 415 l 37 397 l 50 402 62 405 71 405 c 80 405 87 402 92 398 c 97 394 100 387 103 376 c 106 361 107 329 107 279 c 107 104 l 107 76 105 56 100 46 c 96 36 90 29 82 25 c 74 20 59 18 37 18 c 37 0 l 260 0 l 260 18 l 238 18 223 20 215 25 c 207 30 200 37 196 46 c 192 56 190 75 190 104 c 190 471 l 168 471 l closepath } exec fill } bind def /K6C { { newpath 168 711 m 31 655 l 40 637 l 53 642 64 645 73 645 c 81 645 87 643 92 639 c 97 634 101 626 104 614 c 106 602 107 571 107 519 c 107 104 l 107 76 105 56 100 46 c 96 36 90 29 82 25 c 75 20 60 18 39 18 c 39 0 l 264 0 l 264 18 l 240 18 224 20 216 25 c 207 30 200 37 196 47 c 192 56 190 75 190 104 c 190 711 l 168 711 l closepath } exec fill } bind def /K6E { { newpath 166 471 m 144 471 l 6 415 l 14 397 l 27 402 38 405 47 405 c 56 405 63 402 68 398 c 73 394 77 386 79 374 c 82 362 83 328 83 273 c 83 104 l 83 70 79 48 71 36 c 62 24 47 18 23 18 c 13 18 l 13 0 l 241 0 l 241 18 l 216 18 199 20 191 25 c 183 29 176 36 172 46 c 168 54 166 73 166 104 c 166 345 l 205 388 245 410 284 410 c 310 410 328 401 339 382 c 350 363 355 333 355 291 c 355 104 l 355 78 354 62 353 57 c 350 44 344 34 335 28 c 327 21 312 18 291 18 c 281 18 l 281 0 l 508 0 l 508 18 l 486 18 471 20 463 25 c 455 30 449 36 445 45 c 440 55 438 75 438 104 c 438 299 l 438 340 434 371 427 391 c 416 419 402 440 384 452 c 366 465 345 471 320 471 c 271 471 220 439 166 375 c 166 471 l closepath } exec fill } bind def /K72 { { newpath 146 471 m 7 415 l 12 397 l 25 402 37 405 47 405 c 56 405 63 402 69 398 c 75 393 79 385 81 375 c 83 365 84 333 84 280 c 84 104 l 84 77 83 61 82 55 c 78 43 72 35 64 29 c 53 22 35 18 12 18 c 12 0 l 247 0 l 247 18 l 226 18 211 21 200 27 c 189 33 181 40 177 49 c 170 62 167 82 167 107 c 167 326 l 183 357 198 380 213 393 c 220 400 227 403 233 403 c 240 403 250 397 265 386 c 279 375 292 369 304 369 c 316 369 326 374 335 383 c 344 392 348 403 348 416 c 348 430 342 443 330 454 c 318 465 303 471 285 471 c 244 471 205 437 167 368 c 167 471 l 146 471 l closepath } exec fill } bind def /K74 { { newpath 150 609 m 136 575 126 552 118 539 c 103 515 86 494 67 477 c 47 460 28 447 10 440 c 10 424 l 83 424 l 83 115 l 83 82 87 57 94 41 c 101 26 111 13 126 5 c 141 -4 156 -8 171 -8 c 194 -8 216 0 237 17 c 259 33 275 58 287 91 c 267 91 l 261 78 253 67 243 60 c 233 53 222 50 211 50 c 198 50 187 55 179 66 c 170 76 166 96 166 126 c 166 423 l 273 424 l 273 458 l 166 458 l 166 609 l 150 609 l closepath } exec fill } bind def end /CharStrings exch def 12 dict dup begin /K20 [256 0 0 0 0 0] def Encoding 32 /K20 put /K2D [341 0 42 193 301 268] def Encoding 45 /K2D put /K54 [626 0 31 0 600 679] def Encoding 84 /K54 put /K61 [455 0 36 -9 453 472] def Encoding 97 /K61 put /K63 [455 0 36 -13 422 472] def Encoding 99 /K63 put /K65 [455 0 38 -13 425 472] def Encoding 101 /K65 put /K68 [512 0 7 0 506 712] def Encoding 104 /K68 put /K69 [285 0 31 0 260 712] def Encoding 105 /K69 put /K6C [285 0 32 0 264 712] def Encoding 108 /K6C put /K6E [512 0 6 0 507 472] def Encoding 110 /K6E put /K72 [341 0 7 0 347 472] def Encoding 114 /K72 put /K74 [285 0 10 -7 287 609] def Encoding 116 /K74 put end /CharMetrics exch def end definefont pop %%EndFont } if /EuclidSymbol havefont not { %%BeginFont: EuclidSymbol /EuclidSymbol 15 dict dup begin /FontName /EuclidSymbol def /FontType 3 def /FontMatrix [ 0.000977 0 0 0.000977 0 0 ] def /FontAscent 975 def /FontDescent -256 def /FontScript 0 def /FontBBox [ 0 -512 1024 1024 ] def /Encoding 256 array dup 0 1 255 { /.notdef put dup } for pop def /l /lineto load def /m /moveto load def /c /curveto load def /BuildChar { Adobe_Illustrator_AI5_vars exch /_bitlobyte exch put Adobe_Illustrator_AI5_vars exch /_bitfont exch put Adobe_Illustrator_AI5_vars /_bithibyte 0 put _bitlobyte 16 4 string cvrs dup length (K) dup length dup 4 -1 roll add string Adobe_Illustrator_AI5_vars exch /_bitkey exch put exch _bitkey copy pop _bitkey exch 3 -1 roll putinterval _bitfont /CharMetrics get _bitkey cvn get dup type /arraytype eq { aload pop setcachedevice } { 0 setcharwidth } ifelse _bitfont /CharStrings get _bitkey cvn get exec } bind def 1 dict dup begin /K77 { { newpath 18 496 m 168 0 l 250 0 l 330 236 l 347 289 362 340 375 399 c 377 399 l 389 341 403 292 421 237 c 497 0 l 579 0 l 738 496 l 649 496 l 579 247 l 562 188 549 136 541 86 c 538 86 l 526 136 512 188 494 248 c 417 496 l 341 496 l 260 244 l 244 189 227 136 216 86 c 213 86 l 204 137 190 188 176 244 c 111 496 l closepath } exec fill } bind def end /CharStrings exch def 1 dict dup begin /K77 [754 0 18 0 738 496] def Encoding 119 /K77 put end /CharMetrics exch def end definefont pop %%EndFont } if setpacking %AI3_EndRider [ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis /Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute /egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde /oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex /udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls /registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash /.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef /.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash /questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef /guillemotleft/guillemotright/ellipsis/space/Agrave/Atilde/Otilde/OE/oe /endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide /.notdef/ydieresis/Ydieresis/fraction/Euro/guilsinglleft/guilsinglright /fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand /Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex /Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex /Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla /hungarumlaut/ogonek/caron TE %AI55J_Tsume: None %AI3_BeginEncoding: _EuclidSymbol EuclidSymbol [/_EuclidSymbol/EuclidSymbol 0 0 0 TZ %AI3_EndEncoding TrueType %AI55J_Tsume: None %AI3_BeginEncoding: _Times-Roman Times-Roman [/_Times-Roman/Times-Roman 0 0 1 TZ %AI3_EndEncoding AdobeType %AI55J_Tsume: None %AI3_BeginEncoding: _TimesNewRomanPSMT TimesNewRomanPSMT [/_TimesNewRomanPSMT/TimesNewRomanPSMT 0 0 0 TZ %AI3_EndEncoding TrueType [161/degree 173/notequal 176/infinity/plusminus/lessequal/greaterequal 181/mu/partialdiff/summation/product/pi/integral 189/Omega 195/radical 197/approxequal 198/Delta 214/divide/lozenge 240/apple /_Symbol_/Symbol 0 0 0 TZ %AI5_Begin_NonPrinting Np %AI8_PluginGroupInfo (Adobe Path Blends) (Adobe Blends Plugin) (LiveBlends.aip) %AI8_PluginGroupInfo (Adobe Tracing Object) (Tracing) (TracingSuite.aip) %AI8_PluginGroupInfo (Adobe Scatter Brush Tool) (Adobe Scatter Brush Plugin) (ScatterBrushTool.aip) %AI8_PluginGroupInfo (Adobe Scatter Brush Tool) (Adobe Scatter Brush Plugin) (ScatterBrushTool.aip) %AI8_PluginGroupInfo (Adobe PatternOnPath Brush Tool) (Adobe Pattern Brush Plugin) (ArtBrushTool.aip) %AI8_PluginGroupInfo (Adobe PatternOnPath Brush Tool) (Adobe Pattern Brush Plugin) (ArtBrushTool.aip) %AI8_PluginGroupInfo (Adobe ArtOnPath Brush Tool) (Adobe Art Brush Plugin) (ArtBrushTool.aip) %AI8_PluginGroupInfo (Adobe ArtOnPath Brush Tool) (Adobe Art Brush Plugin) (ArtBrushTool.aip) %AI8_PluginGroupInfo (Adobe Calligraphic Brush Tool) (Adobe Calligraphic Brush Plugin) (CalligBrushTool.aip) %AI8_PluginGroupInfo (Adobe Flare Plugin) (Flare) (Flare.aip) %AI8_PluginGroupInfo (Adobe Symbolism) (Adobe Symbolism) (ParticleSystem.aip) %AI8_PluginGroupInfo (Adobe Deform Plugin) (Adobe Envelope Plugin) (Envelope and Warp.aip) %AI8_PluginGroupInfo (Pathfinder Suite) (Adobe Compound Shape) (PathFinderS.aip) %AI8_PluginGroupInfo (Adobe Planar Group) (Adobe Live Paint Plugin) (Live Paint.aip) %AI5_End_NonPrinting-- %AI5_Begin_NonPrinting Np 4 Bn %AI5_BeginGradient: (Black, White) (Black, White) 0 2 Bd [ < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 0 %_Br [ 0 0 50 100 %_BS %_0 0 50 100 Bs 1 0 50 0 %_BS %_1 0 50 0 Bs BD %AI5_EndGradient %AI5_BeginGradient: (Chrome) (Chrome) 0 6 Bd [ 0 < 464646454545444444444343434342424241414141404040403F3F3F3E3E3E3E3D3D3D3C3C3C3C3B 3B3B3B3A3A3A39393939383838383737373636363635353535343434333333333232323131313130 3030302F2F2F2E2E2E2E2D2D2D2D2C2C2C2B2B2B2B2A2A2A2A292929282828282727272626262625 2525252424242323232322222222212121202020201F1F1F1F1E1E1E1D1D1D1D1C1C1C1B1B1B1B1A 1A1A1A1919191818181817171717161616151515151414141413131312121212111111101010100F 0F0F0F0E0E0E0D0D0D0D0C0C0C0C0B0B0B0A0A0A0A09090909080808070707070606060505050504 04040403030302020202010101010000 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < 1F1E1E1E1E1E1E1E1E1E1D1D1D1D1D1D1D1D1C1C1C1C1C1C1C1C1B1B1B1B1B1B1B1B1B1A1A1A1A1A 1A1A1A19191919191919191818181818181818181717171717171717161616161616161615151515 15151515151414141414141414131313131313131312121212121212121211111111111111111010 1010101010100F0F0F0F0F0F0F0F0F0E0E0E0E0E0E0E0E0D0D0D0D0D0D0D0D0C0C0C0C0C0C0C0C0C 0B0B0B0B0B0B0B0B0A0A0A0A0A0A0A0A090909090909090909080808080808080807070707070707 07060606060606060606050505050505050504040404040404040303030303030303030202020202 02020201010101010101010000000000 > 1 %_Br 0 0.275 1 < 6B6A696867666564636261605F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544 434241403F3E3D3C3B3A393837363534333231302F2E2D2C2B2A292827262524232221201F > 1 %_Br 0 < 00000101010102020202030303040404040505050506060607070707080808090909090A0A0A0A0B 0B0B0C0C0C0C0D0D0D0D0E0E0E0F0F0F0F1010101011111112121212131313141414141515151516 161617171717181818181919191A1A1A1A1B1B1B1C1C1C1C1D1D1D1D1E1E1E1F1F1F1F2020202021 212122222222232323232424242525252526262626272727282828282929292A2A2A2A2B2B2B2B2C 2C2C2D2D2D2D2E2E2E2E2F2F2F303030303131313132323233333333343434353535353636363637 373738383838393939393A3A3A3B3B3B3B3C3C3C3D3D3D3D3E3E3E3E3F3F3F404040404141414142 42424343434344444444454545464646 > < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > < 00000101020203030304040505050606070708080809090A0A0B0B0B0C0C0D0D0D0E0E0F0F101010 1111121212131314141515151616171718181819191A1A1A1B1B1C1C1D1D1D1E1E1F1F1F20202121 222222232324242525252626272727282829292A2A2A2B2B2C2C2D2D2D2E2E2F2F2F303031313232 32333334343435353636373737383839393A3A3A3B3B3C3C3C3D3D3E3E3F3F3F4040414142424243 434444444545464647474748484949494A4A4B4B4C4C4C4D4D4E4E4F4F4F50505151515252535354 54545555565657575758585959595A5A5B5B5C5C5C5D5D5E5E5E5F5F606061616162626363646464 6565666666676768686969696A6A6B6B > 1 %_Br 1 0 %_Br < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < 4D4C4C4C4B4B4B4A4A4A4A4949494848484747474746464645454544444444434343424242414141 414040403F3F3F3E3E3E3E3D3D3D3C3C3C3B3B3B3B3A3A3A39393938383838373737363636353535 35343434333333323232323131313030302F2F2F2E2E2E2E2D2D2D2C2C2C2B2B2B2B2A2A2A292929 282828282727272626262525252524242423232322222222212121202020201F1F1F1E1E1E1D1D1D 1D1C1C1C1B1B1B1A1A1A1A1919191818181717171616161615151514141413131313121212111111 101010100F0F0F0E0E0E0D0D0D0D0C0C0C0B0B0B0A0A0A0A09090908080807070707060606050505 04040404030303020202010101010000 > 0 0 1 %_Br [ 1 0 50 92 %_BS %_1 0 50 92 Bs 0 0.275 1 0.12 1 50 59 %_BS %_0 0.275 1 0.12 1 50 59 Bs 0 0.275 1 0.42 1 50 50 %_BS %_0 0.275 1 0.42 1 50 50 Bs 1 0 50 49 %_BS %_1 0 50 49 Bs 1 0 50 41 %_BS %_1 0 50 41 Bs 1 0.3 0 0 1 50 0 %_BS %_1 0.3 0 0 1 50 0 Bs BD %AI5_EndGradient %AI5_BeginGradient: (Rainbow) (Rainbow) 0 6 Bd [ < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 1 0 0 1 %_Br 1 < 0708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E 2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F50515253545556 5758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E 7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6 A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCE CFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6 F7F8F9FAFBFCFDFEFF > 0 0 1 %_Br 1 < 00000000000000000000000000000000000001010101010101010101010101010101010101010101 01010101010101010101010101010202020202020202020202020202020202020202020202020202 02020202020202020202030303030303030303030303030303030303030303030303030303030303 03030303030304040404040404040404040404040404040404040404040404040404040404040404 04040505050505050505050505050505050505050505050505050505050505050505050505050606 06060606060606060606060606060606060606060606060606060606060606060607070707070707 07070707070707070707070707070707 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 0 1 %_Br < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 0 1 0 1 %_Br 0 < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 1 0 1 %_Br [ 0 1 0 0 1 50 100 %_BS %_0 1 0 0 1 50 100 Bs 1 1 0 0 1 50 80 %_BS %_1 1 0 0 1 50 80 Bs 1 0.0279 0 0 1 50 60 %_BS %_1 0.0279 0 0 1 50 60 Bs 1 0 1 0 1 50 40 %_BS %_1 0 1 0 1 50 40 Bs 0 0 1 0 1 50 20 %_BS %_0 0 1 0 1 50 20 Bs 0 1 1 0 1 50 0 %_BS %_0 1 1 0 1 50 0 Bs BD %AI5_EndGradient %AI5_BeginGradient: (Yellow & Orange Radial) (Yellow & Orange Radial) 1 2 Bd [ 0 < 0001010203040506060708090A0B0C0C0D0E0F10111213131415161718191A1B1C1D1D1E1F202122 232425262728292A2B2B2C2D2E2F303132333435363738393A3B3C3D3E3E3F404142434445464748 494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F60606162636465666768696A6B6C6D6E6F 707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C > < FFFFFFFFFEFEFEFEFEFEFEFDFDFDFDFDFDFCFCFCFCFCFCFBFBFBFBFBFBFAFAFAFAFAFAF9F9F9F9F9 F9F8F8F8F8F8F8F7F7F7F7F7F7F6F6F6F6F6F6F5F5F5F5F5F5F4F4F4F4F4F3F3F3F3F3F3F2F2F2F2 F2F2F1F1F1F1F1F0F0F0F0F0F0EFEFEFEFEFEFEEEEEEEEEEEDEDEDEDEDEDECECECECECEBEBEBEBEB EBEAEAEAEAEAE9E9E9E9E9E9E8E8E8E8E8E8E7E7E7E7E7E6E6E6E6E6E6 > 0 1 %_Br [ 0 0 1 0 1 52 19 %_BS %_0 0 1 0 1 52 19 Bs 0 0.55 0.9 0 1 50 100 %_BS %_0 0.55 0.9 0 1 50 100 Bs BD %AI5_EndGradient %AI5_End_NonPrinting-- %AI5_Begin_NonPrinting Np %AI3_BeginPattern: (Brick) (Brick) 0 0 72 72 [ %AI3_Tile (0 O 0 R 0.3 0.85 0.85 0 k 0.3 0.85 0.85 0 K ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 0 0 m 0 72 L 72 72 L 72 0 L 0 0 L f %AI6_EndPatternLayer ) & (0 O 0 R 1 g 1 G ) @ ( %AI6_BeginPatternLayer 0 J 0 j 0.3 w 4 M []0 d 0 XR 0 68.4097 m 72 68.4097 l S 0 61.209 m 72 61.209 L S 0 54.0088 m 72 54.0088 L S 0 46.8076 m 72 46.8076 L S 0 39.6084 m 72 39.6084 L S 0 32.4072 m 72 32.4072 L S 0 25.207 m 72 25.207 L S 0 18.0059 m 72 18.0059 L S 0 10.8057 m 72 10.8057 L S 0 3.6064 m 72 3.6064 L S 68.4102 68.4097 m 68.4102 61.2217 l S 54.0098 68.4097 m 54.0098 61.2217 L S 39.6094 68.4097 m 39.6094 61.2217 L S 25.21 68.4097 m 25.21 61.2217 L S 10.8105 68.4097 m 10.8105 61.2217 L S 68.4102 53.9717 m 68.4102 46.7842 l S 54.0098 53.9717 m 54.0098 46.7842 L S 39.6094 53.9717 m 39.6094 46.7842 L S 25.21 53.9717 m 25.21 46.7842 L S 10.8105 53.9717 m 10.8105 46.7842 L S 68.4102 39.5967 m 68.4102 32.4092 l S 54.0098 39.5967 m 54.0098 32.4092 L S 39.6094 39.5967 m 39.6094 32.4092 L S 25.21 39.5967 m 25.21 32.4092 L S 10.8105 39.5967 m 10.8105 32.4092 L S 68.4102 25.2217 m 68.4102 18.0342 l S 54.0098 25.2217 m 54.0098 18.0342 L S 39.6094 25.2217 m 39.6094 18.0342 L S 25.21 25.2217 m 25.21 18.0342 L S 10.8105 25.2217 m 10.8105 18.0342 L S 68.4102 10.7842 m 68.4102 3.5967 l S 54.0098 10.7842 m 54.0098 3.5967 L S 39.6094 10.7842 m 39.6094 3.5967 L S 25.21 10.7842 m 25.21 3.5967 L S 10.8105 10.7842 m 10.8105 3.5967 L S 61.1973 3.5967 m 61.1973 0 L S 46.7969 3.5967 m 46.7969 0 L S 32.3965 3.5967 m 32.3965 0 L S 17.9971 3.5967 m 17.9971 0 L S 3.5967 3.5967 m 3.5967 0 l S 61.1973 18.0342 m 61.1973 10.8467 L S 46.7969 18.0342 m 46.7969 10.8467 L S 32.3965 18.0342 m 32.3965 10.8467 L S 17.9971 18.0342 m 17.9971 10.8467 L S 3.5967 18.0342 m 3.5967 10.8467 l S 61.1973 32.4092 m 61.1973 25.2217 L S 46.7969 32.4092 m 46.7969 25.2217 L S 17.9971 32.4092 m 17.9971 25.2217 L S 3.5967 32.4092 m 3.5967 25.2217 l S 61.1973 46.7842 m 61.1973 39.5967 L S 46.7969 46.7842 m 46.7969 39.5967 L S 32.3965 46.7842 m 32.3965 39.5967 L S 17.9971 46.7842 m 17.9971 39.5967 L S 3.5967 46.7842 m 3.5967 39.5967 l S 61.1973 61.2217 m 61.1973 54.0347 L S 46.7969 61.2217 m 46.7969 54.0347 L S 32.3965 61.2217 m 32.3965 54.0347 L S 17.9971 61.2217 m 17.9971 54.0347 L S 3.5967 61.2217 m 3.5967 54.0347 l S 61.1973 71.959 m 61.1973 68.4717 L S 46.7969 71.959 m 46.7969 68.4717 L S 32.3965 71.959 m 32.3965 68.4717 L S 17.9971 71.959 m 17.9971 68.4717 L S 3.5967 71.959 m 3.5967 68.4717 l S 32.3965 32.4092 m 32.3965 25.2217 L S %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Confetti) (Confetti) 4.85 3.617 76.85 75.617 [ %AI3_Tile (0 O 0 R 1 g 1 G ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 4.85 3.617 m 4.85 75.617 L 76.85 75.617 L 76.85 3.617 L 4.85 3.617 L f %AI6_EndPatternLayer ) & (0 O 0 R 0 g 0 G ) @ ( %AI6_BeginPatternLayer 0 J 0 j 0.3 w 4 M []0 d 0 XR 10.6 64.867 m 7.85 62.867 l S 9.1 8.617 m 6.85 6.867 l S 78.1 68.617 m 74.85 67.867 l S 76.85 56.867 m 74.35 55.117 l S 79.6 51.617 m 76.6 51.617 l S 76.35 44.117 m 73.6 45.867 l S 78.6 35.867 m 76.6 34.367 l S 76.1 23.867 m 73.35 26.117 l S 78.1 12.867 m 73.85 13.617 l S 68.35 14.617 m 66.1 12.867 l S 76.6 30.617 m 73.6 30.617 l S 62.85 58.117 m 60.956 60.941 l S 32.85 59.617 m 31.196 62.181 l S 47.891 64.061 m 49.744 66.742 l S 72.814 2.769 m 73.928 5.729 l S 67.976 2.633 m 67.35 5.909 l S 61.85 27.617 m 59.956 30.441 l S 53.504 56.053 m 51.85 58.617 l S 52.762 1.779 m 52.876 4.776 l S 45.391 5.311 m 47.244 7.992 l S 37.062 3.375 m 35.639 5.43 l S 55.165 34.828 m 57.518 37.491 l S 20.795 3.242 m 22.12 5.193 l S 14.097 4.747 m 15.008 8.965 l S 9.736 1.91 m 8.073 4.225 l S 31.891 5.573 m 32.005 8.571 l S 12.1 70.367 m 15.6 68.867 l S 9.35 54.867 m 9.6 58.117 l S 12.85 31.867 m 14.35 28.117 l S 10.1 37.367 m 12.35 41.117 l S 34.1 71.117 m 31.85 68.617 l S 38.35 71.117 m 41.6 68.367 l S 55.1 71.117 m 58.35 69.117 l S 57.35 65.117 m 55.35 61.867 l S 64.35 66.367 m 69.35 68.617 l S 71.85 62.867 m 69.35 61.117 l S 23.6 70.867 m 23.6 67.867 l S 20.6 65.867 m 17.35 65.367 l S 24.85 61.367 m 25.35 58.117 l S 25.85 65.867 m 29.35 66.617 l S 14.1 54.117 m 16.85 56.117 l S 12.35 11.617 m 12.6 15.617 l S 12.1 19.867 m 14.35 22.367 l S 26.1 9.867 m 23.6 13.367 l S 34.6 47.117 m 32.1 45.367 l S 62.6 41.867 m 59.85 43.367 l S 31.6 35.617 m 27.85 36.367 l S 36.35 26.117 m 34.35 24.617 l S 33.85 14.117 m 31.1 16.367 l S 37.1 9.867 m 35.1 11.117 l S 34.35 20.867 m 31.35 20.867 l S 44.6 56.617 m 42.1 54.867 l S 47.35 51.367 m 44.35 51.367 l S 44.1 43.867 m 41.35 45.617 l S 43.35 33.117 m 42.6 30.617 l S 43.85 23.617 m 41.1 25.867 l S 44.35 15.617 m 42.35 16.867 l S 67.823 31.1 m 64.823 31.1 l S 27.1 32.617 m 29.6 30.867 l S 31.85 55.117 m 34.85 55.117 l S 19.6 40.867 m 22.1 39.117 l S 16.85 35.617 m 19.85 35.617 l S 20.1 28.117 m 22.85 29.867 l S 52.1 42.617 m 54.484 44.178 l S 52.437 50.146 m 54.821 48.325 l S 59.572 54.133 m 59.35 51.117 l S 50.185 10.055 m 53.234 9.928 l S 51.187 15.896 m 53.571 14.075 l S 58.322 19.883 m 59.445 16.823 l S 53.1 32.117 m 50.6 30.367 l S 52.85 24.617 m 49.6 25.617 l S 61.85 9.117 m 59.1 10.867 l S 69.35 34.617 m 66.6 36.367 l S 67.1 23.617 m 65.1 22.117 l S 24.435 46.055 m 27.484 45.928 l S 25.437 51.896 m 27.821 50.075 l S 62.6 47.117 m 65.321 46.575 l S 19.85 19.867 m 20.35 16.617 l S 21.85 21.867 m 25.35 22.617 l S 37.6 62.867 m 41.6 62.117 l S 38.323 42.1 m 38.823 38.6 l S 69.35 52.617 m 66.85 53.867 l S 14.85 62.117 m 18.1 59.367 l S 9.6 46.117 m 7.1 44.367 l S 20.6 51.617 m 18.6 50.117 l S 46.141 70.811 m 47.994 73.492 l S 69.391 40.561 m 71.244 43.242 l S 38.641 49.311 m 39.35 52.117 l S 25.141 16.811 m 25.85 19.617 l S 36.6 32.867 m 34.6 31.367 l S 6.1 68.617 m 2.85 67.867 l S 4.85 56.867 m 2.35 55.117 l S 7.6 51.617 m 4.6 51.617 l S 6.6 35.867 m 4.6 34.367 l S 6.1 12.867 m 1.85 13.617 l S 4.6 30.617 m 1.6 30.617 l S 72.814 74.769 m 73.928 77.729 l S 67.976 74.633 m 67.35 77.909 l S 52.762 73.779 m 52.876 76.776 l S 37.062 75.375 m 35.639 77.43 l S 20.795 75.242 m 22.12 77.193 l S 9.736 73.91 m 8.073 76.225 l S 10.1 23.617 m 6.35 24.367 l S 73.217 18.276 m 71.323 21.1 l S 28.823 39.6 m 29.505 42.389 l S 49.6 38.617 m 47.6 37.117 l S 60.323 73.6 m 62.323 76.6 l S 60.323 1.6 m 62.323 4.6 l S %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Leaves - Fall ) (Leaves - Fall ) 0 0 64.0781 78.9336 [ %AI3_Tile (0 O 0 R 0.05 0.2 1 0 k 0.05 0.2 1 0 K ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 64.0781 78.9336 m 64.0781 0 L 0 0 L 0 78.9336 L 64.0781 78.9336 L f %AI6_EndPatternLayer ) & (0 O 0 R 0.83 0 1 0 k 0.83 0 1 0 K ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 29.7578 0.9902 m 30.4346 1.1914 30.7246 1.3428 V 29.2559 4.0547 33.707 8.3359 34.627 9.0762 C 35.2275 8.8506 35.3477 6.3184 34.6699 4.9805 C 35.5137 5.1035 37.7031 3.7256 38.4609 2.4365 C 38.5254 3.125 40.0957 6.0664 40.9219 6.4434 C 40.002 6.8408 39.3359 8.3135 38.5742 9.7617 C 39.5957 9.9287 40.9961 9.0078 42.4668 8.1025 C 42.9814 8.9043 44.3555 9.875 45.6143 10.3916 C 44.5264 11.0781 44.0313 11.8203 43.5352 13.2793 C 42.4922 12.7139 40.3057 12.5645 39.7764 12.8516 C 40.291 13.9648 42.5371 14.5078 43.2676 14.4551 C 43.0137 15.3164 42.8652 17.4697 43.0391 20.0625 C 41.3789 18.7461 39.834 17.4297 38.1738 17.4883 C 38.4434 16.0664 37.8076 14.2607 37.4307 13.7676 C 36.8574 14.5117 36.4463 15.3389 36.8008 17.3164 C 35.3486 17.8008 34.1113 18.3467 32.7373 19.6045 C 32.7373 17.7734 32.166 16.5723 31.2969 15.2959 C 32.5576 14.8076 33.8301 13.6045 33.8252 12.5664 C 32.9775 12.7178 31.2852 13.4619 30.793 14.4551 C 30.0742 13.707 28.3906 12.3984 26.7871 12.3945 C 27.9746 11.5391 28.8945 10.5059 28.9893 8.5938 C 30.2422 9.5645 32.6953 10.1797 34.0752 9.582 C 29.2344 5.3457 29.7031 2.3125 29.7578 0.9902 C f 13.8525 29.9844 m 13.3281 29.5127 13.1309 29.25 V 15.623 27.4326 13.3691 21.6074 12.8555 20.5439 C 12.2168 20.4883 10.8096 23.2285 10.8457 24.7266 C 9.7129 23.9707 8.0488 24.0918 6.4463 24.3779 C 7.0186 23.2891 6.6172 21.3447 5.8164 20.5439 C 6.8184 20.5801 8.1699 19.8652 9.4785 18.8838 C 8.6436 18.0645 6.8164 18.2246 4.9004 18.8838 C 4.9004 17.5107 4.0781 15.7734 3.2412 14.5918 C 4.5576 14.6484 5.7031 13.9629 6.5605 12.9316 C 7.2256 14.5 9.2598 15.6133 10.166 15.5645 C 10.1826 14.1992 8.6094 12.1094 7.5879 11.7109 C 8.1875 11.041 9.207 9.5107 10.166 7.0947 C 10.9648 9.0205 12.1348 10.2627 13.3672 11.1953 C 12.2256 12.7578 12.3994 13.6289 12.7988 15.1074 C 13.541 14.5664 14.5723 14.1338 14.7441 12.1309 C 16.4609 12.416 17.5957 12.3447 19.0938 11.4434 C 18.6387 13.1055 18.6348 14.707 18.9551 16.4063 C 17.1055 16.2666 15.5449 16.4795 14.5156 17.9688 C 15.3457 18.1953 17.6055 18.2549 18.4795 17.3223 C 18.8066 18.3047 19.7012 19.7109 21.1475 20.4043 C 19.707 20.6641 18.7227 21.7637 17.8135 23.4492 C 17.1006 22.0332 14.873 20.3691 13.3711 20.3145 C 15.373 24.3779 15.373 27.2959 13.8525 29.9844 C f 41.2324 26.0742 m 41.5518 26.7021 41.7549 26.959 V 44.1523 25.0176 48.958 28.3262 49.8535 29.0957 C 49.7432 29.7266 47.6182 30.8643 45.9004 29.834 C 46.3408 31.123 45.4395 33.084 44.2402 34.126 C 45.9805 34.0254 48.126 35.3867 48.6484 36.1289 C 48.8701 35.1514 50.0527 33.8809 51.3379 32.8672 C 51.6895 33.8398 50.9941 35.958 50.0781 37.5605 C 51.3125 38.0605 52.4248 38.9912 52.8828 40.25 C 53.3398 38.9336 54.3428 38.2598 55.6875 37.5039 C 54.5273 36.0762 53.7471 33.9023 54.0273 33.0391 C 55.3496 33.374 56.9209 36.0918 57.0439 37.1816 C 57.9189 36.415 59.4727 35.7285 62.0537 35.4219 C 60.3535 34.3438 59.9902 32.3516 59.4063 30.9219 C 58.2588 31.3682 56.0898 31.4277 55.1152 30.8643 C 55.8281 30.2852 57.168 29.7344 59.1777 29.7207 C 59.1777 28.1758 59.6406 27.043 60.8945 25.8281 C 59.1719 25.8418 57.0723 25.3555 55.5762 24.9629 C 55.3281 26.292 54.4844 27.8887 53.3398 28.2891 C 53.334 27.4277 53.5996 25.1797 54.4844 24.5117 C 53.6201 23.9443 52.3672 22.5674 51.9102 20.8496 C 51.2881 22.1758 50.4268 23.4805 48.5645 23.9238 C 49.749 24.9766 50.584 26.9941 50.25 28.4609 C 45.1973 24.4785 42.5215 25.7773 41.2324 26.0742 C f 27.7578 38.7324 m 28.4346 38.9316 28.7246 39.084 V 27.2559 41.7969 31.707 46.0776 32.627 46.8169 C 33.2275 46.5918 33.3477 44.0586 32.6699 42.7227 C 33.5137 42.8457 35.7031 41.4678 36.4609 40.1787 C 36.5254 40.8652 38.0957 43.8066 38.9219 44.1846 C 38.002 44.582 37.3359 46.0547 36.5742 47.5039 C 37.5957 47.6709 38.9961 46.7485 40.4668 45.8438 C 40.9814 46.6445 42.3555 47.6177 43.6143 48.1328 C 42.5264 48.8198 42.0313 49.5615 41.5352 51.0205 C 40.4922 50.4556 38.3057 50.3057 37.7764 50.5938 C 38.291 51.7056 40.5371 52.2485 41.2676 52.1958 C 41.0137 53.0576 40.8652 55.2109 41.0391 57.8037 C 39.3789 56.4878 37.834 55.1719 36.1738 55.2285 C 36.4434 53.8076 35.8076 52.002 35.4307 51.5088 C 34.8574 52.2529 34.4463 53.0796 34.8008 55.0576 C 33.3486 55.5425 32.1113 56.0879 30.7373 57.3467 C 30.7373 55.5146 30.166 54.314 29.2969 53.0366 C 30.5576 52.5488 31.8301 51.3467 31.8252 50.3076 C 30.9775 50.46 29.2852 51.2036 28.793 52.1958 C 28.0742 51.4497 26.3906 50.1396 24.7871 50.1357 C 25.9746 49.2817 26.8945 48.2466 26.9893 46.335 C 28.2422 47.3057 30.6953 47.9209 32.0752 47.3237 C 27.2344 43.0869 27.7031 40.0547 27.7578 38.7324 C f 13.5195 70.3916 m 12.9941 69.9209 12.7988 69.6587 V 15.2891 67.8418 13.0352 62.0146 12.5225 60.9517 C 11.8828 60.8955 10.4766 63.6367 10.5117 65.1348 C 9.3809 64.3789 7.7148 64.4995 6.1133 64.7856 C 6.6855 63.6987 6.2842 61.7529 5.4834 60.9517 C 6.4854 60.9878 7.8359 60.2729 9.1455 59.2925 C 8.3105 58.4717 6.4834 58.6338 4.5674 59.2925 C 4.5674 57.9189 3.7461 56.1816 2.9082 54.9995 C 4.2246 55.0576 5.3691 54.3706 6.2275 53.3408 C 6.8926 54.9097 8.9258 56.0215 9.832 55.9727 C 9.8496 54.6079 8.2764 52.5176 7.2539 52.1187 C 7.8545 51.4497 8.873 49.9189 9.832 47.5039 C 10.6309 49.4297 11.8008 50.6719 13.0342 51.6045 C 11.8926 53.1655 12.0664 54.0366 12.4648 55.5146 C 13.209 54.9746 14.2393 54.5415 14.4102 52.5386 C 16.127 52.8247 17.2637 52.7529 18.7598 51.8525 C 18.3057 53.5137 18.3027 55.1147 18.623 56.8149 C 16.7725 56.6748 15.2129 56.8887 14.1826 58.377 C 15.0117 58.6035 17.2725 58.6626 18.1465 57.731 C 18.4736 58.7129 19.3691 60.1187 20.8145 60.8125 C 19.375 61.0728 18.3896 62.1719 17.4805 63.8579 C 16.7676 62.4429 14.541 60.7769 13.0371 60.7227 C 15.041 64.7856 15.041 67.7046 13.5195 70.3916 C f 41.2324 64.4824 m 41.5518 65.1113 41.7549 65.3682 V 44.1523 63.4272 48.958 66.7354 49.8535 67.5034 C 49.7432 68.1362 47.6182 69.2725 45.9004 68.2422 C 46.3408 69.5313 45.4395 71.4922 44.2402 72.5342 C 45.9805 72.4341 48.126 73.7954 48.6484 74.5371 C 48.8701 73.5601 50.0527 72.29 51.3379 71.2754 C 51.6895 72.249 50.9941 74.3662 50.0781 75.9683 C 51.3125 76.4692 52.4248 77.3994 52.8828 78.6582 C 53.3398 77.3423 54.3428 76.667 55.6875 75.9111 C 54.5273 74.4844 53.7471 72.3101 54.0273 71.4473 C 55.3496 71.7822 56.9209 74.5 57.0439 75.5903 C 57.9189 74.8232 59.4727 74.1372 62.0537 73.8311 C 60.3535 72.7534 59.9902 70.7612 59.4063 69.3301 C 58.2588 69.7773 56.0898 69.8364 55.1152 69.2725 C 55.8281 68.6934 57.168 68.1431 59.1777 68.1284 C 59.1777 66.583 59.6406 65.4512 60.8945 64.2373 C 59.1719 64.249 57.0723 63.7632 55.5762 63.3721 C 55.3281 64.7002 54.4844 66.2974 53.3398 66.6973 C 53.334 65.8364 53.5996 63.5874 54.4844 62.9214 C 53.6201 62.353 52.3672 60.9751 51.9102 59.2583 C 51.2881 60.583 50.4268 61.8882 48.5645 62.333 C 49.749 63.3862 50.584 65.4033 50.25 66.8691 C 45.1973 62.8872 42.5215 64.1851 41.2324 64.4824 C f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Stripes) (Stripes) 8.45 4.6001 80.45 76.6001 [ %AI3_Tile (0 O 0 R 1 0.07 1 0 k 1 0.07 1 0 K ) @ ( %AI6_BeginPatternLayer 0 J 0 j 3.6 w 4 M []0 d 0 XR 8.2 8.2 m 80.7 8.2 L S 8.2 22.6001 m 80.7 22.6001 L S 8.2 37.0002 m 80.7 37.0002 L S 8.2 51.4 m 80.7 51.4 L S 8.2 65.8001 m 80.7 65.8001 L S 8.2 15.4 m 80.7 15.4 L S 8.2 29.8001 m 80.7 29.8001 L S 8.2 44.2 m 80.7 44.2 L S 8.2 58.6001 m 80.7 58.6001 L S 8.2 73.0002 m 80.7 73.0002 L S %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI5_End_NonPrinting-- %AI5_Begin_NonPrinting Np %AI8_BeginBrushPattern (New Pattern 1) 0 A u 1 Ap 0 J 0 j 1 w 4 M []0 d 0 XR -7966.8496 8072.5967 m -7966.8496 8048.5967 L -8016.8496 8048.5967 L -8016.8496 8072.5967 L -7966.8496 8072.5967 L n u 0 Ap 0 O 1 g -7986.8496 8070.5967 m -7999.0596 8073.6494 -8007.543 8063.6572 -8016.8496 8056.5479 C F -7976.8496 8070.5967 m -7993.2275 8074.6904 -8002.9004 8055.3193 -8016.8496 8050.9121 C F -8016.8496 8050.5967 m -7996.8496 8045.5967 -7986.8496 8075.5967 -7966.8496 8070.5967 C F -8006.8496 8050.5967 m -7990.4717 8046.502 -7980.7988 8065.874 -7966.8496 8070.2813 C F -7996.8496 8050.5967 m -7984.6396 8047.5439 -7976.1563 8057.5361 -7966.8496 8064.6455 C F -7976.8496 8050.5967 m -7973.2275 8049.6904 -7969.9351 8049.9375 -7966.8496 8050.9121 C F -8006.8496 8070.5967 m -8010.4717 8071.502 -8013.7651 8071.2559 -8016.8496 8070.2813 C F -7976.8813 8050.7217 m -7983.0005 8049.2129 -7986.8813 8050.7217 V -7990.9771 8049.2441 -7996.8813 8050.7217 V -8001.8442 8049.0459 -8006.8813 8050.7217 V -8012.8965 8049.1709 -8016.8813 8050.7217 V -8016.8813 8070.4063 L -8013.7954 8071.3809 -8010.3965 8071.5879 -8006.4795 8070.5049 C -8000.313 8072.0879 -7996.563 8070.5049 V -7991.563 8072.0879 -7986.4795 8070.4209 V -7982.147 8072.0049 -7976.4795 8070.5049 V -7970.9795 8071.9209 -7966.8813 8070.7217 V -7966.8813 8051.0361 L -7969.625 8050.0254 -7972.751 8049.5254 -7976.8813 8050.7217 C f 0 R 0 G 1 J 1 j 0.5 w -7996.8496 8070.5967 m -8004.6396 8072.5439 -8010.9131 8069.1816 -8016.8496 8064.6455 C S -7986.8496 8070.5967 m -7999.0596 8073.6494 -8007.543 8063.6572 -8016.8496 8056.5479 C S -7976.8496 8070.5967 m -7993.2275 8074.6904 -8002.9004 8055.3193 -8016.8496 8050.9121 C S -8016.8496 8050.5967 m -7996.8496 8045.5967 -7986.8496 8075.5967 -7966.8496 8070.5967 C S -8006.8496 8050.5967 m -7990.4717 8046.502 -7980.7988 8065.874 -7966.8496 8070.2813 C S -7996.8496 8050.5967 m -7984.6396 8047.5439 -7976.1563 8057.5361 -7966.8496 8064.6455 C S -7986.8496 8050.5967 m -7979.0596 8048.6494 -7972.7871 8052.0117 -7966.8496 8056.5479 C S -7976.8496 8050.5967 m -7973.2275 8049.6904 -7969.9351 8049.9375 -7966.8496 8050.9121 C S -8006.8496 8070.5967 m -8010.4717 8071.502 -8013.7651 8071.2559 -8016.8496 8070.2813 C S U U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 10) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -8016.0996 8071.5967 m -7965.9917 8071.5967 L -7965.9917 8015.5723 L -8016.0996 8015.5723 L -8016.0996 8071.5967 L n u 0 O 0.1 1 1 0 k -7979.001 8037.1719 m -7980.8174 8030.6924 -7990.9243 8034.0625 Y -7990.8911 8034.127 L -8000.9995 8030.7568 -8002.814 8037.2363 V -8008.7754 8054.6025 -8003.5918 8061.3408 V -7996.8525 8070.9336 -7992.7051 8070.9336 V -7989.1099 8070.8672 L -7984.9634 8070.8672 -7978.2251 8061.2783 Y -7973.0405 8054.5391 -7979.001 8037.1719 Y f u 0 0 0 1 k -7983.4922 8015.5723 m -7984.2163 8017.0166 -7985.0234 8018.0713 V -7984.5054 8017.6592 -7983.6147 8016.7881 -7983.4922 8015.5723 C f -7997.1641 8018.082 m -7997.9707 8017.0273 -7998.6938 8015.583 Y -7998.5723 8016.7988 -7997.6821 8017.6699 -7997.1641 8018.082 C f U 0 0.61 0.74 0 k -7982.6973 8040.0576 m -7984.0034 8035.3926 -7991.2813 8037.8184 Y -7991.2563 8037.8652 L -7998.5361 8035.4395 -7999.8413 8040.1045 V -8004.1333 8052.6084 -8000.4014 8057.46 V -7995.5483 8064.3652 -7992.563 8064.3652 V -7989.9751 8064.3193 L -7986.9883 8064.3193 -7982.1362 8057.4141 Y -7978.4038 8052.5605 -7982.6973 8040.0576 Y f u 1 Ap 0.73 0.43 1 0.22 k 0 R 0 0 0 1 K -7986.7222 8042.8721 m -7985.9131 8042.8721 -7985.2554 8042.2148 -7985.2554 8041.4063 c -7985.2554 8040.5967 -7985.9131 8039.9385 -7986.7222 8039.9385 c -7987.5317 8039.9385 -7988.1885 8040.5967 -7988.1885 8041.4063 c -7988.1885 8042.2148 -7987.5317 8042.8721 -7986.7222 8042.8721 c b -7986.4634 8054.5938 m -7985.1802 8054.5938 -7984.1411 8053.7168 -7984.1411 8052.6387 c -7984.1411 8051.5576 -7985.1802 8050.6836 -7986.4634 8050.6836 c -7987.7451 8050.6836 -7988.7842 8051.5576 -7988.7842 8052.6387 c -7988.7842 8053.7168 -7987.7451 8054.5938 -7986.4634 8054.5938 c b -7985.9341 8066.3828 m -7984.3813 8066.3828 -7983.1235 8065.7256 -7983.1235 8064.918 c -7983.1235 8064.1084 -7984.3813 8063.4512 -7985.9341 8063.4512 c -7987.4858 8063.4512 -7988.7451 8064.1084 -7988.7451 8064.918 c -7988.7451 8065.7256 -7987.4858 8066.3828 -7985.9341 8066.3828 c b -7981.71 8038.123 m -7980.9683 8038.123 -7980.3667 8037.4121 -7980.3667 8036.5332 c -7980.3667 8035.6553 -7980.9683 8034.9443 -7981.71 8034.9443 c -7982.4531 8034.9443 -7983.0542 8035.6553 -7983.0542 8036.5332 c -7983.0542 8037.4121 -7982.4531 8038.123 -7981.71 8038.123 c b -7980.103 8059.6797 m -7980.9814 8059.332 -7981.249 8057.9316 -7980.7031 8056.5508 c -7980.1563 8055.1719 -7979.001 8054.332 -7978.123 8054.6816 c -7977.2451 8055.0293 -7976.9771 8056.4297 -7977.5229 8057.8105 c -7978.0698 8059.1904 -7979.2251 8060.0283 -7980.103 8059.6797 c b u -7995.1563 8042.7559 m -7995.9658 8042.7559 -7996.6235 8042.0986 -7996.6235 8041.29 c -7996.6235 8040.4795 -7995.9658 8039.8232 -7995.1563 8039.8232 c -7994.3481 8039.8232 -7993.6909 8040.4795 -7993.6909 8041.29 c -7993.6909 8042.0986 -7994.3481 8042.7559 -7995.1563 8042.7559 c b -7995.4155 8054.4766 m -7996.6987 8054.4766 -7997.7378 8053.6016 -7997.7378 8052.5215 c -7997.7378 8051.4414 -7996.6987 8050.5664 -7995.4155 8050.5664 c -7994.1338 8050.5664 -7993.0947 8051.4414 -7993.0947 8052.5215 c -7993.0947 8053.6016 -7994.1338 8054.4766 -7995.4155 8054.4766 c b -7995.9453 8066.2676 m -7997.4971 8066.2676 -7998.7554 8065.6113 -7998.7554 8064.8008 c -7998.7554 8063.9902 -7997.4971 8063.335 -7995.9453 8063.335 c -7994.3931 8063.335 -7993.1348 8063.9902 -7993.1348 8064.8008 c -7993.1348 8065.6113 -7994.3931 8066.2676 -7995.9453 8066.2676 c b -8000.1675 8038.0059 m -8000.9111 8038.0059 -8001.5117 8037.2949 -8001.5117 8036.418 c -8001.5117 8035.54 -8000.9111 8034.8301 -8000.1675 8034.8301 c -7999.4258 8034.8301 -7998.8237 8035.54 -7998.8237 8036.418 c -7998.8237 8037.2949 -7999.4258 8038.0059 -8000.1675 8038.0059 c b -8001.7754 8059.5645 m -8000.8979 8059.2168 -8000.6294 8057.8154 -8001.1758 8056.4336 c -8001.7222 8055.0537 -8002.8774 8054.2168 -8003.7554 8054.5645 c -8004.6338 8054.9131 -8004.9028 8056.3145 -8004.3564 8057.6934 c -8003.8101 8059.0742 -8002.6548 8059.9121 -8001.7754 8059.5645 c b U U 0 Ap 0 0 0 1 k -7991.2314 8038.252 m -7991.2314 8070.9111 l F u -7975.4902 8024.127 m -7976.1812 8023.4336 -7979.1191 8024.2988 Y -7980.3291 8024.4707 -7980.1558 8026.8896 Y -7979.1191 8028.9648 -7979.8101 8028.791 Y -7980.3994 8028.791 -7981.9551 8028.7109 -7982.8818 8028.6592 C -7983.2222 8027.2656 -7984.7124 8026.0713 -7986.8213 8025.3662 C -7984.8574 8022.0742 -7986.6172 8021.3916 -7988.3931 8021.3867 C -7988.4092 8021.2988 -7988.4321 8021.2129 -7988.4595 8021.1289 C -7986.2085 8021.1758 -7985.7388 8018.8555 Y -7985.5044 8018.6592 -7985.2603 8018.3828 -7985.0234 8018.0713 C -7985.2412 8018.2441 -7985.394 8018.3359 Y -7986.3579 8018.3359 -7987.9771 8020.0908 -7988.5962 8020.8037 C -7989.019 8020.04 -7989.9531 8019.5078 -7991.043 8019.5078 c -7992.1694 8019.5078 -7993.1318 8020.0752 -7993.5308 8020.8809 C -7994.0981 8020.2207 -7995.7964 8018.3477 -7996.7939 8018.3477 C -7996.9458 8018.2539 -7997.1641 8018.082 V -7996.9277 8018.3896 -7996.6831 8018.6699 -7996.4478 8018.8652 C -7995.9634 8021.2529 -7993.625 8021.1309 V -7993.6445 8021.1855 -7993.667 8021.2393 -7993.6802 8021.2988 C -7997.0234 8021.2891 -7996.0371 8023.9141 -7995.3101 8025.2568 C -7997.6914 8025.9727 -7999.3643 8027.2969 -7999.6235 8028.8467 C -8000.5469 8028.8965 -8001.7725 8028.9551 -8002.2798 8028.9551 C -8002.9722 8029.1279 -8001.9351 8027.0547 V -8001.7622 8024.6357 -8002.9722 8024.4629 V -8005.9092 8023.5986 -8006.6011 8024.29 V -8007.2915 8025.1533 -8008.1558 8023.9424 V -8007.2915 8025.6719 -8005.3911 8025.1533 V -8002.7979 8024.4629 -8003.4902 8026.1904 V -8004.0083 8029.6465 -8002.2798 8030.3369 V -8000.1338 8031.4512 -7998.3818 8031.6855 V -7998.0083 8032.0107 -7997.5635 8032.3076 -7997.0581 8032.5732 C -7999.6558 8032.6436 -8002.3242 8033.5176 -8003.1748 8036.5527 C -8003.6147 8037.8398 -8004.1514 8039.8398 V -8005.2021 8040.4219 -8006.4019 8041.6045 -8007.6411 8043.8584 C -8008.4941 8047.0469 -8009.2671 8042.3096 V -8010.4971 8039.2461 -8011.75 8039.1348 V -8010.5698 8040.8838 -8011.0034 8042.0127 V -8009.3994 8046.5137 -8007.7134 8045.4961 V -8006.1982 8044.8164 -8004.7881 8042.4121 V -8005.1694 8044.0938 -8005.5322 8046.0137 -8005.7739 8047.9873 C -8006.5884 8047.9941 L -8008.4502 8047.0752 -8008.4258 8050.5557 V -8009.2222 8054.542 -8008.459 8057.2793 V -8007.7471 8059.7471 -8010.2271 8058.5273 V -8011.3838 8058.9209 -8012.0835 8058.3848 V -8014.4878 8057.0088 -8016.0996 8058.7207 V -8014.2471 8058.4766 -8013.5479 8059.0137 V -8012.0781 8059.1582 -8011.9971 8059.7744 V -8009.0557 8060.4521 -8008.2881 8059.6729 V -8006.5171 8058.8105 -8007.23 8055.9561 V -8007.9795 8048.0781 -8006.4194 8050.002 V -8006.2178 8050.0176 -8005.978 8050.1143 V -8006.2515 8054.0293 -8005.9014 8057.9209 -8004.0957 8060.4473 C -8007.5532 8052.9297 -8002.397 8037.9004 Y -8001.0605 8033.127 -7995.2271 8033.6982 -7992.2451 8034.3311 C -7992.1714 8035.7256 -7991.937 8037.5449 -7991.2314 8038.252 C -7990.313 8036.292 -7990.3354 8034.6699 V -7989.1758 8034.3184 -7982.3813 8032.4414 -7979.5483 8035.9336 C -7980.5308 8033.4102 -7982.9258 8032.6152 -7985.3003 8032.5156 C -7984.7671 8032.2285 -7984.3037 8031.9014 -7983.9253 8031.5469 C -7982.1411 8031.3828 -7979.8101 8030.1729 Y -7978.0811 8029.4824 -7978.6011 8026.0273 Y -7979.2915 8024.2988 -7976.6987 8024.9902 Y -7974.7998 8025.5078 -7973.9351 8023.7803 Y -7974.7998 8024.9902 -7975.4902 8024.127 Y f -7970.0078 8058.5488 m -7970.707 8059.0859 -7971.8628 8058.6904 Y -7974.3442 8059.9102 -7973.6323 8057.4424 Y -7972.8691 8054.707 -7973.6641 8050.7188 Y -7973.6411 8047.2412 -7975.501 8048.1563 Y -7976.1338 8048.1523 L -7976.4194 8046.208 -7976.8042 8044.3516 -7977.1895 8042.7656 C -7975.8125 8045.0166 -7974.3774 8045.6592 Y -7972.6909 8046.6787 -7971.0874 8042.1758 Y -7971.521 8041.0469 -7970.3413 8039.2988 Y -7971.5933 8039.4092 -7972.8242 8042.4727 Y -7973.5972 8047.2119 -7974.4507 8044.0234 Y -7975.6772 8041.7871 -7976.8691 8040.6064 -7977.9141 8040.0195 C -7978.3022 8038.6592 -7978.5854 8037.8359 Y -7978.7998 8037.0693 -7979.1333 8036.4453 -7979.5483 8035.9336 C -7979.4795 8036.1094 -7979.417 8036.2949 -7979.3628 8036.4873 C -7973.4019 8053.8555 -7978.5854 8060.5938 V -7985.3242 8070.1836 -7989.4717 8070.1836 V -7993.0659 8070.248 L -7997.2134 8070.248 -8003.9531 8060.6582 Y -8004.0034 8060.5928 -8004.0459 8060.5176 -8004.0957 8060.4473 C -8003.8374 8061.0107 -8003.5371 8061.5371 -8003.1748 8062.0059 C -7996.4355 8071.5967 -7992.2891 8071.5967 V -7988.6938 8071.5313 L -7984.5479 8071.5313 -7977.8091 8061.9414 Y -7975.6797 8059.1729 -7975.4302 8054.6143 -7975.8765 8050.2021 C -7975.7549 8050.1719 -7975.6694 8050.1641 Y -7974.1108 8048.2441 -7974.8594 8056.1211 Y -7975.5742 8058.9756 -7973.8022 8059.8369 Y -7973.0347 8060.6152 -7970.0942 8059.9385 Y -7970.0132 8059.3223 -7968.543 8059.1777 Y -7967.8442 8058.6416 -7965.9917 8058.8848 Y -7967.6021 8057.1729 -7970.0078 8058.5488 Y f U U U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 2) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -8016.0996 8071.5967 m -7951.2871 8071.5967 L -7951.2871 8007.499 L -8016.0996 8007.499 L -8016.0996 8071.5967 L n u 0 O 0 g -7981.7974 8030.0264 m -7983.709 8007.499 L -7985.6211 8030.0264 L -7985.0029 8029.9033 -7984.3638 8029.8369 -7983.709 8029.8369 c -7983.0547 8029.8369 -7982.4155 8029.9033 -7981.7974 8030.0264 C f -7993.3398 8037.9941 m -8016.0996 8039.9268 L -7993.2134 8041.8701 L -7993.3853 8041.1436 -7993.4844 8040.3896 -7993.4844 8039.6123 c -7993.4844 8039.0596 -7993.4277 8038.5215 -7993.3398 8037.9941 C f -7988.6191 8031.1689 m -8002.2622 8022.4014 L -7992.3149 8034.9736 L -7991.457 8033.3877 -7990.1714 8032.0732 -7988.6191 8031.1689 C f -7985.5811 8049.2041 m -7983.6782 8071.5967 L -7981.7764 8049.1934 L -7982.4014 8049.3193 -7983.0469 8049.3877 -7983.709 8049.3877 c -7984.3496 8049.3877 -7984.9731 8049.3213 -7985.5811 8049.2041 C f -7974.0605 8041.1035 m -7951.2871 8039.1689 L -7974.1831 8037.2256 L -7974.1831 8037.4473 L -7974.0254 8038.1455 -7973.9341 8038.8662 -7973.9341 8039.6123 c -7973.9341 8040.1201 -7973.9844 8040.6152 -7974.0605 8041.1035 C f -7992.2134 8044.4229 m -8002.2637 8057.126 L -7988.3774 8048.2021 L -7989.9819 8047.3271 -7991.311 8046.0127 -7992.2134 8044.4229 C f -7975.0957 8034.9912 m -7964.9751 8022.2021 L -7978.8662 8031.1279 L -7977.2764 8032.0381 -7975.9629 8033.376 -7975.0957 8034.9912 C f -7978.7891 8048.0479 m -7964.9731 8056.9248 L -7975.0654 8044.1689 L -7975.9194 8045.7861 -7977.2148 8047.1279 -7978.7891 8048.0479 C f -7974.9883 8044.21 m -7974.4858 8043.2607 -7974.1431 8042.2168 -7973.9751 8041.1152 c -7973.8989 8040.626 -7973.8481 8040.124 -7973.8481 8039.6123 c -7973.8481 8038.8604 -7973.9395 8038.1318 -7974.0981 8037.4277 c -7974.2954 8036.5537 -7974.6045 8035.7207 -7975.0181 8034.9512 c -7975.895 8033.3213 -7977.2188 8031.9707 -7978.8237 8031.0527 c -7979.729 8030.5342 -7980.7222 8030.1504 -7981.7798 8029.9424 c -7982.4043 8029.8174 -7983.0493 8029.748 -7983.709 8029.748 c -7984.3691 8029.748 -7985.0151 8029.8174 -7985.6387 8029.9424 c -7986.7231 8030.1572 -7987.7378 8030.5537 -7988.6621 8031.0928 c -7990.231 8032.0068 -7991.5278 8033.332 -7992.3911 8034.9316 c -7992.8965 8035.8662 -7993.2451 8036.8936 -7993.4258 8037.9785 c -7993.5151 8038.5127 -7993.5723 8039.0557 -7993.5723 8039.6123 c -7993.5723 8040.3975 -7993.4707 8041.1572 -7993.2974 8041.8896 c -7993.0811 8042.8037 -7992.7402 8043.6699 -7992.2871 8044.4668 c -7991.3789 8046.0693 -7990.0391 8047.3975 -7988.417 8048.2793 c -7987.5483 8048.752 -7986.5996 8049.0947 -7985.5957 8049.29 c -7984.9844 8049.4072 -7984.355 8049.4736 -7983.709 8049.4736 c -7983.041 8049.4736 -7982.3896 8049.4053 -7981.7598 8049.2793 c -7980.6782 8049.0635 -7979.666 8048.6621 -7978.7451 8048.124 c -7977.1563 8047.1943 -7975.8511 8045.8408 -7974.9883 8044.21 c f U U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 3) 0 A u 1 Ap 0 J 0 j 1 w 4 M []0 d 0 XR -8006.8496 8072.5967 m -8006.8496 8048.5967 L -8016.8496 8048.5967 L -8016.8496 8072.5967 L -8006.8496 8072.5967 L n u u 0 Ap 0 O 1 g -8007.5054 8064.1328 m -8007.0874 8063.0313 -8006.8496 8061.8438 -8006.8496 8060.5967 c -8006.8496 8058.7344 -8007.3677 8056.9961 -8008.2539 8055.5039 c -8009.9971 8052.5703 -8013.1895 8050.5967 -8016.8496 8050.5967 C -8016.8496 8070.5967 L -8016.5293 8070.5967 -8016.2139 8070.5781 -8015.9014 8070.5488 c -8014.0117 8070.3721 -8012.2803 8069.6611 -8010.8438 8068.5791 c -8009.3467 8067.4512 -8008.1797 8065.915 -8007.5054 8064.1328 c f 0 R 0 G 1 J 1 j 0.5 w -8016.8496 8050.9141 m -8013.8203 8051.8711 -8010.9922 8053.5293 -8008.2539 8055.5039 C S -8016.8496 8056.5479 m -8013.6987 8058.9531 -8010.6431 8061.6836 -8007.5054 8064.1328 C S -8010.8438 8068.5791 m -8012.9102 8067.4873 -8014.8989 8066.1309 -8016.8496 8064.6396 C S -8015.9014 8070.5488 m -8016.2188 8070.4648 -8016.5371 8070.3818 -8016.8496 8070.2832 C S -8010.8438 8068.5791 m -8012.2803 8069.6611 -8014.0117 8070.3711 -8015.9014 8070.5488 C S -8007.5054 8064.1328 m -8007.0874 8063.0313 -8006.8496 8061.8438 -8006.8496 8060.5967 c -8006.8496 8058.7344 -8007.3677 8056.9961 -8008.2539 8055.5039 C S -8016.8496 8070.5967 m -8016.5293 8070.5967 -8016.2139 8070.5781 -8015.9014 8070.5488 C S -8010.8438 8068.5791 m -8009.3467 8067.4512 -8008.1797 8065.915 -8007.5054 8064.1328 C S -8008.2539 8055.5039 m -8009.9971 8052.5703 -8013.1895 8050.5967 -8016.8496 8050.5967 C S U U U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 34) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -8016.125 8071.623 m -7960.1538 8071.623 L -7960.1538 8010.1309 L -8016.125 8010.1309 L -8016.125 8071.623 L n u u 0 O 0.0745 0.9 0.9019 0.18 k 0 R 0 0 0 1 K 1 J 1 j 0.0518 w -7989.6987 8048.3184 m -7989.459 8059.1182 -7994.979 8069.4365 v -7994.5005 8071.5967 -7993.0591 8071.5967 v -7993.2998 8068.2373 -7992.3389 8067.7568 v -7988.0195 8055.7568 -7988.7378 8047.8369 v -7989.6987 8048.3184 l b -7989.6987 8048.3184 m -7991.3789 8053.5967 -8003.1387 8054.7979 v -8007.459 8055.2773 -8007.6987 8056.7168 v -8001.2202 8047.1152 -8000.2598 8047.3574 v -8013.459 8041.5977 -8016.0996 8036.3164 v -8011.0591 8039.1973 -8007.6987 8037.0361 v -7999.7798 8036.7979 -7994.7402 8038.958 v -7990.9004 8040.8779 -7998.8198 8024.7979 v -7994.979 8036.5576 -7991.3789 8010.1572 v -7990.4194 8015.4375 -7988.9795 8016.8779 v -7982.9795 8024.5576 -7983.9395 8026.7168 v -7984.4194 8030.5576 -7979.8594 8024.3174 v -7980.0996 8033.918 -7982.5005 8037.2773 v -7984.6587 8040.8779 -7978.6587 8038.7168 v -7972.6587 8036.7979 -7967.3789 8038.4775 v -7961.8594 8039.916 -7960.1797 8037.0361 v -7971.9395 8049.5176 -7977.6987 8049.2773 v -7976.019 8052.8779 l -7973.6191 8057.6777 -7974.0996 8058.8779 v -7989.3677 8049.4795 -7989.6987 8048.3184 v b -7989.6987 8048.3184 m -7987.0591 8029.8369 -7989.6987 8022.1572 v -7992.0981 8011.5977 -7991.3789 8010.1572 v S -7988.2598 8037.0361 m -7982.2598 8032.2373 -7981.0591 8026.9561 v S -7988.2598 8036.3164 m -7997.1387 8028.6377 -7998.8198 8024.7979 v S -7960.1797 8037.0361 m -7961.3789 8039.1973 -7989.459 8047.3574 y -7994.5005 8041.8389 -8006.0195 8039.4375 v -8013.6982 8038.4775 -8016.0996 8036.3164 v S -8006.7378 8055.2773 m -7995.2188 8046.1582 -7989.459 8047.3574 y -7975.2988 8053.5967 -7974.0996 8058.8779 v S U U U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 36) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -8015.9492 8071.5928 m -7966.0596 8071.5928 L -7966.0596 8020.5225 L -8015.9492 8020.5225 L -8015.9492 8071.5928 L n u 0 O 0.025 0.1 0.475 0 k -7994.25 8039.5 m -7996.5762 8038.4092 -7998.791 8038.04 -8000.4731 8038.5205 c -8001.1514 8038.7129 -8001.7451 8039.0439 -8002.2231 8039.5205 c -8002.7002 8039.999 -8003.0293 8040.5918 -8003.2231 8041.2695 c -8004.1084 8044.3672 -8002.1099 8049.2744 -7998.0229 8053.3633 c -7993.9341 8057.4502 -7989.0293 8059.4473 -7985.9282 8058.5625 c -7985.2515 8058.3672 -7984.6582 8058.0391 -7984.1802 8057.5625 c -7983.7031 8057.084 -7983.375 8056.4912 -7983.1821 8055.8135 c -7982.6172 8053.8428 -7983.2222 8051.1416 -7984.7852 8048.3857 c -7985.6821 8046.8066 -7986.8911 8045.21 -7988.3789 8043.7197 c -7990.25 8041.8496 -7992.291 8040.4209 -7994.25 8039.5 c f u 0.0035 0.014 0.0665 0 k -7993.3179 8038.5693 m -7995.9302 8037.6182 -7998.4971 8037.5654 -8000.4731 8038.5205 C -7998.791 8038.04 -7996.5762 8038.4092 -7994.25 8039.5 c -7993.7188 8039.751 -7993.1802 8040.04 -7992.6431 8040.3643 C -7990.998 8039.6504 L -7991.7671 8039.2139 -7992.543 8038.8496 -7993.3179 8038.5693 c f 0.015 0.06 0.285 0 k -7990.998 8039.6504 m -7992.6431 8040.3643 L -7991.1958 8041.2314 -7989.7422 8042.3574 -7988.3789 8043.7197 c -7988.2534 8043.8467 -7988.1323 8043.9736 -7988.0098 8044.1025 C -7987.3149 8042.46 L -7988.4702 8041.3193 -7989.7188 8040.3779 -7990.998 8039.6504 C f U u 0.039 0.156 0.741 0 k -7981.7871 8027 m -7982.0742 8027.2881 -7993.3179 8038.5693 Y -7992.543 8038.8496 -7991.7671 8039.2139 -7990.998 8039.6504 C -7977.5142 8026.167 L -7979.1611 8025.6953 -7980.7402 8025.9521 -7981.7871 8027 c f 0.025 0.1 0.475 0 k -7977.5142 8026.167 m -7990.998 8039.6504 L -7989.6841 8040.3984 -7988.3965 8041.3721 -7987.2139 8042.5537 c -7987.1841 8042.583 -7987.1582 8042.6123 -7987.1274 8042.6416 C -7973.4404 8028.9541 L -7973.626 8028.7295 -7973.8198 8028.5107 -7974.0298 8028.2969 c -7975.1099 8027.2197 -7976.3301 8026.5049 -7977.5142 8026.167 C f U u 0.0115 0.046 0.2185 0 k -7968.0342 8035.9893 m -7965.6333 8033.5859 -7965.4351 8029.6865 -7967.2378 8026.2939 C -7968.395 8026.7148 L -7966.1934 8030.0928 -7965.9395 8033.8916 -7968.0342 8035.9893 c f 0.015 0.06 0.285 0 k -7975.6333 8021.1924 m -7974.6821 8020.5225 L -7977.3042 8019.9482 -7979.9302 8020.5107 -7981.7202 8022.3027 c -7980.2715 8020.8545 -7978.0078 8020.5273 -7975.6333 8021.1924 C f 0.0295 0.118 0.5605 0 k -7975.6333 8021.1924 m -7978.0078 8020.5273 -7980.2715 8020.8545 -7981.7202 8022.3027 c -7983.1191 8023.7021 -7983.4702 8025.8604 -7982.895 8028.1436 C -7980.9668 8025.1416 -7977.5078 8026.1504 V -7975.6851 8021.2275 L -7975.6333 8021.1924 L f *u 1 D 0.048 0.192 0.912 0 k -7968.0342 8035.9893 m -7969.3813 8037.335 -7971.4321 8037.71 -7973.623 8037.2236 C -7983.771 8047.3701 L -7983.8691 8047.1641 -7983.8691 8047.1641 -7983.771 8047.3701 c -7982.3242 8050.4111 -7982.0698 8053.5127 -7983.1821 8055.8135 C -7982.6172 8053.8428 -7983.2222 8051.1416 -7984.7852 8048.3857 c -7985.605 8046.9404 -7986.6914 8045.4814 -7988.0098 8044.1025 C -7987.3149 8042.46 L -7987.2813 8042.4912 -7987.2461 8042.5205 -7987.2139 8042.5537 c -7987.1841 8042.584 -7987.1563 8042.6143 -7987.127 8042.6436 c -7987.1274 8042.6436 -7987.1274 8042.6436 -7987.1274 8042.6416 C -7973.4404 8028.9541 L -7968.4258 8026.7256 L -7968.395 8026.7148 L -7966.1934 8030.0928 -7965.9395 8033.8916 -7968.0342 8035.9893 c f *U 0 D 0.0215 0.086 0.4085 0 k -7974.6821 8020.5225 m -7975.6333 8021.1924 L -7973.7842 8021.708 -7971.8652 8022.8252 -7970.2134 8024.4795 c -7969.5059 8025.1855 -7968.8994 8025.9385 -7968.395 8026.7148 C -7967.2378 8026.2939 L -7967.7549 8025.3213 -7968.437 8024.3896 -7969.2798 8023.5479 c -7970.8691 8021.9561 -7972.7754 8020.9385 -7974.6821 8020.5225 C f 0.0205 0.082 0.3895 0 k -7968.395 8026.7148 m -7968.8994 8025.9385 -7969.5059 8025.1855 -7970.2134 8024.4795 c -7971.8652 8022.8252 -7973.7842 8021.708 -7975.6333 8021.1924 C -7975.6851 8021.2275 L -7977.5078 8026.1504 L -7976.311 8026.5176 -7975.0874 8027.2393 -7974.0298 8028.2969 c -7973.8198 8028.5107 -7973.626 8028.7295 -7973.4404 8028.9541 C -7968.4258 8026.7256 L -7968.395 8026.7148 L f U u 0.445 0.356 0.267 0 k -8015.9492 8071.5928 m -7994.0571 8048.5654 L -7994.3003 8048.2461 -7994.6748 8048.21 -7994.9883 8048.2559 C -7999.2798 8052.8857 -8010.4141 8065.0527 -8014.8262 8069.876 C -8015.6646 8070.9482 -8016.0996 8071.5898 -8015.9492 8071.5928 C f 0.15 0.12 0.09 0 k -8015.9341 8071.5928 m -8014.7603 8071.2998 -7993.793 8049.5996 Y -7993.793 8049.0986 -7993.8989 8048.7725 -7994.0571 8048.5654 C -8015.9492 8071.5928 L -8015.9438 8071.5928 -8015.9414 8071.5967 -8015.9341 8071.5928 c f 0.2 0.16 0.12 0 k -8014.8262 8069.876 m -8010.4141 8065.0527 -7999.2798 8052.8857 -7994.9883 8048.2559 C -7995.2998 8048.3008 -7995.5522 8048.4268 Y -7996.7031 8048.7295 -8010.6738 8064.5576 -8014.8262 8069.876 C f U U U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 37) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -8015.0498 8070.8281 m -7965.1387 8070.8281 L -7965.1387 8006.7119 L -8015.0498 8006.7119 L -8015.0498 8070.8281 L n u 0 O 0 0 0 1 k 0 R 0 0 0 1 K 0 w -7965.3354 8006.7119 m -7965.7061 8006.8447 -7966.0854 8006.8799 -7966.4829 8006.7998 c -7966.5859 8006.7646 l -7966.625 8006.7568 -7966.6699 8006.7744 -7966.7021 8006.7959 c -7967.043 8006.9893 l -7970.8125 8008.8926 -7974.1958 8011.4932 -7976.5996 8015.0439 c -7978.063 8017.1885 -7979.2231 8019.4756 -7980.8989 8021.4521 c -7981.2725 8021.8057 -7981.2754 8022.3691 -7980.9341 8022.7275 c -7980.5947 8023.0977 -7980.0181 8023.1045 -7979.6611 8022.7617 c -7979.5034 8022.8066 l -7979.3638 8022.7256 -7979.1738 8022.667 -7979.123 8022.5537 c -7977.9531 8019.7998 -7977.2891 8017.1104 -7975.5332 8014.7354 c -7973.2715 8011.6904 -7970.2773 8009.5908 -7967.1294 8007.6201 c -7966.4668 8007.2021 L -7966.5962 8007.2314 L -7965.8691 8007.2393 l -7965.8911 8007.208 -7965.9004 8007.1924 -7965.9219 8007.1611 C -7965.7061 8007.1201 -7965.4771 8007.0713 -7965.2622 8007.0303 c -7965.1758 8007.0205 -7965.1182 8006.9355 -7965.1387 8006.835 c -7965.1499 8006.748 -7965.2378 8006.7051 -7965.3354 8006.7119 c -7965.3354 8006.7119 l b -7981.3218 8020.5918 m -7981.6738 8020.4033 -7982.0654 8020.2686 -7982.3481 8019.9854 c -7988.5518 8013.7686 -7998.7798 8012.8701 -8006.1484 8019.2822 C -8006.2578 8019.3779 -8006.2578 8019.5537 -8006.1631 8019.6611 C -8003.1523 8018.54 -7994.9834 8019.9717 -7991.4219 8023.0088 C -7991.353 8023.0635 -7991.2461 8023.0488 -7991.2051 8022.9678 C -7991.1499 8022.9014 -7991.166 8022.792 -7991.2324 8022.7529 C -7994.6621 8019.6816 -7999.167 8017.8867 -8003.7725 8018.3447 C -8000.9531 8016.7822 -7997.731 8016.0908 -7994.498 8016.2852 c -7989.814 8016.5684 -7985.563 8018.7158 -7981.4707 8020.876 c -7981.3911 8020.916 -7981.2974 8020.8896 -7981.2549 8020.8076 C -7981.2012 8020.7275 -7981.2422 8020.6318 -7981.3218 8020.5918 c b -7990.7471 8021.9326 m -7992.3262 8025.958 -7994.4907 8029.916 -7997.9014 8032.6729 c -7998.0645 8032.8086 -7998.0942 8033.0459 -7997.9707 8033.2021 c -7997.834 8033.3643 -7997.6045 8033.376 -7997.4478 8033.2529 c -7993.2231 8031.1934 -7990.29 8026.7275 -7990.2622 8021.998 c -7990.2622 8021.998 l -7990.2324 8021.8633 -7990.335 8021.7305 -7990.4629 8021.7188 c -7990.6035 8021.7021 -7990.7314 8021.7939 -7990.7471 8021.9326 c -7990.7471 8021.9326 l b -7985.041 8026.6143 m -7985.1421 8026.7783 -7985.2148 8026.9805 -7985.3613 8027.0791 c -7988.1802 8028.9873 -7991.0781 8030.2275 -7993.9844 8031.7295 c -7994.1499 8031.8057 -7994.2114 8032.0146 -7994.1309 8032.167 c -7994.0508 8032.3193 -7993.8555 8032.376 -7993.6895 8032.3008 c -7990.5391 8030.9199 -7986.4131 8030.0967 -7984.7725 8026.7764 c -7984.7285 8026.708 -7984.7451 8026.6113 -7984.8262 8026.5615 c -7984.8955 8026.5166 -7984.9971 8026.5449 -7985.041 8026.6143 c -7985.041 8026.6143 l b -7984.7598 8027.5146 m -7984.5435 8028.0264 -7984.2427 8028.4863 -7984.1499 8029.0313 c -7983.3179 8033.874 -7983.2148 8038.6387 -7984.3481 8043.2832 c -7984.3481 8043.2832 l -7984.4414 8043.5488 -7984.311 8043.8408 -7984.0435 8043.9355 c -7983.7773 8044.0303 -7983.4878 8043.9092 -7983.3931 8043.6445 c -7981.3931 8038.4072 -7981.9971 8032.334 -7984.4707 8027.3799 c -7984.5059 8027.2969 -7984.5981 8027.2656 -7984.6821 8027.2881 c -7984.7637 8027.3232 -7984.7974 8027.4316 -7984.7598 8027.5146 c -7984.7598 8027.5146 l b -7983.6348 8043.1904 m -7980.998 8040.8232 -7978.7813 8037.8486 -7977.9531 8034.332 c -7977.9531 8034.332 l -7977.8242 8033.7783 -7978.1738 8033.2197 -7978.7412 8033.0869 c -7979.2988 8032.9717 -7979.8574 8033.3213 -7979.9858 8033.876 c -7980.6646 8037.1279 -7981.9707 8040.2695 -7983.895 8042.9824 c -7983.895 8042.9824 l -7983.9458 8043.0518 -7983.9341 8043.1543 -7983.8691 8043.2168 c -7983.7988 8043.2656 -7983.6973 8043.2549 -7983.6348 8043.1904 c -7983.6348 8043.1904 l b -7968.4707 8035.7793 m -7969.811 8031.4268 -7972.3594 8027.666 -7975.7891 8024.75 C -7975.8291 8024.6689 -7975.9238 8024.6289 -7976.0034 8024.6816 C -7976.0859 8024.7236 -7976.1118 8024.8174 -7976.0718 8024.8984 C -7976.0571 8025.3857 -7975.814 8025.8301 -7975.5454 8026.1279 c -7970.5059 8031.7588 -7967.0898 8040.3164 -7969.4429 8047.5518 C -7969.1758 8042.0479 -7970.8237 8035.8975 -7974.2358 8031.2705 c -7975.2603 8029.8662 -7976.8418 8029.7168 -7978.4077 8029.7998 C -7978.502 8029.7861 -7978.583 8029.8398 -7978.5957 8029.9336 c -7978.6094 8030.0156 -7978.5547 8030.1104 -7978.4619 8030.1221 C -7975.2476 8031.3662 -7973.5874 8034.8213 -7972.1841 8037.791 c -7970.5151 8041.3408 -7969.8013 8045.2354 -7970.105 8049.0967 C -7970.145 8049.2744 -7970.2134 8050.9941 -7970.0771 8051.0068 C -7969.9302 8051.0361 -7969.8091 8050.9404 -7969.7798 8050.791 C -7969.7451 8050.6416 -7966.7422 8041.3945 -7968.4707 8035.7793 c b -7976.5859 8023.0879 m -7975.4941 8019.2168 -7973.209 8015.8477 -7970.582 8012.835 c -7970.4302 8012.7012 -7970.4141 8012.4824 -7970.5498 8012.332 c -7970.6748 8012.1973 -7970.9043 8012.1787 -7971.0571 8012.3145 c -7974.4302 8014.9287 -7975.5483 8019.1377 -7976.895 8022.9717 c -7976.895 8022.9717 l -7976.9258 8023.0615 -7976.875 8023.1553 -7976.7979 8023.1836 c -7976.709 8023.2158 -7976.6162 8023.1641 -7976.5859 8023.0879 c -7976.5859 8023.0879 l b -7970.6309 8047.7061 m -7970.6987 8047.6533 -7970.8071 8047.6797 -7970.8481 8047.7471 C -7971.063 8048.0713 -7972.791 8050.1152 -7973.4922 8050.7373 c -7978.2715 8054.9912 -7981.6133 8059.5576 -7989.6387 8063.3193 c -7996.5508 8066.5605 -7999.2109 8069.1924 -8006.4858 8067.4229 c -8009.7871 8066.626 -8011.1309 8066.1279 -8012.5347 8061.0518 C -8014.0469 8054.8955 -8012.9668 8057.3799 -8013.1841 8050.0352 c -8013.3218 8045.2939 -8016.0996 8034.0518 -8003.625 8019.8564 C -8003.5195 8019.7451 -8003.5332 8019.5928 -8003.6333 8019.5039 C -8003.7324 8019.3984 -8003.8955 8019.4121 -8003.9858 8019.5127 C -8009.6782 8024.3135 -8013.123 8031.2549 -8014.4141 8038.5391 c -8015.3867 8044.0635 -8015.0195 8048.8467 -8014.7661 8055.2334 c -8014.6685 8057.6904 -8015.7852 8064.6689 -8011.0098 8068.6592 c -8007.4922 8071.5967 -8002.4907 8071.1436 -7998.4541 8069.7529 c -7992.7988 8067.8086 -7988.0723 8064.7432 -7982.9707 8061.2061 c -7979.3652 8058.7217 -7971.3877 8048.8809 -7970.5781 8047.9229 C -7970.5347 8047.8555 -7970.5498 8047.7471 -7970.6309 8047.7061 C b -8005.1499 8034.9023 m -8004.2681 8034.0996 -8003.8013 8035.4424 -8003.5293 8036.1982 c -8003.2622 8036.9541 -8002.2891 8036.8467 -8002.6123 8037.1689 c -8002.9365 8037.4941 -8002.9365 8037.5488 -8003.4229 8037.1152 c -8003.9082 8036.6846 -8003.9082 8037.332 -8004.6646 8036.8467 c -8005.4194 8036.3584 -8005.7451 8035.4424 -8005.1499 8034.9023 c b -7997.7515 8039.5449 m -7997.4653 8039.1885 -7996.7798 8039.1689 -7996.5645 8039.4912 c -7996.3496 8039.8164 -7995.4302 8039.8701 -7995.5933 8040.1934 c -7995.7539 8040.5176 -7995.7012 8040.7354 -7996.187 8040.5176 c -7996.6733 8040.3008 -7996.5117 8040.8965 -7996.9971 8040.6807 c -7997.4829 8040.4639 -7997.9683 8039.8164 -7997.7515 8039.5449 c b -7989.707 8044.6758 m -7989.2202 8044.3525 -7987.979 8045.1084 -7988.5723 8045.1084 c -7989.167 8045.1084 -7988.4111 8045.8633 -7988.9517 8046.0801 c -7989.4902 8046.2959 -7989.3828 8046.0264 -7989.707 8046.2412 c -7990.0293 8046.458 -7990.4629 8046.8359 -7990.6235 8046.0264 c -7990.7852 8045.2158 -7990.4629 8045.2158 -7990.0845 8044.9463 c -7989.707 8044.6758 -7989.707 8044.6758 y b -8004.3398 8044.9463 m -8003.207 8044.8389 -8003.9629 8045.5947 -8003.3691 8046.0801 c -8002.7734 8046.5664 -8002.0181 8047.2139 -8002.8291 8046.9961 c -8003.6387 8046.7822 -8005.0957 8047.2686 -8005.043 8046.1348 c -8004.9883 8045 -8004.7324 8044.9824 -8004.3398 8044.9463 c b -7998.6699 8053.208 m -7998.2012 8052.9404 -7998.7798 8053.3164 -7998.1299 8053.208 c -7997.4829 8053.1006 -7996.8882 8053.208 -7997.3203 8053.4248 c -7997.7515 8053.6406 -7998.4004 8053.748 -7998.563 8053.5859 c -7998.7251 8053.4248 -7999.0469 8053.4248 -7998.6699 8053.208 c b -7989.167 8052.7764 m -7989.5781 8051.7764 -7988.1958 8052.0205 -7987.5469 8052.3428 c -7986.8994 8052.6689 -7985.9258 8052.0742 -7986.5205 8052.5068 c -7987.1133 8052.9385 -7986.8994 8052.5068 -7987.4922 8052.8301 c -7988.0869 8053.1533 -7988.7891 8053.6943 -7989.167 8052.7764 c b -8004.7734 8058.6631 m -8004.8218 8057.6719 -8003.9082 8058.5537 -8003.3691 8058.6084 c -8002.8291 8058.6631 -8002.1797 8058.6631 -8002.3428 8058.8779 c -8002.5034 8059.0947 -8002.5591 8059.0947 -8003.2622 8059.3096 c -8003.9629 8059.5264 -8004.7188 8059.7412 -8004.7734 8058.6631 c b -8005.2578 8053.208 m -8006.166 8053.5713 -8006.3931 8053.4775 -8006.6621 8053.8008 c -8006.9341 8054.126 -8007.2554 8054.8281 -8007.6348 8053.6943 c -8008.0117 8052.5596 -8007.5278 8051.3721 -8007.1475 8051.5342 c -8006.771 8051.6953 -8006.3931 8052.3428 -8005.9614 8052.5596 c -8005.5293 8052.7764 -8004.7188 8052.9912 -8005.2578 8053.208 c b U U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 41) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -8016.0996 8071.5967 m -7935.0996 8071.5967 L -7935.0996 7966.5967 L -8016.0996 7966.5967 L -8016.0996 8071.5967 L n u u u 0 O 0 0 0 1 k -7997.9053 7984.0225 m -7998.1738 7982.2588 -7999.2598 7980.8877 -8000.6235 7980.9932 c -8001.9858 7981.0986 -8002.8071 7982.6201 -8002.8428 7984.4033 c -8002.8481 7984.666 -8002.7739 7985.8408 -8002.73 7986.0742 C -8002.7378 7986.1787 -8002.7188 7986.2705 -8002.71 7986.377 c -8002.6138 7987.6221 -8001.457 7988.9561 -8000.041 7988.8467 c -7998.6245 7988.7373 -7997.5894 7987.458 -7997.7363 7986.0693 c -7997.7441 7986.0039 -7997.7954 7985.2227 -7997.8071 7985.1592 C -7997.7813 7984.8809 -7997.8594 7984.3223 -7997.9053 7984.0225 c f -8008.3643 7993.3301 m -8009.0942 8001.5127 -8003.6011 8000.7158 v -8000.4678 7999.6152 -8001.541 7996.7168 v -8001.7422 7995.3486 -8003.8843 7994.0947 v -8004.2461 7993.8467 -8004.8628 7992.6982 v -8005.229 7991.1943 -8006.6182 7990.8945 v -8008.1758 7990.8477 -8008.3643 7993.3301 v f -7982.8643 8002.0938 m F -7982.1758 7999.9375 m -7982.8843 7998.79 -7985.9844 7999.2246 Y -7986.9111 7999.2852 -7987.4795 7998.708 Y -7989.939 7994.6885 -7993.1382 7995.4824 -7993.5078 7995.5898 C -7993.5093 7995.583 L -7997.0991 7996.2012 -7997.3662 8001.1992 V -7997.5908 8001.9785 -7998.4351 8002.3662 V -8001.3691 8003.458 -8001.4478 8004.8047 V -8001.9995 8006.7119 -7999.7002 8007.3389 V -7997.7788 8007.8535 -7995.8882 8005.4912 V -7994.7109 8004.2764 -7991.6758 8003.5361 V -7991.6724 8003.5488 L -7988.459 8002.6416 -7986.7388 8003.1855 Y -7983.9517 8004.3643 -7982.5059 8002.998 Y -7980.7822 8001.3525 -7982.1758 7999.9375 Y f -7996.083 7983.4756 m -7996.6851 7981.7969 -7996.3818 7980.0742 -7995.1323 7979.5195 c -7993.8838 7978.9639 -7992.438 7979.9131 -7991.5581 7981.4639 c -7991.4282 7981.6924 -7990.9355 7982.7617 -7990.8628 7982.9873 C -7990.8062 7983.0752 -7990.7788 7983.1641 -7990.7358 7983.2637 c -7990.2285 7984.4053 -7990.6118 7986.127 -7991.9102 7986.7041 c -7993.2085 7987.2822 -7994.7275 7986.6494 -7995.2578 7985.3584 c -7995.2827 7985.2969 -7995.6074 7984.584 -7995.6294 7984.5225 C -7995.7827 7984.292 -7995.9805 7983.7627 -7996.083 7983.4756 c f -7981.8125 7986.5273 m -7977.2798 7993.3789 -7982.4907 7995.291 v -7985.771 7995.8135 -7986.2031 7992.7529 v -7986.6782 7991.4521 -7985.3896 7989.332 v -7985.1899 7988.9414 -7985.1934 7987.6367 v -7985.5854 7986.1416 -7984.5078 7985.2148 v -7983.1587 7984.4326 -7981.8125 7986.5273 v f U u -7956.8354 8035.7041 m -7956.4683 8033.959 -7957.0044 8032.292 -7958.3179 8031.9131 c -7959.6318 8031.5342 -7960.9341 8032.6719 -7961.5933 8034.3291 c -7961.6899 8034.5742 -7962.0322 8035.6992 -7962.0742 8035.9336 C -7962.1172 8036.0293 -7962.1318 8036.1211 -7962.1621 8036.2246 c -7962.5083 8037.4238 -7961.8931 8039.0771 -7960.5278 8039.4717 c -7959.1631 8039.8662 -7957.7451 8039.0332 -7957.3965 8037.6816 c -7957.3789 8037.6172 -7957.1548 8036.8672 -7957.1421 8036.8037 C -7957.021 8036.5518 -7956.8979 8036.002 -7956.8354 8035.7041 c f -7970.3701 8040.2139 m -7973.9238 8047.6201 -7968.4995 8048.8027 v -7965.1797 8048.8721 -7965.1685 8045.7813 v -7964.8774 8044.4277 -7966.4429 8042.5039 v -7966.6938 8042.1416 -7966.8691 8040.8496 v -7966.6851 8039.3145 -7967.8789 8038.5449 v -7969.3218 8037.9561 -7970.3701 8040.2139 v f -7949.5645 8057.3662 m F -7948.1631 8055.5879 m -7948.4243 8054.2656 -7951.4795 8053.584 Y -7952.3696 8053.3164 -7952.6982 8052.5752 Y -7953.5918 8047.9502 -7956.8662 8047.5713 -7957.249 8047.542 C -7957.249 8047.5361 L -7960.8267 8046.8555 -7962.8311 8051.4424 V -7963.3149 8052.0928 -7964.2412 8052.1592 V -7967.3721 8052.1523 -7967.9165 8053.3857 V -7969.1035 8054.9775 -7967.1709 8056.3721 V -7965.5522 8057.5273 -7962.9531 8055.9785 V -7961.4238 8055.2549 -7958.3218 8055.626 V -7958.3228 8055.6387 L -7954.9961 8055.918 -7953.5762 8057.0293 Y -7951.3789 8059.1113 -7949.5459 8058.3398 Y -7947.355 8057.4023 -7948.1631 8055.5879 Y f -7954.937 8035.832 m -7954.9131 8034.0479 -7954.0254 8032.542 -7952.6597 8032.46 c -7951.2939 8032.376 -7950.2739 8033.7734 -7949.9951 8035.5352 c -7949.9541 8035.7939 -7949.8662 8036.9678 -7949.8774 8037.2061 C -7949.8555 8037.3076 -7949.8613 8037.4004 -7949.8555 8037.5088 c -7949.7803 8038.7559 -7950.7441 8040.2334 -7952.1621 8040.3184 c -7953.5811 8040.4033 -7954.7822 8039.2793 -7954.8242 8037.8838 c -7954.8267 8037.8184 -7954.8818 8037.0361 -7954.8794 8036.9717 C -7954.9429 8036.7012 -7954.9419 8036.1367 -7954.937 8035.832 c f -7943.1182 8043.1592 m -7941.2773 8051.1641 -7946.8267 8051.127 v -7950.083 8050.4648 -7949.415 8047.4473 v -7949.4028 8046.0635 -7947.4531 8044.5293 v -7947.1274 8044.2344 -7946.6738 8043.0117 v -7946.5171 8041.4727 -7945.1831 8040.9844 v -7943.645 8040.7246 -7943.1182 8043.1592 v f U U 1 Ap -8016.0996 8071.5967 m -8016.0996 7966.5967 L -7935.0996 7966.5967 L -7935.0996 8071.5967 L -8016.0996 8071.5967 L n U U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 42) 0 A u 0 Ap 0 J 0 j 1 w 4 M []0 d 0 XR -7989.5605 8044.6816 m -8017.0996 8044.6816 L -8017.0996 8072.2207 L -7989.5605 8072.2207 L -7989.5605 8044.6816 L n 0 O 0 0.55 1 0.12 k -8003.8594 8062.959 m -8003.8594 8072.5967 L -8002.7339 8072.5967 L -8002.7339 8062.959 L -8003.8594 8062.959 L f 0 0.55 1 0.3 k -8007.5229 8058.4727 m -8006.4092 8056.752 -8002.9805 8055.0537 -7998.5962 8055.0537 c -7994.2148 8055.0537 -7990.7134 8056.7031 -7989.6714 8058.4707 C -7989.6714 8058.4707 L -7990.7134 8060.1973 -7994.2148 8061.8945 -7998.5962 8061.8945 c -8002.9751 8061.8945 -8006.4238 8060.1582 -8007.5229 8058.4727 C f U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 45) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -8017.0996 8029.5146 m -8017.0996 8072.5967 L -7930.3213 8072.5967 L -7930.3213 8029.5146 L -8017.0996 8029.5146 L n u u 0 O 0 0 0 1 k -7957.3213 8058.832 m -7957.3213 8066.6709 L -7945.3213 8059.7412 L -7933.3213 8052.8135 L -7945.3213 8045.8857 L -7957.3213 8038.958 L -7957.3213 8047.0791 L -8016.0347 8033.3135 L -8003.0874 8052.3984 L -8017.0996 8072.5967 L -7957.3213 8058.832 L f 0 1 1 0.1 k 0 R 0 0 0 1 K -7955.3213 8055.832 m -7955.3213 8063.6709 L -7943.3213 8056.7412 L -7931.3213 8049.8135 L -7943.3213 8042.8857 L -7955.3213 8035.958 L -7955.3213 8044.0791 L -8014.0347 8030.3135 L -7999.375 8049.9561 L -8014.0347 8069.5967 L -7955.3213 8055.832 L b U U U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 5) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -7858.499 8072.5967 m -7858.499 8059.0166 L -8017.0996 8059.0166 L -8017.0996 8072.5967 L -7858.499 8072.5967 L n u u 0 O 0.285 0.228 0.171 0 k -7873.1782 8071.0811 m -7873.1431 8072.2861 L -7859.6099 8073.1143 -7858.9414 8071.8789 v -7858.8438 8071.6982 -7858.7471 8071.3115 -7858.6611 8070.79 C -7860.6841 8071.4209 -7870.3911 8071.168 -7873.1782 8071.0811 C f 0.44 0.352 0.264 0 k -7873.5059 8059.6201 m -7873.4707 8060.8633 L -7870.5908 8060.6455 -7860.291 8059.9131 -7858.6431 8060.4619 C -7858.8027 8059.8154 -7859.0195 8059.3613 -7859.3042 8059.2119 c -7860.9302 8058.3623 -7873.5059 8059.6201 Y f 0.145 0.116 0.087 0 k -7873.4707 8060.8633 m -7873.1782 8071.0811 L -7870.3911 8071.168 -7860.6841 8071.4209 -7858.6611 8070.79 C -7858.2515 8068.374 -7858.0254 8062.9561 -7858.6431 8060.4619 C -7860.291 8059.9131 -7870.5908 8060.6455 -7873.4707 8060.8633 C f U u 0.155 0.124 0.093 0 k -7899.0371 8064.8701 m -7897.9971 8065.2529 L -7879.1724 8060.7432 L -7879.5811 8059.9111 L -7898.4629 8062.3213 L -7899.3521 8062.6025 L -7899.75 8062.4902 -7900.293 8062.4209 V -7899.709 8062.834 -7899.2422 8063.7373 -7899.0371 8064.8701 C f u 0.085 0.068 0.051 0 k -7903.8989 8069.2627 m -7904.6973 8069.3184 -7901.8491 8069.2607 Y -7902.4478 8068.6143 -7902.8711 8067.416 -7902.9102 8066.0342 c -7902.9165 8065.8213 -7902.9102 8065.6143 -7902.8989 8065.4102 C -7903.1411 8065.3037 -7903.1914 8065.3701 -7903.7285 8065.1611 C -7903.0996 8069.208 -7903.8989 8069.2627 v f 0.305 0.244 0.183 0 k -7902.4438 8062.4639 m -7902.6523 8062.4072 -7902.5933 8064.5273 Y -7901.5781 8065.3545 L -7899.9355 8064.54 L -7899.0371 8064.8701 L -7899.2422 8063.7373 -7899.709 8062.834 -7900.293 8062.4209 C -7900.709 8062.3672 -7901.9741 8062.3965 -7902.4438 8062.4639 C f U 0.115 0.092 0.069 0 k -7899.0371 8064.8701 m -7899.9355 8064.54 L -7901.5781 8065.3545 L -7902.5933 8064.5273 L -7902.8931 8065.3047 -7902.8989 8065.4102 V -7901.6133 8065.9756 -7900.2827 8066.3369 -7898.9395 8066.5225 C -7898.8896 8066.3232 -7898.8838 8066.1396 -7898.8896 8065.9336 c -7898.8994 8065.5684 -7898.9214 8065.2148 -7899.0371 8064.8701 C f 0.41 0.328 0.246 0 k -7879.5508 8060.9932 m -7881.4771 8062.2393 -7890.4858 8067.6953 -7898.9395 8066.5225 C -7899.0034 8067.6895 -7899.3481 8068.6875 -7899.8496 8069.2598 C -7899.2891 8069.2588 L -7878.8398 8072.3525 L -7879.1362 8062.0225 L -7879.1724 8060.7432 L -7879.3042 8060.834 -7879.5508 8060.9932 v f 0.395 0.316 0.237 0 k -7902.9102 8066.0342 m -7902.8711 8067.416 -7902.4478 8068.6143 -7901.8491 8069.2607 C -7899.7803 8069.2598 L -7899.2778 8068.6875 -7898.9214 8067.668 -7898.9395 8066.5225 C -7900.2827 8066.3369 -7901.6133 8065.9756 -7902.8989 8065.4102 C -7902.9102 8065.6143 -7902.9165 8065.8213 -7902.9102 8066.0342 c f U u 0 0 0 0.11 k -7873.3638 8059.7979 m -7872.3403 8059.6318 L -7873.3638 8059.7979 L -7873.3638 8059.7979 L f 0 0 0 0.34 k -7879.5811 8059.9111 m -7879.1724 8060.7432 L -7877.771 8060.5146 L -7876.623 8060.3281 L -7874.7754 8060.0273 L -7873.3638 8059.7979 L -7872.3403 8059.6318 L -7872.395 8059.3135 -7872.4668 8059.0947 -7872.5645 8059.0166 C -7879.5811 8059.9111 L f 0 0 0 0.32 k -7877.9038 8064.8037 m -7878.1411 8072.458 L -7872.814 8072.5967 L -7871.8262 8069.1113 -7872.2813 8064.751 V -7877.9038 8064.8037 L f U 0.025 0.02 0.015 0 k -7871.4219 8061.9814 m -7868.4731 8062.5166 -7865.3398 8062.7568 -7862.4155 8061.958 c -7862.3853 8061.9463 -7862.375 8061.915 -7862.3867 8061.8936 c -7862.3877 8061.8623 -7862.4194 8061.8525 -7862.4414 8061.8525 c -7865.3418 8062.6611 -7868.4751 8062.4209 -7871.4038 8061.875 c -7871.4258 8061.876 -7871.457 8061.8877 -7871.4668 8061.9189 c -7871.4658 8061.9404 -7871.4551 8061.9717 -7871.4219 8061.9814 c -7871.4219 8061.9814 l f -7869.937 8060.9033 m -7869.8291 8060.9756 -7869.731 8061.0908 -7869.623 8061.0986 c -7865.8882 8061.4287 -7862.2627 8061.3779 -7858.5742 8061.2607 c -7858.5522 8061.2607 -7858.5205 8061.2393 -7858.521 8061.2168 c -7858.521 8061.1846 -7858.5547 8061.1641 -7858.5762 8061.1641 c -7861.4219 8061.2783 -7864.2397 8061.2959 -7867.1035 8061.1318 c -7868.0332 8061.0732 -7869.0078 8061.3369 -7869.8774 8060.8174 c -7869.8989 8060.8076 -7869.9302 8060.8076 -7869.9502 8060.8301 c -7869.9614 8060.8525 -7869.959 8060.8838 -7869.937 8060.9033 c -7869.937 8060.9033 l f -7865.4731 8062.9639 m -7863.6094 8064.2764 -7861.4019 8064.9707 -7859.1997 8065.4824 c -7859.1675 8065.4932 -7859.147 8065.4814 -7859.1362 8065.4502 c -7859.127 8065.416 -7859.1484 8065.3975 -7859.1699 8065.3867 c -7861.3613 8064.8623 -7863.5591 8064.1992 -7865.4102 8062.876 c -7865.4429 8062.8564 -7865.4751 8062.8672 -7865.4844 8062.8896 c -7865.5054 8062.9111 -7865.4941 8062.9424 -7865.4731 8062.9639 c -7865.4731 8062.9639 l f -7871.0317 8069.6533 m -7868.8291 8070.167 -7866.6294 8070.627 -7864.3794 8070.8721 c -7864.3594 8070.8809 -7864.3291 8070.8604 -7864.3291 8070.8389 c -7864.3179 8070.8057 -7864.3403 8070.7744 -7864.3726 8070.7744 c -7866.6118 8070.4775 -7868.8301 8070.1143 -7871.0122 8069.5469 c -7871.0347 8069.5479 -7871.0669 8069.5596 -7871.0762 8069.5908 c -7871.0747 8069.6123 -7871.0645 8069.6445 -7871.0317 8069.6533 c -7871.0317 8069.6533 l f -7870.5391 8068.9561 m -7868.4453 8069.7939 -7866.2012 8069.5264 -7864.002 8069.5596 c -7863.9702 8069.5576 -7863.9492 8069.5361 -7863.9502 8069.5049 c -7863.9517 8069.4717 -7863.9731 8069.4521 -7863.9941 8069.4521 c -7866.1924 8069.4404 -7868.437 8069.6953 -7870.5205 8068.8496 c -7870.543 8068.8496 -7870.5742 8068.8623 -7870.583 8068.8936 c -7870.583 8068.915 -7870.5718 8068.9473 -7870.5391 8068.9561 c -7870.5391 8068.9561 l f -7869.8071 8070.3008 m -7868.4829 8070.3486 -7867.25 8070.1436 -7865.9268 8069.8057 c -7865.459 8069.6953 -7865.0195 8069.8232 -7864.5605 8069.8096 c -7863.9971 8069.7939 l -7863.9741 8069.792 -7863.9629 8069.7822 -7863.9531 8069.7705 c -7863.9341 8069.748 -7863.9438 8069.7168 -7863.9658 8069.6953 c -7864.1621 8069.542 l -7864.1738 8069.542 -7864.1851 8069.5313 -7864.1958 8069.5313 c -7864.5996 8069.5439 l -7866.0547 8069.7881 -7867.5571 8070.2686 -7868.9922 8069.6709 c -7869.0254 8069.6611 -7869.0571 8069.6816 -7869.0669 8069.7041 c -7869.0669 8069.7354 -7869.0547 8069.7568 -7869.0332 8069.7676 c -7867.7471 8070.2959 -7866.271 8070.0713 -7864.9814 8069.6504 c -7864.1914 8069.6396 L -7864.2241 8069.6299 L -7864.0278 8069.7832 L -7863.998 8069.6865 L -7864.5635 8069.7031 l -7865.0317 8069.7373 -7865.4844 8069.5801 -7865.9395 8069.6992 c -7867.2539 8070.0576 -7868.4971 8070.2217 -7869.8096 8070.1953 c -7869.8418 8070.1963 -7869.8638 8070.2168 -7869.8613 8070.25 c -7869.8613 8070.2822 -7869.8398 8070.3027 -7869.8071 8070.3008 c -7869.8071 8070.3008 l f -7870.6714 8070.6572 m -7867.9707 8071.8174 -7865.002 8071.167 -7862.2275 8070.7783 c -7861.8828 8070.8857 l -7861.8613 8070.8955 -7861.8413 8070.8838 -7861.8203 8070.8623 c -7861.8096 8070.8408 -7861.8213 8070.8096 -7861.8418 8070.7988 c -7862.1797 8070.6064 l -7864.875 8069.9893 -7867.6387 8070.3779 -7870.3711 8070.3818 c -7870.4019 8070.3838 -7870.4229 8070.4053 -7870.4219 8070.4365 c -7870.4194 8070.4688 -7870.3979 8070.4893 -7870.3677 8070.4893 c -7867.7734 8070.5313 -7865.1299 8070.04 -7862.5723 8070.6709 c -7861.895 8070.8857 L -7861.853 8070.7881 L -7862.2402 8070.6816 l -7865.0054 8071.0391 -7867.9414 8071.7305 -7870.6309 8070.5713 c -7870.6533 8070.5615 -7870.6851 8070.5615 -7870.6958 8070.5947 c -7870.7051 8070.6152 -7870.7051 8070.6475 -7870.6714 8070.6572 c -7870.6714 8070.6572 l f -7867.7891 8063.9912 m -7866.4941 8064.4971 -7865.083 8064.2432 -7863.7798 8063.9404 c -7863.7471 8063.9385 -7863.7363 8063.916 -7863.7378 8063.8857 c -7863.75 8063.8535 -7863.771 8063.8428 -7863.8027 8063.8447 c -7865.0981 8064.127 -7866.4771 8064.4121 -7867.75 8063.8936 c -7867.7822 8063.8838 -7867.814 8063.8955 -7867.8242 8063.9277 c -7867.8218 8063.9492 -7867.811 8063.9814 -7867.7891 8063.9912 c -7867.7891 8063.9912 l f -7868.2397 8065.8174 m -7866.3262 8066.2861 -7864.4141 8066.6992 -7862.4551 8066.9209 c -7862.4238 8066.9307 -7862.4019 8066.9092 -7862.3931 8066.876 c -7862.395 8066.8564 -7862.4155 8066.8252 -7862.437 8066.8252 c -7864.3955 8066.6045 -7866.3091 8066.1787 -7868.2202 8065.71 c -7868.2422 8065.7119 -7868.2734 8065.7227 -7868.2827 8065.7549 c -7868.2827 8065.7764 -7868.2715 8065.8076 -7868.2397 8065.8174 c -7868.2397 8065.8174 l f -7869.0332 8068.2314 m -7866.5991 8069.0576 -7863.9644 8068.6504 -7861.4453 8068.6846 c -7861.4131 8068.6846 -7861.3931 8068.6631 -7861.3931 8068.6299 c -7861.395 8068.6084 -7861.4155 8068.5889 -7861.4478 8068.5889 c -7863.957 8068.5127 -7866.5811 8068.9814 -7868.9941 8068.123 c -7869.0278 8068.124 -7869.0591 8068.1357 -7869.0684 8068.1572 c -7869.0674 8068.1885 -7869.0557 8068.2207 -7869.0332 8068.2314 c -7869.0332 8068.2314 l f -7864.1538 8069.4463 m -7862.7578 8070.1416 -7861.1499 8070 -7859.6338 8070.0635 c -7859.6021 8070.0615 -7859.582 8070.04 -7859.582 8070.0088 c -7859.583 8069.9873 -7859.605 8069.9561 -7859.6362 8069.9561 c -7861.1133 8069.8174 -7862.7485 8070.1201 -7864.1035 8069.3584 c -7864.1362 8069.3496 -7864.1675 8069.3604 -7864.1782 8069.3828 c -7864.1875 8069.4043 -7864.1763 8069.4365 -7864.1538 8069.4463 c -7864.1538 8069.4463 l f -7863.4414 8066.0215 m -7862.4922 8065.9941 -7861.5332 8065.9668 -7860.5835 8065.9385 c -7860.5522 8065.9385 -7860.5308 8065.916 -7860.5332 8065.8848 c -7860.5332 8065.8525 -7860.5547 8065.832 -7860.5874 8065.832 c -7861.5371 8065.8604 -7862.4971 8065.8877 -7863.4453 8065.915 c -7863.4771 8065.915 -7863.4971 8065.9385 -7863.4971 8065.9697 c -7863.4971 8066 -7863.4741 8066.0225 -7863.4414 8066.0215 c -7863.4414 8066.0215 l f -7861.2588 8063.6328 m -7860.7891 8063.6611 -7860.3091 8063.6689 -7859.8379 8063.6885 c -7859.8164 8063.6875 -7859.7852 8063.665 -7859.7861 8063.6328 c -7859.7871 8063.6006 -7859.8096 8063.5801 -7859.8413 8063.5801 c -7860.311 8063.584 -7860.7813 8063.5342 -7861.251 8063.5361 c -7861.2827 8063.5264 -7861.3027 8063.5479 -7861.313 8063.5801 c -7861.3125 8063.6123 -7861.291 8063.6328 -7861.2588 8063.6328 c -7861.2588 8063.6328 l f -7869.0698 8065.8311 m -7868.6685 8066.1064 -7868.2251 8066.2764 -7867.7451 8066.3477 c -7867.7109 8066.3574 -7867.6914 8066.335 -7867.6802 8066.3135 c -7867.6699 8066.2822 -7867.6924 8066.251 -7867.7148 8066.251 c -7868.1851 8066.1689 -7868.6172 8065.999 -7869.0205 8065.7441 c -7869.0518 8065.7344 -7869.0845 8065.7344 -7869.0942 8065.7676 c -7869.1035 8065.79 -7869.0918 8065.8213 -7869.0698 8065.8311 c -7869.0698 8065.8311 l f -7870.29 8071.6816 m -7867.834 8072.124 -7865.3979 8072.5977 -7862.8989 8072.3232 c -7862.8774 8072.3232 -7862.8564 8072.3008 -7862.8574 8072.2686 c -7862.8574 8072.2373 -7862.8794 8072.2158 -7862.9019 8072.2158 c -7865.3911 8072.4697 -7867.834 8072.0811 -7870.2715 8071.5742 c -7870.293 8071.5752 -7870.3252 8071.5869 -7870.334 8071.6182 c -7870.334 8071.6396 -7870.3218 8071.6719 -7870.29 8071.6816 c -7870.29 8071.6816 l f 0.195 0.156 0.117 0 k -7870.2661 8060.2412 m -7867.8965 8059.8633 -7865.5054 8059.9443 -7863.1294 8060.1865 c -7863.0981 8060.1846 -7863.0762 8060.1631 -7863.0762 8060.1318 c -7863.0781 8060.1104 -7863.0996 8060.0791 -7863.1211 8060.0791 c -7865.5078 8059.8389 -7867.8911 8059.7568 -7870.269 8060.1357 c -7870.3022 8060.1357 -7870.3218 8060.1572 -7870.3213 8060.1904 c -7870.3203 8060.2217 -7870.2988 8060.2432 -7870.2661 8060.2412 c -7870.2661 8060.2412 l f 0.335 0.268 0.201 0 k -7869.5347 8059.708 m -7867.0278 8059.7119 -7864.5142 8059.874 -7862.0181 8059.4932 c -7861.9858 8059.4912 -7861.9644 8059.4697 -7861.9658 8059.4385 c -7861.9668 8059.4053 -7861.9893 8059.3857 -7862.0205 8059.3857 c -7864.5181 8059.7656 -7867.0293 8059.626 -7869.5371 8059.6025 c -7869.5596 8059.6025 -7869.5811 8059.624 -7869.5781 8059.6553 c -7869.5781 8059.6885 -7869.5571 8059.708 -7869.5347 8059.708 c -7869.5347 8059.708 l f 0.205 0.164 0.123 0 k -7871.0762 8059.9229 m -7869.6035 8060.2646 -7868.1074 8059.999 -7866.6387 8059.8174 c -7866.6074 8059.8174 -7866.5869 8059.7939 -7866.5991 8059.7627 c -7866.5996 8059.7305 -7866.6211 8059.71 -7866.6533 8059.7217 c -7868.1099 8059.8809 -7869.5957 8060.1797 -7871.0469 8059.8154 c -7871.0781 8059.8174 -7871.1099 8059.8281 -7871.1094 8059.8604 c -7871.1191 8059.8809 -7871.0981 8059.9131 -7871.0762 8059.9229 c -7871.0762 8059.9229 l f -7864.4531 8059.3916 m -7863.2974 8059.5176 -7862.127 8059.4111 -7860.9922 8059.1865 c -7860.9707 8059.1748 -7860.9502 8059.1533 -7860.9614 8059.1211 c -7860.9619 8059.0996 -7860.9941 8059.0791 -7861.0161 8059.0908 c -7862.1499 8059.3369 -7863.291 8059.3896 -7864.4458 8059.2852 c -7864.479 8059.2861 -7864.498 8059.3076 -7864.5083 8059.3291 c -7864.5078 8059.3613 -7864.4858 8059.3818 -7864.4531 8059.3916 c -7864.4531 8059.3916 l f 0.335 0.268 0.201 0 k -7871.3677 8062.0439 m -7870.021 8062.7852 -7868.4063 8062.1943 -7866.9551 8062.2383 c -7866.9219 8062.2373 -7866.9019 8062.2158 -7866.9019 8062.1816 c -7866.9038 8062.1621 -7866.9258 8062.1416 -7866.957 8062.1416 c -7868.3882 8062.0869 -7869.9819 8062.6768 -7871.3164 8061.9473 c -7871.3379 8061.9365 -7871.3691 8061.9482 -7871.3911 8061.9707 c -7871.4004 8061.9912 -7871.3882 8062.0244 -7871.3677 8062.0439 c -7871.3677 8062.0439 l f -7869.9941 8064.1611 m -7867.7715 8064.6416 -7865.4893 8064.2129 -7863.25 8064.1592 c -7863.2173 8064.1582 -7863.1973 8064.1357 -7863.1973 8064.1045 c -7863.1997 8064.083 -7863.2314 8064.0635 -7863.2515 8064.0635 c -7865.4829 8064.0742 -7867.7515 8064.5771 -7869.9751 8064.0537 c -7869.9971 8064.0537 -7870.0283 8064.0654 -7870.0371 8064.0986 c -7870.0371 8064.1191 -7870.0254 8064.1504 -7869.9941 8064.1611 c -7869.9941 8064.1611 l f -7864.127 8060.7373 m -7862.4492 8061.5654 -7860.5991 8062.0986 -7858.7031 8061.958 c -7858.6714 8061.958 -7858.6509 8061.9355 -7858.6523 8061.9033 c -7858.6523 8061.8721 -7858.6738 8061.8496 -7858.707 8061.8525 c -7860.5811 8062.0127 -7862.4194 8061.457 -7864.0869 8060.6504 c -7864.1074 8060.6416 -7864.1411 8060.6416 -7864.1499 8060.6748 c -7864.1611 8060.6953 -7864.1611 8060.7275 -7864.127 8060.7373 c -7864.127 8060.7373 l f u 0.5 0.85 1 0.45 k -8017.0996 8067.5049 m -8017.125 8068.084 -8016.666 8068.7832 -8015.2671 8069.5869 C -8014.9517 8069.5996 -8013.4941 8069.6201 -8011.1885 8069.6455 C -8011.1885 8067.4189 L -8013.2378 8067.4424 -8015.2173 8067.4824 -8017.0996 8067.5049 C f -8016.6084 8066.5654 m -8011.1885 8066.4414 L -8011.1885 8065.4111 L -8014.7441 8065.5557 L -8015.9141 8065.9268 -8016.6084 8066.5654 V f 0.5 0.85 1 0.32 k -8011.1885 8066.4219 m -8016.5742 8066.54 L -8016.8691 8066.8105 -8017.0845 8067.1533 -8017.0996 8067.5244 C -8015.2173 8067.5029 -8013.2378 8067.4814 -8011.1885 8067.458 C -8011.1885 8066.4219 L f 0.5 0.85 1 0.45 k -7906.25 8066.2139 m -7984.458 8067.1377 -8011.2075 8067.4385 V -8011.2075 8069.6455 L -7994.9141 8069.8281 -7936.0898 8070.3037 Y -7901.8491 8069.2607 L -7902.5571 8066.1641 L -7906.25 8066.2139 L f 0.5 0.85 1 0.12 k -8011.2075 8065.4111 m -8011.2075 8066.4414 L -7902.5254 8064.5967 L -7902.4829 8062.46 L -7935.7549 8062.3096 L -8011.2075 8065.4111 L f u 0.065 0.052 0.039 0 k -7879.1724 8060.7432 m -7879.1362 8062.0225 L -7879.395 8060.7129 L -7897.9971 8065.2529 L -7899.0371 8064.8701 L -7898.979 8065.2021 -7898.9395 8065.5537 -7898.9302 8065.9189 c -7898.9238 8066.124 -7898.9277 8066.3252 -7898.9395 8066.5225 C -7890.4858 8067.6953 -7881.063 8063.2686 -7879.1362 8062.0225 C -7878.8398 8072.3525 L -7878.1411 8072.458 L -7877.9038 8064.8037 L -7872.2813 8064.751 L -7872.1895 8062.6104 -7872.1714 8060.6182 -7872.3403 8059.6318 C -7879.1724 8060.7432 L f 0.4 0.7 1 0 k -7902.5571 8066.1846 m -7902.5254 8064.5771 L -8011.2075 8066.4219 L -8011.2075 8067.458 L -7984.458 8067.1572 -7902.5571 8066.1846 Y f U U 0.025 0.02 0.015 0 k -7866.834 8068.626 m -7866.834 8068.6592 -7866.8125 8068.6787 -7866.7798 8068.6787 c -7863.771 8068.71 -7861.521 8068.542 -7858.5151 8068.4561 C -7858.5083 8068.3623 L -7861.4258 8068.4668 -7863.8604 8068.6045 -7866.7837 8068.5713 C -7866.8164 8068.5732 -7866.8354 8068.5947 -7866.834 8068.626 C f -7858.499 8068.3623 m -7858.5078 8068.3408 L -7858.5083 8068.3623 L -7858.5059 8068.3623 -7858.5029 8068.3623 -7858.499 8068.3623 C f -7862.5483 8067.0205 m -7863.5454 8066.8887 -7864.439 8067.3623 -7865.311 8067.7939 C -7865.3438 8067.8047 -7865.353 8067.8369 -7865.3418 8067.8672 C -7865.3301 8067.8896 -7865.2979 8067.8984 -7865.2773 8067.8877 c -7864.4258 8067.4268 -7863.5308 8067.0166 -7862.5674 8067.1152 c -7861.2075 8067.2588 -7860.0034 8067.9717 -7858.625 8068.0488 C -7858.5459 8067.9561 L -7860.1396 8067.8623 -7860.9644 8067.2197 -7862.5483 8067.0205 c f U U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 50) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -8016.0996 8071.5967 m -7888.9771 8071.5967 L -7888.9771 8024.0117 L -8016.0996 8024.0117 L -8016.0996 8071.5967 L n u *u 0 O 0.9529 0.949 0.1961 0.0745 k -7989.8931 8056.0137 m -7989.9229 8055.8633 L -7992.0845 8049.9609 -7993.0435 8047.2344 -7993.375 8045.8857 c -7993.4653 8045.8857 L -7993.7949 8047.2041 -7994.875 8049.9316 -7997.0669 8055.8633 c -7997.0962 8056.0137 L -7989.8931 8056.0137 l f 1 D -8000.2178 8064.5645 m -8001.7188 8068.1328 -8002.499 8070.3057 -8000.2178 8070.5137 c -8000.2178 8071.5645 L -8002.7988 8071.5342 -8005.6802 8071.5137 -8008.4414 8071.5137 c -8012.1646 8071.5137 -8014.627 8071.5342 -8016.0996 8071.5645 c -8016.0996 8070.5137 L -8014.2061 8070.3057 -8013.1538 8068.1641 -8005.6509 8051.0996 c -7993.7949 8024.0117 L -7991.9634 8024.0117 L -7980.2578 8051.0996 L -7972.9043 8068.1045 -7971.8242 8070.3057 -7969.9883 8070.5137 c -7969.9883 8071.5645 L -7971.6138 8071.5342 -7974.0161 8071.5137 -7977.6763 8071.5137 c -7980.6484 8071.5137 -7983.769 8071.5342 -7986.8022 8071.5645 c -7986.8022 8070.5137 L -7984.5811 8070.3057 -7985.4214 8068.1045 -7986.8613 8064.5645 C -8000.2178 8064.5645 l f *U *u 0 D -7945.1758 8039.6777 m -7945.1758 8036.0684 -7947.4531 8033.6904 -7951.229 8033.6904 c -7952.3379 8033.6904 -7953.1763 8033.8125 -7953.627 8033.8408 c -7953.627 8046.1445 L -7952.9668 8046.2041 -7952.3081 8046.2041 -7951.8291 8046.2041 c -7950.2998 8046.2041 -7948.8022 8045.7236 -7947.7837 8045.002 c -7946.4941 8044.1289 -7945.1758 8042.3848 -7945.1758 8039.7383 C -7945.1758 8039.6777 l f 1 D -7964.1802 8043.9893 m -7964.1802 8028.2412 -7964.1802 8026.0254 -7966.6421 8025.875 c -7966.6421 8024.915 L -7965.1421 8024.8555 -7962.417 8024.7959 -7959.666 8024.7656 c -7957.7534 8024.7051 -7954.4941 8024.6152 -7952.2476 8024.5742 c -7948.6821 8024.5742 -7945.6851 8025.0225 -7943.1045 8025.8584 c -7938.4531 8027.4443 -7934.0698 8031.4492 -7934.0698 8039.2568 c -7934.0698 8044.3398 -7936.501 8047.916 -7938.603 8049.6572 c -7939.6831 8050.6182 -7940.9131 8051.4287 -7941.874 8051.9092 c -7941.874 8052.0596 L -7939.623 8055.0879 -7937.7021 8057.6592 -7931.4902 8066.2393 c -7929.5996 8068.6611 -7928.0098 8070.335 -7926.8398 8070.5742 c -7926.8398 8071.5967 L -7928.7598 8071.5967 -7931.0996 8071.4814 -7933.229 8071.4814 c -7935.4507 8071.4814 -7936.9517 8071.5967 -7938.542 8071.5967 c -7939.7725 8071.5967 -7940.8237 8071.5371 -7941.6035 8070.8691 c -7945.1147 8065.4443 -7949.0117 8059.3525 -7952.2178 8054.3105 c -7952.6074 8054.3105 -7953.0571 8054.3105 -7953.627 8054.3105 c -7953.627 8056.8809 L -7953.627 8068.123 -7953.5371 8070.3652 -7951.2891 8070.5742 c -7951.2891 8071.5664 L -7952.7275 8071.5371 -7956.019 8071.5117 -7958.7988 8071.5117 c -7962.0283 8071.5117 -7964.9917 8071.5371 -7966.6118 8071.5664 c -7966.6118 8070.5742 L -7964.1514 8070.3652 -7964.1802 8068.123 -7964.1802 8051.1885 C -7964.1802 8043.9893 l f *U *u 0 D -7913.5557 8051.1895 m -7913.5557 8068.0908 -7913.5557 8070.2441 -7916.3828 8070.5742 C -7916.3828 8071.5664 l -7914.4883 8071.5371 -7911.1538 8071.5117 -7907.8818 8071.5117 c -7904.729 8071.5117 -7901.6685 8071.5371 -7899.3877 8071.5664 C -7899.3877 8070.5742 l -7902.3574 8070.5742 -7902.3877 8068.1211 -7902.3877 8051.1895 C -7902.3877 8033.748 L -7894.9189 8033.748 l -7892.0991 8033.748 -7890.6294 8034.5566 -7889.999 8036.8584 C -7889.0068 8036.8584 l -7889.0068 8032.0664 -7888.9771 8028.0117 -7888.9771 8024.7676 c -7893.4482 8024.7979 -7898.8481 8024.8281 -7904.1597 8024.8281 C -7911.8442 8024.8281 l -7916.6533 8024.8281 -7922.0962 8024.7979 -7927.061 8024.7676 c -7927.061 8027.9814 -7927.0322 8032.0664 -7927.0322 8036.8584 C -7926.0068 8036.8584 l -7925.4653 8034.7061 -7923.8711 8033.748 -7921.0435 8033.748 C -7913.5557 8033.748 l -7913.5557 8051.1895 L f *U U U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 6) 0 A u 1 Ap 0 J 0 j 1 w 4 M []0 d 0 XR -8016.8496 8048.5967 m -8016.8496 8072.5967 L -8006.8496 8072.5967 L -8006.8496 8048.5967 L -8016.8496 8048.5967 L n 0 Ap 0 O 1 g -8006.8496 8050.5967 m -8007.1699 8050.5967 -8007.4854 8050.6152 -8007.7979 8050.6445 c -8009.6875 8050.8223 -8011.4194 8051.5313 -8012.8555 8052.6143 c -8014.3525 8053.7432 -8015.5195 8055.2783 -8016.1938 8057.0605 c -8016.6118 8058.1611 -8016.8496 8059.3496 -8016.8496 8060.5967 c -8016.8496 8062.459 -8016.3315 8064.1963 -8015.4453 8065.6885 c -8013.7021 8068.624 -8010.5098 8070.5967 -8006.8496 8070.5967 C -8006.8496 8050.5967 L f 0 R 0 G 1 J 1 j 0.5 w -8006.8496 8070.2783 m -8009.8789 8069.3223 -8012.707 8067.6641 -8015.4453 8065.6885 C S -8006.8496 8064.6455 m -8009.9995 8062.2393 -8013.0571 8059.5088 -8016.1938 8057.0605 C S -8012.8555 8052.6143 m -8010.79 8053.7051 -8008.8013 8055.0635 -8006.8496 8056.5537 C S -8007.7979 8050.6445 m -8007.4805 8050.7275 -8007.1631 8050.8105 -8006.8496 8050.9111 C S -8012.8555 8052.6143 m -8011.4189 8051.5313 -8009.6875 8050.8223 -8007.7979 8050.6445 C S -8016.1938 8057.0605 m -8016.6118 8058.1611 -8016.8496 8059.3496 -8016.8496 8060.5967 c -8016.8496 8062.459 -8016.3311 8064.1963 -8015.4453 8065.6885 C S -8006.8496 8050.5967 m -8007.1699 8050.5967 -8007.4854 8050.6152 -8007.7979 8050.6445 C S -8012.8555 8052.6143 m -8014.3525 8053.7432 -8015.5195 8055.2783 -8016.1938 8057.0605 C S -8015.4453 8065.6885 m -8013.7021 8068.624 -8010.5098 8070.5967 -8006.8496 8070.5967 C S U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 62) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -8017.0996 8072.5967 m -8017.0996 8034.3271 L -7978.8301 8034.3271 L -7978.8301 8072.5967 L -8017.0996 8072.5967 L n 0 O 1 0.14 0.09 0 k -7978.8301 8055.5 m -7978.8301 8046.9375 L -8017.0996 8046.9375 L -8017.0996 8055.5 L -7978.8301 8055.5 L f -7978.8301 8058.6934 m -7978.8301 8058.0195 L -8017.0996 8058.0195 L -8017.0996 8058.6934 L -7978.8301 8058.6934 L f U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 63) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -8017.0996 8072.5967 m -8017.0996 8034.3271 L -7978.8301 8034.3271 L -7978.8301 8072.5967 L -8017.0996 8072.5967 L n 0 O 1 0.14 0.09 0 k -7978.8301 8051.4229 m -7978.8301 8059.9863 L -7991.4404 8059.9863 L -7991.4404 8072.5967 L -8000.0034 8072.5967 L -8000.0059 8051.4229 L -8000.0034 8051.4229 L -8000.0034 8051.4219 L -7978.8301 8051.4229 L f -7978.8301 8048.9033 m -8002.5229 8048.9033 L -8002.5229 8072.5967 L -8003.1963 8072.5967 L -8003.1973 8048.2295 L -7978.8301 8048.2295 L -7978.8301 8048.9033 L f U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 64) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -8017.0996 8072.5957 m -8017.0996 8034.3252 L -7978.8301 8034.3252 L -7978.8301 8072.5957 L -8017.0996 8072.5957 L n 0 O 1 0.14 0.09 0 k -7978.8301 8046.9355 m -8004.4893 8046.9355 L -8004.4893 8072.5957 L -7995.9258 8072.5967 L -7995.9258 8055.5 L -7978.8301 8055.5 L -7978.8301 8046.9355 L f -7978.8301 8058.0176 m -7993.4077 8058.0176 L -7993.4077 8072.5967 L -7992.7334 8072.5967 L -7992.7334 8058.6924 L -7978.8301 8058.6924 L -7978.8301 8058.0176 L f U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 65) 0 A u 1 Ap 0 J 0 j 1 w 4 M []0 d 0 XR -7989.1621 8045.0576 m -8016.7021 8045.0576 L -8016.7021 8072.5967 L -7989.1621 8072.5967 L -7989.1621 8045.0576 L n 0 O 0 0.55 1 0.12 k -7988.9414 8058.2969 m -8017.0996 8058.2969 L -8017.0996 8059.4219 L -7988.9414 8059.4219 L -7988.9414 8058.2969 L f u 0 0.55 1 0.3 k -8016.0811 8046.1182 m -8016.5098 8048.1221 -8015.2861 8051.748 -8012.187 8054.8477 c -8009.0874 8057.9463 -8005.4453 8059.2568 -8003.459 8058.7422 C -8003.459 8058.7422 L -8002.9751 8056.7861 -8004.2515 8053.1084 -8007.3496 8050.0107 c -8010.4453 8046.915 -8014.1118 8045.7031 -8016.0811 8046.1182 C f 0 0.39 0.7 0.12 k -8016.0811 8071.5879 m -8016.5098 8069.584 -8015.2861 8065.958 -8012.187 8062.8584 c -8009.0874 8059.7607 -8005.4453 8058.4502 -8003.459 8058.9639 C -8003.459 8058.9639 L -8002.9751 8060.9209 -8004.2515 8064.5977 -8007.3496 8067.6953 c -8010.4453 8070.792 -8014.1118 8072.0029 -8016.0811 8071.5879 C f U u 0 0.55 1 0.3 k -8002.2778 8071.5879 m -8002.707 8069.584 -8001.4834 8065.958 -7998.3838 8062.8584 c -7995.2852 8059.7607 -7991.6431 8058.4502 -7989.6572 8058.9639 C -7989.6563 8058.9639 L -7989.1714 8060.9209 -7990.4492 8064.5977 -7993.5469 8067.6953 c -7996.6431 8070.792 -8000.3091 8072.0029 -8002.2778 8071.5879 C f 0 0.39 0.7 0.12 k -8002.2778 8046.1182 m -8002.707 8048.1221 -8001.4834 8051.748 -7998.3838 8054.8477 c -7995.2852 8057.9463 -7991.6431 8059.2568 -7989.6572 8058.7422 C -7989.6563 8058.7422 L -7989.1714 8056.7861 -7990.4492 8053.1084 -7993.5469 8050.0107 c -7996.6431 8046.915 -8000.3091 8045.7031 -8002.2778 8046.1182 C f U U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 67) 0 A u 0 Ap 0 J 0 j 1 w 4 M []0 d 0 XR -7989.5605 8044.6816 m -8017.0996 8044.6816 L -8017.0996 8072.2207 L -7989.5605 8072.2207 L -7989.5605 8044.6816 L n 0 O 0 0.55 1 0.12 k -8003.8594 8062.959 m -8003.8594 8072.5967 L -8002.7339 8072.5967 L -8002.7339 8062.959 L -8003.8594 8062.959 L f 0 0.55 1 0.3 k -8007.5229 8058.4727 m -8006.4092 8056.752 -8002.9805 8055.0537 -7998.5962 8055.0537 c -7994.2148 8055.0537 -7990.7134 8056.7031 -7989.6714 8058.4707 C -7989.6714 8058.4707 L -7990.7134 8060.1973 -7994.2148 8061.8945 -7998.5962 8061.8945 c -8002.9751 8061.8945 -8006.4238 8060.1582 -8007.5229 8058.4727 C f U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 69) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -7989.5605 8045.0576 m -8017.0996 8045.0576 L -8017.0996 8072.5967 L -7989.5605 8072.5967 L -7989.5605 8045.0576 L n 0 O 0 0.55 1 0.3 k -8007.5229 8058.8486 m -8006.4092 8057.1279 -8002.9805 8055.4297 -7998.5962 8055.4297 c -7994.2148 8055.4297 -7990.7134 8057.0791 -7989.6714 8058.8467 C -7989.6714 8058.8467 L -7990.7134 8060.5732 -7994.2148 8062.2705 -7998.5962 8062.2705 c -8002.9751 8062.2705 -8006.4238 8060.5342 -8007.5229 8058.8486 C f U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 8) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -8016.0518 8069.9092 m -7908.895 8069.9092 L -7908.895 8055.7822 L -8016.0518 8055.7822 L -8016.0518 8069.9092 L n u 0 O 0 0 0 1 k -8014.3828 8069.2197 m -8014.9531 8071.5967 -8014.918 8067.6006 V -8015.1475 8064.3984 L -8015.7163 8062.0518 L -8015.5498 8059.7197 L -8014.0498 8059.0518 -7997.3828 8057.7197 V -7990.7163 8056.3857 -7981.7163 8056.3857 V -7916.4932 8057.0732 -7911.5908 8058.4814 v -7952.4878 8056.4717 -7955.0684 8057.1084 v -7915.9565 8058.7568 -7912.9541 8060.0283 v -7950.8896 8058.1436 -7954.2671 8059.7744 v -7919.3491 8061.5068 -7915.1211 8063.1279 v -7921.8213 8062.4795 -7923.6123 8062.6787 v -7920.4893 8063.167 l -7925.519 8063.0986 l -7928.4214 8062.7256 l -7920.5518 8063.8389 -7920.0029 8064.4053 v -7916.415 8063.7275 -7930.6182 8063.9814 v -7964.2173 8060.0518 -8014.3828 8069.2197 V f /BBAccumRotation (5.805971) XT 0 R 0 0 0 0.5 K 0.025 w -8016.0498 8058.7197 m -7995.7671 8056.8916 -7976.0723 8055.8174 v -7933.251 8056.0986 -7928.6733 8056.4971 v -7916.2627 8056.6279 -7908.8955 8057.624 v S /BBAccumRotation (5.805971) XT 0 0 0 1 K -7953.9365 8056.0049 m -7957.3955 8055.624 -7983.3604 8055.876 Y -7993.7271 8055.7568 -8016.0498 8058.7197 Y S /BBAccumRotation (5.805971) XT -7953.0869 8059.2607 m -7922.4604 8060.1787 -7915.7603 8060.8281 v S /BBAccumRotation (5.805971) XT 0 0 0 0.5 K -7961.7197 8063.8008 m -7926.4702 8065.2139 -7923.5054 8065.7373 v S /BBAccumRotation (5.805971) XT U U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 83) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -8016.0996 8071.5313 m -7802.5005 8071.5313 L -7802.5005 8063.7305 L -8016.0996 8063.7305 L -8016.0996 8071.5313 L n 0 O 0 0 0 1 k -8016.0996 8067.6318 m -8006.0854 8070.124 -7999.2871 8071.4717 -7987.3003 8071.5313 c -7974.3179 8071.5967 -7909.2998 8071.5313 y -7844.2813 8071.5967 -7831.2998 8071.5313 v -7819.3125 8071.4717 -7812.5151 8070.124 -7802.5005 8067.6318 C -7812.5151 8065.1396 -7819.3125 8063.792 -7831.2998 8063.7305 c -7844.2813 8063.666 -7909.2998 8063.7305 y -7974.3179 8063.666 -7987.3003 8063.7305 v -7999.2871 8063.792 -8006.0854 8065.1396 -8016.0996 8067.6318 C f U %AI8_EndBrushPattern %AI5_End_NonPrinting-- %AI5_Begin_NonPrinting Np %AI8_BeginPluginObject (Adobe Brush Manager Order) (Adobe Brush Manager Order) ( Adobe Calligraphic Brush Tool/ 6 pt Flat / Adobe Calligraphic) - ( Brush Tool/ 10 pt Oval/ Adobe Calligraphic Brush Tool/ 12 pt ) - (Oval / Adobe Calligraphic Brush Tool/ 20 pt Oval/ Adobe Callig) - (raphic Brush Tool/ 25 pt Round / Adobe Calligraphic Brush Tool) - (/ 50 pt Flat/ Adobe Scatter Brush Tool/ Dog Tracks/ Adobe Scat) - (ter Brush Tool/ Fall Leaf/ Adobe Scatter Brush Tool/ Ladybug/ ) - (Adobe Scatter Brush Tool/ Push Pin/ Adobe Scatter Brush Tool/ ) - (Strawberry/ Adobe Scatter Brush Tool/ Twinkle Star / Adobe Art) - (OnPath Brush Tool/ Marker/ Adobe ArtOnPath Brush Tool/ Tapered) - ( Stroke/ Adobe ArtOnPath Brush Tool/ Arrow/ Adobe ArtOnPath Br) - (ush Tool/ Paintbrush/ Adobe ArtOnPath Brush Tool/ Type/ Adobe ) - (PatternOnPath Brush Tool/ Double Lines/ Adobe PatternOnPath Br) - (ush Tool/ Laurel/ Adobe PatternOnPath Brush Tool/ Rope /) . %AI8_EndPluginObject %AI5_End_NonPrinting-- %AI5_Begin_NonPrinting Np %AI8_BeginPluginObject (Adobe Calligraphic Brush Tool) (10 pt Oval) (1 1 19 15 15 130 130 2 0 0 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe Calligraphic Brush Tool) (12 pt Oval ) (1 7 17 45 45 0 0 2 0 0 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe Calligraphic Brush Tool) (20 pt Oval) (1 20 20 20 100 40 80 0 2 1 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe Calligraphic Brush Tool) (25 pt Round ) (1 10 40 100 100 0 0 2 0 0 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe Calligraphic Brush Tool) (50 pt Flat) (1 40 60 0 0 44 44 0 0 0 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe Calligraphic Brush Tool) (6 pt Flat ) (1 4 8 10 10 90 90 2 0 0 0) . %AI8_EndPluginObject %AI5_End_NonPrinting-- %AI5_Begin_NonPrinting Np %AI8_BeginPluginObject (Adobe ArtOnPath Brush Tool) (Arrow) (1 / New Pattern 45/ / / / / 5 0.898039 0 0 / 2 0 1 0 1 0 0 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe ArtOnPath Brush Tool) (Marker) (1 / New Pattern 8/ / / / / 0 0 / 1 1 1 0 1 0 0 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe ArtOnPath Brush Tool) (Paintbrush) (1 / New Pattern 5/ / / / / 1 0.5 0.85 1 0.45 / 0 0 1 0 1 0 0 ) - (0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe ArtOnPath Brush Tool) (Tapered Stroke) (1 / New Pattern 83/ / / / / 1 0 0 0 1 / 1 1 1 0 1 0 0 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe ArtOnPath Brush Tool) (Type) (1 / New Pattern 50/ / / / / 1 0.952941 0.94902 0.196078 0.0745) - (098 / 1 0 1 0 1 0 0 0) . %AI8_EndPluginObject %AI5_End_NonPrinting-- %AI5_Begin_NonPrinting Np %AI8_BeginPluginObject (Adobe PatternOnPath Brush Tool) (Double Lines) (1 / New Pattern 62/ New Pattern 63/ New Pattern 64/ / / 1 1 0.) - (14 0.09 0 / 1 0 1 0 1 0 0 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe PatternOnPath Brush Tool) (Laurel) (1 / New Pattern 65/ New Pattern 42/ New Pattern 67/ / New Patt) - (ern 69/ 1 0 0.55 1 0.3 / 1 0 1 0 1 0 0 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe PatternOnPath Brush Tool) (Rope ) (1 / New Pattern 1/ / / New Pattern 3/ New Pattern 6/ 5 0 0 0 /) - ( 1 0 1 0 1 0 0 0) . %AI8_EndPluginObject %AI5_End_NonPrinting-- %AI5_Begin_NonPrinting Np %AI8_BeginPluginObject (Adobe Scatter Brush Tool) (Dog Tracks) (1 /New Pattern 41/ 1 0 0 0 1 / 0 1 1 0 1 1 0 0 0 0 -90 -90 0 1) - ( 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe Scatter Brush Tool) (Fall Leaf) (1 /New Pattern 34/ 1 0.0745 0.9 0.9019 0.18 / 0 0.602793 1 1 0) - (.1 1 1 -1 1 1 -180 180 1 0 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe Scatter Brush Tool) (Ladybug) (1 /New Pattern 10/ 5 0.898039 0 0 / 0 1 1 0 0.803911 1.2 1 -1.) - (55 1.55 1 -180 180 1 0 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe Scatter Brush Tool) (Push Pin) (1 /New Pattern 36/ 1 0.025 0.1 0.475 0 / 0 1 1 0 0.401676 1 1 ) - (-1.06145 1.06 1 -180 180 1 0 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe Scatter Brush Tool) (Strawberry) (1 /New Pattern 37/ 1 0 0 0 1 / 0 0.803911 1 1 0.803911 1 1 -0.) - (5 0.5 1 -75 75.419 1 0 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe Scatter Brush Tool) (Twinkle Star ) (1 /New Pattern 2/ 0 1 / 1 0.5 1 1 0.25 1 1 -0.5 0.5 1 0 0 0 0 ) - (0) . %AI8_EndPluginObject %AI5_End_NonPrinting-- %AI5_BeginPalette 0 0 Pb 1 1 1 1 ([Registration]) 0 Xs ([Registration]) Pc 0 0 0 0 k (C=0 M=0 Y=0 K=0) Pc 0 0 0 1 k (C=0 M=0 Y=0 K=100) Pc 0 0.1 1 0 k (C=0 M=10 Y=100 K=0) Pc 0 0.5 0 0 k (C=0 M=50 Y=0 K=0) Pc 0 0.5 1 0 k (C=0 M=50 Y=100 K=0) Pc 1 0.55 1 0 k (C=100 M=55 Y=100 K=0) Pc 1 0.9 0.1 0 k (C=100 M=90 Y=10 K=0) Pc 0.15 1 1 0 k (C=15 M=100 Y=100 K=0) Pc 0.45 0.9 0 0 k (C=45 M=90 Y=0 K=0) Pc 0.5 0.4 0.3 0 k (C=50 M=40 Y=30 K=0) Pc 0.5 0.85 1 0 k (C=50 M=85 Y=100 K=0) Pc 0.75 0.05 1 0 k (C=75 M=5 Y=100 K=0) Pc 0.75 0.9 0 0 k (C=75 M=90 Y=0 K=0) Pc 0.8 0.05 0 0 k (C=80 M=5 Y=0 K=0) Pc Bb 2 (Black, White) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (Black, White) Pc Bb 2 (Chrome) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (Chrome) Pc Bb 2 (Rainbow) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (Rainbow) Pc Bb 0 0 0 0 Bh 2 (Yellow & Orange Radial) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (Yellow & Orange Radial) Pc (Brick) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Brick) Pc (Confetti) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Confetti) Pc (Leaves - Fall ) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Leaves - Fall ) Pc (Stripes) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Stripes) Pc PB %AI5_EndPalette %%EndSetup %AI5_BeginLayer 1 1 1 1 0 0 1 0 79 128 255 0 50 Lb (Layer 1) Ln 0 A 1 Ap 0 R 0 0 0 1 K 0 J 0 j 0.5 w 4 M []0 d 0 XR 1.65039 -30.082 m 1.65039 -107.5005 64.2109 -170.2607 141.3828 -170.2607 c 218.5547 -170.2607 281.1152 -107.5005 281.1152 -30.082 c 281.1152 47.3364 218.5547 110.0967 141.3828 110.0967 c 64.2109 110.0967 1.65039 47.3364 1.65039 -30.082 c s 281.1152 -30.082 m 281.1152 -45.4795 218.5547 -57.9609 141.3828 -57.9609 c 64.2109 -57.9609 1.65039 -45.4795 1.65039 -30.082 c S [3 3 ]0 d 73.9961 -54.5142 m 73.3154 -46.5801 72.9604 -38.416 72.9604 -30.082 c 72.9604 -13.7324 74.3267 1.96338 76.8374 16.5527 c S 0 Ap 0 O 0 0 0 1 k 1 w []0 d 73.5713 -49.5581 m 75.2725 -48.313 l 75.3184 -48.3706 l 74.4067 -51.397 l 74.27 -52.436 74.1333 -53.4751 73.9961 -54.5142 c 73.6846 -53.5137 73.3726 -52.5132 73.061 -51.5127 c 71.6475 -48.6855 l 71.6729 -48.6221 l 73.5713 -49.5581 l f 1 Ap 0 R 0 0 0 1 K 0.5 w [3 3 ]0 d 203.2236 -90.145 m 205.8076 -78.9985 207.6943 -67.043 208.7695 -54.5142 c S 0 Ap 0 O 0 0 0 1 k 1 w []0 d 208.3438 -59.4702 m 206.4561 -60.4072 l 206.4199 -60.3428 l 207.834 -57.5156 l 208.1455 -56.5151 208.457 -55.5146 208.7695 -54.5142 c 208.9063 -55.5532 209.043 -56.5923 209.1797 -57.6313 c 210.0908 -60.6577 l 210.0557 -60.7163 l 208.3438 -59.4702 l f 1 Ap 0 R 0 0 0 1 K 0.5 w [3 3 ]0 d 132.7236 -58.333 m 132.6206 -49.2075 132.5664 -39.7593 132.5664 -30.082 c 132.5664 -6.75684 132.8809 15.2373 133.437 34.5859 c S 0 Ap 0 O 0 0 0 1 k 1 w []0 d 132.5942 -52.9297 m 134.3833 -51.814 l 134.4248 -51.875 l 133.2915 -54.8252 l 133.0776 -55.8511 132.8643 -56.8774 132.6504 -57.9033 c 132.4141 -56.8823 132.1772 -55.8613 131.9404 -54.8403 c 130.7407 -51.9165 l 130.7705 -51.855 l 132.5942 -52.9297 l f 1 Ap 0 R 0 0 0 1 K 0.5 w [3 3 ]0 d 149.041 -123.3916 m 150.0586 -105.3013 150.7847 -82.9971 151.1025 -58.333 c S 0 Ap 0 O 0 0 0 1 k 1 w []0 d 151.0381 -63.3066 m 149.2227 -64.3789 l 149.1831 -64.3169 l 150.3872 -61.3945 l 150.6255 -60.374 150.8638 -59.3535 151.1025 -58.333 c 151.3145 -59.3594 151.5264 -60.3857 151.7383 -61.4121 c 152.8672 -64.3643 l 152.8354 -64.4253 l 151.0381 -63.3066 l f 1 Ap 0 R 0 0 0 1 K 0.5 w [3 3 ]0 d 46.3086 -50.2456 m 48.0527 -67.916 52.0557 -84.521 57.8765 -99.4175 c S 0 Ap 0 O 0 0 0 1 k 1 w []0 d 46.8477 -55.7026 m 45.1621 -56.9697 l 45.1157 -56.9126 l 45.9883 -53.875 l 46.1118 -52.8345 46.2349 -51.7935 46.3589 -50.7529 c 46.6836 -51.749 47.0078 -52.7456 47.3325 -53.7422 c 48.7822 -56.5508 l 48.7578 -56.6147 l 46.8477 -55.7026 l f 1 Ap 0 R 0 0 0 1 K 0.5 w [3 3 ]0 d 213.7168 62.1602 m 228.4912 37.5093 237.4434 5.23926 237.4434 -30.082 c 237.4434 -36.9287 237.1074 -43.6611 236.457 -50.2456 c S 0 Ap 0 O 0 0 0 1 k 1 w []0 d 236.9951 -45.7964 m 238.8955 -44.8833 l 238.9307 -44.9482 l 237.4805 -47.7568 l 237.1563 -48.7534 236.8311 -49.75 236.5068 -50.7461 c 236.3828 -49.7056 236.2598 -48.6646 236.1357 -47.624 c 235.2637 -44.5859 l 235.3008 -44.5283 l 236.9951 -45.7964 l f 1 Ap 0 R 0 0 0 1 K 0.5 w [3 3 ]0 d 27.624 -46.2749 m 27.1348 -40.9619 26.8833 -35.5586 26.8833 -30.082 c 26.8833 1.07373 35.0229 29.856 48.792 53.1289 c S 0 Ap 0 O 0 0 0 1 k 1 w []0 d 27.3008 -41.1309 m 28.9941 -39.875 l 29.0405 -39.9321 l 28.1479 -42.9644 l 28.0181 -44.0044 27.8877 -45.0439 27.7568 -46.084 c 27.439 -45.0854 27.1211 -44.0869 26.8027 -43.0884 c 25.3716 -40.27 l 25.3965 -40.2065 l 27.3008 -41.1309 l f 1 Ap 0 R 0 0 0 1 K 0.5 w [3 3 ]0 d 211.8789 -141.3818 m 235.4023 -118.854 251.5781 -84.9604 255.1416 -46.2749 c S 0 Ap 0 O 0 0 0 1 k 1 w []0 d 254.6855 -51.228 m 252.791 -52.1533 l 252.7559 -52.0889 l 254.1875 -49.2705 l 254.5059 -48.272 254.8232 -47.2734 255.1416 -46.2749 c 255.2725 -47.3145 255.4023 -48.3545 255.5332 -49.3945 c 256.4248 -52.4268 l 256.3887 -52.4849 l 254.6855 -51.228 l f 1 Ap 0 R 0 0 0 1 K 0.5 w [3 3 ]0 d 103.0664 -56.5005 m 105.3403 -96.9932 112.7441 -131.3076 122.894 -151.3486 c S 0 Ap 0 O 0 0 0 1 k 1 w []0 d 103.3457 -61.4668 m 101.6084 -62.6611 l 101.564 -62.6025 l 102.5645 -59.604 l 102.7314 -58.5693 102.8989 -57.5352 103.0664 -56.5005 c 103.3486 -57.5098 103.6309 -58.519 103.9131 -59.5283 c 105.2427 -62.3955 l 105.2158 -62.4585 l 103.3457 -61.4668 l f 1 Ap 0 R 0 0 0 1 K 0.5 w [3 3 ]0 d 160.9014 89.0835 m 172.6255 64.3555 180.4316 20.2324 180.4316 -30.082 c 180.4316 -39 %%EndDocument @endspecial 99 x(a)h(a)f(a)h(a)f(a)g(a)h(a)f(a)h(a)f(a)h(a)f(a)g(a)h (a)f(a)h(a)f(a)h(a)f(a)g(a)h(a)f(a)h(a)f(a)h(a)f(a)g(a)h(a)f(a)h(a)f(a) h(a)f(a)g(a)h(a)f(a)h(a)f(a)g(a)h(a)f(a)h(a)257 1852 y(a)g(a)f(a)g(a)g(a)g(a)g(a)g(a)h(a)f(a)g(a)g(a)g(a)g(a)g(a)h(a)f(a)g (a)g(a)g(a)g(a)g(a)h(a)f(a)g(a)g(a)g(a)g(a)g(a)h(a)f(a)g(a)g(a)g(a)g(a) g(a)g(a)h(a)f(a)g(a)g(a)g(a.)963 2628 y(1)p eop end %%Trailer userdict /end-hook known{end-hook}if %%EOF dvipsk_TexLive-2009-stripped/testdata/dvipstst.tex0000644000175000017500000001063011372532227022311 0ustar uwabamiuwabami% % This file is a quick and simple, gross test of dvips. It only tests % the most basic things. % % To run: % remove the file mtest.ps if it exists % tex test % dvips test -o test.ps (ignore the error) % copy test.ps mtest.ps % dvips test % and print. % % First, paper size % \newif\ifafour \afourtrue % % Next, big rules. % \nopagenumbers\raggedbottom \ifafour \special{papersize=210mm,297mm} \hsize=7.7677truein\vsize=11.1929truein \else \special{papersize=8.5in,11in} % the default anyway, so not necessary \hsize=8truein\vsize=10.5truein \fi \hoffset=-0.75truein\voffset=-0.75truein \newdimen\ovsize \ovsize=\vsize \newdimen\ohsize \ohsize=\hsize \vbox to\vsize{\hrule height 6pt\advance\vsize by -12pt \hbox{\vrule width 6pt\vbox to\vsize{\advance\hsize by -12pt % % Now, PostScript fonts. % \bigskip \font\norm=ptmr at 20truept \centerline{\norm DVIPS: A \TeX\ Driver For PostScript} \font\foolish=ptmri at 100truept\ \bigskip \centerline{\foolish g} \bigskip % % Next, literal graphics. It's not supposed to look pretty. % \vskip1truein \centerline{\special{" 0 36 translate .05 .099 .95 { 27.4 0 translate gsave 0 0 moveto dup 90 mul rotate -10 -10 rmoveto 20 0 rlineto 0 20 rlineto -20 0 rlineto closepath gsave dup setgray fill grestore 1 exch sub setgray stroke grestore 27.4 0 translate } for }\hskip 7.77truein} % % Next, some alignment problems that are not done correctly by some % dvi2ps programs. % $$\sqrt{\sqrt{{a\Longrightarrow b\longrightarrow c}\over \vbox{\hsize=3in\noindent the phase of the moon multiplied by the number of angels that can dance on the head of a pin while the rich man threads the needle divided by $\pi$ or some other transcendental number}}}$$ \bigskip % % Now, included epsf graphics. We include this document % recursively. Of course, things will be ugly. % \input epsf \epsfxsize=0.5\ohsize % % If you go to a4 paper, change the following supplied bounding box % appropriately. % \ifafour \line{\hfil\epsffile[18 18 577 814]{mtest.ps}\hfil \else \line{\hfil\epsffile[18 18 594 774]{mtest.ps}\hfil \fi \vbox to 0.5\ovsize{\hsize=3.3truein\parindent=10pt\parskip=0pt plus 1fil To run this test, remove a file called mtest.ps if it exists. Then, run \TeX\ over test.tex, run dvips over test.dvi, saving the output in a file test.ps. Copy test.ps to mtest.ps. Run dvips over test.dvi again, this time printing or saving the output, as you choose. (Including the document too many times inside itself will overflow the virtual memory capacities of most printers.) Some things to check on this page. First, the large rules surrounding the page should be exactly one quarter inch from each border (assuming a 8.5 by 11 page; for an a4 page, change the {\tt\char92 afourfalse} to {\tt\char92 afourtrue} on line 16.) You should see a title at the top, and a large italic g under that. Then, there should be a centered row of ten boxes, going from dark to light gray, rotating slowly. In the `equation' that follows, check the upper left corner of the radical signs for alignment. Also check the right arrows. In the recursively included page to the left, note how bad the bitmapped fonts look (they are the ones under the radical, and indeed this text itself.) The thin rules may disappear altogether. This points out the resolution dependence of dvips output; this is an unfortunate necessity of using bitmapped fonts. The PostScript fonts, on the other hand, should scale fine. Finally, at the bottom of the page, you will see some tests of the accents in the PostScript fonts. Pay careful attention to the word na\"\i ve; there should be an umlaut over a dotless i. The text should read ``Ich wei\ss\ tats\"achlich nicht mehr als das. D\ae monic souffl\'es have no r\^ole in na\"\i ve \oe uvres. ---\AE sop's \OE uvres.'' }\hfil} % % Finally, PostScript fonts again; let's test some accents. % \bigskip \font\foo=ptmbi at 16truept \centerline{\vbox{\advance\hsize by -2in {\foo\noindent Ich wei\ss\ tats\"achlich nicht mehr als das. D\ae monic souffl\'es have no r\^ole in na\"\i ve \oe uvres. ---\AE sop's \OE uvres.}}} \bigskip}\vrule width 6pt}\hrule height 6pt} % % We also want to test bop-hook stuff. % \special{! userdict begin /bop-hook{gsave 200 30 translate 65 rotate /Times-Roman findfont 260 scalefont setfont 0 0 moveto 0.8 setgray (DVIPS) show grestore}def end} % \bye %%% Local Variables: %%% mode: plain-tex %%% TeX-master: t %%% End: dvipsk_TexLive-2009-stripped/testdata/cmsy10.tfm0000644000175000017500000000214411372532227021534 0ustar uwabamiuwabami,!",š TeX math symbolsCMSYê ¨B ¨d ¨B ¨ ¨ ¨ ¨ ¨ ¨ ¨*ÝBB S S » » » » » » ! u † †*†*† † †*!*!ÜÜ*!*Ü*Ü S*!*!ÜÜ*!*Ü*Ü 0*0††(Ý(ÝÜ! Ð Ð0çÐÐ Ð ÐÐ"ÀÀ ÀÀ  À-À1É&À ÀÉAÀ À+À$À=!À À)#É'ÀÀ! ÀEÀ1À))À)À9É)À%ÐÐîîîîîîîîîîîîîÜ%À%ÀÝ4 » »ÝÝÝÝ Ú Ú Ú ÚffqÈ8媭sulªq˶V¶Ýã „’ °^ Ç Íõ h ‚K ª­ ±‚ Ø0  ! iª þ Ž; ˜z  0ó W  qÊ ¼â ÆŠ  » UX ƒ% `8æÍö6ã£ÖÞ¸ãŽskƒqȺޠ%ã UV ,ð îî r ÿýÞ¸ÿÿsÿÿkƒÿÿqÈÿÿºÞ %ãŽUVŽ:ö,ðpr\*'‹;+qÈ|’îòòè.`3.EfPÈnZ–ÂÇWÅ[–ôž€0€€0€€0€€0€€0€€0€€0€qÈãUXÇ 8誰x㎠ÒúLº† ù¨„x›5ÎhŸJffôš-€ÌÍ&=p(ödvipsk_TexLive-2009-stripped/testdata/config.ps0000644000175000017500000000132311372532227021517 0ustar uwabamiuwabamim 1000000 D 600 X 600 Y 600 M ljfour R 300 600 O 0pt,0pt Z @ A4size 210mm 297mm @+ %%PaperSize: A4 @ letterSize 8.5in 11in @ letter 8.5in 11in @+ %%BeginPaperSize: Letter @+ letter @+ %%EndPaperSize @ legal 8.5in 14in @+ ! %%DocumentPaperSizes: Legal @+ %%BeginPaperSize: Legal @+ legal @+ %%EndPaperSize @ ledger 17in 11in @+ ! %%DocumentPaperSizes: Ledger @+ %%BeginPaperSize: Ledger @+ ledger @+ %%EndPaperSize @ tabloid 11in 17in @+ ! %%DocumentPaperSizes: Tabloid @+ %%BeginPaperSize: Tabloid @+ 11x17 @+ %%EndPaperSize @ A4 210mm 297mm @+ ! %%DocumentPaperSizes: A4 @+ %%BeginPaperSize: A4 @+ a4 @+ %%EndPaperSize @ A3 297mm 420mm @+ ! %%DocumentPaperSizes: A3 @+ %%BeginPaperSize: A3 @+ a3 @+ %%EndPaperSize dvipsk_TexLive-2009-stripped/testdata/special.pro0000644000175000017500000000746211372532227022062 0ustar uwabamiuwabami%! 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 0 N /rwiSeen false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{ /CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{ 10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict /md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end 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 0 setgray} N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin /magscale true 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 count /ocount X /dcount countdictstack N}N /@setspecial {CLIP 1 eq{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 rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath }N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{ end}repeat grestore 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 dvipsk_TexLive-2009-stripped/testdata/pfbincl.eps0000644000175000017500000077750011372532227022055 0ustar uwabamiuwabami%!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(R) 8.0 %%AI8_CreatorVersion: 12.0.1 %%For: (len) (ams) %%Title: (condensation-of-zeta-functions.eps) %%CreationDate: 4/25/07 1:33 PM %%BoundingBox: 1 -186 347 124 %%HiResBoundingBox: 1.40039 -185.0195 346.4609 123.5684 %%DocumentProcessColors: Black %%DocumentFonts: EuclidSymbol %%+ Times-Roman %%+ TimesNewRomanPSMT %%DocumentSuppliedFonts: EuclidSymbol %%+ Times-Roman %%+ TimesNewRomanPSMT %%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0 %%+ procset Adobe_screens_AI5 1.0 0 %%+ procset Adobe_typography_AI5 1.0 1 %%+ procset AGM_Gradient 1.0 0 %%+ procset Adobe_ColorImage_AI6 1.3 0 %%+ procset Adobe_Illustrator_AI5 1.3 0 %%+ procset Adobe_pattern_AI5 1.0 0 %%+ procset Adobe_cshow 2.0 8 %%+ procset Adobe_shading_AI8 1.0 0 %AI5_FileFormat 4.0 %AI3_ColorUsage: Color %AI3_IncludePlacedImages %AI7_ImageSettings: 1 %%CMYKCustomColor: 1 1 1 1 ([Registration]) %%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) %%+ Options: 1 16 0 1 1 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 2 3 4 %%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 -1 -1 () %AI3_TemplateBox: 174.4004 -118.9033 174.4004 -118.9033 %AI3_TileBox: -114.0996 -478.4033 461.9004 274.7168 %AI3_DocumentPreview: Header %AI5_ArtSize: 612 792 %AI5_RulerUnits: 0 %AI5_ArtFlags: 0 0 0 1 0 0 0 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 2 %AI8_OpenToView: -198.0996 457.5967 1 975 750 18 1 1 72 73 0 0 %AI5_OpenViewLayers: 67 %%PageOrigin:-114.0996 -475.4033 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %CLEANEPS: Wed Aug 29 14:21:48 EDT 2007 for ltd (cleaneps v2.2.3) %CLEANEPS_BINARY_WARNING: yes %%EndComments %%BeginProlog %%BeginResource: procset Adobe_level2_AI5 1.2 0 %%Title: (Adobe Illustrator (R) Version 5.0 Level 2 Emulation) %%Version: 1.2 0 %%CreationDate: (04/10/93) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) userdict /Adobe_level2_AI5 26 dict dup begin put /packedarray where not { userdict begin /packedarray { array astore readonly } bind def /setpacking /pop load def /currentpacking false def end 0 } if pop userdict /defaultpacking currentpacking put true setpacking /initialize { Adobe_level2_AI5 begin } bind def /terminate { currentdict Adobe_level2_AI5 eq { end } if } bind def mark /setcustomcolor where not { /findcmykcustomcolor { (AI8_CMYK_CustomColor) 6 packedarray } bind def /findrgbcustomcolor { (AI8_RGB_CustomColor) 5 packedarray } bind def /setcustomcolor { exch aload pop dup (AI8_CMYK_CustomColor) eq { pop pop 4 { 4 index mul 4 1 roll } repeat 5 -1 roll pop setcmykcolor } { dup (AI8_RGB_CustomColor) eq { pop pop 3 { 1 exch sub 3 index mul 1 exch sub 3 1 roll } repeat 4 -1 roll pop setrgbcolor } { pop 4 { 4 index mul 4 1 roll } repeat 5 -1 roll pop setcmykcolor } ifelse } ifelse } def } if /setAIseparationgray { false setoverprint 0 setgray /setseparationgray where{ pop setseparationgray }{ /setcolorspace where{ pop [/Separation (All) /DeviceCMYK {dup dup dup}] setcolorspace 1 exch sub setcolor }{ setgray }ifelse }ifelse } def /gt38? mark {version cvr cvx exec} stopped {cleartomark true} {38 gt exch pop} ifelse def userdict /deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt put userdict /level2? systemdict /languagelevel known dup { pop systemdict /languagelevel get 2 ge } if put /level2ScreenFreq { begin 60 HalftoneType 1 eq { pop Frequency } if HalftoneType 2 eq { pop GrayFrequency } if HalftoneType 5 eq { pop Default level2ScreenFreq } if end } bind def userdict /currentScreenFreq level2? {currenthalftone level2ScreenFreq} {currentscreen pop pop} ifelse put level2? not { /setcmykcolor where not { /setcmykcolor { exch .11 mul add exch .59 mul add exch .3 mul add 1 exch sub setgray } def } if /currentcmykcolor where not { /currentcmykcolor { 0 0 0 1 currentgray sub } def } if /setoverprint where not { /setoverprint /pop load def } if /selectfont where not { /selectfont { exch findfont exch dup type /arraytype eq { makefont } { scalefont } ifelse setfont } bind def } if /cshow where not { /cshow { [ 0 0 5 -1 roll aload pop ] cvx bind forall } bind def } if } if cleartomark /anyColor? { add add add 0 ne } bind def /testColor { gsave setcmykcolor currentcmykcolor grestore } bind def /testCMYKColorThrough { testColor anyColor? } bind def userdict /composite? 1 0 0 0 testCMYKColorThrough 0 1 0 0 testCMYKColorThrough 0 0 1 0 testCMYKColorThrough 0 0 0 1 testCMYKColorThrough and and and put composite? not { userdict begin gsave /cyan? 1 0 0 0 testCMYKColorThrough def /magenta? 0 1 0 0 testCMYKColorThrough def /yellow? 0 0 1 0 testCMYKColorThrough def /black? 0 0 0 1 testCMYKColorThrough def grestore /isCMYKSep? cyan? magenta? yellow? black? or or or def /customColor? isCMYKSep? not def end } if end defaultpacking setpacking %%EndResource %%BeginResource: procset Adobe_screens_AI5 1.2 0 %%Title: (Adobe Illustrator (R) Version 5.0 Custom Halftone Screens ProcSet) %%Version: 1.2 0 %%CreationDate: (03/24/93) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) userdict /defaultpacking currentpacking put true setpacking systemdict begin userdict /Adobe_screens_AI5 15 dict dup begin put /initialize { Adobe_screens_AI5 begin /screenid deviceDPI 600 gt composite? not or { -1 } { deviceDPI currentScreenFreq dup dup 60 ge exch 150 le and deviceDPI 300 le and { pop 60 } if div 1.41421 div 0.5 add cvi } ifelse def 2 screenid eq { /customsize 16 def /customdata /customdata2 def setcustomscreen } if 3 screenid eq { /customsize 24 def /customdata /customdata3 def setcustomscreen } if 4 screenid eq { /customsize 16 def /customdata /customdata4 def setcustomscreen } if 5 screenid eq { /customsize 20 def /customdata /customdata5 def setcustomscreen } if 6 screenid eq { /customsize 24 def /customdata /customdata6 def setcustomscreen } if 7 screenid eq { /customsize 28 def /customdata /customdata7 def setcustomscreen } if 8 screenid eq { /customsize 16 def /customdata /customdata8 def setcustomscreen } if } def /terminate { currentdict Adobe_screens_AI5 eq { end } if } def /setcustomscreen { deviceDPI customsize div 0 { 1 add 2 div customsize mul cvi exch 1 add 2 div customsize mul cvi exch customsize mul add customdata load exch get 256 div } setscreen } def /customdata2 28 28 mul string def currentfile customdata2 readhexstring 4180E8694988E2634382EA6B4B8AE061A01939C8A81737C2A21B3BCAAA1636C0 F8795998F6775796FA7B5B9AF57656952ED8B80727D6B60F2FDABA0626D5B50E 4E8DE6674786EE6F4F8EE5664685ED6EAD1434C6A61F3FCEAE1232C5A51E3ECD F3745493FE7F5F9EF1725291FD7E5E9D24D3B30C2CDEBE0222D1B10A2ADDBD04 4483EB6C4C8BE1624281E96A4A89E364A31C3CCBAB1535C1A11A3AC9A91838C3 FB7C5C9BF4755594F97A5A99F778589730DBBB0525D4B40D2DD9B90828D7B710 508FE4654584EC6D4D8CE7684887EF70AF1131C4A41D3DCCAC1333C7A72040CF F0715190FC7D5D9CF2735392FF80609F21D0B00929DCBC0323D2B20B2BDFBF01 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 pop pop /customdata3 28 28 mul string def currentfile customdata3 readhexstring 011DC7F5E73D0421CBF3E43A021EC8F6E83E0522CCF2E43A2B648BC4A0762F68 8AC39E732C658CC5A177306989C29D72D5B6521A6192D9B55219608FD6B6531B 6193DAB451185F8FFCEE440C28D2FCED430B27D1FDEF450C29D3FBEC420A26D0 BEA77D366F83BCA77C356E87BFA87E377082BBA67B346D86145B99E0AE4A1259 98DFB14E155C9AE1AD4A115897DEB04D0623CDF4E63C0420CAF8EA400723CDF4 E53B031FC9F7E93F316988C19F752E678EC6A378326A88C09F742D668DC6A278 DBB350175E91D8B8551C6395DCB24F165D90D7B7541C6294FAEC420925CFFFF1 470E2BD5F9EB410824CEFEF0460D2AD4BAA57A336C85BEAA80397180B9A47933 6B84BDA97F387181105797DDAF4C145A9CE3AB480F5696DDAE4B13599BE2AC49 021EC8F6E83E0522CCF2E43A011DC7F5E73D0421CBF3E43A2C658CC5A1773069 89C29D722B648BC4A0762F688AC39E73D6B6531B6193DAB451185F8FD5B6521A 6192D9B55219608FFDEF450C29D3FBEC420A26D0FCEE440C28D2FCED430B27D1 BFA87E377082BBA67B346D86BEA77D366F83BCA77C356E87155C9AE1AD4A1158 97DEB04D145B99E0AE4A125998DFB14E0723CDF4E53B031FC9F7E93F0623CDF4 E63C0420CAF8EA40326A88C09F742D668DC6A278316988C19F752E678EC6A378 DCB24F165D90D7B7541C6294DBB350175E91D8B8551C6395F9EB410824CEFEF0 460D2AD4FAEC420925CFFFF1470E2BD5B9A479336B84BDA97F387181BAA57A33 6C85BEAA803971800F5696DDAE4B13599BE2AC49105797DDAF4C145A9CE3AB48 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 pop pop /customdata4 28 28 mul string def currentfile customdata4 readhexstring 1139B8E0FAD2531B133BBAE2F8D05119417180A6AE9A7B4B437382A5AD987949 C08867272F6F92CAC28A66262E6E90C8E8DE5F070F37B6F2EADD5E060E36B5F0 FED6571F173FBEE6FDD5561E163EBDE5AB9E7F4F477786A1A99D7E4E467685A3 2C6C96CEC68E62222A6A95CDC58D64240C34B3F6EED95A020A32B1F5EDDB5C04 143CBBE3F9D1521A123AB9E1FBD3541C447483A4AC997A4A427281A7AF9B7C4C C38B65252D6D91C9C1896828307093CBEBDC5D050D35B4F1E9DF60081038B7F3 FCD4551D153DBCE4FFD758201840BFE7A89C7D4D457584A2AA9F8050487887A0 296994CCC48C63232B6B97CFC78F61210931B0F4ECDA5B030B33B2F7EFD85901 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 pop pop /customdata5 28 28 mul string def currentfile customdata5 readhexstring 010B34C3EBFCF7CE3F16020C35C4EDFBF6CD3E15102552A4D6EADDB5632B1126 54A5D5EADCB3622A3958768499C19E8C7C5E3A59778498C19D8B7B5DC8A99370 47334C7587AFC9AA936F46324B7485AEF1E5BC6B1E0A2351A3D8F2E4BC6A1E09 2351A2D7FFF9D14219050F38C6EFFEF9D04118040E37C6EFE8E0B7662D142856 A8D3E7DFB7652D132856A7D4BF9C8E7F603D5B7A8195BE9A8E7E603C5B798297 314A7389B2CCAD906D442F497289B1CBAC926E4508214FA1DBF4E2B9671B0720 4EA0DAF4E3BA691C030D36C5EDFBF6CD3F16010C34C3ECFDF8CF4017122654A6 D4E9DDB4622A112553A5D6EBDEB5642C3B59788397C09C8B7C5D3A58778599C2 9E8C7D5FCAAB926E46314B7486AFC8AA947048334D7587B0F2E4BB691D082250 A1D8F1E6BD6B1F0A2452A3D9FDF8CF4118030E36C5EEFFFAD1421A050F38C7F0 E6DFB6642C132755A7D3E8E1B8662E152957A8D2BE9A8D7E5F3B5A798296BF9B 8F80613D5C7B80952F487188B1CAAC916D443049728AB3CCAE906C43061F4D9F DAF3E2BA681C07214FA0DBF5E1B8671A00000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 pop pop /customdata6 28 28 mul string def currentfile customdata6 readhexstring 081A44B6E0F2FDECC150250C091B45B6E1F3FCEBC04F240C1D336199C7D8DCD3 A56C37221E33619AC8D7DBD2A46B36214864798091AEB1958C7E694C49657A81 90ADB0948B7D684BB99D8475593C405C7888A1BEBA9E8574583B3F5B7888A0BD E4CBAA712E1215326098CFE8E4CCA9712D1114315F97CEE7F5F1C6552B040719 43B5DFFAF6F0C6542A03061842B4DEF9FFEDC352270E0B1C47B8E3F4FEECC251 260D0A1C46B7E2F4DAD5A76E39232035639CCAD5D9D4A66D38231F34629BC9D6 AF938E806A4E4A677C838FABAE928D7F694D4A667B828FAC3E5A778AA3BFBC9F 8772563A3D597689A2BEBB9F8673573A14305E97D1EAE6CDA76F2B0F132F5D96 D0E9E5CDA8702C10051742B3DDFCF8EEC4522801041641B2DDFBF7EFC5532902 091B45B6E1F3FCEBC04F240C081A44B6E0F2FDECC150250C1E33619AC8D7DBD2 A46B36211D336199C7D8DCD3A56C372249657A8190ADB0948B7D684B48647980 91AEB1958C7E694CBA9E8574583B3F5B7888A0BDB99D8475593C405C7888A1BE E4CCA9712D1114315F97CEE7E4CBAA712E1215326098CFE8F6F0C6542A030618 42B4DEF9F5F1C6552B04071943B5DFFAFEECC251260D0A1C46B7E2F4FFEDC352 270E0B1C47B8E3F4D9D4A66D38231F34629BC9D6DAD5A76E39232035639CCAD5 AE928D7F694D4A667B828FACAF938E806A4E4A677C838FAB3D597689A2BEBB9F 8673573A3E5A778AA3BFBC9F8772563A132F5D96D0E9E5CDA8702C1014305E97 D1EAE6CDA76F2B0F041641B2DDFBF7EFC5532902051742B3DDFCF8EEC4522801 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 pop pop /customdata7 28 28 mul string def currentfile customdata7 readhexstring 01061B44B7E1F5FEFBE6BD4A210C01071B45B8E1F6FDFBE6BC4A200B09132A54 A7D1EAF5EED9B05D331609142B55A8D2EAF4EED9AF5C32161D2D3D6993C1CBE0 CEC59B7140301E2E3D6A93C0CADFCDC49A713F3047576C7B828DA2B6A48F867E 6F5A48576C7C828CA1B6A38F867E6E59BAAA958A78634E4451667A8498ADBAAB 968977624E4350657A8398ADE3D4C99F7539251A273C6892C2D7E4D4C89E7539 241A273B6891C1D6F8F2DDB460371005122A53A7D0ECF9F2DDB360360F051229 53A6D0EBFFFDE8BE4C220D03081D46B9E3F7FFFCE7BD4B210D02071C46B8E2F7 F3F0DBB15E34180B152C56A9D3E8F3EFDAB05D34170A142C55A9D2E9DFCCC69C 7341321F2F3F6B94BFC9DECCC59C7241311F2E3E6A94BFCAB5A38E8780705B49 596D7D808BA0B4A28D877F6F5B48586D7C818BA043506479859AAFBCAC978876 614C424F64798499AEBBAB968977624D19263B6791C3D8E5D6C79D7337231825 3A6690C3D7E5D5C79E74382304112952A5CFEDFAF0DBB25E350E03102851A5CE ECF9F1DCB25F360E01071B45B8E1F6FDFBE6BC4A200B01061B44B7E1F5FEFBE6 BD4A210C09142B55A8D2EAF4EED9AF5C321609132A54A7D1EAF5EED9B05D3316 1E2E3D6A93C0CADFCDC49A713F301D2D3D6993C1CBE0CEC59B71403048576C7C 828CA1B6A38F867E6E5947576C7B828DA2B6A48F867E6F5ABAAB968977624E43 50657A8398ADBAAA958A78634E4451667A8498ADE4D4C89E7539241A273B6891 C1D6E3D4C99F7539251A273C6892C2D7F9F2DDB360360F05122953A6D0EBF8F2 DDB460371005122A53A7D0ECFFFCE7BD4B210D02071C46B8E2F7FFFDE8BE4C22 0D03081D46B9E3F7F3EFDAB05D34170A142C55A9D2E9F3F0DBB15E34180B152C 56A9D3E8DECCC59C7241311F2E3E6A94BFCADFCCC69C7341321F2F3F6B94BFC9 B4A28D877F6F5B48586D7C818BA0B5A38E8780705B49596D7D808BA0424F6479 8499AEBBAB968977624D43506479859AAFBCAC978876614C18253A6690C3D7E5 D5C79E74382319263B6791C3D8E5D6C79D73372303102851A5CEECF9F1DCB25F 360E04112952A5CFEDFAF0DBB25E350E pop pop /customdata8 28 28 mul string def currentfile customdata8 readhexstring 050F2747B6D6EEF8FEF4DCBC4D2D1507111D375F9EC6E0E9EBE6CCA4653D1F13 2939556F8EA8C1D1D3C3AE9475573B2B4961717D808999B1B39B8B867F73634B B8A090827A6A5A42445C6C7C8492A2BAD8C8AA97785232222434546E8DACCADA F0E2CFA768401A0A0C1C365E9DC5E4F2FAF7DFBF50301802040E2646B5D5EDFC FFF5DDBD4E2E160806102848B7D7EFF9EAE7CDA5663E2014121E38609FC7E1E8 D2C2AF9576583C2C2A3A56708FA9C0D0B29A8A878074644C4A62727E818898B0 435B6B7B8593A3BBB9A19183796959412333536D8CADCBDBD9C9AB9677513121 0B1B355D9CC4E5F3F1E3CEA6673F1909030D2545B4D4ECFDFBF6DEBE4F2F1701 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 pop pop end end defaultpacking setpacking %%EndResource %%BeginResource: procset Adobe_typography_AI5 1.0 1 %%Title: (Typography Operators) %%Version: 1.0 1 %%CreationDate:(6/10/1996) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_typography_AI5 68 dict dup begin put /initialize { begin begin Adobe_typography_AI5 begin Adobe_typography_AI5 { dup xcheck { bind } if pop pop } forall end end end Adobe_typography_AI5 begin } def /terminate { currentdict Adobe_typography_AI5 eq { end } if } def /modifyEncoding { /_tempEncode exch ddef /_pntr 0 ddef { counttomark -1 roll dup type dup /marktype eq { pop pop exit } { /nametype eq { _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll put } { /_pntr exch ddef } ifelse } ifelse } loop _tempEncode } def /havefont { systemdict /languagelevel known { /Font resourcestatus dup { exch pop exch pop } if } { systemdict /FontDirectory get 1 index known { pop true } { systemdict /fileposition known { dup length 6 add exch Ss 6 250 getinterval cvs pop Ss exch 0 exch getinterval status { pop pop pop pop true } { false } ifelse } { pop false } ifelse } ifelse } ifelse } def /TE { StandardEncoding 256 array copy modifyEncoding /_nativeEncoding exch def } def /subststring { exch 2 index exch search { exch pop exch dup () eq { pop exch concatstring } { 3 -1 roll exch concatstring concatstring } ifelse exch pop true } { pop pop false } ifelse } def /concatstring { 1 index length 1 index length 1 index add string dup 0 5 index putinterval dup 2 index 4 index putinterval 4 1 roll pop pop pop } def % /TZ { dup type /arraytype eq { /_wv exch def } { /_wv 0 def } ifelse /_useNativeEncoding exch def 2 index havefont { 3 index 255 string cvs dup (_Symbol_) eq { pop 2 index findfont } { 1 index 0 eq { dup length 1 sub 1 exch getinterval cvn findfont } { pop 2 index findfont } ifelse } ifelse } { dup 1 eq { 2 index 64 string cvs dup (-90pv-RKSJ-) (-83pv-RKSJ-) subststring { exch pop dup havefont { findfont false } { pop true } ifelse } { pop dup (-90ms-RKSJ-) (-Ext-RKSJ-) subststring { exch pop dup havefont { findfont false } { pop true } ifelse } { pop pop true } ifelse } ifelse { 1 index 1 eq { /Ryumin-Light-Ext-RKSJ-V havefont {/Ryumin-Light-Ext-RKSJ-V} {/Courier} ifelse } { /Ryumin-Light-83pv-RKSJ-H havefont {/Ryumin-Light-83pv-RKSJ-H} {/Courier} ifelse } ifelse findfont [1 0 0.5 1 0 0] makefont } if } { /Courier findfont } ifelse } ifelse _wv type /arraytype eq { _wv makeblendedfont } if dup length 10 add dict begin mark exch { 1 index /FID ne { def } if cleartomark mark } forall pop /FontScript exch def /FontDirection exch def /FontRequest exch def /FontName exch def counttomark 0 eq { 1 _useNativeEncoding eq { /Encoding _nativeEncoding def } if cleartomark } { /Encoding load 256 array copy modifyEncoding /Encoding exch def } ifelse FontName currentdict end definefont pop } def /tr { _ax _ay 3 2 roll } def /trj { _cx _cy _sp _ax _ay 6 5 roll } def /a0 { /Tx { dup currentpoint 3 2 roll tr _psf newpath moveto tr _ctm _pss } ddef /Tj { dup currentpoint 3 2 roll trj _pjsf newpath moveto trj _ctm _pjss } ddef } def /a1 { W B } def /e0 { /Tx { tr _psf } ddef /Tj { trj _pjsf } ddef } def /e1 { W F } def /i0 { /Tx { tr sp } ddef /Tj { trj jsp } ddef } def /i1 { W N } def /o0 { /Tx { tr sw rmoveto } ddef /Tj { trj swj rmoveto } ddef } def /r0 { /Tx { tr _ctm _pss } ddef /Tj { trj _ctm _pjss } ddef } def /r1 { W S } def /To { pop _ctm currentmatrix pop } def /TO { iTe _ctm setmatrix newpath } def /Tp { pop _tm astore pop _ctm setmatrix _tDict begin /W { } def /h { } def } def /TP { end iTm 0 0 moveto } def /Tr { _render 3 le { currentpoint newpath moveto } if dup 8 eq { pop 0 } { dup 9 eq { pop 1 } if } ifelse dup /_render exch ddef _renderStart exch get load exec } def /iTm { _ctm setmatrix _tm concat _shift aload pop _lineorientation 1 eq { exch } if translate _scale aload pop _lineorientation 1 eq _yokoorientation 1 eq or { exch } if scale } def /Tm { _tm astore pop iTm 0 0 moveto } def /Td { _mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto } def /iTe { _render -1 eq { } { _renderEnd _render get dup null ne { load exec } { pop } ifelse } ifelse /_render -1 ddef } def /Ta { pop } def /Tf { 1 index type /nametype eq { dup 0.75 mul 1 index 0.25 mul neg } if /_fontDescent exch ddef /_fontAscent exch ddef /_fontSize exch ddef /_fontRotateAdjust _fontAscent _fontDescent add 2 div neg ddef /_fontHeight _fontSize ddef findfont _fontSize scalefont setfont } def /Tl { pop neg 0 exch _leading astore pop } def /Tt { pop } def /TW { 3 npop } def /Tw { /_cx exch ddef } def /TC { 3 npop } def /Tc { /_ax exch ddef } def /Ts { 0 exch _shift astore pop currentpoint iTm moveto } def /Ti { 3 npop } def /Tz { count 1 eq { 100 } if 100 div exch 100 div exch _scale astore pop iTm } def /TA { pop } def /Tq { pop } def /Tg { pop } def /TG { pop } def /Tv { /_lineorientation exch ddef } def /TV { /_charorientation exch ddef } def /Ty { dup /_yokoorientation exch ddef 1 sub neg Tv } def /TY { pop } def /T~ { Tx } def /Th { pop pop pop pop pop } def /TX { pop } def /Tk { _fontSize mul 1000 div _lineorientation 0 eq { neg 0 } { 0 exch } ifelse rmoveto pop } def /TK { 2 npop } def /T* { _leading aload pop _lineorientation 0 ne { exch } if Td } def /T*- { _leading aload pop _lineorientation 0 ne { exch } if exch neg exch neg Td } def /T- { _ax neg 0 rmoveto _lineorientation 1 eq _charorientation 0 eq and { 1 TV _hyphen Tx 0 TV } { _hyphen Tx } ifelse } def /T+ { } def /TR { _ctm currentmatrix pop _tm astore pop iTm 0 0 moveto } def /TS { currentfont 3 1 roll /_Symbol_ findfont _fontSize scalefont setfont 0 eq { Tx } { Tj } ifelse setfont } def /Xb { pop pop } def /Tb /Xb load def /Xe { pop pop pop pop } def /Te /Xe load def /XB { } def /TB /XB load def currentdict readonly pop end setpacking % /X^ { currentfont 5 1 roll dup havefont { findfont _fontSize scalefont setfont } { pop exch } ifelse 2 index 0 eq { Tx } { Tj } ifelse pop pop setfont } def /T^ /X^ load def %%EndResource %%BeginResource: procset AGM_Gradient_Sep 1.0 0 %%Title: (AGM Gradient Procset) %%Version: 1.0 0 %%CreationDate: (4/26/96) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) userdict /defaultpacking currentpacking put true setpacking userdict /AGM_Gradient_Sep 5 dict dup begin put /AGM_Gradient_Sep_private 100 dict def /initialize{ AGM_Gradient_Sep begin AGM_Gradient_Sep_private begin _compositeJob{ initializeSinglePassSeps }{ initializeMultiPassSeps }ifelse initializeSeps AGM_Gradient_private begin /_fillSD newSpotDict def /_rampSD newSpotDict def /_nCustomColorSD nd end AGM_Gradient_Sep_private { dup xcheck 1 index type /arraytype eq and { bind }if pop pop }forall AGM_Gradient_Sep { dup xcheck 1 index type /arraytype eq and { bind }if pop pop }forall end currentdict readonly pop end }def /terminate{ currentdict AGM_Gradient_Sep eq{ end }if }def AGM_Gradient_Sep_private begin /initializeSeps{ /currentoverprint { _of } def _noImage not _level2PS not and{ /linealFill{ currentoverprint{ 0 0 1 1 rectfill }{ mySave 8 setImageParms _color{ _nCustomColorSD begin cyan magenta yellow black _spotColor{ spot1/tintImage spot1/tintValue get 1 exch sub makeByte8 put spot2/tintImage spot2/tintValue get 1 exch sub makeByte8 put }if end 4{ makeByte8 4 1 roll }repeat true 4 _nCustomColorSD ncolorimage }{ _nCustomColorSD/black get 1 exch sub makeByte8 _nCustomColorSD bwImage }ifelse myRestore }ifelse }def }if /_whiteBytes 1 makeByte8 pt /knockOut{ _noImage _level2PS or currentoverprint or{ gsave false setoverprint 1 setgray 0 0 1 1 rectfill grestore }{ 8 setImageParms _whiteBytes /_image load 5 execImage }ifelse }def /newSpotDict{ 11 dict dup begin /nSpots 2 def /spot1 7 dict def /spot2 7 dict def end }def /initSpotData { begin /name nd /tintImage nd /tintValue nd /spot_C nd /spot_M nd /spot_Y nd /spot_K nd end }def /initSpotDict{ begin /cyanInk nd /magentaInk nd /yellowInk nd /blackInk nd /cyan nd /magenta nd /yellow nd /black nd spot1 initSpotData spot2 initSpotData end }def /copySpotDict{ /_dst xp begin cyanInk magentaInk yellowInk blackInk cyan magenta yellow black spot1 spot2 end _dst begin /spot1 spot1 maxlength dict def /spot2 spot2 maxlength dict def spot2 copy pop spot1 copy pop /black xd /yellow xd /magenta xd /cyan xd /blackInk xd /yellowInk xd /magentaInk xd /cyanInk xd end }def /setCustomColor { 1 index /Black eq{ 6 1 roll 5 npop 1 exch sub setgray }{ 6 1 roll _ccAry1 astore exch dup null eq{ pop 0 }if setcustomcolor }ifelse }def /setCStop{ /_colorStyle exch pt _colorStyle 0 eq{ 0 0 0 4 -1 roll 1 exch sub _spotColor{ /_colorStyle 3 pt /Black 1 index 1 exch sub }if }if _colorStyle 2 eq{ 3 npop }if _rampSD _fillSD copySpotDict _colorStyle 4 eq{ pop 9 2 roll 3 npop 6 -2 roll } if _colorStyle 3 eq _colorStyle 4 eq or{ _fillSD begin /_spot1 spot1 pt /_spot2 spot2 pt end exch dup _spot1/name get eq{ _spot1 _spot2 }{ _spot2 _spot1 }ifelse begin begin /name xd 1 exch sub /tintValue xd 4{ tintValue mul 4 1 roll }repeat _spotColor not{ /tintValue null def }if end /tintValue 0 def end }if _fillSD nsetcustomcolor }def /renderCMYK{ spot1/name get null eq spot2/name get null eq and dup not{ pop spot1 spotConverted }if dup not{ pop spot2 spotConverted }if }def /currentInk{ true _inRipSep{ currentcolorspace 0 get dup /DeviceGray eq 1 index /DeviceCMYK eq or{ pop currentcmykcolor add add add 0 eq{ pop false }if }{ /Separation eq{ currentcolor 0 eq{ pop false }if }if }ifelse }{ currentgray 1 eq{ pop false }if }ifelse }def /currentInkN{ _nCustomColorSD begin /_spot1 spot1 pt /_spot2 spot2 pt renderCMYK end { currentInk }{ gsave _spot1 begin name null ne{ spot_C spot_M spot_Y spot_K name tintValue setCustomColor currentInk }{ false }ifelse end _spot2 begin name null ne{ spot_C spot_M spot_Y spot_K name tintValue setCustomColor currentInk }{ false }ifelse end grestore or } ifelse }def /fill_ /fill load def /fillOvp{ currentoverprint{ _inRipSep{ currentcolorspace 0 get dup /DeviceGray eq 1 index /DeviceCMYK eq or{ pop currentcmykcolor add add add 0 eq{ newpath }if }{ /Separation eq{ currentcolor 0 eq{ newpath }if }if }ifelse }{ currentgray 1 eq{ newpath }if }ifelse }if fill_ }def /fill{ _nCustomColorSD begin /_spot1 spot1 pt /_spot2 spot2 pt renderCMYK end { fillOvp }{ _spot1 begin gsave name null ne{ spot_C spot_M spot_Y spot_K name tintValue setCustomColor }{ 1 setgray }ifelse fillOvp grestore end _spot2 begin name null ne{ gsave true setoverprint spot_C spot_M spot_Y spot_K name tintValue setCustomColor fillOvp grestore }if end newpath }ifelse }def /expandSpot{ _spotColor{ /_len xp _rampSD begin spot1 begin tintImage null ne{ tintImage _len expandOne /tintImage xd }if end spot2 begin tintImage null ne{ tintImage _len expandOne /tintImage xd }if end end }{ pop }ifelse }def /rampImage{ currentoverprint{ rectImage }{ _enabledSmoothShade{ fillRamp }{ _color{ _rampSD begin /cyanInk _cyanData 0 ne def /magentaInk _magentaData 0 ne def /yellowInk _yellowData 0 ne def /blackInk _blackData 0 ne def end _nSamples setImageParms _nSamples expandSpot _cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor true 4 _rampSD ncolorimage }{ _rampSD begin /cyanInk false def /magentaInk false def /yellowInk false def /blackInk true def end _nSamples setImageParms _blackData _rampSD bwImage }ifelse }ifelse }ifelse }def /nsetcustomcolor where{ pop }{ /nsetcustomcolor { /_nCustomColorSD xp _nCustomColorSD begin 4 copy /black xd /yellow xd /magenta xd /cyan xd 4 copy 0 ne /blackInk xd 0 ne /yellowInk xd 0 ne /magentaInk xd 0 ne /cyanInk xd end setcmykcolor }def }ifelse /nsetcustomcolorend where{ pop }{ /nsetcustomcolorend { /_nCustomColorSD null pt }def }ifelse }def /initializeSinglePassSeps{ /_decodeNorm [0 1] pt /_decodeInvert [1 0] pt /spotConverted { begin name null eq{ false }{ tintValue null eq tintImage null eq and{ true }{ _inDistiller{ false }{ false currentpagedevice/SeparationColorNames get{name eq or}forall not }ifelse }ifelse }ifelse end }def /dictImage { 20 dict dup begin /Dict xd /Decode xd /DataSource xd /ImageMatrix xd /BitsPerComponent xd /Height xd /Width xd /ImageType 1 def Dict end /_image load 1 execImage }def /bwImage{ begin gsave currentoverprint{ blackInk{ [/Separation /Black /DeviceGray{}] setcolorspace _decodeInvert dictImage }{ 5 npop }ifelse }{ /DeviceGray setcolorspace _decodeNorm dictImage }ifelse grestore end }def /ncolorimage where{ pop }{ /ncolorimage{ begin renderCMYK{ cyanInk magentaInk and yellowInk and blackInk and not currentoverprint and{ pop pop gsave cyanInk{ 8 copy [/Separation /Cyan /DeviceGray{}] setcolorspace 3 npop _decodeNorm dictImage }if magentaInk{ 8 copy [/Separation /Magenta /DeviceGray{}] setcolorspace 4 -1 roll 3 npop _decodeNorm dictImage }if yellowInk{ 8 copy [/Separation /Yellow /DeviceGray{}] setcolorspace 4 -2 roll 3 npop _decodeNorm dictImage }if blackInk{ 4 -3 roll [/Separation /Black /DeviceGray{}] setcolorspace 3 npop _decodeNorm dictImage }{ 8 npop }ifelse grestore }{ /_colorimage load 10 execImage }ifelse }{ 6 npop gsave spot1 begin name null ne tintImage null ne and{ [/Separation name /DeviceGray{}] setcolorspace 4 copy tintImage name /Black eq{ _decodeNorm }{ _decodeInvert }ifelse dictImage }{ 1 setgray fill }ifelse end spot2 begin true setoverprint name null ne tintImage null ne and{ [/Separation name /DeviceGray{}] setcolorspace tintImage name /Black eq{ _decodeNorm }{ _decodeInvert }ifelse dictImage }{ 4 npop 1 setgray fill }ifelse end grestore }ifelse end }def }ifelse /getRampColorSpace{ /_renderCMYK _rampSD begin renderCMYK end pt _renderCMYK not{ _rampSD begin [/DeviceN [ spot1 begin name null ne tintImage null ne and{ name }if end spot2 begin name null ne tintImage null ne and{ name }if end ] _inDistiller { /DeviceCMYK [ spot1 begin name null ne tintImage null ne and{ spot_C spot_M spot_Y spot_K 1 }{ 0 0 0 0 0 }ifelse end spot2 begin name null ne tintImage null ne and{ spot_C spot_M spot_Y spot_K 2 }{ 0 0 0 0 0 }ifelse end 5 1 roll 6 -2 roll add dup 1 eq { pop 8 /index cvx 1 /exch cvx /sub cvx 9 1 /roll cvx }{ 2 eq { 8 /index cvx 1 /exch cvx /sub cvx 10 1 /roll cvx }if }ifelse 4 1 /roll cvx 5 -2 /roll cvx 8 /index cvx /mul cvx /exch cvx 9 /index cvx /mul cvx /add cvx 7 1 /roll cvx 3 1 /roll cvx 4 -2 /roll cvx 7 /index cvx /mul cvx /exch cvx 8 /index cvx /mul cvx /add cvx 6 1 /roll cvx 2 1 /roll cvx 3 -2 /roll cvx 6 /index cvx /mul cvx /exch cvx 7 /index cvx /mul cvx /add cvx 5 1 /roll cvx 5 /index cvx /mul cvx /exch cvx 6 /index cvx /mul cvx /add cvx 4 1 /roll cvx 6 -2 /roll cvx /pop cvx /pop cvx ] cvx bind }{ /DeviceCMYK {} }ifelse ] setcolorspace end /_nColorSpace currentcolorspace pt }if _nSamples 1 gt{ /_ndx 0 pt [blendColor] cvx exec }if _renderCMYK{ /_C0 [currentcolor] pt /_C0_Space currentcolorspace pt }{ /_C0 [ _nCustomColorSD begin spot1 begin name null ne{ tintValue }if end spot2 begin name null ne{ tintValue }if end end ] pt /_C0_Space _nColorSpace pt }ifelse _nSamples 1 gt{ /_ndx _nSamples 1 sub pt [blendColor] cvx exec }if _renderCMYK{ /_C1 [currentcolor] pt /_C1_Space currentcolorspace pt }{ /_C1 [ _nCustomColorSD begin spot1 begin name null ne{ tintValue }if end spot2 begin name null ne{ tintValue }if end end ] pt /_C1_Space _nColorSpace pt }ifelse /_rampColorSpace _C0_Space pt _spotColor{ nsetcustomcolorend }if }def }def /initializeMultiPassSeps{ /invertXfer{ [ { 1 exch sub }/exec load systemdict /currenttransfer get exec /exec load ] cvx systemdict /settransfer get exec }def /ccThrough{ gsave 1 setCustomColor currentcmykcolor grestore add add add 0 ne }def /spotConverted { begin _isCMYKSep not{ false }{ name null eq{ false }{ tintValue null eq tintImage null eq and{ true }{ spot_C spot_M spot_Y spot_K name ccThrough }ifelse }ifelse }ifelse end }def /spotChannel { _isCMYKSep{ pop false }{ /_spotDict xp _spotDict/name get null eq{ false }{ _spotDict/spot_C get _spotDict/spot_M get _spotDict/spot_Y get _spotDict/spot_K get _spotDict/name get ccThrough }ifelse }ifelse }def /getChannelData { _isCMYKSep dup{ pop renderCMYK }if { _blackPlate{ 4 1 roll 3 npop blackInk }{ _yellowPlate{ 4 2 roll 3 npop yellowInk }{ _magentaPlate{ 4 3 roll 3 npop magentaInk }{ 3 npop cyanInk }ifelse }ifelse }ifelse { true /nonZeroData }{ true /zeroData }ifelse }{ 4 npop spot1/name get null ne spot1 spotChannel and{ spot1/tintImage get dup null ne{ false /nonZeroData }{ pop false /noData }ifelse }{ spot2/name get null ne spot2 spotChannel and{ spot2/tintImage get dup null ne{ false /nonZeroData }{ pop false /noData }ifelse }{ false /noData }ifelse }ifelse }ifelse }def /renderChannelData { /_tmp xp _tmp /nonZeroData ne currentoverprint and{ pop _tmp /zeroData eq{pop}if 4 npop }{ _tmp /nonZeroData eq{ { invertXfer }if systemdict/image get 5 execImage }{ pop _tmp /zeroData eq{pop}if 4 npop knockOut }ifelse }ifelse }def /bwImage{ begin gsave dup dup dup getChannelData exch pop false exch renderChannelData grestore end }def /ncolorimage{ begin pop pop gsave spot2/name get null ne spot2 spotChannel and{ true setoverprint }if getChannelData renderChannelData grestore end }def /getRampColorSpace{ /_renderCMYK _rampSD begin renderCMYK end pt _nSamples 1 gt{ /_ndx 0 pt [blendColor] cvx exec }if _renderCMYK{ /_C0 [currentcolor] pt /_C0_Space currentcolorspace pt }{ /_C0 [ _nCustomColorSD begin 0 spot1 begin name null ne tintValue null ne and spot1 spotChannel and{ pop tintValue }if end spot2 begin name null ne tintValue null ne and spot2 spotChannel and{ pop tintValue }if end 1 exch sub end ] pt /_C0_Space /DeviceGray pt }ifelse _nSamples 1 gt{ /_ndx _nSamples 1 sub pt [blendColor] cvx exec }if _renderCMYK{ /_C1 [currentcolor] pt /_C1_Space currentcolorspace pt }{ /_C1 [ _nCustomColorSD begin 0 spot1 begin name null ne tintValue null ne and spot1 spotChannel and{ pop tintValue }if end spot2 begin name null ne tintValue null ne and spot2 spotChannel and{ pop tintValue }if end 1 exch sub end ] pt /_C1_Space /DeviceGray pt }ifelse /_rampColorSpace _C0_Space pt _spotColor{ nsetcustomcolorend }if }def }def end end defaultpacking setpacking %%EndResource %%BeginResource: procset AGM_Gradient 1.0 0 %%Title: (AGM Gradient Procset) %%Version: 1.0 0 %%CreationDate: (4/26/96) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) userdict /defaultpacking currentpacking put true setpacking userdict /AGM_Gradient 20 dict dup begin put /AGM_Gradient_private 201 dict def /initialize { AGM_Gradient begin AGM_Gradient_private begin initializeVars /bd systemdict/mark get def /ed _level2PS { (>>) }{ (counttomark 2 idiv dup dict begin {def} repeat pop currentdict end) } ifelse cvx def _level2PS{ initializeLev2 }{ initializeLev1 }ifelse queryDevice initializeRectFill initializeShading initializeOps _producingSeps{ AGM_Gradient_Sep/initialize get exec }{ initializeComposite }ifelse _illustrator{ /f{}def /F{}def /s{}def /S{}def /b{}def /B{}def }if /image where{ /image get /_image xd }if /colorimage where{ /colorimage get /_colorimage xd }if AGM_Gradient_private { dup xcheck 1 index type /arraytype eq and { bind }if pop pop }forall AGM_Gradient { dup xcheck 1 index type /arraytype eq and { bind }if pop pop }forall end currentdict readonly pop end }def /initializeAI { pop pop AGM_Gradient/AGM_Gradient_private get /_illustrator true put AGM_Gradient/initialize get exec AGM_Gradient begin }def /unload{ systemdict/languagelevel known{ systemdict/languagelevel get 2 ge{ userdict/AGM_Gradient_Sep 2 copy known{ undef }{ pop pop }ifelse userdict/AGM_Gradient 2 copy known{ undef }{ pop pop }ifelse }if }if }def /terminate{ currentdict AGM_Gradient eq{ end }if }def AGM_Gradient_private begin /initializeVars{ /_d255 256 array def 0 1 255{ _d255 exch dup 255 div put }bind for /_d255- 256 array def 0 1 255{ _d255- exch 1 _d255 2 index get sub put }bind for /_sSave nd /_dUserSpace matrix defaultmatrix def /_bUMatrix matrix def /_imageMatrix matrix def /_saveMatrix matrix def /_xm matrix def /_ccAry1 5 array def /_bbox 4 array pt /_level2PS systemdict/languagelevel known dup{ pop systemdict/languagelevel get 2 ge }if def /_level3PS _level2PS systemdict/shfill known and def currentdict /_illustrator known not{ /_illustrator false def }if }def /initializeOps { AGM_Gradient begin currentdict/Bc known not{ /Bc{ _renderFlag 2 eq _enabledSmoothShade or{ 6 npop }{ pushBSpace _rampIndex 0 eq{ pop pop setCStop }if linealFill popBSpace }ifelse }def }if currentdict/Bg known not{ /Bg{ 10 npop /_gradName xp /_renderFlag xp /_enabledSmoothShade false pt _renderFlag 2 ne{ _illustrator{ _of setoverprint }if /_enabledSmoothShade _level3PS{ _usingSmoothShade _producingSeps not currentoverprint not or and _noImage not and }{ false }ifelse pt _illustrator _eo and _renderFlag 3 eq or{ eoclip }{ clip }ifelse _gradNames _gradName 2 copy known{ get mark exch aload pop /_gradType xp 1 sub dup /_rampIndex xp /_maxRampIndex xp mark exch aload pop 0 0 }if pop pop getRampData }{ mark mark }ifelse }def }if currentdict/Bm known not{ /Bm{ _renderFlag 2 ne{ _gradType 0 eq{ linealRamp }{ radialGrad }ifelse }{ 6 npop }ifelse }def }if currentdict/Bh known not{ /Bh{ 2 npop /_yHi xp /_xHi xp /_radHilite _xHi 0 ne _yHi 0 ne or pt }def }if currentdict/Bn known not{ /Bn{ AGM_Gradient_private begin dict /_gradNames xp end }def }if currentdict/Bd known not{ /Bd{ AGM_Gradient begin AGM_Gradient_private begin /_nColorsBd xp /_gradType xp /_gradName xp }def }if currentdict/BD known not{ /BD{ currentdict/_gradNames known not{ /_gradNames 20 dict def }if ] _nColorsBd _gradType ] _gradName exch /_gradNames xput end end }def }if currentdict/Bb known not{ /Bb{ AGM_Gradient/AGM_Gradient_private get /_illustrator get not{ AGM_Gradient begin }if AGM_Gradient_private begin _producingSeps{ AGM_Gradient_Sep/AGM_Gradient_Sep_private get begin }if mySave }def }if currentdict/BB known not{ /BB{ /_tmp xp cleartomark cleartomark _tmp dup _renderFlag myRestore _producingSeps{ end }if _illustrator dup end not { end }if { 2 ne exch 0 gt and{ 2 eq{ s }{ S }ifelse }{ pop newpath }ifelse }{ pop newpath }ifelse }def }if currentdict/Xm known not{ /Xm{ _xm astore pop }def }if end }def /queryDevice{ /_inDistiller systemdict /currentdistillerparams known def /_inRipSep _level2PS{ currentpagedevice/Separations 2 copy known{ get }{ pop pop false }ifelse }{ false }ifelse _inDistiller or def /_noImage /lv1Fix where{ pop lv1Fix }{ false }ifelse def /_useShells where{ /_useShells get /_usingShells xp }{ /_usingShells false def }ifelse /_useSmoothShade where{ pop }{ /_useSmoothShade false def }ifelse /_forceToCMYK where{ pop }{ /_forceToCMYK false def }ifelse /_cyanPlate 1 0 0 0 testCMYKColorThrough def /_magentaPlate 0 1 0 0 testCMYKColorThrough def /_yellowPlate 0 0 1 0 testCMYKColorThrough def /_blackPlate 0 0 0 1 testCMYKColorThrough def /_compositeJob _cyanPlate _magentaPlate and _yellowPlate and _blackPlate and def /_isCMYKSep _cyanPlate _magentaPlate or _yellowPlate or _blackPlate or def /_compositeSpotDevice where{ pop }{ /_compositeSpotDevice _compositeJob not _inRipSep or{ 1 }{ 0 }ifelse def }ifelse /_producingSeps _compositeSpotDevice 0 ne def /_deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt def /_dpiThreshold where{ pop }{ /_dpiThreshold 600 def }ifelse /_screenFreqThreshold where{ pop }{ /_screenFreqThreshold 150 def }ifelse /_contoneDevice where{ pop }{ /_contoneDevice false def }ifelse /_subSampleOK _deviceDPI _dpiThreshold le currentScreenFreq _screenFreqThreshold le and _contoneDevice not and def }def /initializeRectFill{ /rectfill where dup{ exch pop not _producingSeps or }{ not }ifelse { /rectfill{ gsave newpath 4 2 roll moveto 1 index 0 rlineto 0 1 index rlineto 1 index neg 0 rlineto pop pop closepath fill grestore }def }if }def /initializeLev1{ /currentScreenFreq{ currentscreen pop pop }def /_byte 1 string def /colorimage where{ pop }{ /colorimage{ pop pop /_blackTmp xp /_yellowTmp xp /_magentaTmp xp /_cyanTmp xp /_cnt 0 pt [ _byte dup 0 _cyanTmp /_cnt cvx /get cvx _d255 /exch cvx /get cvx .3 /mul cvx _magentaTmp /_cnt cvx /get cvx _d255 /exch cvx /get cvx .59 /mul cvx _yellowTmp /_cnt cvx /get cvx _d255 /exch cvx /get cvx .11 /mul cvx _blackTmp /_cnt cvx /get cvx _d255 /exch cvx /get cvx /add cvx /add cvx /add cvx 1 /exch cvx /sub cvx /dup cvx 0 /lt cvx{ pop 0 }/if cvx /dup cvx 1 /gt cvx{ pop 1 }/if cvx 255 /mul cvx /cvi cvx 256 /mod cvx /dup cvx 0 /lt cvx{ pop 0 }/if cvx /put cvx /_cnt dup cvx 1 /add cvx /pt cvx ] cvx bind /_image load 5 execImage }def }ifelse }def /initializeLev2{ /level2ScreenFreq{ begin 60 HalftoneType 1 eq{ pop Frequency }if HalftoneType 2 eq{ pop GrayFrequency }if HalftoneType 5 eq{ pop Default level2ScreenFreq }if end }def /currentScreenFreq{ currenthalftone level2ScreenFreq }def }def /initializeShading{ _useSmoothShade _level3PS and{ /_usingSmoothShade true pt initializeLev3_Ops }{ /_usingSmoothShade false pt }ifelse }def /initializeLev3_Ops { /initShFill{ /_index _gradType 0 eq {0}{_maxRampIndex 1 sub} ifelse pt /_rampFuncsArray _maxRampIndex array pt /_boundsArray _maxRampIndex 1 sub array pt /_encodeArray _maxRampIndex 2 mul array pt /_beginCoord _rampPoint pt /_colorSpace null pt /_firstFill _rampIndex _maxRampIndex eq pt /_lastFill false pt }def /linealShFill{ popBSpace _xm aload pop pushBSpace /_size _index 1 add pt _size _maxRampIndex lt { /_rampFuncsArray _rampFuncsArray 0 _size getinterval pt /_boundsArray _boundsArray 0 _size 1 sub getinterval pt /_encodeArray _encodeArray 0 _size 2 mul getinterval pt }if bd /ShadingType 2 /ColorSpace _colorSpace _rgbInCMYK{ /Function [ _cData sampFunc _mData sampFunc _yData sampFunc _kData sampFunc ] }{ /Function bd /FunctionType 3 /Domain [0 1] /Functions _rampFuncsArray /Bounds _boundsArray /Encode _encodeArray ed }ifelse /Extend [_firstFill _lastFill] /Domain [0 1] /Coords [_beginCoord 0 _endCoord 0] ed shfill }def /radialShFill{ /_size _maxRampIndex _index sub pt _size _maxRampIndex lt { /_rampFuncsArray _rampFuncsArray _index _size getinterval pt /_boundsArray _boundsArray _index _size 1 sub getinterval pt /_encodeArray _encodeArray _index 2 mul _size 2 mul getinterval pt }if /_rampLen _beginCoord _endCoord sub pt bd /ShadingType 3 /ColorSpace _colorSpace _rgbInCMYK{ /Function [ _cData sampFunc _mData sampFunc _yData sampFunc _kData sampFunc ] }{ /Function bd /FunctionType 3 /Domain [0 1] /Functions _rampFuncsArray /Bounds _boundsArray /Encode _encodeArray ed }ifelse /Extend [_lastFill _firstFill] /Domain [0 1] /Coords [_xHi _rampLen mul _yHi _rampLen mul _endCoord 0 0 _beginCoord] ed shfill _radHilite{ _xHi _rampLen mul _yHi _rampLen mul translate }if }def % /sampFunc{ /_tmp exch pt bd _tmp length 1 eq { _tmp 0 get /_tmp 2 string pt dup _tmp 0 3 -1 roll put _tmp 1 3 -1 roll put }if /FunctionType 0 /Order 1 /Size [_tmp length] /Domain [0 1] /BitsPerSample 8 /DataSource _tmp /Range [0 1] ed }def /fillRamp{ /_invert _midPoint 0.5 lt pt _rampIndex _maxRampIndex eq { initShFill }if getRampColorSpace _colorSpace null eq{ /_colorSpace _rampColorSpace pt }{ _colorSpace _rampColorSpace ne _rgbInCMYK or{ /_index _index 1 _gradType 0 eq{ sub pt linealShFill }{ add pt radialShFill }ifelse initShFill /_colorSpace _rampColorSpace pt } if }ifelse /_endCoord _endPoint pt /_rgbInCMYK false pt _producingSeps _forceToCMYK or _rgbRamp and { _spotColor{ _renderCMYK }{ _isCMYKSep }ifelse }{ false }ifelse { _compositeJob{ /_rgbInCMYK true pt _cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor dup length string copy /_kData exch pt dup length string copy /_yData exch pt dup length string copy /_mData exch pt dup length string copy /_cData exch pt }{ _rampFuncsArray _index _cyanPlate{_cyanData}if _magentaPlate{_magentaData}if _yellowPlate{_yellowData}if _blackPlate{_blackData}if _nSamples expandOne sampFunc dup begin /Decode [1 0] def end put /_invert false pt }ifelse }{ _rampFuncsArray _index bd /FunctionType 2 /Domain [0 1] /N 0.5 log _invert{1 _midPoint sub}{_midPoint}ifelse log div _gradType 0 eq{ _invert{/C1}{/C0}ifelse _C0 _invert{/C0}{/C1}ifelse _C1 }{ _invert{/C0}{/C1}ifelse _C1 _invert{/C1}{/C0}ifelse _C0 }ifelse ed put }ifelse _rampIndex 1 ne{ _boundsArray _index _gradType 1 eq{1 sub}if _endCoord put } if 0 1 _invert {exch}if _encodeArray _index 2 mul 1 add 3 -1 roll put _encodeArray _index 2 mul 3 -1 roll put _rampIndex 1 eq { /_lastFill true pt _gradType 0 eq{ linealShFill }{ radialShFill }ifelse }if /_index _index 1 _gradType 0 eq{ add pt }{ sub pt }ifelse }def }def /initializeComposite{ /bwImage{ pop /_image load 5 execImage }def /rampImage{ _enabledSmoothShade{ fillRamp }{ _color{ _nSamples setImageParms _rgbRamp _forceToCMYK not and{ _redData _greenData _blueData _nSamples 3 expandColor true 3 null ncolorimage }{ _cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor true 4 null ncolorimage }ifelse }{ _nSamples setImageParms _blackData null bwImage }ifelse }ifelse }def /setCStop{ /_colorStyle exch pt _colorStyle 0 eq{ 1 exch sub 0 0 0 4 -1 roll }if _colorStyle 2 eq{ _forceToCMYK{ 3 npop setcmykcolor }{ setrgbcolor 4 npop }ifelse }if _colorStyle 3 eq{ 1 exch sub /_tmp xp pop 4{ _tmp mul 4 1 roll }repeat }if _colorStyle 4 eq{ _forceToCMYK{ 6 npop setcmykcolor }{ 3 -1 roll pop pop 1 exch sub /_tmp xp 3{ 1 exch sub _tmp mul 1 exch sub 3 1 roll }repeat setrgbcolor 4 npop }ifelse }if _colorStyle 2 ne _colorStyle 4 ne and{ null nsetcustomcolor }if }def /nsetcustomcolor { pop setcmykcolor }def /nsetcustomcolorend { }def /ncolorimage{ pop /_colorimage load 10 execImage }def _noImage not _level2PS not and{ /linealFill{ 8 setImageParms _color{ currentcmykcolor 4{ makeByte8 4 1 roll }repeat true 4 null ncolorimage }{ currentgray makeByte8 null bwImage }ifelse }def }if /getRampColorSpace{ _nSamples 1 gt{ /_ndx 0 pt [blendColor] cvx exec }if /_C0 [currentcolor] pt /_C0_Space currentcolorspace pt _nSamples 1 gt{ /_ndx _nSamples 1 sub pt [blendColor] cvx exec }if /_C1 [currentcolor] pt /_C1_Space currentcolorspace pt /_rampColorSpace _C0_Space pt _spotColor{ nsetcustomcolorend }if }def }def /npop{ {pop}repeat }def /xd{ exch def }def /nd{ null def }def /pt{ AGM_Gradient_private 3 1 roll put }def /xp{ exch pt }def /xput{ dup load dup length exch maxlength eq{ dup dup load dup length 2 mul dict copy def }if load begin def end }def /mySave{ save /_sSave xp }def /myRestore{ _sSave type /savetype eq{ _sSave restore }if }def /gMark{ counttomark 2 add -1 roll }def /execImage{ /_tmp xp { exec }stopped{ $error /errorname get /undefinedresult ne{ stop }{ _tmp npop }ifelse }if }def /pushBSpace{ newpath gsave _bUMatrix astore concat }def /popBSpace{ grestore }def /makeByte8{ /_tmp 0 pt 255 mul cvi 8 string 8{ dup _tmp 3 index put /_tmp _tmp 1 add pt }repeat exch pop }def /setImageParms{ 1 8 2 index 0 0 1 0 0 _imageMatrix astore }def /linealFill{ 0 0 1 1 rectfill }def /testCMYKColorThrough{ gsave setcmykcolor currentcmykcolor grestore add add add 0 ne }def /expandOne { /_tmp xp dup type /stringtype ne{ _tmp string exch dup 0 ne{ 255 mul cvi 0 1 _tmp 1 sub{ 3 copy exch put pop }for }if pop }if }def /expandColor{ /_channels xp /_len xp _channels{ _len expandOne _channels 1 roll }repeat }def /blendColor{ _color{ _rgbRamp _producingSeps not and _forceToCMYK not and{ _redData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _greenData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _blueData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if /setrgbcolor cvx }{ _cyanData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _magentaData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _yellowData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _blackData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _spotColor{ _rampSD begin /_rampSD cvx /begin cvx spot1 begin tintImage dup type /stringtype eq{ /_ndx cvx /get cvx _d255- /exch cvx /get cvx }{ dup null ne{ name type /nametype ne{ 1 exch sub }if }if }ifelse end /spot1 cvx /tintValue 3 -1 /roll cvx /put cvx spot2 begin tintImage dup type /stringtype eq{ /_ndx cvx /get cvx _d255- /exch cvx /get cvx }{ dup null ne{ name type /nametype ne{ 1 exch sub }if }if }ifelse end /spot2 cvx /tintValue 3 -1 /roll cvx /put cvx /end cvx end /_rampSD cvx /nsetcustomcolor cvx }{ /setcmykcolor cvx }ifelse }ifelse }{ _blackData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _enabledSmoothShade{ 1 /exch cvx /sub cvx 0 0 0 4 -1 /roll cvx /setcmykcolor cvx }{ /setgray cvx }ifelse }ifelse }def /useRectImage{ _subSampleOK _enabledSmoothShade not and{ { mark 0 1 dtransform atan cvi 90 mod 0 eq 1 0 dtransform atan cvi 90 mod 0 eq } stopped { cleartomark false } { and exch pop } ifelse }{ false }ifelse }def /linealImage{ _noImage{ rectImage }{ _producingSeps{ AGM_Gradient_Sep/AGM_Gradient_Sep_private get /rampImage get exec }{ useRectImage{ rectImage }{ rampImage }ifelse }ifelse }ifelse }def /linealRamp{ pushBSpace _ramp{ linealImage }{ linealFill }ifelse popBSpace /_rampIndex _rampIndex 1 sub pt _rampIndex 0 gt{ getRampData }if }def /radialGrad{ /_usingShells currentoverprint _producingSeps and _usingShells or pt /_firstShell true pt _enabledSmoothShade not{ currentoverprint _producingSeps and{ newpath clippath pathbbox 1 add 4 1 roll 1 add 4 1 roll 1 sub 4 1 roll 1 sub 4 1 roll _bbox astore pop newpath _bbox 0 get _bbox 1 get moveto _bbox 2 get _bbox 1 get lineto _bbox 2 get _bbox 3 get lineto _bbox 0 get _bbox 3 get lineto closepath 6 copy gsave _bUMatrix astore concat 1 0 moveto 0 0 1 0 360 arc closepath eoclip fill popBSpace }{ fill }ifelse }if pushBSpace _radHilite{ _xHi _yHi _bUMatrix idtransform /_yHi xp /_xHi xp _rampPoint 1 lt{ 1 _rampPoint sub dup _xHi mul exch _yHi mul translate }if }if _rampIndex{ radialRamp /_rampIndex _rampIndex 1 sub pt _rampIndex 0 gt{ getRampData }if }repeat popBSpace }def /getNSamples{ 0 exch { dup type /stringtype eq{ length exch pop exit }if pop }forall dup 0 eq{ pop 1 }if }def /getRampData{ /_rampType gMark pt /_color _rampType 0 gt pt /_ccRGB _rampType 5 eq _rampType 6 eq or pt /_rgbRamp _rampType 4 eq _ccRGB or pt /_ccProcess _rampType 2 eq _rampType 3 eq or pt _producingSeps{ _rampSD initSpotDict /_spotColor _ccProcess _ccRGB or pt }{ /_spotColor false pt }ifelse /_ramp true pt 100 div /_rampPoint xp 100 div /_midPoint xp dup /_colorStyle xp _colorStyle 0 eq{ 2 }{ _colorStyle 1 eq{ 5 }{ _colorStyle 2 eq{ 8 }{ _colorStyle 3 eq{ _producingSeps{ _rampSD /spot1 get begin /name 3 index def /spot_K 4 index def /spot_Y 5 index def /spot_M 6 index def /spot_C 7 index def end }if 7 }{ _producingSeps{ _rampSD/spot1 get begin /name 4 index def /spot_K 8 index def /spot_Y 9 index def /spot_M 10 index def /spot_C 11 index def end }if 11 } ifelse }ifelse }ifelse }ifelse /_tmp xp _tmp index 100 div /_endPoint xp _gradType 1 eq{ _tmp 1 add index 100 div /_midPoint xp }if _producingSeps{ _tmp 2 add index /_nextColorStyle xp _nextColorStyle 3 eq{ /_tmp _tmp 4 add pt _tmp index dup _rampSD/spot1 get /name get ne{ _rampSD /spot2 get begin /name xd /spot_K _tmp 2 add index def /spot_Y _tmp 3 add index def /spot_M _tmp 4 add index def /spot_C _tmp 5 add index def end }{ pop }ifelse }if _nextColorStyle 4 eq{ /_tmp _tmp 5 add pt _tmp index dup _rampSD/spot1 get /name get ne{ _rampSD /spot2 get begin /name xd /spot_K _tmp 5 add index def /spot_Y _tmp 6 add index def /spot_M _tmp 7 add index def /spot_C _tmp 8 add index def end }{ pop }ifelse }if }if _rampType 3 eq _rampType 6 eq or{ /_tint2Data gMark pt }if _ccProcess _ccRGB or{ /_tint1Data gMark pt }if _rgbRamp{ /_blueData gMark pt /_greenData gMark pt /_redData gMark pt }if _producingSeps{ _ccProcess _ccRGB or{ _rampType 3 eq _rampType 6 eq or{ _rampSD /spot2 get begin /tintImage _gradType 0 eq{ _tint2Data }{ _tint1Data }ifelse def name null eq{ /name /Black def }if end }if _rampSD /spot1 get begin /tintImage _gradType 0 eq _rampType 2 eq or _rampType 5 eq or{ _tint1Data }{ _tint2Data }ifelse def _rampType 2 eq _rampType 5 eq or{ name null eq{ /name _rampSD/spot2 get /name get def /spot_C _rampSD/spot2 get /spot_C get def /spot_M _rampSD/spot2 get /spot_M get def /spot_Y _rampSD/spot2 get /spot_Y get def /spot_K _rampSD/spot2 get /spot_K get def _rampSD/spot2 get /name null put }if }{ name null eq{ /name /Black def }if }ifelse end }if }if /_blackData gMark pt _rampType 0 gt{ counttomark 4 add -3 roll /_yellowData xp /_magentaData xp /_cyanData xp }if _ramp{ /_nSamples [ _rampType 0 eq {_blackData}if _rampType 1 eq {_cyanData _magentaData _yellowData _blackData}if _rampType 2 eq {_cyanData _magentaData _yellowData _blackData _tint1Data}if _rampType 3 eq {_cyanData _magentaData _yellowData _blackData _tint1Data _tint2Data}if _rampType 4 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData}if _rampType 5 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData _tint1Data}if _rampType 6 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData _tint1Data _tint2Data}if ] getNSamples pt _enabledSmoothShade not {/_ramp _nSamples 1 gt pt} if } if setCStop }def /rectImage{ gsave /_sInc 1 pt /_bInc 1 _nSamples div pt /_nSubSamples _nSamples pt /_optimize false pt _subSampleOK{ /_uRampLen 1 0 dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt pt /_pChange _uRampLen 0 eq{0}{_nSamples _uRampLen div}ifelse pt _pChange .5 gt dup /_optimize xp{ /_nSubSamples _uRampLen 2 div round cvi dup 1 le{pop 2}if pt /_bInc 1 _nSubSamples div pt /_sInc _nSamples 1 sub _nSubSamples 1 sub div pt }if }if 0 _nSubSamples [ /dup cvx _optimize { /round cvx /cvi cvx } if /_ndx /exch cvx /pt cvx blendColor 0 0 _bInc 1 /rectfill cvx _bInc 0 /translate cvx _sInc /add cvx ] cvx bind repeat pop _spotColor{ nsetcustomcolorend }if grestore }def /radialInit{ /_nRadSamples _nSamples dup 0 eq{pop 1}if pt /_sInc -1 pt /_rampLen _rampPoint _endPoint sub pt /_bInc _rampLen _nSamples div neg pt /_optimize false pt _subSampleOK{ /_uRampLen _rampLen 0 dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt 0 _rampLen dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt 2 copy lt{ exch }if pop pt /_pChange _uRampLen 0 eq{ 0 }{ _nSamples _uRampLen div }ifelse pt _pChange .5 gt dup /_optimize xp{ /_nRadSamples _uRampLen 2 div round cvi dup 1 le{pop 2}if pt /_bInc _rampLen _nRadSamples div neg pt /_sInc _nSamples 1 sub _nRadSamples 1 sub div neg pt }if }if _radHilite{ /_xBCInc _xHi _rampLen mul _nRadSamples div pt /_yBCInc _yHi _rampLen mul _nRadSamples div pt }if }def /radialRamp{ _enabledSmoothShade{ fillRamp }{ /_saveMatrix _saveMatrix currentmatrix def radialInit % % true _producingSeps _rgbRamp not and{ _nSamples 1 gt{ pop /_ndx 0 pt [blendColor] cvx exec currentInkN /_ndx _nSamples 1 sub pt [blendColor] cvx exec currentInkN or }if }if { _rampPoint _nSamples 1 sub _nRadSamples [ /dup cvx _optimize{ /round cvx /cvi cvx }if /_ndx /exch cvx /pt cvx _usingShells{ /_firstShell cvx{ /_firstShell false pt }{ 0 0 3 index 360 0 arcn fill }/ifelse cvx }if blendColor _usingShells{ 0 0 3 /index cvx 0 360 /arc cvx }{ 0 0 3 /index cvx 0 360 /arc cvx /fill cvx }ifelse /exch cvx _bInc /add cvx /exch cvx _sInc /add cvx _radHilite{ _xBCInc _yBCInc /translate cvx }if ] cvx bind repeat pop pop }{ _usingShells{ 0 0 _rampPoint 360 0 arcn fill }if }ifelse _saveMatrix setmatrix _radHilite{ _xHi _rampLen mul _yHi _rampLen mul translate }if _usingShells _rampIndex 1 eq and{ fill }if _spotColor{ nsetcustomcolorend }if }ifelse }def end end defaultpacking setpacking %%EndResource %%BeginProcSet: Adobe_ColorImage_AI6 1.3 0 userdict /Adobe_ColorImage_AI6 known not { userdict /Adobe_ColorImage_AI6 53 dict put } if userdict /Adobe_ColorImage_AI6 get begin /initialize { Adobe_ColorImage_AI6 begin Adobe_ColorImage_AI6 { dup type /arraytype eq { dup xcheck { bind } if } if pop pop } forall } def /terminate { end } def currentdict /Adobe_ColorImage_AI6_Vars known not { /Adobe_ColorImage_AI6_Vars 41 dict def } if Adobe_ColorImage_AI6_Vars begin /plateindex -1 def /_newproc null def /_proc1 null def /_proc2 null def /sourcearray 4 array def /_ptispace null def /_ptiname null def /_pti0 0 def /_pti1 0 def /_ptiproc null def /_ptiscale 0 def /_pticomps 0 def /_ptibuf 0 string def /_gtigray 0 def /_cticmyk null def /_rtirgb null def /XIEnable true def /XIType 0 def /XIEncoding 0 def /XICompression 0 def /XIChannelCount 0 def /XIBitsPerPixel 0 def /XIImageHeight 0 def /XIImageWidth 0 def /XIImageMatrix null def /XIRowBytes 0 def /XIFile null def /XIBuffer1 null def /XIBuffer2 null def /XIBuffer3 null def /XIDataProc null def /XIColorSpace /DeviceGray def /XIColorValues 0 def /XIPlateList false def end /ci6colorimage /colorimage where {/colorimage get}{null} ifelse def /ci6image systemdict /image get def /ci6curtransfer systemdict /currenttransfer get def /ci6curoverprint /currentoverprint where {/currentoverprint get}{{_of}} ifelse def /ci6foureq { 4 index ne { pop pop pop false }{ 4 index ne { pop pop false }{ 4 index ne { pop false }{ 4 index eq } ifelse } ifelse } ifelse } def /ci6testplate { Adobe_ColorImage_AI6_Vars begin /plateindex -1 def /setcmykcolor where { pop gsave 1 0 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub 0 1 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub 0 0 1 0 setcmykcolor systemdict /currentgray get exec 1 exch sub 0 0 0 1 setcmykcolor systemdict /currentgray get exec 1 exch sub grestore 1 0 0 0 ci6foureq { /plateindex 0 def }{ 0 1 0 0 ci6foureq { /plateindex 1 def }{ 0 0 1 0 ci6foureq { /plateindex 2 def }{ 0 0 0 1 ci6foureq { /plateindex 3 def }{ 0 0 0 0 ci6foureq { /plateindex 5 def } if } ifelse } ifelse } ifelse } ifelse pop pop pop pop } if plateindex end } def /ci6concatprocs { /packedarray where { pop dup type /packedarraytype eq 2 index type /packedarraytype eq or }{ false } ifelse { /_proc2 exch cvlit def /_proc1 exch cvlit def _proc1 aload pop _proc2 aload pop _proc1 length _proc2 length add packedarray cvx }{ /_proc2 exch cvlit def /_proc1 exch cvlit def /_newproc _proc1 length _proc2 length add array def _newproc 0 _proc1 putinterval _newproc _proc1 length _proc2 putinterval _newproc cvx } ifelse } def /ci6istint { type /arraytype eq } def /ci6isspot { dup type /arraytype eq { dup length 1 sub get /Separation eq }{ pop false } ifelse } def /ci6spotname { dup ci6isspot {dup length 2 sub get}{pop ()} ifelse } def /ci6altspace { aload pop pop pop ci6colormake } def /ci6numcomps { dup /DeviceGray eq { pop 1 }{ dup /DeviceRGB eq { pop 3 }{ /DeviceCMYK eq { 4 }{ 1 } ifelse } ifelse } ifelse } def /ci6marksplate { dup /DeviceGray eq { pop plateindex 3 eq }{ dup /DeviceRGB eq { pop plateindex 5 ne }{ dup /DeviceCMYK eq { pop plateindex 5 ne }{ dup ci6isspot { /findcmykcustomcolor where { pop dup length 2 sub get 0.1 0.1 0.1 0.1 5 -1 roll findcmykcustomcolor 1 setcustomcolor systemdict /currentgray get exec 1 ne }{ pop plateindex 5 ne } ifelse }{ pop plateindex 5 ne } ifelse } ifelse } ifelse } ifelse } def /ci6colormake { dup ci6numcomps exch 1 index 2 add 1 roll dup 1 eq {pop}{array astore} ifelse exch } def /ci6colorexpand { dup ci6spotname exch dup ci6istint { ci6altspace exch 4 1 roll }{ 1 3 1 roll } ifelse } def /ci6colortint { dup /DeviceGray eq { 3 1 roll 1 exch sub mul 1 exch sub exch }{ dup /DeviceRGB eq { 3 1 roll {1 exch sub 1 index mul 1 exch sub exch} forall pop 3 array astore exch }{ dup /DeviceCMYK eq { 3 1 roll {1 index mul exch} forall pop 4 array astore exch }{ 3 1 roll mul exch } ifelse } ifelse } ifelse } def /ci6colortocmyk { dup /DeviceGray eq { pop 1 exch sub 0 0 0 4 -1 roll 4 array astore }{ dup /DeviceRGB eq { pop aload pop _rgbtocmyk 4 array astore }{ dup /DeviceCMYK eq { pop }{ ci6altspace ci6colortint ci6colortocmyk } ifelse } ifelse } ifelse } def /ci6makeimagedict { 7 dict begin /ImageType 1 def /Decode exch def /DataSource exch def /ImageMatrix exch def /BitsPerComponent exch def /Height exch def /Width exch def currentdict end } def /ci6stringinvert { 0 1 2 index length 1 sub { dup 2 index exch get 255 exch sub 2 index 3 1 roll put } for } def /ci6stringknockout { 0 1 2 index length 1 sub { 255 2 index 3 1 roll put } for } def /ci6stringapply { 0 1 4 index length 1 sub { dup 4 index exch get 3 index 3 1 roll 3 index exec } for pop exch pop } def /ci6walkrgbstring { 0 3 index dup length 1 sub 0 3 3 -1 roll { 3 getinterval {} forall 5 index exec 3 index } for 5 {pop} repeat } def /ci6walkcmykstring { 0 3 index dup length 1 sub 0 4 3 -1 roll { 4 getinterval {} forall 6 index exec 3 index } for 5 { pop } repeat } def /ci6putrgbtograystr { .11 mul exch .59 mul add exch .3 mul add cvi 3 copy put pop 1 add } def /ci6putcmyktograystr { exch .11 mul add exch .59 mul add exch .3 mul add dup 255 gt { pop 255 } if 255 exch sub cvi 3 copy put pop 1 add } def /ci6rgbtograyproc { Adobe_ColorImage_AI6_Vars begin sourcearray 0 get exec XIBuffer3 dup 3 1 roll /ci6putrgbtograystr load exch ci6walkrgbstring end } def /ci6cmyktograyproc { Adobe_ColorImage_AI6_Vars begin sourcearray 0 get exec XIBuffer3 dup 3 1 roll /ci6putcmyktograystr load exch ci6walkcmykstring end } def /ci6separatecmykproc { Adobe_ColorImage_AI6_Vars begin sourcearray 0 get exec XIBuffer3 0 2 index plateindex 4 2 index length 1 sub { get 255 exch sub 3 copy put pop 1 add 2 index } for pop pop exch pop end } def /ci6compositeimage { dup 1 eq { pop pop image }{ /ci6colorimage load null ne { ci6colorimage }{ 3 1 roll pop sourcearray 0 3 -1 roll put 3 eq {/ci6rgbtograyproc}{/ci6cmyktograyproc} ifelse load image } ifelse } ifelse } def /ci6knockoutimage { gsave 0 ci6curtransfer exec 1 ci6curtransfer exec eq { 0 ci6curtransfer exec 0.5 lt }{ 0 ci6curtransfer exec 1 ci6curtransfer exec gt } ifelse {{pop 0}}{{pop 1}} ifelse systemdict /settransfer get exec ci6compositeimage grestore } def /ci6drawimage { ci6testplate -1 eq { pop ci6compositeimage }{ dup type /arraytype eq { dup length plateindex gt {plateindex get}{pop false} ifelse }{ { true }{ dup 1 eq {plateindex 3 eq}{plateindex 3 le} ifelse } ifelse } ifelse { dup 1 eq { pop pop ci6image }{ dup 3 eq { ci6compositeimage }{ pop pop sourcearray 0 3 -1 roll put /ci6separatecmykproc load ci6image } ifelse } ifelse }{ ci6curoverprint { 7 {pop} repeat }{ ci6knockoutimage } ifelse } ifelse } ifelse } def /ci6proctintimage { /_ptispace exch store /_ptiname exch store /_pti1 exch store /_pti0 exch store /_ptiproc exch store /_pticomps _ptispace ci6numcomps store /_ptiscale _pti1 _pti0 sub store level2? { _ptiname length 0 gt version cvr 2012 ge and { [/Separation _ptiname _ptispace {_ptiproc}] setcolorspace [_pti0 _pti1] ci6makeimagedict ci6image }{ [/Indexed _ptispace 255 {255 div _ptiscale mul _pti0 add _ptiproc}] setcolorspace [0 255] ci6makeimagedict ci6image } ifelse }{ _pticomps 1 eq { { dup { 255 div _ptiscale mul _pti0 add _ptiproc 255 mul cvi put } ci6stringapply } ci6concatprocs ci6image }{ { dup length _pticomps mul dup _ptibuf length ne {/_ptibuf exch string store}{pop} ifelse _ptibuf { exch _pticomps mul exch 255 div _ptiscale mul _pti0 add _ptiproc _pticomps 2 add -2 roll _pticomps 1 sub -1 0 { 1 index add 2 index exch 5 -1 roll 255 mul cvi put } for pop pop } ci6stringapply } ci6concatprocs false _pticomps /ci6colorimage load null eq {7 {pop} repeat}{ci6colorimage} ifelse } ifelse } ifelse } def /ci6graytintimage { /_gtigray 5 -1 roll store {1 _gtigray sub mul 1 exch sub} 4 1 roll /DeviceGray ci6proctintimage } def /ci6cmyktintimage { /_cticmyk 5 -1 roll store {_cticmyk {1 index mul exch} forall pop} 4 1 roll /DeviceCMYK ci6proctintimage } def /ci6rgbtintimage { /_rtirgb 5 -1 roll store {_rtirgb {1 exch sub 1 index mul 1 exch sub exch} forall pop} 4 1 roll /DeviceRGB ci6proctintimage } def /ci6tintimage { ci6testplate -1 eq { ci6colorexpand 3 -1 roll 5 -1 roll {0}{0 exch} ifelse 4 2 roll dup /DeviceGray eq { pop ci6graytintimage }{ dup /DeviceRGB eq { pop ci6rgbtintimage }{ pop ci6cmyktintimage } ifelse } ifelse }{ dup ci6marksplate { plateindex 5 lt { ci6colortocmyk plateindex get dup 0 eq ci6curoverprint and { 7 {pop} repeat }{ 1 exch sub exch {1 0}{0 1} ifelse () ci6graytintimage } ifelse }{ pop exch {0}{0 exch} ifelse 0 3 1 roll () ci6graytintimage } ifelse }{ ci6curoverprint { 8 {pop} repeat }{ pop pop pop {pop 1} 0 1 () /DeviceGray ci6proctintimage } ifelse } ifelse } ifelse } def /XINullImage { } def /XIImageMask { XIImageWidth XIImageHeight false [XIImageWidth 0 0 XIImageHeight neg 0 0] /XIDataProc load imagemask } def /XIImageTint { XIImageWidth XIImageHeight XIBitsPerPixel [XIImageWidth 0 0 XIImageHeight neg 0 0] /XIDataProc load XIType 3 eq XIColorValues XIColorSpace ci6tintimage } def /XIImage { XIImageWidth XIImageHeight XIBitsPerPixel [XIImageWidth 0 0 XIImageHeight neg 0 0] /XIDataProc load false XIChannelCount XIPlateList ci6drawimage } def /XG { pop pop } def /XF { 13 {pop} repeat } def /Xh { Adobe_ColorImage_AI6_Vars begin gsave /XIType exch def /XIImageHeight exch def /XIImageWidth exch def /XIImageMatrix exch def 0 0 moveto XIImageMatrix concat XIImageWidth XIImageHeight scale /_lp /null ddef _fc /_lp /imagemask ddef end } def /XH { Adobe_ColorImage_AI6_Vars begin grestore end } def /XIEnable { Adobe_ColorImage_AI6_Vars /XIEnable 3 -1 roll put } def /XC { Adobe_ColorImage_AI6_Vars begin ci6colormake /XIColorSpace exch def /XIColorValues exch def end } def /XIPlates { Adobe_ColorImage_AI6_Vars begin /XIPlateList exch def end } def /XI { Adobe_ColorImage_AI6_Vars begin gsave /XIType exch def cvi dup 256 idiv /XICompression exch store 256 mod /XIEncoding exch store pop pop /XIChannelCount exch def /XIBitsPerPixel exch def /XIImageHeight exch def /XIImageWidth exch def pop pop pop pop /XIImageMatrix exch def XIBitsPerPixel 1 eq { XIImageWidth 8 div ceiling cvi }{ XIImageWidth XIChannelCount mul } ifelse /XIRowBytes exch def XIEnable { /XIBuffer3 XIImageWidth string def XICompression 0 eq { /XIBuffer1 XIRowBytes string def XIEncoding 0 eq { {currentfile XIBuffer1 readhexstring pop} }{ {currentfile XIBuffer1 readstring pop} } ifelse }{ /XIBuffer1 256 string def /XIBuffer2 XIRowBytes string def {currentfile XIBuffer1 readline pop (%) anchorsearch {pop} if} /ASCII85Decode filter /DCTDecode filter /XIFile exch def {XIFile XIBuffer2 readstring pop} } ifelse /XIDataProc exch def XIType 1 ne { 0 setgray } if XIType 1 eq { XIImageMask }{ XIType 2 eq XIType 3 eq or { XIImageTint }{ XIImage } ifelse } ifelse }{ XINullImage } ifelse /XIPlateList false def grestore end } def end %%EndProcSet %%BeginResource: procset Adobe_Illustrator_AI5 1.3 0 %%Title: (Adobe Illustrator (R) Version 8.0 Full Prolog) %%Version: 1.3 0 %%CreationDate: (3/7/1994) () %%Copyright: ((C) 1987-1998 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_Illustrator_AI5_vars 112 dict dup begin put /_?cmyk false def /_eo false def /_lp /none def /_pf { } def /_ps { } def /_psf { } def /_pss { } def /_pjsf { } def /_pjss { } def /_pola 0 def /_doClip 0 def /cf currentflat def /_lineorientation 0 def /_charorientation 0 def /_yokoorientation 0 def /_tm matrix def /_renderStart [ /e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0 ] def /_renderEnd [ null null null null /i1 /i1 /i1 /i1 ] def /_render -1 def /_shift [0 0] def /_ax 0 def /_ay 0 def /_cx 0 def /_cy 0 def /_leading [ 0 0 ] def /_ctm matrix def /_mtx matrix def /_sp 16#020 def /_hyphen (-) def /_fontSize 0 def /_fontAscent 0 def /_fontDescent 0 def /_fontHeight 0 def /_fontRotateAdjust 0 def /Ss 256 string def Ss 0 (fonts/) putinterval /_cnt 0 def /_scale [1 1] def /_nativeEncoding 0 def /_useNativeEncoding 0 def /_tempEncode 0 def /_pntr 0 def /_tDict 2 dict def /_hfname 100 string def /_hffound false def /Tx { } def /Tj { } def /CRender { } def /_AI3_savepage { } def /_gf null def /_cf 4 array def /_rgbf 3 array def /_if null def /_of false def /_fc { } def /_gs null def /_cs 4 array def /_rgbs 3 array def /_is null def /_os false def /_sc { } def /_pd 1 dict def /_ed 15 dict def /_pm matrix def /_fm null def /_fd null def /_fdd null def /_sm null def /_sd null def /_sdd null def /_i null def /_lobyte 0 def /_hibyte 0 def /_cproc null def /_cscript 0 def /_hvax 0 def /_hvay 0 def /_hvwb 0 def /_hvcx 0 def /_hvcy 0 def /_bitfont null def /_bitlobyte 0 def /_bithibyte 0 def /_bitkey null def /_bitdata null def /_bitindex 0 def /discardSave null def /buffer 256 string def /beginString null def /endString null def /endStringLength null def /layerCnt 1 def /layerCount 1 def /perCent (%) 0 get def /perCentSeen? false def /newBuff null def /newBuffButFirst null def /newBuffLast null def /clipForward? false def end userdict /Adobe_Illustrator_AI5 known not { userdict /Adobe_Illustrator_AI5 100 dict put } if userdict /Adobe_Illustrator_AI5 get begin /initialize { Adobe_Illustrator_AI5 dup begin Adobe_Illustrator_AI5_vars begin /_aicmykps where {pop /_?cmyk _aicmykps def}if discardDict { bind pop pop } forall dup /nc get begin { dup xcheck 1 index type /operatortype ne and { bind } if pop pop } forall end newpath } def /terminate { end end } def /_ null def /ddef { Adobe_Illustrator_AI5_vars 3 1 roll put } def /xput { dup load dup length exch maxlength eq { dup dup load dup length 2 mul dict copy def } if load begin def end } def /npop { { pop } repeat } def /hswj { dup stringwidth 3 2 roll { _hvwb eq { exch _hvcx add exch _hvcy add } if exch _hvax add exch _hvay add } cforall } def /vswj { 0 0 3 -1 roll { dup 255 le _charorientation 1 eq and { dup cstring stringwidth 5 2 roll _hvwb eq { exch _hvcy sub exch _hvcx sub } if exch _hvay sub exch _hvax sub 4 -1 roll sub exch 3 -1 roll sub exch } { _hvwb eq { exch _hvcy sub exch _hvcx sub } if exch _hvay sub exch _hvax sub _fontHeight sub } ifelse } cforall } def /swj { 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef _lineorientation 0 eq { hswj } { vswj } ifelse } def /sw { 0 0 0 6 3 roll swj } def /vjss { 4 1 roll { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto gsave false charpath currentpoint 5 index setmatrix stroke grestore _fontRotateAdjust sub moveto _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto 90 rotate } { currentpoint _fontHeight sub 5 index sub 3 index _sp eq { 9 index sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto gsave 2 index false charpath 6 index setmatrix stroke grestore moveto pop pop } ifelse } cforall 6 npop } def /hjss { 4 1 roll { dup cstring gsave false charpath currentpoint 5 index setmatrix stroke grestore moveto _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto } cforall 6 npop } def /jss { _lineorientation 0 eq { hjss } { vjss } ifelse } def /ss { 0 0 0 7 3 roll jss } def /vjsp { 4 1 roll { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto false charpath currentpoint _fontRotateAdjust sub moveto _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto 90 rotate } { currentpoint _fontHeight sub 5 index sub 3 index _sp eq { 9 index sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto 2 index false charpath moveto pop pop } ifelse } cforall 6 npop } def /hjsp { 4 1 roll { dup cstring false charpath _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto } cforall 6 npop } def /jsp { matrix currentmatrix _lineorientation 0 eq {hjsp} {vjsp} ifelse } def /sp { matrix currentmatrix 0 0 0 7 3 roll _lineorientation 0 eq {hjsp} {vjsp} ifelse } def /pl { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform } def /setstrokeadjust where { pop true setstrokeadjust /c { curveto } def /C /c load def /v { currentpoint 6 2 roll curveto } def /V /v load def /y { 2 copy curveto } def /Y /y load def /l { lineto } def /L /l load def /m { moveto } def } { /c { pl curveto } def /C /c load def /v { currentpoint 6 2 roll pl curveto } def /V /v load def /y { pl 2 copy curveto } def /Y /y load def /l { pl lineto } def /L /l load def /m { pl moveto } def } ifelse /d { setdash } def /cf { } def /i { dup 0 eq { pop cf } if setflat } def /j { setlinejoin } def /J { setlinecap } def /M { setmiterlimit } def /w { setlinewidth } def /XR { 0 ne /_eo exch ddef } def /H { } def /h { closepath } def /N { _pola 0 eq { _doClip 1 eq { _eo {eoclip} {clip} ifelse /_doClip 0 ddef } if newpath } { /CRender { N } ddef } ifelse } def /n { N } def /F { _pola 0 eq { _doClip 1 eq { gsave _pf grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _fc /_doClip 0 ddef } { _pf } ifelse } { /CRender { F } ddef } ifelse } def /f { closepath F } def /S { _pola 0 eq { _doClip 1 eq { gsave _ps grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc /_doClip 0 ddef } { _ps } ifelse } { /CRender { S } ddef } ifelse } def /s { closepath S } def /B { _pola 0 eq { _doClip 1 eq gsave F grestore { gsave S grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc /_doClip 0 ddef } { S } ifelse } { /CRender { B } ddef } ifelse } def /b { closepath B } def /W { /_doClip 1 ddef } def /* { count 0 ne { dup type /stringtype eq { pop } if } if newpath } def /u { } def /U { } def /q { _pola 0 eq { gsave } if } def /Q { _pola 0 eq { grestore } if } def /*u { _pola 1 add /_pola exch ddef } def /*U { _pola 1 sub /_pola exch ddef _pola 0 eq { CRender } if } def /D { pop } def /*w { } def /*W { } def /` { /_i save ddef clipForward? { nulldevice } if 6 1 roll 4 npop concat pop userdict begin /showpage { } def 0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit [] 0 setdash /setstrokeadjust where {pop false setstrokeadjust} if newpath 0 setgray false setoverprint } def /~ { end _i restore } def /_rgbtocmyk { 3 { 1 exch sub 3 1 roll } repeat 3 copy 1 4 1 roll 3 { 3 index 2 copy gt { exch } if pop 4 1 roll } repeat pop pop pop 4 1 roll 3 { 3 index sub 3 1 roll } repeat 4 -1 roll } def /setrgbfill { _rgbf astore pop /_fc { _lp /fill ne { _of setoverprint _rgbf aload pop setrgbcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /setrgbstroke { _rgbs astore pop /_sc { _lp /stroke ne { _os setoverprint _rgbs aload pop setrgbcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /O { 0 ne /_of exch ddef /_lp /none ddef } def /R { 0 ne /_os exch ddef /_lp /none ddef } def /g { /_gf exch ddef /_fc { _lp /fill ne { _of setoverprint _gf setgray /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /G { /_gs exch ddef /_sc { _lp /stroke ne { _os setoverprint _gs setgray /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /k { _cf astore pop /_fc { _lp /fill ne { _of setoverprint _cf aload pop setcmykcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /K { _cs astore pop /_sc { _lp /stroke ne { _os setoverprint _cs aload pop setcmykcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /Xa { _?cmyk { 3 npop k }{ setrgbfill 4 npop } ifelse } def /XA { _?cmyk { 3 npop K }{ setrgbstroke 4 npop } ifelse } def /Xs { /_gf exch ddef 5 npop /_fc { _lp /fill ne { _of setoverprint _gf setAIseparationgray /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /XS { /_gs exch ddef 5 npop /_sc { _lp /stroke ne { _os setoverprint _gs setAIseparationgray /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /Xx { exch /_gf exch ddef 0 eq { findcmykcustomcolor }{ _?cmyk {true}{/findrgbcustomcolor where{pop false}{true}ifelse}ifelse { 4 1 roll 3 npop findcmykcustomcolor }{ 8 -4 roll 4 npop findrgbcustomcolor } ifelse } ifelse /_if exch ddef /_fc { _lp /fill ne { _of setoverprint _if _gf 1 exch sub setcustomcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /XX { exch /_gs exch ddef 0 eq { findcmykcustomcolor }{ _?cmyk {true}{/findrgbcustomcolor where{pop false}{true}ifelse}ifelse { 4 1 roll 3 npop findcmykcustomcolor }{ 8 -4 roll 4 npop findrgbcustomcolor } ifelse } ifelse /_is exch ddef /_sc { _lp /stroke ne { _os setoverprint _is _gs 1 exch sub setcustomcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /x { /_gf exch ddef findcmykcustomcolor /_if exch ddef /_fc { _lp /fill ne { _of setoverprint _if _gf 1 exch sub setcustomcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /X { /_gs exch ddef findcmykcustomcolor /_is exch ddef /_sc { _lp /stroke ne { _os setoverprint _is _gs 1 exch sub setcustomcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /XK { 3 -1 roll pop 0 eq { 1 exch sub 3 {dup 3 1 roll mul 5 1 roll} repeat mul 4 1 roll K } { 1 exch sub 4 1 roll 3 {1 exch sub 3 index mul 1 exch sub 3 1 roll} repeat 4 -1 roll pop XA } ifelse } def /Xk { 3 -1 roll pop 0 eq { 1 exch sub 3 {dup 3 1 roll mul 5 1 roll} repeat mul 4 1 roll k } { 1 exch sub 4 1 roll 3 {1 exch sub 3 index mul 1 exch sub 3 1 roll} repeat 4 -1 roll pop Xa } ifelse } def /A { pop } def /annotatepage { userdict /annotatepage 2 copy known {get exec} {pop pop} ifelse } def /XT { pop pop } def /Xt { pop } def /discard { save /discardSave exch store discardDict begin /endString exch store gt38? { 2 add } if load stopped pop end discardSave restore } bind def userdict /discardDict 7 dict dup begin put /pre38Initialize { /endStringLength endString length store /newBuff buffer 0 endStringLength getinterval store /newBuffButFirst newBuff 1 endStringLength 1 sub getinterval store /newBuffLast newBuff endStringLength 1 sub 1 getinterval store } def /shiftBuffer { newBuff 0 newBuffButFirst putinterval newBuffLast 0 currentfile read not { stop } if put } def 0 { pre38Initialize mark currentfile newBuff readstring exch pop { { newBuff endString eq { cleartomark stop } if shiftBuffer } loop } { stop } ifelse } def 1 { pre38Initialize /beginString exch store mark currentfile newBuff readstring exch pop { { newBuff beginString eq { /layerCount dup load 1 add store } { newBuff endString eq { /layerCount dup load 1 sub store layerCount 0 eq { cleartomark stop } if } if } ifelse shiftBuffer } loop } if } def 2 { mark { currentfile buffer {readline} stopped { % assume error was due to overfilling the buffer }{ not { stop } if endString eq { cleartomark stop } if }ifelse } loop } def 3 { /beginString exch store /layerCnt 1 store mark { currentfile buffer {readline} stopped { % assume error was due to overfilling the buffer }{ not { stop } if dup beginString eq { pop /layerCnt dup load 1 add store } { endString eq { layerCnt 1 eq { cleartomark stop } { /layerCnt dup load 1 sub store } ifelse } if } ifelse }ifelse } loop } def end userdict /clipRenderOff 15 dict dup begin put { /n /N /s /S /f /F /b /B } { { _doClip 1 eq { /_doClip 0 ddef _eo {eoclip} {clip} ifelse } if newpath } def } forall /Tr /pop load def /Bb {} def /BB /pop load def /Bg {12 npop} def /Bm {6 npop} def /Bc /Bm load def /Bh {4 npop} def end /Lb { 6 npop 7 2 roll 5 npop 0 eq { 0 eq { (%AI5_BeginLayer) 1 (%AI5_EndLayer--) discard } { /clipForward? true def /Tx /pop load def /Tj /pop load def currentdict end clipRenderOff begin begin } ifelse } { 0 eq { save /discardSave exch store } if } ifelse } bind def /LB { discardSave dup null ne { restore } { pop clipForward? { currentdict end end begin /clipForward? false ddef } if } ifelse } bind def /Pb { pop pop 0 (%AI5_EndPalette) discard } bind def /Np { 0 (%AI5_End_NonPrinting--) discard } bind def /Ln /pop load def /Ap /pop load def /Ar { 72 exch div 0 dtransform dup mul exch dup mul add sqrt dup 1 lt { pop 1 } if setflat } def /Mb { q } def /Md { } def /MB { Q } def /nc 4 dict def nc begin /setgray { pop } bind def /setcmykcolor { 4 npop } bind def /setrgbcolor { 3 npop } bind def /setcustomcolor { 2 npop } bind def currentdict readonly pop end /XP { 4 npop } bind def /XD { pop } bind def end setpacking %%EndResource %%BeginResource: procset Adobe_pattern_AI5 1.1 0 %%Title: (Adobe Illustrator (R) Version 5.0 Pattern Operators) %%Version: 1.1 0 %%CreationDate: (03/26/93) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_Illustrator_AI5 known not { userdict /Adobe_Illustrator_AI5 95 dict put } if userdict /Adobe_Illustrator_AI5 get begin /@ { } def /& { } def /dp { dup null eq { pop _dp 0 ne { 0 1 _dp 1 sub _dl mod { _da exch get 3 get } for _dp 1 sub _dl mod 1 add packedarray _da 0 get aload pop 8 -1 roll 5 -1 roll pop 4 1 roll definepattern pop } if } { _dp 0 ne _dp _dl mod 0 eq and { null dp } if 7 packedarray _da exch _dp _dl mod exch put _dp _dl mod _da 0 get 4 get 2 packedarray /_dp _dp 1 add def } ifelse } def /E { _ed begin dup 0 get type /arraytype ne { 0 { dup 1 add index type /arraytype eq { 1 add } { exit } ifelse } loop array astore } if /_dd exch def /_ury exch def /_urx exch def /_lly exch def /_llx exch def /_n exch def /_y 0 def /_dl 4 def /_dp 0 def /_da _dl array def 0 1 _dd length 1 sub { /_d exch _dd exch get def 0 2 _d length 2 sub { /_x exch def /_c false def /_r _d _x 1 add get cvlit def _r _ ne { _urx _llx sub _ury _lly sub [ 1 0 0 1 0 0 ] [ /save cvx _llx neg _lly neg /translate cvx _c { nc /begin cvx } if _r dup type /stringtype eq { cvx } { { exec } /forall cvx } ifelse _c { /end cvx } if /restore cvx ] cvx /_fn 12 _n length add string def _y _fn cvs pop /_y _y 1 add def _fn 12 _n putinterval _fn _c false dp _d exch _x 1 add exch put } if } for } for null dp _n _dd /_pd end xput } def /fc { _fm dup concatmatrix pop } def /p { /_fm exch ddef 9 -2 roll _pm translate fc 7 -2 roll _pm scale fc 5 -1 roll _pm rotate fc 4 -2 roll exch 0 ne { dup _pm rotate fc 1 -1 _pm scale fc neg _pm rotate fc } { pop } ifelse dup _pm rotate fc exch dup sin exch cos div 1 0 0 1 0 6 2 roll _pm astore fc neg _pm rotate fc _pd exch get /_fdd exch ddef /_pf { save /_doClip 0 ddef 0 1 _fdd length 1 sub { /_fd exch _fdd exch get ddef _fd 0 2 _fd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _fc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _fm patternfill } { pop fill } ifelse grestore pop } for pop } for restore newpath } ddef /_psf { save /_doClip 0 ddef 0 1 _fdd length 1 sub { /_fd exch _fdd exch get ddef _fd 0 2 _fd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _fc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _fm 9 copy 6 npop patternashow } { pop 6 copy 3 npop hvashow } ifelse grestore pop } for pop } for restore sw rmoveto } ddef /_pjsf { save /_doClip 0 ddef 0 1 _fdd length 1 sub { /_fd exch _fdd exch get ddef _fd 0 2 _fd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _fc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _fm 12 copy 6 npop patternawidthshow } { pop 9 copy 3 npop hvawidthshow } ifelse grestore pop } for pop } for restore swj rmoveto } ddef /_lp /none ddef } def /sc { _sm dup concatmatrix pop } def /P { /_sm exch ddef 9 -2 roll _pm translate sc 7 -2 roll _pm scale sc 5 -1 roll _pm rotate sc 4 -2 roll exch 0 ne { dup _pm rotate sc 1 -1 _pm scale sc neg _pm rotate sc } { pop } ifelse dup _pm rotate sc exch dup sin exch cos div 1 0 0 1 0 6 2 roll _pm astore sc neg _pm rotate sc _pd exch get /_sdd exch ddef /_ps { save /_doClip 0 ddef 0 1 _sdd length 1 sub { /_sd exch _sdd exch get ddef _sd 0 2 _sd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _sc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _sm patternstroke } { pop stroke } ifelse grestore pop } for pop } for restore newpath } ddef /_pss { save /_doClip 0 ddef 0 1 _sdd length 1 sub { /_sd exch _sdd exch get ddef _sd 0 2 _sd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _sc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _sm 10 copy 6 npop patternashowstroke } { pop 7 copy 3 npop ss } ifelse grestore pop } for pop } for restore pop sw rmoveto } ddef /_pjss { save /_doClip 0 ddef 0 1 _sdd length 1 sub { /_sd exch _sdd exch get ddef _sd 0 2 _sd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _sc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _sm 13 copy 6 npop patternawidthshowstroke } { pop 10 copy 3 npop jss } ifelse grestore pop } for pop } for restore pop swj rmoveto } ddef /_lp /none ddef } def end userdict /Adobe_pattern_AI5 18 dict dup begin put /initialize { /definepattern where { pop pop pop } { begin begin Adobe_pattern_AI5 begin Adobe_pattern_AI5 { dup xcheck { bind } if pop pop } forall mark cachestatus 7 1 roll pop pop pop pop exch pop exch { { 10000 add dup 2 index gt { exit } if dup setcachelimit } loop } stopped cleartomark end end end Adobe_pattern_AI5 begin } ifelse } def /terminate { currentdict Adobe_pattern_AI5 eq { end } if } def errordict /nocurrentpoint { pop stop } put errordict /invalidaccess { pop stop } put /patternencoding 256 array def 0 1 255 { patternencoding exch ( ) 2 copy exch 0 exch put cvn put } for /definepattern { 17 dict begin /uniform exch def /cache exch def /key exch def /procarray exch def /mtx exch matrix invertmatrix def /height exch def /width exch def /ctm matrix currentmatrix def /ptm matrix def /str 32 string def /slice 9 dict def slice /s 1 put slice /q 256 procarray length div sqrt floor cvi put slice /b 0 put /FontBBox [ 0 0 0 0 ] def /FontMatrix mtx matrix copy def /Encoding patternencoding def /FontType 3 def /BuildChar { exch begin /setstrokeadjust where {pop true setstrokeadjust} if slice begin dup q dup mul mod s idiv /i exch def dup q dup mul mod s mod /j exch def q dup mul idiv procarray exch get /xl j width s div mul def /xg j 1 add width s div mul def /yl i height s div mul def /yg i 1 add height s div mul def uniform { 1 1 } { width 0 dtransform dup mul exch dup mul add sqrt dup 1 add exch div 0 height dtransform dup mul exch dup mul add sqrt dup 1 add exch div } ifelse width 0 cache { xl 4 index mul yl 4 index mul xg 6 index mul yg 6 index mul setcachedevice } { setcharwidth } ifelse gsave scale newpath xl yl moveto xg yl lineto xg yg lineto xl yg lineto closepath clip newpath end end exec grestore } def key currentdict definefont end } def /patterncachesize { gsave newpath 0 0 moveto width 0 lineto width height lineto 0 height lineto closepath patternmatrix setmatrix pathbbox exch ceiling 4 -1 roll floor sub 3 1 roll ceiling exch floor sub mul 1 add grestore } def /patterncachelimit { cachestatus 7 1 roll 6 npop 8 mul } def /patternpath { exch dup begin setfont ctm setmatrix concat slice exch /b exch slice /q get dup mul mul put FontMatrix concat uniform { width 0 dtransform round width div exch round width div exch 0 height dtransform round height div exch height div exch 0 0 transform round exch round exch ptm astore setmatrix } { ptm currentmatrix pop } ifelse { currentpoint } stopped not { 2 npop pathbbox true 4 index 3 index eq 4 index 3 index eq and { pop false { { 2 npop } { 3 npop true } { 7 npop true } { pop true } pathforall } stopped { 5 npop true } if } if { height div ceiling height mul 4 1 roll width div ceiling width mul 4 1 roll height div floor height mul 4 1 roll width div floor width mul 4 1 roll 2 index sub height div ceiling cvi exch 3 index sub width div ceiling cvi exch 4 2 roll moveto FontMatrix mtx invertmatrix dup dup 4 get exch 5 get rmoveto ptm ptm concatmatrix pop slice /s patterncachesize patterncachelimit div ceiling sqrt ceiling cvi dup slice /q get gt { pop slice /q get } if put 0 1 slice /s get dup mul 1 sub { slice /b get add gsave 0 1 str length 1 sub { str exch 2 index put } for pop dup { gsave ptm setmatrix 1 index str length idiv { str show } repeat 1 index str length mod str exch 0 exch getinterval show grestore 0 height rmoveto } repeat grestore } for 2 npop } { 4 npop } ifelse } if end } def /patternclip { _eo {eoclip} {clip} ifelse } def /patternstrokepath { strokepath } def /patternmatrix matrix def /patternfill { dup type /dicttype eq { Adobe_pattern_AI5 /patternmatrix get } if gsave patternclip Adobe_pattern_AI5 /patternpath get exec grestore newpath } def /patternstroke { dup type /dicttype eq { Adobe_pattern_AI5 /patternmatrix get } if gsave patternstrokepath true { { { newpath moveto } { lineto } { curveto } { closepath 3 copy Adobe_pattern_AI5 /patternfill get exec } pathforall 3 npop } stopped { 5 npop patternclip Adobe_pattern_AI5 /patternfill get exec } if } { patternclip Adobe_pattern_AI5 /patternfill get exec } ifelse grestore newpath } def /vpatternawidthshow { 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto gsave false charpath currentpoint 5 index 5 index 5 index Adobe_pattern_AI5 /patternfill get exec grestore _fontRotateAdjust sub moveto _hvwb eq { _hvcx _hvcy rmoveto } if _hvax _hvay rmoveto 90 rotate } { currentpoint _fontHeight sub _hvax sub 3 index _hvwb eq { _hvcx sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto gsave 2 index false charpath 6 index 6 index 6 index Adobe_pattern_AI5 /patternfill get exec grestore newpath moveto pop pop } ifelse } cforall 3 npop } def /hpatternawidthshow { { dup cstring exch gsave 3 index eq { 5 index 5 index rmoveto } if false charpath currentpoint 9 index 9 index 9 index Adobe_pattern_AI5 /patternfill get exec grestore newpath moveto 2 copy rmoveto } cforall 8 npop } def /patternashow { 0 0 0 6 3 roll patternawidthshow } def /patternawidthshow { 6 index type /dicttype eq { Adobe_pattern_AI5 /patternmatrix get 7 1 roll } if _lineorientation 0 eq { hpatternawidthshow } { vpatternawidthshow } ifelse } def /vpatternawidthshowstroke { 7 1 roll 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto gsave false charpath currentpoint 3 index setmatrix 6 index 6 index 6 index Adobe_pattern_AI5 /patternstroke get exec grestore _fontRotateAdjust sub moveto _hvwb eq { _hvcx _hvcy rmoveto } if _hvax _hvay rmoveto 90 rotate } { currentpoint _fontHeight sub _hvax sub 3 index _hvwb eq { _hvcx sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto gsave 2 index false charpath 4 index setmatrix 7 index 7 index 7 index Adobe_pattern_AI5 /patternstroke get exec grestore newpath moveto pop pop } ifelse } cforall 4 npop } def /hpatternawidthshowstroke { 7 1 roll { dup cstring exch gsave 3 index eq { 5 index 5 index rmoveto } if false charpath currentpoint 7 index setmatrix 10 index 10 index 10 index Adobe_pattern_AI5 /patternstroke get exec grestore newpath moveto 2 copy rmoveto } cforall 9 npop } def /patternashowstroke { 0 0 0 7 3 roll patternawidthshowstroke } def /patternawidthshowstroke { 7 index type /dicttype eq { patternmatrix /patternmatrix get 8 1 roll } if _lineorientation 0 eq { hpatternawidthshowstroke } { vpatternawidthshowstroke } ifelse } def end setpacking %%EndResource %%BeginResource: procset Adobe_cshow 2.0 8 %%Title: (Writing System Operators) %%Version: 2.0 8 %%CreationDate: (1/23/89) () %%Copyright: ((C) 1992-1996 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_cshow 14 dict dup begin put /initialize { Adobe_cshow begin Adobe_cshow { dup xcheck { bind } if pop pop } forall end Adobe_cshow begin } def /terminate { currentdict Adobe_cshow eq { end } if } def /cforall { /_lobyte 0 ddef /_hibyte 0 ddef /_cproc exch ddef /_cscript currentfont /FontScript known { currentfont /FontScript get } { -1 } ifelse ddef { /_lobyte exch ddef _hibyte 0 eq _cscript 1 eq _lobyte 129 ge _lobyte 159 le and _lobyte 224 ge _lobyte 252 le and or and _cscript 2 eq _lobyte 161 ge _lobyte 254 le and and _cscript 3 eq _lobyte 161 ge _lobyte 254 le and and _cscript 25 eq _lobyte 161 ge _lobyte 254 le and and _cscript -1 eq or or or or and { /_hibyte _lobyte ddef } { _hibyte 256 mul _lobyte add _cproc /_hibyte 0 ddef } ifelse } forall } def /cstring { dup 256 lt { (s) dup 0 4 3 roll put } { dup 256 idiv exch 256 mod (hl) dup dup 0 6 5 roll put 1 4 3 roll put } ifelse } def /clength { 0 exch { 256 lt { 1 } { 2 } ifelse add } cforall } def /hawidthshow { { dup cstring show _hvax _hvay rmoveto _hvwb eq { _hvcx _hvcy rmoveto } if } cforall } def /vawidthshow { { dup 255 le _charorientation 1 eq and { -90 rotate 0 _fontRotateAdjust rmoveto cstring _hvcx _hvcy _hvwb _hvax _hvay 6 -1 roll awidthshow 0 _fontRotateAdjust neg rmoveto 90 rotate } { currentpoint _fontHeight sub exch _hvay sub exch _hvax sub 2 index _hvwb eq { exch _hvcy sub exch _hvcx sub } if 3 2 roll cstring dup stringwidth pop 2 div neg _fontAscent neg rmoveto show moveto } ifelse } cforall } def /hvawidthshow { 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef _lineorientation 0 eq { hawidthshow } { vawidthshow } ifelse } def /hvwidthshow { 0 0 3 -1 roll hvawidthshow } def /hvashow { 0 0 0 6 -3 roll hvawidthshow } def /hvshow { 0 0 0 0 0 6 -1 roll hvawidthshow } def currentdict readonly pop end setpacking %%EndResource %%BeginResource: procset Adobe_shading_AI8 1.0 0 %%Title: (Adobe Illustrator 8 Shading Procset) %%Version: 1.0 0 %%CreationDate: (12/17/97) () %%Copyright: ((C) 1987-1997 Adobe Systems Incorporated All Rights Reserved) userdict /defaultpacking currentpacking put true setpacking userdict /Adobe_shading_AI8 10 dict dup begin put /initialize { Adobe_shading_AI8 begin Adobe_shading_AI8 bdprocs Mesh /initialize get exec } def /terminate { currentdict Adobe_shading_AI8 eq { end } if } def /bdprocs { { dup xcheck 1 index type /arraytype eq and { bind } if pop pop } forall } def /X! {pop} def /X# {pop pop} def /Mesh 40 dict def Mesh begin /initialize { Mesh bdprocs Mesh begin /emulate? /AI8MeshEmulation where { pop AI8MeshEmulation }{ systemdict /shfill known not } ifelse def end } def /bd { shadingdict begin } def /paint { emulate? { end }{ /_lp /none ddef _fc /_lp /none ddef /AIColorSpace AIColorSpace tocolorspace store /ColorSpace AIColorSpace topsspace store version_ge_3010.106 not systemdict /setsmoothness known and { 0.0001 setsmoothness } if composite? { /DataSource getdatasrc def Matrix concat currentdict end shfill }{ AIColorSpace makesmarks AIPlateList markingplate and not isoverprint and { end }{ /ColorSpace /DeviceGray store /Decode [0 1 0 1 0 1] store /DataSource getplatesrc def Matrix concat currentdict end shfill } ifelse } ifelse } ifelse } def /shadingdict 12 dict def shadingdict begin /ShadingType 6 def /BitsPerCoordinate 16 def /BitsPerComponent 8 def /BitsPerFlag 8 def end /datafile null def /databuf 256 string def /dataptr 0 def /srcspace null def /srcchannels 0 def /dstchannels 0 def /dstplate 0 def /srctodstcolor null def /getplatesrc { /srcspace AIColorSpace store /srcchannels AIColorSpace getnchannels store /dstchannels 1 store /dstplate getplateindex store /srctodstcolor srcspace makesmarks { dstplate 4 eq { {1 exch sub} }{ {srcspace tocmyk 3 dstplate sub index 1 exch sub 5 1 roll 4 {pop} repeat} } ifelse }{ {srcchannels {pop} repeat 1} } ifelse store /datafile getdatasrc store /rdpatch168 load DataLength () /SubFileDecode filter } def /getdatasrc { /rdcmntline load /ASCII85Decode filter } def /rdpatch168 { /dataptr 0 store 49 rdcount 4 { dup {pop srcchannels getint8} if dup {pop srctodstcolor dstchannels putint8 true} if } repeat {databuf 0 dataptr getinterval}{()} ifelse } def /rdpatch3216 { /dataptr 0 store 97 rdcount 4 { dup {pop srcchannels getint16} if dup {pop srctodstcolor dstchannels putint16 true} if } repeat {databuf 0 dataptr getinterval}{()} ifelse } def /rdcount { dup 0 gt { datafile databuf dataptr 4 -1 roll getinterval readstring exch length dataptr add /dataptr exch store }{ true } ifelse } def /getint8 { mark true 3 -1 roll { dup {pop datafile read} if dup {pop 255 div true} if } repeat { counttomark 1 add -1 roll pop true }{ cleartomark false } ifelse } def /putint8 { dup dataptr add /dataptr exch store dataptr exch { 1 sub exch 255 mul cvi databuf 2 index 3 -1 roll put } repeat pop } def /getint16 { mark true 3 -1 roll { dup {pop datafile read} if dup {pop 256 mul datafile read} if dup {pop add 65535 div true} if } repeat { counttomark 1 add -1 roll pop true }{ cleartomark false } ifelse } def /putint16 { dup 2 mul dataptr add /dataptr exch store dataptr exch { 2 sub exch 65535 mul cvi dup 256 idiv databuf 3 index 3 -1 roll put 256 mod databuf 2 index 1 add 3 -1 roll put } repeat pop } def /srcbuf 256 string def /rdcmntline { currentfile srcbuf readline pop (%) anchorsearch {pop} if } def /getplateindex { 0 [cyan? magenta? yellow? black? customColor?] {{exit} if 1 add} forall } def /aicsarray 4 array def /aicsaltvals 4 array def /aicsaltcolr aicsaltvals def /tocolorspace { dup type /arraytype eq { mark exch aload pop aicsarray 0 3 -1 roll put aicsarray 1 3 -1 roll put dup aicsarray 2 3 -1 roll put gettintxform aicsarray 3 3 -1 roll put counttomark aicsaltvals 0 3 -1 roll getinterval /aicsaltcolr exch store aicsaltcolr astore pop pop aicsarray } if } def /subtintxform {aicsaltcolr {1 index mul exch} forall pop} def /addtintxform {aicsaltcolr {1 sub 1 index mul 1 add exch} forall pop} def /gettintxform { /DeviceRGB eq {/addtintxform}{/subtintxform} ifelse load } def /getnchannels { dup type /arraytype eq {0 get} if colorspacedict exch get begin Channels end } def /makesmarks { composite? { pop true }{ dup dup type /arraytype eq {0 get} if colorspacedict exch get begin MarksPlate end } ifelse } def /markingplate { composite? { pop true }{ dup type /arraytype eq { dup length getplateindex gt {getplateindex get}{pop false} ifelse } if } ifelse } def /tocmyk { dup dup type /arraytype eq {0 get} if colorspacedict exch get begin ToCMYK end } def /topsspace { dup dup type /arraytype eq {0 get} if colorspacedict exch get begin ToPSSpace end } def /colorspacedict 5 dict dup begin /DeviceGray 4 dict dup begin /Channels 1 def /MarksPlate {pop black?} def /ToCMYK {pop 1 exch sub 0 0 0 4 -1 roll} def /ToPSSpace {} def end def /DeviceRGB 4 dict dup begin /Channels 3 def /MarksPlate {pop isCMYKSep?} def /ToCMYK {pop _rgbtocmyk} def /ToPSSpace {} def end def /DeviceCMYK 4 dict dup begin /Channels 4 def /MarksPlate {pop isCMYKSep?} def /ToCMYK {pop} def /ToPSSpace {} def end def /Separation 4 dict dup begin /Channels 1 def /MarksPlate { /findcmykcustomcolor where { pop dup 1 exch ToCMYK 5 -1 roll 1 get findcmykcustomcolor 1 setcustomcolor systemdict /currentgray get exec 1 ne }{ pop false } ifelse } def /ToCMYK { dup 2 get mark exch 4 2 roll 3 get exec counttomark -1 roll tocmyk 5 -1 roll pop } def /ToPSSpace {} def end def /Process 4 dict dup begin /Channels 1 def /MarksPlate { isCMYKSep? { 1 exch ToCMYK 4 array astore getplateindex get 0 ne }{ pop false } ifelse } def /ToCMYK { dup 2 get mark exch 4 2 roll 3 get exec counttomark -1 roll tocmyk 5 -1 roll pop } def /ToPSSpace { 4 array copy dup 0 /Separation put } def end def end def /isoverprint { /currentoverprint where {pop currentoverprint}{_of} ifelse } def /version_ge_3010.106 { version {cvr} stopped { pop false }{ 3010.106 ge } ifelse } def end end defaultpacking setpacking %%EndResource %%EndProlog %%BeginSetup userdict /_useSmoothShade true put userdict /_aicmykps true put userdict /_forceToCMYK true put Adobe_level2_AI5 /initialize get exec Adobe_cshow /initialize get exec Adobe_screens_AI5 /initialize get exec Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_typography_AI5 /initialize get exec Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 AGM_Gradient /initializeAI get exec Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_pattern_AI5 /initialize get exec Adobe_ColorImage_AI6 /initialize get exec Adobe_shading_AI8 /initialize get exec Adobe_Illustrator_AI5 /initialize get exec %AI3_BeginRider currentpacking true setpacking %%BeginFont: Times-Roman %!PS-AdobeFont-1.0: Times-Roman 001.007 %%CreationDate: Tue Mar 20 12:15:38 1990 %%VMusage: 30487 37379 %% The digitally encoded machine readable outline data for producing the %% Typefaces licensed to you is copyrighted (c) 1981 Linotype AG and/or its %% subsidiaries. All Rights Reserved. This data is the property of Linotype AG %% and/or its subsidiaries and may not be reproduced, used, displayed, %% modified, disclosed or transferred without the express written approval of %% Linotype AG and/or its subsidiaries. %% Times is a trademark of Linotype AG and/or its subsidiaries. 11 dict begin /FontInfo 10 dict dup begin /version (001.007) readonly def /Notice (Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype AG and/or its subsidiaries.) readonly def /Copyright ( The digitally encoded machine readable outline data for producing the Typefaces licensed to you is copyrighted (c) 1981 Linotype AG and/or its subsidiaries. All Rights Reserved. This data is the property of Linotype AG and/or its subsidiaries and may not be reproduced, used, displayed, modified, disclosed or transferred without the express written approval of Linotype AG and/or its subsidiaries. ) readonly def /FullName (Times Roman) readonly def /FamilyName (Times) readonly def /Weight (Roman) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /FontName /Times-Roman def /Encoding StandardEncoding def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /UniqueID 28416 def /FontBBox{-168 -218 1000 898}readonly def currentdict end currentfile eexec Z¤÷UP7ñ¤1ºµU(= <ºYOu}#jþpèU$¼7F37j©ÁPaŠÀÿn¶³'3¾U¯ø°¨%ì»…þC´qœÂ¢\ ÌZ³IY`½ÿc¿Ñä޿ÈW-ê@Rš#»•¤Ó”«'ÝüØ8kgjŠ…Ý޽†Ò (‚űÄ)õ)¥ÅØ ÔÆù¨÷F¼EØDË!»É¾—V±3zE‹‹ð—à€ aÖuD}¦ž¨EêÜÔbsRÙ’³{$£©Tònœ†$k‡$Hÿ¡j—沞ª+­ÿ–Í3Ѽ‰ŸK¢-'h9uk}Î8&7¿)P]Å_"dÝÂE>¦¨ÿ-‚¹œû8ú^gcß[Ày4¯¨Ä Y%ÃLA`r8š·I·Õ«hÓ‘ÀÆB‚ ñ[‚‘ÏÎRÓƒf×m†Ç%…D´Rµ?¥ sßìL÷[+»Þ÷†9½8jàǹ*(ÏÈ$ °’´ôÒ˜°i²“€Z·äüXÂäMCmþü¾ÛÁ aeTÀ ½º4™%ê#«/Å+óôK÷1ªÐ‘©ºËœ”Ýðíw¯\Á Nµ|®µ€L¶qiI»Xi±0†ÂRqº›NàŠ¶q°ÑB­Rër»×ð.È•û~š¡›ûh©ÀO™‘àÀÑ|ž7¸×­]kW'¡¿‹€è¶ëp’]j51ÓË „w¼_ˆô‚³TK”9Œ®{ÍŒ&Ï÷¯U¨Œïñ} åÌ ÌýQ4¿9ëcR¨¦sÅwÂÿ¥?ŠyujÙ/õ쾸:Ó†Ñ'qòá«MX¾"j3ÜRl®*j«ýx¯÷"°>Ì(‘H›ÇœlÉC‰óßeZíío oF1®!A=„¤~b–¬ –øð²åüZÓUÓÄ-a¹2:×”&w€={[_mÇ­·óñ¾Ö'×ÿVó<‘‡ø£9×D ?sùXZ‰‡?ÆÛ€ˆŸ«3Xƒ1{8ÇO_5LÚgÛíÁF`uuø¿>äs“ÙOal¿íÎ]1J]DZýO‘ÚWñR<‹IÙºxÒ#O×ÞÊF»…>ÎS¶€\=£ ÀöÅÛIr­h†«¬ ÃLê˜aq™V?7ÍŽ'§)Ö+ÄP/H?@L)ʱ;‡é0į¾Óó²0sýj1_PüÂúùÛxm~q„ŠGp± "ápø²tùò1ÿ”#tb7,ð;¸³»Ø­Ú‘È1¬²ØßÕÃÑÈ‹ð¤Rêª †ÌDÛ£)LDÔ¦§ÿŽ ó„΢]íB.šÛìË’$zïvP ¸n4åb=mw‰Å]ªåK,HZ½7!,ùv:ôƒÿ¿DåÐîCx„•ÿ2QßÉi­œ6Ð̃ÅÉ”/xÛQ‹z,èR$Oè¤ÈØÒÛÔ!ßi“9æl¤ÿ…C¡¤ jvÜ>ÌzÚÍH‹>Õhú¾•æÔ$2Áø}ÒÜó½H"¯NLkÛ¢ÈUÛî`H¥\ËÅߺ][§>½šRSÀàŸ™|Íç ®ŽÒ³ò…)ˆ-ÒI#ëÍçG®Ç³«Ÿ*¸¶À['2Ö~5}Ù<Ñr+ʵmôòF4cÀè®ZA¸œnìÕÚïÈ—D¨ÆAþžæ!Ê÷lÚ!º÷Ï-ŽœçXfNê/ÿk'úñ‰8Ì^®S¶dsÔ²{7ÿëZHÄàPÍÿ…9‡QØà‡X”˜¥?o7¿Ÿv¥mSñLÐÏÞðvu„ƒ€Ð»©u´ÚVÕ^í_±šdE³‡*rCÁkàpÞŽW¢FDÍ º”šªˆî5h£cŽ:Có}G1ˆŠ˜Y~#üq5°0PŽ8gEÌ’®ü €b­J×åFÍE3Ý¿ Œ3Nzž& @D7~ü’…Ö 7´M`É/_B"B¨õý/Õ¿!¦h²F ÈòÌÿÞ¦ö Ïáüµïˆd¦ò5Ä@<¡´uü`3K 3Úú}è€3ë¨ÔhØÌ¥,\›ÆTë‥ù:ßÐÒ:‹iL²äPžêo£­÷ž–žkÅæÕÚ¯+ðßš6öQC6€V•åÇCż®ÿ☥ãûTGL*¥y°×;Á¦ÇœúÎA?jÒ·ÂâÁê ÷^è¥kjÙ'K`Ò×@[P;Sçq8Uȧc»;~4·Ï|J^~®¨Å‹+AP­X¡þì‰Ï]œö ¿.+ÛZ_$T3‘¯‹ø|ÚÌèãôHP>%!ÀÆâD‚–•o)õØ£ÏÈɸ¿gmºÒ3Ÿ—6DÄɦVX~³‰Ø; ’ƒN½6 )?lL꾟wÌè„K™åÓºc Y…‘v[}zª„‡Ê$òñU‚£4¾U¢–BãÕ¥ž:Ýì_ÈäSm….ä®bŽmXdóæ¦î„cùSð ß7w­à ùÒëª$T:þu¶k…8o!ÙÁÑØYB@Rð Ⱥ"1ûG´÷}“Ú(=+¾Ì#ø–ìÌ9(™6äT;nÓpAËñ÷­ òJðXI£ m½¾jª]hÜ?;œ0%`Ê ?ÊŠ8KôºJ²DýÔßt¨õ­òðù]ŽGåø•wÄ”6.”b6,é«KPˆ!¢ÉRû2%(Ÿ/×(k¢oMõ—TÐÏâ>_j­}o6IJäwrK+掺Z@îAùw'Y@Svš˜Š(ÿ¾²e‘2Xœ’a—"•´Îžé]Ã,ø‚ªC°~\Ö¾Sàœ?–P‘ÍÉ@‰¾üÖ—´/ë>×ÎÐÌ1aýù|L@•“aå_»¨b|ÿ<=‚ ž²XÒ®Ô9¨Z÷†È)C:éö›!Íþ[´z°¥ãûTGL,y’«Ð5ä`á >múÏ8'ž#۸ʡ:ö.Œ£SûÃy áGU2–Õ½Ïã-±Úɵ4[Åc6Þ7Â÷Ô^Ý"ËÄ@wN¾ã”EY%UüVj ã„[:J÷ÍT§G4,ÑÇAð¥1ùx”#ÁEB´²€º <°=:;ë.îç6‰^(õ‡Õ/}|I$Ö­¦¡E(öí?˜C”§µÖ²=¥€r=8«Þ=Ô¾:L˜ÐíXûAÎäÒÕzˆb2/£‹;qQm¹>4w-Ǫ™/š‹îÞ~&‰ß3–ŠzJkµf2ÛI$ö@f·¿o}Ô Åm£æó8€ôëŠÜ©M`”[–Às 4r"ÌŒ£ŒX:_OŽnÒÌ èÔÉ—¶Ä.ÑK%ìÊ;´zd8iØW}©td:;©8¡¥çl5Jê£ëx¼qK`ãÌS¢¹¿.Ó¥ô\{¥¿iàáQíaò v”ÉB½ú©ÅSdÊÕ ¹æuPæ× ×ëûñöê(Þí#M 0~êy4uÿ l¼ÕàrÝòJW¨y{»9ú#UjY’4$‹°j£{ÿbdÄnîŠ/]¢²R²uP@¡A '%µ\kºœ×ýßtí…¥(:º&ô2>NSpÕ<&ú…ù´ä}ìõ‡õ!^ì\¹Qz¸ö÷.w\NÝc1yr-¦ú*Ñøí\µlÒDÂç?™¾àò>ò ™[ˆ²@ÏO¾²Aª®ÚÝ·Æûdc¸¤¿kþj} 'š >kµ+ÏYÊ}£'U¬¾Å<0å ¤èû„‘H^çÛž‚Ì{ªgWËÊR¼ò²DGìýªŽ9d&SÝ)µ­æá¯¨ºÝW¢Ku{0œ1ÁÂ-‚¤ÙYã–ÈQ®ÝÃzo'¼J'r,—@û­×£Û?uÓ€S’ͥΰᢠN2…:Ê›jö¹–‚¡%¼Î-Šxx¯ðõTHÁl9€§d­>|vRL–ʼn?-9Få}ƒ(á%Å\«gŒüDÂ:y P ŽŠä:ûŸ„¦˜QÓ'ÿ®[öTèUdU‚/½6l˜]ƶ¤uHÉßó—ï¦zC7rBñ¦c[»‰ÄdfµF«ãö P%ÏóS ÀNU*óý!à,2qK/a¤¬ªÐ낆µ}h˜…Ž$EÑÙ‰O¥õ6<£r­–?v|åÖßPÕkëã»O•µÅséëígŒÃÉÿäNN<Ž/{UUP7ñG¬§(d•\!„bŒ' µÙ—cwo„ú®µ‘Sœÿ(³>hç Ž²%“w•\€ÑŠÍzÒIù»•¾Û$¨1€n_½4:~7qÐM^ê¬\ïŸÑ¾%9ÃY¨½M`FÞÄ*q/¤rz€†–!Ð×Åý¹Ï®3fY ¹.*žÂzz„h”C ex²û~‘1}*,øœÊ¥Ñy„¦¨[þÝ»˜ÊñDŒ é9<ÛL>kcbFdÉNÆ,p—Ð"|. |QUË@Á?v0ÿz ±*v‡©¥ákui£•ýn3i«G†T¢ÛK¶–jÏ:.¥—O·KÆCŠHdôg®U+[ü#ùâJ£âíãþ¢y#ñÓçÍR§GCï<åÖœý}Ÿ‘Ú›þ£–©âµ”ÖPýþ£—ˆô |~ˆPyjÄ'à«ÌÓ4‘ËäÅwšiâ–'C%Ñ»O=[Cðe„:x¯x0«a1çÊd^Û96Þ³8Ù6kÇ N¥“c»6ã¥'ÞK¦9ص³‰þå8ɺb F{5³iQ«Ü'({.Ÿ£NØÓKå Ú4å®P©/.;)â¦øzž4%ýk»#†£ÊÇ¡hê]©Z1C»†ÇA›s6B9×RœøpOü«në|ï3ÀS%¡Ì€„ói–qòŽdWþ¯X¸Â^ÕMaìT“rèÓ‡0X7ˆEúöfIè\ÎïÐmÝ@q}ÒPŽy‹}“ó„Ø7ð½,Ä8ø·«sÙt¡R*võš~+ùÁ÷ÌäàlÇb˜L³D ¬WU„šÒ¯UTéÞ„OžŒ×š§ÊóÝn¯ŸU[ö0lë[‹‘vi›{«fǩݞ?B>'îÔà87ÚÛ†RUÅíÚf]Åòi£ÍƶÞûöðüi°õOìærLì©ðŒ ^“âqki ¶Vnɧ7<:On°¨ ä†÷WƒSl»–âðà,³–ßûŽç+á¡ BVˆ9 ú’Öh¦yýM§wl|ð->{8·¸ ^m`fРCÚï9Â˸lÕñ"¶Æê.%Èɨžøƒ )Bxy¹uBžWU’T”u=}î’÷‘ S›Y Z¯ÐBb-ß‘Nu‚ @rzAYú<àœSï~7ñõ6ý€ÎƒD”4ú¿O­ÝÓ|¾Òv`•?ˆ¨ ,×4‹T6lµJ¦´!³:LKG?‚ºKïòO"œîi]óÔrå?“ù{Æšt¤˜Rß4„Tsf3rرê¢_b®ô÷]•dƒ•á•Ç‹/S‰öÀõÿa3`ïŽZ8üÂꂚ9Ú”¬ýôøPÑMêƒSQpkûUë¥Sºí_Ö ]þžSù,îâyÜìz+=¸-ùiàzÒA)†6fææò¸nŽØ›’XíÆíƒê\¼Í$ÚˆÞ½×Sö¶ëù)B£Û&é.…¡~ÇÚØD̬ÆV\I _caãaµÔ×OÜ/ûð©@zåƒü]{6òàIƒy~á*0–W§¹«˜ôÜ«Éìi˜px>NêK0s³ Ä’ê“ð¬å˜ÎopÖ³ê«Ú«°ƒöñ`ê±Iy]$»…@f r¡5¥x«Å:ײnÁWqÔC KYå£ýäF¿f1~AM™Î³3 Ì÷=‹ñb ’Ž-TD¼‚5ñHˆûË'ӯԘܭ¹˜‹°ßòÜçÙX^‹‘;¬Øs{c…Œ ªþ¦æ#?æùLg²ó€ø²“Kà^™·ÿyGE¡×édCK-¸Éš'_Ü”Öj~«¨<)µ‘ÏÍ”9^õ's5rXHG‘";p[¦Þ좋¢˜æ v"Ìy%Í âÞïþà™²"ßínHQƹҫu•‰Î+÷âl riØwé;-uú+€ë®¤ëçæ9&‘Ž6žg½ À’0¦}âYÌ·s—9ƒ€¡N«À(‹Á$Ü üœ'õX£BÆ_qB^>ÑzæÅhP©Àûr>h1€·zܰx°ˆ‚Ÿ¶HY‚÷Ùxû/ˆË¡ê5øÇšè’dòéX¶Eu‰™}&M{l™ë‰yá Ú%„s†ž þ.5™­‹õçEf,ˆ?þég¥%bSŽ{óæb‰ì…VÏmØóèGaé娂Æl•%ü;ýT“<Õìë.lhúmž(—ïºAµyºÅ”¿T×=)º;½¹9‡8†Ûù©CmEW–k&^/l[×^ Œ£Ï&íC9Õ5+ò Àao»ˆgSÑðAàNKºÈžçÒ'š¿«Õ<ú< cpMÓˆ“èÕ‚E©—[6é¥Ï¦PêvqjÙŸËù¹ãl¡h#”UÄÆHïô¥YI·,—´ÿâ /÷™ø9ûH æ#÷’ìξçÜ$!¶æy^Â_¹\4š.Š)ñ+«5È Um~ÎWnál‘ Õ6 ¯èRºÆ;?˜†]¸^mf½·ÍÐv0ny…«¯'–à×!#L×Ùôó ‚òˆêRˆ¨Bž\ïaHVj >È e;i~±ñOB5"aEQ ÑÎw5;;/Æm~5Œóï½]޵˒hù›e…*—kŸÎNoë3Ô(ÈŒyÅ ’W3—è"7†i ¨ÃÁé5w,’˜T¥§dà©Ô d1ÉŒö îèý&ΰIkAXŽ6ÍK…Qš&x¶â§Òýù(êÂDÊÖù¿P2:$:›ù8¤ôúˆx°¥ndAuâåÄ„ëšm⡤øzý´c"4bMSöFI/Úór¡jpsô=´Í ñY‹Êæw¹\Š•sj&Ò±ßYÍî [ÀàÒç’Ĭ\„ l–Š¶Ô³Æì× œïÑPæß³i²q[ñƒéëNID³%κfs0ǽnnUEmêÙTT÷ø\ðï­yjTEòh%åBë Ò×'Mx—Pî£Íµÿµeâ´!þpîMVâè·ËQNèÓs`>'ùFÖý:"OW‡sÞ°_k¯Sl?~òæË:ë©äDüö$J¡#) |kõ'È*÷Ð:L¯w¼›ÿq%ÀdDkæ`pYÒÚr€d·p…{nV.ºñÁl14Ò óÏÙÞ´ÆÔ{Ei*I°öõ1¿?<¢Ö•®Th/üC¥rÑÄ3æ¹:•¶y‘,gO¢òør·ú Hª[žŒVçƒá4tÄjÈê1ä+L ,.àôv’¬©g‘㘰×Öµä+[NIT«t$¢"QA3Í]?Hrœ#SU-]jïµëì£gXËÀz†JÚè—ç©ux¾wÚ«›Lžy<]nÖ/&2¨$ë¢h«vpkØÂ´9†~J]*“ÙÐß@ícl€Á {á]pä¤<³¢_‰vËwRžy£†¿ÜEÀW¨Ø¯Xí)ÎÂ`&öIJRZ¹² A,_‘ÞÇ;™'¬é*—Pª•JÒ¦‘ŽÈD–Ø×ºä ˆê¡ýEàsÂf éPe‡:öÚ›D±>ÖÝŠ€³äi¿OB‘à’Â];ö ]Eañí®{ê†uîJMÒv^;‘;°€Î}fBü+ÄÙY7»ŠcòËb4Ú¸sœÿ¾X4J´}K.…¥€tè{·äŒTéFƒ÷ïI>púÍŽ×ËZßú9“C°Öé²c´´r->> k7¸b¡"þÒ€^šp‘¶ýõHT#èYÉ á7Æ¿xYw“àîX>ÊP¢â cˆNJ£)&ŠL¬ä÷ŽY­P;Ãá¢â@Ê·!¥ãÄH­)`³«s¶¦±G¤ë@oï®7€~¥E (QÏ"àÖ\úá›bmŒ{ûNöäI‹5óܶùÚ[(©™‚Ýr¢í6ÛÜV[ƒ£²:Áí€#ñÁçNz-Ùîát¨+,õú¼%ý[ëm3š6X¿×°Eÿ²gÀz !]¹˜tÍb¡%OÊÀu 8ú—+"Nnô‰ŽcOÑM¯ÐRØ9¯« ;ÇCD¥îÍQå ÚdVüi®Ü^%¶¤þía¹ÆLƒ™»‹­¡vBhnê sgf¹‚°T£ ‌hª¶ €¸RÓûtÑX{+Wyöå8­)ñ9ËÅžr¯Ô¬Î7jJ¤ÞZšMd¤ ñˆC }ŽÂÅ8ÛÜ#)ë³NR¿~Ybw:4Ñ…Ü'„4^˜{d;$#¿ZT»~»CSa–‚ã86Ò#úâ2la䆠EzÙâ™`F…HI8g ºx0…¡Uz8w8âÞ1«“ÍR ‚{BÁa]ŽsàûÞ1\Q¿v‡Îjk°0rtÁÖ»8ÓÜò¡e}klñÜÏ«EŠ’Ì{ÁE` fZe|P‹vß› [lNN+õ D¡„vÁ/VqÙ›9(Ñ ËËeùkjÄô`¥ÉÿŸ‚à l_4Oˆ–”ø ¡t%ÊÏum=´!=jåa]…oÄh¨ [¨{ íß|èpÎl½º_ø†!¯• å0c\1œÄÖûZeè¸fèb‰Ä×[0¦$Å5ZÞl«æñðL™ó‡sõsr§&u‹;šòroו¨áŠ?øqúˆ’Mëã7¸è›óÑèÑ™±¨S?-îïŽãÚ,¬ÁPTJhülß‹€tëá³°9s׈¬ÜnMíjöå—ÌÙ{C!àJmVú£õ??Ru49mÏѬûÙ]eU³Bb­V1?í ;DS~ôÄ7þ|Çz:q.ޮ߉½‰U[ö)ˆK„_´¥YYœâF‹6~u2õ8̤/]‰”;*óÕ¤8n2“M8ø ÿS¥~º¶‡$›€ÂܬÅàZ/âfae¸î¼`\`+Mš€7³¡ä¯ᣢîv®çß4¶·§Ìv\V.d?BØÉÊŠ¡¡Œ„&n€Hú÷9Ÿ Õ†ž¹h­î¯Gú¿%¾e‡­Úˆ"ýâ--F0@îË÷no äЯ0VÆ•Éò6ÌES8û¾âÄŸ]ÛM°Óÿ*ro.~åWy±z”}Í–—â`¬ÍT,Š•:ÃýL%üxÓ.Ö*zFmãTž5©r¶û¶^ú¾ "ªU¶²¨ÔòWœºú:$ÜmDà‘€,°6j7”µwÍßïžxýhÎ=>êB†[kVg×_Š"‚fä¨ç=« 5€&›mäsï£q!íñfœè[`Ñò_1 s44špŒØÐì9ñ=;<0}ÛW$Æ–û=oO’  V#vöGÔ¸ê܉ff=ªåªs.ýO ø–äð½ùã’ž…ؼy8ÖÄÙ(J»\‹yÕÔTv.Š$~­.rõ+Ålÿ­­´;a=X!L’G sHKãWŸGe`u`é¹ñø‹^âøsXK%ÖýÝGÍB˜ÎéŽyßA[¨„h¦Þî°¹2èÉy—ÆHx„(÷þÚuRûŸ’[l-{Ã"¥ÂŒ…—;X<üåÊ2RœF]K¤€JäÎöBìp– Á{HE>Ë~M+Uöi‚«ÃØÆÒ{8d·ä*ò ¥™ëî ¨tq*fgjdVκ&±2ÑŒ ²1ÉüK›Li)PDƒ!xƒL™4<ŠNéÒ(;ؘÿÂ^uê7ºèF)E쉼Ö<·³LQTÈØ Zž£Þ|É35¬W™õ_ú ”=½¨·ÁÞ¥ €<ýµy¬9j–šáÒëRÇw·IìÉŒS‚àeFkã³L!mSUè 'ñ,v,ô/×g -噬e×V¹ôÌO†¶9ØDÒ# Ï¬B’¬Ý’î¨0åmç‚VÜ Ï›üK»“+žÇÈÀîô-Ž‡Â»{+ Í®’£Ú[ Ã«Ž®M”Eˤ42>NôUƒ9þ@­½¾¾¸H$¾dÝ&WœÇ.úІ•á#Iæ )_ÿ¸à‚FDKóÊïq Ž=`øª›/–3÷œŠ·ïˆî²šéÄîyд÷[·«8ÐÙÞzÆcV§[SvÅK ¢³È,r‡ù9N4ñÆçöeC./×åϺ74õê œzžøÿBç}^cÊù[Ðíf³@W}ò,Üø^³FhÒXÊŒl)+.~ï¿ÂÕw£Ñcn‰†¤D“òís'›æƒ!]O •šÚ[¼S÷+r¶[X©,Ö˘q8 øávÉMSjº_ÈG…â‚3²f[d#îÚ+¶ˆOÓ±½CÖvbÚÑÈéÃ1.ñˆ9È4«;ªLh~_%ǃK^àÖs¦œû«T LÑcÓ¡“"N·l'„Ç(_ºi¯=½W`ÌXÊ:ÕþãœÂa/\Âñ¬Í¦XJˆÓÛólYÙü‚åK ‚_H@“Ysm2ì?y5ù–q]xõ?vôz >X+ÚL§’¥9OsÏð¾Æ{x· Óü uLx-Ø1ÝÐLæ/‡Ëv±nöìõ8ÓúÅêêÎÏN–N¦º ËÊ!Åjÿÿ3]f¢1¬(}4±žËF(d¤Y ¬ð1¢ÚZ…ªMuâUã€ò8«¤u½DlÛwŒ‚Bõp2!‚Œ[þ ÃêF±Ó'r/®\«Zi“?rµ@H ’@œòq»;BG"/c†n o[_¥a˜ ˆN;±M~Hé^×4™Ùxþ-{ Vœ:\]_m3A‚9¥×%–G4¯ã°ËFÁl븎%sðÉPÍ4ó„’ Ÿ=6ÅF«Ë4¾Ê€”Ïóø3¾ÄÆy: ÷Gõ'YѤ!ç‚ÊïLÿG,Ïå}§ôNWhËêÙM9¼²©GÔ¬sÒzÈ+Pó<Ê‚úĪ5Né5ÉQ+C‹%ͬÄw=h¤4ZØ÷&“¿°ºó8È~yàË5*‹3y€Í—Vsíþþ`ÅqÀŽOH"Amá pÐÌ!ôjWéýv±,Ù%¯ç¼æÙIRNUÊóÂ…ÃX‡}q^:Ÿƒ*UlÅ·ÀHÄBJ½fÅ-úZò9Ó”Ìþ©îàŠk‘Ââ—Þ`bHLAKDâY—Üžè„Ý£­8ÔÑTü²ìJ(ååþŽêFëB©x„“sÁ344éÑ:ÔâÆ« Ü©à4„4À°6 ét“ ™~h0³˜åVYCE¯F€¹{9Ĩ­»‘A'™)‚oä{{IëX\›«LýÄþÄC¬®`–—F+¦¨˜ýÔîOs CQ¦dfpBüÑô¿Ût [J–èìb„8üøðmZü¢ßüÞ¦ä¼Ðú 3@,æ,b¡ÒÐ÷ý¿”Y¬†¦ \ ²tC{]‰-§&bA^Eü6"-Ó¡oïX"ÜÓô.@µ»A^_œñ7ÛHÄgÍ–<†›²'U5¢|ìðy“@_·Xwdw¯Q®52ÐÁ“ÓÆªòµ¼ûÛã&@Õÿ8iõãÌéîÛ½’𾯥O™›=þ°NÐVìç‹G&@ãt½Öª9Ö“y؉ÖùÊÒè! ‡«Ly ÇC‰mnØIØ´Ý$`pY‰TöÎf2¹üÞ,‹~Û{ÓýmCAT,‡×¼Oré,}…" :_miÈr­¢óéÿ±;™*¬¦$WTàÖn<<ƒéLM· |Y µj·*†ÛK m/òž»—æÔ­õ<\NeºKË^ µŸÅŒwA&‹IÛÈS–ÒìNR=4YK¤‚ÆÂXzñ S’XjÁ76¥ñ`žÓ*ÓOŒ±®Ö¼o9]WŠU´Š¶R#6C´‰Gà^ô=Q'k£Á„<*¾ é’Áµ|mëIu!€ZqNB·µëºzxrküø¼½¥#”ç:‡£¯Óœ¥çc3áÝõF%̨±€´sÞHo+’î¶ÈZaäŠGœÓ´Ð>ÿÁ#@˜7unçxàæ9°xÞRÈ¢>ªªY%džÜ]µU(’›ÈŒ:ŠÝ•,ã÷©„ÊÛ—¹? Ëï>U<êœPØOk¦s´˽¨ÞdÅ¿5øò€Ä{Ýß“0_´3ûÚˆ‘µå·˜^“lëʼ {ÙŽZUëÕh4Âvò-ú0­r jXÃý‘£»>ÃÈKýøÜ£7®Bì}mPiâ›cÎAʱtæ^û»Ü+-óÙæ?¢ÚN$PƒÈd5âWY{xkh\0d“]‹p†Öcó4J³ó5?Àÿ—éó¿‚’cá}¼<›b‚7£`çKš5LºàNvN”Ïý†mZ;ûÑ£ôþxþmùûbî÷¬Üëâ ÁÉ ÿklkéÐ?sF‰´ Ø¥’ä)iS¹»À×òfÿB­Q/Û)اÃÅŒ(2'¬0\Ðólþ ¾ÁmRm|µUè¸hD>çj¾+Æ;¸%èv¥ËdZ™¿äUè9?\WÀ±‚øÝ¡™þƒ»È}ö„ G†Š:áý8>ß Žw˜<¡º³Ó­eÆ¢&èIAj³i«†{ìÄÐúâX²k§˜~ŠáhD¨æ”ùîëxPC<ÆkPè]éRÛ\~Ó9¶Xg•`X`žßÔuÇÛMGÿwí“t½+°³”ãðžJmjxY gzžo‹ŠÞ;4¾Ó+ìÿvç_ß¹’©y(d6æ#·]™Gß’\Áº0cb[p×M¡ ØYûïC^Ç‹-UÐ]zJå1 ¾£Ú³úúˆw¡ü3pà:ó Ö#­9{™¨þó¡\£Éü^õúœ«]\´f<Ï·ÅS½çÉÅ×)óeh”õÜ8·;tûoň8Àoè¾è,´õ-8ÿN‚F½ ”Y7¢¢×,³ÈW;p؆Fs_ßžµ†ZACÇôVãQ›Ýª•y4í!®$æ¡UÅóñ¥Ø$FÞæÚÿçÇ’ÿ$;l’Ù›eÌœ7÷ÔúÞs^!†íõpÂ_ò:Ïž¼b®–IL@{iÙZ"µè,æ*ÝŸh@-]$¿ûyF äÌJÿX©8UŸñÎKÀ¼ŒË¸—,˜†¢¹ÑÂ&&áù3p|@ˈì0ßÙHì?ãë1¡SÝšZI*°ç¹ã®5zõ×%,z""dÞØ„îl³Û \äŸrCY^PÕ;`cÏ)t€·x4ÐbÒo¸4²)aðÌ}*"£ýÈU¤´Ë:°v2>×¥]I³r:zkªÁ³L”/σÔîÖ“!z¨?Å·#kÜ\Õ£§ämÙÚ´n#V.@‘ì€#w;Š2H½b|ÄW—ÞŽw;a}èE5'÷àPŒµû¸çgÇ™xíyUGÓÑ=?IÊ4¦_èKs÷’·¾'(A­ÞFÅ?(Gwý(âpÉKµ&‹ÌZX—XÃ6DŒ#à˜Ç‚0«ãx™ãtÌXݹGz´F§Œ;!Ð÷¤ýæ/¨A»¢Kä¥ú7ÕŠ9:9*.׌7GÛ€”"ªLÏ“ë²g.?4˜Ù5,%öCÆÈâÛtž(r(|ˆ•ÅäâfÉC(¥òTëâ/¶“Ú¤':â7­¶¦ÒÃ%N±ò€aM|¾ÏõŠG‹·ÑŒ~Ò%² j*“2w#ÅÝPýí³¯ß*«¸fåÔèË´ÎËš–ÖËÇÍ.NŸðr˜'A9jÑD’‘î9nþtšÒ1qØ}-‰ø£†û)~*UGp[IôÇr#ÅsʱƒƒÞHóÆ­Ü€—eëLóßЕ<á­iK°N"zLå Ÿ³º ].j2g>™E.¢ øô„¯™²íÍ ødöý³lj´¤KŸþɳ0Ê8©Y;úS"µ®«OµH¦ÞˆN5ZrÜñ?®T Ö›’?ŸVèÊ»=•a\QÆvx4»­F–oÉ -Ü@-²5Šø¹Åêølpíº'Œ@*¦¸æ$3œ/ø/¨Mè}²é0œ×ì¾Ú¡Ú/iŠ{Ô•?s<º‡¥øÝy)îkãA(ì©ú‘7â@f ƒP°ýSSsÊtžŒõAh—æ´%+~lsBs _Pþ‘»õöETàÿ‹Õr…ÿ#C—«‰s¶èx¸šÁ­O&:àjmEÄÆ}y nü{ÔÉÓ…Œ{Á15Oÿب9ˆ‘ƒŸßn®Ñ`¦Ôëš6y(ñ½v̦¯ÙEò…ùÓT3ô™ŠÚÜ.øiÖ£¢ ’ ݪ«dV8Mõ%­1x‡ªàÆ+úJkfiû8:©ƒ¥7@ÑÆþ÷~ÚÏ«ÂÃp5 ‹óж…gÙ¦ÝK5æ sø2àšc{Ùi<#D»Mêe?0MÛ@¡ðìq<`u“»úœu‚éëx%jüjï‹Ë\ˇ>{äMòê¯ïÒ‘P[t­3 0[­ª/¨8H J*v5BÕî3_†®Íš{E ÌåtAÈÃPH™î}@ûžä2¥»K~ÁÒ1 Ygª¶4£R3R|QƒëÝÕ8l´0ýž,ÑB <Ç‘³çayƾ#Ý|ïAå Ù*×Í\ÆX·™„pzK©¨CÂÖ9˜hºfûrÜé¨Vl õöNTÑþ›FÙ„øµ•?­cISÁ!t ‹D _„=÷|w®$À7*…¥66R¯“VéÆKœÖ¿,û´O®ïïÒE]ØrD=˜n)ÖPD. Ïvp”£AÒîË¥5îÖû ój’iâ¤kr_‚‡/Jév÷ôý!¼x¨Ýà˜«fJV¤?‚=ò:OöZ[ Cª«*¼JÎÄðöHÎd‰ôBš¢œ-v¸Ÿ Ú:³èíË]ñ³ƒ—D±Áu\[ê³î˸˜@'É­x×ë‚Õ;ÐòiåúÛ—REqL9þ_fãZ4qÑËð›´¦.ÆLD¯>¶O¿åÂŒKûÊM¼€Œ™~èÎö“J©|›{D#¯€¢ï€g,»%,jò¶Â#—:e¸©½ERvpìÁ•(ÄCŽÐÜÛˆêšüƒÔO6KÁLÏ çjDìÀÈ«õo}u^‚rÓÏ›–»ZJóùŒi˜âÅ¿`¨œã5ü~gÌŒé"™&¸ÏP®nŒJìðõ¯Y2mèϸöé8Ö\Q©ÛôH²¬tôüÀ·rd¾§ÝjÏ©v°q¢Ë¾¡/}?f¸÷[ìÀWýU]„û÷×`D^ÂzXòߣ¯6ð•ZöÝ$€Œú6g³‚ w.tN±”ôž§…›ZN÷àHsíãàõjü{Jrx0»94pŽ"-;‡ç:mÔC±ãƒRo©äêÔí°DۿܽSÞ ¼Œ~f¯°è©¨8ˆä K×?ê‹Çv%]}âÜ̬t?`cµ¡BÁ¥X v›´{ñŸ µ¶؃qâ™E!¯Õ æv¦°pÊ•Šß¸Õ[|ø” ^}ÃE‡G=3ÖõË£¢zü!eøëéÚOD‘Ñ[ë§nBgaª§÷ðÓVF]q#œ¯WQ¿ or‰ »ùx±H‡¤?Lÿ k¼—·9‰j”DL—À.DW=6º ßîýš®Pí”0P¼çåÕZá°y4¯}žwybP) "©…!Ñ+½¹B¨O#(ɲžú`Á õ7]±áGP¯]Þo­EUZÈ ‚54-ãgÞ×®17 ÚœFê}.AƒGG>%öÚ:¹BfŽ»ŒÐ,¯ì·™¤zW°:½”Y*ñÞ¡Å`—c¨VË7Έ„„Ϻ2#Wİ$ñÛ˘&2ÔfaÎYg 3Pö–  ÷kû P¹·ðV#6Ïì=½5h SˆX,ò$ îÔ?§!¨Pÿns¬B[Èñ˜ÉÊf‚)N\_Œ¹®Mls¬ëÂ@=Ý ia©Dyí¡VR®já˜_7M®ÈpòHGJ*cH¨÷Ž:­‚M3§ov… ª_(ôURO`CÓ¦‡;0k¢$Ö•¦ÀMg@Ÿ„³WþXÈ¡e°îº¨»¢q±Ó»¥Õÿ{õY3×BKµøûîÔ¡R~à*oд§wBOwYÐ…Ùê CªÔ!Ø}æu¾ŸåèÔ’j— ò?E–Â9&ùßv ;T€îhWLE°…õlÄyúÑ+Á½ñ…)6°…@Xÿ˜¿:Ø¿Q‡xéÚ¦ÆÛ†U¹w]dn@¯Òæ…ØñDŸÈ•¶×>BM| ÿ¸˜äøeØgÎfU:É©î®]2éððŠêD5t'¾HCg²” éQs¹Áí:rzÎhxÅ¡ ]ËZßÕoF9üØëô¿M¸Æ)­­ sIa.~CõL ¬€+®.®,¢òx°¡šðÖ[Ì1opl{öÆ´2ðœÙ¯g¢¹ÔBe‡¢àò.C)jh3qã†^°ÕùÜ6¨ïÐOX®chÜÒdÑEæž%â;ÿ ¨DÀT’Có7£z|Úm¢ª÷1‘°5¢2 Õ—±TDIªDÌá¯ú+êHw¢$1ú±7·O­lDkޤxyÕùJÏß 6t4#<7Sp)÷àÜkCg°àÜgÉhIn0vÞn £¼-Øå÷ï»Ï°ŸX(írXµñ()±ÍþÙ˜ ®6K¾Bý’‘6T’Ög“L^iõõ¬s˜ò¬X k¼oÕÃwÎ1ÈšÃ!܉OãɨìÐ üï5K»8Ô¸îY“v Xê£óü!VðTŸßÚs–çÕU•‰=ñsˆ¬Aa×£™…s1ª¢E±TP(µ4kÌ;ë•x¹ü¼„Óʘ€¬÷pnPxÝߌËXåêÌÑJ¨Í”@G[Ä(×(×™Þ÷#Q¦jÁN$!±ZoƒËf¿wQjÚ§ø¢âsÈD)nkI™&$‚H|Rh,Se~"æKPTû‡œgu–HÀóÁTpB3fQk¿¹ªU}P3>ä—keYÔ:‡lš×oÁŠí(ù ºÛ?õ#‚çå\™í&ápEW8nNWÒk¾:ñpo@@òâ‚ØæºOAó7ŒïhßÎDì˜(ž.«]iÔÓÃè!‰®M—ìÇKY±\U~•ˆn\•\1“ª’ºu,þµ8K¬…¯W S$€Aø>oæ‰Ä©ÂMùÇõMûÌÈœ5O# }¸ÉåÅ, ñ¯H]—£ò5„š–š3IvAEåç{JÌrc=Æ^ mx‰øI9МýÌ¡¦ª•À8}“×8"<0.M6x†áíé¡0\~„ ¾ÂínÅS‚ÎÞÌ¥ÇPËþ–™=yŒŒ3¿¤ªä]-–›Q–ìªþ*öfŒ,|ÿ@é-²€ñ5Öóð„ZDŒ ›®æByª@»ÌR:áÇqw‚hi]¾W¡øâž…t=wÏc=f€ÝûYhøËŒç81>&Õâøc@h/Á^¶ãfÅâãç–ˆ»oµ)€0ˆìoð¼Z‚£ [ÙVH¨îÜ•nU¦€ò·¸¥ÀÉhÚk"GN"ŸùäÚPºXÆÃ²AxçI‘™2‚’4^;€øÓàHûw«’'Lµ¶'|eEVäÝ„²¤“ýAÖrÅnðhrä žú¡¦%Ì•­¡wî‘1|¥Xÿa*nŽåcîüC¿){QU“X5Æò‘|p\¾†XŽ  Y×€V#Bɨt—÷µ‚§SÐáiÌKȨ³¢ qïüá¿Î82uê‡^^ —ä9ZºÉh{Œ´…‚¢.ÇN· È¥z¸‰ ú*vV¸›ÙV6’fãKf­&GÓêvµR<슘ŒÛqó|yï›_YrèÔ,ø×):E|.ÇÜÚ0ECác¥é(æ«3]-lXÊá2Ðë|®œ¼¶è$T¬Ü®PÞ’ŽÏ"%õ qƯV.pCtLˆ=õ …Ok"±g¤RH yÞ×\ ·y ЈýÜËù®zæK„C,beh¡ö„&€îJ3Üÿ1œò 4ZXÚg³ ?¦Rb²ZÝ­ŒJŠO ±µjH46²Þøßu”ÀP³_E½È‰Ôˆ8÷ó5—ô¼Ø…”(—¶ ˜¬ ½Ã㞣m 5hüS#Yõ|$€LtV§_Å@yº£f‡°±×pj?X…ƒîò ì%É>4£z–èF‰ Ãa¢ŽWx zfäæ[+×ï³y†~Ü|¯N…¼ŒÙ•<ÐÈ«ÑT¶°KæYÏ‚ÍÏ>=DòˆÙ×’½ ³Å Ùò ¸Ãñt,8Clî9EÀ"_/ò¾Æ›­áÅá]Ø®.ö1Ô`ÎÕ|÷ ï§ú@n]/6ü/µ|¹×ŽH—|‚b>• ܗЀBË鮆½erA)ÿ†3Hªà^ævÈtMÝ)r€gU–`ã(S}ÁMÃ:ÒMÏ,K ¡éfCµÚªÍt*@¸,b¯Æ%,mù¿ÕfƒW( qþÉŠKvóÜê¡%™.Ìj£»hÛW|Ÿm@Ê"xÐïMOXµî©Ã× Ö8x®âî ¢K÷¶r3¦Õ[{›ZEó4·þ¾OÇ[+ÿ'iòÿ¬íp|Ä·‚y›­ÞO½£WËTMÅ=nÎÇ®Œ|™a‡Ìª¹—U00#]ªö«Zæà]à93a7«Íg‹˜ˆß±Iè-È'9ÕüßäŽeÓÍ庳û¥Ä¹a®ìºí°ŒYyŸù€s§BÚ\l£´zöÔĘì¨P' “ú¤Þô£q›=`«ù|¸3b¼^1Ât%¨®èöÌìv ¼¤AA§" ¶ŒÌ•@3‰·DñÞÓ™·M-¸³\ Q»þS®2ØiâG¡6°½ï±3ªþŒ“‹ËŽlØUìW2Ù)‘éÌ ¸=›gº`l^»òâªåXå6ºéöÀ0½œèÍ:õýM tfŽóÝÚPO =ÃB<šÿ(Ñ·ú"ÑâéeD·;§5¿'k “ëðªG©K½–W®èÝ}+ñùÊ÷ú“*àñÇá”G-'^tM±»aˆèÄøÂñ=$)éåò‰Z¤öSh°f雇ª }¾î—HÌ7Mù3«‹¡~Nê ‚½xÚ:vl3Ùõa¹ (¸0XŸdæVÊ!·ë#nx~ Á\ƒ,¾Rí¡º”¼=5Ý((c$oÇàr»Â´¯kÀ… ñ¿¯tg<­Vvަ2#i<Õ gVå@dϘ>Ƴm+X´]|¹鳘N6JÝV– Å`kÔâèê;-ÐâoV¨2 èM)4zû ÆÑ¼T§Lh²7ZûªénôpæCßä5M)Ú¥t«ºWm6–Ûˆî|ûHºKÍ bÍYOˆåÖ”¾½Pæ)×]L 2"þyI‘úÁ£Bßd`Á› ÉÚþýe€,hïLÒ7LT­}L2ÄšU;Ný1[jO°&ëp} ÷ÂmŽWù¸d` ôÝ€œ|ÈçK×þÄò}áï ÉÓ5õ†)ö”FÁ&P|77WËÁãŠ"Áãñ(ÉÃØyPšÕKN»ß$ŒßÀé'yÆ1ÃDƒªÙû”zö)_‘(J²U-{aZ#Z„çϼêò€ôl¬/a.[`Ÿq$ör1ïÔ$wª„:ë×Äié‰8²»ŒðÛf'€Z« ޽³†—×8›MA¢h„W¶M7i ×i8ÊÇžãq`‚ìt™ÂÝ!ŠJ‡áè}|_’$ °s « G@\ÀRþg ÞÉn½x#­*ù„Ö "Mí¦ÆKèJ¬y~¤\©ðA?Iœ¾â3*\A˜¶ñZÞÍ¢:Jí”B¡²àØ“¢V5y‡TÚìPigX«õþ®ET‚ÇW²Ð­ì*•õ ‡E°ç«,M}sÜÅ"%4‰4&€²®[¾N…Ñ]ÉÄâ´oƒ­×c"=KÌüÐgéoÌ]˜‹9¦wiµ°2ùÄfºÎZ·Ñ¹Ô(ÊHGK€“ïð¤'˜›b ÉË׿(rÆ—®j| dÖ¬ïÊý¬ázN¼.棹-4óôí…+>KÇõ}û n™Å­ätº°áríÌP6Û|U'1¤ Ž¢µìHv§ËÇCM”MQŽ,['î›Ç·‘a\Z…¼Ò~ ±{FÒР#F]Óšú¡$” 2äQFí%v¦­tõgïÊÃÝÔ1&ÄÂPñ3e~š„pVî«1c Jž¹'Bäï¢bA©8˜{ƒ,žìç_ë£ñÔ]. µçe\¹&<À‡S‚‘Ãï¼¾à]¹Ù8P–Š™ˆ†–òê`¤‚á=+ 1.ß1ƒŽÈ_Ë”ýëƒ)ŸyÇîúRžÛ6e&g}o}Ë·¾¹ë«"lz\ÿ‡vútçg Üï"«¨ø™ÃpaóíÙr¼€ñÕ¬ˆ ú<ÙVZjβZÒ=E |Òc~P_Ÿøu_o¥àZ>NÀeN%T?ë¡`vþwüm~‘×Â2—¸w¥‚·…¥½hžü9![é5<vz¿]ôqœ ë^Ofʬ¥àù¢"ˆDÆyLQpØž›Ðupe|7Ò#{²µþýÀ¸(/eˆ?@œC­ÊL:Rù”CZªÑÇA1•ýiŸë;% YO I îÑmÐÏuPI¼Z–I°³ŒLquâ§5o]£1hºÎòÍåÏÙS•úã‹Â$›¶OŸ<ïpü!”uIÖb§CæÝp´i©Ö;XÚË}Ô2ÔþÃ,ˆh[øˆøSæÅž ³Ó—W«øaVÛv$¤êan/´ßÛ*ŒÊÜ#3zŽêyF ¤]5¡@­7ŸëÜóÙÀÆÈµ|Ý]"áXDãdçPèçÃ{¥Mw”÷ùs][­¡h>LªHÔp±]ñ´¸a_ï 3šÝJÿwû%x™Éï ŒÉ¿/$¨íÁ: M;ô ó÷ðw 儨L^?^Åwø²ñàE>Ò”Ÿï~——• ©b†„v&ˆ¾JT32iš#ÏcEY¯™hì©…P®’2ñ8Ôí=wrCk-h× žQ–ý¡•Ÿ99FÂ÷²K™uYÀrûÈ¥ÀÀ‘ž»¹w`éæ(o©1HnZpì€a&è¿€c—Û\m¼;ƒ" þ›©ú¢nîÙ:¼^ð4Yg-ËËU9‹u@.ðc¾Û3ÚöX?¯xéuT™áù*c¢]Xj®Üß^Øk늻+{õ|ù߈U¶X®üÏè\è¶ÉÊDàŸ ÈŽUþªÌK@ëŒák>Eà”€°¸¿.×$YæJå| ¹)¸ôºÔ?qŧ'¤u¸hâd›eŠ-Ôu¢×²vK Gža¨ÿŸkÂ}iŠŠô´ÁêMPf#VT=‚M©¢{¡õΑ&y>¶[ØI•݆ÝT_oý°15Šâ· ¸9yÄì¢âèÐ+îEušÂ>^ø/‘ ƒ$!¨OKµ0rÝVfù+`'#˜8è©9Æ-„ƒ& G !íš@“B6ͯ¿X::šþÓ8døî¶h§0ËFÎÜBkK¬FGÐêP/ÛÝÏÀg˜Ç.ÒÎeR¹eÝd|«J¡âD¸‹’™Ö'9Í'€’oŒÐÍM£‹R\©~“¬ï¤bºåd\ÆÝä)¯êþ­‹\ñPxÁ~íîœ7·rÔ{ó‹\¤%¸÷$L4Ý/HqQå0¹0jáŒCu·[þ‚#)ü©$6üž¨£°ˆÌ6ÑG`»ÌÖJyò9AýáÖ·ç"ÏÝ‹)åÿ‚þúßoÈí@ÀÛ&6Àq –m`‰M³]§\ÞãÀF“—¯ž¨ErMvVÀ¢>¢Y¬ ïš/R9_ŠúN~‡CôRøÛÅñW›â=JÕOÔô§…n#Á?‚tʵvR³ýJ‘—hù±'˜»Ý¯UÈÙÑâüååíí¿ ]æ ½÷ö5O܈{ÓènV=~µ¼ÅfÍ’ö€7x–eð,Ý"…·¥5î'Ýö‘r“–xá{kÆÉU Â{¤PlZº+,«x½ É\c\ܰo¶u9`NÃKÄÙlÓºN+ÙB›39~⬇³N}va}1X§'’º¶BÌ[V:ö¤Ø¾‘?ŒdåêteçóÔ&*yûâŽÙ¹3TÁõð"¨h×þû猪2rJ¹*ˆ„ïßÉ_fÝô#ƒ©‹Úƒ3PØ­k›…9îA{ýà¢hߣ!ÊüøVëai°ßÛ”ÑI=`e‡Êë5Áaª“µj0s¤*eÅW4 |JŒZQZa¯ˆ)eà °ÝLÖ*„·SÎ3G‚h8&ì’L*„¥ßÝdR• ™­Ë›‹‹ÊR¯þ¿v1 Q' Ìá\D×»ÆD¥<™—™KIÑ`ˆìÁÑá™'*ŽfIe¹Cpñ%OõV'ý,TXg £óÀq xž› º3¤Hðµ8®â × ¸G2¹uîmùOµ@ØITâAZo¯2Ê]‹×IÃ1ðjjìY蟛G³ÿ1ŽØ XÖ²euN€\™Ž}¦·áá?øÅ\¥EÕ×ÜúPæ5ÓQ+CÞ¾ª`®nyR×'Ib/>§ÿeÄWpæCeq)%9Z‚ϧ~+a´Ê®5'< sôSÒq»‘ÂLM3-C½ë>Hì3(Å;8µ˜i4/w*î†õk¿–Óµƒù‰8óa Ë@Þ$¸Ó3~œß7¹îüÕ[ø¨Œe ¨ä£E™Ö^Sˆ¨æ•T¸Û±¸ÑœksN.k91å…GYàДAÉô!GÂüðÒòýˆ°ïXÆüØ+õ-dl½ëÛÉÙ”0ŽÞþøÎauŽˆ²-?<œäËqÏð–b3žíûÓ¬G0ý{STÇ üRCÒ®š¿­ j‰äÉÙËÛ˜˜¬{ƪQ^8ZNb L’´4ßæ''rvÚa¼$ØáUvªØ¸ð¶€Á ø9ê„ >Ò¼Ûdu~s|þ…ÈAz÷‰È÷gv@¯8UkTÐ}U œ–Ô,tÈÜë‘‚Qâ¹Á{1‰b<÷T ‡ô˜#G÷íø¢—þ.8^_2ÝõíK• ŸòDd°ŠÈ&ÜÉÔü¾î¨ž>DûÎÇuiŸÆ3¥žŒ{KIk¾Ó?bè•yTxÆŒ¯ÂZ»›ï¢[+Ù{Aè>¾»mš:0S#å‘åbÝ]S§÷Eég¿[U¨fƇSáOs²äG½x>õÆ”óp 𢽉Úë|Ï®ù¤‚mÎé÷­…‘V>ër$·‰œ„xº3/Þä¡Å¯à:µgÉ…_3Å®\æiT´`Ú¯¥Ÿ«gwÙW˜7f戱GÌ+}H.T\êBÚw¿²ãP%s¼é»Ø½Ð­…f´8`jIE0¿ã…/üCÖžQѹ/v‰O=µ. #Æ­2‚«âÖ¢-xƒú¸ž\ßÁÀUt6½gô5“=ünê|&P\2¶E\‹¾(ÑfÑÜUP0hÝhß¡ð0Ö--Y¨±]~…÷Ö²>ü'·9ÔÀäÊ(CX á4çàÍÊ%‚.9ô/“VkÅùTÉZ]_\Gft=ép-ë/¢ÃùàT›/ý·ý OY2ÅGßåÎ_ß*·g—¿uÓç5õ¹KüG¼}x!iÿj »U+*#L›õ¿»™Ì[B,/PùßJ¯L}Ó«‰)½ßUZ·¨AºV4øi}œ\½gn }†V<3(ßæÔý¨•jW~K¬w‰üÔxõâ̲K¼èŸföäŸGwp°z]…A…ð­\XÀB$OP@Å16±”DË/ MR^'ÊÊÕUÊ„LŽÖÜ6³ }vŠõ¦0k…8yEGÆT®ƒº ÍíP€OïuY«‹Ôå ©[Ùµ½x¸¿k“­OÃ-qå23]_Ž>uÜTˆÖ®ÑzŸvئ@_å *?®•¹"ã‰eø46”ŸF|gžn¡øbO¹Ú²Y†-×lùÎ*cy˱<\½×ÆÆœµ% š©ÙIöFô亭¡b ÎÎ. ×ÍA® ý|–B’Lñ¬z·Âã`Tí³÷þ£–°*<%öc­=¼Ÿñ'¬î¬H0µ3iîÖ?Î÷CÎçXÍyÈ‹õŸäi¿áá5°Ç$ˆYzLƒ°“ñK©t/¸2ø€‘Q1óÝÖµmPÔfÀf£ƒÈ<üßUßlÖä +ÒZm”ñ^%Å‚µ<Æ3MÊ´ÄrŽ„V,¡«ßdDj­öÆ ‘8Òo£">,iÈצJÍÅ=YÚm‰Ÿ(%ÐÒË`ëVÔöIú”W>§9û(iñäàHÇòŽ–¯3•J]H ýÉyiçQ~ç3Iü™(=Ž„$7é>ˆ° €øÍ£c$Ó6Îþœ$è䢈£Õ {ÒÊ{a+ŽCÀÿ/®- ófè2?ílDb²…ÅóMWØ'Ó¼˜pCÝ-`“ÔŽæÁI×ðBÄ逫Èê G§kŒ±áÜŠdg~(KÜÚ¿þ5.ÁOEâŸã“]ΪôGµ»îyq*Èí@‰¿’SIÓ™õ%[wVì Á÷_åãsi¢¶cC¿*çü!dÊ{‹`ÌjgõìX¶´V,R»¤)ÀÚÀÛ%„ðýSïê„—‚0ë1Q›¾›˜ßÖ„TС‘Y@„HãC²SÅ¢sþVGÖ–®9:2+SáTuÅ äWÏw£Ødé‚=[ÚiõmÀåe¤É2¨[n"B½¨PßKX+¦k„lñ1Tßý`ÉxÝ|ŒlTóµV…b6<}ý&™c£î.‰D€ðëð<‘ÏÜKx£•¬ðþ³˜ÁÔÞföY„´0ÿiy~Á8¿½Ñ(ÃBX– ðºmºh–¡xŸ ¾OªàáŸñDœ(s›À¯ Ò¦4/`6-xša¼™¹éÁÄݳt6!Œ¹˜¼`çß]í)K—GtãmŸ'=‘Ž‘xx 1Ñï‰rG?˜« è#WvùYYг[Ž ýíü¢Í+øZ¾Ö2ÏåÀ‰È9@B’Õk K°’ñÓ­X œí‚ ºaˆkð|ø/['Öz£VXÑÏå:}Ù¶ÐOVçCm-±ûÜ!/ž¤ˆø©yL>†ù½÷¤;ˆ¥^">ø%Þ(Û}•=ÄÔèâ …fµNî>-¦(©ê«rÉb]¦PŠîèSƒWzQsdFƒ†2xå1ì¥k˜íÑWÐ|#ïT´Ÿ8€Óu‰\|”ã—(¶ž-m8guýªË\´Ÿ4– ÷Aãž)wµ¢e験3Χú‰«©sqŸT} |¹ˆ ç'êDÇÌi?ðÛ“ÖTM7Õa°3àâé'éßlåM+¤Ybð.BaœØ‚Os€øZæÃÚ4€?ä7G5TX®éÏbyCéšsKú¿ÈX÷°Vüt±£ïIÄÊ Á»&Z«¨"²çŠ>~DÍt%/DÕÙÆ#’FLÇ GpÅfh«3ƒÊ®ÞÜ?v›°W¥Þð%cS K‡ý Sÿè 6·˜~3iÀ¡ÅÏÔ2È<E…þ`v¸åhƒ‡uÜ-e“è›5ñÛ®ÓBžÛ =Œ”$î¾O'4¯Ý±õá_¥k}U²¹ ¶Zc°ËŠ‡Ç¦ÃçÇfñWÓ¤c#ïW9/÷¨[ˆ(ÉÕ ;¨\î¬Ðif½R¿öØÿ"~ùtÞ4ÞRSíGSú}[˜´Ÿ‰¹œ™GŸ~ÒÍmºÒJûZÀ]êÎ4§XÿŽÊƒµœ'Aºi嘬O¦Ó*„5DfAÒĆ\t¯Î`êú®+ésòØ1LgYp/êß2`ƒ$×€ú“e(ù0(gãüóó vìßÝl"Kõ 71úGصÉ)h´'½@›Á; Œâµü _©ØÞªÈÔ‹¨koŲùeü~|G—«„íº‚{bAV©`iGãåU?¿òîÄÚ©¸ ‡ÅÄIŒU<9´’KZ!¢›{¢ò1°!8áÙžu¤>Ö½Œ5`{>¥žs«´Dô¼$æJǦÔ5N:ò˜t”b· wŸ{hý™Ã('£SÒ_ßAœ¹S÷f’yWéËÉDç0€O5±UžA'|1mgÇ ¸]e“/Õ¯Ùl¶Ñ÷|oæiñä_]㊹ ¯=êF¢º¸£ZDl×jü’‡ÊëgŠìƒozå·™Ií»A¥ó䵈Jé`KâÚ"pÇKò®–k+6ú1I±:ŸÛªl€AÉ~ʼn¼ó†R Á_ÄSgKÀPP5Vë ¯ ;„„/Må¡50¯O ÉÍîÉ«']Õѽý¦*EÊ…•0éàÙDñŒOqäDÿ%…³V™cÊÆÖ,Ïv¾}•nšÅ˜Âü/‹åè‡ðIÐ 5^W5.GË/J ¶rÀk[Ë¥3¨!ç’vMF0GÐ—ØØŠÆK™œ/çL‰x"qï:Dè AÀ‹Ü µ•‚TCifP4º âö¯Ÿj“탔´æ׸–1Xí,¦›r7»h4tgµô]µÚCUH,ÓÕþxm ‡?1n aY5=žÐƒ¥Ý`TvnêFvhö¬ÓOƒ÷ÇŒäJ0]]¡¦gçF®wò«×¿‡v€'ü"[áp©Š¹ag˜|/·ÝD+ANaÚwµ7G‰,”¤éÊIzŒƒêàìFJ±faûðoåð¿?åÃêîŽ7YWÿ—Š?íFü©šôAgHd•“ëèj@nb-o=ãÁ`‹&77j#®ŸwäÜœÝ|ÂÚË`2Ô\)ž„§'ã Ý ÅÒE÷¯ Ñ¿°DøÓ‰(,Vw!¦9mø %š¾ËX1…l«ž:Dxs²¹­r Ü“¶Z KynÒ§P“†ÈÇKªB¾"8KS pãIYª@+Ý¢£s ü‹DtÝ’»Å9nÁK¨òÛNoCÆ`®3ÂÙA>û„+¼&FAydXÆú•AŒ—…íüxôÀûžÈœé®3ÈA:ºÉX40ú¶Å²rS®ðèÒŒi³¤%w“¢×Ú vu§uÁ°ÿª¦E·%Û©œÐ&Û5PIõ¤& f÷ZußVˆŸ(³‡vF!<ólAÎ_Ëž¦S´G.åÚ4i¸E~ãOAŸMt=ËÂëó%3†€¬moPð‚4·4«694QmSRÙA²DàlŒ•t7ÎgÉ nhî 8ޏÀ>Éb  ×Š^Ìå @¬hÌ˸®é‹æ(ð´TÐøg:ˆq×à^ÁódU0°Dt”E1˜÷XБìiâëŠòìéÜ6†KMÜËùÑn(Œ¡é(™|ÅP;w¸æ ¯­LöÜL9qÚÁ.n7èÜ©‡—aÀ„ýfÄôBL3_ºvráܲ^ü‘(‚$ûZ–I@ îiÊÂ…Ç`¯Ê‚É{FëkÖ³Kx[kê¼óhKÄnž†¬\&ánŒ§a¸ÒhžyÉ”¸Ä†dpCyôÖ„ÓM­ +óÆî‡h–ðrái1ìöÆbµzá2?ÏÅø¨xÅö¦/Rªâso 6)«z8¢ QØ·ù†Óõ!úÇ¢OÕ¿ŒZåêáÂM,U´ËÜ• ^˜ ¿x¿8‚‰L¥E÷–S9Oz+äâÄ©ú-ÄÝ¡ý|µ §@üˆð¿uF®_·XºtÏ¥Y.í—µº ùÝú*µñUqMA£ë,ÐÓ|ü…ÀŠ™>„ȦP0oµ8ËÈ­™×7!\žv#.L틸âŽí5³¸~†é HÚK±?ôýÅ¥¶¼sñ,È frB•? ÷]ò5kf˜ƒ¿ÉþÞ<íµ2ê‰Ð¼K§%9kè-ò ª ±¿ÐlMX1ɯˆf;ö³^f\›Í7dº—Xè*Ø‚yÊʾcKEì¤}^É>@¦wÀ÷+qX7&e\ÍÆ ÕVù7ÎðaƒzïáPYddÚxÍ7æŸáÊ®g¾/0Òå™ ¸¯¡¶X ùúAñè±T¸Üàý÷ç‘Á˜9 a!­O%ä.y9XMf9Ñ*@¶UÔöƒ5‘¥ˆŸh§àlÁe”ÒZtËâRý†¶yØÁ~u¶¿8.ÿG¯}î-cÛæÁ&eI¢¼*Í-¤Ý~ÒÍ%i($Áû†RGÚ,óž l^Öt@þUì¢3ˆ4§…dÄá¬Ó¦ä*½lrçϰ°:Áüwé¥Çœ²ó(qffʓə¸Ž®yuwY©Ú¹Õ}ôEñ×·¢J/íœâïQì(AböcÇ4Ééõ>Lrâ~²c”Í´½|“Ïùyy3͘ì«Õ6•Û!aj"g@Ÿ’/¾òôÓ˜¾BVíöÒM¥Dç!ý rÇ‘yÍ^¨õã&é¢Û µ‹dÍ|¦«”;/´gÄTNC•õVÛRâ B$îdw«:ùf©UbI½]þLW·Ò"þ‘"˜7\•Á¬Œî«&4«ö7Ì?_´«‡›XZOæÆ »/Ï?ÑBu½‚&Ÿ\'†bxÜ…)÷|(+[“ùƒ¿?¡.ö© Ê£kLä6¡5gàO\U1®ç¹Âfy<º—áï*Me*|öžO©Í’ï™Îá{xÕhù ˜œÝ7*öâÊ^M\ [i.%Ç¢R;ü͵Ûó(>Í÷©š›ÒO!fñVäÖÔ»@¿}&5™µâíÙ§ÂLHUö }±ÊßЖÿe]$¿…Ôͱ{Oõá%Q“á—=F{r™ð¯QLÈ qyצEþææKá7Æd’ì§C Î,â 6¢ ©mMýÍpTØ…„¬äÓ5?µ‘L:KÝÊ™Ho@Ód‚¼j26_—üLþ Âæt£nÿàãùX'W°¹ˆ°_Q+"£Ð¤ô‡G¶]H¦u9Zp 6otHÝY¯áëÃ]RjÊÙ3Äo­GߨHÑÆ”S«eIj<§ìt¯Ô –Ìæ 8èogÓT†n?ÔOÙOxë['8Èí:£¡×܈ðÁ©ª¼À6 Ëšæ0²ƒ'£ßÉ,c# a8'‡ÁŸÅÈíäÓ)}U¡Ÿeaå$ÄP’ýɪsÑaøôÐ[˜T…XÃî; 0Û;U1Û¡L) I W#w×[#òÐ|û¸ÇTÈí\*6¸ð’阮ÿ{YèÐrO3Mf¶Q͘ ÕVé ìA©¶6Çq÷Rü+²ÖkA <È¿e4Ïî!±FÁ “XãY’[þÝ>mñZ‡Ó(€‡*+¿¼µTë¡èò|²7rn„è¡1CÞacןï¶;N7$Îè|²¥Ê¦N q4Ï¿~šùçâÑã…IÈ_Ta«å?PnÈäªýqª@ééÚ6™Ù[i¤†7kGtC1’.›àGz!f ÛF´¼GFš-g0W¹¿†ˆÂî¬Àé} •5Ø4ñ¤WRQ ÊèEë6ÄüörÊ ´LuG¼L†ò¢/Äc‡ÿŠ®%íÙ.†Û’A/,–ê57Ú)1ºÞðô $ÿnZ›AUvÂdŠHWÖ@Ø>>\ûÅRtºvwà™ß—¡D ¹ý†‡ÞK_58›íù¹?µ¡V!??mM×i¬Þžpw¸ÞYd™È h‰É+ƒf^@—E%´g›.á¢Q¹ßs3šµ šŸø5€vQÄwêoO„³2­§0²Ó¬ŒþNû ì?„@M“ë^ïÅl îúÕ¥íÍ€ÝÔçH8„Á“W?„ÁbFæÔdµ™ÈxÍF€sûú:öÞ$öÞ‡‰ÕÌÝg;OoyGoØÝà«éõG„ó[BÛ 6ƒX\ðé½n糓ûëMƒ*ßž­ú•>ø`BÁß\¸«µœãddùâM:F‹—clŽšyјѧ£§‹Ìšïòâxõ2¸Å K=û‘à‹¾¹2ƒëˆý+Î×o†°Lº3“yS‚ÝÌóS‰Ž› Õ`‰é>XaÒM@„ývk¡® 9¢âIfá'R©Bth¢JlŠ®¯0„âïþUœýî)üj¼8Dº¶)ÉfÖœ@÷‚*ÊH<¯¿ï}>#M C¹z¸ _ÐoÛDµ£'þN‹f†Å‰)š+A W¬JÊ@»<áÉíW¼¿÷+Û)FëS´1Kˆ?¼¨YUSšàC¥”J>,sí¥îÓôî»fdµ“AÒôNìâΤFÂL ;ü uÊ?¼?†S–ý5 “VC‰×eÞ y[WPú5ø=‹¸~sÉ Â¡N`Àޏ'~ÜÊ®¦¯PŠzr +¿‹sÙͺ±=ñH¯#=:RL<]vBI¶tp@m_´'ŽF~Q‚L«HŠÙþŸžR&Ô dU (0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont /TimesNewRomanPSMT havefont not { %%BeginFont: TimesNewRomanPSMT /TimesNewRomanPSMT 15 dict dup begin /FontName /TimesNewRomanPSMT def /FontType 3 def /FontMatrix [ 0.000977 0 0 0.000977 0 0 ] def /FontAscent 935 def /FontDescent -221 def /FontScript 0 def /FontBBox [ 0 -512 1024 1024 ] def /Encoding 256 array dup 0 1 255 { /.notdef put dup } for pop def /l /lineto load def /m /moveto load def /c /curveto load def /BuildChar { Adobe_Illustrator_AI5_vars exch /_bitlobyte exch put Adobe_Illustrator_AI5_vars exch /_bitfont exch put Adobe_Illustrator_AI5_vars /_bithibyte 0 put _bitlobyte 16 4 string cvrs dup length (K) dup length dup 4 -1 roll add string Adobe_Illustrator_AI5_vars exch /_bitkey exch put exch _bitkey copy pop _bitkey exch 3 -1 roll putinterval _bitfont /CharMetrics get _bitkey cvn get dup type /arraytype eq { aload pop setcachedevice } { 0 setcharwidth } ifelse _bitfont /CharStrings get _bitkey cvn get exec } bind def 12 dict dup begin /K20 { } bind def /K2D { { newpath 42 192 m 301 192 l 301 268 l 42 268 l 42 192 l closepath } exec fill } bind def /K54 { { newpath 38 678 m 31 519 l 50 519 l 52 549 60 574 72 592 c 84 610 99 622 117 628 c 130 633 153 635 184 635 c 266 635 l 266 118 l 266 80 262 56 255 45 c 243 28 222 19 193 19 c 169 19 l 169 0 l 458 0 l 458 19 l 434 19 l 408 19 388 26 376 40 c 367 50 362 76 362 118 c 362 635 l 457 635 l 485 635 508 630 525 621 c 542 612 556 598 566 579 c 572 567 577 547 581 519 c 600 519 l 593 678 l 38 678 l closepath } exec fill } bind def /K61 { { newpath 306 8 m 316 -3 329 -9 345 -9 c 380 -9 415 16 453 66 c 453 94 l 433 74 419 62 412 58 c 408 55 404 54 398 54 c 393 54 389 56 385 59 c 381 62 378 69 377 79 c 375 89 374 115 374 159 c 374 314 l 374 358 371 388 365 402 c 356 424 341 440 322 451 c 296 464 262 471 222 471 c 169 471 127 459 98 435 c 69 411 54 384 54 356 c 54 341 58 329 66 320 c 74 311 84 307 96 307 c 109 307 119 311 127 320 c 135 328 139 340 139 355 c 138 384 l 138 399 144 412 157 423 c 169 434 186 440 207 440 c 234 440 255 432 269 415 c 284 398 291 366 291 321 c 291 303 l 212 274 156 250 122 230 c 88 210 65 189 51 166 c 41 150 36 130 36 108 c 36 73 46 44 67 23 c 87 1 113 -10 145 -10 c 165 -10 185 -6 203 3 c 215 8 244 29 291 65 c 291 38 296 19 306 8 c closepath 190 48 m 172 48 155 56 141 72 c 126 87 119 107 119 131 c 119 150 125 168 136 184 c 148 200 166 215 193 230 c 208 238 240 252 291 272 c 291 98 l 249 65 216 48 190 48 c 190 48 l closepath } exec fill } bind def /K63 { { newpath 407 181 m 390 140 372 112 354 97 c 328 75 298 64 266 64 c 220 64 184 85 157 127 c 130 169 117 217 117 272 c 117 325 131 368 158 401 c 178 426 205 438 238 438 c 259 438 275 433 287 423 c 298 412 305 397 307 378 c 309 358 313 344 319 337 c 328 324 343 318 363 318 c 377 318 389 322 397 330 c 405 338 409 348 409 361 c 409 386 395 411 366 435 c 337 459 300 471 255 471 c 195 471 143 449 100 404 c 57 359 36 300 36 228 c 36 154 55 95 94 51 c 133 8 178 -14 230 -14 c 274 -14 314 2 350 35 c 386 67 410 113 422 174 c 407 181 l closepath } exec fill } bind def /K65 { { newpath 426 285 m 426 342 409 387 376 420 c 343 454 301 471 250 471 c 189 471 139 449 98 405 c 58 362 38 301 38 223 c 38 150 58 93 97 50 c 136 7 183 -14 238 -14 c 289 -14 331 5 365 42 c 399 80 419 122 426 168 c 410 178 l 395 137 376 109 354 93 c 332 76 306 68 276 68 c 231 68 192 87 159 126 c 125 164 109 217 109 285 c 426 285 l closepath 147 403 m 169 424 194 435 222 435 c 240 435 257 430 274 419 c 291 409 303 394 311 375 c 317 364 320 343 322 314 c 109 314 l 113 352 125 382 147 403 c closepath } exec fill } bind def /K68 { { newpath 144 711 m 7 655 l 14 637 l 30 642 41 645 48 645 c 57 645 64 643 69 639 c 74 634 78 626 80 614 c 83 602 84 570 84 518 c 84 104 l 84 75 82 56 78 47 c 74 37 69 31 62 28 c 50 21 34 18 14 18 c 14 0 l 241 0 l 241 18 l 218 18 201 21 192 26 c 182 31 176 37 172 45 c 169 53 167 72 167 104 c 167 345 l 192 371 213 388 231 397 c 248 406 265 410 282 410 c 298 410 311 406 323 398 c 334 391 342 379 347 363 c 352 348 355 315 355 265 c 355 104 l 355 78 355 62 354 57 c 350 44 344 34 336 28 c 328 21 313 18 292 18 c 281 18 l 281 0 l 506 0 l 506 18 l 485 18 470 20 462 25 c 454 30 448 36 445 44 c 440 55 438 75 438 104 c 438 266 l 438 322 435 361 429 382 c 420 413 406 435 387 450 c 368 464 346 471 320 471 c 298 471 277 465 255 454 c 233 442 204 416 167 375 c 167 711 l 144 711 l closepath } exec fill } bind def /K69 { { newpath 112 696 m 102 686 97 674 97 660 c 97 646 102 634 112 624 c 122 614 134 609 148 609 c 162 609 174 614 184 624 c 194 634 199 646 199 660 c 199 674 194 686 184 696 c 174 706 162 711 148 711 c 134 711 122 706 112 696 c closepath 168 471 m 30 415 l 37 397 l 50 402 62 405 71 405 c 80 405 87 402 92 398 c 97 394 100 387 103 376 c 106 361 107 329 107 279 c 107 104 l 107 76 105 56 100 46 c 96 36 90 29 82 25 c 74 20 59 18 37 18 c 37 0 l 260 0 l 260 18 l 238 18 223 20 215 25 c 207 30 200 37 196 46 c 192 56 190 75 190 104 c 190 471 l 168 471 l closepath } exec fill } bind def /K6C { { newpath 168 711 m 31 655 l 40 637 l 53 642 64 645 73 645 c 81 645 87 643 92 639 c 97 634 101 626 104 614 c 106 602 107 571 107 519 c 107 104 l 107 76 105 56 100 46 c 96 36 90 29 82 25 c 75 20 60 18 39 18 c 39 0 l 264 0 l 264 18 l 240 18 224 20 216 25 c 207 30 200 37 196 47 c 192 56 190 75 190 104 c 190 711 l 168 711 l closepath } exec fill } bind def /K6E { { newpath 166 471 m 144 471 l 6 415 l 14 397 l 27 402 38 405 47 405 c 56 405 63 402 68 398 c 73 394 77 386 79 374 c 82 362 83 328 83 273 c 83 104 l 83 70 79 48 71 36 c 62 24 47 18 23 18 c 13 18 l 13 0 l 241 0 l 241 18 l 216 18 199 20 191 25 c 183 29 176 36 172 46 c 168 54 166 73 166 104 c 166 345 l 205 388 245 410 284 410 c 310 410 328 401 339 382 c 350 363 355 333 355 291 c 355 104 l 355 78 354 62 353 57 c 350 44 344 34 335 28 c 327 21 312 18 291 18 c 281 18 l 281 0 l 508 0 l 508 18 l 486 18 471 20 463 25 c 455 30 449 36 445 45 c 440 55 438 75 438 104 c 438 299 l 438 340 434 371 427 391 c 416 419 402 440 384 452 c 366 465 345 471 320 471 c 271 471 220 439 166 375 c 166 471 l closepath } exec fill } bind def /K72 { { newpath 146 471 m 7 415 l 12 397 l 25 402 37 405 47 405 c 56 405 63 402 69 398 c 75 393 79 385 81 375 c 83 365 84 333 84 280 c 84 104 l 84 77 83 61 82 55 c 78 43 72 35 64 29 c 53 22 35 18 12 18 c 12 0 l 247 0 l 247 18 l 226 18 211 21 200 27 c 189 33 181 40 177 49 c 170 62 167 82 167 107 c 167 326 l 183 357 198 380 213 393 c 220 400 227 403 233 403 c 240 403 250 397 265 386 c 279 375 292 369 304 369 c 316 369 326 374 335 383 c 344 392 348 403 348 416 c 348 430 342 443 330 454 c 318 465 303 471 285 471 c 244 471 205 437 167 368 c 167 471 l 146 471 l closepath } exec fill } bind def /K74 { { newpath 150 609 m 136 575 126 552 118 539 c 103 515 86 494 67 477 c 47 460 28 447 10 440 c 10 424 l 83 424 l 83 115 l 83 82 87 57 94 41 c 101 26 111 13 126 5 c 141 -4 156 -8 171 -8 c 194 -8 216 0 237 17 c 259 33 275 58 287 91 c 267 91 l 261 78 253 67 243 60 c 233 53 222 50 211 50 c 198 50 187 55 179 66 c 170 76 166 96 166 126 c 166 423 l 273 424 l 273 458 l 166 458 l 166 609 l 150 609 l closepath } exec fill } bind def end /CharStrings exch def 12 dict dup begin /K20 [256 0 0 0 0 0] def Encoding 32 /K20 put /K2D [341 0 42 193 301 268] def Encoding 45 /K2D put /K54 [626 0 31 0 600 679] def Encoding 84 /K54 put /K61 [455 0 36 -9 453 472] def Encoding 97 /K61 put /K63 [455 0 36 -13 422 472] def Encoding 99 /K63 put /K65 [455 0 38 -13 425 472] def Encoding 101 /K65 put /K68 [512 0 7 0 506 712] def Encoding 104 /K68 put /K69 [285 0 31 0 260 712] def Encoding 105 /K69 put /K6C [285 0 32 0 264 712] def Encoding 108 /K6C put /K6E [512 0 6 0 507 472] def Encoding 110 /K6E put /K72 [341 0 7 0 347 472] def Encoding 114 /K72 put /K74 [285 0 10 -7 287 609] def Encoding 116 /K74 put end /CharMetrics exch def end definefont pop %%EndFont } if /EuclidSymbol havefont not { %%BeginFont: EuclidSymbol /EuclidSymbol 15 dict dup begin /FontName /EuclidSymbol def /FontType 3 def /FontMatrix [ 0.000977 0 0 0.000977 0 0 ] def /FontAscent 975 def /FontDescent -256 def /FontScript 0 def /FontBBox [ 0 -512 1024 1024 ] def /Encoding 256 array dup 0 1 255 { /.notdef put dup } for pop def /l /lineto load def /m /moveto load def /c /curveto load def /BuildChar { Adobe_Illustrator_AI5_vars exch /_bitlobyte exch put Adobe_Illustrator_AI5_vars exch /_bitfont exch put Adobe_Illustrator_AI5_vars /_bithibyte 0 put _bitlobyte 16 4 string cvrs dup length (K) dup length dup 4 -1 roll add string Adobe_Illustrator_AI5_vars exch /_bitkey exch put exch _bitkey copy pop _bitkey exch 3 -1 roll putinterval _bitfont /CharMetrics get _bitkey cvn get dup type /arraytype eq { aload pop setcachedevice } { 0 setcharwidth } ifelse _bitfont /CharStrings get _bitkey cvn get exec } bind def 1 dict dup begin /K77 { { newpath 18 496 m 168 0 l 250 0 l 330 236 l 347 289 362 340 375 399 c 377 399 l 389 341 403 292 421 237 c 497 0 l 579 0 l 738 496 l 649 496 l 579 247 l 562 188 549 136 541 86 c 538 86 l 526 136 512 188 494 248 c 417 496 l 341 496 l 260 244 l 244 189 227 136 216 86 c 213 86 l 204 137 190 188 176 244 c 111 496 l closepath } exec fill } bind def end /CharStrings exch def 1 dict dup begin /K77 [754 0 18 0 738 496] def Encoding 119 /K77 put end /CharMetrics exch def end definefont pop %%EndFont } if setpacking %AI3_EndRider [ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis /Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute /egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde /oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex /udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls /registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash /.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef /.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash /questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef /guillemotleft/guillemotright/ellipsis/space/Agrave/Atilde/Otilde/OE/oe /endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide /.notdef/ydieresis/Ydieresis/fraction/Euro/guilsinglleft/guilsinglright /fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand /Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex /Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex /Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla /hungarumlaut/ogonek/caron TE %AI55J_Tsume: None %AI3_BeginEncoding: _EuclidSymbol EuclidSymbol [/_EuclidSymbol/EuclidSymbol 0 0 0 TZ %AI3_EndEncoding TrueType %AI55J_Tsume: None %AI3_BeginEncoding: _Times-Roman Times-Roman [/_Times-Roman/Times-Roman 0 0 1 TZ %AI3_EndEncoding AdobeType %AI55J_Tsume: None %AI3_BeginEncoding: _TimesNewRomanPSMT TimesNewRomanPSMT [/_TimesNewRomanPSMT/TimesNewRomanPSMT 0 0 0 TZ %AI3_EndEncoding TrueType [161/degree 173/notequal 176/infinity/plusminus/lessequal/greaterequal 181/mu/partialdiff/summation/product/pi/integral 189/Omega 195/radical 197/approxequal 198/Delta 214/divide/lozenge 240/apple /_Symbol_/Symbol 0 0 0 TZ %AI5_Begin_NonPrinting Np %AI8_PluginGroupInfo (Adobe Path Blends) (Adobe Blends Plugin) (LiveBlends.aip) %AI8_PluginGroupInfo (Adobe Tracing Object) (Tracing) (TracingSuite.aip) %AI8_PluginGroupInfo (Adobe Scatter Brush Tool) (Adobe Scatter Brush Plugin) (ScatterBrushTool.aip) %AI8_PluginGroupInfo (Adobe Scatter Brush Tool) (Adobe Scatter Brush Plugin) (ScatterBrushTool.aip) %AI8_PluginGroupInfo (Adobe PatternOnPath Brush Tool) (Adobe Pattern Brush Plugin) (ArtBrushTool.aip) %AI8_PluginGroupInfo (Adobe PatternOnPath Brush Tool) (Adobe Pattern Brush Plugin) (ArtBrushTool.aip) %AI8_PluginGroupInfo (Adobe ArtOnPath Brush Tool) (Adobe Art Brush Plugin) (ArtBrushTool.aip) %AI8_PluginGroupInfo (Adobe ArtOnPath Brush Tool) (Adobe Art Brush Plugin) (ArtBrushTool.aip) %AI8_PluginGroupInfo (Adobe Calligraphic Brush Tool) (Adobe Calligraphic Brush Plugin) (CalligBrushTool.aip) %AI8_PluginGroupInfo (Adobe Flare Plugin) (Flare) (Flare.aip) %AI8_PluginGroupInfo (Adobe Symbolism) (Adobe Symbolism) (ParticleSystem.aip) %AI8_PluginGroupInfo (Adobe Deform Plugin) (Adobe Envelope Plugin) (Envelope and Warp.aip) %AI8_PluginGroupInfo (Pathfinder Suite) (Adobe Compound Shape) (PathFinderS.aip) %AI8_PluginGroupInfo (Adobe Planar Group) (Adobe Live Paint Plugin) (Live Paint.aip) %AI5_End_NonPrinting-- %AI5_Begin_NonPrinting Np 4 Bn %AI5_BeginGradient: (Black, White) (Black, White) 0 2 Bd [ < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 0 %_Br [ 0 0 50 100 %_BS %_0 0 50 100 Bs 1 0 50 0 %_BS %_1 0 50 0 Bs BD %AI5_EndGradient %AI5_BeginGradient: (Chrome) (Chrome) 0 6 Bd [ 0 < 464646454545444444444343434342424241414141404040403F3F3F3E3E3E3E3D3D3D3C3C3C3C3B 3B3B3B3A3A3A39393939383838383737373636363635353535343434333333333232323131313130 3030302F2F2F2E2E2E2E2D2D2D2D2C2C2C2B2B2B2B2A2A2A2A292929282828282727272626262625 2525252424242323232322222222212121202020201F1F1F1F1E1E1E1D1D1D1D1C1C1C1B1B1B1B1A 1A1A1A1919191818181817171717161616151515151414141413131312121212111111101010100F 0F0F0F0E0E0E0D0D0D0D0C0C0C0C0B0B0B0A0A0A0A09090909080808070707070606060505050504 04040403030302020202010101010000 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < 1F1E1E1E1E1E1E1E1E1E1D1D1D1D1D1D1D1D1C1C1C1C1C1C1C1C1B1B1B1B1B1B1B1B1B1A1A1A1A1A 1A1A1A19191919191919191818181818181818181717171717171717161616161616161615151515 15151515151414141414141414131313131313131312121212121212121211111111111111111010 1010101010100F0F0F0F0F0F0F0F0F0E0E0E0E0E0E0E0E0D0D0D0D0D0D0D0D0C0C0C0C0C0C0C0C0C 0B0B0B0B0B0B0B0B0A0A0A0A0A0A0A0A090909090909090909080808080808080807070707070707 07060606060606060606050505050505050504040404040404040303030303030303030202020202 02020201010101010101010000000000 > 1 %_Br 0 0.275 1 < 6B6A696867666564636261605F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544 434241403F3E3D3C3B3A393837363534333231302F2E2D2C2B2A292827262524232221201F > 1 %_Br 0 < 00000101010102020202030303040404040505050506060607070707080808090909090A0A0A0A0B 0B0B0C0C0C0C0D0D0D0D0E0E0E0F0F0F0F1010101011111112121212131313141414141515151516 161617171717181818181919191A1A1A1A1B1B1B1C1C1C1C1D1D1D1D1E1E1E1F1F1F1F2020202021 212122222222232323232424242525252526262626272727282828282929292A2A2A2A2B2B2B2B2C 2C2C2D2D2D2D2E2E2E2E2F2F2F303030303131313132323233333333343434353535353636363637 373738383838393939393A3A3A3B3B3B3B3C3C3C3D3D3D3D3E3E3E3E3F3F3F404040404141414142 42424343434344444444454545464646 > < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > < 00000101020203030304040505050606070708080809090A0A0B0B0B0C0C0D0D0D0E0E0F0F101010 1111121212131314141515151616171718181819191A1A1A1B1B1C1C1D1D1D1E1E1F1F1F20202121 222222232324242525252626272727282829292A2A2A2B2B2C2C2D2D2D2E2E2F2F2F303031313232 32333334343435353636373737383839393A3A3A3B3B3C3C3C3D3D3E3E3F3F3F4040414142424243 434444444545464647474748484949494A4A4B4B4C4C4C4D4D4E4E4F4F4F50505151515252535354 54545555565657575758585959595A5A5B5B5C5C5C5D5D5E5E5E5F5F606061616162626363646464 6565666666676768686969696A6A6B6B > 1 %_Br 1 0 %_Br < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < 4D4C4C4C4B4B4B4A4A4A4A4949494848484747474746464645454544444444434343424242414141 414040403F3F3F3E3E3E3E3D3D3D3C3C3C3B3B3B3B3A3A3A39393938383838373737363636353535 35343434333333323232323131313030302F2F2F2E2E2E2E2D2D2D2C2C2C2B2B2B2B2A2A2A292929 282828282727272626262525252524242423232322222222212121202020201F1F1F1E1E1E1D1D1D 1D1C1C1C1B1B1B1A1A1A1A1919191818181717171616161615151514141413131313121212111111 101010100F0F0F0E0E0E0D0D0D0D0C0C0C0B0B0B0A0A0A0A09090908080807070707060606050505 04040404030303020202010101010000 > 0 0 1 %_Br [ 1 0 50 92 %_BS %_1 0 50 92 Bs 0 0.275 1 0.12 1 50 59 %_BS %_0 0.275 1 0.12 1 50 59 Bs 0 0.275 1 0.42 1 50 50 %_BS %_0 0.275 1 0.42 1 50 50 Bs 1 0 50 49 %_BS %_1 0 50 49 Bs 1 0 50 41 %_BS %_1 0 50 41 Bs 1 0.3 0 0 1 50 0 %_BS %_1 0.3 0 0 1 50 0 Bs BD %AI5_EndGradient %AI5_BeginGradient: (Rainbow) (Rainbow) 0 6 Bd [ < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 1 0 0 1 %_Br 1 < 0708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E 2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F50515253545556 5758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E 7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6 A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCE CFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6 F7F8F9FAFBFCFDFEFF > 0 0 1 %_Br 1 < 00000000000000000000000000000000000001010101010101010101010101010101010101010101 01010101010101010101010101010202020202020202020202020202020202020202020202020202 02020202020202020202030303030303030303030303030303030303030303030303030303030303 03030303030304040404040404040404040404040404040404040404040404040404040404040404 04040505050505050505050505050505050505050505050505050505050505050505050505050606 06060606060606060606060606060606060606060606060606060606060606060607070707070707 07070707070707070707070707070707 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 0 1 %_Br < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 0 1 0 1 %_Br 0 < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 1 0 1 %_Br [ 0 1 0 0 1 50 100 %_BS %_0 1 0 0 1 50 100 Bs 1 1 0 0 1 50 80 %_BS %_1 1 0 0 1 50 80 Bs 1 0.0279 0 0 1 50 60 %_BS %_1 0.0279 0 0 1 50 60 Bs 1 0 1 0 1 50 40 %_BS %_1 0 1 0 1 50 40 Bs 0 0 1 0 1 50 20 %_BS %_0 0 1 0 1 50 20 Bs 0 1 1 0 1 50 0 %_BS %_0 1 1 0 1 50 0 Bs BD %AI5_EndGradient %AI5_BeginGradient: (Yellow & Orange Radial) (Yellow & Orange Radial) 1 2 Bd [ 0 < 0001010203040506060708090A0B0C0C0D0E0F10111213131415161718191A1B1C1D1D1E1F202122 232425262728292A2B2B2C2D2E2F303132333435363738393A3B3C3D3E3E3F404142434445464748 494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F60606162636465666768696A6B6C6D6E6F 707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C > < FFFFFFFFFEFEFEFEFEFEFEFDFDFDFDFDFDFCFCFCFCFCFCFBFBFBFBFBFBFAFAFAFAFAFAF9F9F9F9F9 F9F8F8F8F8F8F8F7F7F7F7F7F7F6F6F6F6F6F6F5F5F5F5F5F5F4F4F4F4F4F3F3F3F3F3F3F2F2F2F2 F2F2F1F1F1F1F1F0F0F0F0F0F0EFEFEFEFEFEFEEEEEEEEEEEDEDEDEDEDEDECECECECECEBEBEBEBEB EBEAEAEAEAEAE9E9E9E9E9E9E8E8E8E8E8E8E7E7E7E7E7E6E6E6E6E6E6 > 0 1 %_Br [ 0 0 1 0 1 52 19 %_BS %_0 0 1 0 1 52 19 Bs 0 0.55 0.9 0 1 50 100 %_BS %_0 0.55 0.9 0 1 50 100 Bs BD %AI5_EndGradient %AI5_End_NonPrinting-- %AI5_Begin_NonPrinting Np %AI3_BeginPattern: (Brick) (Brick) 0 0 72 72 [ %AI3_Tile (0 O 0 R 0.3 0.85 0.85 0 k 0.3 0.85 0.85 0 K ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 0 0 m 0 72 L 72 72 L 72 0 L 0 0 L f %AI6_EndPatternLayer ) & (0 O 0 R 1 g 1 G ) @ ( %AI6_BeginPatternLayer 0 J 0 j 0.3 w 4 M []0 d 0 XR 0 68.4097 m 72 68.4097 l S 0 61.209 m 72 61.209 L S 0 54.0088 m 72 54.0088 L S 0 46.8076 m 72 46.8076 L S 0 39.6084 m 72 39.6084 L S 0 32.4072 m 72 32.4072 L S 0 25.207 m 72 25.207 L S 0 18.0059 m 72 18.0059 L S 0 10.8057 m 72 10.8057 L S 0 3.6064 m 72 3.6064 L S 68.4102 68.4097 m 68.4102 61.2217 l S 54.0098 68.4097 m 54.0098 61.2217 L S 39.6094 68.4097 m 39.6094 61.2217 L S 25.21 68.4097 m 25.21 61.2217 L S 10.8105 68.4097 m 10.8105 61.2217 L S 68.4102 53.9717 m 68.4102 46.7842 l S 54.0098 53.9717 m 54.0098 46.7842 L S 39.6094 53.9717 m 39.6094 46.7842 L S 25.21 53.9717 m 25.21 46.7842 L S 10.8105 53.9717 m 10.8105 46.7842 L S 68.4102 39.5967 m 68.4102 32.4092 l S 54.0098 39.5967 m 54.0098 32.4092 L S 39.6094 39.5967 m 39.6094 32.4092 L S 25.21 39.5967 m 25.21 32.4092 L S 10.8105 39.5967 m 10.8105 32.4092 L S 68.4102 25.2217 m 68.4102 18.0342 l S 54.0098 25.2217 m 54.0098 18.0342 L S 39.6094 25.2217 m 39.6094 18.0342 L S 25.21 25.2217 m 25.21 18.0342 L S 10.8105 25.2217 m 10.8105 18.0342 L S 68.4102 10.7842 m 68.4102 3.5967 l S 54.0098 10.7842 m 54.0098 3.5967 L S 39.6094 10.7842 m 39.6094 3.5967 L S 25.21 10.7842 m 25.21 3.5967 L S 10.8105 10.7842 m 10.8105 3.5967 L S 61.1973 3.5967 m 61.1973 0 L S 46.7969 3.5967 m 46.7969 0 L S 32.3965 3.5967 m 32.3965 0 L S 17.9971 3.5967 m 17.9971 0 L S 3.5967 3.5967 m 3.5967 0 l S 61.1973 18.0342 m 61.1973 10.8467 L S 46.7969 18.0342 m 46.7969 10.8467 L S 32.3965 18.0342 m 32.3965 10.8467 L S 17.9971 18.0342 m 17.9971 10.8467 L S 3.5967 18.0342 m 3.5967 10.8467 l S 61.1973 32.4092 m 61.1973 25.2217 L S 46.7969 32.4092 m 46.7969 25.2217 L S 17.9971 32.4092 m 17.9971 25.2217 L S 3.5967 32.4092 m 3.5967 25.2217 l S 61.1973 46.7842 m 61.1973 39.5967 L S 46.7969 46.7842 m 46.7969 39.5967 L S 32.3965 46.7842 m 32.3965 39.5967 L S 17.9971 46.7842 m 17.9971 39.5967 L S 3.5967 46.7842 m 3.5967 39.5967 l S 61.1973 61.2217 m 61.1973 54.0347 L S 46.7969 61.2217 m 46.7969 54.0347 L S 32.3965 61.2217 m 32.3965 54.0347 L S 17.9971 61.2217 m 17.9971 54.0347 L S 3.5967 61.2217 m 3.5967 54.0347 l S 61.1973 71.959 m 61.1973 68.4717 L S 46.7969 71.959 m 46.7969 68.4717 L S 32.3965 71.959 m 32.3965 68.4717 L S 17.9971 71.959 m 17.9971 68.4717 L S 3.5967 71.959 m 3.5967 68.4717 l S 32.3965 32.4092 m 32.3965 25.2217 L S %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Confetti) (Confetti) 4.85 3.617 76.85 75.617 [ %AI3_Tile (0 O 0 R 1 g 1 G ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 4.85 3.617 m 4.85 75.617 L 76.85 75.617 L 76.85 3.617 L 4.85 3.617 L f %AI6_EndPatternLayer ) & (0 O 0 R 0 g 0 G ) @ ( %AI6_BeginPatternLayer 0 J 0 j 0.3 w 4 M []0 d 0 XR 10.6 64.867 m 7.85 62.867 l S 9.1 8.617 m 6.85 6.867 l S 78.1 68.617 m 74.85 67.867 l S 76.85 56.867 m 74.35 55.117 l S 79.6 51.617 m 76.6 51.617 l S 76.35 44.117 m 73.6 45.867 l S 78.6 35.867 m 76.6 34.367 l S 76.1 23.867 m 73.35 26.117 l S 78.1 12.867 m 73.85 13.617 l S 68.35 14.617 m 66.1 12.867 l S 76.6 30.617 m 73.6 30.617 l S 62.85 58.117 m 60.956 60.941 l S 32.85 59.617 m 31.196 62.181 l S 47.891 64.061 m 49.744 66.742 l S 72.814 2.769 m 73.928 5.729 l S 67.976 2.633 m 67.35 5.909 l S 61.85 27.617 m 59.956 30.441 l S 53.504 56.053 m 51.85 58.617 l S 52.762 1.779 m 52.876 4.776 l S 45.391 5.311 m 47.244 7.992 l S 37.062 3.375 m 35.639 5.43 l S 55.165 34.828 m 57.518 37.491 l S 20.795 3.242 m 22.12 5.193 l S 14.097 4.747 m 15.008 8.965 l S 9.736 1.91 m 8.073 4.225 l S 31.891 5.573 m 32.005 8.571 l S 12.1 70.367 m 15.6 68.867 l S 9.35 54.867 m 9.6 58.117 l S 12.85 31.867 m 14.35 28.117 l S 10.1 37.367 m 12.35 41.117 l S 34.1 71.117 m 31.85 68.617 l S 38.35 71.117 m 41.6 68.367 l S 55.1 71.117 m 58.35 69.117 l S 57.35 65.117 m 55.35 61.867 l S 64.35 66.367 m 69.35 68.617 l S 71.85 62.867 m 69.35 61.117 l S 23.6 70.867 m 23.6 67.867 l S 20.6 65.867 m 17.35 65.367 l S 24.85 61.367 m 25.35 58.117 l S 25.85 65.867 m 29.35 66.617 l S 14.1 54.117 m 16.85 56.117 l S 12.35 11.617 m 12.6 15.617 l S 12.1 19.867 m 14.35 22.367 l S 26.1 9.867 m 23.6 13.367 l S 34.6 47.117 m 32.1 45.367 l S 62.6 41.867 m 59.85 43.367 l S 31.6 35.617 m 27.85 36.367 l S 36.35 26.117 m 34.35 24.617 l S 33.85 14.117 m 31.1 16.367 l S 37.1 9.867 m 35.1 11.117 l S 34.35 20.867 m 31.35 20.867 l S 44.6 56.617 m 42.1 54.867 l S 47.35 51.367 m 44.35 51.367 l S 44.1 43.867 m 41.35 45.617 l S 43.35 33.117 m 42.6 30.617 l S 43.85 23.617 m 41.1 25.867 l S 44.35 15.617 m 42.35 16.867 l S 67.823 31.1 m 64.823 31.1 l S 27.1 32.617 m 29.6 30.867 l S 31.85 55.117 m 34.85 55.117 l S 19.6 40.867 m 22.1 39.117 l S 16.85 35.617 m 19.85 35.617 l S 20.1 28.117 m 22.85 29.867 l S 52.1 42.617 m 54.484 44.178 l S 52.437 50.146 m 54.821 48.325 l S 59.572 54.133 m 59.35 51.117 l S 50.185 10.055 m 53.234 9.928 l S 51.187 15.896 m 53.571 14.075 l S 58.322 19.883 m 59.445 16.823 l S 53.1 32.117 m 50.6 30.367 l S 52.85 24.617 m 49.6 25.617 l S 61.85 9.117 m 59.1 10.867 l S 69.35 34.617 m 66.6 36.367 l S 67.1 23.617 m 65.1 22.117 l S 24.435 46.055 m 27.484 45.928 l S 25.437 51.896 m 27.821 50.075 l S 62.6 47.117 m 65.321 46.575 l S 19.85 19.867 m 20.35 16.617 l S 21.85 21.867 m 25.35 22.617 l S 37.6 62.867 m 41.6 62.117 l S 38.323 42.1 m 38.823 38.6 l S 69.35 52.617 m 66.85 53.867 l S 14.85 62.117 m 18.1 59.367 l S 9.6 46.117 m 7.1 44.367 l S 20.6 51.617 m 18.6 50.117 l S 46.141 70.811 m 47.994 73.492 l S 69.391 40.561 m 71.244 43.242 l S 38.641 49.311 m 39.35 52.117 l S 25.141 16.811 m 25.85 19.617 l S 36.6 32.867 m 34.6 31.367 l S 6.1 68.617 m 2.85 67.867 l S 4.85 56.867 m 2.35 55.117 l S 7.6 51.617 m 4.6 51.617 l S 6.6 35.867 m 4.6 34.367 l S 6.1 12.867 m 1.85 13.617 l S 4.6 30.617 m 1.6 30.617 l S 72.814 74.769 m 73.928 77.729 l S 67.976 74.633 m 67.35 77.909 l S 52.762 73.779 m 52.876 76.776 l S 37.062 75.375 m 35.639 77.43 l S 20.795 75.242 m 22.12 77.193 l S 9.736 73.91 m 8.073 76.225 l S 10.1 23.617 m 6.35 24.367 l S 73.217 18.276 m 71.323 21.1 l S 28.823 39.6 m 29.505 42.389 l S 49.6 38.617 m 47.6 37.117 l S 60.323 73.6 m 62.323 76.6 l S 60.323 1.6 m 62.323 4.6 l S %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Leaves - Fall ) (Leaves - Fall ) 0 0 64.0781 78.9336 [ %AI3_Tile (0 O 0 R 0.05 0.2 1 0 k 0.05 0.2 1 0 K ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 64.0781 78.9336 m 64.0781 0 L 0 0 L 0 78.9336 L 64.0781 78.9336 L f %AI6_EndPatternLayer ) & (0 O 0 R 0.83 0 1 0 k 0.83 0 1 0 K ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 29.7578 0.9902 m 30.4346 1.1914 30.7246 1.3428 V 29.2559 4.0547 33.707 8.3359 34.627 9.0762 C 35.2275 8.8506 35.3477 6.3184 34.6699 4.9805 C 35.5137 5.1035 37.7031 3.7256 38.4609 2.4365 C 38.5254 3.125 40.0957 6.0664 40.9219 6.4434 C 40.002 6.8408 39.3359 8.3135 38.5742 9.7617 C 39.5957 9.9287 40.9961 9.0078 42.4668 8.1025 C 42.9814 8.9043 44.3555 9.875 45.6143 10.3916 C 44.5264 11.0781 44.0313 11.8203 43.5352 13.2793 C 42.4922 12.7139 40.3057 12.5645 39.7764 12.8516 C 40.291 13.9648 42.5371 14.5078 43.2676 14.4551 C 43.0137 15.3164 42.8652 17.4697 43.0391 20.0625 C 41.3789 18.7461 39.834 17.4297 38.1738 17.4883 C 38.4434 16.0664 37.8076 14.2607 37.4307 13.7676 C 36.8574 14.5117 36.4463 15.3389 36.8008 17.3164 C 35.3486 17.8008 34.1113 18.3467 32.7373 19.6045 C 32.7373 17.7734 32.166 16.5723 31.2969 15.2959 C 32.5576 14.8076 33.8301 13.6045 33.8252 12.5664 C 32.9775 12.7178 31.2852 13.4619 30.793 14.4551 C 30.0742 13.707 28.3906 12.3984 26.7871 12.3945 C 27.9746 11.5391 28.8945 10.5059 28.9893 8.5938 C 30.2422 9.5645 32.6953 10.1797 34.0752 9.582 C 29.2344 5.3457 29.7031 2.3125 29.7578 0.9902 C f 13.8525 29.9844 m 13.3281 29.5127 13.1309 29.25 V 15.623 27.4326 13.3691 21.6074 12.8555 20.5439 C 12.2168 20.4883 10.8096 23.2285 10.8457 24.7266 C 9.7129 23.9707 8.0488 24.0918 6.4463 24.3779 C 7.0186 23.2891 6.6172 21.3447 5.8164 20.5439 C 6.8184 20.5801 8.1699 19.8652 9.4785 18.8838 C 8.6436 18.0645 6.8164 18.2246 4.9004 18.8838 C 4.9004 17.5107 4.0781 15.7734 3.2412 14.5918 C 4.5576 14.6484 5.7031 13.9629 6.5605 12.9316 C 7.2256 14.5 9.2598 15.6133 10.166 15.5645 C 10.1826 14.1992 8.6094 12.1094 7.5879 11.7109 C 8.1875 11.041 9.207 9.5107 10.166 7.0947 C 10.9648 9.0205 12.1348 10.2627 13.3672 11.1953 C 12.2256 12.7578 12.3994 13.6289 12.7988 15.1074 C 13.541 14.5664 14.5723 14.1338 14.7441 12.1309 C 16.4609 12.416 17.5957 12.3447 19.0938 11.4434 C 18.6387 13.1055 18.6348 14.707 18.9551 16.4063 C 17.1055 16.2666 15.5449 16.4795 14.5156 17.9688 C 15.3457 18.1953 17.6055 18.2549 18.4795 17.3223 C 18.8066 18.3047 19.7012 19.7109 21.1475 20.4043 C 19.707 20.6641 18.7227 21.7637 17.8135 23.4492 C 17.1006 22.0332 14.873 20.3691 13.3711 20.3145 C 15.373 24.3779 15.373 27.2959 13.8525 29.9844 C f 41.2324 26.0742 m 41.5518 26.7021 41.7549 26.959 V 44.1523 25.0176 48.958 28.3262 49.8535 29.0957 C 49.7432 29.7266 47.6182 30.8643 45.9004 29.834 C 46.3408 31.123 45.4395 33.084 44.2402 34.126 C 45.9805 34.0254 48.126 35.3867 48.6484 36.1289 C 48.8701 35.1514 50.0527 33.8809 51.3379 32.8672 C 51.6895 33.8398 50.9941 35.958 50.0781 37.5605 C 51.3125 38.0605 52.4248 38.9912 52.8828 40.25 C 53.3398 38.9336 54.3428 38.2598 55.6875 37.5039 C 54.5273 36.0762 53.7471 33.9023 54.0273 33.0391 C 55.3496 33.374 56.9209 36.0918 57.0439 37.1816 C 57.9189 36.415 59.4727 35.7285 62.0537 35.4219 C 60.3535 34.3438 59.9902 32.3516 59.4063 30.9219 C 58.2588 31.3682 56.0898 31.4277 55.1152 30.8643 C 55.8281 30.2852 57.168 29.7344 59.1777 29.7207 C 59.1777 28.1758 59.6406 27.043 60.8945 25.8281 C 59.1719 25.8418 57.0723 25.3555 55.5762 24.9629 C 55.3281 26.292 54.4844 27.8887 53.3398 28.2891 C 53.334 27.4277 53.5996 25.1797 54.4844 24.5117 C 53.6201 23.9443 52.3672 22.5674 51.9102 20.8496 C 51.2881 22.1758 50.4268 23.4805 48.5645 23.9238 C 49.749 24.9766 50.584 26.9941 50.25 28.4609 C 45.1973 24.4785 42.5215 25.7773 41.2324 26.0742 C f 27.7578 38.7324 m 28.4346 38.9316 28.7246 39.084 V 27.2559 41.7969 31.707 46.0776 32.627 46.8169 C 33.2275 46.5918 33.3477 44.0586 32.6699 42.7227 C 33.5137 42.8457 35.7031 41.4678 36.4609 40.1787 C 36.5254 40.8652 38.0957 43.8066 38.9219 44.1846 C 38.002 44.582 37.3359 46.0547 36.5742 47.5039 C 37.5957 47.6709 38.9961 46.7485 40.4668 45.8438 C 40.9814 46.6445 42.3555 47.6177 43.6143 48.1328 C 42.5264 48.8198 42.0313 49.5615 41.5352 51.0205 C 40.4922 50.4556 38.3057 50.3057 37.7764 50.5938 C 38.291 51.7056 40.5371 52.2485 41.2676 52.1958 C 41.0137 53.0576 40.8652 55.2109 41.0391 57.8037 C 39.3789 56.4878 37.834 55.1719 36.1738 55.2285 C 36.4434 53.8076 35.8076 52.002 35.4307 51.5088 C 34.8574 52.2529 34.4463 53.0796 34.8008 55.0576 C 33.3486 55.5425 32.1113 56.0879 30.7373 57.3467 C 30.7373 55.5146 30.166 54.314 29.2969 53.0366 C 30.5576 52.5488 31.8301 51.3467 31.8252 50.3076 C 30.9775 50.46 29.2852 51.2036 28.793 52.1958 C 28.0742 51.4497 26.3906 50.1396 24.7871 50.1357 C 25.9746 49.2817 26.8945 48.2466 26.9893 46.335 C 28.2422 47.3057 30.6953 47.9209 32.0752 47.3237 C 27.2344 43.0869 27.7031 40.0547 27.7578 38.7324 C f 13.5195 70.3916 m 12.9941 69.9209 12.7988 69.6587 V 15.2891 67.8418 13.0352 62.0146 12.5225 60.9517 C 11.8828 60.8955 10.4766 63.6367 10.5117 65.1348 C 9.3809 64.3789 7.7148 64.4995 6.1133 64.7856 C 6.6855 63.6987 6.2842 61.7529 5.4834 60.9517 C 6.4854 60.9878 7.8359 60.2729 9.1455 59.2925 C 8.3105 58.4717 6.4834 58.6338 4.5674 59.2925 C 4.5674 57.9189 3.7461 56.1816 2.9082 54.9995 C 4.2246 55.0576 5.3691 54.3706 6.2275 53.3408 C 6.8926 54.9097 8.9258 56.0215 9.832 55.9727 C 9.8496 54.6079 8.2764 52.5176 7.2539 52.1187 C 7.8545 51.4497 8.873 49.9189 9.832 47.5039 C 10.6309 49.4297 11.8008 50.6719 13.0342 51.6045 C 11.8926 53.1655 12.0664 54.0366 12.4648 55.5146 C 13.209 54.9746 14.2393 54.5415 14.4102 52.5386 C 16.127 52.8247 17.2637 52.7529 18.7598 51.8525 C 18.3057 53.5137 18.3027 55.1147 18.623 56.8149 C 16.7725 56.6748 15.2129 56.8887 14.1826 58.377 C 15.0117 58.6035 17.2725 58.6626 18.1465 57.731 C 18.4736 58.7129 19.3691 60.1187 20.8145 60.8125 C 19.375 61.0728 18.3896 62.1719 17.4805 63.8579 C 16.7676 62.4429 14.541 60.7769 13.0371 60.7227 C 15.041 64.7856 15.041 67.7046 13.5195 70.3916 C f 41.2324 64.4824 m 41.5518 65.1113 41.7549 65.3682 V 44.1523 63.4272 48.958 66.7354 49.8535 67.5034 C 49.7432 68.1362 47.6182 69.2725 45.9004 68.2422 C 46.3408 69.5313 45.4395 71.4922 44.2402 72.5342 C 45.9805 72.4341 48.126 73.7954 48.6484 74.5371 C 48.8701 73.5601 50.0527 72.29 51.3379 71.2754 C 51.6895 72.249 50.9941 74.3662 50.0781 75.9683 C 51.3125 76.4692 52.4248 77.3994 52.8828 78.6582 C 53.3398 77.3423 54.3428 76.667 55.6875 75.9111 C 54.5273 74.4844 53.7471 72.3101 54.0273 71.4473 C 55.3496 71.7822 56.9209 74.5 57.0439 75.5903 C 57.9189 74.8232 59.4727 74.1372 62.0537 73.8311 C 60.3535 72.7534 59.9902 70.7612 59.4063 69.3301 C 58.2588 69.7773 56.0898 69.8364 55.1152 69.2725 C 55.8281 68.6934 57.168 68.1431 59.1777 68.1284 C 59.1777 66.583 59.6406 65.4512 60.8945 64.2373 C 59.1719 64.249 57.0723 63.7632 55.5762 63.3721 C 55.3281 64.7002 54.4844 66.2974 53.3398 66.6973 C 53.334 65.8364 53.5996 63.5874 54.4844 62.9214 C 53.6201 62.353 52.3672 60.9751 51.9102 59.2583 C 51.2881 60.583 50.4268 61.8882 48.5645 62.333 C 49.749 63.3862 50.584 65.4033 50.25 66.8691 C 45.1973 62.8872 42.5215 64.1851 41.2324 64.4824 C f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Stripes) (Stripes) 8.45 4.6001 80.45 76.6001 [ %AI3_Tile (0 O 0 R 1 0.07 1 0 k 1 0.07 1 0 K ) @ ( %AI6_BeginPatternLayer 0 J 0 j 3.6 w 4 M []0 d 0 XR 8.2 8.2 m 80.7 8.2 L S 8.2 22.6001 m 80.7 22.6001 L S 8.2 37.0002 m 80.7 37.0002 L S 8.2 51.4 m 80.7 51.4 L S 8.2 65.8001 m 80.7 65.8001 L S 8.2 15.4 m 80.7 15.4 L S 8.2 29.8001 m 80.7 29.8001 L S 8.2 44.2 m 80.7 44.2 L S 8.2 58.6001 m 80.7 58.6001 L S 8.2 73.0002 m 80.7 73.0002 L S %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI5_End_NonPrinting-- %AI5_Begin_NonPrinting Np %AI8_BeginBrushPattern (New Pattern 1) 0 A u 1 Ap 0 J 0 j 1 w 4 M []0 d 0 XR -7966.8496 8072.5967 m -7966.8496 8048.5967 L -8016.8496 8048.5967 L -8016.8496 8072.5967 L -7966.8496 8072.5967 L n u 0 Ap 0 O 1 g -7986.8496 8070.5967 m -7999.0596 8073.6494 -8007.543 8063.6572 -8016.8496 8056.5479 C F -7976.8496 8070.5967 m -7993.2275 8074.6904 -8002.9004 8055.3193 -8016.8496 8050.9121 C F -8016.8496 8050.5967 m -7996.8496 8045.5967 -7986.8496 8075.5967 -7966.8496 8070.5967 C F -8006.8496 8050.5967 m -7990.4717 8046.502 -7980.7988 8065.874 -7966.8496 8070.2813 C F -7996.8496 8050.5967 m -7984.6396 8047.5439 -7976.1563 8057.5361 -7966.8496 8064.6455 C F -7976.8496 8050.5967 m -7973.2275 8049.6904 -7969.9351 8049.9375 -7966.8496 8050.9121 C F -8006.8496 8070.5967 m -8010.4717 8071.502 -8013.7651 8071.2559 -8016.8496 8070.2813 C F -7976.8813 8050.7217 m -7983.0005 8049.2129 -7986.8813 8050.7217 V -7990.9771 8049.2441 -7996.8813 8050.7217 V -8001.8442 8049.0459 -8006.8813 8050.7217 V -8012.8965 8049.1709 -8016.8813 8050.7217 V -8016.8813 8070.4063 L -8013.7954 8071.3809 -8010.3965 8071.5879 -8006.4795 8070.5049 C -8000.313 8072.0879 -7996.563 8070.5049 V -7991.563 8072.0879 -7986.4795 8070.4209 V -7982.147 8072.0049 -7976.4795 8070.5049 V -7970.9795 8071.9209 -7966.8813 8070.7217 V -7966.8813 8051.0361 L -7969.625 8050.0254 -7972.751 8049.5254 -7976.8813 8050.7217 C f 0 R 0 G 1 J 1 j 0.5 w -7996.8496 8070.5967 m -8004.6396 8072.5439 -8010.9131 8069.1816 -8016.8496 8064.6455 C S -7986.8496 8070.5967 m -7999.0596 8073.6494 -8007.543 8063.6572 -8016.8496 8056.5479 C S -7976.8496 8070.5967 m -7993.2275 8074.6904 -8002.9004 8055.3193 -8016.8496 8050.9121 C S -8016.8496 8050.5967 m -7996.8496 8045.5967 -7986.8496 8075.5967 -7966.8496 8070.5967 C S -8006.8496 8050.5967 m -7990.4717 8046.502 -7980.7988 8065.874 -7966.8496 8070.2813 C S -7996.8496 8050.5967 m -7984.6396 8047.5439 -7976.1563 8057.5361 -7966.8496 8064.6455 C S -7986.8496 8050.5967 m -7979.0596 8048.6494 -7972.7871 8052.0117 -7966.8496 8056.5479 C S -7976.8496 8050.5967 m -7973.2275 8049.6904 -7969.9351 8049.9375 -7966.8496 8050.9121 C S -8006.8496 8070.5967 m -8010.4717 8071.502 -8013.7651 8071.2559 -8016.8496 8070.2813 C S U U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 10) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -8016.0996 8071.5967 m -7965.9917 8071.5967 L -7965.9917 8015.5723 L -8016.0996 8015.5723 L -8016.0996 8071.5967 L n u 0 O 0.1 1 1 0 k -7979.001 8037.1719 m -7980.8174 8030.6924 -7990.9243 8034.0625 Y -7990.8911 8034.127 L -8000.9995 8030.7568 -8002.814 8037.2363 V -8008.7754 8054.6025 -8003.5918 8061.3408 V -7996.8525 8070.9336 -7992.7051 8070.9336 V -7989.1099 8070.8672 L -7984.9634 8070.8672 -7978.2251 8061.2783 Y -7973.0405 8054.5391 -7979.001 8037.1719 Y f u 0 0 0 1 k -7983.4922 8015.5723 m -7984.2163 8017.0166 -7985.0234 8018.0713 V -7984.5054 8017.6592 -7983.6147 8016.7881 -7983.4922 8015.5723 C f -7997.1641 8018.082 m -7997.9707 8017.0273 -7998.6938 8015.583 Y -7998.5723 8016.7988 -7997.6821 8017.6699 -7997.1641 8018.082 C f U 0 0.61 0.74 0 k -7982.6973 8040.0576 m -7984.0034 8035.3926 -7991.2813 8037.8184 Y -7991.2563 8037.8652 L -7998.5361 8035.4395 -7999.8413 8040.1045 V -8004.1333 8052.6084 -8000.4014 8057.46 V -7995.5483 8064.3652 -7992.563 8064.3652 V -7989.9751 8064.3193 L -7986.9883 8064.3193 -7982.1362 8057.4141 Y -7978.4038 8052.5605 -7982.6973 8040.0576 Y f u 1 Ap 0.73 0.43 1 0.22 k 0 R 0 0 0 1 K -7986.7222 8042.8721 m -7985.9131 8042.8721 -7985.2554 8042.2148 -7985.2554 8041.4063 c -7985.2554 8040.5967 -7985.9131 8039.9385 -7986.7222 8039.9385 c -7987.5317 8039.9385 -7988.1885 8040.5967 -7988.1885 8041.4063 c -7988.1885 8042.2148 -7987.5317 8042.8721 -7986.7222 8042.8721 c b -7986.4634 8054.5938 m -7985.1802 8054.5938 -7984.1411 8053.7168 -7984.1411 8052.6387 c -7984.1411 8051.5576 -7985.1802 8050.6836 -7986.4634 8050.6836 c -7987.7451 8050.6836 -7988.7842 8051.5576 -7988.7842 8052.6387 c -7988.7842 8053.7168 -7987.7451 8054.5938 -7986.4634 8054.5938 c b -7985.9341 8066.3828 m -7984.3813 8066.3828 -7983.1235 8065.7256 -7983.1235 8064.918 c -7983.1235 8064.1084 -7984.3813 8063.4512 -7985.9341 8063.4512 c -7987.4858 8063.4512 -7988.7451 8064.1084 -7988.7451 8064.918 c -7988.7451 8065.7256 -7987.4858 8066.3828 -7985.9341 8066.3828 c b -7981.71 8038.123 m -7980.9683 8038.123 -7980.3667 8037.4121 -7980.3667 8036.5332 c -7980.3667 8035.6553 -7980.9683 8034.9443 -7981.71 8034.9443 c -7982.4531 8034.9443 -7983.0542 8035.6553 -7983.0542 8036.5332 c -7983.0542 8037.4121 -7982.4531 8038.123 -7981.71 8038.123 c b -7980.103 8059.6797 m -7980.9814 8059.332 -7981.249 8057.9316 -7980.7031 8056.5508 c -7980.1563 8055.1719 -7979.001 8054.332 -7978.123 8054.6816 c -7977.2451 8055.0293 -7976.9771 8056.4297 -7977.5229 8057.8105 c -7978.0698 8059.1904 -7979.2251 8060.0283 -7980.103 8059.6797 c b u -7995.1563 8042.7559 m -7995.9658 8042.7559 -7996.6235 8042.0986 -7996.6235 8041.29 c -7996.6235 8040.4795 -7995.9658 8039.8232 -7995.1563 8039.8232 c -7994.3481 8039.8232 -7993.6909 8040.4795 -7993.6909 8041.29 c -7993.6909 8042.0986 -7994.3481 8042.7559 -7995.1563 8042.7559 c b -7995.4155 8054.4766 m -7996.6987 8054.4766 -7997.7378 8053.6016 -7997.7378 8052.5215 c -7997.7378 8051.4414 -7996.6987 8050.5664 -7995.4155 8050.5664 c -7994.1338 8050.5664 -7993.0947 8051.4414 -7993.0947 8052.5215 c -7993.0947 8053.6016 -7994.1338 8054.4766 -7995.4155 8054.4766 c b -7995.9453 8066.2676 m -7997.4971 8066.2676 -7998.7554 8065.6113 -7998.7554 8064.8008 c -7998.7554 8063.9902 -7997.4971 8063.335 -7995.9453 8063.335 c -7994.3931 8063.335 -7993.1348 8063.9902 -7993.1348 8064.8008 c -7993.1348 8065.6113 -7994.3931 8066.2676 -7995.9453 8066.2676 c b -8000.1675 8038.0059 m -8000.9111 8038.0059 -8001.5117 8037.2949 -8001.5117 8036.418 c -8001.5117 8035.54 -8000.9111 8034.8301 -8000.1675 8034.8301 c -7999.4258 8034.8301 -7998.8237 8035.54 -7998.8237 8036.418 c -7998.8237 8037.2949 -7999.4258 8038.0059 -8000.1675 8038.0059 c b -8001.7754 8059.5645 m -8000.8979 8059.2168 -8000.6294 8057.8154 -8001.1758 8056.4336 c -8001.7222 8055.0537 -8002.8774 8054.2168 -8003.7554 8054.5645 c -8004.6338 8054.9131 -8004.9028 8056.3145 -8004.3564 8057.6934 c -8003.8101 8059.0742 -8002.6548 8059.9121 -8001.7754 8059.5645 c b U U 0 Ap 0 0 0 1 k -7991.2314 8038.252 m -7991.2314 8070.9111 l F u -7975.4902 8024.127 m -7976.1812 8023.4336 -7979.1191 8024.2988 Y -7980.3291 8024.4707 -7980.1558 8026.8896 Y -7979.1191 8028.9648 -7979.8101 8028.791 Y -7980.3994 8028.791 -7981.9551 8028.7109 -7982.8818 8028.6592 C -7983.2222 8027.2656 -7984.7124 8026.0713 -7986.8213 8025.3662 C -7984.8574 8022.0742 -7986.6172 8021.3916 -7988.3931 8021.3867 C -7988.4092 8021.2988 -7988.4321 8021.2129 -7988.4595 8021.1289 C -7986.2085 8021.1758 -7985.7388 8018.8555 Y -7985.5044 8018.6592 -7985.2603 8018.3828 -7985.0234 8018.0713 C -7985.2412 8018.2441 -7985.394 8018.3359 Y -7986.3579 8018.3359 -7987.9771 8020.0908 -7988.5962 8020.8037 C -7989.019 8020.04 -7989.9531 8019.5078 -7991.043 8019.5078 c -7992.1694 8019.5078 -7993.1318 8020.0752 -7993.5308 8020.8809 C -7994.0981 8020.2207 -7995.7964 8018.3477 -7996.7939 8018.3477 C -7996.9458 8018.2539 -7997.1641 8018.082 V -7996.9277 8018.3896 -7996.6831 8018.6699 -7996.4478 8018.8652 C -7995.9634 8021.2529 -7993.625 8021.1309 V -7993.6445 8021.1855 -7993.667 8021.2393 -7993.6802 8021.2988 C -7997.0234 8021.2891 -7996.0371 8023.9141 -7995.3101 8025.2568 C -7997.6914 8025.9727 -7999.3643 8027.2969 -7999.6235 8028.8467 C -8000.5469 8028.8965 -8001.7725 8028.9551 -8002.2798 8028.9551 C -8002.9722 8029.1279 -8001.9351 8027.0547 V -8001.7622 8024.6357 -8002.9722 8024.4629 V -8005.9092 8023.5986 -8006.6011 8024.29 V -8007.2915 8025.1533 -8008.1558 8023.9424 V -8007.2915 8025.6719 -8005.3911 8025.1533 V -8002.7979 8024.4629 -8003.4902 8026.1904 V -8004.0083 8029.6465 -8002.2798 8030.3369 V -8000.1338 8031.4512 -7998.3818 8031.6855 V -7998.0083 8032.0107 -7997.5635 8032.3076 -7997.0581 8032.5732 C -7999.6558 8032.6436 -8002.3242 8033.5176 -8003.1748 8036.5527 C -8003.6147 8037.8398 -8004.1514 8039.8398 V -8005.2021 8040.4219 -8006.4019 8041.6045 -8007.6411 8043.8584 C -8008.4941 8047.0469 -8009.2671 8042.3096 V -8010.4971 8039.2461 -8011.75 8039.1348 V -8010.5698 8040.8838 -8011.0034 8042.0127 V -8009.3994 8046.5137 -8007.7134 8045.4961 V -8006.1982 8044.8164 -8004.7881 8042.4121 V -8005.1694 8044.0938 -8005.5322 8046.0137 -8005.7739 8047.9873 C -8006.5884 8047.9941 L -8008.4502 8047.0752 -8008.4258 8050.5557 V -8009.2222 8054.542 -8008.459 8057.2793 V -8007.7471 8059.7471 -8010.2271 8058.5273 V -8011.3838 8058.9209 -8012.0835 8058.3848 V -8014.4878 8057.0088 -8016.0996 8058.7207 V -8014.2471 8058.4766 -8013.5479 8059.0137 V -8012.0781 8059.1582 -8011.9971 8059.7744 V -8009.0557 8060.4521 -8008.2881 8059.6729 V -8006.5171 8058.8105 -8007.23 8055.9561 V -8007.9795 8048.0781 -8006.4194 8050.002 V -8006.2178 8050.0176 -8005.978 8050.1143 V -8006.2515 8054.0293 -8005.9014 8057.9209 -8004.0957 8060.4473 C -8007.5532 8052.9297 -8002.397 8037.9004 Y -8001.0605 8033.127 -7995.2271 8033.6982 -7992.2451 8034.3311 C -7992.1714 8035.7256 -7991.937 8037.5449 -7991.2314 8038.252 C -7990.313 8036.292 -7990.3354 8034.6699 V -7989.1758 8034.3184 -7982.3813 8032.4414 -7979.5483 8035.9336 C -7980.5308 8033.4102 -7982.9258 8032.6152 -7985.3003 8032.5156 C -7984.7671 8032.2285 -7984.3037 8031.9014 -7983.9253 8031.5469 C -7982.1411 8031.3828 -7979.8101 8030.1729 Y -7978.0811 8029.4824 -7978.6011 8026.0273 Y -7979.2915 8024.2988 -7976.6987 8024.9902 Y -7974.7998 8025.5078 -7973.9351 8023.7803 Y -7974.7998 8024.9902 -7975.4902 8024.127 Y f -7970.0078 8058.5488 m -7970.707 8059.0859 -7971.8628 8058.6904 Y -7974.3442 8059.9102 -7973.6323 8057.4424 Y -7972.8691 8054.707 -7973.6641 8050.7188 Y -7973.6411 8047.2412 -7975.501 8048.1563 Y -7976.1338 8048.1523 L -7976.4194 8046.208 -7976.8042 8044.3516 -7977.1895 8042.7656 C -7975.8125 8045.0166 -7974.3774 8045.6592 Y -7972.6909 8046.6787 -7971.0874 8042.1758 Y -7971.521 8041.0469 -7970.3413 8039.2988 Y -7971.5933 8039.4092 -7972.8242 8042.4727 Y -7973.5972 8047.2119 -7974.4507 8044.0234 Y -7975.6772 8041.7871 -7976.8691 8040.6064 -7977.9141 8040.0195 C -7978.3022 8038.6592 -7978.5854 8037.8359 Y -7978.7998 8037.0693 -7979.1333 8036.4453 -7979.5483 8035.9336 C -7979.4795 8036.1094 -7979.417 8036.2949 -7979.3628 8036.4873 C -7973.4019 8053.8555 -7978.5854 8060.5938 V -7985.3242 8070.1836 -7989.4717 8070.1836 V -7993.0659 8070.248 L -7997.2134 8070.248 -8003.9531 8060.6582 Y -8004.0034 8060.5928 -8004.0459 8060.5176 -8004.0957 8060.4473 C -8003.8374 8061.0107 -8003.5371 8061.5371 -8003.1748 8062.0059 C -7996.4355 8071.5967 -7992.2891 8071.5967 V -7988.6938 8071.5313 L -7984.5479 8071.5313 -7977.8091 8061.9414 Y -7975.6797 8059.1729 -7975.4302 8054.6143 -7975.8765 8050.2021 C -7975.7549 8050.1719 -7975.6694 8050.1641 Y -7974.1108 8048.2441 -7974.8594 8056.1211 Y -7975.5742 8058.9756 -7973.8022 8059.8369 Y -7973.0347 8060.6152 -7970.0942 8059.9385 Y -7970.0132 8059.3223 -7968.543 8059.1777 Y -7967.8442 8058.6416 -7965.9917 8058.8848 Y -7967.6021 8057.1729 -7970.0078 8058.5488 Y f U U U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 2) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -8016.0996 8071.5967 m -7951.2871 8071.5967 L -7951.2871 8007.499 L -8016.0996 8007.499 L -8016.0996 8071.5967 L n u 0 O 0 g -7981.7974 8030.0264 m -7983.709 8007.499 L -7985.6211 8030.0264 L -7985.0029 8029.9033 -7984.3638 8029.8369 -7983.709 8029.8369 c -7983.0547 8029.8369 -7982.4155 8029.9033 -7981.7974 8030.0264 C f -7993.3398 8037.9941 m -8016.0996 8039.9268 L -7993.2134 8041.8701 L -7993.3853 8041.1436 -7993.4844 8040.3896 -7993.4844 8039.6123 c -7993.4844 8039.0596 -7993.4277 8038.5215 -7993.3398 8037.9941 C f -7988.6191 8031.1689 m -8002.2622 8022.4014 L -7992.3149 8034.9736 L -7991.457 8033.3877 -7990.1714 8032.0732 -7988.6191 8031.1689 C f -7985.5811 8049.2041 m -7983.6782 8071.5967 L -7981.7764 8049.1934 L -7982.4014 8049.3193 -7983.0469 8049.3877 -7983.709 8049.3877 c -7984.3496 8049.3877 -7984.9731 8049.3213 -7985.5811 8049.2041 C f -7974.0605 8041.1035 m -7951.2871 8039.1689 L -7974.1831 8037.2256 L -7974.1831 8037.4473 L -7974.0254 8038.1455 -7973.9341 8038.8662 -7973.9341 8039.6123 c -7973.9341 8040.1201 -7973.9844 8040.6152 -7974.0605 8041.1035 C f -7992.2134 8044.4229 m -8002.2637 8057.126 L -7988.3774 8048.2021 L -7989.9819 8047.3271 -7991.311 8046.0127 -7992.2134 8044.4229 C f -7975.0957 8034.9912 m -7964.9751 8022.2021 L -7978.8662 8031.1279 L -7977.2764 8032.0381 -7975.9629 8033.376 -7975.0957 8034.9912 C f -7978.7891 8048.0479 m -7964.9731 8056.9248 L -7975.0654 8044.1689 L -7975.9194 8045.7861 -7977.2148 8047.1279 -7978.7891 8048.0479 C f -7974.9883 8044.21 m -7974.4858 8043.2607 -7974.1431 8042.2168 -7973.9751 8041.1152 c -7973.8989 8040.626 -7973.8481 8040.124 -7973.8481 8039.6123 c -7973.8481 8038.8604 -7973.9395 8038.1318 -7974.0981 8037.4277 c -7974.2954 8036.5537 -7974.6045 8035.7207 -7975.0181 8034.9512 c -7975.895 8033.3213 -7977.2188 8031.9707 -7978.8237 8031.0527 c -7979.729 8030.5342 -7980.7222 8030.1504 -7981.7798 8029.9424 c -7982.4043 8029.8174 -7983.0493 8029.748 -7983.709 8029.748 c -7984.3691 8029.748 -7985.0151 8029.8174 -7985.6387 8029.9424 c -7986.7231 8030.1572 -7987.7378 8030.5537 -7988.6621 8031.0928 c -7990.231 8032.0068 -7991.5278 8033.332 -7992.3911 8034.9316 c -7992.8965 8035.8662 -7993.2451 8036.8936 -7993.4258 8037.9785 c -7993.5151 8038.5127 -7993.5723 8039.0557 -7993.5723 8039.6123 c -7993.5723 8040.3975 -7993.4707 8041.1572 -7993.2974 8041.8896 c -7993.0811 8042.8037 -7992.7402 8043.6699 -7992.2871 8044.4668 c -7991.3789 8046.0693 -7990.0391 8047.3975 -7988.417 8048.2793 c -7987.5483 8048.752 -7986.5996 8049.0947 -7985.5957 8049.29 c -7984.9844 8049.4072 -7984.355 8049.4736 -7983.709 8049.4736 c -7983.041 8049.4736 -7982.3896 8049.4053 -7981.7598 8049.2793 c -7980.6782 8049.0635 -7979.666 8048.6621 -7978.7451 8048.124 c -7977.1563 8047.1943 -7975.8511 8045.8408 -7974.9883 8044.21 c f U U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 3) 0 A u 1 Ap 0 J 0 j 1 w 4 M []0 d 0 XR -8006.8496 8072.5967 m -8006.8496 8048.5967 L -8016.8496 8048.5967 L -8016.8496 8072.5967 L -8006.8496 8072.5967 L n u u 0 Ap 0 O 1 g -8007.5054 8064.1328 m -8007.0874 8063.0313 -8006.8496 8061.8438 -8006.8496 8060.5967 c -8006.8496 8058.7344 -8007.3677 8056.9961 -8008.2539 8055.5039 c -8009.9971 8052.5703 -8013.1895 8050.5967 -8016.8496 8050.5967 C -8016.8496 8070.5967 L -8016.5293 8070.5967 -8016.2139 8070.5781 -8015.9014 8070.5488 c -8014.0117 8070.3721 -8012.2803 8069.6611 -8010.8438 8068.5791 c -8009.3467 8067.4512 -8008.1797 8065.915 -8007.5054 8064.1328 c f 0 R 0 G 1 J 1 j 0.5 w -8016.8496 8050.9141 m -8013.8203 8051.8711 -8010.9922 8053.5293 -8008.2539 8055.5039 C S -8016.8496 8056.5479 m -8013.6987 8058.9531 -8010.6431 8061.6836 -8007.5054 8064.1328 C S -8010.8438 8068.5791 m -8012.9102 8067.4873 -8014.8989 8066.1309 -8016.8496 8064.6396 C S -8015.9014 8070.5488 m -8016.2188 8070.4648 -8016.5371 8070.3818 -8016.8496 8070.2832 C S -8010.8438 8068.5791 m -8012.2803 8069.6611 -8014.0117 8070.3711 -8015.9014 8070.5488 C S -8007.5054 8064.1328 m -8007.0874 8063.0313 -8006.8496 8061.8438 -8006.8496 8060.5967 c -8006.8496 8058.7344 -8007.3677 8056.9961 -8008.2539 8055.5039 C S -8016.8496 8070.5967 m -8016.5293 8070.5967 -8016.2139 8070.5781 -8015.9014 8070.5488 C S -8010.8438 8068.5791 m -8009.3467 8067.4512 -8008.1797 8065.915 -8007.5054 8064.1328 C S -8008.2539 8055.5039 m -8009.9971 8052.5703 -8013.1895 8050.5967 -8016.8496 8050.5967 C S U U U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 34) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -8016.125 8071.623 m -7960.1538 8071.623 L -7960.1538 8010.1309 L -8016.125 8010.1309 L -8016.125 8071.623 L n u u 0 O 0.0745 0.9 0.9019 0.18 k 0 R 0 0 0 1 K 1 J 1 j 0.0518 w -7989.6987 8048.3184 m -7989.459 8059.1182 -7994.979 8069.4365 v -7994.5005 8071.5967 -7993.0591 8071.5967 v -7993.2998 8068.2373 -7992.3389 8067.7568 v -7988.0195 8055.7568 -7988.7378 8047.8369 v -7989.6987 8048.3184 l b -7989.6987 8048.3184 m -7991.3789 8053.5967 -8003.1387 8054.7979 v -8007.459 8055.2773 -8007.6987 8056.7168 v -8001.2202 8047.1152 -8000.2598 8047.3574 v -8013.459 8041.5977 -8016.0996 8036.3164 v -8011.0591 8039.1973 -8007.6987 8037.0361 v -7999.7798 8036.7979 -7994.7402 8038.958 v -7990.9004 8040.8779 -7998.8198 8024.7979 v -7994.979 8036.5576 -7991.3789 8010.1572 v -7990.4194 8015.4375 -7988.9795 8016.8779 v -7982.9795 8024.5576 -7983.9395 8026.7168 v -7984.4194 8030.5576 -7979.8594 8024.3174 v -7980.0996 8033.918 -7982.5005 8037.2773 v -7984.6587 8040.8779 -7978.6587 8038.7168 v -7972.6587 8036.7979 -7967.3789 8038.4775 v -7961.8594 8039.916 -7960.1797 8037.0361 v -7971.9395 8049.5176 -7977.6987 8049.2773 v -7976.019 8052.8779 l -7973.6191 8057.6777 -7974.0996 8058.8779 v -7989.3677 8049.4795 -7989.6987 8048.3184 v b -7989.6987 8048.3184 m -7987.0591 8029.8369 -7989.6987 8022.1572 v -7992.0981 8011.5977 -7991.3789 8010.1572 v S -7988.2598 8037.0361 m -7982.2598 8032.2373 -7981.0591 8026.9561 v S -7988.2598 8036.3164 m -7997.1387 8028.6377 -7998.8198 8024.7979 v S -7960.1797 8037.0361 m -7961.3789 8039.1973 -7989.459 8047.3574 y -7994.5005 8041.8389 -8006.0195 8039.4375 v -8013.6982 8038.4775 -8016.0996 8036.3164 v S -8006.7378 8055.2773 m -7995.2188 8046.1582 -7989.459 8047.3574 y -7975.2988 8053.5967 -7974.0996 8058.8779 v S U U U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 36) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -8015.9492 8071.5928 m -7966.0596 8071.5928 L -7966.0596 8020.5225 L -8015.9492 8020.5225 L -8015.9492 8071.5928 L n u 0 O 0.025 0.1 0.475 0 k -7994.25 8039.5 m -7996.5762 8038.4092 -7998.791 8038.04 -8000.4731 8038.5205 c -8001.1514 8038.7129 -8001.7451 8039.0439 -8002.2231 8039.5205 c -8002.7002 8039.999 -8003.0293 8040.5918 -8003.2231 8041.2695 c -8004.1084 8044.3672 -8002.1099 8049.2744 -7998.0229 8053.3633 c -7993.9341 8057.4502 -7989.0293 8059.4473 -7985.9282 8058.5625 c -7985.2515 8058.3672 -7984.6582 8058.0391 -7984.1802 8057.5625 c -7983.7031 8057.084 -7983.375 8056.4912 -7983.1821 8055.8135 c -7982.6172 8053.8428 -7983.2222 8051.1416 -7984.7852 8048.3857 c -7985.6821 8046.8066 -7986.8911 8045.21 -7988.3789 8043.7197 c -7990.25 8041.8496 -7992.291 8040.4209 -7994.25 8039.5 c f u 0.0035 0.014 0.0665 0 k -7993.3179 8038.5693 m -7995.9302 8037.6182 -7998.4971 8037.5654 -8000.4731 8038.5205 C -7998.791 8038.04 -7996.5762 8038.4092 -7994.25 8039.5 c -7993.7188 8039.751 -7993.1802 8040.04 -7992.6431 8040.3643 C -7990.998 8039.6504 L -7991.7671 8039.2139 -7992.543 8038.8496 -7993.3179 8038.5693 c f 0.015 0.06 0.285 0 k -7990.998 8039.6504 m -7992.6431 8040.3643 L -7991.1958 8041.2314 -7989.7422 8042.3574 -7988.3789 8043.7197 c -7988.2534 8043.8467 -7988.1323 8043.9736 -7988.0098 8044.1025 C -7987.3149 8042.46 L -7988.4702 8041.3193 -7989.7188 8040.3779 -7990.998 8039.6504 C f U u 0.039 0.156 0.741 0 k -7981.7871 8027 m -7982.0742 8027.2881 -7993.3179 8038.5693 Y -7992.543 8038.8496 -7991.7671 8039.2139 -7990.998 8039.6504 C -7977.5142 8026.167 L -7979.1611 8025.6953 -7980.7402 8025.9521 -7981.7871 8027 c f 0.025 0.1 0.475 0 k -7977.5142 8026.167 m -7990.998 8039.6504 L -7989.6841 8040.3984 -7988.3965 8041.3721 -7987.2139 8042.5537 c -7987.1841 8042.583 -7987.1582 8042.6123 -7987.1274 8042.6416 C -7973.4404 8028.9541 L -7973.626 8028.7295 -7973.8198 8028.5107 -7974.0298 8028.2969 c -7975.1099 8027.2197 -7976.3301 8026.5049 -7977.5142 8026.167 C f U u 0.0115 0.046 0.2185 0 k -7968.0342 8035.9893 m -7965.6333 8033.5859 -7965.4351 8029.6865 -7967.2378 8026.2939 C -7968.395 8026.7148 L -7966.1934 8030.0928 -7965.9395 8033.8916 -7968.0342 8035.9893 c f 0.015 0.06 0.285 0 k -7975.6333 8021.1924 m -7974.6821 8020.5225 L -7977.3042 8019.9482 -7979.9302 8020.5107 -7981.7202 8022.3027 c -7980.2715 8020.8545 -7978.0078 8020.5273 -7975.6333 8021.1924 C f 0.0295 0.118 0.5605 0 k -7975.6333 8021.1924 m -7978.0078 8020.5273 -7980.2715 8020.8545 -7981.7202 8022.3027 c -7983.1191 8023.7021 -7983.4702 8025.8604 -7982.895 8028.1436 C -7980.9668 8025.1416 -7977.5078 8026.1504 V -7975.6851 8021.2275 L -7975.6333 8021.1924 L f *u 1 D 0.048 0.192 0.912 0 k -7968.0342 8035.9893 m -7969.3813 8037.335 -7971.4321 8037.71 -7973.623 8037.2236 C -7983.771 8047.3701 L -7983.8691 8047.1641 -7983.8691 8047.1641 -7983.771 8047.3701 c -7982.3242 8050.4111 -7982.0698 8053.5127 -7983.1821 8055.8135 C -7982.6172 8053.8428 -7983.2222 8051.1416 -7984.7852 8048.3857 c -7985.605 8046.9404 -7986.6914 8045.4814 -7988.0098 8044.1025 C -7987.3149 8042.46 L -7987.2813 8042.4912 -7987.2461 8042.5205 -7987.2139 8042.5537 c -7987.1841 8042.584 -7987.1563 8042.6143 -7987.127 8042.6436 c -7987.1274 8042.6436 -7987.1274 8042.6436 -7987.1274 8042.6416 C -7973.4404 8028.9541 L -7968.4258 8026.7256 L -7968.395 8026.7148 L -7966.1934 8030.0928 -7965.9395 8033.8916 -7968.0342 8035.9893 c f *U 0 D 0.0215 0.086 0.4085 0 k -7974.6821 8020.5225 m -7975.6333 8021.1924 L -7973.7842 8021.708 -7971.8652 8022.8252 -7970.2134 8024.4795 c -7969.5059 8025.1855 -7968.8994 8025.9385 -7968.395 8026.7148 C -7967.2378 8026.2939 L -7967.7549 8025.3213 -7968.437 8024.3896 -7969.2798 8023.5479 c -7970.8691 8021.9561 -7972.7754 8020.9385 -7974.6821 8020.5225 C f 0.0205 0.082 0.3895 0 k -7968.395 8026.7148 m -7968.8994 8025.9385 -7969.5059 8025.1855 -7970.2134 8024.4795 c -7971.8652 8022.8252 -7973.7842 8021.708 -7975.6333 8021.1924 C -7975.6851 8021.2275 L -7977.5078 8026.1504 L -7976.311 8026.5176 -7975.0874 8027.2393 -7974.0298 8028.2969 c -7973.8198 8028.5107 -7973.626 8028.7295 -7973.4404 8028.9541 C -7968.4258 8026.7256 L -7968.395 8026.7148 L f U u 0.445 0.356 0.267 0 k -8015.9492 8071.5928 m -7994.0571 8048.5654 L -7994.3003 8048.2461 -7994.6748 8048.21 -7994.9883 8048.2559 C -7999.2798 8052.8857 -8010.4141 8065.0527 -8014.8262 8069.876 C -8015.6646 8070.9482 -8016.0996 8071.5898 -8015.9492 8071.5928 C f 0.15 0.12 0.09 0 k -8015.9341 8071.5928 m -8014.7603 8071.2998 -7993.793 8049.5996 Y -7993.793 8049.0986 -7993.8989 8048.7725 -7994.0571 8048.5654 C -8015.9492 8071.5928 L -8015.9438 8071.5928 -8015.9414 8071.5967 -8015.9341 8071.5928 c f 0.2 0.16 0.12 0 k -8014.8262 8069.876 m -8010.4141 8065.0527 -7999.2798 8052.8857 -7994.9883 8048.2559 C -7995.2998 8048.3008 -7995.5522 8048.4268 Y -7996.7031 8048.7295 -8010.6738 8064.5576 -8014.8262 8069.876 C f U U U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 37) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -8015.0498 8070.8281 m -7965.1387 8070.8281 L -7965.1387 8006.7119 L -8015.0498 8006.7119 L -8015.0498 8070.8281 L n u 0 O 0 0 0 1 k 0 R 0 0 0 1 K 0 w -7965.3354 8006.7119 m -7965.7061 8006.8447 -7966.0854 8006.8799 -7966.4829 8006.7998 c -7966.5859 8006.7646 l -7966.625 8006.7568 -7966.6699 8006.7744 -7966.7021 8006.7959 c -7967.043 8006.9893 l -7970.8125 8008.8926 -7974.1958 8011.4932 -7976.5996 8015.0439 c -7978.063 8017.1885 -7979.2231 8019.4756 -7980.8989 8021.4521 c -7981.2725 8021.8057 -7981.2754 8022.3691 -7980.9341 8022.7275 c -7980.5947 8023.0977 -7980.0181 8023.1045 -7979.6611 8022.7617 c -7979.5034 8022.8066 l -7979.3638 8022.7256 -7979.1738 8022.667 -7979.123 8022.5537 c -7977.9531 8019.7998 -7977.2891 8017.1104 -7975.5332 8014.7354 c -7973.2715 8011.6904 -7970.2773 8009.5908 -7967.1294 8007.6201 c -7966.4668 8007.2021 L -7966.5962 8007.2314 L -7965.8691 8007.2393 l -7965.8911 8007.208 -7965.9004 8007.1924 -7965.9219 8007.1611 C -7965.7061 8007.1201 -7965.4771 8007.0713 -7965.2622 8007.0303 c -7965.1758 8007.0205 -7965.1182 8006.9355 -7965.1387 8006.835 c -7965.1499 8006.748 -7965.2378 8006.7051 -7965.3354 8006.7119 c -7965.3354 8006.7119 l b -7981.3218 8020.5918 m -7981.6738 8020.4033 -7982.0654 8020.2686 -7982.3481 8019.9854 c -7988.5518 8013.7686 -7998.7798 8012.8701 -8006.1484 8019.2822 C -8006.2578 8019.3779 -8006.2578 8019.5537 -8006.1631 8019.6611 C -8003.1523 8018.54 -7994.9834 8019.9717 -7991.4219 8023.0088 C -7991.353 8023.0635 -7991.2461 8023.0488 -7991.2051 8022.9678 C -7991.1499 8022.9014 -7991.166 8022.792 -7991.2324 8022.7529 C -7994.6621 8019.6816 -7999.167 8017.8867 -8003.7725 8018.3447 C -8000.9531 8016.7822 -7997.731 8016.0908 -7994.498 8016.2852 c -7989.814 8016.5684 -7985.563 8018.7158 -7981.4707 8020.876 c -7981.3911 8020.916 -7981.2974 8020.8896 -7981.2549 8020.8076 C -7981.2012 8020.7275 -7981.2422 8020.6318 -7981.3218 8020.5918 c b -7990.7471 8021.9326 m -7992.3262 8025.958 -7994.4907 8029.916 -7997.9014 8032.6729 c -7998.0645 8032.8086 -7998.0942 8033.0459 -7997.9707 8033.2021 c -7997.834 8033.3643 -7997.6045 8033.376 -7997.4478 8033.2529 c -7993.2231 8031.1934 -7990.29 8026.7275 -7990.2622 8021.998 c -7990.2622 8021.998 l -7990.2324 8021.8633 -7990.335 8021.7305 -7990.4629 8021.7188 c -7990.6035 8021.7021 -7990.7314 8021.7939 -7990.7471 8021.9326 c -7990.7471 8021.9326 l b -7985.041 8026.6143 m -7985.1421 8026.7783 -7985.2148 8026.9805 -7985.3613 8027.0791 c -7988.1802 8028.9873 -7991.0781 8030.2275 -7993.9844 8031.7295 c -7994.1499 8031.8057 -7994.2114 8032.0146 -7994.1309 8032.167 c -7994.0508 8032.3193 -7993.8555 8032.376 -7993.6895 8032.3008 c -7990.5391 8030.9199 -7986.4131 8030.0967 -7984.7725 8026.7764 c -7984.7285 8026.708 -7984.7451 8026.6113 -7984.8262 8026.5615 c -7984.8955 8026.5166 -7984.9971 8026.5449 -7985.041 8026.6143 c -7985.041 8026.6143 l b -7984.7598 8027.5146 m -7984.5435 8028.0264 -7984.2427 8028.4863 -7984.1499 8029.0313 c -7983.3179 8033.874 -7983.2148 8038.6387 -7984.3481 8043.2832 c -7984.3481 8043.2832 l -7984.4414 8043.5488 -7984.311 8043.8408 -7984.0435 8043.9355 c -7983.7773 8044.0303 -7983.4878 8043.9092 -7983.3931 8043.6445 c -7981.3931 8038.4072 -7981.9971 8032.334 -7984.4707 8027.3799 c -7984.5059 8027.2969 -7984.5981 8027.2656 -7984.6821 8027.2881 c -7984.7637 8027.3232 -7984.7974 8027.4316 -7984.7598 8027.5146 c -7984.7598 8027.5146 l b -7983.6348 8043.1904 m -7980.998 8040.8232 -7978.7813 8037.8486 -7977.9531 8034.332 c -7977.9531 8034.332 l -7977.8242 8033.7783 -7978.1738 8033.2197 -7978.7412 8033.0869 c -7979.2988 8032.9717 -7979.8574 8033.3213 -7979.9858 8033.876 c -7980.6646 8037.1279 -7981.9707 8040.2695 -7983.895 8042.9824 c -7983.895 8042.9824 l -7983.9458 8043.0518 -7983.9341 8043.1543 -7983.8691 8043.2168 c -7983.7988 8043.2656 -7983.6973 8043.2549 -7983.6348 8043.1904 c -7983.6348 8043.1904 l b -7968.4707 8035.7793 m -7969.811 8031.4268 -7972.3594 8027.666 -7975.7891 8024.75 C -7975.8291 8024.6689 -7975.9238 8024.6289 -7976.0034 8024.6816 C -7976.0859 8024.7236 -7976.1118 8024.8174 -7976.0718 8024.8984 C -7976.0571 8025.3857 -7975.814 8025.8301 -7975.5454 8026.1279 c -7970.5059 8031.7588 -7967.0898 8040.3164 -7969.4429 8047.5518 C -7969.1758 8042.0479 -7970.8237 8035.8975 -7974.2358 8031.2705 c -7975.2603 8029.8662 -7976.8418 8029.7168 -7978.4077 8029.7998 C -7978.502 8029.7861 -7978.583 8029.8398 -7978.5957 8029.9336 c -7978.6094 8030.0156 -7978.5547 8030.1104 -7978.4619 8030.1221 C -7975.2476 8031.3662 -7973.5874 8034.8213 -7972.1841 8037.791 c -7970.5151 8041.3408 -7969.8013 8045.2354 -7970.105 8049.0967 C -7970.145 8049.2744 -7970.2134 8050.9941 -7970.0771 8051.0068 C -7969.9302 8051.0361 -7969.8091 8050.9404 -7969.7798 8050.791 C -7969.7451 8050.6416 -7966.7422 8041.3945 -7968.4707 8035.7793 c b -7976.5859 8023.0879 m -7975.4941 8019.2168 -7973.209 8015.8477 -7970.582 8012.835 c -7970.4302 8012.7012 -7970.4141 8012.4824 -7970.5498 8012.332 c -7970.6748 8012.1973 -7970.9043 8012.1787 -7971.0571 8012.3145 c -7974.4302 8014.9287 -7975.5483 8019.1377 -7976.895 8022.9717 c -7976.895 8022.9717 l -7976.9258 8023.0615 -7976.875 8023.1553 -7976.7979 8023.1836 c -7976.709 8023.2158 -7976.6162 8023.1641 -7976.5859 8023.0879 c -7976.5859 8023.0879 l b -7970.6309 8047.7061 m -7970.6987 8047.6533 -7970.8071 8047.6797 -7970.8481 8047.7471 C -7971.063 8048.0713 -7972.791 8050.1152 -7973.4922 8050.7373 c -7978.2715 8054.9912 -7981.6133 8059.5576 -7989.6387 8063.3193 c -7996.5508 8066.5605 -7999.2109 8069.1924 -8006.4858 8067.4229 c -8009.7871 8066.626 -8011.1309 8066.1279 -8012.5347 8061.0518 C -8014.0469 8054.8955 -8012.9668 8057.3799 -8013.1841 8050.0352 c -8013.3218 8045.2939 -8016.0996 8034.0518 -8003.625 8019.8564 C -8003.5195 8019.7451 -8003.5332 8019.5928 -8003.6333 8019.5039 C -8003.7324 8019.3984 -8003.8955 8019.4121 -8003.9858 8019.5127 C -8009.6782 8024.3135 -8013.123 8031.2549 -8014.4141 8038.5391 c -8015.3867 8044.0635 -8015.0195 8048.8467 -8014.7661 8055.2334 c -8014.6685 8057.6904 -8015.7852 8064.6689 -8011.0098 8068.6592 c -8007.4922 8071.5967 -8002.4907 8071.1436 -7998.4541 8069.7529 c -7992.7988 8067.8086 -7988.0723 8064.7432 -7982.9707 8061.2061 c -7979.3652 8058.7217 -7971.3877 8048.8809 -7970.5781 8047.9229 C -7970.5347 8047.8555 -7970.5498 8047.7471 -7970.6309 8047.7061 C b -8005.1499 8034.9023 m -8004.2681 8034.0996 -8003.8013 8035.4424 -8003.5293 8036.1982 c -8003.2622 8036.9541 -8002.2891 8036.8467 -8002.6123 8037.1689 c -8002.9365 8037.4941 -8002.9365 8037.5488 -8003.4229 8037.1152 c -8003.9082 8036.6846 -8003.9082 8037.332 -8004.6646 8036.8467 c -8005.4194 8036.3584 -8005.7451 8035.4424 -8005.1499 8034.9023 c b -7997.7515 8039.5449 m -7997.4653 8039.1885 -7996.7798 8039.1689 -7996.5645 8039.4912 c -7996.3496 8039.8164 -7995.4302 8039.8701 -7995.5933 8040.1934 c -7995.7539 8040.5176 -7995.7012 8040.7354 -7996.187 8040.5176 c -7996.6733 8040.3008 -7996.5117 8040.8965 -7996.9971 8040.6807 c -7997.4829 8040.4639 -7997.9683 8039.8164 -7997.7515 8039.5449 c b -7989.707 8044.6758 m -7989.2202 8044.3525 -7987.979 8045.1084 -7988.5723 8045.1084 c -7989.167 8045.1084 -7988.4111 8045.8633 -7988.9517 8046.0801 c -7989.4902 8046.2959 -7989.3828 8046.0264 -7989.707 8046.2412 c -7990.0293 8046.458 -7990.4629 8046.8359 -7990.6235 8046.0264 c -7990.7852 8045.2158 -7990.4629 8045.2158 -7990.0845 8044.9463 c -7989.707 8044.6758 -7989.707 8044.6758 y b -8004.3398 8044.9463 m -8003.207 8044.8389 -8003.9629 8045.5947 -8003.3691 8046.0801 c -8002.7734 8046.5664 -8002.0181 8047.2139 -8002.8291 8046.9961 c -8003.6387 8046.7822 -8005.0957 8047.2686 -8005.043 8046.1348 c -8004.9883 8045 -8004.7324 8044.9824 -8004.3398 8044.9463 c b -7998.6699 8053.208 m -7998.2012 8052.9404 -7998.7798 8053.3164 -7998.1299 8053.208 c -7997.4829 8053.1006 -7996.8882 8053.208 -7997.3203 8053.4248 c -7997.7515 8053.6406 -7998.4004 8053.748 -7998.563 8053.5859 c -7998.7251 8053.4248 -7999.0469 8053.4248 -7998.6699 8053.208 c b -7989.167 8052.7764 m -7989.5781 8051.7764 -7988.1958 8052.0205 -7987.5469 8052.3428 c -7986.8994 8052.6689 -7985.9258 8052.0742 -7986.5205 8052.5068 c -7987.1133 8052.9385 -7986.8994 8052.5068 -7987.4922 8052.8301 c -7988.0869 8053.1533 -7988.7891 8053.6943 -7989.167 8052.7764 c b -8004.7734 8058.6631 m -8004.8218 8057.6719 -8003.9082 8058.5537 -8003.3691 8058.6084 c -8002.8291 8058.6631 -8002.1797 8058.6631 -8002.3428 8058.8779 c -8002.5034 8059.0947 -8002.5591 8059.0947 -8003.2622 8059.3096 c -8003.9629 8059.5264 -8004.7188 8059.7412 -8004.7734 8058.6631 c b -8005.2578 8053.208 m -8006.166 8053.5713 -8006.3931 8053.4775 -8006.6621 8053.8008 c -8006.9341 8054.126 -8007.2554 8054.8281 -8007.6348 8053.6943 c -8008.0117 8052.5596 -8007.5278 8051.3721 -8007.1475 8051.5342 c -8006.771 8051.6953 -8006.3931 8052.3428 -8005.9614 8052.5596 c -8005.5293 8052.7764 -8004.7188 8052.9912 -8005.2578 8053.208 c b U U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 41) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -8016.0996 8071.5967 m -7935.0996 8071.5967 L -7935.0996 7966.5967 L -8016.0996 7966.5967 L -8016.0996 8071.5967 L n u u u 0 O 0 0 0 1 k -7997.9053 7984.0225 m -7998.1738 7982.2588 -7999.2598 7980.8877 -8000.6235 7980.9932 c -8001.9858 7981.0986 -8002.8071 7982.6201 -8002.8428 7984.4033 c -8002.8481 7984.666 -8002.7739 7985.8408 -8002.73 7986.0742 C -8002.7378 7986.1787 -8002.7188 7986.2705 -8002.71 7986.377 c -8002.6138 7987.6221 -8001.457 7988.9561 -8000.041 7988.8467 c -7998.6245 7988.7373 -7997.5894 7987.458 -7997.7363 7986.0693 c -7997.7441 7986.0039 -7997.7954 7985.2227 -7997.8071 7985.1592 C -7997.7813 7984.8809 -7997.8594 7984.3223 -7997.9053 7984.0225 c f -8008.3643 7993.3301 m -8009.0942 8001.5127 -8003.6011 8000.7158 v -8000.4678 7999.6152 -8001.541 7996.7168 v -8001.7422 7995.3486 -8003.8843 7994.0947 v -8004.2461 7993.8467 -8004.8628 7992.6982 v -8005.229 7991.1943 -8006.6182 7990.8945 v -8008.1758 7990.8477 -8008.3643 7993.3301 v f -7982.8643 8002.0938 m F -7982.1758 7999.9375 m -7982.8843 7998.79 -7985.9844 7999.2246 Y -7986.9111 7999.2852 -7987.4795 7998.708 Y -7989.939 7994.6885 -7993.1382 7995.4824 -7993.5078 7995.5898 C -7993.5093 7995.583 L -7997.0991 7996.2012 -7997.3662 8001.1992 V -7997.5908 8001.9785 -7998.4351 8002.3662 V -8001.3691 8003.458 -8001.4478 8004.8047 V -8001.9995 8006.7119 -7999.7002 8007.3389 V -7997.7788 8007.8535 -7995.8882 8005.4912 V -7994.7109 8004.2764 -7991.6758 8003.5361 V -7991.6724 8003.5488 L -7988.459 8002.6416 -7986.7388 8003.1855 Y -7983.9517 8004.3643 -7982.5059 8002.998 Y -7980.7822 8001.3525 -7982.1758 7999.9375 Y f -7996.083 7983.4756 m -7996.6851 7981.7969 -7996.3818 7980.0742 -7995.1323 7979.5195 c -7993.8838 7978.9639 -7992.438 7979.9131 -7991.5581 7981.4639 c -7991.4282 7981.6924 -7990.9355 7982.7617 -7990.8628 7982.9873 C -7990.8062 7983.0752 -7990.7788 7983.1641 -7990.7358 7983.2637 c -7990.2285 7984.4053 -7990.6118 7986.127 -7991.9102 7986.7041 c -7993.2085 7987.2822 -7994.7275 7986.6494 -7995.2578 7985.3584 c -7995.2827 7985.2969 -7995.6074 7984.584 -7995.6294 7984.5225 C -7995.7827 7984.292 -7995.9805 7983.7627 -7996.083 7983.4756 c f -7981.8125 7986.5273 m -7977.2798 7993.3789 -7982.4907 7995.291 v -7985.771 7995.8135 -7986.2031 7992.7529 v -7986.6782 7991.4521 -7985.3896 7989.332 v -7985.1899 7988.9414 -7985.1934 7987.6367 v -7985.5854 7986.1416 -7984.5078 7985.2148 v -7983.1587 7984.4326 -7981.8125 7986.5273 v f U u -7956.8354 8035.7041 m -7956.4683 8033.959 -7957.0044 8032.292 -7958.3179 8031.9131 c -7959.6318 8031.5342 -7960.9341 8032.6719 -7961.5933 8034.3291 c -7961.6899 8034.5742 -7962.0322 8035.6992 -7962.0742 8035.9336 C -7962.1172 8036.0293 -7962.1318 8036.1211 -7962.1621 8036.2246 c -7962.5083 8037.4238 -7961.8931 8039.0771 -7960.5278 8039.4717 c -7959.1631 8039.8662 -7957.7451 8039.0332 -7957.3965 8037.6816 c -7957.3789 8037.6172 -7957.1548 8036.8672 -7957.1421 8036.8037 C -7957.021 8036.5518 -7956.8979 8036.002 -7956.8354 8035.7041 c f -7970.3701 8040.2139 m -7973.9238 8047.6201 -7968.4995 8048.8027 v -7965.1797 8048.8721 -7965.1685 8045.7813 v -7964.8774 8044.4277 -7966.4429 8042.5039 v -7966.6938 8042.1416 -7966.8691 8040.8496 v -7966.6851 8039.3145 -7967.8789 8038.5449 v -7969.3218 8037.9561 -7970.3701 8040.2139 v f -7949.5645 8057.3662 m F -7948.1631 8055.5879 m -7948.4243 8054.2656 -7951.4795 8053.584 Y -7952.3696 8053.3164 -7952.6982 8052.5752 Y -7953.5918 8047.9502 -7956.8662 8047.5713 -7957.249 8047.542 C -7957.249 8047.5361 L -7960.8267 8046.8555 -7962.8311 8051.4424 V -7963.3149 8052.0928 -7964.2412 8052.1592 V -7967.3721 8052.1523 -7967.9165 8053.3857 V -7969.1035 8054.9775 -7967.1709 8056.3721 V -7965.5522 8057.5273 -7962.9531 8055.9785 V -7961.4238 8055.2549 -7958.3218 8055.626 V -7958.3228 8055.6387 L -7954.9961 8055.918 -7953.5762 8057.0293 Y -7951.3789 8059.1113 -7949.5459 8058.3398 Y -7947.355 8057.4023 -7948.1631 8055.5879 Y f -7954.937 8035.832 m -7954.9131 8034.0479 -7954.0254 8032.542 -7952.6597 8032.46 c -7951.2939 8032.376 -7950.2739 8033.7734 -7949.9951 8035.5352 c -7949.9541 8035.7939 -7949.8662 8036.9678 -7949.8774 8037.2061 C -7949.8555 8037.3076 -7949.8613 8037.4004 -7949.8555 8037.5088 c -7949.7803 8038.7559 -7950.7441 8040.2334 -7952.1621 8040.3184 c -7953.5811 8040.4033 -7954.7822 8039.2793 -7954.8242 8037.8838 c -7954.8267 8037.8184 -7954.8818 8037.0361 -7954.8794 8036.9717 C -7954.9429 8036.7012 -7954.9419 8036.1367 -7954.937 8035.832 c f -7943.1182 8043.1592 m -7941.2773 8051.1641 -7946.8267 8051.127 v -7950.083 8050.4648 -7949.415 8047.4473 v -7949.4028 8046.0635 -7947.4531 8044.5293 v -7947.1274 8044.2344 -7946.6738 8043.0117 v -7946.5171 8041.4727 -7945.1831 8040.9844 v -7943.645 8040.7246 -7943.1182 8043.1592 v f U U 1 Ap -8016.0996 8071.5967 m -8016.0996 7966.5967 L -7935.0996 7966.5967 L -7935.0996 8071.5967 L -8016.0996 8071.5967 L n U U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 42) 0 A u 0 Ap 0 J 0 j 1 w 4 M []0 d 0 XR -7989.5605 8044.6816 m -8017.0996 8044.6816 L -8017.0996 8072.2207 L -7989.5605 8072.2207 L -7989.5605 8044.6816 L n 0 O 0 0.55 1 0.12 k -8003.8594 8062.959 m -8003.8594 8072.5967 L -8002.7339 8072.5967 L -8002.7339 8062.959 L -8003.8594 8062.959 L f 0 0.55 1 0.3 k -8007.5229 8058.4727 m -8006.4092 8056.752 -8002.9805 8055.0537 -7998.5962 8055.0537 c -7994.2148 8055.0537 -7990.7134 8056.7031 -7989.6714 8058.4707 C -7989.6714 8058.4707 L -7990.7134 8060.1973 -7994.2148 8061.8945 -7998.5962 8061.8945 c -8002.9751 8061.8945 -8006.4238 8060.1582 -8007.5229 8058.4727 C f U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 45) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -8017.0996 8029.5146 m -8017.0996 8072.5967 L -7930.3213 8072.5967 L -7930.3213 8029.5146 L -8017.0996 8029.5146 L n u u 0 O 0 0 0 1 k -7957.3213 8058.832 m -7957.3213 8066.6709 L -7945.3213 8059.7412 L -7933.3213 8052.8135 L -7945.3213 8045.8857 L -7957.3213 8038.958 L -7957.3213 8047.0791 L -8016.0347 8033.3135 L -8003.0874 8052.3984 L -8017.0996 8072.5967 L -7957.3213 8058.832 L f 0 1 1 0.1 k 0 R 0 0 0 1 K -7955.3213 8055.832 m -7955.3213 8063.6709 L -7943.3213 8056.7412 L -7931.3213 8049.8135 L -7943.3213 8042.8857 L -7955.3213 8035.958 L -7955.3213 8044.0791 L -8014.0347 8030.3135 L -7999.375 8049.9561 L -8014.0347 8069.5967 L -7955.3213 8055.832 L b U U U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 5) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -7858.499 8072.5967 m -7858.499 8059.0166 L -8017.0996 8059.0166 L -8017.0996 8072.5967 L -7858.499 8072.5967 L n u u 0 O 0.285 0.228 0.171 0 k -7873.1782 8071.0811 m -7873.1431 8072.2861 L -7859.6099 8073.1143 -7858.9414 8071.8789 v -7858.8438 8071.6982 -7858.7471 8071.3115 -7858.6611 8070.79 C -7860.6841 8071.4209 -7870.3911 8071.168 -7873.1782 8071.0811 C f 0.44 0.352 0.264 0 k -7873.5059 8059.6201 m -7873.4707 8060.8633 L -7870.5908 8060.6455 -7860.291 8059.9131 -7858.6431 8060.4619 C -7858.8027 8059.8154 -7859.0195 8059.3613 -7859.3042 8059.2119 c -7860.9302 8058.3623 -7873.5059 8059.6201 Y f 0.145 0.116 0.087 0 k -7873.4707 8060.8633 m -7873.1782 8071.0811 L -7870.3911 8071.168 -7860.6841 8071.4209 -7858.6611 8070.79 C -7858.2515 8068.374 -7858.0254 8062.9561 -7858.6431 8060.4619 C -7860.291 8059.9131 -7870.5908 8060.6455 -7873.4707 8060.8633 C f U u 0.155 0.124 0.093 0 k -7899.0371 8064.8701 m -7897.9971 8065.2529 L -7879.1724 8060.7432 L -7879.5811 8059.9111 L -7898.4629 8062.3213 L -7899.3521 8062.6025 L -7899.75 8062.4902 -7900.293 8062.4209 V -7899.709 8062.834 -7899.2422 8063.7373 -7899.0371 8064.8701 C f u 0.085 0.068 0.051 0 k -7903.8989 8069.2627 m -7904.6973 8069.3184 -7901.8491 8069.2607 Y -7902.4478 8068.6143 -7902.8711 8067.416 -7902.9102 8066.0342 c -7902.9165 8065.8213 -7902.9102 8065.6143 -7902.8989 8065.4102 C -7903.1411 8065.3037 -7903.1914 8065.3701 -7903.7285 8065.1611 C -7903.0996 8069.208 -7903.8989 8069.2627 v f 0.305 0.244 0.183 0 k -7902.4438 8062.4639 m -7902.6523 8062.4072 -7902.5933 8064.5273 Y -7901.5781 8065.3545 L -7899.9355 8064.54 L -7899.0371 8064.8701 L -7899.2422 8063.7373 -7899.709 8062.834 -7900.293 8062.4209 C -7900.709 8062.3672 -7901.9741 8062.3965 -7902.4438 8062.4639 C f U 0.115 0.092 0.069 0 k -7899.0371 8064.8701 m -7899.9355 8064.54 L -7901.5781 8065.3545 L -7902.5933 8064.5273 L -7902.8931 8065.3047 -7902.8989 8065.4102 V -7901.6133 8065.9756 -7900.2827 8066.3369 -7898.9395 8066.5225 C -7898.8896 8066.3232 -7898.8838 8066.1396 -7898.8896 8065.9336 c -7898.8994 8065.5684 -7898.9214 8065.2148 -7899.0371 8064.8701 C f 0.41 0.328 0.246 0 k -7879.5508 8060.9932 m -7881.4771 8062.2393 -7890.4858 8067.6953 -7898.9395 8066.5225 C -7899.0034 8067.6895 -7899.3481 8068.6875 -7899.8496 8069.2598 C -7899.2891 8069.2588 L -7878.8398 8072.3525 L -7879.1362 8062.0225 L -7879.1724 8060.7432 L -7879.3042 8060.834 -7879.5508 8060.9932 v f 0.395 0.316 0.237 0 k -7902.9102 8066.0342 m -7902.8711 8067.416 -7902.4478 8068.6143 -7901.8491 8069.2607 C -7899.7803 8069.2598 L -7899.2778 8068.6875 -7898.9214 8067.668 -7898.9395 8066.5225 C -7900.2827 8066.3369 -7901.6133 8065.9756 -7902.8989 8065.4102 C -7902.9102 8065.6143 -7902.9165 8065.8213 -7902.9102 8066.0342 c f U u 0 0 0 0.11 k -7873.3638 8059.7979 m -7872.3403 8059.6318 L -7873.3638 8059.7979 L -7873.3638 8059.7979 L f 0 0 0 0.34 k -7879.5811 8059.9111 m -7879.1724 8060.7432 L -7877.771 8060.5146 L -7876.623 8060.3281 L -7874.7754 8060.0273 L -7873.3638 8059.7979 L -7872.3403 8059.6318 L -7872.395 8059.3135 -7872.4668 8059.0947 -7872.5645 8059.0166 C -7879.5811 8059.9111 L f 0 0 0 0.32 k -7877.9038 8064.8037 m -7878.1411 8072.458 L -7872.814 8072.5967 L -7871.8262 8069.1113 -7872.2813 8064.751 V -7877.9038 8064.8037 L f U 0.025 0.02 0.015 0 k -7871.4219 8061.9814 m -7868.4731 8062.5166 -7865.3398 8062.7568 -7862.4155 8061.958 c -7862.3853 8061.9463 -7862.375 8061.915 -7862.3867 8061.8936 c -7862.3877 8061.8623 -7862.4194 8061.8525 -7862.4414 8061.8525 c -7865.3418 8062.6611 -7868.4751 8062.4209 -7871.4038 8061.875 c -7871.4258 8061.876 -7871.457 8061.8877 -7871.4668 8061.9189 c -7871.4658 8061.9404 -7871.4551 8061.9717 -7871.4219 8061.9814 c -7871.4219 8061.9814 l f -7869.937 8060.9033 m -7869.8291 8060.9756 -7869.731 8061.0908 -7869.623 8061.0986 c -7865.8882 8061.4287 -7862.2627 8061.3779 -7858.5742 8061.2607 c -7858.5522 8061.2607 -7858.5205 8061.2393 -7858.521 8061.2168 c -7858.521 8061.1846 -7858.5547 8061.1641 -7858.5762 8061.1641 c -7861.4219 8061.2783 -7864.2397 8061.2959 -7867.1035 8061.1318 c -7868.0332 8061.0732 -7869.0078 8061.3369 -7869.8774 8060.8174 c -7869.8989 8060.8076 -7869.9302 8060.8076 -7869.9502 8060.8301 c -7869.9614 8060.8525 -7869.959 8060.8838 -7869.937 8060.9033 c -7869.937 8060.9033 l f -7865.4731 8062.9639 m -7863.6094 8064.2764 -7861.4019 8064.9707 -7859.1997 8065.4824 c -7859.1675 8065.4932 -7859.147 8065.4814 -7859.1362 8065.4502 c -7859.127 8065.416 -7859.1484 8065.3975 -7859.1699 8065.3867 c -7861.3613 8064.8623 -7863.5591 8064.1992 -7865.4102 8062.876 c -7865.4429 8062.8564 -7865.4751 8062.8672 -7865.4844 8062.8896 c -7865.5054 8062.9111 -7865.4941 8062.9424 -7865.4731 8062.9639 c -7865.4731 8062.9639 l f -7871.0317 8069.6533 m -7868.8291 8070.167 -7866.6294 8070.627 -7864.3794 8070.8721 c -7864.3594 8070.8809 -7864.3291 8070.8604 -7864.3291 8070.8389 c -7864.3179 8070.8057 -7864.3403 8070.7744 -7864.3726 8070.7744 c -7866.6118 8070.4775 -7868.8301 8070.1143 -7871.0122 8069.5469 c -7871.0347 8069.5479 -7871.0669 8069.5596 -7871.0762 8069.5908 c -7871.0747 8069.6123 -7871.0645 8069.6445 -7871.0317 8069.6533 c -7871.0317 8069.6533 l f -7870.5391 8068.9561 m -7868.4453 8069.7939 -7866.2012 8069.5264 -7864.002 8069.5596 c -7863.9702 8069.5576 -7863.9492 8069.5361 -7863.9502 8069.5049 c -7863.9517 8069.4717 -7863.9731 8069.4521 -7863.9941 8069.4521 c -7866.1924 8069.4404 -7868.437 8069.6953 -7870.5205 8068.8496 c -7870.543 8068.8496 -7870.5742 8068.8623 -7870.583 8068.8936 c -7870.583 8068.915 -7870.5718 8068.9473 -7870.5391 8068.9561 c -7870.5391 8068.9561 l f -7869.8071 8070.3008 m -7868.4829 8070.3486 -7867.25 8070.1436 -7865.9268 8069.8057 c -7865.459 8069.6953 -7865.0195 8069.8232 -7864.5605 8069.8096 c -7863.9971 8069.7939 l -7863.9741 8069.792 -7863.9629 8069.7822 -7863.9531 8069.7705 c -7863.9341 8069.748 -7863.9438 8069.7168 -7863.9658 8069.6953 c -7864.1621 8069.542 l -7864.1738 8069.542 -7864.1851 8069.5313 -7864.1958 8069.5313 c -7864.5996 8069.5439 l -7866.0547 8069.7881 -7867.5571 8070.2686 -7868.9922 8069.6709 c -7869.0254 8069.6611 -7869.0571 8069.6816 -7869.0669 8069.7041 c -7869.0669 8069.7354 -7869.0547 8069.7568 -7869.0332 8069.7676 c -7867.7471 8070.2959 -7866.271 8070.0713 -7864.9814 8069.6504 c -7864.1914 8069.6396 L -7864.2241 8069.6299 L -7864.0278 8069.7832 L -7863.998 8069.6865 L -7864.5635 8069.7031 l -7865.0317 8069.7373 -7865.4844 8069.5801 -7865.9395 8069.6992 c -7867.2539 8070.0576 -7868.4971 8070.2217 -7869.8096 8070.1953 c -7869.8418 8070.1963 -7869.8638 8070.2168 -7869.8613 8070.25 c -7869.8613 8070.2822 -7869.8398 8070.3027 -7869.8071 8070.3008 c -7869.8071 8070.3008 l f -7870.6714 8070.6572 m -7867.9707 8071.8174 -7865.002 8071.167 -7862.2275 8070.7783 c -7861.8828 8070.8857 l -7861.8613 8070.8955 -7861.8413 8070.8838 -7861.8203 8070.8623 c -7861.8096 8070.8408 -7861.8213 8070.8096 -7861.8418 8070.7988 c -7862.1797 8070.6064 l -7864.875 8069.9893 -7867.6387 8070.3779 -7870.3711 8070.3818 c -7870.4019 8070.3838 -7870.4229 8070.4053 -7870.4219 8070.4365 c -7870.4194 8070.4688 -7870.3979 8070.4893 -7870.3677 8070.4893 c -7867.7734 8070.5313 -7865.1299 8070.04 -7862.5723 8070.6709 c -7861.895 8070.8857 L -7861.853 8070.7881 L -7862.2402 8070.6816 l -7865.0054 8071.0391 -7867.9414 8071.7305 -7870.6309 8070.5713 c -7870.6533 8070.5615 -7870.6851 8070.5615 -7870.6958 8070.5947 c -7870.7051 8070.6152 -7870.7051 8070.6475 -7870.6714 8070.6572 c -7870.6714 8070.6572 l f -7867.7891 8063.9912 m -7866.4941 8064.4971 -7865.083 8064.2432 -7863.7798 8063.9404 c -7863.7471 8063.9385 -7863.7363 8063.916 -7863.7378 8063.8857 c -7863.75 8063.8535 -7863.771 8063.8428 -7863.8027 8063.8447 c -7865.0981 8064.127 -7866.4771 8064.4121 -7867.75 8063.8936 c -7867.7822 8063.8838 -7867.814 8063.8955 -7867.8242 8063.9277 c -7867.8218 8063.9492 -7867.811 8063.9814 -7867.7891 8063.9912 c -7867.7891 8063.9912 l f -7868.2397 8065.8174 m -7866.3262 8066.2861 -7864.4141 8066.6992 -7862.4551 8066.9209 c -7862.4238 8066.9307 -7862.4019 8066.9092 -7862.3931 8066.876 c -7862.395 8066.8564 -7862.4155 8066.8252 -7862.437 8066.8252 c -7864.3955 8066.6045 -7866.3091 8066.1787 -7868.2202 8065.71 c -7868.2422 8065.7119 -7868.2734 8065.7227 -7868.2827 8065.7549 c -7868.2827 8065.7764 -7868.2715 8065.8076 -7868.2397 8065.8174 c -7868.2397 8065.8174 l f -7869.0332 8068.2314 m -7866.5991 8069.0576 -7863.9644 8068.6504 -7861.4453 8068.6846 c -7861.4131 8068.6846 -7861.3931 8068.6631 -7861.3931 8068.6299 c -7861.395 8068.6084 -7861.4155 8068.5889 -7861.4478 8068.5889 c -7863.957 8068.5127 -7866.5811 8068.9814 -7868.9941 8068.123 c -7869.0278 8068.124 -7869.0591 8068.1357 -7869.0684 8068.1572 c -7869.0674 8068.1885 -7869.0557 8068.2207 -7869.0332 8068.2314 c -7869.0332 8068.2314 l f -7864.1538 8069.4463 m -7862.7578 8070.1416 -7861.1499 8070 -7859.6338 8070.0635 c -7859.6021 8070.0615 -7859.582 8070.04 -7859.582 8070.0088 c -7859.583 8069.9873 -7859.605 8069.9561 -7859.6362 8069.9561 c -7861.1133 8069.8174 -7862.7485 8070.1201 -7864.1035 8069.3584 c -7864.1362 8069.3496 -7864.1675 8069.3604 -7864.1782 8069.3828 c -7864.1875 8069.4043 -7864.1763 8069.4365 -7864.1538 8069.4463 c -7864.1538 8069.4463 l f -7863.4414 8066.0215 m -7862.4922 8065.9941 -7861.5332 8065.9668 -7860.5835 8065.9385 c -7860.5522 8065.9385 -7860.5308 8065.916 -7860.5332 8065.8848 c -7860.5332 8065.8525 -7860.5547 8065.832 -7860.5874 8065.832 c -7861.5371 8065.8604 -7862.4971 8065.8877 -7863.4453 8065.915 c -7863.4771 8065.915 -7863.4971 8065.9385 -7863.4971 8065.9697 c -7863.4971 8066 -7863.4741 8066.0225 -7863.4414 8066.0215 c -7863.4414 8066.0215 l f -7861.2588 8063.6328 m -7860.7891 8063.6611 -7860.3091 8063.6689 -7859.8379 8063.6885 c -7859.8164 8063.6875 -7859.7852 8063.665 -7859.7861 8063.6328 c -7859.7871 8063.6006 -7859.8096 8063.5801 -7859.8413 8063.5801 c -7860.311 8063.584 -7860.7813 8063.5342 -7861.251 8063.5361 c -7861.2827 8063.5264 -7861.3027 8063.5479 -7861.313 8063.5801 c -7861.3125 8063.6123 -7861.291 8063.6328 -7861.2588 8063.6328 c -7861.2588 8063.6328 l f -7869.0698 8065.8311 m -7868.6685 8066.1064 -7868.2251 8066.2764 -7867.7451 8066.3477 c -7867.7109 8066.3574 -7867.6914 8066.335 -7867.6802 8066.3135 c -7867.6699 8066.2822 -7867.6924 8066.251 -7867.7148 8066.251 c -7868.1851 8066.1689 -7868.6172 8065.999 -7869.0205 8065.7441 c -7869.0518 8065.7344 -7869.0845 8065.7344 -7869.0942 8065.7676 c -7869.1035 8065.79 -7869.0918 8065.8213 -7869.0698 8065.8311 c -7869.0698 8065.8311 l f -7870.29 8071.6816 m -7867.834 8072.124 -7865.3979 8072.5977 -7862.8989 8072.3232 c -7862.8774 8072.3232 -7862.8564 8072.3008 -7862.8574 8072.2686 c -7862.8574 8072.2373 -7862.8794 8072.2158 -7862.9019 8072.2158 c -7865.3911 8072.4697 -7867.834 8072.0811 -7870.2715 8071.5742 c -7870.293 8071.5752 -7870.3252 8071.5869 -7870.334 8071.6182 c -7870.334 8071.6396 -7870.3218 8071.6719 -7870.29 8071.6816 c -7870.29 8071.6816 l f 0.195 0.156 0.117 0 k -7870.2661 8060.2412 m -7867.8965 8059.8633 -7865.5054 8059.9443 -7863.1294 8060.1865 c -7863.0981 8060.1846 -7863.0762 8060.1631 -7863.0762 8060.1318 c -7863.0781 8060.1104 -7863.0996 8060.0791 -7863.1211 8060.0791 c -7865.5078 8059.8389 -7867.8911 8059.7568 -7870.269 8060.1357 c -7870.3022 8060.1357 -7870.3218 8060.1572 -7870.3213 8060.1904 c -7870.3203 8060.2217 -7870.2988 8060.2432 -7870.2661 8060.2412 c -7870.2661 8060.2412 l f 0.335 0.268 0.201 0 k -7869.5347 8059.708 m -7867.0278 8059.7119 -7864.5142 8059.874 -7862.0181 8059.4932 c -7861.9858 8059.4912 -7861.9644 8059.4697 -7861.9658 8059.4385 c -7861.9668 8059.4053 -7861.9893 8059.3857 -7862.0205 8059.3857 c -7864.5181 8059.7656 -7867.0293 8059.626 -7869.5371 8059.6025 c -7869.5596 8059.6025 -7869.5811 8059.624 -7869.5781 8059.6553 c -7869.5781 8059.6885 -7869.5571 8059.708 -7869.5347 8059.708 c -7869.5347 8059.708 l f 0.205 0.164 0.123 0 k -7871.0762 8059.9229 m -7869.6035 8060.2646 -7868.1074 8059.999 -7866.6387 8059.8174 c -7866.6074 8059.8174 -7866.5869 8059.7939 -7866.5991 8059.7627 c -7866.5996 8059.7305 -7866.6211 8059.71 -7866.6533 8059.7217 c -7868.1099 8059.8809 -7869.5957 8060.1797 -7871.0469 8059.8154 c -7871.0781 8059.8174 -7871.1099 8059.8281 -7871.1094 8059.8604 c -7871.1191 8059.8809 -7871.0981 8059.9131 -7871.0762 8059.9229 c -7871.0762 8059.9229 l f -7864.4531 8059.3916 m -7863.2974 8059.5176 -7862.127 8059.4111 -7860.9922 8059.1865 c -7860.9707 8059.1748 -7860.9502 8059.1533 -7860.9614 8059.1211 c -7860.9619 8059.0996 -7860.9941 8059.0791 -7861.0161 8059.0908 c -7862.1499 8059.3369 -7863.291 8059.3896 -7864.4458 8059.2852 c -7864.479 8059.2861 -7864.498 8059.3076 -7864.5083 8059.3291 c -7864.5078 8059.3613 -7864.4858 8059.3818 -7864.4531 8059.3916 c -7864.4531 8059.3916 l f 0.335 0.268 0.201 0 k -7871.3677 8062.0439 m -7870.021 8062.7852 -7868.4063 8062.1943 -7866.9551 8062.2383 c -7866.9219 8062.2373 -7866.9019 8062.2158 -7866.9019 8062.1816 c -7866.9038 8062.1621 -7866.9258 8062.1416 -7866.957 8062.1416 c -7868.3882 8062.0869 -7869.9819 8062.6768 -7871.3164 8061.9473 c -7871.3379 8061.9365 -7871.3691 8061.9482 -7871.3911 8061.9707 c -7871.4004 8061.9912 -7871.3882 8062.0244 -7871.3677 8062.0439 c -7871.3677 8062.0439 l f -7869.9941 8064.1611 m -7867.7715 8064.6416 -7865.4893 8064.2129 -7863.25 8064.1592 c -7863.2173 8064.1582 -7863.1973 8064.1357 -7863.1973 8064.1045 c -7863.1997 8064.083 -7863.2314 8064.0635 -7863.2515 8064.0635 c -7865.4829 8064.0742 -7867.7515 8064.5771 -7869.9751 8064.0537 c -7869.9971 8064.0537 -7870.0283 8064.0654 -7870.0371 8064.0986 c -7870.0371 8064.1191 -7870.0254 8064.1504 -7869.9941 8064.1611 c -7869.9941 8064.1611 l f -7864.127 8060.7373 m -7862.4492 8061.5654 -7860.5991 8062.0986 -7858.7031 8061.958 c -7858.6714 8061.958 -7858.6509 8061.9355 -7858.6523 8061.9033 c -7858.6523 8061.8721 -7858.6738 8061.8496 -7858.707 8061.8525 c -7860.5811 8062.0127 -7862.4194 8061.457 -7864.0869 8060.6504 c -7864.1074 8060.6416 -7864.1411 8060.6416 -7864.1499 8060.6748 c -7864.1611 8060.6953 -7864.1611 8060.7275 -7864.127 8060.7373 c -7864.127 8060.7373 l f u 0.5 0.85 1 0.45 k -8017.0996 8067.5049 m -8017.125 8068.084 -8016.666 8068.7832 -8015.2671 8069.5869 C -8014.9517 8069.5996 -8013.4941 8069.6201 -8011.1885 8069.6455 C -8011.1885 8067.4189 L -8013.2378 8067.4424 -8015.2173 8067.4824 -8017.0996 8067.5049 C f -8016.6084 8066.5654 m -8011.1885 8066.4414 L -8011.1885 8065.4111 L -8014.7441 8065.5557 L -8015.9141 8065.9268 -8016.6084 8066.5654 V f 0.5 0.85 1 0.32 k -8011.1885 8066.4219 m -8016.5742 8066.54 L -8016.8691 8066.8105 -8017.0845 8067.1533 -8017.0996 8067.5244 C -8015.2173 8067.5029 -8013.2378 8067.4814 -8011.1885 8067.458 C -8011.1885 8066.4219 L f 0.5 0.85 1 0.45 k -7906.25 8066.2139 m -7984.458 8067.1377 -8011.2075 8067.4385 V -8011.2075 8069.6455 L -7994.9141 8069.8281 -7936.0898 8070.3037 Y -7901.8491 8069.2607 L -7902.5571 8066.1641 L -7906.25 8066.2139 L f 0.5 0.85 1 0.12 k -8011.2075 8065.4111 m -8011.2075 8066.4414 L -7902.5254 8064.5967 L -7902.4829 8062.46 L -7935.7549 8062.3096 L -8011.2075 8065.4111 L f u 0.065 0.052 0.039 0 k -7879.1724 8060.7432 m -7879.1362 8062.0225 L -7879.395 8060.7129 L -7897.9971 8065.2529 L -7899.0371 8064.8701 L -7898.979 8065.2021 -7898.9395 8065.5537 -7898.9302 8065.9189 c -7898.9238 8066.124 -7898.9277 8066.3252 -7898.9395 8066.5225 C -7890.4858 8067.6953 -7881.063 8063.2686 -7879.1362 8062.0225 C -7878.8398 8072.3525 L -7878.1411 8072.458 L -7877.9038 8064.8037 L -7872.2813 8064.751 L -7872.1895 8062.6104 -7872.1714 8060.6182 -7872.3403 8059.6318 C -7879.1724 8060.7432 L f 0.4 0.7 1 0 k -7902.5571 8066.1846 m -7902.5254 8064.5771 L -8011.2075 8066.4219 L -8011.2075 8067.458 L -7984.458 8067.1572 -7902.5571 8066.1846 Y f U U 0.025 0.02 0.015 0 k -7866.834 8068.626 m -7866.834 8068.6592 -7866.8125 8068.6787 -7866.7798 8068.6787 c -7863.771 8068.71 -7861.521 8068.542 -7858.5151 8068.4561 C -7858.5083 8068.3623 L -7861.4258 8068.4668 -7863.8604 8068.6045 -7866.7837 8068.5713 C -7866.8164 8068.5732 -7866.8354 8068.5947 -7866.834 8068.626 C f -7858.499 8068.3623 m -7858.5078 8068.3408 L -7858.5083 8068.3623 L -7858.5059 8068.3623 -7858.5029 8068.3623 -7858.499 8068.3623 C f -7862.5483 8067.0205 m -7863.5454 8066.8887 -7864.439 8067.3623 -7865.311 8067.7939 C -7865.3438 8067.8047 -7865.353 8067.8369 -7865.3418 8067.8672 C -7865.3301 8067.8896 -7865.2979 8067.8984 -7865.2773 8067.8877 c -7864.4258 8067.4268 -7863.5308 8067.0166 -7862.5674 8067.1152 c -7861.2075 8067.2588 -7860.0034 8067.9717 -7858.625 8068.0488 C -7858.5459 8067.9561 L -7860.1396 8067.8623 -7860.9644 8067.2197 -7862.5483 8067.0205 c f U U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 50) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -8016.0996 8071.5967 m -7888.9771 8071.5967 L -7888.9771 8024.0117 L -8016.0996 8024.0117 L -8016.0996 8071.5967 L n u *u 0 O 0.9529 0.949 0.1961 0.0745 k -7989.8931 8056.0137 m -7989.9229 8055.8633 L -7992.0845 8049.9609 -7993.0435 8047.2344 -7993.375 8045.8857 c -7993.4653 8045.8857 L -7993.7949 8047.2041 -7994.875 8049.9316 -7997.0669 8055.8633 c -7997.0962 8056.0137 L -7989.8931 8056.0137 l f 1 D -8000.2178 8064.5645 m -8001.7188 8068.1328 -8002.499 8070.3057 -8000.2178 8070.5137 c -8000.2178 8071.5645 L -8002.7988 8071.5342 -8005.6802 8071.5137 -8008.4414 8071.5137 c -8012.1646 8071.5137 -8014.627 8071.5342 -8016.0996 8071.5645 c -8016.0996 8070.5137 L -8014.2061 8070.3057 -8013.1538 8068.1641 -8005.6509 8051.0996 c -7993.7949 8024.0117 L -7991.9634 8024.0117 L -7980.2578 8051.0996 L -7972.9043 8068.1045 -7971.8242 8070.3057 -7969.9883 8070.5137 c -7969.9883 8071.5645 L -7971.6138 8071.5342 -7974.0161 8071.5137 -7977.6763 8071.5137 c -7980.6484 8071.5137 -7983.769 8071.5342 -7986.8022 8071.5645 c -7986.8022 8070.5137 L -7984.5811 8070.3057 -7985.4214 8068.1045 -7986.8613 8064.5645 C -8000.2178 8064.5645 l f *U *u 0 D -7945.1758 8039.6777 m -7945.1758 8036.0684 -7947.4531 8033.6904 -7951.229 8033.6904 c -7952.3379 8033.6904 -7953.1763 8033.8125 -7953.627 8033.8408 c -7953.627 8046.1445 L -7952.9668 8046.2041 -7952.3081 8046.2041 -7951.8291 8046.2041 c -7950.2998 8046.2041 -7948.8022 8045.7236 -7947.7837 8045.002 c -7946.4941 8044.1289 -7945.1758 8042.3848 -7945.1758 8039.7383 C -7945.1758 8039.6777 l f 1 D -7964.1802 8043.9893 m -7964.1802 8028.2412 -7964.1802 8026.0254 -7966.6421 8025.875 c -7966.6421 8024.915 L -7965.1421 8024.8555 -7962.417 8024.7959 -7959.666 8024.7656 c -7957.7534 8024.7051 -7954.4941 8024.6152 -7952.2476 8024.5742 c -7948.6821 8024.5742 -7945.6851 8025.0225 -7943.1045 8025.8584 c -7938.4531 8027.4443 -7934.0698 8031.4492 -7934.0698 8039.2568 c -7934.0698 8044.3398 -7936.501 8047.916 -7938.603 8049.6572 c -7939.6831 8050.6182 -7940.9131 8051.4287 -7941.874 8051.9092 c -7941.874 8052.0596 L -7939.623 8055.0879 -7937.7021 8057.6592 -7931.4902 8066.2393 c -7929.5996 8068.6611 -7928.0098 8070.335 -7926.8398 8070.5742 c -7926.8398 8071.5967 L -7928.7598 8071.5967 -7931.0996 8071.4814 -7933.229 8071.4814 c -7935.4507 8071.4814 -7936.9517 8071.5967 -7938.542 8071.5967 c -7939.7725 8071.5967 -7940.8237 8071.5371 -7941.6035 8070.8691 c -7945.1147 8065.4443 -7949.0117 8059.3525 -7952.2178 8054.3105 c -7952.6074 8054.3105 -7953.0571 8054.3105 -7953.627 8054.3105 c -7953.627 8056.8809 L -7953.627 8068.123 -7953.5371 8070.3652 -7951.2891 8070.5742 c -7951.2891 8071.5664 L -7952.7275 8071.5371 -7956.019 8071.5117 -7958.7988 8071.5117 c -7962.0283 8071.5117 -7964.9917 8071.5371 -7966.6118 8071.5664 c -7966.6118 8070.5742 L -7964.1514 8070.3652 -7964.1802 8068.123 -7964.1802 8051.1885 C -7964.1802 8043.9893 l f *U *u 0 D -7913.5557 8051.1895 m -7913.5557 8068.0908 -7913.5557 8070.2441 -7916.3828 8070.5742 C -7916.3828 8071.5664 l -7914.4883 8071.5371 -7911.1538 8071.5117 -7907.8818 8071.5117 c -7904.729 8071.5117 -7901.6685 8071.5371 -7899.3877 8071.5664 C -7899.3877 8070.5742 l -7902.3574 8070.5742 -7902.3877 8068.1211 -7902.3877 8051.1895 C -7902.3877 8033.748 L -7894.9189 8033.748 l -7892.0991 8033.748 -7890.6294 8034.5566 -7889.999 8036.8584 C -7889.0068 8036.8584 l -7889.0068 8032.0664 -7888.9771 8028.0117 -7888.9771 8024.7676 c -7893.4482 8024.7979 -7898.8481 8024.8281 -7904.1597 8024.8281 C -7911.8442 8024.8281 l -7916.6533 8024.8281 -7922.0962 8024.7979 -7927.061 8024.7676 c -7927.061 8027.9814 -7927.0322 8032.0664 -7927.0322 8036.8584 C -7926.0068 8036.8584 l -7925.4653 8034.7061 -7923.8711 8033.748 -7921.0435 8033.748 C -7913.5557 8033.748 l -7913.5557 8051.1895 L f *U U U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 6) 0 A u 1 Ap 0 J 0 j 1 w 4 M []0 d 0 XR -8016.8496 8048.5967 m -8016.8496 8072.5967 L -8006.8496 8072.5967 L -8006.8496 8048.5967 L -8016.8496 8048.5967 L n 0 Ap 0 O 1 g -8006.8496 8050.5967 m -8007.1699 8050.5967 -8007.4854 8050.6152 -8007.7979 8050.6445 c -8009.6875 8050.8223 -8011.4194 8051.5313 -8012.8555 8052.6143 c -8014.3525 8053.7432 -8015.5195 8055.2783 -8016.1938 8057.0605 c -8016.6118 8058.1611 -8016.8496 8059.3496 -8016.8496 8060.5967 c -8016.8496 8062.459 -8016.3315 8064.1963 -8015.4453 8065.6885 c -8013.7021 8068.624 -8010.5098 8070.5967 -8006.8496 8070.5967 C -8006.8496 8050.5967 L f 0 R 0 G 1 J 1 j 0.5 w -8006.8496 8070.2783 m -8009.8789 8069.3223 -8012.707 8067.6641 -8015.4453 8065.6885 C S -8006.8496 8064.6455 m -8009.9995 8062.2393 -8013.0571 8059.5088 -8016.1938 8057.0605 C S -8012.8555 8052.6143 m -8010.79 8053.7051 -8008.8013 8055.0635 -8006.8496 8056.5537 C S -8007.7979 8050.6445 m -8007.4805 8050.7275 -8007.1631 8050.8105 -8006.8496 8050.9111 C S -8012.8555 8052.6143 m -8011.4189 8051.5313 -8009.6875 8050.8223 -8007.7979 8050.6445 C S -8016.1938 8057.0605 m -8016.6118 8058.1611 -8016.8496 8059.3496 -8016.8496 8060.5967 c -8016.8496 8062.459 -8016.3311 8064.1963 -8015.4453 8065.6885 C S -8006.8496 8050.5967 m -8007.1699 8050.5967 -8007.4854 8050.6152 -8007.7979 8050.6445 C S -8012.8555 8052.6143 m -8014.3525 8053.7432 -8015.5195 8055.2783 -8016.1938 8057.0605 C S -8015.4453 8065.6885 m -8013.7021 8068.624 -8010.5098 8070.5967 -8006.8496 8070.5967 C S U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 62) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -8017.0996 8072.5967 m -8017.0996 8034.3271 L -7978.8301 8034.3271 L -7978.8301 8072.5967 L -8017.0996 8072.5967 L n 0 O 1 0.14 0.09 0 k -7978.8301 8055.5 m -7978.8301 8046.9375 L -8017.0996 8046.9375 L -8017.0996 8055.5 L -7978.8301 8055.5 L f -7978.8301 8058.6934 m -7978.8301 8058.0195 L -8017.0996 8058.0195 L -8017.0996 8058.6934 L -7978.8301 8058.6934 L f U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 63) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -8017.0996 8072.5967 m -8017.0996 8034.3271 L -7978.8301 8034.3271 L -7978.8301 8072.5967 L -8017.0996 8072.5967 L n 0 O 1 0.14 0.09 0 k -7978.8301 8051.4229 m -7978.8301 8059.9863 L -7991.4404 8059.9863 L -7991.4404 8072.5967 L -8000.0034 8072.5967 L -8000.0059 8051.4229 L -8000.0034 8051.4229 L -8000.0034 8051.4219 L -7978.8301 8051.4229 L f -7978.8301 8048.9033 m -8002.5229 8048.9033 L -8002.5229 8072.5967 L -8003.1963 8072.5967 L -8003.1973 8048.2295 L -7978.8301 8048.2295 L -7978.8301 8048.9033 L f U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 64) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -8017.0996 8072.5957 m -8017.0996 8034.3252 L -7978.8301 8034.3252 L -7978.8301 8072.5957 L -8017.0996 8072.5957 L n 0 O 1 0.14 0.09 0 k -7978.8301 8046.9355 m -8004.4893 8046.9355 L -8004.4893 8072.5957 L -7995.9258 8072.5967 L -7995.9258 8055.5 L -7978.8301 8055.5 L -7978.8301 8046.9355 L f -7978.8301 8058.0176 m -7993.4077 8058.0176 L -7993.4077 8072.5967 L -7992.7334 8072.5967 L -7992.7334 8058.6924 L -7978.8301 8058.6924 L -7978.8301 8058.0176 L f U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 65) 0 A u 1 Ap 0 J 0 j 1 w 4 M []0 d 0 XR -7989.1621 8045.0576 m -8016.7021 8045.0576 L -8016.7021 8072.5967 L -7989.1621 8072.5967 L -7989.1621 8045.0576 L n 0 O 0 0.55 1 0.12 k -7988.9414 8058.2969 m -8017.0996 8058.2969 L -8017.0996 8059.4219 L -7988.9414 8059.4219 L -7988.9414 8058.2969 L f u 0 0.55 1 0.3 k -8016.0811 8046.1182 m -8016.5098 8048.1221 -8015.2861 8051.748 -8012.187 8054.8477 c -8009.0874 8057.9463 -8005.4453 8059.2568 -8003.459 8058.7422 C -8003.459 8058.7422 L -8002.9751 8056.7861 -8004.2515 8053.1084 -8007.3496 8050.0107 c -8010.4453 8046.915 -8014.1118 8045.7031 -8016.0811 8046.1182 C f 0 0.39 0.7 0.12 k -8016.0811 8071.5879 m -8016.5098 8069.584 -8015.2861 8065.958 -8012.187 8062.8584 c -8009.0874 8059.7607 -8005.4453 8058.4502 -8003.459 8058.9639 C -8003.459 8058.9639 L -8002.9751 8060.9209 -8004.2515 8064.5977 -8007.3496 8067.6953 c -8010.4453 8070.792 -8014.1118 8072.0029 -8016.0811 8071.5879 C f U u 0 0.55 1 0.3 k -8002.2778 8071.5879 m -8002.707 8069.584 -8001.4834 8065.958 -7998.3838 8062.8584 c -7995.2852 8059.7607 -7991.6431 8058.4502 -7989.6572 8058.9639 C -7989.6563 8058.9639 L -7989.1714 8060.9209 -7990.4492 8064.5977 -7993.5469 8067.6953 c -7996.6431 8070.792 -8000.3091 8072.0029 -8002.2778 8071.5879 C f 0 0.39 0.7 0.12 k -8002.2778 8046.1182 m -8002.707 8048.1221 -8001.4834 8051.748 -7998.3838 8054.8477 c -7995.2852 8057.9463 -7991.6431 8059.2568 -7989.6572 8058.7422 C -7989.6563 8058.7422 L -7989.1714 8056.7861 -7990.4492 8053.1084 -7993.5469 8050.0107 c -7996.6431 8046.915 -8000.3091 8045.7031 -8002.2778 8046.1182 C f U U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 67) 0 A u 0 Ap 0 J 0 j 1 w 4 M []0 d 0 XR -7989.5605 8044.6816 m -8017.0996 8044.6816 L -8017.0996 8072.2207 L -7989.5605 8072.2207 L -7989.5605 8044.6816 L n 0 O 0 0.55 1 0.12 k -8003.8594 8062.959 m -8003.8594 8072.5967 L -8002.7339 8072.5967 L -8002.7339 8062.959 L -8003.8594 8062.959 L f 0 0.55 1 0.3 k -8007.5229 8058.4727 m -8006.4092 8056.752 -8002.9805 8055.0537 -7998.5962 8055.0537 c -7994.2148 8055.0537 -7990.7134 8056.7031 -7989.6714 8058.4707 C -7989.6714 8058.4707 L -7990.7134 8060.1973 -7994.2148 8061.8945 -7998.5962 8061.8945 c -8002.9751 8061.8945 -8006.4238 8060.1582 -8007.5229 8058.4727 C f U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 69) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -7989.5605 8045.0576 m -8017.0996 8045.0576 L -8017.0996 8072.5967 L -7989.5605 8072.5967 L -7989.5605 8045.0576 L n 0 O 0 0.55 1 0.3 k -8007.5229 8058.8486 m -8006.4092 8057.1279 -8002.9805 8055.4297 -7998.5962 8055.4297 c -7994.2148 8055.4297 -7990.7134 8057.0791 -7989.6714 8058.8467 C -7989.6714 8058.8467 L -7990.7134 8060.5732 -7994.2148 8062.2705 -7998.5962 8062.2705 c -8002.9751 8062.2705 -8006.4238 8060.5342 -8007.5229 8058.8486 C f U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 8) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -8016.0518 8069.9092 m -7908.895 8069.9092 L -7908.895 8055.7822 L -8016.0518 8055.7822 L -8016.0518 8069.9092 L n u 0 O 0 0 0 1 k -8014.3828 8069.2197 m -8014.9531 8071.5967 -8014.918 8067.6006 V -8015.1475 8064.3984 L -8015.7163 8062.0518 L -8015.5498 8059.7197 L -8014.0498 8059.0518 -7997.3828 8057.7197 V -7990.7163 8056.3857 -7981.7163 8056.3857 V -7916.4932 8057.0732 -7911.5908 8058.4814 v -7952.4878 8056.4717 -7955.0684 8057.1084 v -7915.9565 8058.7568 -7912.9541 8060.0283 v -7950.8896 8058.1436 -7954.2671 8059.7744 v -7919.3491 8061.5068 -7915.1211 8063.1279 v -7921.8213 8062.4795 -7923.6123 8062.6787 v -7920.4893 8063.167 l -7925.519 8063.0986 l -7928.4214 8062.7256 l -7920.5518 8063.8389 -7920.0029 8064.4053 v -7916.415 8063.7275 -7930.6182 8063.9814 v -7964.2173 8060.0518 -8014.3828 8069.2197 V f /BBAccumRotation (5.805971) XT 0 R 0 0 0 0.5 K 0.025 w -8016.0498 8058.7197 m -7995.7671 8056.8916 -7976.0723 8055.8174 v -7933.251 8056.0986 -7928.6733 8056.4971 v -7916.2627 8056.6279 -7908.8955 8057.624 v S /BBAccumRotation (5.805971) XT 0 0 0 1 K -7953.9365 8056.0049 m -7957.3955 8055.624 -7983.3604 8055.876 Y -7993.7271 8055.7568 -8016.0498 8058.7197 Y S /BBAccumRotation (5.805971) XT -7953.0869 8059.2607 m -7922.4604 8060.1787 -7915.7603 8060.8281 v S /BBAccumRotation (5.805971) XT 0 0 0 0.5 K -7961.7197 8063.8008 m -7926.4702 8065.2139 -7923.5054 8065.7373 v S /BBAccumRotation (5.805971) XT U U %AI8_EndBrushPattern %AI8_BeginBrushPattern (New Pattern 83) 0 A u 0 J 0 j 1 w 4 M []0 d 0 XR -8016.0996 8071.5313 m -7802.5005 8071.5313 L -7802.5005 8063.7305 L -8016.0996 8063.7305 L -8016.0996 8071.5313 L n 0 O 0 0 0 1 k -8016.0996 8067.6318 m -8006.0854 8070.124 -7999.2871 8071.4717 -7987.3003 8071.5313 c -7974.3179 8071.5967 -7909.2998 8071.5313 y -7844.2813 8071.5967 -7831.2998 8071.5313 v -7819.3125 8071.4717 -7812.5151 8070.124 -7802.5005 8067.6318 C -7812.5151 8065.1396 -7819.3125 8063.792 -7831.2998 8063.7305 c -7844.2813 8063.666 -7909.2998 8063.7305 y -7974.3179 8063.666 -7987.3003 8063.7305 v -7999.2871 8063.792 -8006.0854 8065.1396 -8016.0996 8067.6318 C f U %AI8_EndBrushPattern %AI5_End_NonPrinting-- %AI5_Begin_NonPrinting Np %AI8_BeginPluginObject (Adobe Brush Manager Order) (Adobe Brush Manager Order) ( Adobe Calligraphic Brush Tool/ 6 pt Flat / Adobe Calligraphic) - ( Brush Tool/ 10 pt Oval/ Adobe Calligraphic Brush Tool/ 12 pt ) - (Oval / Adobe Calligraphic Brush Tool/ 20 pt Oval/ Adobe Callig) - (raphic Brush Tool/ 25 pt Round / Adobe Calligraphic Brush Tool) - (/ 50 pt Flat/ Adobe Scatter Brush Tool/ Dog Tracks/ Adobe Scat) - (ter Brush Tool/ Fall Leaf/ Adobe Scatter Brush Tool/ Ladybug/ ) - (Adobe Scatter Brush Tool/ Push Pin/ Adobe Scatter Brush Tool/ ) - (Strawberry/ Adobe Scatter Brush Tool/ Twinkle Star / Adobe Art) - (OnPath Brush Tool/ Marker/ Adobe ArtOnPath Brush Tool/ Tapered) - ( Stroke/ Adobe ArtOnPath Brush Tool/ Arrow/ Adobe ArtOnPath Br) - (ush Tool/ Paintbrush/ Adobe ArtOnPath Brush Tool/ Type/ Adobe ) - (PatternOnPath Brush Tool/ Double Lines/ Adobe PatternOnPath Br) - (ush Tool/ Laurel/ Adobe PatternOnPath Brush Tool/ Rope /) . %AI8_EndPluginObject %AI5_End_NonPrinting-- %AI5_Begin_NonPrinting Np %AI8_BeginPluginObject (Adobe Calligraphic Brush Tool) (10 pt Oval) (1 1 19 15 15 130 130 2 0 0 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe Calligraphic Brush Tool) (12 pt Oval ) (1 7 17 45 45 0 0 2 0 0 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe Calligraphic Brush Tool) (20 pt Oval) (1 20 20 20 100 40 80 0 2 1 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe Calligraphic Brush Tool) (25 pt Round ) (1 10 40 100 100 0 0 2 0 0 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe Calligraphic Brush Tool) (50 pt Flat) (1 40 60 0 0 44 44 0 0 0 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe Calligraphic Brush Tool) (6 pt Flat ) (1 4 8 10 10 90 90 2 0 0 0) . %AI8_EndPluginObject %AI5_End_NonPrinting-- %AI5_Begin_NonPrinting Np %AI8_BeginPluginObject (Adobe ArtOnPath Brush Tool) (Arrow) (1 / New Pattern 45/ / / / / 5 0.898039 0 0 / 2 0 1 0 1 0 0 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe ArtOnPath Brush Tool) (Marker) (1 / New Pattern 8/ / / / / 0 0 / 1 1 1 0 1 0 0 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe ArtOnPath Brush Tool) (Paintbrush) (1 / New Pattern 5/ / / / / 1 0.5 0.85 1 0.45 / 0 0 1 0 1 0 0 ) - (0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe ArtOnPath Brush Tool) (Tapered Stroke) (1 / New Pattern 83/ / / / / 1 0 0 0 1 / 1 1 1 0 1 0 0 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe ArtOnPath Brush Tool) (Type) (1 / New Pattern 50/ / / / / 1 0.952941 0.94902 0.196078 0.0745) - (098 / 1 0 1 0 1 0 0 0) . %AI8_EndPluginObject %AI5_End_NonPrinting-- %AI5_Begin_NonPrinting Np %AI8_BeginPluginObject (Adobe PatternOnPath Brush Tool) (Double Lines) (1 / New Pattern 62/ New Pattern 63/ New Pattern 64/ / / 1 1 0.) - (14 0.09 0 / 1 0 1 0 1 0 0 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe PatternOnPath Brush Tool) (Laurel) (1 / New Pattern 65/ New Pattern 42/ New Pattern 67/ / New Patt) - (ern 69/ 1 0 0.55 1 0.3 / 1 0 1 0 1 0 0 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe PatternOnPath Brush Tool) (Rope ) (1 / New Pattern 1/ / / New Pattern 3/ New Pattern 6/ 5 0 0 0 /) - ( 1 0 1 0 1 0 0 0) . %AI8_EndPluginObject %AI5_End_NonPrinting-- %AI5_Begin_NonPrinting Np %AI8_BeginPluginObject (Adobe Scatter Brush Tool) (Dog Tracks) (1 /New Pattern 41/ 1 0 0 0 1 / 0 1 1 0 1 1 0 0 0 0 -90 -90 0 1) - ( 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe Scatter Brush Tool) (Fall Leaf) (1 /New Pattern 34/ 1 0.0745 0.9 0.9019 0.18 / 0 0.602793 1 1 0) - (.1 1 1 -1 1 1 -180 180 1 0 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe Scatter Brush Tool) (Ladybug) (1 /New Pattern 10/ 5 0.898039 0 0 / 0 1 1 0 0.803911 1.2 1 -1.) - (55 1.55 1 -180 180 1 0 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe Scatter Brush Tool) (Push Pin) (1 /New Pattern 36/ 1 0.025 0.1 0.475 0 / 0 1 1 0 0.401676 1 1 ) - (-1.06145 1.06 1 -180 180 1 0 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe Scatter Brush Tool) (Strawberry) (1 /New Pattern 37/ 1 0 0 0 1 / 0 0.803911 1 1 0.803911 1 1 -0.) - (5 0.5 1 -75 75.419 1 0 0) . %AI8_EndPluginObject %AI8_BeginPluginObject (Adobe Scatter Brush Tool) (Twinkle Star ) (1 /New Pattern 2/ 0 1 / 1 0.5 1 1 0.25 1 1 -0.5 0.5 1 0 0 0 0 ) - (0) . %AI8_EndPluginObject %AI5_End_NonPrinting-- %AI5_BeginPalette 0 0 Pb 1 1 1 1 ([Registration]) 0 Xs ([Registration]) Pc 0 0 0 0 k (C=0 M=0 Y=0 K=0) Pc 0 0 0 1 k (C=0 M=0 Y=0 K=100) Pc 0 0.1 1 0 k (C=0 M=10 Y=100 K=0) Pc 0 0.5 0 0 k (C=0 M=50 Y=0 K=0) Pc 0 0.5 1 0 k (C=0 M=50 Y=100 K=0) Pc 1 0.55 1 0 k (C=100 M=55 Y=100 K=0) Pc 1 0.9 0.1 0 k (C=100 M=90 Y=10 K=0) Pc 0.15 1 1 0 k (C=15 M=100 Y=100 K=0) Pc 0.45 0.9 0 0 k (C=45 M=90 Y=0 K=0) Pc 0.5 0.4 0.3 0 k (C=50 M=40 Y=30 K=0) Pc 0.5 0.85 1 0 k (C=50 M=85 Y=100 K=0) Pc 0.75 0.05 1 0 k (C=75 M=5 Y=100 K=0) Pc 0.75 0.9 0 0 k (C=75 M=90 Y=0 K=0) Pc 0.8 0.05 0 0 k (C=80 M=5 Y=0 K=0) Pc Bb 2 (Black, White) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (Black, White) Pc Bb 2 (Chrome) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (Chrome) Pc Bb 2 (Rainbow) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (Rainbow) Pc Bb 0 0 0 0 Bh 2 (Yellow & Orange Radial) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (Yellow & Orange Radial) Pc (Brick) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Brick) Pc (Confetti) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Confetti) Pc (Leaves - Fall ) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Leaves - Fall ) Pc (Stripes) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Stripes) Pc PB %AI5_EndPalette %%EndSetup %AI5_BeginLayer 1 1 1 1 0 0 1 0 79 128 255 0 50 Lb (Layer 1) Ln 0 A 1 Ap 0 R 0 0 0 1 K 0 J 0 j 0.5 w 4 M []0 d 0 XR 1.65039 -30.082 m 1.65039 -107.5005 64.2109 -170.2607 141.3828 -170.2607 c 218.5547 -170.2607 281.1152 -107.5005 281.1152 -30.082 c 281.1152 47.3364 218.5547 110.0967 141.3828 110.0967 c 64.2109 110.0967 1.65039 47.3364 1.65039 -30.082 c s 281.1152 -30.082 m 281.1152 -45.4795 218.5547 -57.9609 141.3828 -57.9609 c 64.2109 -57.9609 1.65039 -45.4795 1.65039 -30.082 c S [3 3 ]0 d 73.9961 -54.5142 m 73.3154 -46.5801 72.9604 -38.416 72.9604 -30.082 c 72.9604 -13.7324 74.3267 1.96338 76.8374 16.5527 c S 0 Ap 0 O 0 0 0 1 k 1 w []0 d 73.5713 -49.5581 m 75.2725 -48.313 l 75.3184 -48.3706 l 74.4067 -51.397 l 74.27 -52.436 74.1333 -53.4751 73.9961 -54.5142 c 73.6846 -53.5137 73.3726 -52.5132 73.061 -51.5127 c 71.6475 -48.6855 l 71.6729 -48.6221 l 73.5713 -49.5581 l f 1 Ap 0 R 0 0 0 1 K 0.5 w [3 3 ]0 d 203.2236 -90.145 m 205.8076 -78.9985 207.6943 -67.043 208.7695 -54.5142 c S 0 Ap 0 O 0 0 0 1 k 1 w []0 d 208.3438 -59.4702 m 206.4561 -60.4072 l 206.4199 -60.3428 l 207.834 -57.5156 l 208.1455 -56.5151 208.457 -55.5146 208.7695 -54.5142 c 208.9063 -55.5532 209.043 -56.5923 209.1797 -57.6313 c 210.0908 -60.6577 l 210.0557 -60.7163 l 208.3438 -59.4702 l f 1 Ap 0 R 0 0 0 1 K 0.5 w [3 3 ]0 d 132.7236 -58.333 m 132.6206 -49.2075 132.5664 -39.7593 132.5664 -30.082 c 132.5664 -6.75684 132.8809 15.2373 133.437 34.5859 c S 0 Ap 0 O 0 0 0 1 k 1 w []0 d 132.5942 -52.9297 m 134.3833 -51.814 l 134.4248 -51.875 l 133.2915 -54.8252 l 133.0776 -55.8511 132.8643 -56.8774 132.6504 -57.9033 c 132.4141 -56.8823 132.1772 -55.8613 131.9404 -54.8403 c 130.7407 -51.9165 l 130.7705 -51.855 l 132.5942 -52.9297 l f 1 Ap 0 R 0 0 0 1 K 0.5 w [3 3 ]0 d 149.041 -123.3916 m 150.0586 -105.3013 150.7847 -82.9971 151.1025 -58.333 c S 0 Ap 0 O 0 0 0 1 k 1 w []0 d 151.0381 -63.3066 m 149.2227 -64.3789 l 149.1831 -64.3169 l 150.3872 -61.3945 l 150.6255 -60.374 150.8638 -59.3535 151.1025 -58.333 c 151.3145 -59.3594 151.5264 -60.3857 151.7383 -61.4121 c 152.8672 -64.3643 l 152.8354 -64.4253 l 151.0381 -63.3066 l f 1 Ap 0 R 0 0 0 1 K 0.5 w [3 3 ]0 d 46.3086 -50.2456 m 48.0527 -67.916 52.0557 -84.521 57.8765 -99.4175 c S 0 Ap 0 O 0 0 0 1 k 1 w []0 d 46.8477 -55.7026 m 45.1621 -56.9697 l 45.1157 -56.9126 l 45.9883 -53.875 l 46.1118 -52.8345 46.2349 -51.7935 46.3589 -50.7529 c 46.6836 -51.749 47.0078 -52.7456 47.3325 -53.7422 c 48.7822 -56.5508 l 48.7578 -56.6147 l 46.8477 -55.7026 l f 1 Ap 0 R 0 0 0 1 K 0.5 w [3 3 ]0 d 213.7168 62.1602 m 228.4912 37.5093 237.4434 5.23926 237.4434 -30.082 c 237.4434 -36.9287 237.1074 -43.6611 236.457 -50.2456 c S 0 Ap 0 O 0 0 0 1 k 1 w []0 d 236.9951 -45.7964 m 238.8955 -44.8833 l 238.9307 -44.9482 l 237.4805 -47.7568 l 237.1563 -48.7534 236.8311 -49.75 236.5068 -50.7461 c 236.3828 -49.7056 236.2598 -48.6646 236.1357 -47.624 c 235.2637 -44.5859 l 235.3008 -44.5283 l 236.9951 -45.7964 l f 1 Ap 0 R 0 0 0 1 K 0.5 w [3 3 ]0 d 27.624 -46.2749 m 27.1348 -40.9619 26.8833 -35.5586 26.8833 -30.082 c 26.8833 1.07373 35.0229 29.856 48.792 53.1289 c S 0 Ap 0 O 0 0 0 1 k 1 w []0 d 27.3008 -41.1309 m 28.9941 -39.875 l 29.0405 -39.9321 l 28.1479 -42.9644 l 28.0181 -44.0044 27.8877 -45.0439 27.7568 -46.084 c 27.439 -45.0854 27.1211 -44.0869 26.8027 -43.0884 c 25.3716 -40.27 l 25.3965 -40.2065 l 27.3008 -41.1309 l f 1 Ap 0 R 0 0 0 1 K 0.5 w [3 3 ]0 d 211.8789 -141.3818 m 235.4023 -118.854 251.5781 -84.9604 255.1416 -46.2749 c S 0 Ap 0 O 0 0 0 1 k 1 w []0 d 254.6855 -51.228 m 252.791 -52.1533 l 252.7559 -52.0889 l 254.1875 -49.2705 l 254.5059 -48.272 254.8232 -47.2734 255.1416 -46.2749 c 255.2725 -47.3145 255.4023 -48.3545 255.5332 -49.3945 c 256.4248 -52.4268 l 256.3887 -52.4849 l 254.6855 -51.228 l f 1 Ap 0 R 0 0 0 1 K 0.5 w [3 3 ]0 d 103.0664 -56.5005 m 105.3403 -96.9932 112.7441 -131.3076 122.894 -151.3486 c S 0 Ap 0 O 0 0 0 1 k 1 w []0 d 103.3457 -61.4668 m 101.6084 -62.6611 l 101.564 -62.6025 l 102.5645 -59.604 l 102.7314 -58.5693 102.8989 -57.5352 103.0664 -56.5005 c 103.3486 -57.5098 103.6309 -58.519 103.9131 -59.5283 c 105.2427 -62.3955 l 105.2158 -62.4585 l 103.3457 -61.4668 l f 1 Ap 0 R 0 0 0 1 K 0.5 w [3 3 ]0 d 160.9014 89.0835 m 172.6255 64.3555 180.4316 20.2324 180.4316 -30.082 c 180.4316 -39dvipsk_TexLive-2009-stripped/testdata/cmex10.pfb0000644000175000017500000005452511372532227021510 0ustar uwabamiuwabami€ü%!PS-AdobeFont-1.1: CMEX10 1.00 %%CreationDate: 1992 Jul 23 21:22:48 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMEX10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMEX10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 161 /parenleftbig put dup 162 /parenrightbig put dup 163 /bracketleftbig put dup 164 /bracketrightbig put dup 165 /floorleftbig put dup 166 /floorrightbig put dup 167 /ceilingleftbig put dup 168 /ceilingrightbig put dup 169 /braceleftbig put dup 170 /bracerightbig put dup 173 /angbracketleftbig put dup 174 /angbracketrightbig put dup 175 /vextendsingle put dup 176 /vextenddouble put dup 177 /slashbig put dup 178 /backslashbig put dup 179 /parenleftBig put dup 180 /parenrightBig put dup 181 /parenleftbigg put dup 182 /parenrightbigg put dup 183 /bracketleftbigg put dup 184 /bracketrightbigg put dup 185 /floorleftbigg put dup 186 /floorrightbigg put dup 187 /ceilingleftbigg put dup 188 /ceilingrightbigg put dup 189 /braceleftbigg put dup 190 /bracerightbigg put dup 191 /angbracketleftbigg put dup 192 /angbracketrightbigg put dup 193 /slashbigg put dup 194 /backslashbigg put dup 195 /parenleftBigg put dup 196 /arrowdblbt put dup 0 /parenleftbig put dup 1 /parenrightbig put dup 2 /bracketleftbig put dup 3 /bracketrightbig put dup 4 /floorleftbig put dup 5 /floorrightbig put dup 6 /ceilingleftbig put dup 7 /ceilingrightbig put dup 8 /braceleftbig put dup 9 /bracerightbig put dup 10 /angbracketleftbig put dup 11 /angbracketrightbig put dup 12 /vextendsingle put dup 13 /vextenddouble put dup 14 /slashbig put dup 15 /backslashbig put dup 16 /parenleftBig put dup 17 /parenrightBig put dup 18 /parenleftbigg put dup 19 /parenrightbigg put dup 20 /bracketleftbigg put dup 21 /bracketrightbigg put dup 22 /floorleftbigg put dup 23 /floorrightbigg put dup 24 /ceilingleftbigg put dup 25 /ceilingrightbigg put dup 26 /braceleftbigg put dup 27 /bracerightbigg put dup 28 /angbracketleftbigg put dup 29 /angbracketrightbigg put dup 30 /slashbigg put dup 31 /backslashbigg put dup 32 /parenleftBigg put dup 33 /parenrightBigg put dup 34 /bracketleftBigg put dup 35 /bracketrightBigg put dup 36 /floorleftBigg put dup 37 /floorrightBigg put dup 38 /ceilingleftBigg put dup 39 /ceilingrightBigg put dup 40 /braceleftBigg put dup 41 /bracerightBigg put dup 42 /angbracketleftBigg put dup 43 /angbracketrightBigg put dup 44 /slashBigg put dup 45 /backslashBigg put dup 46 /slashBig put dup 47 /backslashBig put dup 48 /parenlefttp put dup 49 /parenrighttp put dup 50 /bracketlefttp put dup 51 /bracketrighttp put dup 52 /bracketleftbt put dup 53 /bracketrightbt put dup 54 /bracketleftex put dup 55 /bracketrightex put dup 56 /bracelefttp put dup 57 /bracerighttp put dup 58 /braceleftbt put dup 59 /bracerightbt put dup 60 /braceleftmid put dup 61 /bracerightmid put dup 62 /braceex put dup 63 /arrowvertex put dup 64 /parenleftbt put dup 65 /parenrightbt put dup 66 /parenleftex put dup 67 /parenrightex put dup 68 /angbracketleftBig put dup 69 /angbracketrightBig put dup 70 /unionsqtext put dup 71 /unionsqdisplay put dup 72 /contintegraltext put dup 73 /contintegraldisplay put dup 74 /circledottext put dup 75 /circledotdisplay put dup 76 /circleplustext put dup 77 /circleplusdisplay put dup 78 /circlemultiplytext put dup 79 /circlemultiplydisplay put dup 80 /summationtext put dup 81 /producttext put dup 82 /integraltext put dup 83 /uniontext put dup 84 /intersectiontext put dup 85 /unionmultitext put dup 86 /logicalandtext put dup 87 /logicalortext put dup 88 /summationdisplay put dup 89 /productdisplay put dup 90 /integraldisplay put dup 91 /uniondisplay put dup 92 /intersectiondisplay put dup 93 /unionmultidisplay put dup 94 /logicalanddisplay put dup 95 /logicalordisplay put dup 96 /coproducttext put dup 97 /coproductdisplay put dup 98 /hatwide put dup 99 /hatwider put dup 100 /hatwidest put dup 101 /tildewide put dup 102 /tildewider put dup 103 /tildewidest put dup 104 /bracketleftBig put dup 105 /bracketrightBig put dup 106 /floorleftBig put dup 107 /floorrightBig put dup 108 /ceilingleftBig put dup 109 /ceilingrightBig put dup 110 /braceleftBig put dup 111 /bracerightBig put dup 112 /radicalbig put dup 113 /radicalBig put dup 114 /radicalbigg put dup 115 /radicalBigg put dup 116 /radicalbt put dup 117 /radicalvertex put dup 118 /radicaltp put dup 119 /arrowvertexdbl put dup 120 /arrowtp put dup 121 /arrowbt put dup 122 /bracehtipdownleft put dup 123 /bracehtipdownright put dup 124 /bracehtipupleft put dup 125 /bracehtipupright put dup 126 /arrowdbltp put dup 127 /arrowdblbt put dup 128 /parenleftBigg put dup 160 /space put readonly def /FontBBox{-24 -2960 1454 772}readonly def /UniqueID 5000774 def currentdict end currentfile eexec €/C€4y‚«9BÙ0ài§ H1qú-:X18÷f•UŽzé47ÊÆeÐ…'Á»J*H5¬7xLÚ؄ä8´Õ-9äzä÷’N³ÚôBI‘uº±"nßi*IVsŸˆ(è’ôPÅÕÂ*ȋϾ—Hö$:ô¤FNŽ+änôÅ:™ãͦ/ùÄûs•m«‹fƒÒcw€Œ³P&>€R?Y£ _Ï›ŸÎOúümVIfB«$¬¹8Õ$gÿçÖ/¾Ä· !ïu¾²¸b+ùP,ÇU¯D¿2¸{ŠéóòøÛ÷-«¬¯ºÍ( ¶ªÿ®ýÿm^ÿ&f›¬V( •`ãк8e›N(¿ŒÜÿ~>©ÙZjû¾=ŽiªmSkmʸž 6ÌI,e÷mÜÃÏÏó?Þ=Ÿý÷©0ý]ñ,ìàž;w„ü´¬™qÑ%1~Mm¯ÑÇ•ÅloWFZ…“Aô‰” ßë®§pÄýä̬¾Ð£âëlí”ï0¿ìO€\d#(=$D—__b¬H¸î\y§jNd«/”ˆÛæâÀ ÊCÃÛÐo¦ ´Ýˆâhp°‹Ø€¶}jÎUœ¿™ž˜ójG2 ÄÞ¶ÆÊ™…Í4¶šÏÆò¢µ4ÑÅÆ{<Ý{¸Ù`À@CQ&€@«êÌe¢†4íæ´â ú:©:c,þZWf[0…ùâËŠÁAâ" áy—hw} kg•±w‚ Ó¯ö?ÿ €4G>U†Ž½—¬Ë;ä·«N=Tà© ™—tÏüŒ=¡›ÊÒ¿ðÏ(Ô†ML]Eoµ1uI§Ò¿qäòEo®_`*¢“4ÜιÏ µ?‘‹¥ðf”†”òΟ9ð‡.>ÂËÛ©à]™ªljÛð ~ÆXò€=cÐ û=ß>Ђ5û©ÁîìMífõˆ‰¤<:“»þ=ˆy[Í„˜ÆB,Û0|7dWwj‚IP&&Ê>H¸¤^wìQ4} ]Qì9¨Â»3Kvó´Óˆ6G/){ò͆ ô饤êà¶‘Ë!ãpËÉkŽf¯¶tN´ÿE>8¿ÍóðÛÏ^¾{„«–Ï…±<‰Bî¥*ù“$ÆåæÃ 8^bOE4«`:1'×߈y³ÑXi·w0;OyìæJ† ÿÈÐÌ(§š3Ÿ™ªþŸ×u˜£z¥I”é*àÒPËÊéS¶Ò³Öþ&ý³ÎÀ¦ù5eãÜјGrÍýÝŒI½8 ©P…F²ñösr°Ç7˜Åì˜ý¹4o›f>Õ-—æxùÑÁwÃZ“ƒ;ÝæŒ ç0µe³ID‰AŠâ—€ô7ïæŸ%ŸÌxùÅp^Çýi¬1Ëê:¿¹Ð›ŠEçšSœáj4üϵßwm[*þ$ÛT”š#y, ðçAGy(­Ò/+Ufü¸+¼ ©»Õ¼Öèe,G‚£€?€BîË­ÉqBÜc¬ñ©+±jm# D|º¯M‹ií“çáºïKï€TK”F0sÕ„IIîÉ·&Ö*€ìmŠ›(˜Bwþç\1ðå¦ÿ1“$:®ÉÀN˜@ï ””/hÎJ!ïPÝÓ•òŽ@þ/¬xž ˜)‚ëâpÚ'Lé È„¦Žac3tm ›…éO;~Y7š™Êy€T‹:ާísš˜‰qçxÀÿûJ„=ðÙŠVó&ÆP©Mª”"€ƒ!o‰ÔzµÆÎý{|¹ÍÒ»¦A´xC­ìú0k>K†o˜ØÛ“¦>|lqIî<ßààþ ãZuh¹ Ò£ SÉ[g sŸ'…kúŽJ}P¹B¬ç‰äv7ŸÃ¨dxÃ@HÝDè¯`Ñ ˜†ä… ¿tc‹³ü’‘½·ÄêÆ$÷\òs³Š) 1Ö¶©L´&¤a µ£ñ«2è@Ý 0|ÂË0Ìš;uPËôac­ÖÆ*ØÜœÇ’ÛlEȧ`À »¥ÖÈ‹{G[7¢vŸ–ÈsŒ!]m[ÏÌžµˆNÀ‘{àK™@4ºÚKøÍÛ®ˆ¿Ÿ·ð” ÌPÒHò”YWKˆWã¨Â.1²-()W®¿]¨ÓcàÍ¿‘[¥!X2DŸ&|MOÚ·Á|'XËýSó|×/²ÉgÔs²h6(¾d“‡ˆæFÙEñÍ ú©Íæ]Ð,Y²ÅÑ=H¿Ÿoxð$;E[Ä=ˆ“Ïuk`ÿ[U(5L‹ñÎÁBçb»jÕJò¼¾ûg·[¸"õ:’ôZÔ”Æ*€"ä¯ 1X…{­gIµ>¼›¦Ýª@‹O’=¡ßÛÄQ9:ýG´ Îs+tÍyÆzŽ)°!uN¦¦C‰ Ö E»þ–:ó€wî4ï“óWç{GHóWEìc+5•¥(9œ‡Iˆ/½¾«hO¾"0sS>BŒ(ׯ¢ €_50åI²øè¨éï‰ïÇÇÍâ“Lü¸ Jÿ»’s-Âõ³ÿêý–´p}QöWŸ†½4ŠÔn#8i·%ëLÇa‘§¨"dºa )<=7qLBn¦Žµ _ýM¯0­#« öoV£ ¬Ú”3še2Uÿ6]—¿Zê÷iM6¹Ú`DW—yÚª³ Arö”FA<ב*‰Œ#Hzù”¾¢X ?‰M‰¿¨&×Dý‹1ë,uÎßÚâè™ÿÐPÓj³¦5—Ñœ¼ ˆGß*ü°\)GÒDQ„¬œìêîlkØUJUq†RO–x9à^\9Èd¥Ö—·¸äP„OÊ“¦7‡Bmo<ÿáK§ä`{eÍŒÐ;W4ãi£ý7Ð3‹&Pkð¾ý Æÿ„»- ¦[¬±‰3ˆðûï¦,•ˆÑEA3ñÍèÍìWOÿ MN=ZÂ%๰ a¸Ög±Ÿû8934D†&Ò Äý±»öÓÕà4¤ë¹Âkh;×ã(öá¹gnþñ©¤.Ï8º}òŽBмïÓ½ ÝÔËýO©ä7ûðIxèçáH/Ÿ›B𰽂%È|o6m; §€Êxïiõ7ß«ûqòÔân4ÎÓ>s@@GQ +¬…£Ÿ¢ƒA{h-7ÎËüLN ´Ô”3 ±û‘9B@°?Àr"ܤb;£„£û4AdŒo9úœÈ0i= ¶w"švâèïìl:›Ô×úÐszJ*÷‹¤d¼7Jg¢ ðЊåAiŠ-þ±ˆgËÈ;µ^ì×4²S×N: |V%à _[†¶{#}­GÒ—¯Ä%˜„.ãAÚ¸U‚Œ¡­Kó2e|éш22‹Ÿ¸›HCýäÖ<,;¿µp2à àz¾Ù×͸Äû5•CÓ—¥¿UøßbhË%(€QrXqÀ ¡Buwm•àüa&‡£>­QL&z ù ©¢–-ÿ?ȺiCr&cPèç僇—ÖÎøVl«*âÊéŒZõ®f~v?{º$OlûqÝÍö”aºêpëò³¨â¯•Þ W<³G ¤¨˜&žÓùäÒ¹¢râ纖‚ƒEZ…ÙÆ´°£ïZÞÆØêù.ÙˆµxÔ„¾v¡ÃTZp¡³‡›¤UM~cób—.\نўîÅXS3ÙŸr©Iºa¡JÜ:WÎplp#3Úß&‚lOJ·4O{xs_ˆQа†`ÝcØêØ4ÒÄ™ëÍîgöÔ™3pF¤v$ìë(YDÄwòSÍeâ›X›†ˆc…ßhôbR ÛµÚs‰¡ì É¢Ù Ðá™™­–ã©tÝ­îÄÚÆîC¨ zÙœF½e{mùì»{ ¾ëfÃDbfýÚÄ_Ø#õ[^ü>SM‹£Ô¬ª47èá,0” w  ˉšÆWðrW÷5ed×r½iº\…@c&ÿT#*ð5Óþáîð”¼A¶ë¾Y!¨ÑÅ{#î°ŠQ»Çv{Õ×±{ö6Ï6í¼›\s%¬çX£` š€–Ñ:^j¶§íº’÷Î>)EÓýô¢ÛåO·ï78ÛåFñ/w¼%Ž'úU^>Šá´°[X¾K<¹¢Óï} Fº69õ˜ê\A›ü§o‡[¹ÎÌbÔ¦!4Z,s“CFšAŠ, ×s¶Õl  çt%Ò®#aK)„ZÞ™Ã!ÂÑ++16 vù¡Â‚®¹£ðÌßçÝ2_HsÚ¸.%2 °ÐpaúÜ4~‡¶`›˜xñ‡ºŽ»O>ÄQ;Þ©»AÙÇ´Ê9„W€õhI…{‹4YëЯƒA“lº›>–/oo®Ip˜™ÛtùrXnj#!‚bHÏH‹H#¯*ðç3ƒê‡åÕ:/à‹O(ÿY)ôc\ÍT"E}‡ä!Ciã,$r©;X sr¡(ðM0払 íÖ5˜å÷”󲜲/¸¾Rd¼»YCêô¸¹¶Õ9Cj°h±ûjšœõîŸZåã»‡Ž¥Ý)¾~´äq^`9‰ú0†2}®Rd¥ˆÉÒ•E ô‰_E¨xT ?mð—‘©‹ñµAw%ó2ø9 ´Þ‰ŽŸ,ÿHú4Å„  ]ù*˜3ÌŽŒ=¼PâÞfÌÆ~jÀ©ï›³ª$ìoÂ’çÖ¿ˆžCS\QõkzLúRP<¡ B×¹ÃKèT£žL~¼ã+ê¹—ÛFëÚh¾°Ð¹· Uõ2S¨¬dýMG쎸¤>šÎÚž†Ì„Õ™—ñZ"ƒÛO{—«¼àN·­–Ÿ¢úÚþõ SÊ€¬-y‡ËµÚ—7¡kâG¯tÝÂ.É_ M¡5Ÿsêø½"éQ–[kô‡§ò‘O UuYœ/ÚuÈ‹D27Í( +qÆÐá)ýBYB.£9¾µP=Ö?…®LÓ{A ¥ ýZ¹>„Õ–(ËoÔ]ûCæUÆWíÆ¿™·ÎQ§›.²+‰c£?e6U‘0H2]À,‰1·^ÑSl!sÃ[Zˆ«m9ËŒÅEó»sÈÛ© j?ðWÛßP›ŽXý œmÙ ‚@bèæùó)+!Y®ƒ†mFÄÌ(KWËt¾I#§ã§ÿÐÌ>pì´ã¥”Çê# dã¼,¬n+ˆV:ÞÀ9‚}b¦k(…¡¹Ô¥îª_Œxîy¹ªë¯Öªø*u<ݬéƒXÔ§<_9ûC ?’Yõü|ÛMšt…ñŠ™¦DÚÚ¡‰ßâ0`ja/Çš ÍcjJÍúSH¥þÝÛSÿ€|aCyм}lèÍ|—Cw4¼²Q£ê²~:Ð!=“"šéD bÖ16Êï- ’͆fï (Ziµ¥JKF4Œ€g‰-„IM‚£G^ßEð¹ÃG?Ïgº'“DÆ –UÙ–‹lSI âQŒ3»q¹?=ÍAs‰]å 8ÒíKní½Š*Væˆ'¼’ÒòuˆÝíMO¸KemþQ+ÓiËöbµW5¿q#6Y‡à‡÷öo¹¡ô ‘*WŒ˜5_Iê#Umë‘áÃÓc‡*[ôiùŽ/óò•m:–€¡AJÅÅÒ¶ ¤‚0äæEòI—ŒG‚êr HG…ýäåPlñ¦ÖȈ¼þ5YÏðÙiåYÓ4—emo^1ðìSñZÁwa{„íIt‘æ…ŽÍø&’9¼+£\$:V÷#>·¶ßì þŘþΘ²WÉry×"l{ß©ÉÏ µån&Þ\¢WJákrÜ<µy I5DIyÁþ÷Ü;ÏÕý`×¾½Ko4à”0âh^Á5HÿŠ®4êã?Žè°û™ÌL¾s§SJ–I…úJ‚¤àò±DÒ„Ü_ë>¦NÓ·ºÌ;ü`dotþ 5³Fæ,;p\DËbmÙ¾Š€B4¤í‘GõŸ©Éç œ¾Õî_5ÄRüÞà@³…C 'Ç*>—p×]ÚGÿ¯*1¶êœìâL?'^·€kp‘Ø%mj©a|»Þ(OˆÈ~cÉ”á”za¢—‹"CÛU ›#Ÿ¼Š¯4ÁØã`=Ž\Ñî¹ „ÍÇj¥}ŠA¿NPWíß°ùN—Ï;çÂá„Ü+*lj<{–/ƹ£EQ“!¶Ã|\ ŒÍ«Kî0æze·êþÖóä^ ±ˆ@þžždJOYsˆ›€DË<º3õ›W«*uÿq8t‚?]×qh;&èh‡RæY!ÞR´­I—)x4¶RjJ±E·t•ÝNe¾áã7j-íóåIc~9çó’ è… ydÊÚ"óðþK^÷Z.ÊïØâá½Y€?ˆ½Ýd¤"Kx²NÀKýº¬DNàÌ2 &Ÿÿ²î#¬M|‹*ÈgD_!Ý|Ñ¾Ú¢Þ º ßû·eQ?€a¬¹™½¨ÕÖxË[“Þõ S8ûjÁÒDt÷UÊìVXÇÃNð)‘’TÖ1¦l¨BFN}ÂÈÉ*>¥ãƒ‚­.‹¨/iýŒj¡3êIÊ‚áawØÞ_^B½ð,è,ýXÛ½®êÿU) åvtgâ}µuÄimÒÄ:Ï~œÐ)ÛÙ&—Gvõ¢3-:%\Cù2ìš‚ó—é«¥°gÅ󸳏r¶¦LZF¢²BŸfTRú¥¬ÆjHËN`ñ?¬¨ùð>–ýùÕ‡,î™$£*ß$W¢¡¸‡ZÉÚMÊŽ"Ækpf&0ŠýñÇ sÝŠ©}BLXâ6K¦;£ÌêG—î-‚›¾ë$hŠ~læçcÛ^Å{¿!º”ÓžJŸ„Ø”+¤/—ÜüÊžzØÁOÕm¾– ÐÆSúÙ¸-¹Ñƒ¥)Ëmý(ûçu.#š~¨áCQ²ÏÐOéÐÈäøç˜Oºš…™5RH 'Ѥx÷œ£].¸ös’ùˆ`¸²ÅmBLÀFA(ßy¯ÞEXó“o·ìl¯£>UK°JŽƒI@jþîu¹¼0…µw9hþ–ž¸›':Hì²qê“…»lf¹ýßcsŽÇ@†5‘}€5ÚØpØØG_…ú´3’€+ IŸÂ>±ÚØÚŸãÛâGÂÌUÌ’ŽÕõ_¥'l¢r‰Ð/Íõt{¾Â&úÈy1¼shx|v™Á™- <êª#ÙßÝÛ£Ò‰ªeE gØj.ö$R<@ß\JkÀ ÔJïOÄKÀäÔ¯Dõl Es/ôð´)F’Y ÏÛ¡]t¸¤¤ _ <û'ÿsËú¬¤æEÇtáÞPnãá½UòàkOèÓ“q^ð½Lš¬‚}¨< “¶cWÝ Up¬âÈÌǾçAâÙî+N0æ1§»7”…CK¿«„X(*~.x•¢ý£äJ‹[j• xËDô„ÐV^ç}s«íÜk‰ñý}É,ÇPÊl_‘,þ̯ÈHý“òkSÏñŸb§Œ¹ðÚÄfNàÅVÿ:Ê.=3°0¯Vç—>í&~ `ÆHÀ¸6Èl²ü…«%!%;"Xo(;!6R@Y3Z?E8ìe” Ð\=œJNà\˜eü܂ݥˆ®˜ìC†Õ‘‹O¬m¤ž/SA³t®ò÷-cÛ$‰Ã ÌÂî6ao籎C5Ä­õõêGcßz4ÓôWÎÞæT–z‚)Ûw}Q*âHW¿ì“È~ƒw* €?-ز9(•-Nh›8ý’c”i^ÕÁ‹Éé€ün.@ÕVî¦ íx \Ò%žþÅ[ºïÔ)SÛªüf„Û‘>~ž£Eé 7õè66ó·¬sV %¸Põ–hÕb±kt‹æaöŽ `3Ó«ÿßȼ†Ç@KXIÀÌ%”Y%½Š¾FTk˜¹V©>–õ†Ö`=Š›[7fg$ç¼TÒ¦@ÂŒä“M9Ã×ùÖ7k®oMq$WW=sxÃl¥hØÞŒ£ï€¼– c®!B/­Ï£Z£íW¾4†ŽVи“ù¤aM®o:2áAvI:M­$@ª§Ùms“(Š[T`Ó¡s¿—“·Ôaª Û>¯tâ½qP¾œ ¶I©÷",j:/–0~ïˆob{1øgMÂpe­”¯wµð«ÐåòF°YaI>¼e «oƒ¹_Eîšê¾Íú‚®öoàmÑÛ!æ´× ¨²KðI ²@)M÷HYâ³Ir^áYb4ƾÃ"x$ËÒ §+xünI có¬Âš÷¼ñÅ k ¢ÅtJé'þ#ôƒaîy8ïÀ¯Ü«5pT\Œè™±.ýi÷Âaõ²Ä^לþ0ÍDÝxDÕ•ŸÈ¢IXCuÞñqZžÁ‚.¸”âÕQ•h:àŒ‹CÒr˜næë¥ìì““n¸oòp¡`t°z;âO•p¿µÁˆ"ÏHX>g:Ê`ÙI¿°œÅ»ÿÛ¸ÿ`Ö­“C›¨•.´š²­°/fSÃDC*H ó—o7úÇAÒ¢ Ƴ ;„aW‘qòXˆºárVÓI™ o¢® ŸæmGÿÜ><5šª IÉ=/Uß|­Ò¿ó²ü¢ôšs5S“úlòôÝ´ŽL×@šè,âO˜·Ýßû$Ï3^aZ-pn6ä3ÒÔEEl=¯|Ê,u²cǨe+ ’$`|F¸Ò½±•¦òG$óp½g@Pð†ÑòÊM#–Ÿ›Ä½\¤§Ÿ›ðÐQÕÍ£pÏ”wzz"Ùu#tÝ'CòàSF•4›=¦º+›n¡eÏ®"6Ñ8 „ÿúÊ—ýE:}ÃüLA=Fº_áG1" ÚÆ„bX`$UŸmªzhLARNòËrbè¿Â?"j†QrÙûÞºc÷¬˜Š#¢r§ uɼwƒ°(vY–%>‰Zb‚þ†Ž'øŽ’-‚¶Ø.ÇXÚïˆîÑÐ=RdÇå’ÈO¿Ì©”ƒÑ¤g¬®ñ Eâ{°”ä°‡”(³ÌÁ“+«O}”F ×6¦›²¹…»ðÿj;3 Yº±Ô:ƒ¤&®*ŠÌu¾7)6SâwºÔ 7’ß:ò‰íAžAkÊ~¡©Ÿ ˜ÅGC–ì1“«g7†Dµ1÷ RßÐ[’ÁÌM\7i 2ÌÎ^ ¡;e‰ÍùŸ ÉO;ŒK•5K.4ûF“­Û†šÉïòôi‚8;í‚( &gÏ,kk Fëó¾¿c¤„'"¯FÙ…÷c$7CÓ¸ç‘.‹÷iÛæ] FÀ¼¼ž_J¸a&ÇU¬ýÿÁx›*!%0´kˆ£„ñ' N#  )mOûÙ²ædÑ®ÁéÊ ßR—f(2CœŠ´þ™IâdX,ö`E›l·üNpUœP$`›Ö.VkO9Áø®À›U„wÁj_"nj­z2.KIV&uêö &½ê¸’̔߅~FQLsW4‘ጎ€ #šàIÕ¡Ð-õó&€¼X`ä¾¢±M«œÏùÃw“ë)mLýl©qØ<ööšV.øÿ–§NúèJ»7Úõª´h¨âßí±ÝÁ}¸_PFz\8VÄ10$0` ùaËm£N$(v.ÞëåÜQxÓ4Âhj÷úˆàM ½æ¿³ ¢úguwK+‹OÀä ÝþšÚ”?dq9Uû¼þ«†ípÞCZA6àÓ™›Ï5 -*ëž×–Õ&cïØ ëþ°²¦¹¯@ÕÔ8â¢ÝÂ=¦:Àõ$V7Ÿ›_&­Ûe-¬ÔÃ5)Ø÷"ð×h¤¯N®Ȳ|Ó«®Oã] ó†o•`d‘Ϧ²ƒõ᯺íÏøêí³’œ¤Ÿ[öŽ&÷d;("ÉÆÛxòqèöEþŸ³5=¡} c¶}ì@•É\&BÏ›Ð1·8­›Ð°‘'O{ñóeËŠŠ°¿vÌjøÌê)ý‚×Áªpô€’Ó*©¬aÊÞJñŽ™š¿ø®) ÊTJ&Ò–ÃrÀEe”~ùQã–&tû­_6•ŸâPC—T­ûø«\>jöœS¹Bó!3\ÕèL áî=8U Õ-4 ¶Õí®|¯!…zå^Ê/§ÞÆçØüäþ4Ó¦G#\á‚Fü²…Ì$e§ÌðŽ iÓnê?#Hð1¤B¾ xåc~OÄÊS>rL)°maúV5ÅÅÔDÜÄPîô(H~ÑtC¡•±×Ý%ÁaCõqO?‡TËyæºxiŸñ<÷Û “;–Ódp›)m§Mt3îÕ4Ýpsš¥¿ Ñ»`¤ ÔÆTçµÑTN¢ìÁ…]ZEn“gp•„qíN†Ì—Ó3 ‘zº»`ìåP,þÚÛ~eÄ©#ke”,(ÎûKþp‘ÝÆgÆa {&ã¤/^Uޏ6Ѥ˜8ö•äB¤qÎê«QÈ›ÕqHFŸŽp @sÌÆj¬ë ÕøÓK~¹pªO´MZ_6›f†5λZ¢q¸Y$Ž Ê¸b²D棱ͷ0[WFŒÀ‚§ëìÆ²æ¬—Àw©îëialËŠJü˜¾ÀµXÝò€‹RYØÆéxŽ…¨ñª^NÃxýtma> !ÆŽá à`—9¦¦’ ™$ÐØœBÓšûŠɽmæ#+¬øaôËz†±^i~ÊÀO¢ª¿‰Q‡º9l‚êê …ã8Ø-aô¯‹„Õ­‡YÑtHú'c³_ÚÚ<Ú¾ëx7½fÔ7ŠÒ-q¥Ó¡16 œîSDöáJx.@{CÇ× Ì/ ¾o·<œJùÌénƒôP«£¹…Ým |ꕛ뗖Bί±KRÀä–áé0Ø„È`ËÍÆ‘þPÙu¸&>ÇpA·uê N¹‘´xS™?Y­¼{gÛC(wï<å§ŽÒY¸¼ç’ð˜MÁy0—4—?=g/ÎoRú=åŽ}MEû·7° ój—Hhö¥<Æ$Ê×W8Ž|7òm3_4Ò‰g:qû|Ó–p¯[ 75• ƒngïdíb[~ýŒ~®†XHáž -²ï÷4”«Ìä•ðžñ¡|Mׯ¿•®ð(›,iæw4bëPk9Ey %6&òí"«†|r“†ì¸Ep;ØL‹—–Ÿ·g~1ÆGÅ€³ûrQÁ%‘¬4´‚æÝ|ßöoîDˆ½Ia7A”søG£î諌>ÓÖXL¢q=½ãü‹8mR²„A¶Ü烲0QÍYÒ6ø¤‡?÷_vâüŸ šbg唾¤”ŠëÀVÒ¡Žg~Ã#E^ýåà EŸÍ7ˆÚã0£çÀz¬_ÞìÐsq$qe»ôYR6Ú²­û‚™¸ ))²¦õö¯¸ëc,Ï¢@ ?~ŸÂØ*£¦iá†{IÕÇÜrG¥]Óå<ÝÆÙX+úbÒUÐÎ7à‚†æ\Õz©ÂôÏ„Þ+ÆöQ“ 3ÐÅwÔ$ºÔ"—†Ø› œÛ‹ìÐãhgÁN±ä3ŒÜ|4,Èõ8ÿg×–¹e\´}ƒ¥GTs@òd&tMb Ñw‡˜I½UW&Ãnêô=Œ÷‹ƒª«DCŽ7ìIr Ö?8øýØ-¦^³È½ÃÔúô+¦~ÛøE‘‚’D,*X”°‹2Žûê¦ÉxD¬ Ê´·ÙsÐøw^ä$õ™û€‘…h‘Â`®Pß<óI;SCˆ‹þ‹ñï¾loézý²Œ“™û!¹ Ÿ%}Î{6,3èÎí ‘lÜÓ…Ä€vœKè°8A„y,+P­yÚŠt5Tœu·)3yl ¾õY_‚&  ŸýØCŸàÉäª"Ð4ã£EççPÑQó©-i¿t½½¡Ò¿M/7¥ï#A‹€ê÷Óœí$²€Q·D%î‰#ÁךU|¸£!M.Vùº&*L¬œu !vç ü’š¶°I&/»˜ON—ÖÃë*C§ë‚æŸuW>!$©.¦këåŒuj–[ÄŽ˜ù×ài4 Þ¯Ú—‘99S|ý®+ašŒs²¹xÞskn8CÕŸ2y7yy[§=fÓžu‰¿Úm?,î0ÿꓸ|9¦Q›BGlþÆ8Ì·LAZZ –'ŠÅ¥î‘©ÁæÎ# X#Õ7£Á-ˆöŸk×5(ßq5”`ÕËâ®I‰îÆw™hNŸ¶ÁzïçZÍÌèªBu–YOaÜnýebP¤Ã">’ª/Ft6 æ„p£ê•±²„ [¾b=Y§Õõt@q°iÔSù ÝEg5]¨ûÍ‚3²Ûøj: öÆ ³âD¹0³_àÎ}?x2ؤ %–*WÌìq ÒbÚEK~ù—G#Ë4èèü¬ªhBã‹ÈÀŒy¶V¬£¸ý xt®``ª/¤~4ÓãêÁªM¾Üh„]RNAßDãu‹ƒù*ý O/­ ±{X¢Ýþþ£¥¬6NÚDÌêö €,û~.Œ”"›S²Óž>¢g lúîQ;càXÑŒ1yÀïÌlÛ¼ºZà…VM\jÕýopzLÀª‹»——ûÂ)h`œ¦÷Ç}P»FõFCá«:’K¨‰°ò}x¾EŸYŽºaµ_5lŸÍ¸Vsƒ?³#¶`*kËçˆ+ƒff—‚¼8dÿ¢áš¥Å4ƒa=tVi#€o/”סZ²ÿ$+?jOq¯Ê.ØŠMÑ‚“ÝmÅDym,ÝøÙÍ£sI¦ö÷ÞÆÙ)é$|/OW+`2=JRBfi´Þ³5ÌÀ460rôœº˜ì~±•âqgœð?•G]@<â*c(œà28¶OÒ+êüÃ9l>£æãªs9Ö°¾‹Îï}æÕúûùlbÜUC‹ÔZjÄŇ凎ºö¦(K$M†–ZaÇß®ol*ZÌÕ¡·® „OÝÆgžG.3j¨1(cù*Ù¼E³Ì±§)0Ì™pìÕÃý|™ZÕwVùÒòVôÆÈüÒ¨>°ù-FÈÖ€ä8!QsðS‡ÒiLw.qŽ'ó««•·v»©í[ïWÇçÁp–èFÞ}+}éô”ðF€‘Úÿ6ßó€:Y7±ÈÙ­äi}‹¹¶íè(°ü]Su öt½n‹¬w3å´éñ$;”õÓÿú FøÀ©âkhXpÜLXQ°¨i°%hBñé5kÃÛji†|áTù½ Ê×^–].çnhõs.?°äŽáR6ŒLã+ÞÆá¡…büÐG^)Š¿/‘SN#Z¡î´è`ÅZÞLúñ½jÕå”(WËØør$Zj‘„„5íÍ#áÖÁ•¿$.SS˜ÿÐ.×Ùˆ †¾TÌYŒSïîîÑ( Ö¸ƒÀüÝpÜé¶n˜ýÔ°¼há«*‡m7Ÿ³xÓìñxÚRnº5Fhó„ûGHÅeh’®ê@>žgIµîn6£¦ÿ¦¢aŽ©`«NÍiºoûÞFƒåñLðUœÚ‘pŠudv 0E5¿ñü„—éðê½&;4î.¹}h'+Ž‘4øÊá/SÌ›¡Uœå+×ôdӼ܋œ’Bp¶·~Hp h,˜J§fëDÿƒNåÅ«È.ˆ„-w“¤¾; [¤äÙ!v“7žIFuÀ¨nºžŠ¸7¯Fí‹;¦E…ÜŒ rë^l&HdÁä‚.Z¼º>3±¨ƒ}I@ht)j£'ÏrÝ4 6RTsɈÅþßék,,‰0ˆÚýÕ‹!²†„:iGŠ Qth»†Û6èLÀ™lb”"3¥`F‚Âq.·ðtù~l|ˆpÃé[Q`wH–q\&Û¯¨G#[TuWTi÷±Œ#Bå7}5±^±FЃÉlÚ»eHoc/ZôÍ=åš.ºÔK›…¾6CbC;¨ÀÉÞÁq¶¤v9—`;lίnYM(æ©ð4D´$²ß¤œ^§5¦’Á´«êüo9¦ l ÷ ’”KK¿×ŸjKg´mÍs0ð?rƒè¿* ÞhåcžÒf^k%&6Çrhþb6êgßfî~F“ ^¯åA36!êdÀZzêDÿq…'æoØôãæ†L´5[Îã¸~ÎÒ2]ƒr~°oÔ éÔµ7%X:!é> ¾DLãÍâ{‚àÝTÁÄxösï8±Zÿ<•„+Źˆ¹‘$°cŠ Œl‰LXîpFê«ÒÄñ~ÌþÇe" tÇŸÛ ˜¹lÅ›äyc滘àf·«ë}­ 3Rú™Es@~[þ€­¸â) Šú GN™\nõ£´ÞŪîº%yUÊš¾À-`Q‘ãó9tY¢ñ$q³kÁµ:ª9϶Ÿ¯°Mq×MV|0[ÀÜ…µÜx)ퟨÿÆ]îfW0ѱ+ ÷Ø(ÕGÝ"1IM;õbµõ6N5\€¶òd~Žçs1WZ«7Eu¢’ÙnºË¬8H¥à„*Rèõ%‚̱QvsôÎárF~NðfÁ…7Ý‘ï¯.¤oT³ŒS€î{J˜ÛZ9nØÃd RÂ.(f¡;å輂vûš/ ¢©;Åœœ> ú‚9!%ŠàvØ#,ÅºÝÆyÙÄ(òö?›™óðÍA úžLúM‚v,lå>¦÷¢p,´[n¥c;Àtƒðê2añdEé«çõÁÌ¿þ¶.;Á̉Öá…jØ{„£q„ûLËaÌò>AÌŽ™P×Ûdã¡}CÕ0‹–#pioŽÙzÓKr‰n!ziŸ:Ž·‘^…0ŸºAOŽ+²„žT ‘FÍ‘LÂBò¤ÿiNn`ñ7ú´ í£6è-”JZ¼Éã—œ æT5ù#ˆ¨{,oR1à7„0kÐ3A}|ƒ(‹Ãö·sª-}™™ÈóxÏ}صøÕü£Lñ§Ûdè/€±“ æ1l$ƒJeSw×|nOÐÿÿZ(|d‹¢×…VËÁ–¼˜áBŽžkù¶ìÐDQÜÚáeʸ çs=èóÆZÛV±J¡~Ñy[ç—'ˆ*$øœ[•ù²×.+Ò3²ü ¶å®ï -®ùV„¿oÙÓsoZrÚ~¼ï xÛ.ƒ¸ C´›ÿÝR3§ÔĤ6O¸æÖr#>¼*¢¡Ö&éज़;ü,:™‰ãeuóEº}¼÷Ë 'Z4þ{ŠqU"›I­SmüÞ¯[×Oc¶#…jvBðyν2v Ôå+½—™uDŸXbÎÌwgë‰6Þ÷ÝZz`K~Ñå`WŸß/øë-ÌoUDtç>Ô?¡®™›t¬†jÅm«Nñ)9¹§þðF€—D ƒxº÷døÞ'eêµê d@Ý™ÿ‡ô¼¯ø<agµ O§I¬ʘ3öz;:&KHLú¹$Úð蚪ٵY#fµ?4&n†O©‡òGe÷ÑMcfEkhDŽ‹F´¶ëз”¢)†rð›R‰âºûƒÚ½¦/4Ç#f/@èü yq‹1Zwš€ÌH7~ût6c¸&0í5ìöc6ÀÜöê¦aÙJxcpT2‚Ï}”i\0"Ûu‰Å×µ.ß„µ¡ŸMŽËéRêÉí)*L}3Š"4qš˜{³1¿ê<$`·,¶“ÏåKxpÓ šùRôxÇ÷*Q«êîŠ ×÷$Ûí\¼v³YBXïg#j™rNéýãÊÙ=uР³Gpxo$Mt9¥åψ¢2PAë-{ò›×ð§3P4Õ}3tß@Ô¬nqÑÿÉSBrw¸ïO7Hg³säß‘uÉnªn-¾Žùðùa?7Ké¹dÏ"æ*ÆŠ´—ÊÞí³bÄjr°¼ùÐWDÞ²A¢=MÁ ‰Ezƪùø£ü¢¼(DÞdúõbuzBzgâ %‘–7eÜÛêÜd£rŒMÓúÇùÝÓÄ »?‚æ÷Ä7ß²†å!EH‰÷¤=¤h³¦ˆ5­ÒñfË^_T z;û)½¶ã‚ÍÿšµÝ¨4Æv×-4ÉLÛK)®%É´¶ïtUñÜr8S©Çä… ÏׂÁçOÛ“•m{Þkîµ¢‘Ê<ðKÄ!ß‘+YFˆ5š|¡Þ’Wþ™»žßнîáXõk«?ÐMEЫ¥õ"ÿÝÆ°Ì‚™&Û!÷a±ÂõÍåÀŒñ‡;‡‹e½} ä£e"Zv`ô] ƒÂ-,RXǹЃµÜè»VšóJô“$jÏw‡ÙìU^Ì.>Ÿ, ¹&´z$V O+ºàwéHþ”Ý8¼äÑ‹¤·]î›ÀÀfg0CëîyK`®©<{@ å'ôKä—ˆáç)›-d*(úõÕyÛê‹F¯¿ ßFïðNÛ*ÓÃ9¥¿¾RíÛÕ-P$Šë/æÞ˜ˆ×±¥Î9Ÿ˜LÈ(¨”¤c¤‚^Ü4PgóѰ\ —ª/àð_ pºÝyñˆú–dÒ2x^éüy¸z•õQ‘?”õXIxŸWÇ¡’ æýÔwô=‹–¢ôSWÿ<_ Ú€½Ë8Ø[¬Ò0Èê݈Ùx­í—[%r¹s‹x|-Ý÷?ZO_˜ö¢žŸ )ÊJhí&bVý€Ü†™oNØ+ßÏFú$ì?HÊ6Mí$^Æaùãô ~‰t„ —*ˆV?ÆÜÎü H©¬z"«¶vÚÒhù*sÒ³ ŒÕ»etf ­@e/áŽëÞ¬Œ='W4iô-]áçkt¸.uî<À`&xtðWHrpFœÍY†­¦„rÅ€TãÙÌQö¯¹š«›êË€`ó´‰Ç¤hqet®áƒd>³¿ (Hû%“ûª",îúêýp•žO„‘»ãYéŒoŸøWº¡Àkx&åêaHC*Ã]ÌãXEÃD`º¨âS©×¹—}êíÓbZž‰Rè6~8T Ï#£ôÖ- Bþó¬6#‹PÁ/Ù\'È!÷¥ež„†¡örÞ'%&÷†ï˜,ÓOÔ1™èD ìÀ·@Ámr£ è>E­Çô-Mj J};oMó'ÄÓ–ü¡Û›—‘¸ñ˜yÑÙq4rPãž7£ÿÒXWŠ%f¦\V.¶@ {îAËØc Ú\LÖwߣ‰­fƒsDáßf•ƾR»Z< /÷ àTlƒ¥ $U½m;Ú‹¬µô%?¼ÙÞ53ÃóN;U«þqËGº¶+sB3ƒI ’zóÅLD›×o­|0±+\žaøR:%Z@}Gr·æ^6ñkÖ}ï gNáwéÑñ`øïÜ=€ñ^,nò\‘}ò˜›=S¾eGsMÃóDå ¾]Å`ü÷’… }Õ/²OhÙ|™ð[õÝJŒÈ:åV_ª¸æ0Æ”~¦þ~hjeM0²â…øà¾ îí¬› ¿ÿ”#*ýHó¤aÒ2mðË&¨Sc—îÓáÅ8è£Ì7å $53 b´AÔ[`å{-„£W47Я¿xŽU²<5ó¼í(Ǩ&Bl–\oA!S´žÍÉà2R­îOVÌh¨^šô"{+0Ã&‘b~¥!íÀqKzšqÚåºÇ¥òµá?lj8÷Îè¼ÄÀ¦KXЫrJ*`#Mï#è)âßÁ˜>Ýø@j$ºÎÙÁÝ"•úõëÜD}´{:8d1–ÞÔ¤†.9é´8œÞ}¬Íà+V¾51v?É­·kÕŽn†°ó!ñì™îU§¬æ9¨9q²²ÿ’M¸M”GG·ÈD¥b¨§ ÛM¬ñUõù¿ ÎòMvKzŽOU„`éÒiv‹Ph=]ÊoŒ·&©>\ºTì°ÈKÁ´xÛ¾Ñwtd,×î娉)ª>h ¬6ž_©I'Pè' –‘\ LßùÅ6Èž‰ˆì®öÖह eÏôÕ1Ò²ç7²ÃE¤Z´äàÂòÈ!rƒ­1jf.´poDöŒ›L­^ü½Àl8 YxJ=#U7i-.Ût‚ÖÑÎÀ¨„ó{<_t÷çÆtý ÑXíF8Ç\Ç·ì'Ú´-òñ]+6.Åð”ÃÎ ÚÈs:VŒaYÑ8ófª¢F…0–‘™:;Mpp¥bé¢…Ž |VùùÐdééJÔÏCrûîÆ÷:JffVä2Sé*XÅMª c4°EØŽ;_«_î4ä¦ÝF¶;øº¹¥U£g¶’å¾;BÓ­•’¾vî ÏL fsø´ÿM‚)ÎFnð2z>_ cD&LPE~ДÆ¡Gzµ\²=Ö«Ïgz)\Ü5-C–¢7åQ;Ghð 8=©§£[!³á·•{5'½ƒ¤$Æ‹¸{`ët”®Òb4ëa3‡ó¨]?Ûn¯/”{[ësÿ\™Z¸ˆ×Ù•­Yždd²Ãß!H¤M~{¦ƒ/“dñ]}¼û= ð‹tÒó¾†)ÁÚA"ä’@Êås ·ÅŽsé)ÖÇ$qú(úØŽûw«€aÄ1¹EØ ©Õ?M†2¡aÄPT‹é†keÆeváÈàm«xŸa$³äº 5Xg®ÓÒY‡ô> ðT¡ŠKf„¦l¬é ªV¶S‹íÛx-ÆO”„×mD§ØFÅÛò±¥ö[Âìâ,¾-ããa\!ú¬=\÷¦lM^Ñ…—)ê¤ÿR?N0zH¤«Ÿ1ÅÏ¥Šºù"†¢;¯ßQ·Å;L<Ï>úÝ'«WonÕ} ~†W’C4þ-WÆqþB'ÂÅÖîþ_jñ@œ‰9&ódµ /1áOLKoãàr·½ 0°“­Åý9=òl]ç^3:Ýýt]ðIÁk=n-u0µ|  šálcO5T¢„².ݰãj΀ï{=< ñÚê¥ öh¼e[su—M…Áò¢2²+£¬ÂQƒe(œ+ßxZ¯¯\u·iìÈól-‚àr𵛊N͵_{wöKK˸¶ûZÿ¸n¦×P«¤×J¶{ÍSNä}Ö:0t?ÜÃâ5ôBW.{¡çh-o²ŠâVú¿çHÃÅP sf+_ˆˆ]\|;S†€öf‰‰®ïDk+>´5%T6íÑÃ>-‚VY$º ˆëº› ­™ë¾b²8«$Q1¼ÜoÄFÈ•-b~Šl9;Ûx’WSn`öŸLÛàÂyGùŽa@vœA/SŒñÈžV©X|Î@¸9á¨~¶±,êuή§Z ì@\þ§aàEsE é[‡Ku§¡d›Hžg—¸3I~*}‚>C˜kΉëª:?APo·¸ÝÈ`05¾ooÕuˆ0S‰ˆ˜‘“‚’Ÿ%àãzéès"^EÚAÛ“ZY ˆûôWLFá,Ÿ}h˜bE&ƒméMéTÚ…QÐîÐ.tÞ¸p†¹*1õÆÑq|s—v7Å÷üì HäÜTÖÊ÷Ñ€p*w\‡àŒ# ãÍí¿Áj'jgF.¾!|N¬¢+ëÁë“'uçŒWiØ2#«g"Y#)½iápŽ»«ž©;àóëÙ^|£vÓQsÓQ›>-ZL¤âIøO¬¤lÏ/*e_³_Žÿ(¨!¤"™vx¢¾—7¢-úëQ·î_ CÑ×ÎX0¸µ˜í “ŒÙ@`1ìt`uÕ:d,Ueó—³dV¬›òì½–uW'ƒ1ÎYzÇSŽ1pEHÏ6$Œ;P=Hn uÍ/Èå;"CfBTêGŽ9qä´ñ¢Øá¾ªKüGuò”v¸Jô3.wÞ W~9ÚZpÆ6T'ýe‹°íü»'œšÝÁ ÜÒ›Ç(Ù•‘kï³i&v,ÀqÙ¥B¯ïå®ËzŸStÛ°ë*~¨YlÜjïŽ!¬ÈTRp£ø^‚ã7ï¿Z<Û:Òxšq„¨†ÑY]Ëž¬FBcýò9…zúɶ?yïËš$özMLÄh}¥Œ²âÍBx Δ®4Nç<à@Î3äç:æ ˆÕÂj$ÚñÔÒɰ\²øî°uàÛ;ɽÏ-Ɖä×ÇE¯ùç©Ç‡«g6דæ(™]T`ùç Ц)F#äÿäÉ8ž>JÅLÖæÓ¬‘ÿó§èžæŸ|ÉpÊ㮾ºÙ%Iá–)]¤+-ÀX¾èLñ°*è2,œ¹ö¥!ˆúYèç]"n7“q*Lo$ £†“:ã”Û©‚Žs1[¸s¾ÁSÔI1ö :r…|a·uª,³‘jWÔ„bô|ƶÕ×{s=U=xLÔ¨ÂiÂ<¦üÒ'U½²ÓWù(’’[ dA&o…é'E¥Cç?3üóåØb-eÚ)tÙßhLµ´ÔeF¥ùh3±f¥G÷µõ—ŠLz’4oLf2¡UbùhÍô{Na@[¿`á1íè‡ëÜqt†TÚèÛ#§@ÀA–CWq‘€à­ùAaµd¬¿/ê:}FZ7 >ÅR—À 0p¨{ˆ’ØÛØB9ÊR¶d¥¡ÍÿN,÷Ö1›+ƒ>¥à8ØC#å;½ÁžÆíö˶çgŸÁÒÅ›EêÜ˜ëØŽØ€ 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark €dvipsk_TexLive-2009-stripped/testdata/cmmi10.pfb0000644000175000017500000007313111372532227021473 0ustar uwabamiuwabami€S%!PS-AdobeFont-1.1: CMMI10 1.100 %%CreationDate: 1996 Jul 23 07:53:57 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.100) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMMI10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMMI10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 161 /Gamma put dup 162 /Delta put dup 163 /Theta put dup 164 /Lambda put dup 165 /Xi put dup 166 /Pi put dup 167 /Sigma put dup 168 /Upsilon put dup 169 /Phi put dup 170 /Psi put dup 173 /Omega put dup 174 /alpha put dup 175 /beta put dup 176 /gamma put dup 177 /delta put dup 178 /epsilon1 put dup 179 /zeta put dup 180 /eta put dup 181 /theta put dup 182 /iota put dup 183 /kappa put dup 184 /lambda put dup 185 /mu put dup 186 /nu put dup 187 /xi put dup 188 /pi put dup 189 /rho put dup 190 /sigma put dup 191 /tau put dup 192 /upsilon put dup 193 /phi put dup 194 /chi put dup 195 /psi put dup 196 /tie put dup 0 /Gamma put dup 1 /Delta put dup 2 /Theta put dup 3 /Lambda put dup 4 /Xi put dup 5 /Pi put dup 6 /Sigma put dup 7 /Upsilon put dup 8 /Phi put dup 9 /Psi put dup 10 /Omega put dup 11 /alpha put dup 12 /beta put dup 13 /gamma put dup 14 /delta put dup 15 /epsilon1 put dup 16 /zeta put dup 17 /eta put dup 18 /theta put dup 19 /iota put dup 20 /kappa put dup 21 /lambda put dup 22 /mu put dup 23 /nu put dup 24 /xi put dup 25 /pi put dup 26 /rho put dup 27 /sigma put dup 28 /tau put dup 29 /upsilon put dup 30 /phi put dup 31 /chi put dup 32 /psi put dup 33 /omega put dup 34 /epsilon put dup 35 /theta1 put dup 36 /pi1 put dup 37 /rho1 put dup 38 /sigma1 put dup 39 /phi1 put dup 40 /arrowlefttophalf put dup 41 /arrowleftbothalf put dup 42 /arrowrighttophalf put dup 43 /arrowrightbothalf put dup 44 /arrowhookleft put dup 45 /arrowhookright put dup 46 /triangleright put dup 47 /triangleleft put dup 48 /zerooldstyle put dup 49 /oneoldstyle put dup 50 /twooldstyle put dup 51 /threeoldstyle put dup 52 /fouroldstyle put dup 53 /fiveoldstyle put dup 54 /sixoldstyle put dup 55 /sevenoldstyle put dup 56 /eightoldstyle put dup 57 /nineoldstyle put dup 58 /period put dup 59 /comma put dup 60 /less put dup 61 /slash put dup 62 /greater put dup 63 /star put dup 64 /partialdiff 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 /flat put dup 92 /natural put dup 93 /sharp put dup 94 /slurbelow put dup 95 /slurabove put dup 96 /lscript 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 /dotlessi put dup 124 /dotlessj put dup 125 /weierstrass put dup 126 /vector put dup 127 /tie put dup 128 /psi put dup 160 /space put readonly def /FontBBox{-32 -250 1048 750}readonly def /UniqueID 5087385 def currentdict end currentfile eexec €Ýe€4y‚«9BÙ0ài§ H1r^ƒ vû¡.Hn˜œ˜tµ'ð’W"xp'ôDpÔ„&,6 ßÝß6WS:W»÷0H¿»ü·:e„TAýÈ7­ÙJÈûÒ.>ÈñÔ´»{8"Ìa˜ïçh½ŸÎ³Dnä¨Ü'ÖÍ$…8Nõõ“ÿÚCòÒ °Š¢z²[wM± ¬ýÍ3æŒFSj´'½×ÚSK x­=x“ ¤øÕоýEÛ›ë@Ø—’ø4°‘ ‡:ŒVú{±ºB`C° É]¾Ünl»¼³öu –OŸ(¿þ["êölJƒ„‡è.n`“(H©ï³Fš¶´—gªÛ•ÃßÕŠôË"ìÙóî´š¤L’›fœÃº $Të#u¾b„°&e–K–®‚Ô”.u€'üò<%íZò|çòþ*‚+¶„O $:IÉé3ü!¸À3ÃâºXïSÚ!WÕ$³•ò³z¼¡;Æ¢ô.‚J·äqk m²gû·•¬t%X-òãÜU†4h© B½{U,HøÏX¼!4;Ó¹Z¿¡@ó?7Æó÷‹ ŠQTë|bìY‚gñ>„>d&c“ZȶeØe@ÓÝìã)Àœ^t²}Y,U›Ã¸“p±¼jœˆ‹³%à·B‚ÖðS¥ ¤NÑä3'2«ŒÔc+AÏŸ>Í_á$Ú÷®§ÎŠc{$X"“ Q}÷ºªúiÒÑ}“νGÞ¸T× Þ ´Ü®sŽ'½»nkã‹}¯ø¬ü2Î6st¿ŸÙŒ åºÌÛ„ÙK\:¼’÷ÑŽ¦d¢$ 9ÄkŠêÑvb·»ÿ==š•Õ“v˜W;úÆIsÜ‹ŸhÅ- 1ì¤úç/uSÒvÈ24©ƒ7×À7Àñ¼è¨W;Í—Q\- ø6új2wrxsì+d©+í°“I4¶i*ÞJ ?Ûàp×—÷bšÔ‡Ò¸Ûøš1•l“†JD`ª;̎ƹ·R ªJ.+˜fÌ;îN°Ýhbz—£þaAúñ ,à‘ylT8Û­“ûÐeÑí~‹xyàѾšÁE¹ª‘un¶ë`H#"œ¸Üë>W.È⼕K­Îu5nÈê vÊS>‡Kºê­¸†Î¹t¥-àù¤4€åbeªnäžÌ‰a‚æ ³ }¨Í:&®À;¥ÀÕe&ìÆòÖö‘ØMÉçß0hcþ m«<¼XŒ()-ó÷¤}œN6RÇ/k¿³ô˜<¯YÇØw=ç­sùZ è`´åXð p&Ãè[ŠHøöœ¤Šç• *(’ó8IÏ‘pmÊ_f¸Nþ쭪γ: 2㔥áv(Õ.r_ÀÆž‹Éßߣ+)pum”zŸVƒú:/'•sÀY/ÁškŽÒÐÃY#ô†¦,Šæ [Æ¥}Â#bœ9ö}h›cØB‘ˆâË‚¤àGŸËÜjm,:¦þ¡zukMH`ûrµ ÜÇå2Â¥Ù`Üì·í¹Ï®·çfˆ|›“r~]óHý/QX¢BOD:ŒrüœÙâ΂f}sdè[°Œ½cÌS<°ÑKy=^©’xæ6Ïæ£J¶FDßµ“—Fö|qê2¤?EuƒÓG”àL·¿ÐHìþ‘.¥·/lùAÇŒáýþ#7HÖÛˆÒ|‘³ÈÈÏ ¿3ÿµ ÓYNR¹éo˜T.‰D¸j‹+A½W.ç'±Aó´³ûW`„ðA(òŠ;¥¿˜{Ý:Òxóa]pcLGæÉ$©ÌcJ$Wß9ZÿÖ°Å$hbÌ´nÈÏ•®™ï¥ÞªÜHô3¬âEËP/7ðnù[Mˆ€üâêåâ÷ – pfs‘’6¹^·ã× ®ÖºäòÖ^j±øct_Ï¥z›Åx‹Ñ(†Sšµ×Á9ü¬pCj¾·Õ|‘\:áW\ÇîÜ&)r1¸¥ÎìÓð²‘x+±ÃB½D!ŸJÂñ¨iñDƒT¾TÝYÌŒÈÞ³Ž;H™„]¡<Ëp|Á q[Ï=};Ñ$jDŸém@¼yøy·¯C· ÔˆOuc‘LÚ ’„Ï MFX;ñæ‡ð£e´cçÇ´ópé$°+ y- ´àŽÕ«¼ ñôG)(W©o?sÌËÇ?"<û¼–à•ãIÌrÒ£}Ä oµW‚ƒÇ vþ ,f=2§ð4`ëùáJ‡~àÔ¤;Õ¶s³¶[Û¯v×¾väôš ¨{÷¿î0¼‘©UrU°i.W;|¦“­£èeèLH*±c‘œíî«)è0 ä9Y®/ðð†«Qþ¢ûç%IÄÍ:gLŽì(¯$î1Hvôì·ñaËŸU¢ý†Ä>ƒ–߇=Žý‘AGJ†¸lÀ6X„6£ci3í"ȸÙvÖ&ºvg³;» ÝNáý¢èš?¡…El›–«”\l™§2é­âÜ„m8n‡NÏó˲áÙJA™Æ%]“»šú  }ne‡úô3òw£ ¯o‰ˆ¤Ó/ÆÃàØ¿Æ|¡­{oìJ*™2]ƒËñöXBú=v‚îcZ]Á]è$½¸ê[Çó¼nƒRr(ñtYºDx=ñÝmÀ¾éèê¶ø¹• 9܈ê@q~ÙœU¸«„:¦9¶(›r„êŽi¬xZ¨€fÙóÔ ‡– êà|*¸UV«P®ò»©ivM<´ ÔMZžTâ½Q¸ãŠÔí(Œø‹•g}Æ"‰9ßÃ;wdº€Ã-Fd¶a×@s ÍÜ`T(§ôÎÑøgFn ¢ð]M×$J€3AаØnHÞÌY%§]Ã1G+¿ãÐ$¸^ÏC€s0:¼¦[ƒ ¼WæJ©|$Ok‰è+öR(/ôŠ4ãI}ÌjÝSòLÔ' ãYFõ åfi½^¯»]n­÷ˆÒªõM.,.ÊÍü|‘v[¯f;è8K36‡¡·ÛÍIŒŠ(‡d&³TæµUn¨bÞ<d[u#Z2¢­]¥É¹ÊW=lˆ£ËL¨„`÷1EO&APÞný¹¾æõ¸hÞÜ|UòÄo™ø þ„& M”üYGuO}˜ém“-ÓÑ>x­ò+š6 8ç9[~#9ÀêD_Â,¸Î¦ïFšïº:9¿t'&ᇠ†s.M#¹½šVL«– UƒúåîÚ+S•ãªFþXeҞͼ«M_ÿ#l¨ƒGw°ÑÍ4}î¥ï¢ó‡a%äjóX†~|Ê%ŠÔ¥"#stA"SÔKÛ;û6aü\³ï6TD²Ñ•YA8aÃFŠÐŠ30ØBñd9áÇÌbö9êΛ­ek),Œ?÷/µ<¿ÇùB¥|x©´îØ(þ¶GðÐfaìÓ™{=‡dŒ -;ků”ËÏ¡.¢´ÞB¶§È<Ù{fÇÀîï NÅàc¢KZä4ÅWSæ¨$ZtVi€UÞ2Léî5å´L¤ÖÎÈŽz ±@5Û „´éÙ8ö‚6™,_?v ÐIr€ŒO»:a ^·„Íá(@ÏüÌüV܉7eRôS—ï]@ÕѾç7ÆÃ¤uš]3K¿(F¥qÍן9ùI7…%ìUŠ®cÕjs<Ê8@uÁ§i gRžöå~Ö"t_‡D$ôVø'á]Q.xßöy¡ü×ëE׋þgVðè+j›B)n±šk[ÆF7„ÿQ7" o¸ä_͉¤ üëüí@ôVöðYÆk Þßò d±îê´Œ…©9FéM;š`Ìmš°>ö$Ýò‡£©P…oD³£TÖDh¿‹ù/D2“}ãhý1×¢àq ª³Ôyµ!éxzLj—Á–U qD,ÑYuY$Ã½Î¦Š‡Jœe)Û%c¾ˆ€Wl|LZ &,‰ÿC‘«²ßÏ$PÑ‘½àþIÿEjóØ5^V°r›ýìˆNÌÇÌDô‡fÖÂ󓥉ŠYXy•¢¡Ÿôa‘1õæeÉŒ-o•ÚœG#ç8À8±s³ízÓ “ ¨žeêmôt`a8“~³•¯ýlËUüqøº&PÏ(FZ‘-g¨HÒ›V:v¦[\Ýï4Ñ·mݸ³Ì ‘ „‡¾&ÚÃi]ÝïÞÐ4r(ÐF®0¶F7ÃÛf5æ—I:r®,üa´/‘8öÛ}åÞ… Êë¾°Z)÷Wƒ•˺{Üö®vdî£ÜT¦ (Û´x¡n¶ìIB|öÔ‰F„É#¾“à¨ßÂPÞy‹réUÿ|ÓßÜgå-ñ¬< µ“Ç~Š^oÃÕzò•{O‡j©I9Aó¬œÐ_sÁ07WJ~÷sÒ<1ÁÔh“‡¢Ô9a…D(X§E¹òX†ÈlõJîT’Aµ’’ÈÚo¯Ãö.‚1^Ï7åè0oOÐûKM ½íÒºU¬£ê>°'W¼ß3Ÿ2hB ¨¥ÛõÏr›¬ZèË< Oùk¢ß$!^ñ!Ìôp& ÈÇÄ ešï|dmß^šÎ4¦w =ú;”†Ù—4§êh6Š–õ)6úâ—D4ÑÂCT¬Ž“5ÕÜü'ÔGÌ®K #Ï„„²L”O½„zd±FÐ÷}ëve$~…\`7±ãúª´è +€Xöò`TÑéAB*?“$ÜÐ8íðâIÎ3輎wèDƒ–û›t³îxòF:÷BÌF‚’;üTw§J5:<·(jø×‚ ÌCn×çn\p.-¥ñf”òÎ]WÆÃÝc„ÌBV>[ê C’Ò‡d†ó¸@š*Îg·õ¥ŠkÜ}~9gÖ÷Òò¡e-WŒ CC‹gòæzüïâñ 13 7×D*¨ÑZK ßV®4wYš7 °lPu©ÍÕÙ¦½&³FÙ E ŽY@´KÑHX@ËX[‹‹§ÍEbXü ÈPô4èMòͱÆâ´‡Ü({ÛÞdÏTÉïl=ô¼4RyŠrßL*ê€A\•!d޾[eív;Z9:ª¬'Áàß_ôòB„#7;ÖÕý9Ù™Ó9t bUû"­ì§ ^èøzYï“ëéý 𢾿³t‹9u/Z4ÒbOª¼×êãÔŒšá[TÆ.ëûaÐX§=é`j;è+*7Ñ÷ò,£?Wª¤1‰ûW»Fe‡âxƒ<óÅÔ(¼©žÔ™á³®‰,šº¯Eâœp6ѰïŸüQ9žçç½…ìBNĬ']˜ý.±»’ç‹+8†Šét ÂoAC4ÎôèÏR"ôn¤2åŸü»9[NÊ%ss e²Ô“Ÿ$¡T¶äC4¼ FS`¼('±Nàô(ß^Ÿ6ÒVé§oAÀøGÞcNüœîmßõ(ýéy#ݧx!'²¤K/—¢aû¼8FÌÈc0ùÒ´µWÔ{SgÕ—ä–BWÀš&Þ´LÊmòÒgi»ÍkÄ™³q}mìgP”¬+àóÆ3q¤/'ß '!nÖï†vn5gª«ºKFŸ_!dÎËFûfî¥H a]o›ì1Ïɨ˜ƒcÀ9ºØæ_œuJ8¶C½íY ~KEÚw¶O܃\´ÅË©ÜF§ÉÓXKN¥÷p%}ðK'K83•}(iÕ$3ëÑæ’xÙ=t#À¬šùÞ¶Ë\år9|Œ—Vdz Ô£ün¥À»²E=/ůŒìÅ¿'óÒ.‘ž›Lp½áåZ9F!³f¸Ý›ch9—Î'j(ëyå-³Ž>ülŸ ˜¢­â£üÏe)ó>uJ¢c~á=u½ž6pé¶ß^\{`ÿ.›Â„‰Qy¦µJe°œÎS{¶<ú5²v™Àú2¿®ó5`êñp5¢+$­’ H5Poš°cl~K›Þ{<…¦tet-ZfÝ5¿ %¹Á—;`}™¨:þ+CÐÑ+aÕ$jK.c™Æ&¢!\kG{35]¹—}&ðôàçPïÖhU…'€äpÚá›ålÊÕÚHNІX"½#JÛ£»fsFfÑo$:ˆ¶bo¾8?GÉѬu ŸÃOVô²#Öìì<ÀJdÕlÄ€)Û­\µr?yª5z7v5°i?¾`÷®^H%É9¥=HSÁå¥Õ}ö=ž”ä®Ã“‡¶SKÒ~¨_ ò b~éÏ¿`Î BÆG,z!í_²QtEL{ÅD|jî…èOÓ.¯³HìuÙãñ”,&âòÔ§5¹ƒYNG¾!ẚ&2sí¹IMP¹¹ë_ûß°ˆÌþšcšŽ@[íe1©m3aåàÚ±J.>•ÍJ НÿŒ^ —(d+›¹V‰ÌoëÑ,Ɉµ½+Ôά-†:ï$Þ´Š åÁ‚‹÷ðïÚ‰’öì\?s '/éúĆV u« 0É2š‰"Mâ§OaýIØÏð¥æ–àu¦ ì²Ût eª(§ñW²Xÿ¦JMéÞÈøwëöÎTã(èœ pê<Ÿ^dò–k®²!6Sg¹ZÔz„/¨®Úfå0г~[ŽF¢•n}¯ R1ã?¶Ùc•ÏÄ'·ö†l0½3¿U¤Ä:v•…ÕF™µ¹VunDÝ‚¢å«Ò¹Ó6é3?@‹“wÔ‚XAZx”5êûšNebõ‡V\És_„ œ·ê (4»«“#ŠDŽÜù³móØÝ-ýÅ'‹˜ð¼><5J:9ù©z’9}maR*`5R•ÖÙ ¨×š¢ªq,­¯¿]ʸáƒÔ«„#'Ö ¨ÉqÖ—òôj"#Ü>HÏÁ†Ã]#ÂרOpŸÕpºÔºm[·H5ãTF°S_êÂï§A4t*Ã. M*rn´\#2uÇ4‹ºOiZßÉ3µmeL+!!9áwÓäu£¦þ³æ&¿'¦ÂSs49oPîƒOZ¤®ñOó£½\²]ðbS!/u«ü›ßH fqœ:VÚ»ãê×jØ kzmƒ¯r+¬Áp)?š^Q¿›ARæM¤¯Däý“¤Øê&Eïª5³ bܪƒâõ1Û°*ÿpêI£3Ía›{aK£µšÏØ -MÕÑ›­ì_Í¡‡©ÊÙ‘>p'{cƒ)'p+Ø~«Tµ1°§f#˜X_{gÏ¡ë%.\Gp%×zÔÙ×ÙCõö~õ¿B,©¯JdŽBáÖ©¶ð*埑8[“ð CŠ'«©ÐÑå*ñÊÆ¥lž/çÕÓ{žüK¬…<#Ðu1ø÷‡“$š—„hPHÛ%¯Æºò^š°…]ƒº‡LâŽÕc>²4êEtg¿È‡'¡|WûY^Ô¢êÔÖ‡Ð×ø™ä>:¿¯•DsIÜaî_X i€‘:âîÕ‘…hFpåËž<Ö5M»Qök]¸F“dç =Åñ1yå@ q©¨/ÔýË]ÉNS±PkA멳GAÓµºÇFÆ…'¡å¤]ƦU²ÙøÃüÛÍpDƒ;ï[Žþ®'¡Äß-÷u½º+\†½×TW|ƒc*pÖ0#Ó¨ ÏÏP4Í{ˆ {õɦïUöC®üc½€PZ·9_€›¥½ÈÏ[õkÿM/-¥d%þˆ!¡Bd%Ô½]`lwÂëp¦ì’×Jž\¢¶Åßwj¬H­À܉„?s€bbì³€Y\êü)1ÄìŠkÇZLÖ &±°ÃôÂB<˜ô[v«¶œ¤ä?7âóËã* G¸ú»†dÀ r´¤d8˯tæY}^d‹¢¡[|ã¤Zƒà”¡S~~}à¦uêwùµcB?q²"Óÿõ)d‘rÌæöI:ú}/¼ÈÂi0œBn…pÆ™"U»Œ¨|Ÿ)XäÆ?ÂÍÌ¡£ìù5Ìœ5·÷yè{Q¡mÆ¿ÛLœ¡e>Ѫm¬¸À8'a­aÖã=e¶¹Ž( Eh´í¹é?)w´þ•/ìËÞ`~<`×Mèf,ÆÄö¨å‘Æ-Jx߯~ªÛæthe…h .¹ŒÉ*y?ßU.liV#Í_€³–Þ,K2àáh×eì ÄHš$[eþç.·~“ï‘ P½)½ Ï5‰%KéÙäµXu;4` gòk$ç(tbÏŠ|ËÚ—Ïå Œ6øÏüŠPU\WkD=eVáEA÷ÅïnÎR Fùáºu®±X¨#šµ:¿¾e°Ó˜ŸäÌ"N-UŸ«âÿ(‡´…‚BŒ¹±$ºï¡mFxÀp‹·i/ŽÍMA{ 7Óµ“VØ®À„ÌÐÿ!¥öœüÎ þåFmyD±YŠRê†ýóýü- àNÆÃlü9Í)ßo2ä 0Tƒ3윞֔q©‰6„ˆ6O§ÈØ9’Ó^†…+›ÅækC½¡Ÿ‚"aBoús 2|©,-„ ÉQ:flGa²8>¨i‹W@gBà{Qa·˜9#š I4¡’ŽçuÓÅŸÓ¾ï<çì›öÛÉÛ¿úJÒ5ht}îJþ3ÑŸÒð1ׂäü‰€ÓþÕ¾iqZéE¢m]ïƒÛR7¶%NÈõô+"§p©™„0ßÅN">±òÃÌ!Ì–Œ:œ­/“V™š çmxPúc jv¶´(ð"Á~r ­LçetìÞgMëüú\†”•‹õ™ÏÚÆ²üP@Ã-2B%—¥åƆÂvxÇ=n†öÖQî_¾ãöë² Ï.4ãз¹ì8ò°üxXgW˜ßòÞæí@ ãB7ü×[Ë.j=å×!¢9¿°ËO\XÞcè÷ø¦d|'R6¬´ÁžùPî|Åú{ ½HR³,³‘7Â’‰¤,ºÒ¾ûùHï¥cuÀ2XH†øP0 ;à›åïòÔO»­ !°µ%éëâJC*÷¾U~÷ó}Â߆¯NóSèß×1å³C2 ÃÓ_O¤B?¿Ëî±¼uòz@ôÙõõ(((éT^õO[ÞÙ‘S…亓u”2Yspqç(‡ÒÆH˜›zAƒú>uìñ;ýµÿ­¦ÚÆÞý÷Ëî¨^±Të¬øuŠ[>Þo;Ì Ï ‡ìm!ƒaþ¾W•9åu¦àÍgZ55¡¢EÌæi±Ã>‡™Š•ná6œ«ï…¬ùè½.NC¾½É gÄñ­ P>—%áÄKÜľ/[¢›V·â@©-ÔœvƒFÑ·ã ÞnNP|Á2“š.`„¶k:0¶ôèUÔ‰ñ,šüçqNh†–ƒ¥ÇJV—ÏMK›ÿN˜é»§äçëþk¤9ÎÍ™öÃrÒd¤¢UùšA¢ðMÿylžìÌ ­Cµ.Ž<ýŸ ƒOù2~#ò‘ÇUÓ¦å}/QŸ¤jc³/ù©Œ6@Q}~á¤rÍ €F{(zÿ¼™Ñœë¦úÄñê5šòó/ËÖÂŒ+-ß±Öy˜ˆÚ­ÿªRíþîÚ8óùJyÇ•½·x,w“t©¿+ ·üZ!lÎP¸Doè”éAž>ÆóxϦ­RCO$6‘( —x©»îäð„+ÈΈcmaDé»´4Mê^eq›3/fùÏí¨)ü ïy%>Ñ8É,÷º#ºžá„D‘ìɃ±Á+0·_¶ÍAû¤¬–ÎWÖâp`ˈ¼´ÿ‘2¶8–N.Üðj/”Rîâ^×4»'?Y¿Ÿª-%%c©zß²dÆÂÈW%u4—):Sþ;p#”á›É˜ªåX bºY$  îøƒ¦œ3ÆNR»Äp¸þ5VúÑÙG yèо[½»Ìhžl7Ÿ_d0äM“v–Ï™Æó¢&â~V}”[«I—º*|þMœ,¤ih{.«åŽ0$“2o«Æµ‡eAÄfj&³¶\"Š­ÊÆ¼˜v=75¸›*.=CüLö¬Ñ–ül6«Ú®µýLìPGKêðf„¤›k$YVü)6¦…Qß“S““&6ýõo §—ì=Ìÿ.4 Up(ïZÂw»(ñG÷œÊ\o]×_¥f8úNY …S,}ƒ±"Ü¢ Ÿå7 ORyæùjððÑ€ìRC8èÍ|yÊ“@Àc“gû*÷hóf7Ö}ÆÇÛz5Åg¦nFÇ ‘5}¬(az†ÀJks`„g™›·ÐjRƒ$‚ûASÙ^jÙ©ˆQ7È7¼°Ùò¯KºÖlšÐBe©¿Ô}øn.™ ¢ª8ƒ¸õA¥ŸÌÖÜGƒ^2¬c±n„ÙOZ1R=1P›OÚ?Ëm5ǹÕüPêç+tÅYn'ýúÌ˶g5Æ|2Vg¢¯4ìHðœWK0ÔQ‹ïAæì õ,+&4Kž²U¼ÂKˆDÛR6jH©‘ÃE¨±HJç¬R¿T/•ïÇIªë8Yé±.£^Îg9ÿß÷¦€˜Hþ¦l­°¡/Tf¹tQ»:䎖·é{[¾ZºF ²A =À!÷¤#e ¬l0_¥ʹ#†h{аz¾n€§¤aCÀ]Šœ‰vþ=aÀWfËš¬³p«¸5&”QITÕ8Ê~»Z“¢»”ȵ%kgqÃHâÀˆ÷ƒz|ó|ÑÇLð·‚™Òk^Á®$qûÙ–ú?þaiyWÉP· {Ñtr/¢ë²eBõ&ÓЄ/D“‰óæÎ WÍűήlwv ‹AèDO¹’’ˆD²$ôÿ¾ N´@'à§^tß­ú¯fùWÁ™ŸvŒ¬Šs_ße?X»›¤¯ … Ë2ú»ç‡¹¡3¸®}hÁ´Óá8Ý&¬=þy¨Èy%n[»ÑN{1GŽ=諦“íòÆG”EdNy_F©É_0ˆg¯è= ±Ý¤ÆŽ†4Úž0iJÎn©:ñÑég§­DO›lè™x+4mÜ 7@ûÕ‘@ŠŠOn믵×w/îF{ƒq4HÛÝµÐæH½†6º/Ó yéªä©Žg0”újYz ð·L›¶šô/_ÔÛzh@š9ê\øÔˆ+–襚ržìö9Õ"PxC¦œîgZ¥g…‹Iú£بֽc ~8ÅNˆÌÕHùk"é?x Ìoº×Yvª-–oÓB›ñfâAÅu Fœä'í…ÎjI¨Îú6Ò»‘J.+ä²yM:á\ŽY³kùˆ W]e¸lb ;ÖùX~ë ÏÄŒs“ vaKÛ7¾ôW­~ØÑ .BS4àæoƒð$òûÇd÷éÉÐz5ë’—¼z¥º¥] 4ÝÁZì>¬“Ùš ©ß–BüM\åÌÿA@+"{(£Ko»±ù¯ÜápkêÌVoK;þ÷]s]\’ej§€é÷=g“yTúV¤tÄJ&%k¥9AnÓ½µNÜŠ:ÈaÎVZ3J¼€¸ÛsI•à†´[ ‚i+‚É™gK"rY©ºÝ¨‰øÜ¡Šdî1ÄÈ-²½e>U[u6àÌ,g¸«0ÖÍòòBgI¤|~çuAûqdcøp;kË€õ½n”Ê&TsϕԬî6Ð\²,ƒÜȲ|{kÍ«”<‰™7ŸäVÙ×tWbU—×ï08#ßy¸ãhØdÿ»r%ðO†*±Øâ[PhD9Y;Ƨھ†ày<†×ßT»Æ/Þ~0Äþ]ÉúÉb΀[wT 0õ`HP®¸Zàf  ¥Q7önmü—ë6¡j“©p9ïûóå`Ìë4uÁé°~#þe­ÙöŽ®™„Üàseꔩ#© 3ÄbEl°1» 4µpô%V ²jä¶GrÍÿ04h~<ƶüªet6ÍH‰¬uQñ¹'ñaˆy*¤~©[°^.¾\–é,½Hqûö<Éß-ÐàÂ3”‡X‡Ëòß±|>2áÚ>«î£îœ´a§‰Šþ)`žg­mÕ|‘–B–ûÅðŸM²È1[}2Jt[ßãìy'xÞnÏü.gGfg‘Ŧڄ„Wu1¾Ö4¦÷êPDŽhÙY÷C'›š€Èˆ\þçŸGßk‘–÷Ÿ¤8;†íGTù½6Ŧ?±X(W%M÷õ=øax˜>UŒL~a7TÓÏ&•~ îy_î%ï©Ób=˜Áùn óOg´0kõõ“©nÐtpsÛìÜ›+²uXR[§T@)ݵ‚ŒmŽV;[è>–ž+Ö}¯I¡­úáüSoMì|uܾ gAiϸì-=È_¾‚%¨n«†e. 2 Y˜^I]—^ÿH$•ïÑÙÌÙ1AÓa°ÑÞäŠÜÑÞ.ŽìÖ/é¡bT+Ê×8zÄ¡V!*‚)ï`^é£â¯‹W•xLµvÅÒÈhŠ„ž/·¢1 XÎð8 ¸~9ñÐ'*¹†nwÁÏz¯® šW­ÛÛ m’ñ#ó)>ÊJ°{†ÎZžæPÓÑIV¦‘2²q`w‚ãä£3åà–yŽª%AƒßÅÔ»l7ß½’E˜…ÊÅŸç"±ºp<ÆØ€3þ % ¯ à<Þeû¥-*òÑý@r®@pl–œ·xÌNë?Ï™=­Ê2;¢Æ·/ɲÄg›˜h±š~X@ªv)‡{ ÑYL…[HSç ŠX¢8Ü8ý¾¤~Ã#ƒƒE°º÷,ðï‹ìÇÕ” ý°Í%Œ I€ÃXG,aÈ>ª`U#Å5íó©nišÆb|]«»íÉÐo¦j>RL!ÊàâÛ_’jµ©­íùª†c°&W‘¸þòÌæçÿ÷ÝÛÒ|Ú…£K5H²š]Íq¼ùÙÆ¿®yô÷ÿÔ05%üîGšÏÿžt‹ƒXJâÈÅã9&SÞ~ÇB‘hønF”¨ÉÃZžEÄUW¤’Úë¼0ksß¾]'Þ8.«T§tu§ž8»É¦ sŒ›{új¸Y`óF2Æ2hïfGiÚ4Þ•™sn1ØÃ Æ=‹DuvŠgq£ÁŒp(Á≃ºÛÝȺ¿]/é’YLàðц¤"o‹1#)Ó1‡CâšN¸Ü"ÌË£—ÔQ ÒÐŒ†,f5<¹]Àlgò׃ð‚lèy΋·l“õzdÊ^ù¥cG CÛ:¾ö”dS7(L픨ëgö*ùœÏcîið‘ ªz¯_9©HŒ ;YÌÏd‰0[>'¶ÛÁÃ…°nê¸Ï{µ¦¥½Yz@Ý=¤à‘bŸ-™d¤ÿwQ4¦×wÑå xÛµHÝ"§Å Éüo+„ù¹@g¯ÙV¯Ê=òõqi*~´‹‘t¢Òóõ3ªE|7>×j\ N7/ŒGfÉ<3±BÈphàœ¹:ºé)3ѯ%`‰,P£îH ÈLFÛ®Öb¤½4wN61 ‘¿Ãí¹¿óÐ_¶ pBhÊL'!&¤ÔR2 øz¤Àªµ·~+Sy/b`H½¶FH _Ü%r_¶¡$Óõ!×'0I Í ±[‘éK͸5 ç úþR"œ¨ÑʯÉåøBi Ø­ÑUº#ø-¥šöZ2Šî«¥‘ƒöñ+šÔìšï2í/£¾èÖ³f>™;ÑE¥î_fãέZëÛônÈöÄÏ+1„¥†dĤ´ù›ƒV¡^^ìIX\ç$SÁ—†’0Ýy9`1S¼†õŒv25nQ»bð“¹zNÌ}í×'ð EÆDÅ#ïáYyÄÙõ?§èül63‹ªF7Öïî0ÑÏèß%E sˆØ7d™Vjî§l±‘èÛ_à\‘b/&+õVJÜJ[<ªUiìR3Þ HŒµDS?º¯`,æ~ ù»çàºÚc}&§^€¿]òàf0a†ñ:@ rj›À4ºyR ºaÌ=àg?gyŠªq«;ß•º ÿEÜnˆ•S ‘–+Û9²Ñ›“•8 äØa_Jç¡Ø²j³ ai­© š8ÐŒ‰§Ê&°Ï˜Þò<Œ9wòq¡U Ão{.nªÿŒçp[!{’“ÎSDû£XñÍ\òcäæˆAع‡ÜPLÔóã„æ;ŽÆ,ßÐÇ9ö™®&—vÜx©ørg9Û,!I¿²ùG~"~Ô:‡_å¬èDjˆzÇ}µÉÿïÌÙ$&27\?™ƒCeÇõƒ«à49νg»³3[”<³Ï6! C +ëÐ=ùÆÛ±òUØÁ¼ã´Ó|ŽÇÚywgÆêfÇD÷¥ÕK~z¤ÍbÈV™óáÎÄoÕ» i£—¦ MþÚ‡°•4öYÎáQ7l.{áT„ðõw À}ó0hÂí±Dqœî'ÑöÛØ?%Kâs»©Ìµ³¬£‹¾Zêö#ºVdé á«Â0ôn@\ Ÿ/rEÁ8›éþ¶œ ”]Áenßü«õkŸ«3ß¾x–`dÚ‘Ûw»lo­4àBôÆúH°¹ùkõÏh%?š÷8Ïg¶µSâ?4¶wKñPæ¶°±pÝIJËg†ÎøYù4Ìw6¡p»©†ìC ¹ð«­ù¬ Cóf…–aœvEŠz-þUOƒ—ûI–x3Pe„ Ñí‹ÎYò|tVc5 Né{ ÒNК[¶D6úÔ¼EŠk%›®}¦ýضFé[9Ê,~ž¥±V¤OÏQNùlXeÚm–úˆv2ZŸƒ·\]jͤ*i¬Ú§»0jX°8)vÐÊ<¨QùhÌ[Ù~G# ¨]Yúž>È7)z²u›ù!Êe%s£Z”-©g]àJå"bÙïcTD£~†¨¼qô–gƒx 2ÓøÓuJÒ`e$Àú½WñÐ&vK΋—Î+ ˜ZëZ¡^{:_ €÷4}• ;^F#6ªÿ7QªRŒ,Ò2ï#‚c¿Ó8ÒÜEXêòOV°÷JgJ<²æˆõôé|¹™{8 hW CLüCbº{#ÈÂ'“4ˆP/J¤­«ãMégü¸.aj"yGôÍ&«'b¬ä`Fç?®0•ëWjþ¬o0r3ºÃâ× VÀ°ì¢ó¤L öœ®<äKå± ?“1õõæô©â1+pžs²Fc™8ͬþ$9i·Ågs5˜Žn§¾MhP­’NDØ]I@#ï õyê™§y4ó‰¥ëÌBâk…ä~÷¼Â7]ò!»^”ãÿ¨¥8Ùí2/°—Ÿë &ÔãbDõ°U~ð\=bA¡ï«”?Õ­èp¯uâO%w+¶[&ʧLiÌÓä¬y¨Ð1x¨HC~Z³6?Ôîm#…;Á)ˆSªýœa’y«ttu½C=!† “J²”ÒäX¨ÛÒ ðˆ{›º\MˆVC·¦E餚æ«Ý¿ùDxàYIU×›@y\ŒæÏxѾ D¢Ó,žFßJsB½— •K·xÀ¼¦ìv/Ä"*þðM²‚§4ÿÅÏúP¨¢Yº¡º½¨»Þ•£!«A–ÕŒد‘‰îÞH[<•þ20›­¯RS\þðGwðÁƒHÊßšeSG:©£n®p¬ÕèÀ>™dp;ÝÇpo×ÑKfŽ¡nCŽI5 È€znNå(3ÆÑGZæùkc©‰¶½ÁØ(Âfã×€Ïl)—èEÓô?ŸW ùÃËöˆ ˆSUŽ—Tø»Ù %üÂ’/ÿ4ªû¡‹Ûl2W׺Ž*Ç6ZŸÇm0)2U®%ØÞ =)Vø^¿£QûÍyVÖý§ó¿n4ßA±18­¯W ïg„ÿ¸–8ŽÌ•~ B[gXØ¥˜Ô‡³ðU·g\Vr`"ôPÖÚ¨¶4ºÕ2Š6BL`ž™³€ÛÀXýB;•ì—r¹­"©’'6C,9UÖ’É ÆJróALS}ýêñ½¿w&ŃÝ0:níPÆõ¹LaèŸجg¶s«8åÊfÆrmìÁÀd}aˆPVË“ž+fâ[ëêìä¹}ÓB‹«Hg·ãͽ,h¹çØ‹åmW0…Éßá ëè<ŠAõ‹ç‹“ ’í;˜óT‚6ì÷ÅvO-˜éX£u¥ðÊ]ˆC‰Þ…O‘§f)[ÿŒÝB Ò¥*A užÎØ}êç='¡ÚË ~FXûrKÌï ‹ =[ÜœÝj”co‹{N¶iqèÅ™Õñ[¯ë‰%…ãé5Á\åz¦ÏO,÷›¬ÖtzÄëÉ‹¿aÒb3P7[†U¹æ¡YÞÜ÷£6×èÄØó-ø£žnÔÅ ¿“/Ö{ .­¦<õ_3ìu!ouâž-i77aï¢Çø:ù>O¦l£ìë&¹ž’&gÍ“ýBædøP× ¤Gõÿ¢¸Ãe÷ÞÍçë™/înœŽ2Ù½—qí >•PðæøvìÎ(zØ•­VÜxÑŸÐNØTR—G3±Ã Øk¹)ƒéš .›ëRõí§9¥¢þÎiGa5 äCðMÄ^B1òe„L¼×pï[à[/—CL¯qafƒЊ›M:U²ÞÚô|Õ»Âq§ÑŠpyúƧÔ÷ËO Ô°'àV)ÁNçvcزžÀ ’KAøsäN -÷4:dÈ n¸äú¿ªõÓ‘TüMCŠP.`µ¯C*ǤŒR;BgSOÜå{žó†wX©{¿œÛ™ÜAu‹­I§×€ú öhQµ-F¿¨¹n`¾‰ä¥ç‹ª¸sj»ã8Á(<ÁÒ¼:ù‚*2‰ã\°—¾œ''Kß>Ñžèb‹ÛHýXqYçä„öõ_"æ6qŸ“'6“—ˆ÷9WM°8""¹·ã”Ú!¤ø Z•ÅR&Mú'þÒîø†ÁIÓ’éÜMÝ ÎÈL]åߣÝ_;“üdŸÖa¿ a‹Íªï¿œqÏÁŒh0h·Ë3TÿUU©wOªèƒ(¾ÔÄ™fyé(ZÁ+2u|tèþñíêÌê1]Vß.O,uè 86ÛqÅÑÏU ÷%«HX×<Љ³¦ihÂ`O—Èa§HKèKù]»¤>¦ê,EUt·‚]¼¦C»;wÓÎÈpý0‰žwˆ˜h‘_Í?ž=Yb´ØX¢”eÛúvë¡V°v€¾¾*l!ŠQ¦}@ Î)£ñ•8Ü(ò™q¨°L'¤/Ù­Š‰·ú_15µV|Ž ‡‘.ï?±\c¼’`ì=zi Ò)\ 1Üw°¤hÊK€°j†GC~Öx¯ì( ¿€Çq‚?²:ZõIÏ÷F «.áïÅàŸJ ´«W–p” ðaÇFÝ…`õÁàÇ> ¿ÈS!U¥ù!bð]æcDFîÿ·d¹¿K^i^›M€7ŽÈ@lXŒ>·É¿KÚJ‡‹EGŸayÖúá)êD“L‚榋%IixÓü½Ì|€í„޾Ã÷Ê•Lì‡?N@Jišz˜ Önž+óœ…ÅZ •¹ª~X&ÐÜŽÿ¬—žÖ÷AMÖL¿%¥·ô¶ÿYe}$´s‘’RЧ#Üòîæz¸ŸŒÓì‰Úuódäæá!DË5,VùØÑ€äXaýÒkh +Z†V>­õ6}‹‡nØ÷›Çœ6VšìíH¾d#ˆ†ÃÜØÌ&Â’9!¯WLès£ª¿+ª1ôŒã¼Ä=Ü1߈<©/,Ô§±á6¯pzÒ"øõåìì¤ÉYŸYшÒ,ñ`èt#óàöü#Ýõ™Ñ'|·þj®C(,K¨¢yF(o Åîè<Ƭý:çý˜]"jäÙ!‰dÁaÄ ±GåŠM9¥’¨ûº2Ñ㯹R¿AŒ›¥ì£E{YœI#M°C™ïÏšêz–iKíps®E—Ÿ/†[y–iÜŽÂ*Ü¥’ë&3e‚/I·ÞÏ ¶1zk™5Ô=Íh… !î*zHƒmçôæ=rµršú{®8:ߗ͹,_C ½õ% %¶Å“Ù>šÝëŒáÓVæìBÇýçD†mK‡;rPtuLÜËb@;—@Yjf-¿qD™ Oãã Yx¨Œó‹±µÝôè¼Ï}V6œ­ .ÂV¦Í%5ïa&­ K½QQíÜ8["žy²!!AntFÕÕv0/ùØì@  "»æFÍ€škòàëžzÆd"êÏú“‡f•¸èŽÊœç8Xj ¯\¥‡…råŠÏmR?+óԨ畠䀯Œa»EšÇhÏÒ@ó+ i&S2 U-ƒ%ÐXÂÓ ZCz¬†|µ»lwÿœeÿ©,\ž3ÅLS D‹“ûHµÿ#•äwK£vKnß§îìÛ+—6å×ä'Έw‘óÓ;ýÞ Qli¢¥ÁT æœÅþÌ uæžÙ4¶Y€^‹{ó/½ÄÚõR 'ÕhŸi/iÔఠתLWÞø€OÕ4` ÚGsƒ%uŸ5ÙÜ;䈪WÊøbq>a{÷¿ 4Jt½ñÒm0ÁQ 2|F 'Tu7¢kïþð;fVNf—$ã‰YsÙŒqPð5ûRØÓ(îÛ\…çê{å7>QKψAGÚ VR:•¶?†³{“¯vSmÁ™y¹öÌ…]øúñqx 5/“ªxÃòZ õ®‘‡Ú£°”‡e&¿mh¦PÁ=øDR6ýÎOrZ‚ªTµhöZqi™:>hB4bXV(óDõfq@ùÚö=í ä®9qz®‹VcG%y‡Ô‘†È+‘˜ùMø)-÷ì×o𞬶ÃFX¹ZÄ+}¼ï©2Xh ’žËúÙœàqÃ]ØÓA& 6Ú²{?*Ky¥ C7„Ós$¨ÛÒq@Éàríƒ1ÚÌ1ÏNâ€YqÛèÑzÓwúµE HÆÆ_äèì›KÁÿ§M} Üm ¿ ]³ð+”BÌÁeÍ×0/MßW†]2Ô|Œ&ûÐÔäÞÈ µÖê Ö±všÀU®ˆÀïí¾èKu””SfÏDx!H ÏçPÑ?Š>WOv‡”›R['·\1ýGjüVÄXŠ%ˆÃÅ=ñGú_"^)~^2) ñ1 3»›(•äm»æ„°Œdá¡Y¦‚éQ^˜_SENÃgP}K„¸(2T·¶ Á”Çv÷4Öèƒ|â>Ü”SÒämƽÁé!Ê´ÿx]ÊçµVpoÞÖ«Gc>Åô²á‘åä'Ü2|!²m²¬'%ˆüAüT¡í*Ø+ÃLÈÛBΗ´²NL¯#X IC“CQ€Zš YuéŒË âŒ^ÙŽRÏ_‚?ÔICk Ì ‘;v¦û,ÏLzqL™¶ @Ìþœâk"ÕÜÿ ŽJ¯(ÉÊ?*|²³:r\Enÿ#»b¶˜xøû_e?AÅ–É»|zÍ›Zü@Zçá‚Vv!úuÿ¼þô.ss²±\®v×À{áj#e§‰ÌéˆÊ¹³!Ï–šy%D·ÙP<}0¤Èm†t4I֥ʇ‡šüí¥Ñoæ³R©\}Hlþ”wA-í…, &ãg5#›õ;Úwl‚¹õ`%&óU¬5åß2|"~ÝDäS²}ptàùÙÁŸªIÓÞQ8I‹i´üÿ A—iHLË‘hVßä E % æüôÑYûê‰V{ÕRj(©T%Í©]OÜå”I[eÝ+pG½¬Ü)¦l¬›òïÖˆoØY»%k!ï* >nújaK"+„·æ»ò‚GÏÒÚ’ðEC®ÕPýÄþKßÛžN³,9:/§YϹö®ÌÛLªÛ® ®Oe¼X3Adñ'Þ\Gn¥»£dO/$ðÛ­ÓÑè ¡jdƒdÁ¿†Ð§e#1|}OFÄú1¿†Õ·Ï¦@';»lŠñ>|¯:%ðmÂÔÈõz®Z‹NCy=s'VÓ§¹|wÈc}ì6©QÚÄ&ÁJXß—Òw~{Eï,?5 ä ÅãS¯Tó¬åý@@ì®Fr‚Åzjüi“om!o°²ã³Ý”-± ›¼âNjÓÔkIALáH¯«œ•Žs9fEâÌV$Û€§ @Àë.HèÌgêîxVÝ6º”ŒŠŠë Ã(¼ ¦)þ®ÆApË„iØ)1Á°‹ŽôheŸMn=*›¥ê.×ç"­²f GNWm¡®)ŠºÖfÙÐ<š÷hp}_/)™'ÑKè%„ijӽΠ—ZwÍJFæµEçéx‹ÕßÒ…ùclf=|jód­ßÐ3llÖ¤jCë%-+rß;R L+ ÚOḻÁÊ…îšUû"ë߿ЃYâ•ÓnÈ𢧢b]Òò Òc/ü0äòt¯’ep…zu”-Õ°@upŒ÷‚9Œ6j­j‹=øæk3Ú8 ª`úcf[ˆ:ZJ|çQMݯŽeP‹+oÃA  âévÀzI›ÇX­Úr¶W€Ý0'á×úûÔÏp… ÙݘÙN´¼ Ôß¾¼”uD©oGÆN¢¾£ç9¦[ìÞk,ðq7C¸ôª@®å§&¨µFY….¥g\®P‰uŒwÈ.û¥mó)«FaTðx4z1”8 mN÷øQ‡läÔ6)Ÿ}:¶èl7 (Ö$&¼a_Ö5iãçÿm’bàfy䆇´æXÈmHAµ×N ˆ‚±>ôî® `… Á¿T_Av7ãÏð¹ÿ¬¹â’+@ªr —¥óV=~nM="IçéFé{_¤‘t.ù¿¢Ü}N^á¢_m “ P&/ó‡D× ©¶Û\`ßrTbZѺhÔ·µÃ8²–e?a÷5©Ö Czc—‰“³ê6º*á8§h«±wÓ,ÐÜȲ&˜.û~ÈJƒi»š;ó´¥m”td±÷´ÚF!`Z#lZ!CŸ¶p€£ªdͬíj7Ñý£é^¸ç ³·,§{«6ÖûÿŒæ«n©xÁÈü l1úƒi;çV+…š®:¯Û½ “’XÙÿts²ÔìÖ{€òì9Ë29AâøFk›Ûèá4cðÉ*ÍNµ/ƒ]ˆ (îÊ”Üjn%ìÆ^TŠ, aêzBF_óã«$'™Òcšä²Í#o]>àfeÜ6tÈÍh IÇå¹^MߺÀþÂázwña­)l%é…œâ"AïÆÍÃôÅm"îD‚c9L¡„•®xÔm©þ2„v€XÌZLâiëÓkÐKw(dá6ûaT¥,ZšÖ©ATt‰…sÁá·3²Ëx×:)CgĦ³=̯…5¾«Ú çd >¥¶] û26v °„øÉÁo“§S¯!0Ͷ*·´ @Щ/+ Ú/  ss‹øª²X…{Öעǃy È=I#Gíe/ßTÇ S‘ mÆÒÒx‡,n}Xž@zrïÝÖë×›˜·zO®æîà)…ø¶tÆ¢}É’·èµ:bFW–ÒÁöXiÿsש­°5û7íÿëFvp¡:Cß<áM'zêº83ƒÓd`ˆ ’A8Ȩ7Jñú&TÕ¡¨!I+Ì8øp–Ò@µVyØ"Aò÷“L'ÓñµC¶vÒÒÔ+Â}|1}e.¿À'ÓG%íd.XÁç)”WaÞ'X¤8VÛUPR„QSƒz)Ó¿¨‰Æª»&ÁòuqØ2Í“ 9Ïéh7 .¥£“v—^7‹u.nÿ"”!äš0|ï'¯)jãøUcêЋ+QSd…IòZ«²=—_ÈM¨ö:Ak2¯`…Ýÿ†ÌiJkf‹?8.>:ò#b:eª³ëÐØmf>Æ,ÞPÕJUíöÇä{IÉ’+ªÒÀ˜Í6v÷T˜s¬NÝ<.ŠK®Sd:®9-¬‘öÓ5,-Ô±ˆÅñï^BE~L/-*(.£Òé¼¼ÌmÚCøø˜WEèdaŽd| ±ƒíg%sÅ”|éTýxo †¦.@2z¯wÃõ&ZG¿î/9§>„İ•Ç0­ôSdâñ›î“‹|’#]ž2uA9èÂöLsŠWî[òÆ ÚHo²IÈtÇ#Öç/«|Y|ÍÒ9‹¹Ù‘YâÔ£þ`ZÏoz]J»‘VúºÐ-rt7D‹uæð_²QA,.iŒ¡ý}z€¬lsCÌ|ê#$X$5ðôH¡ØùØDnäCQfÛ Ê;)QFÉlÿÒf¿Ù­*sA6+øÂ¦Á ‘T.L¶øªñÉŽ ¸À0HõFwÏ–^Ú¹(âáb ïÊÏÇw¼vãÉ"œdi•`Ö0ºßû nMæ=•›,D†ÿ]Ç»²,cM‹`wå –ÓÉ›.-¦ÂnX¯ìÜU¨¹AÀE‘@6?þ‰( öL‹ÎMÑ^È¢¬|±ÝXæ{i£K(ÄK°&/ù&uD¦©¬2ݨù|Êü4…¯ ¶‡[5]˜Ë^Eߺý€ýcÝY .¾ )*7Éÿ0Bæ³ÙƒÞ‚Ÿª‹e…„`^îé°Ëì–3±H¶–0¸¤au'°žO~¿Bòk¿>òey0õg¿:ÏUó¾že"sõÛ¦?BAñ³\‘?Ow:Hô+Mµ”ó?ñL ˜œCTÂÛï³*ÆMÈn¨„a÷¹‹ãq©hÀ†[îDèßZzé‹sŒLÏáÊäûûŠPÉÃb„[ûgà2ü37€fÓ¸ñÖ’$æ'<·ª[o>MìtDV%Ë/ZĆÍ; Et¡í·JQÔÒ7ÔeY:~zÁL^Ç«˜u…-ˆáZ¡Å ;½¡\%¿.Œ—gä š‚&¾ §5m (•Z¿ôm¥èá#LŸÐo›TÀ諲¬(r\åG0w¼jJýÉO›ϲ›ßé“¢Ž ]XocÅÑ‹I÷Ÿ–P48sÄOŸišT•#~.t‹>\=ÌÅÚùŽORRðÅ-+Ä9•InHD¦9/˜B(.ØC˜çȆ-”bû­`šŒ…”[u‹ˆãz*A#€¶ÜˆKÎ-Þ¥i"ãÆ´'LÍÊ´´ŽÁ€nE¢q бBû<„ŸL'^ƒ io–g°b’Èøb/èÞRlYY×x BNŽÑØ?Y (Å•V¨K^ä»4ÚÑ*’—LïiQr…Bâ"°Ã+²Ãؤ KúÐà€æ ¦3ÙÞ±CLX§»³4P?¹Ö…m§B_5 xx2S…ÂŒ/ÎjôR®æl‰©Bm%mË’qÆésòýg"±ì!u©À ÑUÿ>æyÿìæˆ›.ô h/¢—. 6"$¡Ä2‚ ‡S¥ ];®Ámñz¶ö/ša)/2òÙÚ4¤_=ÿ7xH¶åÊ­ù8»É-…SUh1oOT˜=rÂ]Mƒh,¥Õ(†~Œælå+iýÉŽ[H¡…¹y´\Ê=™Èp±”a|¡_M¼è£Ô`Øö´J%ýrñi };|/nÙTº^XɵPäûèèŽK Õ›™i»””ÌÀ0Ýùõ†Ø Ýý¤ÖUÙ üÔÏÉ>Ø· þ±³ðRÞÿN¬sNŒ¢´®#çŽR”COXãõØMÁè¯`†nI¬–!µ&ñ´ÝªÅ;’—<¦á;`ÓúÕt¤c¨ is{Ÿ`´Fk”ô¬õ ’§5žÏhƒØ}ÔP7øLßÉ?œð·ØØy^£{Š ýÛƒ}š#'B™_õ^ 8âÌžWá \]nžÉ6Pܨ/T^TÆa3ù8bâ¼R͆Q’§¾Ûq¯1ÂR9ÖLôXƒŸÂÈ êøZñ­~ ¨¼p®±d4^{`C¿YþqÀ²‹ÒÉ<šBn€Ö*Ô‡¦TëðãdÙ›WO,Rw[#š ö/%oD‡ÐwÑÛø7ä piHv1º¡÷­ùùßêÎÚÛH³—·ë*7árŸm1GOOn&DÆ—àýˆ6Þ3~¨±¸Ë·¥¦¾)/Ú?îuL_ŸÌÖäRƒI9/¬†÷æ¿ÉSíSx·Åê ‹*ú4ßc`Ž_Å­þ± ÙüI¬†Déd:ó¤4½ÅFý+ÊÂ5«‡·”?)’…Ðq[L½e5nuôxÅPZð6¾¾6‚à v&‘Ïê®úo“3ÆlÏ\žYÁH)¸S¦`óþ<ʆž:1ЉãsÝ Mv]%û kò©ýˆé‘ÅÛý/½~ÖÃ.QýöEEWÜR×.ìÞð¬-މph d…½@77œ`W»‰¬KghÛ»ûg#)ÓÂ6¤€F‚ÆÏªÝ¬w#Ç„+%°?¡ñ*"‘_4ï}íø—ïJuøã7ô¶&³ZÍC£::Üv])Ž÷¶ÒÁpüÁ¯u©r9ÝÇŠ_­K{u—Uö01±§¦öÉúÔÊ;O6àeã¼>ÎgÉA@xpXªR  Qâ’P¶$ê÷ ž#h˜±âIVéÄ9žØí[õ”võë –¢Ÿ¹(ã^ÏÜ¡¾Ó±-[\¡Õ[²ä­iúÎÇaB·¡”8…8õ¿°(@.RPSô‚¿¡ÖÂI/ÿL|ˆ+b`![R'ž%è×—"*.DsË0¤Hšo,Vjyéý”  á\RÈKLrSXÆgR.xA”ø|T=Ÿw4'W,ïôj¬»NÞìÁ\>Ò[¶Í^±xž<úªÍ•·$Užúî6ÀxŠX|™.m¡âÕìŽê‚¶÷_A7ÚÈx5.’û±`…Ì:Mgm6E$È·,:Õ†~·d/3[N Öµ™WÊ¥ÀŠXàù^ÀÜmuƒr‘§ÁÚÛãù&BÒÍL«yÌ#{Ë3äc¹ äÖ:“cH·Ì7ª {Êdð‰#ö³öÚ0™?ÉD³‹!”µ­„°Ö"%Z7/V¡P½¥tQüõ/=º-ò[Äuž2·±“ Áú%®3Öh_.dQ̬†çA4,¤0…“n#La/“ \’ õÑTæx¿£˜[Îf5«€¸í&0´}">nÑb[üÄ»ÃÉ弦%b` i#ì-§Œ‹U°\­µx\ƒŒÿX/ágÏÿˆ}³¹ 'o]oxéþ¾›X‘Q)Ízå̦ʘ…Ò,÷I”Ѹg]É0AµÚ™³m¥Û0gk_Àó©Š3‘kGàIn=Ûw˜š«vB¡÷~\õê"÷T2Ü·Ý*êoÇ¿ŒŸ |(÷Ó|Á=5†ÔëIÏWš•Ý:Þàhihv9&p…5-ª èù^J~1ÿ ̇76ÒcHRÔeÎìe/¶×uÙ»¹Â =S@ êÄ—øCïÎ^²PÁ(:ëƒs®By(Ì*œ ;·ÎðÛ®Tšè*Òú¶]tcB¬,½ô!½È*kRÆ¿Æ%…˜î—•péåUôu±²g!ùJTb^—ú'%›¹VBSÐXw$ƒ³ZHzÍbKŸ .溽sÓì)£ Ã+òqÏ•³°p1¸d‘’DJ€Ûë-OKàþæ¿~Lêu¡*ÍÂŽâR"­“zi³X0ÊLÖõÍ—oº:è–gÝüwHÛ'6׈Vºîü.AÈ,‚Fm6¢Ð/âhõ„@8·.iRSØà•ÞBˆ¤†ÿC ˆÍOÊG?Œ3èÿœëF=:ÉŽý0ët>% —Nuކßq.E:æˆ#3ñf–¦pÒŠ¦ûšÔlJ†aUÒâçÆE—ïªÜF[ô>ÂÈõV”_Ú¥'£hÅw½XWó\ èÐ@Ä=ñw`§Ù‰=»Ïü†¾Gçæàw6ïF¿÷]åq^Eøî‚0pC0¿]ÙD&\î{©½Ô4¡×ŽA–¤±œt˺5K¼ËÁ= ¾KùPrÆ—bÒ1.cz‘ŠÊÑÕ—èÜ×ÑÌÁô8E:ù÷‚4ÉNo5^IL8âyâŒ`¼ÆÄ$¸Í#¡½w¤ËúÆŸVi®3c¤z(NÈ´a³BeK,$ÕCËðˆ|`Â%@š(ž¦`·"†¬¯øÄemJ69‡]ChW=,ZÕâa•W´òÈŠu2IÂÚRºñ™ôo:V­/{UðÐPž&lJwÆýV(›‚Àè …$,Ž1içTåÊæ«.Àk]‰ã%HYP­¨£¾hrØ9;£,Íj€ÛßT‘žš}¡\¸#ˆ3¬¨Â;€g"õ'z¬«JN€"+56å .[î4HCΦW;Hù’Ò³a±?;½¡æ\X¶×ã“Ãó@ÿ˜µM‚À@vªZCCå7…³¾Ôȧ…“˜‹óC*!z¶7X>(˜%{åê¡„#l—a÷MÇ_üÓQóÄiɈwî­TWöõ)<¹V§c?T¯%2biŸÇžJ9l]2‰ÃÊÐÃÆÍYç”Èá³êØž 6…P‡Ç–E«ø¾iwÔÕ‚F{fÛ`*-¥äodmh^ àRŒGœnjU¹‘à¥S^ bh>Rc¿&˜p–³&þ/òº ªÊw§_ù³Ê÷ÇÈ¥$•l€€L€i f l '€?€!€)€€]€il'€?€!€)€€]€€`\'"?€€!€€-{€-|€`<€`>a€e€a€o€€c€A€o€e€a€.€€,€o€e€u€r€a€A€O€C€G€€Q€y€e€o€r€a€A€€u€X€W€A€V€€Y€t€u€b€y€v€€w€h€€k€e€o€x€d€c€q€v€j€ y€€w€t€C€O€G€U€Q€T€Y€V€€W€€j€€I€ÿûŽ8ÿúã>•ÇÿÿrÿÿŽ8ÿþªªÿþ8ãqÈãŽUVª«ÇãŽÇdvipsk_TexLive-2009-stripped/testdata/ptmr8r.tfm0000644000175000017500000001047011372532227021655 0ustar uwabamiuwabamiNÿ"ΣÐáé TEXBASE1ENCODING UNSPECIFIED  ÀÀÊ Á°,À Ð °FðÀ Àp ÀÂ4 ÊA °ÛÊÊ ÂB Í ÍÅ€,K 6N*PÊÊÀÀÊÀÊʺÊÊz|ŠRhŠSÊTÊÀU°oʰ{°°‡Ê° ° º’°™°¤°º¬Ê³°ÁÍ˰Ðʰâºýº+º*°°)° ½Ê ½´ Â(z'Ê&z%Êz$ À#"À!À ÏÀÀppz p zšzzzppÎÊÎW ,Î,!*ÍÍ À!Úú iÊ v6!6 ° µ Ê izà œÊ©°ÊÍ  ÊÃih 0Ê   ÀÄÅ À½F ÄÃiÊÊÊðððàà ð °Ïðððà ð ð ð à°êú ú ú êêŠÛúúúêð°ÊÊÊʺªÚzÊÊʪÀÀÀ Ê°ÊÊʺªŠœÊÊʪÏϯ¬á@33jsr¦ÌÍõÁSô™š9Nff‡'š?r® §æåZ  Ƨ ¬ M (ô r¦ Sô9N¼fš® ÿþÌÍ­SÄš+jzV™ 3 ʺ js Ù … zàE ÿ÷ãYÿùŒÿùºfÿûvÍÿûÕÿü°&ÿýsÿþ-ÿÿE¦­V › õºvÀþÍþµþ®þ§þ þ™þ‹þ}þoþaþSþEþ+þþ÷þÝþÃþ©þ§þþþ†þ„þƒþþzþvþuþrþpþoþlþkþjþiþbþ]þ\þYþWþNþ6þþy€'€Y€W€V€T€Ÿ€€Ý€Y€W€V€T€A€Ÿ€À€Á€Â€Ã€Ä€Å€€Ý€€`¡'”v€t€ €s€r€'€l€€d€,„'€ €”€ -–€­–'€ €”€ €<«€>»€`¿y€w€v€'€ Y€ W€V€ U€T€ Q€O€G€ C€ Ÿ€ Ç€ ҀӀԀՀր؀ـڀۀ܀€Ý€ U€A€À€Á€€ÀĀŀـڀۀ€Ü€Y€W€V€ A€ Ÿ€À€ Á€ € À Ä€ Å€ €Ý€.€o€,€a€A€À€Á€€ÀÄ€€Å€A€À€Á€€ÀÄ€€Å€y€u€o€e€O€Ò€Ó€Ô€Õ€Ö€€Ø€y€'€Y€W€V€T€Ÿ€€Ý€A€À€Á€€ÀÄ€€Å€Y€X€ W€V€T€ A€Ÿ€À€Á€€ÀĀŀ€Ý€.€ ,€ a€A€À€Á€€ÀÄ€€Å€U€Ù€Ú€Û€€Ü€Y€W€V€U€ T€O€ Ÿ€Ò€ Ó€ Ô€ Õ€ Ö€ Ø€ Ù€ Ú€ Û€ Ü€ €Ý€y€w€u€;€r€.€o€i€-€e€ ,€:€a€O€A€À€Á€€ÀĀŀҀӀԀՀր€Ø€A€ À€ Á€ € À Ä€ €Å€ u€;€.€o€i€-€e€ ,€:€a€ O€ G€A€ À€ Á€ € À Ä€ Å€ Ò€ Ó€ Ô€ Õ€ Ö€ €Ø€ y€u€;€.€o€i€ -€e€,€:€a€O€A€À€Á€€ÀĀŀҀӀԀՀր€Ø€u€ ;€.€o€i€-€ e€,€:€a€O€A€À€Á€€ÀĀŀҀӀԀՀր€Ø€`“`€A€À€Á€€ÀÄ€€Å€w€€v€v€u€€.€ €y€y€x€w€v€€g€il'€i€f€€€a€€a€€y€€v€y€o€€e€€w€y€€v€ y€w€€v€€y€.€-€g€€,€ .€o€e€,€€a€.€o€,€€a€€e€.€€,€A€À€Á€€ÀÄ€€Å€-—€­—u€ ;€.€o€i€-€ e€,€:€a€O€A€À€Á€€ÀĀŀҀӀԀՀր€Ø€-–€­–y€w€v€'€ Y€ W€V€ U€T€ Q€O€G€ C€ Ÿ€ Ç€ ҀӀԀՀր؀ـڀۀ܀€Ý€ y€w€v€'€ Y€ W€V€ U€T€ Q€O€G€ C€ Ÿ€ Ç€ ҀӀԀՀր؀ـڀۀ܀€Ý€ y€w€v€'€ Y€ W€V€ U€T€ Q€O€G€ C€ Ÿ€ Ç€ ҀӀԀՀր؀ـڀۀ܀€Ý€ y€w€v€'€ Y€ W€V€ U€T€ Q€O€G€ C€ Ÿ€ Ç€ ҀӀԀՀր؀ـڀۀ܀€Ý€ y€w€v€'€ Y€ W€V€ U€T€ Q€O€G€ C€ Ÿ€ Ç€ ҀӀԀՀր؀ـڀۀ܀€Ý€ y€w€v€'€ Y€ W€V€ U€T€ Q€O€G€ C€ Ÿ€ Ç€ ҀӀԀՀր؀ـڀۀ܀€Ý€ Y€X€ W€V€T€ A€Ÿ€À€Á€€ÀĀŀ€Ý€Y€X€ W€V€T€ A€Ÿ€À€Á€€ÀĀŀ€Ý€Y€X€ W€V€T€ A€Ÿ€À€Á€€ÀĀŀ€Ý€Y€X€ W€V€T€ A€Ÿ€À€Á€€ÀĀŀ€Ý€Y€X€ W€V€T€ A€Ÿ€À€Á€€ÀĀŀ€Ý€Y€X€ W€V€T€ A€Ÿ€À€Á€€ÀĀŀ€Ý€A€ À€ Á€ € À Ä€ €Å€ A€ À€ Á€ € À Ä€ €Å€ A€ À€ Á€ € À Ä€ €Å€ A€ À€ Á€ € À Ä€ €Å€ u€ ;€.€o€i€-€ e€,€:€a€O€A€À€Á€€ÀĀŀҀӀԀՀր€Ø€€y€ÿÿÀÿþ‡3ÿþffÿþÐæÿþgÿÿ…&ÿÿ33ÿÿ¶Mÿÿ× ÿþáMÿþ9YÿþQóÿý× ÿÿ\3ÿÿp¦ÿþ¸Yÿÿšÿÿ ?ÿÿ™šÿþõÍÿÿG³ÿþƒÿþÌÍÿýï¦ÿþÕÿÿhsÿþ€ÿþ=sÿÿ®á@ÿÿëŒffõÁ33õÁdvipsk_TexLive-2009-stripped/testdata/cmtt10.tfm0000644000175000017500000000140011372532227021522 0ustar uwabamiuwabamiÀ ß껀`¿y€w€v€u€'€Y€W€ V€ U€T€Q€O€G€C€Ÿ€Ç€Ò€Ó€Ô€Õ€Ö€Ø€Ù€Ú€Û€Ü€€Ý€U€A€ À€ Á€ € À Ä€ Å€ Ù€Ú€Û€€Ü€Y€W€V€A€Ÿ€À€Á€€ÀĀŀ€Ý€r€.€o€ i€e€,€a€A€À€Á€€ÀÄ€€Å€u€.€ o€ e€ ,€ a€A€À€Á€€ÀÄ€€Å€y€u€o€e€O€Ò€Ó€Ô€Õ€Ö€€Ø€y€'€Y€W€V€T€Ÿ€€Ý€A€À€Á€€ÀÄ€€Å€Y€X€W€V€T€A€Ÿ€À€Á€€ÀĀŀ€Ý€.€o€e€,€a€A€À€Á€€ÀÄ€€Å€U€Ù€Ú€Û€€Ü€Y€W€V€U€O€Ÿ€Ò€Ó€Ô€Õ€Ö€Ø€Ù€Ú€Û€Ü€€Ý€y€w€u€;€r€.€o€i€-€e€,€:€a€O€A€À€Á€€ÀĀŀҀӀԀՀր€Ø€.€ ,€ A€À€Á€€ÀÄ€€Å€u€;€.€o€ i€-€e€ ,€:€a€ O€A€À€Á€€ÀĀŀҀӀԀՀր€Ø€y€u€;€.€o€i€-€e€,€:€a€O€ A€À€Á€€ÀĀŀҀ Ó€ Ô€ Õ€ Ö€ €Ø€ u€;€.€o€i€-€e€,€:€a€O€A€À€Á€€ÀĀŀҀӀԀՀր€Ø€`“€`€ €g€u€€.€k€€h€y€x€w€v€.€g€€,€il'€.€i€f€€€,€.€g€e€€,€y€o€€e€€v€v€€g€s€q€.€ o€-€g€e€d€,€ c€a€€ç€.€€,€.€€,€.€€,€-—€­—u€;€.€o€i€-€e€,€:€a€O€A€À€Á€€ÀĀŀҀӀԀՀր€Ø€-–€­–y€w€v€u€'€Y€W€ V€ U€T€Q€O€G€C€Ÿ€Ç€Ò€Ó€Ô€Õ€Ö€Ø€Ù€Ú€Û€Ü€€Ý€y€w€v€u€'€Y€W€ V€ U€T€Q€O€G€C€Ÿ€Ç€Ò€Ó€Ô€Õ€Ö€Ø€Ù€Ú€Û€Ü€€Ý€y€w€v€u€'€Y€W€ V€ U€T€Q€O€G€C€Ÿ€Ç€Ò€Ó€Ô€Õ€Ö€Ø€Ù€Ú€Û€Ü€€Ý€y€w€v€u€'€Y€W€ V€ U€T€Q€O€G€C€Ÿ€Ç€Ò€Ó€Ô€Õ€Ö€Ø€Ù€Ú€Û€Ü€€Ý€y€w€v€u€'€Y€W€ V€ U€T€Q€O€G€C€Ÿ€Ç€Ò€Ó€Ô€Õ€Ö€Ø€Ù€Ú€Û€Ü€€Ý€y€w€v€u€'€Y€W€ V€ U€T€Q€O€G€C€Ÿ€Ç€Ò€Ó€Ô€Õ€Ö€Ø€Ù€Ú€Û€Ü€€Ý€Y€X€W€V€T€A€Ÿ€À€Á€€ÀĀŀ€Ý€Y€X€W€V€T€A€Ÿ€À€Á€€ÀĀŀ€Ý€Y€X€W€V€T€A€Ÿ€À€Á€€ÀĀŀ€Ý€Y€X€W€V€T€A€Ÿ€À€Á€€ÀĀŀ€Ý€Y€X€W€V€T€A€Ÿ€À€Á€€ÀĀŀ€Ý€Y€X€W€V€T€A€Ÿ€À€Á€€ÀĀŀ€Ý€.€ ,€ A€À€Á€€ÀÄ€€Å€.€ ,€ A€À€Á€€ÀÄ€€Å€.€ ,€ A€À€Á€€ÀÄ€€Å€.€ ,€ A€À€Á€€ÀÄ€€Å€u€;€.€o€i€-€e€,€:€a€O€A€À€Á€€ÀĀŀҀӀԀՀր€Ø€k€€h€ÿÿ…&ÿÿhsÿÿ®ÿÿÀÿþÌÍÿÿ\3ÿÿp¦ÿÿ¶Mÿÿ× ÿþ9Yÿÿ™šÿýšÿþzæÿþQóÿÿ33ÿý× ÿÿG³ÿþ)ÿÿ‘sÿþ¸YÿþgÿþÐæÿþõÍÿþ‡3ÿýï¦ÿÿ ?ÿþáMÿÿšxÍn˜ffõÁMõÁdvipsk_TexLive-2009-stripped/testdata/dvipstst.xdv0000644000175000017500000001002011372532227022303 0ustar uwabamiuwabami÷ƒ’À;è TeX output 1998.01.01:1040‹ÿÿÿÿŸÉÌ)ŸòŽ¥(é7‘ÉÌ) ü×Éïpapersize=210mm,297mm¡ üÝɉ1_' é7„é7 ýÎŒ‘~œæó2¼˜s ptmrÝD‘ÿ33VIPS:–A“T‘üª|ŸÿEŽ‘bÎX“Dri‘ÿ€vš³2er“F˜or“PostScriptޤ €Ÿ>Û›’ù¯”ó3´CÌ/d ptmriÞgŽŸnè‘ùê¯ïð" 0 36 translate .05 .099 .95 { 27.4 0 translate gsave 0 0 moveto dup 90 mul rotate -10 -10 rmoveto 20 0 rlineto 0 20 rlineto -20 0 rlineto closepath gsave dup setgray fill grestore 1 exch sub setgray stroke grestore 27.4 0 translate } for Ž¡ŸšCŸëd’š†xóú±u cmex10½vŽŸ™ž’š†xuޤ’š†xuŽ¡’š†xuŽ¡’š†xuŽ¡’š†xuŽ¡’š†xuŽ¡’š†xuŽ¡’š†xtŽŽ’¥³Ÿëd‰feåÃýŸ›ùŸï‡hvŽŸ™žuޤuŽ¡uŽ¡uŽ¡uŽ¡uŽ¡tŽŽ‘ Ž;Ÿï‡h‰feÛ5Ÿx˜Ÿù<$‘Pü`ó  b> cmmi10±a–ÇóKñ`y cmr10«=‘þUXó !",š cmsy10·)“±b“·ŽŽŽ‘ãŽ!“±cŽ‘33Ÿw‰feØÏ\Ÿ,$öŸÜ«the–Ó¯phase“of“the“moGon“mš¸ãultiplied“b˜y“the“n˜um˜bGerޤ of–¢[angels“that“can“dance“on“the“head“of“a“pin“whileŽ¡the–ricš¸ãh“man“threads“the“needle“divided“b˜y“±‘ph«orŽ¡some–UUother“transcendenš¸ãtal“n˜um˜bGerŽŽŽŽŽŽŽŽŽ Üåè‘ œï6PSfile=mtest.ps llx=18 lly=18 urx=577 ury=814 rwi=2796ŽŽŽ þr},’6ÐËT‘ÿ*ªo–gÖrun“this“test,‘¬vremo•¸ãv“e–gÖa“ le“called“m¸ãtest.ps“if“itޤ ’,ÐËexists.‘®Then,› run–¾ÅT‘þU>Ÿ'EŽ‘ãxX“o•¸ãv“er–¾Åtest.tex,˜run“dvips“o•¸ãv“erŽ¡’,ÐËtest.dvi,‘¢ saš¸ãving–u7the“output“in“a“ le“test.ps.‘'Cop˜y“test.psŽ¡’,ÐËto–,+mš¸ãtest.ps.‘öJRun“dvips“o˜v˜er“test.dvi“again,‘aáthis“timeŽ¡’,ÐËprinš¸ãting–cÁor“sa˜ving“the“output,‘”as“y˜ou“c˜hoGose.‘!A(IncludingŽ¡’,ÐËthe–é{došGcumen¸ãt“to˜o“manš¸ãy“times“inside“itself“will“o˜v˜er o˜wŽ¡’,ÐËthe–UUvirtual“memory“capacities“of“most“prin¸ãters.)Ž©€‘’6ÐËSome–ègthings“to“c•¸ãhec“k–ègon“this“page.‘*ýFirst,‘ +the“largeŽ¡’,ÐËrules–ø˜surrounding“the“page“should“bGe“exactly“one“quar-Ž¡’,ÐËter–~Wincš¸ãh“from“eac˜h“bGorder“(assuming“a“8.5“b˜y“11“page;Ž¡’,ÐËfor–ˆÚan“a4“page,‘±Àc¸ãhange“the“óßê cmmi10óKñ`y cmr10ù;ßßßßßßßdvipsk_TexLive-2009-stripped/testdata/ptmri.vf0000644000175000017500000000301011372532227021371 0ustar uwabamiuwabami÷ʇCreated by afm2tfm /export/disk05/tex_play/texlive/share/texmf/fonts/afm/adobe/times/ptmri8a.afm -u -p 8r.enc -t dvips.enc -v ptmri.vpl´CÌ/ ó ptmri8r l‹9X€¡€¿r°SøSø€´SøSø Sø€¯Sø Sø€¸€ß ¬€æ ¬€œ€ø9X€Æ €Œ P€Ø  !Sø!"¸R"##$$% Sø%& r°&'Sø'(Sø()Sø)**+ ÌÍ+,,-Sø€­../r°/00112233445566778899:Sø:;Sø;< ÌÍ<= ÌÍ=> ÌÍ>??@¸R@A ƨAB ƨBC ¬CD PDE ƨEF ƨFG PGH PHISøIJ JK ¬KLå`LM SøMN ¬NO POP ƨPQ PQR ƨRSSTå`TU PUV ƨVW SøWX ƨXYå`YZå`Z[9X[\r°\]9X]^Sø€ˆ__`Sø`aabbc cdde efr°fgghhir°ijr°jk klr°lm Pmnnooppqqr9Xrs9Xstr°tuuv vw ¬wx xy yz9Xz{ff{|ff|}ff}~Sø€˜Sø€¨€Àƒ^§ð~‚ ¬€ÇƒSø€Í„Sø€Î…€ã† €ë‡ €èˆ9X€š‰9XŠ P€Ð’€Š˜å`€Ÿšå`¢€¢£€£¤¬¥€¥¦€ƒ§€§¨€¤© (ö€©ªå`€“«€«¬Sø€‹­Sø€›®¯°ff€°±€–²€†³€‡´€·¶^5€¶·™š€•¸Sø€‚¹å`€„ºå`€”»€»¼9X€…½€‰À ƨ€ÀÁ ƨ€Á ƨ€Âà ƨ€ÃÄ Æ¨€ÄŠƨ€ÅÇSøÈ ƨ€ÈÉ Æ¨€ÉÊ Æ¨€ÊË Æ¨€ËÌSø€ÌÍSøÎSøÏSø€ÏÐ9X€—Ñ ¬€ÑÒ P€ÒÓ P€ÓÔ P€ÔÕ P€ÕÖ P€ÖÙ P€ÙÚ P€ÚÛ P€ÛÜ P€ÜÝå`€ÝÞ Æ¨€Þà€àá€áâ€âãj€ªä€äå€åç €çèå`é €éê €êëõÀºìr°€ìír°€íîr°€îïr°€ïñ€ñò€òó€óô€ôõ€õö€öør°ù€ùú€úû€ûü€üý €ýþ€þÿ €ÿødvipsk_TexLive-2009-stripped/testdata/8r.enc0000644000175000017500000001033211372532227020726 0ustar uwabamiuwabami% @@psencodingfile@{ % author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry", % version = "0.6", % date = "1 July 1998", % filename = "8r.enc", % email = "tex-fonts@@tug.org", % docstring = "Encoding for TrueType or Type 1 fonts % to be used with TeX." % @} % % Idea is to have all the characters normally included in Type 1 fonts % available for typesetting. This is effectively the characters in Adobe % Standard Encoding + ISO Latin 1 + extra characters from Lucida. % % Character code assignments were made as follows: % % (1) the Windows ANSI characters are almost all in their Windows ANSI % positions, because some Windows users cannot easily reencode the % fonts, and it makes no difference on other systems. The only Windows % ANSI characters not available are those that make no sense for % typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen % (173). quotesingle and grave are moved just because it's such an % irritation not having them in TeX positions. % % (2) Remaining characters are assigned arbitrarily to the lower part % of the range, avoiding 0, 10 and 13 in case we meet dumb software. % % (3) Y&Y Lucida Bright includes some extra text characters; in the % hopes that other PostScript fonts, perhaps created for public % consumption, will include them, they are included starting at 0x12. % % (4) Remaining positions left undefined are for use in (hopefully) % upward-compatible revisions, if someday more characters are generally % available. % % (5) hyphen appears twice for compatibility with both % ASCII and Windows. % /TeXBase1Encoding [ % 0x00 (encoded characters from Adobe Standard not in Windows 3.1) /.notdef /dotaccent /fi /fl /fraction /hungarumlaut /Lslash /lslash /ogonek /ring /.notdef /breve /minus /.notdef % These are the only two remaining unencoded characters, so may as % well include them. /Zcaron /zcaron % 0x10 /caron /dotlessi % (unusual TeX characters available in, e.g., Lucida Bright) /dotlessj /ff /ffi /ffl /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef % very contentious; it's so painful not having quoteleft and quoteright % at 96 and 145 that we move the things normally found there to here. /grave /quotesingle % 0x20 (ASCII begins) /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash % 0x30 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question % 0x40 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore % 0x60 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o % 0x70 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef % rubout; ASCII ends % 0x80 /.notdef /.notdef /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /circumflex /perthousand /Scaron /guilsinglleft /OE /.notdef /.notdef /.notdef % 0x90 /.notdef /.notdef /.notdef /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /scaron /guilsinglright /oe /.notdef /.notdef /Ydieresis % 0xA0 /.notdef % nobreakspace /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen % Y&Y (also at 45); Windows' softhyphen /registered /macron % 0xD0 /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown % 0xC0 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis % 0xD0 /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls % 0xE0 /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis % 0xF0 /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def dvipsk_TexLive-2009-stripped/testdata/cmtt10.pfb0000644000175000017500000006013311372532227021513 0ustar uwabamiuwabami€b%!PS-AdobeFont-1.1: CMTT10 1.00B %%CreationDate: 1992 Apr 26 10:42:42 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00B) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMTT10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def end readonly def /FontName /CMTT10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 161 /Gamma put dup 162 /Delta put dup 163 /Theta put dup 164 /Lambda put dup 165 /Xi put dup 166 /Pi put dup 167 /Sigma put dup 168 /Upsilon put dup 169 /Phi put dup 170 /Psi put dup 173 /Omega put dup 174 /arrowup put dup 175 /arrowdown put dup 176 /quotesingle put dup 177 /exclamdown put dup 178 /questiondown put dup 179 /dotlessi put dup 180 /dotlessj put dup 181 /grave put dup 182 /acute put dup 183 /caron put dup 184 /breve put dup 185 /macron put dup 186 /ring put dup 187 /cedilla put dup 188 /germandbls put dup 189 /ae put dup 190 /oe put dup 191 /oslash put dup 192 /AE put dup 193 /OE put dup 194 /Oslash put dup 195 /visiblespace put dup 196 /dieresis put dup 0 /Gamma put dup 1 /Delta put dup 2 /Theta put dup 3 /Lambda put dup 4 /Xi put dup 5 /Pi put dup 6 /Sigma put dup 7 /Upsilon put dup 8 /Phi put dup 9 /Psi put dup 10 /Omega put dup 11 /arrowup put dup 12 /arrowdown put dup 13 /quotesingle put dup 14 /exclamdown put dup 15 /questiondown put dup 16 /dotlessi put dup 17 /dotlessj put dup 18 /grave put dup 19 /acute put dup 20 /caron put dup 21 /breve put dup 22 /macron put dup 23 /ring put dup 24 /cedilla put dup 25 /germandbls put dup 26 /ae put dup 27 /oe put dup 28 /oslash put dup 29 /AE put dup 30 /OE put dup 31 /Oslash put dup 32 /visiblespace put 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 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 /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 dup 127 /dieresis put dup 128 /visiblespace put dup 160 /space put readonly def /FontBBox{-4 -235 731 800}readonly def /UniqueID 5000832 def currentdict end currentfile eexec €ÐO€SQM(ì(Ú0_«&(‚Óü§ˆ‚£yÝëELì«:ÒD<ˆ|X'‰r5Vså¯þ”ü}³ãdäõl$<}ò&\VD^Æ:V•¦¡¹DáÍ·ÅcV¤ý~nÜ®²ÐÚlž“–ÕJXèýÁW‡0ù’CU`¦âÓãhwî/xõ‰c‰¬„p¼€aiëv.‰¶Üšß…~­ef âXš®r,7¢íz)AÃ`°gî4ØÕÊ;ö·%aM“kË wôÔì*Æ{¥­?šÝ{^=H1ã ÀEFúè<©:5˜žeÂuhˆ÷'¹~SɇÉnLì9ê¥ÇDuD…çÑi»É‹ørÐynC·• 7†%}‹àj¶ “’12˜2uI¨¤¢Î£i J3>EªZdúÊá´F@† ‹†‡¯¾ý½[JTrQNçÓàu*óéjˆÉ]1úÓK¢ð/Ûˆ±e„OasJÛÌ 7¿tÞ§è¼Ü pÃ7r÷wؼÝôa¹Ìÿׯ+°]ïÃH Ú³ ïòóu¯´àß/€Ñ „`Ë“!¡ê¯4­Ï«˜e!½·Ë§*#S”/¾¤ Ñ¶~Í剦Zøç¥úK‡g*Õ_W׃ÆmáÑ ¼ó%0i#€Ç0Ñ(4wzÆu…w°õ;bf5ÊÓ»ŽŸTú\¼Ë9O_²â%æ,á.Œy/[~#FˆÒªbzFp3ždc™ù”BBcåÁ/Ÿ=A¤DIa©xZ û§3ÿ*x’ÑdƒlÔ,X̸AÖ⥮0úÞ˜F­˜#`Ly›©—yüË¡Dt ¼ÇèW´³Þf’vb ðãDþ !_%wéÉ,jÐ/Ft ä*Åå©l<Vµ5ÿÖK¥SMÝsÀÆTûÖúôýüUß*7¡½Ôéس`Óéþ%cMpœ(žRJfßÃ<Úd 9ri½žËèJ}{“©}Å"¡kie·Õ×y 04Ë>€˜Sq¥›8;ü\ëâÙ Cº],ì};—-2ª“+u lÈ49sû¹—-„g ÅÊÅеç\à!ù”“Î)®¼ Ëu‹°¤}úæÈÐu;ýs‰‘ ¸ ჆צúøŸëÄ­*ꈄëú‡~"Â" ¶ÐKÆÝµA(N@(î¢u$Ki°3Ò­™{çÑÞ¾Ïx;árx$läµãóM ú²6t>rÀ3™ze)‚‚“vß‘«õ3ð ò$ÂyÓQQvßÕl2[=z>þ ïøB3µ§î&%WøMuO| EÛÕÜY´kè„}¾ÝpyÄ-H„âøø”­Õë,ñŸRUŠøMå¶“† øÞvGýAtYÖW˜°nÅÑ2¬âbN—ø l "æ²x©é C\Œ‡Ñ>@µkOu-ZŠÀƒvÛž÷ ¢ê6OMÂëWðåôwΠëxkѲ=v,hblGÂYÿN‰ø:BØßå?–|Š´~þ÷$í(ÂÎì´¨¤µ¤€YZ*¯“"Žãr$(¼Ì´hRF¿>Ÿý²„\ ]ýIçDƒbl/ë´çlx²­j–7-®Gýô¸Ñðhÿ íƆ †'Z.ã©z¦:ªÄ‰á¥@C+ù*urBŠî0ÌÔÂ4Å!=~÷¸‹ÚŽr¡*Ól+ê±|¨+²E‰—¤µ J«ªà¨=zÏOw'"3ÕØ¬¹²e³2lû¬KÛ€²Ž‚©6¼¥tr*s°]D|Ÿ~Pmx³?X+;¾£{ø8 Ý2±^t¬þ¥½c\-ü:`çÙm·éz6`BX£§ÚÐŒF‘±ŸˆÐ¼q›éS²o jy½q­ÎÚnµR¥ÃElýèûíÙ"©ëè8I®?ÞXµ@ >õâ>ˆ1B{õñ*Êè{<=ðØ$¦z2sÔ0k¦=F,*lj1¹-Tàzþâ2ݬ-+• qÂðe½G–w•D :[a“$z­yp«^0nÛÜ$ëLkq¡t­ÆVZ™ë×ìƒàÎ¥3ÓdÂð}ŠHÈL 9AÝkuB/ËI®{·’EÏé­Âɳ洊F†|Ç/&ØÈ,+õèöcË›G4sõ!ûlÑÐ{2Ä–ÍÆrÆé¬[“Ë> ê„ŧÊäRaµTÖºlxvXF2djâ—"ë4¥–O 'z ˼”ûãYW:g.ý²À¦ /KÑK–ƒc Åx÷Ó=5 ÎuÒrÈêÖÇ"z:UB¢æCZµCuJuÐfÀ¡úS¨b yŸv+T¾ðå,‚Óæ9;ÓÿqÈê ŒIÇ3¿Ù¦ù7 ˆÍÃå±/±Ç'vCñxÏÝSõ—¹198#Ÿ¤þy4ޏ?%<.ÑËœyif˜ÅóIýJg¶‰g'¶XË jú”x¤ð¬>c%EÈ<m»'WÞ%éwŠMƒ^maåc)9#Ìôÿ+4ºšÜD€aQVYf(gùݧWœ·s&ÕÃKéž–)‡‡ùŽ®;Z.!Ù2X6ÅGh 2fw†ß—ß¿–×ÚÖ‰iïÄoZ9V}—Ìð‹Óaþe)¦ÎÃß…f@梄$G¨rdP;y¯F×Õ½Ì ²>}¥Gnòqú`®?½Ã ¶ç’¯ÌéA,Œ€³¤o^1ã€Ù>ãÑz_gF„®(Åc‰+fªZ7¶{n|¹Ö]5—‘èî 6¤¶SsÉ•¿bd¶Ã½¶*6ФÅxD h1³jÆ$$Éëî&–çŵT€ÍúÚvÀùyûüŸ:µ¥<¬Lm༌ɼ“"GìüLïydgÞI£F æÈ4dÎ'Û2ž`]Â-rWvG ôÖ½ÂN'êñCë):pRTRþè »-z¼Å|{©lÐz†g3¼I_×:]ǽ7ÁÉkÝS„ã|[à­gp`Eì´ôö Àxa6¥¹a|®¤¿1œ¢6iʃ‘‡…Ìú´èËZÿ£˜Ü¸h®‘$æß‹ÁÊ)Ä>O}W­mb]W IØÒ³ûp€ãÙ]¾ÑjӭϬŸÀí¡1‘6Gn¤ÀúnêÉ_ü52a$ë-Ú^Àÿj0NðËû=ê H¥-Q“ðAÙ˜rÌjqßå´nÒïÃô]e`'oÛ V§ví¢FzÔÄI0U¸ŽíBöÈ‹ =Õeì¿Vã+à¿vµ#]ð­Á#F™z¶-¡ü7Ú‰Ì9’¼mS€ÐÕ«”U3¶Z#6ëÉ’>XËGDKÆä›ã,”bCs±ÃOY>|Ž:mçZ'ÞN0Rrì™–I•ñW}î?šÜë]ßFs¦kC¡Ä$ÛQÕa Y°ZÝ´¦+~†h†£xkñM[»“Æ<ˆ×÷ WJØMç0y³ÁŸÁëÃ]DÈfÌv;FDZíbñ»%¦ÇÑ§èÆ…ÝÌ–`þ—Î,ßm%œð†›¹?ÙKøyico¶Ýª ý2öó¢ñ²G­þ‘™2)2ÈÉoéÜæô§_êey5÷ó 25=IJX÷kQŒ›àÎàû&.¬Yȓܦ¶œ°r½Ôì¢ÄÈ¢2þÛœ›~îýŠY6Kiz¹M$ÿQú—‚ë„Ý{Hám ª•ÀaðĶ8ñmŒ‰Sµ‚‰`¾FºÀ+c_~BíìÞs† Û.˜tgÇ Ù<­@®›é˜ÖK;ÔÖêlŽ/QU©&O gûz¾N.ÅÔâ˜fÒ‰µdqF·˜ºþûzÀÛìèÑ'I2Ú<^œô"H%ùª¥«Áf*ã³ú½@Ñt»Ëú£~¢ÀUi­®$1¾‡¶B¤@jp·yh¤¦ÆªO¶2A}¥—õ9jJÍ·KÛÞ¨+­;™‹ƒ™Ÿ&Èøfgµ“þú0ìét¬Œf)¨ÜÄ?ÑOb Ô„ ç)m.`m )Õ’œî8¤þ샢ÿEGÔ7ÆZæq¥¦è9dîžV’m;à8q4÷û½C|z ?þ=kPG›V×tøÒﵯq´|{í ¿¨èÙ\ë>[ewËfà{*ôVpˆh—faÄiÔÁ£q›´?¬›ØðúUXÚŠ‹1Ô†`½ŽLc ³ûTz `5ÓÔVU6Ø!˜þ–X eà¶O÷^¿¸AtYé:yakŸg†__rP>`ê0¬8~Ëk» 9X-½‰³DÖ…½{JDÇ;:Êô¿Ô *Ržv<ð™ì3³!ôÖÕø„‚JÍ ´ ·Ú¡k™á„Ä_ Å.ú¼Ñ¬·¸D5;9œ@ˆÚ-ç©xŸ{Výƒuìó*Ç®k–EÃëÔ-30aƒR0ć J¸¯m¹éE¦1¯¨ Ó#z'Æ­¥ß?eÝt(žXŠ@«ct¤ôy¨r,Ê ð¼4£ » ²» ª/ï ÍfJÁ÷g6Ë#j¬²q¹x>”ïfjRµ¥j É ´7b³<ì¨~‹Ä;kÆðØØ‚šÜj‡¨ì‚‡§ÙúRÈH§kðN°Ü•nt„cmòô´¬÷óÛ¥ÆG œ)ÌËWdþ*òÛ †µ‡ìQ§jñY g*Ö¼ë÷¶ØEúéMkßkÐéÝgŸVÚetЄ”¡6ä¨â7rÓì“u$g3F¬WWVâx«6JUÌ’”Òv7<ˆŠ´œì MÉ!»ëu¤ËÌP?–¸bñôFòÎ#.Ee"’ #I×…i´o–Ö¬„FùŽ(ì·ÛKú©×šíW±ùeAñÒ­œUƒJPa±CKÚO·J>¼aÎ}ƒS¶Åz}­Ò@<µ[ÛVÊ8Òõ½óü¶‡°‹©Êp8ð>ƒ{•Ê xë} QàRI;ÏÌ‘²md³¹[êh÷«[ı\Õ²!ÿŒ!ײ?çãiá–3bï@‹…)˜S#(ê>®2­Ì?¤ÂÒþ€ÓOK²¼Wó†Þ8tTªÚÿäþWiÛ zS´¯žkP4¡˜€Ò¯V ßRÎnëý{L‹LŒq×fÇ™÷h±nñWEƒoºQ–6UíÅe·0`“ãV²#Ûä;%&ôà%O‹óc«®UÇv@¦?O~±Ÿ S=®ð5å÷¿îµšö£Ü3m•<Ü›R{l´ç[ÀÖpJ¸¯÷Å5îžÇ9´Ûd±Eä-|åÃ?§ƒeN5›Õ+ILÞ‡htË)"Nµ+«â5Tzi>”Õ‘g?PpYsÒ ¨·jR_o;ÆäV¡»Û%V¦ ƒD§ÏWA±blëN7ZÖõIæ²ò\A‰í’€WR\œ„qñ_~±¤qõ|1NÙìÊU²ÒI.ôKÙJùÇ(?ѱ’EzÃ/‡`2òºq©÷ §NfI¼8/ˆ? žÀÄdãªI£œÐ¥o0§B3„Oxn³zéàÿ‘êZ{ z‚m:T4b³]Û“˜³a®ür!ÈÅÑ1;ÝyâÃ…qÎs^Ø…’áFN '‡o@¬lÜÖ¶» “«9È%WÐßeMWë ä—‹Ùõ®ñkvøTíÄËa¡~-ê^«2%XFþ_t∱kA±BA ‘ã‘ó½[¼B»õ)ó>Ú5uu`¬š3h ׌¨U]›2TõO©|ÊÁ¡ÞÍ#YýlSˆ¥O!À @.^l[.JPOÏÒ†ëdHé@¿jêb«rMwE‰±#rçbÁá1”¢³L$E¯ŽjcçâpõF”Íq–ì³l±›|~¹Å;˜¦¢Ø¹ úFÕ"Æh 0 ²9ø¿š’:÷MçÞ!%BYQ±Dfì+wàM­ÉϤá8fo7Ǥ^Š󨇤õI#ÉÁ€Ésn4F“Õ{¦d‹D¹ö¬ö©Ù@Êy`ó^4!>¼gEå«d$°ñúÚëiÃS&c<€ïÝ7=´.¼õ«åÑaB´MºÕÈéâ‘Éø(Òºô–\¾‚jÄÒŒ8'RÃî ÏÓ‘¤k*0A‡;Ò²p8êßİ1ÐnAP€Úȱ‚d¾–ú<€ÄÿÒ›¯:õ?“mÕÃ7[ ÇnCo-Tôª<½T_ñ¶|Õs%Ô(ó÷üHÁŠò¯D¹*O¬r»Q 'œ³;ˆ×gßê¸gÐ’sîáŸñÖ:Y®SM $•àäåª Rù#"ŠÈà„ôéL¦1½D°0%ØÊ«õ}#Rþþs€2!ãŸ(APÜ”K ,Ù¡ò«U,£Æ¢=^Óà£PûÉc£³},Ûa ŸÌ›viâËuÞm=Oi]¸‹Æ–«Ÿ‡Ì˶5»ËxôoM奬³€»C^BJè¢o?‡Ex×eg­œvúûßöù–óÀó7¸±®1$'L ~Æô2™î}ÄŠþPÔ(C$șì¤bÎ@ËÒ­Üâ6vÝ]@N²Âpapë5Úö Šž6¦YÀ-!œjõ¼=¾u‘S²vXf?|jºc'7õ”¤ö6ú˜œ•?©èk“a|3iÅA³üZS?±uJϵ¼€é{+486\éPg·óøÖ»aÛƒÀü\?µCPɳ¢ö‘Sb §Òc‘ÛJkµ ¹ì‡ri5¼c$Õ{gŸR„ WÞ\ŒOøm/U\¾gVŠÀu‡{–§YUnò’ˆÃXN`¡·/XŸtžd¾—;kô’ª“÷`Jר7j”7¡>¾Iîsöâ+¬ÅÈ7‘Ä–w2@·¼þgþÛœJ;ìäS–ÅèŠw a¼þ‡UQ~@Ïî™Õ(ÆQä×Ð;(ƒ’U·,ú¯þê··½-öÅoR÷ Qº+wKAŽiv§‰„¢ê.}™!Ãhº"§È·8ñ©&`dÿ]À6¢ …p¢Ì ¿t²]zi ¡Á¥ûÆjëÍ0Ä=(õõÐcV1£¢ĈOb>áÂêä‘ܸEãMtšläÌ€²âœ $’„»½½à…ˆÕÑþ1²¢ÿ7Vçâöpÿvcƒ!j"p(gðrÙäæs\íä's ”/¦}‰IM•̹#¨\ê2rþM²£O©_Ûm1e ÂÖ5^Ã8Ómä%G¦C,¸GÒ|tƒ@6ÛY©4OYÉö -_¦|‹¤#)7Û7Cù"â§X¤Y‹Cl`Q •dP¦Ý*ÀOì3{D4c´3`Û"‰¨ù±&ð©˜CŽP;ô$Cä çÖÄ}eíÇNf\¡–v~F»¼Ö‘™ó-£ô9ƒBÝ"ïÅ)l±i<<-ô…¨µ ”Ãü¦'EpøxÆËñŠùì °rf„í†/Ñù'?2‚mm•i¿Í=¬‹m›ìV."ÖLý§²É_%ç^aj`Aü§¡h±±!Â)YÛ 3nY¾ @`câPƒ Y„íÏí*D@«<üïtú'ÔG4Ðqã>ÉÂ:R^F2]8+¸¹¸ÁÈônÛUÉŽ®–$FBÒ’m1€»fË} FVE+Yüt7Ô+_4$Õó ïç]Ksäƒp&òi™4êÐî=½%Þ$†noõ)™Þþo]]Þ˜étÿ´Ù¹–ˆe- žÄš àì÷5tÌÄVÍÒÒë2ÐxN)T«è3—è:+@Ó_Qã4à¿I”[›|N¦Ê8&„¹–ñ.ÉC…g¢ lwԦ̳8›)4äZ–BÌžešÖvœ00Ø~Ÿ#èTiŃÛV‘î"¯Vc.žñVFg«ýÒvBZâ="Ál<UY íŠ]¸AÎ%¿´Á¾ÚO¦WW&Qz&’t±Qvb½þì`ÿR[FDe q˜ÿè<•=(€µÉû‘Ú¡i‘¿æ<ûH£ëòKz3ô>x'ئß4vÊÌáZyx'=â´Ž)´#<æ¦/TºÉdɬ½ĶL\úÔh/üˆ ‹nÛ¢#MlèðINš!#þ c³øÜ0öYi¸¦YÀÄ ðK`>Úè^æ4å?¸‚f–³èÒa;';#ƒeó_!c5ˆ&“AϨtž#ÓCqý(óΚç#‰×.? :F³qò~E– WÄï™N-cy2·šÌåEw¥kP´úmlsôUBÙ¹3‹½-F•ñ$È=H–8¶c…ÅçxT˜S¾Âщ…®@Ü/îVe™ìG:³à@R¼¦ö»&Â}lèq‡£ÔƘE¢Bü­fõÍg×÷"W}ñ ÌTÙ÷ûl(™Hð8|¼êÓ©Þ¹ÂÑT{ÆË{J%ó»uê¢%B§#ÍÿçÏÞŸÙ&Ñ;£z?ﻟÈKeÕ²Ú›7£•>nálæò!euÇÅ0aåÖBPÀžŽêhSÝŸi<»¯Þ⦡ˆ²ÄX#‹ùÇÊüÖDŸd|KY³|÷Û+0p5i³k’r´v'z£[—He…˜>¹caÒog´ž {9qu°¬!×J÷qDÑÀ€‰FƒQ¡`^!þQu2ßïºðf+“×›^|ÌÏŒêcj²~ …/g²Åò5Ó´î›Å×óB´˜HæÛÃÒ¼BtÂÆõMòëJ#Ò×6¿#X³\Œq­ýL…£5"ð•N‹û3À¬åÜ÷¸1 qgŒëE¦ðO€´Úô âØ½?ÔNðJÿŸº˜FkÞÕ€½ú • &?ÏàÆzñÕ àǪ®?ç_\5¾TÌh?Éf%Á|—@Ò|4ðKxOuŠiG¤ö¬²Ö°Œ®@¤<Æ2Ÿ‹’`åD âûÄNCrN0hˆ®ÍE\ÿhä~(öŠ‚àçý¨ÌÎ5ëÞ m D¦à»Ù)£ÏMȾ‘XÁƘÝîà»m õßõÁ„ÍIàîè-lÛBø1‹ßòbTóµ(ð ÁG“MùeìâŽéY‚ͨSÂC+¼ÕºÛ’6¶™!V&÷rÓ´WÕ’ì ó núIŒÃ(GÄ_ Ütö§AMçYˆØ«s~çZ Çx° j„¦GVd¦ÑGq\,ÑKxòaÀTdI¾ö ‚¿B(ºnbåÖýר8èÞÈipÌ}†»n÷.ˆY‡ì‘œ7,cûá™0qÙµ´gà‘{5»¬´í™ÔÝ~{šð¥÷ëƒ~\hb†LŸwÎpTìíé:åIá hóp*•µÕ ÆTÍæí)zø¾ò¦ÀÔJò>×ç@«£Öþ9 è¢úÄå×½õ3"h* ÅþIóˆ";Y/²ÚCKøB)ß³=¸˜¥Ì#1âš¹ÀÝìQcèØåþÏwÃØ)ü˜ œC¥aa½Þ“s¡OiÕÃ_²XË–PÛ{5¡‘ÄžÍ*Áq¿µƒç¹¿Ê\~æ×/W>yW+¼$ L‚Žaö9KJcs8˜q÷Czeß0«¿]íÕ–ë0`qä/F¥^³–êƒ/ïÔ¾o‡åJ,ò Ù'÷%ØÕ(@ŽŒÝ¨»INµï.ù ­êô^†$èŸå Òb]æzÖß²ñdø’9¤G„4ü,-ˆ/ø™r8½d:A)ð¿áî?6˜Å€(ÿkå~g²IΰûdEáŠá€—§¨åNÚSçëØLãÁV»ÜTÁ€è™Ô¼ø|íá @ÛƒÆóS¢†ˆºcÕ %,c¦ùèp}KWŒÆÞ`²žÈoâá,Ø“ÀÄÎ>ÅøŽƒv#âÕÏ“šÕ`ˆ†„ß l ëÅGXR4íÅ#„‰ZVJò_áá(ù¿QÙšš•;v‹\ýÕ•˜|oZ 1&*«[\í±v¾Ó0‚b²M?î×§¢Ð ½€Y:{ˆZI˜å–ƒìˆÞÁ0¿Ê½ ’e×LÇZ%`(ï#Q¹‘vÎ%ç»°ãÏ´kÕׯD”GŒ‡ç €Ê]ZÃVÏá(x=egtûð »&qð „t`¥Lf€Y kuê¥#b‘Ÿö-¶yyÞ=÷wꓳbiaÎJ¶u¥v;&àçéØbíIØ/ú¸\æÉJí@£âŽÂÇ ´ «}µxêôØO­ìÇæ9ñTÙ”áû a¯-cL¬£Nž%Í$}¥J²{(ˆ4(P‚NK}žäKÏ´TDä÷ˆE‘b-¹‘2±¯†¢aÊÚýJ%„hq‰þLâ[)†ÍÞÕI» ¨ÀoÞ¿dÈ ‰ÒX[‘ïX„{¤Užû|{ªæM7ÙUI€dcr8þ=è®1ðjäçúX…ÄWfî׎-ž–ä ÑaØ À °1$cþÞ„AæÍ:¨wO¥Sþšt{AjƒúrŠR¬:-Á(ﮈ€ŒÌC_Ô\¼ùc²cçÍŒq[KýŽVr .¾í˜y‰OÈY'݃¹¢!˜Î: HRâT— ÛëÊ,!`TŒ—ïXvž¶„YŠºÆj'N5<Üÿ÷ ¯Þ$¹ÛÊÅ~ãœFOÁó1¤]îµ…8ޱ9ö8ºíjßûÐgw«r|I·'9tŸý$Ð „5¯çˆäUÚÑ_oE Aâ^N‰ Àû¥è‹sT0/YÐ2™yH®ñýj(VÌ*D½ !GÇÏ定•u¤žÚûàÇñf”c˜¸ <Ö8• ­Úµ1²us•³qÔ&Q4O˹®ƒÎëÙñ®R`¯îz}^%Æs¾‰Ê ¿-}ßÌ@ÛcÜÔ…­ò™Uý´%7젵凅ðgiÀ­Ìõc*ŸXø3?b:ÜPòdža¸O­üRDE7O9NòN»Ï3éøkeO.Œ˜{ç©¢< â˜Aö›o“n"Px‚Ñ¥WãkOŸ,=]JgÏ(íÁn]&=Hå~k‡XÚ\µV”†%dÐ ûd@ñ¿É‚’kÝ!úê"dȼ”õ丂܇rÄ àI­Uaðò@†:¥rát>'ÁéÁýÐÅ㩟†Sk&•³‰UÉp•á‰*߯¦¾©†òÇŸ!‹ æ¿3d¢› ?Ýè–fN¬¥×pÇi£kËŠ¥pƒµ^š1E~£~KƒêL(ê­õbVÌcÃ\©iRøì£yzУ<ÿAq®Qc׆[ üh›Éc6µ²ƒ–àõa“æ„24£a¥|‚n€Tw¿¨Ox¾Ò…æL\ s¨.ìu¨—ª'9Ûe)ÉÊ0æx2˜…×_{Q6 —%lõχâ ÍOËYæK;PhqT˜’ÞˆL9Ôeá¦C×+\ð­JVÿ nh³Vâÿ&[ž•M._m ôc?\§VÄ-S£Zôê˜eCµKõޤðTäxg«™¶z?):{o=nÆí:¯t·ÏáŠÎþ?eÍwt»³{¦„Kl¾ yjš…â×tÄ~Ýh×TÈîÑ!D»MÌ~¡ñë…{²]A‘à˜NïÛ·Íp•†s­4 Ñ‚h}­È7Ÿ”õ&¹1‰Â­T•Vb8¨Ô’±DˆiÇnaîå`nš6 ¹FW«Ã Ô½!SÕåWõ;f™a™˜œ´w8¯‹UNK ;AÍ-¦nVÝûæ‰D„ÈŽÃn€LYŒã„1:¿Ã²éæn0K4Sy•Alù° ÐÚE=}?l5Œ¼öl™$ÔЫøºž«7«Äü'm«Í,õåƒJG‡¡ Ò`’=†Íƒ¼µ+ŽvCì9ôê®_L ¹1wÒsI/àhc ÇvQhaœW“¿ðµæUWÓE+Ûc7}êb )AÁ%ךYº¢Û aš]Û£¢˜«‚ç!gFVë­¯RXaÙ$Ý æ+tµHí æÐ!o”ÒÞaøþäçqÚGŽ0=Z ÄÌâÞÍüâ& IÂ! Lä.¨*Ã@è߀ÝÛ±\Ø|wï뀛µƒMMO„Í~ÔxÜ-]l éöfµ4[L4Ú9`|´¼Œqi¬¹Âº\Òt6²tÅ4+*÷¯3J-cm¢fè†ùÀ:âÕ“‚Qß`Äå€ôb"y¸¨a#w@¨.ç§63ÀS»o¾÷k–³­}É™MÎ/;baiöx{*Tîú—í¡‘‘ŸL•­¨cé15¾fZÛéÅ#0\Úr¨€Ç/ç«ÆtFËÖÛ ×îlÈΙšN(·P†°` °óLZôx’þ?¹@:ðëL|Ž9â"š%¦”Añ q6ø…7+(ÓŸPç}ßç þ@c‘^¼ÎúRh@×âko¸¼èR1­‹ì =Ó¸–°ï3KÔ¢]€ïÏ®“˜ÎIZv õÂÇÖ]üã†HÈêss×±õ›®šŽ¼YN+Á„­y>Ÿ ò½0ëEAîŽÐûf¹®”‰‚så‘„Ÿ‚"…5Ñ"¾®Ó0(Úü‹šè«ˆNšÁ0œžU®‹Y5«pôAçé•&-ª‡¢¾—ñPdA1~UfhN #¡¸:2·GçÄO0FX鸣d€†ê‹¸æT´a+¤MŽ9¡>q‘+˜‰Jy½^®pZ‚)¸–]ð×k °µ'ñ`9­9þ`•ö‹Ô‹lþ©xN(/æMÃà Kó¾~ž~Á€ë°"\³zDCÍžK/%ÚÈjÚ˜MÃÓRBL«ÐIz?¿/C[ŽfsÒ§ú7Æ”®ñ µr<ù®ô :†'бCÒ©$ áäÙ†ÓKdÞ$<¥a)=id[ÉÊÙÆfpíEeÆ“—ÄB¢ÀÓXp¯PÕóv³„Õ.9]R¿jtæ­v‘MhÇãþFήKÿÿï½qx½Ž½#žöÕÕŸ+׉žv:;îs@€y ã<ÙÐþ=‰è >°È¬¯Ôó½MöS{Í+¼¡†ÎaZ5‚hÓp®’ž„Ò•8‚øv-8öØZ\`7¼±¶l|ÑÈ6s‘O胮c1¿2Ãá™÷#_ïñ‰UwÒÈínwÜWôË£,ñî±=œEq:•@rc}´üÁÁýðµþ–]µPc ¤¾²8ïŸgù+«Õm-‚—]$njú #èŠpUL+_ 2‹æ“â$º:ê„E;û9n®žå\Š˜êÎ Íþi›]ÓhËÇöû%¢7ÿ„ŒAMåc¼™Á ¥®„ŽÃ(02ÔýÀkÇØž¸I‹a‘Ü77Šÿ¿!î$É[Éðz…gqTn(ïTDQUßF‰R~ä·*?TÒöf–7jµ„ŠPÔ£õSKè/òW¿Gi²SÞà*ÅzÃ2[]ÄH•Òg|w³ ‚f¡ÉÙU-¾´‘w¤Jo_Œm­ö\Zºå]€é53‹ ?ï V^kô3M˜®S‘3g1æ9šŽWƒ½¾úŽ÷9þÅ5>ä#ßþ\ª= ¤†äÚBèFí‰æÌn;èæÕÃ–î€ È:ûnS+ýÝ–­Ú×Ý…oA @Ä;ññ+Â~˜ ™¼G €C)}¹ZWhc†!Öâ•Ê¢sŸ’QçdNê1qZBüšVì‰SfóÄòlwªëÜÁýÕá¯J jáê¯gÀ‹+Oˆo †t·Àúnzçð]VE}ž\+0¸ ã¨NpléÃ=aûkk¼Ÿå•.ú«<™J,`jí©^”’1’o¡Ïïñ{†Fœµ¬«C^ŒÜs#€ä¸‡Ýža‹¸ONuA~æG‹›ûÚu•àB¸ÑºcšDr¬+¿pe4V[&md4 ›‹š^–|;*nÄÆS1Ö2xñÙrJ’À®z˜ÕÀ}Кx§¥QP‹w1nM÷”—Ú—‚8¦=ß,–å‚z[ì;ò@ âÈ­yMIT„…·,gÛ(ÝÜ0U­¸ÁF¼÷æ~ [¿Ðí½¸C`;òÛ÷;i©h\´Ò‚´µÏ½Gعé¿8”šY´ÛîŸÿÒáŽ8fϲ0 ÄF§÷¿Ò*¥GKpesûs3h@¦ Ö)ÊÊ–€÷àÎôrÀ¹d„zç©Í(cD½æÑ¡ö„zP@|©£Q¹ìYT tH´G?Vç~VÀ‚,µK1.Ošåt/naÁ¥U{ÀKÀ9ª¤*³j™n×°FëáA1ñ…‘xßèJÈϾÌ;‘[Éò”d OÕƒ\ÅÍ£~bcGEåóÓÃÏsøõ”W%ûó„–¬‡c⋞iVl€2VžØ¹?·”G0”p ¢ ŸmÅnÔÛ†HÃ+¥ƒeÑÜ${¢þiþJBõB>Ĩѹ°zƒkƒ ÂÑX¨ ‰<®×J`¤Ð"ïîÏY뼆˜a`NÈç¡xð£ÁgxÛÚK‹£?ó¤³1u&~y$ç‘,RÍx5&ˆÄVDyL»„:Pmˈº´l»Öón1ÝßçUôðŠÅ}2æ;Íž•ÆÅ]žVi z¼¿µ5È ó‚_’öÕ>@ºì7•£+2‡P“-Ú°@Ž·Bê ‚×èÞþžy#ÛÀ¡uîaaaùoê‹Â™SìG¸)QÝýI–¦W<@" 65ZÃæ–ÀaÖÀ±m!$òÊÈvle»Ç¸¼‹‹ ]ve3†Šdãq˜cò›¸ӄé_¹§„ø”ÎG}ŠAßsæµ`DvDõNçAªŒ<üôGBk]9‡=87À]¿|wôÛ°åü.<òRGtÃu%Џ@’Ÿ‹°k•Žl‘WB\=z,rrÇé.Ø É%ƒãbNnIŠ\#&MáÍǹpä#Àqì9hÒ#1ÚеÜ@9°£×U(·ÍùË2©‘î¸.jûCÔâ6åxíG9†9—ï¿–$öP„-Ï‘£x+A…ÚKEýžF½@7œf÷¯Ï{2‰H„IíÀ{'{Üß'ñN&ˆûÔÓ&rFX›]`e1TØÏ[&/þò¼L{1Œ·¨öìèû D±ýÊ·cÁã}b/ƒ?¬6lf̱ÄMŽÝ@P‡× º°ìi]"Øbr¿Ù_5þ½çp×Úm[!*òÛñ¡oõñ%óõ$õ;˜ºE54m ÍÒÌáÅ^ àøG÷fr jE¹Ùwo5¶]£Ø£Ç‹²5°åÿˆ!{w¸jFúÌjÊŒj5búÿÓ5*m&"£¤Ös¦¥† 0BZº1®ªxñ A ' Þ É‘¤ µJÙÎKTÔh{ë:ùPÁÔ¸‹ ü7×’@}”PìMwîmßøÏÐösTÞtŸÌ¿â–’Jì:0XWéKeéÝŸ²‰ÊG±‘Ça=ò ‰cféÐt1¾¦¢)e*·þj!w3G„ÈÖb}}ŽÊCÔ¸ç^jâQç¹”/ÀçÕØÕ~ÖùWj¢ÍÄ7«pC•޶Gx3¹¸_9¡èœpÀ¦°SåÙZU Ó€€œ=’I`/~ýï†÷¾ Î¾ç÷åýÂÊǼ&’ã jBô‡­ÃʱbosÍñí¼ó¼ŠV5€HK0‡[Ñ›e÷s ¢jE@Á#°|Hþ]ië×è¬\3=˜7ýpmRýÌ*éÑ;<êÔ”·Ð¯`*Wå/‡.ôq½S‰e)æ û…™HœÜïüù·]sqB/ÉÀ èÄ6¶ìvÉ¡Ÿ’®÷$mFêwœSš] S¬«œ,"¾Cî£ÕoRÌp‡ë¤‰Lö3H"õæ' NdEImÐ ½<ØFùŒ¶@a¼æÇåCÁ»èÊ*“ì+>¿("&ëpÕª´¹ïG)ŸÞg†lÍ–²¨7ph€†)â¾ø8î f Y»`XÍ·ÔÍ_!}âÅ–GÔ_ôHµÞPïڜϳÔ×KE+Ð zåIý/yÞÀjËSÓš8çS—)j2æC]ET¡ÛwW(ŽÓgÜi‰úçô(¨âŽ€nù Là@ÑG¾GâÎÙÃÂG«.J€F¿|\jÛÇZ2ƒÌµùõ>ð] lŽ­$Îdñ„K§j¡U†©0Iê\'œÙ/ /Y§;qm™ó2ÇÀ]øŒ'¾·jPKû/ÐSbyB­o1[Q mÑjœá¤¯F¯>íëïñkÌ…½†nvi› wm|á,ÜHiC×¹ívõPUd¼RÕÒ C¤(ûÒ=Uzþ!^Ð繫íŠ_ŒÈ3?¶šžsTjó툠$`{sˆI¼ø镾¹43M/ o±Y——Cê@F%ºtHõMäFÉ%*j'iPiøDŠ“ŽÂ¿Žï?s½\{[]ØÜâìtª~ÒÕÌoY QòÜKƒyÐguð¾÷C |Dì¨÷§Eó3 ÷¸»wBí嘾Ð|Èy¡ 4²5£cƒ W¥:RC68UÇ ÿHòY¥²ˆ+³Ó å3"S&$žBk ¾ÇmQ“ÛÚ¡²=ÿêÇâ­ o2N†å¦·oÍÖ“8ÑJ‰>èÙ/q©ÞuÖ_qÛ¶Pð¯9‰  Ü2ÑêÜÛ@Ê:Û{P(o&ì([‚.¾HNš×%‘õݰ:1êŸü;&–vÑ»˜49ðçQvtÉãm†ÿ€2æ¿(­¦½DT¼aûß3¢xŒêA›K¡ ¬.f asõ9çïà«ΟrN\ÆAÖ*pù”£Ž0í,ó*{VéË–ÁI¡4“/ëªôŒ+ÕM%µ„Êìe‰¹O<¯“ÖüÉܲ˜¼ÐžÐ ·´o^wmµ®9Žx OŸ£9ÏøÉÖi ¬ž•³Ù3[{[¾¤‚î@Zþ³9z@¿…O 4Ý»}€ü0½öÚ2l ÐÚÒ['¹”pyn\DÐ]‚þ3¢üAà`†Õ¦=ûLž5¨¦ìª’Yù;'–Ä£1‰^¢T~Ρë%K·wý>ø~X8KÖ‘žúÿ4™ÔªzÒÎ3ºuBvåq/>÷RPV4F>öq?é«î¶s¦oäc£~ûÑ£zS´/D]Ü@Á,8°”xãYPSån˜Â솳dYO¢=ënÃÔ±lA¥þ4¡;ˆf³ÝþQÕÝ|tÊâp…™4¥ÞԼΤlð°\.ÞÖ6)p&°ü›@£í‰£qßa¥TúÀoG"Ë̪½y`Ý}s:sè xZáõ°RjvþIzú§Ô&TÉ[9É)L óf”Þæ”¨ñúçŒ×_¿ŸYª}˜‡ß‡ƒw_&Ϭºl°0`$FáuN/kÃÊi+Jo‡6ùüt1-ØzÕ—LE³†ÍÅæB¯®í){@¾Ýv0föD§©sAåŽØ‰<;“§?<Î_þé¥ÃI©" ÐT6168a{óx âÉ4r¸¦žžøÍ“pš¯ìÆ4Õß¾MòªøUxgS Ïk÷LËFÒÏ#›ü7²UOÁܽi7† µë‚ƒžŠKBﮦ±yB­x;dMº›^ä´\üIoÚo˜ˆ‰vsJ©8Íê(„'ƒñ2&ü \ZW<Ìq·ôé4B°UŠ2ˆxmºðéG1/¥Š@¬tÛÑ€W4ÎÆõ¸ã­5OÏšª&ücn£ mÛ˜·tåL7îÙ°ÆÁÌ_¿Ö¾W(w.gøZþ£é­Š¿iöÊ–åE-Þ<~5üU®G)åšáç3þXú·ë«F ß¾q5)Ö¸rŒw-Ï CÔ.{}âýE°BÚ»W?Ö‹½¯ÖânÊfr¤%]Y6Ÿœ,Ôg)žîwfˆ[L,Õp$ÉXÑë—½îÚÜ›3½ß™Ï o4î$aÆÕÍwÚZf²ãÕyλ0Æ ±I3o*‘©ÌÙÆwJHß™úFƒÛ9¨ƒÍ)ç QâìÚ=Õ£DUXX™ö~OÃv)ʹEÓÿ¥~}±+‰IH£}Ë+©ç•7ãÿ \ÍÆ¤²(×åy5[(ODÅôu¬˜Kx© Ô±´{åPY¢¦imÀfÒ¥y/j¦g½Zþ’ÈÎSÝhŸ¨ÛÄ༑|ÔüqÉ‘Öü¾]BÌØêÀÚÏ0~ó! øƒþ3sU¥RŠøÄÇ ]ßÔÖˆ–T™£¬§è/?-…”S¬ŽEÕlÿÚùïë¢nåIZ:(= 8õò8MÁýà‚7‹oÎítƒ¥C7ÖJcRâê…æ}á LµàžZ¶£Vò4^¶ŽÞ4ÌËúš§Þ8µûýÆ—51²…Ñ'ê ]ð:Ù3ÕF P“?U“®(TObÑ&ò–NƒMª e,.´Þ;ïÉtüÇÁ–«VÔ~&Šù'©n¯­¢4ñX¢W;ry=ƒ@•uÒçÿaS’>^>â¶(I`–ty´Ø®²B³'Ö²ÐÿF÷~C´ ø öbÕçÁ绯 'GŸŸq!ᧉÀàA‚ͯ‡_–ýÔ™ ’ Ê;³s™¡Ø Ø4t%$Í¢þÈN†ò2åÝC?’Nž¿nDjcÜ@t4” &Ûü8ˆ£¨4½Jï?]8àu¯ÔË=ìïáo¡‚A¤ŽÄ³¡k¿ržhì©b–¤ÉÕQà™ãÓ½FOªW5¹™cÞL*ÉkÐúìWæY>ô”ZÒ•´[[†0|§ ÷ î'(Ì1Å‹¡6ðs9Ñf;ÓU)\¸6>œS±òqÕʦÕ;€ØÚ¢ž›ƒBqB&7̾’×Ùò{=;û‹?Þ\iY̓ ”’”:E^‘»iÍįígRR›™*µ ŠÚv\TF_Fª-nûÃn’ãÉ¢îÊ–“dmÛÌ´9ó@^¦ÆûG{V¾ðú\^¼ÀgÉYÄE0F•œJŸj¬à Ê”ð‚‰œÙ°þÆ.‹`…‡.VÔŒlÙÖU@ѳñ. dÄý™©üñŽDö«öRDn<… '=í.Óž·ºâ•¦ô‰§J1ÄX]bÙ4ßéãý=¯P¢’½®0@üàe†Ñ a%ßm`À†É¾M$gßÀBÓKÇÃ|“å‰$½ó\S€¸K[±Ÿ6Xim2­>HùZ½ å#Éãõßõ?ö©Ó÷TU1åxB-™ùÙÇØ?«ƒBLX?JxÅN Z€½¹Æ%Sì4C1]힦f›óÅs‘üëþ+kï8þrnž´ÄÉ¢#QÃt4·(Ð"E‚hšJ‹>}àü®1î‹Ñ3—ßßÐB±‰8¼§¦jzìU: šýurAÆ-Ê4ÖÏzº& fÆ;ÚÓíP¬LÈóJ<{…–¤z$°ÀH‰Œ¡M}¾œH¸Ñß W¿ƒ ‰Äpóå&ÜÉM$~Tu}é«…¡íéž  %ŠÆ€dªJw9Ìÿäu»[ðš³QÓÂË€!·:Œ¿Ç¾€ÿcW|Ò&UO©ÛB›‹1JÜ=…—@t{T–³¤A­1öÜj ŠéºP°ÛTXp¤Qi ­¾5ý‹õM2Àk¬gȆQkÜɹ¶CU%>7ÏFppˆ$¯Í¤Ìýå„-k'åF¾_¾Õ`:îsËõ¸~8z_Ø’§µŠvŠƒ ¿þ÷¿Eü  ð{9Ž-úcvù§€ŽŸy‡÷èÔ‰ŒÈÑe¿K½k⹡fßÚ„ª¡2츊¾y)®¨r™òlÌCš7As¶«<¬ÂdW÷‡óîí·Boý΃yF Õiû? QádHÀ‹xÏ®:˜Õñ&çEÏÆD‘®Ë aÇ—Ž¡v#Ì^ÌÒ/Kúne[У!+ž.Óºn…Ö ™ƒª¨Ï…,²½’ðõ ÁTÚžÅÈyÏH›ù™#ÛM›h¦ìfï7¸¡²}PË“‡çKe©#Ábæjù a£,c±É/šÄ£‘tþi¢öO¦ €ŽíÑ‚Zɬh–A¶­7dñSÐcÏ6duúèN^ °ÔXów?Tº• ;3Ž©ÊX­îex¥@µ™'8OSjWhj« Øwâš¶&é±O§±ÄqX=Õ¯s Žñ¸ÖG•#á¶D'çåÑÎxîp%£@Aè}Ÿj—Í7¾2EqÿNóÛ†ë÷x”_rwÐÁ”AœÎ%FruRf 4æÚR½óúfž£¾Ý§çÀ%ˆŒìR’Zùf—‘œ!gãtoÚƒËþ·ôÒèWll1í»Bˆ°ø½¨-tÛIÌ{‡.¾uÇîõw¾“ Þ§­§V[iC¢‹«bLÑx3¨,A p1ˆmpýóhé[­œí_b ÓÿÁÂ¥‡»Zep­‰Ì?ÿoZõl6£g¥úùÁäÙò÷™G—0ú×ÝàñUr%FFœœdêPÝqp. öŸ"|$ðZÛÓH‡É\æ&¦‡œÒ$Ò±Áà.<Ô.5ÓÃÓ„hyù³Ð¨/¬’²÷Ùá5½4ÌqˆvwUsI.]—õý= ŠÒþõ6TÐà£NWМ̇6~1“¤íW÷ƒyD6@2 å ‹–S?vÌfÆLÖ?3½W-%ÿ‚JÔMQc{»tSä³³|@T"¼¬DGeAW~Æìÿ XUÂrùàrP:vˆâ+Ýw#®~u7«í¢JHBK üå&ÊÇA·bb.kÞ['yKI‰ÿå_O.¿) ûSÆ*+öp”lŒý’B47²7Ãriü2³æ'ÝíÚò‰xD£ªÉž.#­~ó *Ù.¡OÊmhDŽ–­y–/ð>|0Q÷ʒÜÙa?OþB5‘oYŠãËÑDÌþŸ)7ûDΜêËr˜°&!ÝÍòÌêÄ*"~$E’ý¹kÇ[ Mœ!Þ† ~ýòwþÅÕš8 ®çn×62B9þ!$€0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark €dvipsk_TexLive-2009-stripped/testdata/cmex10.tfm0000644000175000017500000000174011372532227021516 0ustar uwabamiuwabamiø  ú±u TeX math extensionCMEXêhijklm n oDE . /   !"# $ % & '()*+,-01 2 3 4 5 6 789         G(I K(M(O(XYZ[\]^_(( (((((a(@cPdP@fPgPqrst 0000UVª­38UXŽ:Ž;qÊã >• UX Ž; Ç 8æ ª­ Ç  qÊ ª® ã“ úS UX8æu¶ã’Ç qËv-ˆ£Ö™›ëƒ Ž: ÌÐõÊ ™ fpÇ(j ) Ìà#ŽR%ª/\Jss 0@B1AC246357465726378<:>9=;>8:>9;>?w>xy?8;>9:>BCvtu~wx?y?~ww㎣ÖǪ«33 ™š™šdvipsk_TexLive-2009-stripped/testdata/cmmi10.tfm0000644000175000017500000000277011372532227021513 0ustar uwabamiuwabami~b :   b> TeX math italicCMMIê<°q\°'Q°I°'M°M[°YT°=2°q E°:°iR°-@@+Ç1$G4À! @ ÇI G À@ 0@4À9G@AÇ)!,@#G-@/@m)@7Ç>G CÇ!=@@6ÀY@#GFUDGa2a2a2a2SS!d!d!@!@!@!G!G!G!!G!!GSu!è4Su!d(À5N°"O°-J°EX° L°=B°qU°[°Y°Q!*°]+]°EF°`°eW°eQ°A°qV·P° ;°=5°qH°e3°y1_°q1Z°Q1°y1G°E à Ç Ça!a! À!'@ À@ %À#@ Ça(G0À  §9/&ÀÀ ^@8@@ "GG@ @ €/@@K@.@G @% @G?G!!ÐtÀ|qÈÆ*(ȃ ©ºÇÎ:$ý8å~•–ê®ÝÞì’þ–Šr$ƒ7ópØs5v €‚Ø¡ªÁmÁnÕXØ2ç[ñË ÎE²H SëTeu~•¤ýßJ Î Õ $ƒ $û (Ê 7ó Iö UU UV UX Y› vŠ ˆŠ š ¤ Ëª Ϧ Ø. õ“ Ö .ð <8 E° Iö l wx ª« ã ì ì¨ s o€ tf Ϧ ภ "Û & 4U [¾ qÊ zR ”z ¦ Û ?& @ An LÎ UX –à Xs…²°[¸åÞ¸ãŽkƒqÈ % ×^ O¥ j îî r n] ÿý¸åÿýÞ¸ÿÿkƒÿÿqÈ %Ž:r*¥Pšn8qÈ€ò’ö›´%¼rÍ‚Ø.ãŽêxì¾$ú.86 AkGLˉõ¸å¾“ÂϦ8åv Ž:d2€€;€:€€€;€:€=€€€=€;€:€€€=€;€:€€€=€;€:€€€=€=€;€:€€€=€;€:€€€=€;€:€€€€€€€Y€ Z€j€f€ €€ ;€:€€€ =€;€:€€€ ;€€:€;€ :€ €=€€A€M€N€Y€ €Z€ÿÿŽ8ÿÿrqÈÿþ8ããÿþªªUXÇ 8èãŽÿýUUª°ãŽdvipsk_TexLive-2009-stripped/testdata/cmr10.pfb0000644000175000017500000006440211372532227021330 0ustar uwabamiuwabami€%!PS-AdobeFont-1.1: CMR10 1.00B %%CreationDate: 1992 Feb 19 19:54:52 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00B) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 161 /Gamma put dup 162 /Delta put dup 163 /Theta put dup 164 /Lambda put dup 165 /Xi put dup 166 /Pi put dup 167 /Sigma put dup 168 /Upsilon put dup 169 /Phi put dup 170 /Psi put dup 173 /Omega put dup 174 /ff put dup 175 /fi put dup 176 /fl put dup 177 /ffi put dup 178 /ffl put dup 179 /dotlessi put dup 180 /dotlessj put dup 181 /grave put dup 182 /acute put dup 183 /caron put dup 184 /breve put dup 185 /macron put dup 186 /ring put dup 187 /cedilla put dup 188 /germandbls put dup 189 /ae put dup 190 /oe put dup 191 /oslash put dup 192 /AE put dup 193 /OE put dup 194 /Oslash put dup 195 /suppress put dup 196 /dieresis put dup 0 /Gamma put dup 1 /Delta put dup 2 /Theta put dup 3 /Lambda put dup 4 /Xi put dup 5 /Pi put dup 6 /Sigma put dup 7 /Upsilon put dup 8 /Phi put dup 9 /Psi put dup 10 /Omega put dup 11 /ff put dup 12 /fi put dup 13 /fl put dup 14 /ffi put dup 15 /ffl put dup 16 /dotlessi put dup 17 /dotlessj put dup 18 /grave put dup 19 /acute put dup 20 /caron put dup 21 /breve put dup 22 /macron put dup 23 /ring put dup 24 /cedilla put dup 25 /germandbls put dup 26 /ae put dup 27 /oe put dup 28 /oslash put dup 29 /AE put dup 30 /OE put dup 31 /Oslash put dup 32 /suppress put dup 33 /exclam put dup 34 /quotedblright 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 /exclamdown put dup 61 /equal put dup 62 /questiondown 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 94 /circumflex put dup 95 /dotaccent 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 dup 125 /hungarumlaut put dup 126 /tilde put dup 127 /dieresis put dup 128 /suppress put dup 160 /space put readonly def /FontBBox{-251 -250 1009 969}readonly def /UniqueID 5000793 def currentdict end currentfile eexec €¾X€SQM(ì(Ú0_«&(‚Óü§ˆ‚¥±)þ–¾c(C¹¶¼‘¶X˜]µkÊ`îiÊ’Ï\‚ìæ.ÚÓáØ54ˆ"@ f¯e*ånЋW›s«¨ÏÊlqð<*HÅùÖ"f¯Jcuÿ` ›¬?Î4-hg§•Å3k²ós6g.DcŠ—~.©dN1ê­)ê3Å@àÈnmè«jM@§{¢uó•‰þ¢âÛ‚V­ÁÖùÌ€7¤~ÔiÅùŠ^<½JÎ@Ó@‹ÿ}Ø«°¬Wµµ¢Â Q•{–ÄSí·Úå¯ý‘¤m“à¡3c„MíC#ñîm0*ê°$¥R1US\…Ü&ºÓ Åe€)vÒ˜Äé DÃbæ¿:³b¤Tî“Þ%ÎTAžuÈ âj„@KÙÞ:î?’ŇùW+ƒT¥Ã^ê~‹+¤ã3€!2÷`´ i޳Òs‹ê ¯z®–¥Xð‹a®ÇÇÖ[(‰»{™€ ÿî[¡šÉÎC{áÝüð¼¥g T;–D§‡&ÐÁZ½¹on ÷ʪ1•|¨, øq|‘¶:vé²S)Î&%·Ë{ù#ì+µìŠï¸Á£´"­a{=¤Ô–…ýDÌ!¡þ^A:³áYFÖ<~˜€wFGCwΓøóW ûÕÛþwW†‘z¹ic˜~nü-?™úVì®d"W˜RVÌäïmoqÑ…‚p Twâ!Š7\¨Åȳ¯Ï¹gŽ»/ÀÃÄý14Å£ßkoLuì˜TfÄõ„uÉ]ƒ¦¿uH7Úùèhë ×nÄÓ‹Ù5¬ÊsáË›A’» …?”r(ÃN’:‘3îÉÅ,bn)hÕO¤3¹p&6ûØ|]Äòx‡ƒP_BVÇz…\—¤ÞnáÔ||3é­"~×ñ 071¾¦ó]v@FîÓjÇXU©(LWsй…Þ§Ív|x ‘ç@æàˆË“Ô:H‘E!Þ-¾•Nô¹V;S)õü¾é'ª#0šÒ.ù4›l­ç Ñ›”`@\Þ¸›ña{,)zõb”X#_Œ•õ¼D-ë³M¥Ò éf`Ξ\Ñš„ªTô+oÈ||°Ë¼$™PÓ§ÃSÖ‘×{ 1È@Èô:" ütœãL'‘Ýb| tu9cÒå—”ImU®ÉoýHêý²ŸŠ¼‘“-Õ°eëÚKï'¸LC³ŸâG¸á•8d$m2SW¢F6[›+ÜhÍ×äM™Øld%e±ü7m.SH²z|D¶M:Éœ»õfZçoâxŒsEKÇ”±C.l:X»¸Ëï4]1xÈÐk&¿HZ\;ÓmÐ9°4å6«Üf2ë@8üÊàE>…³¾ØÃÔb *¢Ú½ Ù0é¸édđîä[Y.N±)pd~*^h½¤)õ0t%|—RhøÂ5 &dme€ú°V/@dNÛº·˜&±lÿïÈ¡1sÌœ÷Èüf“ä†ÿ k-éhA¥úŠ4¥´¶„b¿úH$dÜ"ëPñø &é)ÔÍʼn&ièC=FÔ3í‰ T7w6 %Tg”Íš:¬è¯ŒÁÛÑeŸŸ¤b¥¬æ¦­@5nŒHÞýG÷ln&ïÑnæ°ªå‰÷àðˆþ€½løìÝ(Ç5tÆçýB3±n¦1™7ÒÖ:”­vù[a=±¡'M_;MõîæŸ¯ÊûäFo]_Hî¦*|ÜÔùA„7ppk) †ÃîÙ•"‡^õâÔ‘’ ƒ¿NŸqò–Eã!ëòñÉÆ šm·æ)|>)Ëûz”qÝÆ®ˆt,ÇD’Ýz!uƒÉškç· $oÚ ƒ£¸.ö¿¨/ÍtØ»¦‹u@C]Ư±»ˆÑY=±RÎ’Áž²œŽè”wÍÛ¾)¸Üñêop™ é BP@O/]û¯£^p»‡ddÉ’4>‹ìfïH=ÎGO>ו=Áö»ÁN³IWÑv] 2… Zä”4/kpÙ¤$‘³|w¨¬å¿æ ‹n H‡jl¿­ŽþH`•ÚvOJ¹äØ?‰¿¢Ù¿'Y‚nÁdñ«9Iô¼t¤wÔÂM~°Éj–£†ÌX’³˜Ô‡Pý c‹¦Ö,Æ…hŽy¯1ñ;tO9Y„² ¤ƒý¥XÆ©¹ªé>z[[†Y¿1ÅCôÃpÿ°)S‡†»]³s#<óPn,M°Õœ¨êu§f+Ĭa0?O¸Sl4þ®N×rÜ´—4õ(_¯ÉŸ»¼=¾‡ ›Þ*„KM‹»¾õγŸ\­âRìad§NubPPÎ«ØØQ5PÔBßæýÜ»n AaOè,ï6Û#§Ý1ÎoÉ#µuê«ëµ‚ ²sœË´⤩\ÿì“2ÚÏ“j1”«Ow9å´¨h§ÊÓ±Ù@o„´°rÀ, Þ|dÞõK—öƒh¬ 9àß^W3þ¬ð.ñ*Ы°€\/~×È$Ù³Hè“Ö?1¸‚ÅK*§èÚ¡J6D(óçüdž'NG‘DRpKÅjAʬslˆ&·ºÊO®¿íÝèþ;ËSî)V·¤¶™Ã<×ê¬4ã¹.:¼2…$S%™tãEd}RÚø5„Îò Åë5+øªÔÀ”ÌXœ§ÍéjŸ¿Â'g²†w¿æñðÞä%I†®‡‡¼ÍÌâ)‹½¦%3y6?û+ ·ƒ"ú²G€ûŒ!çi‡Ss`n©½©ñSRëTÿábë*Á”K×Ù€Ò2¢óÛ<ÓƒàÜã$ΪÈ>â›)€êmÝÔïW'NCC¯ôCª‚f*x¤ýnÙ‚d¦°¼bœù$ê c[…Ö‚Âh>9íD$N‹P«’%o”1¨1×x‘¯þN(3¼Þ(zt~ˆ@œÃ } ŠOÈ m‘SCçý¨sþÿpNÁ÷E&ð^‰âEb)sÙ§‰slqæe‚º¾¬©iÆ.Xúg£¹ÓŒódóƒç÷m(9Ù_&/ŠZø}ï>Ã&”fQžhèW1ˆ9ý Q¦ÓX©:T>$õ÷épø»{ë7¾¬ªÅö- dëE¨DÁF·D±êÂÁãPâÜ2‹jƒø ²‰¨Ag´ºÆ>E=絊žùY×âü®µÎ¡Ý“^Œ]}çâhOðP)»E¯šËCŸT†W㾓Žz+Y$Ý¢ç Òj„¥×R”öåmÿˆóÂÉÔWÍÛòÓzÉ©<éÕ? Ê¤òWv)TX-G¯CÕ×gšDÔ]h.ç4“¢¸ÃâNò|„çÈy»±úÖ¼‹‰»'•žèkä†xma-•F«YÕ!cgÀ'µ°õAÉ®'x Ie¨F™ 'óóàšÐ¹Ét#q«Vi¢ÏHcƒ:Îiÿk°Ía',ùE&E„ìÜÒâvzƒoªËì¬IÃû(¦Æ"‚3ê,šïÚ‡ê,ùÓÕ/ÖÑf­'ßÄò YÉ¡F±ô¥GÛ‚uˆ†éÓ`›I[ÙAa`Wä`¹HV‘¢Ñk§Ã54©Û®Émhà !˜WûÉ.¾˜uï«¥gÌ“Þ 2ÄÊR“³¤î˱1Á(blAqëË-îƒ ›Ë˜´þ#¼cÉl!ë}œßâæ…9WÖѨWÁþGöлyƒ›lˆp.¯jY¾ýȳZvŠôêÂw÷ïºÚf³Òê¶W»ÈÍJD4MŸÓ@­Ýòܬ0XÒ"gIexÌqk~ÃDF8!T•§¿yVñnã8dëÒêç²ê7 qAIRòmhš½˜ç`0Ù.MI§—4þ£ðWæ/dFÐæD>î?&w›è ™¢x]‘À øúöñßà ᓚ äšDމ°í§Ìïj„I³X°Æaä y5¦äøfìä#ÎL—Œ÷I󲸪µjîíÔ˜Ûw?w´þß\e£Ò«M ÛŽäV×Ú;œÈÚ Ê­˜¥:RŒ{V(ðe·ýÛ¼JtÃ'Qè´trŠ:o8 â%3üIxòWÒy»µMBFô úŸªžÆÌ Á™`\-®ÏR‘}=DÆ -0íÆ»Y&ÌŬ+¯®|ØíH}Ó„-:ziz‹‚)/êDûÔ öÂv†ê¹JRc·{‚ÕBTx×K^N¨CŸV çÆ&åÃï¸w©¯7¿ÌrÔU™]õ;?DQÌ)¥` êk/Ò½ßo·¶¶á”wBbóµÂ]Ëw{d:1€Fà*»ëg Ù‰-n°…<¶*ÇçÓ†§|lš8ÿÕQ^µ÷pÜ ¼MåbïÚªÎÞ4 nöÜîÇ5Ú6‰é÷XëuÂOÌN“¡÷y™òÔ9^ÒI Ë€\ã¢jGìóv§ŸH ”Üó¨kú—·ÉwøÂÈÀq¶ò²QiZ@·5×øâ¤z÷ýâ¦ç2ˆÛçU[¨.#ú-ã "'á¢^mô샠W‹N™ÿ7|že]}mäÏgÓì¤V$½Ôîvª¥ùœs¡ûG Œ~¤r‰6»QþvO•  ÃÿÑÃb#öa;"ix¸ùã\› ܆<ßC—%¦NJúò2<áÒ¡hÜWËO/$IDK\iVò6sHú1Geo×ÅõGtŠùƒåRŸ¤x~T Ü@#7z{~$Š7U °ýQŸ0ñº:2=øŠäþÿq…ùå!enÿ¸v($à^ÛÓ·x³Ä€x¯;$}=z>å†~m¥!7š wQÌlSüj¦Qž-“­ ÌQEô׈ðFê¾™qÞÿÆ·×›î ©.4¼ÁQ$Ò@[¶´âe7&TMJqæX2“ oá‡ó˜bù¼ÕÌaŸžÍúS]­ð;ªõÃ/Ì®ÿ4FæzbÓ±R”ä&1d¶PžˆÓ"]ù ¾,s©ÌŒÆCd[9LÃõÆë‘ñR,éˆ*`PLÆœçŸ>å³ ->\,*˜¸¤ÈeZ‘à=¾rätïà ±ûbätÝ®‹ ÎP®û´{›ðzËÊ1“€Zýa]¡œŸ“+ÈÑD€ö¬N`Ô§ÃJ¬CÍ&0ªÊ¸¤Ü…„ïëV¢åi^„9P#߇ý?Ó•ăØOâ¡€¯Ù…ÁU©â*aðÅý:6ÜQJ„°}@“ˆ¸—ü’ÁÉ—$‚æh¢s†³4”÷Qµ¹ìL^×e¨ZgY`ªdNwikîhN Œi¨›Ê'~Ráú•ÃåLúVëT¹,:Š-¢ËDÉÚ§ºá°P‡Ð%÷geˆ^‰ÖTb ('>̳Œp!ø8c1;óQ®²fŸú½_\#¿D š2ÒýîÀž0ê;þ3B'Æ¡CËqj‚ºÂ´ÎlÝÛW.ÑÉ­iÿ…:¼XÀÊÏü †Ø |žÔÉݧkR?àLQ˜Cà·0ô»™ÊÔ“ •”=¹_Å+£­ŒÌdxÕËåÝ›íÎMà“Sæãšž©Çm‰ÙI q<¤Qi=#Z ‹ =í\ò¨FìåÊõ&'¬Ûçlõz ÏghÐ¥9±ZüQƒ¹Þ)Ñžd¶KÂàuµ6fmwÝdœ}q´è…×(‡’zÀpÌdè%‘wv&Nr*¦|"¤)¼ 8µnZ dsüÊüÁ{K؆ ݹ¼3âýífï• _ÿExÃy✳ÁìúABÀ¢­ÃsËoéŸLøåµwMzk«±ú§ –[ü£L/ÕfàÐ>jÓ„ luZ”Qþ†&£*é|îœá^¦UapçäÓiwƒ½BÕ†S\8̨ÕC©ª¨(Ä>‰¼0¶†™¦ÀÜÅX•£÷› ÇŒ#’]ŒÁ |Qú渙*(žÝViÃ1†§è8Õ £ÁÈ%XxPøw°]”<_‡M$b-Cîâ\¨|*¤U8ËjÑP‹”»߆ÏýH;ñØî(Dæ*.И˜;wB¨Aº*Ø©%hbNóÅù²ô8ž#ã#ÑúOpq§Ø'@6Éü‡¢U<~%Eâ¥oí[ùfM_´‡!¯pàC“2kÞ 0‚Â’ÉÂQâØ, ?é¤bàåçh)â;–¯®¡S—ðPY¥üf¢¶"¯bü¬QnÃ2|• Â´*r Ñ.ÑÔôBÐóÞUI6Ô[OD½ u–WX±jùÓžx§=ô.û¬ÂÉ¿uÈIâ»Ë­&?…wám`»kÔcß:K¬bò‹DοR¢h¬'wž:1{–ZD2‰buAÅ7hó6”Öîv;¾Ø¬Ä_ ïÒ$à•é6˜x9Ù,NSØÃò_ß ‚h³Šk’†SZI²V1¿1Eµ«Ë¦jnãNà 6}Îlú—2‘2áU5ø EpcŸŸÇ.Û´ê™ï||üît¬p’|©—Ñ«iÌç†h ‡Þ ©`u÷T¨ë`Æ8X=û´´ÊHÂÓ§Í@U-Ýz‘U`+=-þdê¤ý¶Oårà¾è’ªðÍq=gR0.¤öšêgZHîiÂAhçæêÙˆŸàrñÂõÓ¨'zÜž£‚qÚE\Ë5˜ú™ÅZx€sܲ&]@âÞ$ûC™éÊ€šÕ+ʸ;Ði,7¡¸5…½s j½é‡8#ÞžžÝŸ@>xçÆ4UaË”7’¥áL·Ch|ØCû0kiFØ») €.ãð–õMpt;"æaø‰ñ—'ÿ›l'<ã³^oZXkAlõ\) ­pÓHÆö2.ñÝê6ñ¹žÕÐ=¹x¼ÿ1åîžÃû–žqÀ†GW®ïP¬Ö¦ðŠlÏæZq.Óud·=Ï*^†à\w%ÞŸßYí>’CuCes^W1…5 Ùw#Þ"R8ŒLoôF'€±A€ÀÎÅ”½æ_F’Ïôµ/mµbG[ùéA ¥8ž›5tÆ/àÍEá–—ì¸Â8‹M] [‘Noˆ?pzeµuŒõîîMÑ'1_ÃïÍY—A²Îû=,µÝdâ^ïÈ\²ø€ÌjÒ œŸ V©Äèβ´ÈÕyæõzLÊŸÃîª|4¼QÖy• ÅSNìüÅ+žÔ>v•¬¯>ÄY œ Áivîøó›÷™$IHˆÔÜ¢H@S¢•˜ÞÇ +ùKÂIKä„–vÞjù¹£)Úoö.ÒjuÊ0‰u åÞ‘”)¹‰î´Á «vK¢Ä_&KWq¶«˜àÖsXÞºÝ'È›ƒ",šªšÒ2›^ÿ©H¯÷°‹M<ŒÞbåø!?JÔ—›ýÿúÉDƒÅF³^–]M%ü…f#áFï:U8 ÀÑá‚è×uœÒ´g¨BT¢ê¼êùçd [»„R#S²P\V_HžJ`dÉÅ&o‚7A¡½•ykÍ­³€R.ïŸû·÷ŸlC¶h\÷/ “É£Ž1®Œ®O;­QØ&&ˆ¦D<æ |övÌOuXIâùÚ±A0ürãÆäàbÀAêÅêĆ%5þÜ ¢ø½þâ·,ð¾Q ºà¥p¯†ê©4 ò’ÀQf ­¬O~¯µû,Í¡‹³þâp*F/Šãšs;™ÒŸÚ‚°9dôw¢ÿU€úHtö o5¤(~¬+õežBýAòWïEyŒâØàœ“þ|Aæ}y1naÍîîîÆü›òn€?\>ç@Mí øÉݾý9â ÿµ‚½PIÞš×CxI3týÎk›odoœ¶lµÞTW½Q+ìÊí?ÕÅØ4„no‹ãû&zJgu…<äXd)OêÌe´m`M„ØF ƒ9Òà4·zIÝøWÏá‹7™L_%qê=Çéf`d|€ƒž?4w×…„‡7öS$;ïoôœ4|_éÇôZ(÷ºÅ­™)ÕbŒÛ½Ní2•ðlë‰Óxc,4Õ ²+ï§à¯¾EêdÀ;Ñ6{cv?EpÒ_Yè=4NÜÒl¦l‡ÿ ï³äͪ;ÊøÉCr‚†#ésv‹o«'ÆÏ[íÍ7—,ÂP[Ò¢o}ZÉãö#J“p¤KÉ_±|_q»C…=ÇÊf»¦Ì)úåck!Â6oˆg^Àë+ãÁ'¿ÕyÏŽÙewyC\u Ë—¥/5G{þ*ÕZY°µ ß % ý¶Õx¥Iú‰…f\¾ð•ÙA-ÑÏj5[Ç~$G«Ý!Ú# ¡^ þÁ·^\l¹ÓÈ`©^ŸÙ`ësîÑáhãWÏ0W†¨ðcê-“¦£ø†Ëäöx¿¡ÊÖ9$¶@…a¤5àr ÍÒœSªSÁt{ tæX‹:·¶kV†ªXì›þ}ÁÙ{Žæ'Éç–¹W‘pOÎF™D¼ìw®Zš_*s¤‰G‰ïK£4Û… q‡˜‹ü1Z^ z¦Õvt0hñŒz×A¶¤¶Þ¿Z<>â_Ýà ý^ï"XI㵿F(îG:40<%$׋Ž{“ñ©RÈF:Á™|‘Ý#<Ë~Jé\Ê ä­HâÄ™9zOUŒ#6Þ•}‡"8¤FÃ$£iB›,ãHª_«BX—î·]âbd*Ñh˜ OV¡5NU§Oe´Î~–l`’€´Ÿ ñƒ <Š`E¼wtÓ‰SH–*zî”zÉbTz¢‹`Œâùì4„ŽÈlKøPzœ é iv™Síž…Ìõ"1g/y¸† 1\ÏÄð3ÖÓ‚ääV[ÑÒø`ê‹Ö6ØX/Ó2—/¾b„CUÉ3xkãt§îC!xTßw—놀¹=’ öCÝp²™:z AY©¾DGŠw³ÒÌ80'mêp×"$ÉHàæ‹¶€+ÆéÑ1óþÖBw‘9\³9=Hª®Ý9¯ÖPŒœ´ýgý;ÁŒeòr®*R,u `·§Eë‡Ü‘dQ˜"{.r›l¤ž¹ÒiPÙE“ ‡ÇbÑk‘L1û_]o¡ïÉS+'¯¿sÂ~/É"Š¿r’ äŒã8•* %©žÜÒ±T®by³3è"êÏ \×5ž¨4ˆ]°æÐ{ª‘û6LýCãxí ¹¡÷ç’,…ÚöÊÅüQ)-L}Céw?&* 2x"Rο"t„.£°l> ºñßá‘gŸc1g5ÿh mOÝ×çjrF•)"Dfí! ‚®yÄJ‚Ž{b_‡,Z7#ÿš ç×}UɘO~ü¿;šnPGãȈÒkcEüã¼øÐl•Å®ÞÐ@73ëkÞ/jeÍá=æj-Û?‘*»þ ÕJm’™á0œ÷IL“‰oçl/û˜ã1[(•!ÊÊa=¥¦gâM³°K¢^­~*ÒÇ–·‹®²î.`iØG’i^ß¿âß¼"tؼ‹³U¨N4Ççr`I~ܯ·õˆÑÇf<ËøÝñþ#Ä›!°ÇXqÏåïpßm9:çÏ f.(\éÄGg/sé8æ!lrõ»«9C´ $û „(‰¤¹'ä§÷bà«ÞC lM€&÷jb³³[ùS±ì“.Ž$ï Ò¥ Ðì†ÖÀ¦ jý¶%5>Üùo:H0=ÆÍ·ä³¶çØ 3&söÑݦ¼Ù5ÕžµD_¹1åžbØ y,*ÆN`[å˾¬‹¹ÊC¢–PàºûBÚ’ÜÈ”‹?˜Å"žWþiœ›ÊmøM_ë/UÄ”ªR4Zðò³œ6vÕ¦ýà²õçt­ÁªNžÊL]®ð÷Ú¤-7ÊûÏæ|Ý>|A>aub….âæ‡D‰PqÑ’´PTpÒ(ÈΆÿKeäTøßSv‚&#AÜZo²hé Ç€»&äÿ³‹' 9Œ<»¾º‘ĘŽãØsÓ§ÈüOª {”¢>e;ÖFP[†ˆS =×4ë"®Þ®è'O¹d7ŽtN‚Çjeä `ÚGšÛïpñ€Â®Þ–g+Uá'ו•þß÷êüôƒèl"mYˆ>È8º5#׆åV…‡Ž¡Ìo+2Ý‘®kìýÇ{˜%ÖãñŽ €!A;É^_d¡ Ôqœ×†¿.ó᩵Ï(Øe°‘e5¾kSå˜4TeôX9h/Xu0¶:;©-t Bª¡°qì¿fgÒ-Ç0/ R™óóC/Ð8 ä;λðbc ®œb¶ÿD OúŸ…„E ¾ÿ_>á›?ÊŽë@ZÛŠÄ€›Ê„iuÅkPy®r™§ìÈØFw`Hi0pFXä6@͉æ“´wжw³y}å`®·à¾W×#¤ªbîŒB¨<A3ÒbåéËÓ•2óˆbû„Ã3íhTC–W•Ç%•eûoà–2¢Â’V :Cî·/CU¸6ÏPDvtwªÕ4diøäéq-ø  ·<ðDJ™M┣Ãs(+õ{™Rþåk zØšìy¨]À?Ò£_[‡àaÑ[e¤ƒ˜ø6xkAÇIÛô%9™ð³ ÞµÈî(B}°Áÿ~\CO•{×GuÉ€´«F¨†RÈÕ›æÍ³S#Ë%é¯\ÚÜ2J®ûŸÇáïM(Œm¥$‡¹"©ÉRhuË>RŠ·‘"ùˆeè’Q¢ Ž´Êv(;$À°ðÝ+°Ó^>;ÐÕ5÷·ñõúSIÉ•°g4kch¨s„ÛÁ‹¸ØJŽE rsø@1) FZD¢hÊ¥éï»qN`7»äòBnÒK¤²†Ä)ØÅäƒ :æw G‡GÊÆZW úáCqËýl9º¯ìšêîÐæo0åôµÐèÙÕm¬mU!c' íÚIå'+ɃðÎcr™õÀþ3+~)w°¸¬wÁ F% ?»³}Ÿ[²c¸»'ŠÿAJ†¢ø¡ñ>¾ÿ´×#ä²”q•dƒgà§ß¼ínú¥>øIÇî!åfT ¤D"ãoûtýýÓ2ùâid Ãl:Qµ÷a˜ñ¯÷»ßŒè^~l*Ú¾KG‰|òJ{Y4IOy eÁ‚–¹wã2½…22òâ¾u_6«‹s–Jhž¨Hù÷ðÅ…á%ð Woø+±¿U}M8• Ñ®‡¢˜QK¯Ð ‰F_ÔEv+€ñîŽgþ¾‹[%X³,ç8 a*VØ$˜>µ@:pcƒÑ5º_Üéƒ;F[4$I€+v„«‘EHÈŒ2þ‘ß°‘wQØCPX¬¿ · ¹Aªn…Cé›p„º—MÐ?£ùÞK5f:¬)L•—®!ë]´1ÿý¿;#óÂgVbÃ|¦5i¨Ô{…;Y˜<‹nâE`²ÇÔ&(9•Øj}þĶU‹ÍíŠtÒ»l†Ï¹έöÅþÿÍw}×aùùîðžšQ £;„q0–Yd-³å3@z®6—>Opï Äbvšã™ì˜a®]*$<¦S‰CR Ͳ¨f3óÙ_æÖ1&ÿ6Ò‡Sœhl©¦ä´aTF|éÏê£ÞþýЛó¥XL)ÚÈ-ùA‡4°̵vfàë^Vïú0Yûì'ÓßøÚ­Eî½­½'*ç™ ¤Í4vùá'R˜BÚb ±â)ZG+?TW&›–‚£Ô Ænë{‡O&úœà²Èe‰7qf½KìO0¡K±þÊ#ŒéGmfÑ¿BY”a§Þë¤^P©¬D§X²'|ôy×ÏΈ hz®Ù/}„2΋¬ Ö-ÿv@UMYèŒØ0"¨¤-,­nÁ—¾ûsf¹iÔhçQ™Cõ=Ó$òéyU&Ss“Ãå)‹ŸN™a¡‚£$Þ SŸÔƒáưX…„£ µ$‡ºY·Ž)Y³¢¿0ÛtÕ…½ÚRàˆªg*ô “<”ΛŸcüƒír±š¸ËòiüóÙ‚¤‹‚0zæƒ;<Ó8iRoþ’÷ÐÝVÁcÎD,°ßIo*̺ˆÐ¿& ¸VàîÑgÆì²ÓñsÓgÌ'ÐòoØ™•¢íÆÑ¢õxG÷#gSûê´•EÊhhŽQA!òÍ FǸèžÄî"’EÕ7øõ›vÖtá ´a ǵŠgàÁNcGÝè$ 0sM¥Ã˜aHR‹ò sß=Úgå34¶xd? ·ø‡Í‡¦ö5ú_­ .ä6h¨±—:B†j9›(‡€˜ ЫQx}ò£zVMúÊM›cIÆRÀdDúIøâV:Û°ïç¸%B»üL“Èص…†¯Î–xÔ7>ÏãCTpÃ`“Q€¸ ,µ>*á²V´&àŸì_/zˆx³­è3ê9ï= ¬`á¬?ÁQpÜ?¯mfNb’Å&†fÚÛAnW8mlï!Rµ)ÆÛênV;_}ëÚ>Iînü¸†wê*­<õ(k!æHì3/yîd‰%°]P&ÎÁ½W¢.XY\ó&µý²ÿÙ¸ÜyL^xTDTm(Å+áÂ[†34,ÁÉÃa*Æñ?SMú®É-k,½œ?< í¹&z-ЛD4lÅ§Ñ McruÕÑ0xì“k–¼Íš+x:“œ[vœclÙNJ$¾©RAp?ÖôîŽ6/ã>!êÿŠà-ë¾›7›z ªéL3 ÊdôäˆûXÌÅñ3©ø¨BÑ×Àt‰»v¤béÀâ7ú_Íý:I¶·pgðU·û(•3„Su5}eÃTß¡(³èÓü n/¨Š_()é®é÷„Dc«i]¡xÂqâ X“šµøßC–Y™ ˆ_:zC¤¾IÇ«Ð=¯]ÇŒæjÍæ4­Ã3cëd*º}œ4ÇtÌË÷ô­ù¢âöT ÄgÛ FŸÊÒ#J±£süèØÙä 0U³imrÄ€€“LÆ.Ž…Pç ¹UŒë®~ÝóþyûPnægo›v—ûJ¸LàHCM$NÖŠäAñŸü²àæ-¸2Ã~âmËoê]ªD—åo™RÇ”V+ò†¾‡'&.Q]õ&½›—¥ìµdQ}ãYA7Wd]Q €ƒG)ÕØNKÁYQXœN',m°µ(Óu=ÎC aTô§ÅœõªaÙÍaÏã9‡¶\¯É7#9æd-Äaì„ O7è(š#+ÖY«%ÌVܱ¹íôÇò<§Y‹&C  Êðy¬¤ö–0Æ«a’íØ¢5 =#ŸÎ0ÎÅÇYyqn"¦³‘~ ×_þWç6ïFÔLØ͈W£‚j~MYl9s”$ãu5i›B:"ËÌG{—&yD5óŒú±Wr]Aþ>S±l¯õo³\ëcï ' &R°¹ÿZÌžŒPФvŠÑw—_€×ë?¹+©¬_ÍÙs‰‚ßä¸ÛÖFÐñU‰n–¶wß{YŽñ·D.ö%Ìç·½Oßí\º&ï(m¹/™ÎÖ1­©¶ä«6TÅIÕSš,k+ï}–…öź*å'=ÊfïÆü³Ü/Ô{Pæþ6xSᆢ—”=‰ì[NÛÒ°M¦41J§ïXÃô1éÿÕ—=©@"Ã>:i“0W/ØÚÏŠ¹ÏöçbŒWse-UÆNή7Èyü£P(ó;sÈ2;5Öêç²µ»êçÚð[;4Ê25Ø¥7êÜ€ÝÃ%gá_€»*HL¥¨óÈSijt '³M=úr9Kˆì«Áôé,Þzš[W@mª—®¥vA)7ÿäâh˜SǸoØi' /í„‹Û•«>Çx6á+½û ÆŒ ªO[`}‹rL$ÏmÏOT",îNÆCñÔL9н™é‘‘ï¦vuÂS·Ã”bþd _œž¶„ÆsµHÝIðÃRRòéÕÔW€ælÞIú–S”/(­DBix¢q"Íw¶éÐ ¯­ÑÓ‘îDQÓùNÆTp¼tþ-"RðT í`ŸvE‘N”7Ùʬa¾‘÷l_yÉÆ¦÷>i ÚÞ;•%à ¬¼>Áv‰¨Î£š8{''Uöž'Ь £Žäš¼y(Ð;# 7ö #ˆ«bÊ[8-·i"˽¢ÖWEh€v6T´Ø4xÛœcy¦\N¤…=¹¨IÿÖV„ÃhæŒlíÍ…¿º†é½´ÍŒï)ºBíO¯ÕaÂˤxiPUu" Ž3º}A+·±ex¨4»ÏâdG»0òÇm³—ôYg¸ñFçÄx+ :—¾ A-K+mSQ%).H‰kÉ8‘0HÛ›ze ²o߉’7)¨þNŒoxoôô¼¢Œ(aÞ`¨Ô•K×ì€Î«}®lÐu†ç3±èbÚ‹M+Š"ÃÀjãM^¦ð\—´ý³ûîy•òê—PÕ>*Ë`Xɘ‹U¾oh,hœ™gIi`WÛÎïjµïÍ`M÷B´Gcü0´(‘û+g@*$ÞÁ[£&¼‰æÅtYqxì|ÆDûÚ¶I>T]‰Ì†½ø‚b„èi}$ûÅc ÿö†éøöÅ÷xŽ—_©òÿÑé›uæœ#•òë<×N.a´@Iß eù•#2(I©¹8Á´9¸bw ÓxÉ Ì>êQ5Ý>öƃùmËã×@ô£ãYA•™á^âAµ§«…-µpÊ]0luº‰š[àõ½ˆ;nߨêråöhx¿á Q*ÞH/,}ÐÖb õïfôÓ¾¡Nç2rBø¨ÙHu 4Ò+|6²ËÀqÕÊ´9»2 x1þóÉxVEÙ™fÛS€„Å/- ö¨œ$ЦÓMîÉ\AÉ1ÝPvÉ·9ŠX«¡ªzݬ·0•}ú4üØaˆÛÌ|Š” ž{?©Öq"+¶^«„_w‡ëø*Y§êÃÌÙ6õJŠ©ãl˜?¡7n‚_áÔúÆ+Î=Ë(\Q8!^êÜ?ùPD–®°ÄCÜž²Œ?'½DŸ·ìÆaiq†ùÃË’/+œœÔ¯Ö;£Íq©ZRÌÍPÉɾ¤}1#ÛH˜§RuÙ=têßç+{ãgŸÝ­LˆQ–Mº )€3qïa¨9ß²oÿ•Ht–´( ËØŒú»ù‚¬µå­‹MM&ü#/æSé³ Õ 0ƒ>+r§£Å|—D ™!1Ï çpxÆ7o±‡ëoÊÕ[@й+™ ¡Ž»¦¹-\âX][Á[<Ã&CÇH¬3é_¡³2†p;)i‚w+G„·b>n«Ã ŒT%˜¹p¾Ø÷žÂÔ"‘¸§p›r‚‹uÌ–fË'2b1dL«¸è£Àzݨ[ÑD®Îœ.ž•Ÿô*¸VÉðÄ[ KÖ7C†ð ÅhÔs€+@ùé¨ßWw2xKRú­‰03íœÂ™e@éºé‘n’vfáí4ÊÀ"‹Œ{Ž Œœ½íû äÕÂi‡3ñ‘+è?ÅÉ&2‡ÆmPYØOR`C‡àhHPÚ9M+K¿¿ÞÍE¿ˆs€tQ*p~"uº(j‘ù£.dÍt)ª®}ÖÒŒ1YiIE–Ôƒq~žÌH 4žÓåýꈱù®~šÚÛ ì^¦ê9Ÿ:”.4ëå´ƒÏyì§h^'Œßn¢ûÒ§Ëñƒõ%wVÍ>4$yã«u¦ßÔù×óZå*+ÓÏ\“¬¼1g½É§ðÒ] ìsך˜î‰§i夯é}Uh9Æaµu¦`Ûc™´=ÅMTð~‚™bzBT±ÝwƒÌ|­´J–èåL·*DŒÓ‡úÌ+æj]šEƒêkNv…sž"õRHŽèÓ‰é½ùÎÑQÿº·œšÁpÙJÝR'F ¯>W÷pcü­ç?ÅcûPËðò‘;h™’jký‰˜oÀ`ÉØ:x þLMä“`‰#Œ¾k—?”“ߌq#p&FDiD9žâ[Z@Ó®trˆy >-_\9U8/¤P¸jXÆ‹ÚÓþ“Øá„Î%pÌoŒ!âwÝPmL€d7LÛ‰ÔÅïYÿE¼©‹¹ÿ^R¼X™œ)lâø¾b·£M*Þ•M†«±’[$)l9 q¶Š+(ë¡WTGþÿ%ö؇ï¶oëJ7`hKDö;j~6~7–(ÍsBØ y‘?G—þ¦PjVÔ}Ý~ à°mR5žÈÑÿðP-=x˜íFB—M¢H?m_OHû¢†+–„ÚÕñþt4xo(De#úE”.¢–”à?,ãg¶ï‚ˆ;6ø|ÔVõf¤v}1yJ‚u•êNè¥Ð%Tcÿ¤“³Nà¼lÁÒR§àùµRneÃåvÙU[ÌŸ`½Óݺúìïäeš¼â0ïÌ;ø½zÃõÏî>­~ Éò}Ñ/}…ƒ|ši:3×0˜*+…M[±˜yÜi ýÑ:z…‹ñL”›ÒkI?=ÈžgÝÇgìfûi¨8P¸ Ï®ƒëCZ_M"Q}¨¢uÖ ËÊ”Dl8þ?(¸½¾ë=ÍgäÖÉ«$Ÿ;Ê«÷ïüø,7óݶÛêY×MQ[ñ•ˆùžÇ¯b/Ù¬ç¼]…5´”CŠÑ·º/ inwT>¥Ÿ•[Œ-6M •ô±tÈxú¸Î°1/ÂÓÆ+JŸo ê¼ß§ƒš% ób}:Õ­Õ½¼÷['Wà÷#¥vìÊÌÍi?Y ™ÿø !Çþº¯¹!À©äNŒ:‡Ûi²çzeÑ6&£;š‚®© `vÔÔµS;<âM‚sàÑ^9«€XäMÛ’pX¨×䆭Ôi*ðèRðÁÉ*k\ÔçÄœwt¼ãRVD7æU;d†þÉtQÉ4Óž±7¨ì Hoò§üKÓ¬ÿwð;’ñš_öõé–<‡ · wù¶—à|ëu¹®‡°?× â‹”$Þö'Þq÷Pï7Œ²dŽ qtæ/Ê?ËÖÆñù›¤ê´“â‡QûÅ}h—U=½gYúœÊp®šsr§ ÆÎ5|¾L(•uU]’>’Ú£„_²ÚÀýË5Z\¡ód|…ã·Gñþ¡,øª!bà2!½ÍýÊô·MÃìáe|Ù›ÃNÊ‘þy‡ýuÓä40{ wE~™NŽ8¹›m»S :ÇÌX§ú’» Ž*: Ï?dR”='^*ÈIà³[9Æ5QÁ¤?<5d­oÙÑ‘*kE‡N\g²XÚÍßk¬õ×5‰ž¦Æ-ã¼ôE…šXÀ×DX ²R¢n‡û¿,å•å¯F¯>íëuêi‹-?X+v8€âºo*§Z ô€ µ¼çÃïauZM›ýšÈ\÷@p!Ì2Ë„ÁjÃ~ƒë_ k{ë"Üãù¦pk¦tvz¬Öø†ñ²¥@7®‹…FéÝ×.±‹Äv?•Î*’òâž8 ø¼^aûÊ–"ÇÎâQaŽºuEBûŽÞ2ÔŒ è‚ù¾t.Êþèó#°^¬øFø|ø3æý‡~&†¿’¸uüiw³Õ$èØ¿Ã×!‚¿6Œ‰PkŠ*`BφØÞ»‚2\±ÏBÌ]Õ.)Ø-ž„ÉWå+®h¦A¬2BŒðŽ,´O|¿>‹QÞ·²ËÇr"qsmAÿJgrVšK,,HŠ6þÙPR&š ÌDIÛ–2èyf;|g.¸_&V*5¢hq”{ÖŸ~ ?É€ðf6DÉëà0ꇙW~Î\ÿÒ·I ÈËÅe5–ƒ ~’Ðr…N NqŒéÔߤl":_ ]ÿ<!µ%÷6apDH˜b …­ÒÍ‹)$3ÈŠÏ3À"¬éån³¸!4ó­ÆûÏ·ºr¢1m6hgL2\ì‹/†áš ëd®Æáõ{¢•-äLÈ_¨¯º€„Y",v„-M­ãÈÒóf¼Â"º{©2Šó0Ošâ¥Bþ„Üé´³á<#懼3`åxö`󔆔ì±vceÁ;êºÇµ‰Òìºy”‘s[Au2ã’Õlⵤœ­¤( †>Ólßt}­ó ôÆ«‘ ûp+=v<6ÉÄy,ŒÌó•ó¸ ² wg1LþžÈíòŠÚ|Wa5a‹ÎwíÐíˆÔÚükN”ƒæwUx®¼XîX#ÌàaòŽ^Åéöî { ¼Ðd¢ïÍ÷«Û¡ ãß•¦…–\÷V±š–d¡g&;'Q©·Êœ×i©¡m ÅýI•œ“`ä™Ö_kPkŸT¡l’»ˆÆÊ‡QÎþ`sR²¹UQÐa)Ê :ŠQ×ñõÙÇq놽Î@¬ÈóX1Éåío]S2']tˆBŽ—ÝÒJlð0¨ÐN>ë~†æ¶æðºnͨ´€m²Û<¡)Ÿ\mC¦JÞjzo¬`Œì†ý“@}kØêH}|Få k4&a„#XY% Ä•ƒø¸VìäÁ  á.N0U@¬f.þö‡îËW-ç”sçÒ/ä½³ šRoh´qû Ë1‚úæµV%ùÂfJª?ûù·™âü’îzÅãô³¦©Ëí5ãN†Ù·åä^Êé‡jƒ²ò¿·Ž© #*ù󿶤_U×;ÌkžXR9]\ÕÇxÅhtÛ£¢ÿȱ±ê M›E™aú ¨Î&þªö,½f7˜û³ÍMnæäõ|Ç\_Æ™ßAec>øÍ+â(Pɉ­èå³oÛE÷¦øåù$´Öp¹ãÔïà +Öô3u4T³Óï¡bvW}ãòiËlW mNÜ(@“¤²Xb¾kÈg  ¡©%B4veüÓ âœVvî«»>&ÿ !Ê!þ²“e¥ki`áçg–À—ØT&¶=_”fÙÞßù2y?iuO6âÙ"ž]çØ2çŒúâµ4‹tª†æB]€™Æ±ó䢙ûvð(½Êø­ê.Ž55»¤´*_0Ñ1) óž§üIᆵ]rDêÊР?ãpvq(hzHƒ­=•zñ·h†íµžsEßÑC¢L½uè(®0 §ÒD7Ô¥ðÕ&]‚ËóšOT-I†õ¼5f“e™†AQ É1-"€?$#ߺ“+»ÊòKVëR šZœÈ¯&ˆµŸ4Ž{°‚;,„›ÚO½éØž—XžÁúŸ1ÿ…Ð{mXÕŒåÚÇò-—FÇÙb Ü€EâÐ]̯Y*TpûN»Î;Z¹I´äÉûØvs3`üà/Û¥å{3F^Ui›[{e}³m)ãø~édzoïÓiÓã)D Ь&i{4ÔèpHìT÷ÃælŠe‹¨:…é>2»ÆÆA¿$Âv¸\±íaò*Êý½7¹”1Lä·¸$Ý&c+}Ãv¯ÓÄÖkåä(+tûnNM@LzEò«ýA ¹Á é±Â¨îi^Lër©Yç™± }̲FCæµA R‘Õݤ™ÓVÊÁH¢Ö#;c äŸݨe§Jð†l/ÌY_oРÍÀ¡FS˜ŒFUL7¤ËTCè¼U5Ìß±ÊÑÖo8¤ÄÎË×üÄ{½;"HÆwôùäýR=DïϰZWäZâŽ>ÜxQ%ÙUÓ¹AôýrÿT{ž«0¿Ó>>ÿ†ü~X,÷>ï˜fÖæ,ª_sLØüÀ ô8~\äÀ­Š‹äï2[,'šC\õ 2ÝÍR–(PŸ¶w;G]Á5bWµÓ©Ùïi•£}ÓðÖÎTQ„\ù@ù`íXàòÏ]m×DsÄíÇ&Aâ‡â•˵:îü?óì ]º¸Ã­1åö³9ÁtŠžX…lÝkð‘"{(5v}šßB§¶9®À iCyO½*Q¦o†êj}Ø+B¶‘àúº¾?T…ÏtÔ”¹ußø i‹úXìµØÃˆsrKû¦± (*Á*éQ='ÅÔ]ûÄv1»'Ï¢€l,» Ú” eç_•hFôæC‡sÉNŽ®×º^‡¨†Úz„nâšCÏÂÑ0£þ´v ‘¶¬5|—4‡W:# ÿt¢ž ;׋‰ár›tùµ‹ñþ_®m× ‘£0ˆE66¬+¥(mÚ 8 þ"5ÁV7ƒÕ)§(´ì,d@[|—®V*ú$ 5ýž:nFƒÆ2¬ –ŠvÇuÕT}…×£oñ/á2ÞïI~•VËåC§oŠRk|Hî¤õÿÆ7Ú\éT§B¿9ƒß×jONHILW²WzÚÌ ;ù°ïúX`ôTì”v%ç ~Ne*Ï'oWòE@­Ã]Püu—¡P*Ž¥Ö~x†y „Ý"^ƒÙìªÿžÿ§z¬:å}NgË Åþ4®BwØd…oï­ÒíÛaèY]±²ÊlÊÜBS¹S¬ïûùó2áÿב‰ŒÐïŸdÖŸû§’›¯½ÌË”3sïÛ W0iĬ˽‚ßnÑbO¸ÐÔ³åa [U ~îš³^Gé©oäžÂqj¦‚$ã¦ZáémSîEMÝÏ”ž9w3N:šäY_6c“Ò2²Ê¢D°)ò¼`-´!áLVY+·ûåé²ïpÝwÛëCëÍù¬•·Ôj. ÈŽ;}4Æû2“çý| D{.µÅçô +ú:(-…“,ÓÃÐ[Ó|\«4n›‹µ˜ŠÝ—ÃjaÞ(¦ŠT¡~cöÅ`AO¯8Q\9Q©3Ηêu¥ˆ1 VL£ÄÙº³FhÆ­¡y,U °)^j*İj;©ŠÊa©Q½Ànµêa)’ºÙs­p?[%ÑGÍ’çM‚A@΂vß8˜ûþ2È~i/Ó$þxþ‘±xœŒ B¿wÂìÃsN:ÞŸÇq~Òæ—›ãG÷*QK”:í%°¯ÜÖÈ7A‚íæ$‘EŠ^§o©‚ÃÎÚ•']Õ â«?¦/UEøÎ7„ž( ‡ÚË•Ô×ZâîÙ—ÚÓ›§4`ƒ Ff cÔAnÁ¯¼Ûþ–kLL\ž×± -j§:úûÁiçRÛ Vú(¢ššëúN®Ð4xwŠþ‚àª-·žÓzøÅ¹@ìÆ¥ûó‡bPR5A[(\rÚ!ôÿ˜cväÀHC$³¢¬ümyoõ;T¡§=½­’@#Å×ý—•šŒ^ê…Z·&tŠo ®o‡š:Z‡÷ür;zn…™êE+é+ŠüÔ¾]=,l@˜MH:Ÿ…dŒ£w¤Í—Πëû—¸°}¦þV”Ã/ ]#ÕŒ²YåLFÝ«êìŽÁÅ’#7¸Ë'A4=çÑAç1k/ Ç\bì×aATŒ1÷¹ pnNxÎT¬ô’"U0ô'¦½ÿZË®‰À»ÙãÞ¤äÇÁ7–¤§Ó*¥còB ©º\ %†—ü+ Xfx¹_(£•ü4\´ÐÞc>@cG»ƒåa&‡+8œ½WÃY€~:æÎ#Åñïtké&%áaºÁXL·™@Û˜Dê‡&§»lÈþgG&ãn¬ÍÑ¥á‡Ôž­~Xî¨ )–Š.J5)Y.ùÊ’sls7ØZD£Û ©o¹¿ÁAw¯ázª'·ž’´Õ?L¹Âwº¸8Æ@ï¯>ôÙ\÷¼aO>ìîÖ¦Wáû6P]ê(åµîO8†Â?gü¥Òë§¥ä³í®êŠ~mÀAù˜CöE»8¾„Žä•³‘û¤ÀÓŸ;[2¥R9~×X¾áàðÿé£yÞØÊ=¸;v|;ªb¾?°p'áÉkâe— ¸@=çwPVPgô/‡µî¶P$¨éŠ;êõþ_ˆÞÎõ/­Xå Ò‚­ëÒk;‡9Çyæ øÇ)xÈNö6;zy±†ãŽŒ}ßí…·€_¤B¢®S† [¡)­3Ò‹Ì6 ¶ÍîÃzl+tVðÃ@/Õ³ãÜä;GžðøÅqý+â)Ç!ä‡)u_ÏñK0ÎüÀZð锘ô¨c+…‡šðàI_ïUHò¡øÉ‰&ÕK¡ûDŽTTš$4¡ûÑRçßn§ SÆY\ø$Ìw˜Mˈ·4q1ËrzX›e—Ã. R¿Â³kL ù¡Î'F™.¢í›-á²¹¢‰h++ä¡2Œv¼@½q -‡Ñø¹ ­•åØ ø1KEz/0L£0ÔWPŽìÞh!Ѷr±—3“üüÔ2î°ëO³bÜÙ´²€ë^â £…=wžÚ§à;3œí _@L:nírì1òZfHâ·5(Äð«ÎUÒ›ÛÁàgÀ´OŠ> O@—Å£mÍÆ!ã'GfCÙŸ_]¡YÌuùósŸsZa&)½3F¨@Úß aV}ˆ—íÂ,pÝŽåÚ‘q®F¨Ñ׊dÝ.,¥Ÿ÷ø>ÇNÀç†Ü¡ bv@¸_>¤¥}ªé–Z÷7à‚gÄ«ífÙÏú"à\5”¤ Ñ)1òdw gs‚Šï²Q„u]¢]ô+#ô“Ð$Ï8ÅD%x0æZå“}è¹àñ’‡X’݈¿MóljG V{zå‚påø“ÏDþ@RÅÊ73£mäÉi8ö·üÒmíË·­O%…zÔðoj#§H%G|‘)hü±=èQ{âH1Àâ#¦­x4£Î pY‚-f0”ª}èÅ$ÑàåUŒfFUEJ: ¥KPBœZ*ðÃÈbÆÖd¯Raen?ú ±üËQ#(èzãÈ<£ŽœÏ–®Ñ¹>øäÕÎ{ô~ЀĠ«bMÃÀ0‰½\A^‹£=²‰ðŽ^E†^œâîž ódg&Ý%Õê¼–·*},‰¹/€0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark €dvipsk_TexLive-2009-stripped/testdata/texc.pro0000644000175000017500000001010511372532227021371 0ustar uwabamiuwabami%! /TeXDict 300 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}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{dup dup 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 /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 sub]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N /cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add /gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{ dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1 adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2 idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg} {adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{ adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]dup{bind pop}forall N /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 /V matrix currentmatrix dup 1 get dup mul exch 0 get dup 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 /IE 256 array N 2 string 0 1 255{IE S dup 360 add 36 4 index cvrs cvn put}for pop 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V{}B /RV statusdict begin /product where{pop false[ (Display)(NeXT)(LaserWriter 16/600)]{dup length product length le{dup 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 rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg rlineto rulex neg 0 rlineto fill grestore}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{SS restore}B end dvipsk_TexLive-2009-stripped/testdata/ad.enc0000644000175000017500000000505711372532227020771 0ustar uwabamiuwabami% Name is ad.enc. % v. 1.1. % lesenko@mx.ihep.su (Sergey Lesenko) % % This is compatible with the Adobe StandardEncoding, but has the % additional characters sometimes present. It's used as the base vector % for partial font downloading if no other encoding vector is found. /AdobeEncoding [ /Zcaron /zcaron /dotlessj /ff /ffi /ffl /trademark /Ydieresis /Scaron /scaron /brokenbar /copyright /logicalnot /registered /degree /plusminus /twosuperior /threesuperior /mu /onesuperior /onequarter /onehalf /threequarters /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef %% 040 /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash %% 060 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question %% 0100 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O %% 0120 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore %% 0140 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o %% 0160 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde %% /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /.notdef /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis %% /agrave /aacute /acircumflex /atilde /adieresis /aring /.notdef /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis %% /.notdef %% 0240 /.notdef /exclamdown /cent /sterling /fraction /yen /florin /section /currency /quotesingle /quotedblleft /guillemotleft /guilsinglleft /guilsinglright /fi /fl %% 0260 /.notdef /endash /dagger /daggerdbl /periodcentered /.notdef /paragraph /bullet /quotesinglbase /quotedblbase /quotedblright /guillemotright /ellipsis /perthousand /.notdef /questiondown /.notdef /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron %% 0320 /emdash /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn %% 0340 /.notdef /AE /.notdef /ordfeminine /eth /ntilde /ograve /oacute %% 0350 /Lslash /.notdef /OE /ordmasculine /ocircumflex /otilde /odieresis /divide %% 0360 /.notdef /ae /ugrave /uacute /ucircumflex /dotlessi /.notdef /.notdef %% 0370 /lslash /oslash /oe /germandbls /udieresis /yacute /thorn /ydieresis ] def dvipsk_TexLive-2009-stripped/testdata/cmsy10.pfb0000644000175000017500000006400511372532227021521 0ustar uwabamiuwabami€Ù%!PS-AdobeFont-1.1: CMSY10 1.0 %%CreationDate: 1991 Aug 15 07:20:57 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMSY10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.035 def /isFixedPitch false def end readonly def /FontName /CMSY10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 161 /minus put dup 162 /periodcentered put dup 163 /multiply put dup 164 /asteriskmath put dup 165 /divide put dup 166 /diamondmath put dup 167 /plusminus put dup 168 /minusplus put dup 169 /circleplus put dup 170 /circleminus put dup 173 /circlemultiply put dup 174 /circledivide put dup 175 /circledot put dup 176 /circlecopyrt put dup 177 /openbullet put dup 178 /bullet put dup 179 /equivasymptotic put dup 180 /equivalence put dup 181 /reflexsubset put dup 182 /reflexsuperset put dup 183 /lessequal put dup 184 /greaterequal put dup 185 /precedesequal put dup 186 /followsequal put dup 187 /similar put dup 188 /approxequal put dup 189 /propersubset put dup 190 /propersuperset put dup 191 /lessmuch put dup 192 /greatermuch put dup 193 /precedes put dup 194 /follows put dup 195 /arrowleft put dup 196 /spade put dup 0 /minus put dup 1 /periodcentered put dup 2 /multiply put dup 3 /asteriskmath put dup 4 /divide put dup 5 /diamondmath put dup 6 /plusminus put dup 7 /minusplus put dup 8 /circleplus put dup 9 /circleminus put dup 10 /circlemultiply put dup 11 /circledivide put dup 12 /circledot put dup 13 /circlecopyrt put dup 14 /openbullet put dup 15 /bullet put dup 16 /equivasymptotic put dup 17 /equivalence put dup 18 /reflexsubset put dup 19 /reflexsuperset put dup 20 /lessequal put dup 21 /greaterequal put dup 22 /precedesequal put dup 23 /followsequal put dup 24 /similar put dup 25 /approxequal put dup 26 /propersubset put dup 27 /propersuperset put dup 28 /lessmuch put dup 29 /greatermuch put dup 30 /precedes put dup 31 /follows put dup 32 /arrowleft put dup 33 /arrowright put dup 34 /arrowup put dup 35 /arrowdown put dup 36 /arrowboth put dup 37 /arrownortheast put dup 38 /arrowsoutheast put dup 39 /similarequal put dup 40 /arrowdblleft put dup 41 /arrowdblright put dup 42 /arrowdblup put dup 43 /arrowdbldown put dup 44 /arrowdblboth put dup 45 /arrownorthwest put dup 46 /arrowsouthwest put dup 47 /proportional put dup 48 /prime put dup 49 /infinity put dup 50 /element put dup 51 /owner put dup 52 /triangle put dup 53 /triangleinv put dup 54 /negationslash put dup 55 /mapsto put dup 56 /universal put dup 57 /existential put dup 58 /logicalnot put dup 59 /emptyset put dup 60 /Rfractur put dup 61 /Ifractur put dup 62 /latticetop put dup 63 /perpendicular put dup 64 /aleph 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 /union put dup 92 /intersection put dup 93 /unionmulti put dup 94 /logicaland put dup 95 /logicalor put dup 96 /turnstileleft put dup 97 /turnstileright put dup 98 /floorleft put dup 99 /floorright put dup 100 /ceilingleft put dup 101 /ceilingright put dup 102 /braceleft put dup 103 /braceright put dup 104 /angbracketleft put dup 105 /angbracketright put dup 106 /bar put dup 107 /bardbl put dup 108 /arrowbothv put dup 109 /arrowdblbothv put dup 110 /backslash put dup 111 /wreathproduct put dup 112 /radical put dup 113 /coproduct put dup 114 /nabla put dup 115 /integral put dup 116 /unionsq put dup 117 /intersectionsq put dup 118 /subsetsqequal put dup 119 /supersetsqequal put dup 120 /section put dup 121 /dagger put dup 122 /daggerdbl put dup 123 /paragraph put dup 124 /club put dup 125 /diamond put dup 126 /heart put dup 127 /spade put dup 128 /arrowleft put readonly def /FontBBox{-29 -960 1116 775}readonly def /UniqueID 5000820 def currentdict end currentfile eexec €U›œi_,+õ`ôÀÕ"WºÈÎÙ°š'Z²1NÏ‚“R‚oN—]ÎÎÇ+,󡈙ÌÞÙ5Ð; lƸ<ßO#¹¦ ´™v¬32cÉÜïͽL„í£nt‡cMŸÔZô£ŠV¤A,; ¯úëq{ðÞŸûz„`¿GZg°ÇºW¹Šb3ÙéðÃðÌk,j›¢:ó‰æßÿNþÃÞÖ'lkäp<å7%–ô탴›¸só¦9ÎóV"›dw “?ï;¸+ÿ§÷Ug±úMs›w/gNVu4ÆÅ»ñÏaSr¾ ±„r÷ªX¾Œ!m½ßÌ †¶Ø1Œ¦â,Šñ;T×WoäÊZzù^¥ÌNÛyÀ«fŽOìKZžµðäÀˆÍŽÌOëK@ì‹Ò˜ò3`t¶LC€¢Zþ)ÑíÿhûÐ˜Ú Óþ5*ïf@Žº€c¼õ‰ ²¤¹QN²ŸÇ·ô`Óty««…mÔ"¼yƒÇÊ!8pR¶Ã˜´;d_T¯¾‚-Ö+ιW¼çÊ¿Å?=ä S•(â îKŒâ®®©¤oúÞ£ëú4Vc;)ìmÚml¤®õƵohåŒÓ©~4ý„_,a&»oûrÿ@¡8Zù/+ÀþtAÁW±ä¯ú¥Ò}º‡§|EøD*6»‰\OÂOÈ;トéÖmÂç莟“1Jä‚3×V€b‚žË”¯A—\Øñýôö&æ°Û5h;y ïØ›”‰L<ÌZé¥~Þ[L_qÎ|_4Žõ‰q.ErÙ µˆYâã3‡oÉ%jWECáÂç¥^lÉ¡”ÛÚQrOÿå°·TflYôI=”1Í÷dÝ~br%³à,Bz“6"¤ºZ¦r~=Hg•×êtªZF§Ãÿž¾sÞ5í8Þ*›§ý7 [p.!ÝÖ¦šk.)¥©8IÙ$¸Dà3J ,•à‰¿õ^%b ³¦‰bÝéˆÐè÷”|È"ØV;{ÕmiñD’“ãâÍíphöão­Uq-í–t –,Ùë©ËÛ EÕÝšÀÎ(Ý'Òþkqi´ ½ 2ÖÙòѹ)-Ô‚5OYÛ‹ÑO—[Š0²õ$ÈfN[ÙÁp»ˆÊ¿°½ýÑ‹ÔMD;û'„ Ýɽ"7j¸°B{d¹n:&u¢‹hñûoˆ,yl⪰¹@“–U-|ö«õ¸^“³—©áËtöèÌÞëm1êù_y(A@"E#hÿ7¼W™Zʘü¢ßGH¿–°ìÝOBÞ  I©—Ë%ïzÕl]‡%j´•bOwìù$m{¶Í¿ÌeJÔ(“.\ åÒÍ¥õlÖ+Ë“°[ÆË^$Yó!³¸$§=BaƨV «Ë•ıOµ ¸‚jif¢Û -ŸþÑxºbYÐŽä3èµLwÁ]Ïk“_{yï3„ýA79^I6ì8g{û¡´ O_€P_hʨõ8ë~—0j—EÒâ…^ðPãÒø½ÜM³Á³ÓsÓ½'LS5œkàk¹=& võÆšùls¸;Èε׈æ•qíÅtç³PAAÔqy$ïÂÍØÐË–E i"Íèï{){ÏÜ Œe ÐÎT+­˜°‹÷]LªÃÅwXNÝTÊõÆ•™fm²åWVb³ÚQX#MU:T\ÎA:Í Oû%+®å‘8, )0ód•¢ÇÚÈñS¸iÇ}Š ªàW¸Ó,ý¡u€Ép¨Ðüb©v÷…¶ö~–eÑ¥L/YK›Á¸Í #æµ<åî…™T¨ŸhßÈsöEØæ ÷á1\ÐŒŸ Eúu”¤ôOw5\_®N¨CBðJãç…ÞÈ2Þ‚¹ÆÕx5s@€ß`ªDp/ž¡¯UÚ2Aóa4BÖ?kTíWïKeN ¦í4 “rÚJ™©‡Ëç…4/©Ò釉A{‡¿ªÌÔlÑ\jÛÕa—p 9×Kâb ÙžI©Ü‘çæÐ¶ª¾šýúS/ÿàüÉ 3@àñ7瀞ìg§Ç¢mýÚÛï•Î ïX¹ó,VA¨zÔ©MÐàñÜ3?fgÂ,eÙ•²}%7yE‡HàxÕí¦íŸ„­³ÓUGþÒ›à:Ûh;¥ žùUÍ©Ÿ•ìE¶²?C ]ÊýûžƒÂ/X:e8¥È§6¨³M¾pÁiž1DªÔŒü2@_gaOêý¯³žä{‰±Qe¾#˜¼\Nf…ìÙW\fÝ6¢.A‚'ç×C>ØVTäxÕ[ :°§©#xdôýjúr‚ÚQSK›Ðÿ•¿•N KÌ; ÌÊ_Ú"ÔÀÖé!õ6‹©møœ9¹£h¼vúk§¹IFÚ[p¥{›Õžì-å¢z°¨&ÏËg\µÂê;wFG–,÷Þ°Tʸ§¹Ir>¸G¥DèÈ9ól麱 >KÏlÄlÆ¥gÙºÁݨ‚\rdPhiÈ c5g»"u½qâ„èðrô¿)óë!@;+‚¹}j¹¥ÊQ.DŽúø4•Âüsg”žTT@”Y)‰×¡Î´:ý õôœÉ–FŸRE¨nÒªoø'`0쓜¦º3KF<þwÄèﯓ•õѼ²„÷ÛeúQìá{Z27¯2¦žr§LOÞÖvy0ΤQ}ù§ŠAôt^NYKɯÅî€Yº›¿AS©ÍÄ`Qj'½£¦™~Ä3^Ü ÿ™Li¤†1jî¸XM Úÿ%_ûÇ~)Õ2¾·ó7â©{Œ|DøE-œbœ8à?@($²L¼¼kI€U™!Öš¤YVÄd9*MPZO~#ËÁiÎê­!ŒuSfTšòËù¢—€[4S·Æ¿Žc%·Vž8ö5²á;(ªqˆäÉN>{jnÌÙó¤;“ØK2Àÿ¹¶n6'qšxgmÚÌ‘^Ò7Ö±4/:˜ž–¡¨Õ‚{ñe»ÖÉ¥2qÉÓÑÒf6CŽZ œ—Îò_ ‹K\|©)]¢ÍÖín wÏ.êÅÜ/Ë{_Ð*<:Üÿx.<‡!%ùÿ™#Z–žÊgªz¢ :dÖ\Î:œ^ã´¸n£«x7(Œ§¶y¹¹iÉÆ°D­ˆ)f=Zäv•c}A%âeu²Êô=þ\a#xàôyûé9aÏ­?)éÛ¾ îRCD§ã§0Å)¢½…þ÷Õq«™£nlg‰|8X'‚½ÜyŸfC. ZüÒ9^•ȶ„,ÿòÌ‹ïîÖ•È^OצS¢Téî*ñ 1:]*µëUdH A … ¶É  Šáûì&w¹þeãúÏMõ‚è›h¤B-`Þz…#µ(ñAjšà%ùTµýZšµPŠÏ—ê‰Â^¥ûŒ|X1 Ì@¸6j€méäÞÓ&±çéÙÁE–›+m'Ï×÷»{"eç›K¸e°dR rˆ‘¨Œh²hDrÍ1Â#‰1ý‹C@ ˜BZ q6{–,i7J" iêYÐýä8ÕR$2Á½§¥NRµ”¶btæ’<ÐMÂç°WH¨¾Á‚ÝPyÝDÀýè¶¿@%™+ƶòL,Ïø8\Í7{úÇ“NR·2}Žˆ°‡}i•’Eû&Uu njØå±Â6=$“ý”t1«cñ]fÖ¿äñ¥¯Þ[΋éðQKLånb¿÷x›w¥‘¥ôaŸzX `SjûØ60‚ܤ Bºrt.&ÇÈÓCcÉ ï4à Pe—~yRËàýï³-wË}JPŒ†pwÎê]˼î_&ªz…úÔú< ’¯I³s÷ ˨zêür˜y6“†\oÀàèç³ú|G2uÍ·¾À{îî@*ÂrÆfÆ[¥ÁÅÞY Ò™Ž÷Ä9ìù’mµ~‚w"c—›ï·-̵„+ûº±Xlýßï:cñ´üÎ8”éÖ&ŠbÑÓŸ‘O)cÕ«5dPû1Êà×ógÇ¥MP>¼´yÊ]»¼r;‚yòI1Ò¿Tºš“ÂTŸfÃÃî7µ©•b¦wnl{I‰¼ ZÍê×Þì º— ßÚ×Bž?Hëœz8eµ d…0$|Ëqª1áø—–IÖ¤0½‡SÿÒ•óN~Ì®±/J]›yÿW°‹>ËE“ɈuŒíJ9NA/Õ¡2ÊÅÝ=¦£¡>‘p78ŽªØ”Cç}|Ÿ¢‹çÈ&¬»zôsîÛEºð_Pk¨XýQdõAàè]"Ž’æ ›õÁgLb8ç&ÒâAYè<-.d f»*o(œ;úÝ߯­Ã(\Ö®bJY×bv6#‚ÒjI1š[+km›“F¥žN’ÆnÃëZ1³”î/ ˆþ¿õÆYâŸÐ_WÃ[Œ˜nѶþ3«¬s4úSÞj“\ÐÏ´÷…ø î-eãAŒÈ;µ´ÁvÞ2cíkOdÔ9ZHÂÅϸÒcØ^"(ö7;·f҈ΪùHѪ¤, b‘eÇA~Gjô¬´5<þ9k‚¾ã>üú%1Ûr7žð8šrà¡Ô#áßfw'2ëÏñ-?ƒÝñŒF —4QfóÃç±t× °.ÉbJñò…áM†É´{y­‰LÎ ÀŸúF!`z«À| v`¹lNáEk™PŸ}wÉÁ”¡HÄ‹HsŠj Á.Pwd‘KöikpIÈñ7c”ŸÖ¥0+ž&n°5¡õêý)o š?ݾ¶/pdÎ Dšp¢àAíûqÉù;îò¥dÿ-‹$…yvša~ØÞO#%wàÍ,ÖPÂÝ3)°´'eS,¶×`*¾&&êj¶ÐÈ]i¿Øw-bßl†ïgÈûÑ--óMÅ"VÇ! >L‡m†É¦l‘¨«(Wcê“êkzNa1I{üSoi·À-(äd\Æþ]•Q$)¡Óu+Åe÷i¤G^,A^Œ¤˜\»2I¸¯ÔT˜Êc <ån~&Ì O©Dm:@-fãž>2dOÉ©àäDQ€ÆrÃ'4‡'‘ ®Ñ%.µhdñËm¸ä¥5i‰Ä+qßÄ‚dy2^f3ÊÁ6±rÂcºÏ øKq4íÉâ7:aÉÈf[%«zX:IƒÓ†­„êœ~dÉåO?›:=2gíãx}ÉI¿²ªÿ!¶Îˈã Òi;‹EKʱq4¤qT žèÞÿÒÇ ð©ƒ íýi °±|?K…}åÙcíîÝŒÓz)€ý¶Ýšõ±Q»÷Íkd_üœ>EU/CË@Õð„m!ÉXáÁE sÀÓôºu©ëT8œöÈ@þµ¿ÿg>‡8Î+¸À|𲵨7”ídýrDÕµÅ3ŇýkZ›¶åÞзNHnU*¯Å iͬðƒ€)ÓÚ‡¿ªØç–3&På˜o” D“-ãfØÕtwn’²_¶ÿíZê|‡»U„—ý!m)7E+bئ=^Ç*õ¸>‘»r½ËrK@ƒÆ ,©Ñ%¦µÒô!+Ô‹«7üÉ3Äq$Z¹’„gž>~jv\ÌF›’›×ĶwÞ[Ð'-x¼4´¡´¿ògÄûX†1±¼=áÜÉã-–ñk*5u¾Ðkë/{S äS7÷Dþ‚#1äÒ‘8I ‰4€c°0}´ï¥aœ s¸Æq©\¥c%S÷mü瀪Vu±†ÒCyMºà!‰Üßã–¨üy™ÃíKw™³`ê7TTš<¤LÂñwDÚYáPÒ°`J´Z/þi­á&ÿ/’Ìuë¦Ï,/¢ß´œøJ}q3ž“À’e³‡‰¦kÈŠrÇÅ÷…WÓ¾²ÓÕð¤Å5EïÒVç‰ßQ{®©¹´Ä”®Bq.þÊ·§Õ¿FhñüÂ>ÚŘÌAKîp|L3‚)g%½Oõ¼—¡[ŠÎÙÏ^ê[ª¢ìX&’÷¢¾OjAélã¨ÆZýÛèà5¿•Ǭ ¸{M@Öw-RIòsŠ» —:|ïOÊ\šþ0qåNhP}ýŽÆ·‡ÛÅG© C­B…l&2AxòæÒÊ>Cƒr?©Z;þvn}|þY€õáá§:[ò6ŸÛ¿Ò÷>ÆÕcu°Ÿ§PëGAá$¡‘´éÆä(Iâ>¸séõ+š®°xU­à õ›T÷Ç¡8øßcÜþl'(æž3­“:Q|°=Ìvös²áÃïGâ¢÷þqsö’.µ|Ùטm:vŽV´j¸Ç뜭ÚÎüEáâEV< R÷üÈc_ïýT2Æ—ÁÍÜÞIË\V–<ü¼E»i‡c•È#œŽ\q³¨Z5>Êü›Á+€[Õ:µ¾âbQ ít,í+ÅÑž{M—ÖÓXÔÒÀÇNè½±·Ä 6û¸#åP/žÖ6zñF¼N´(ù BæÔp•ÿµÈcç;Î7¹¨åkô0yÜaú[¬¨óèè©·ÛòU¼[=ÁßXÓtp-ÛE&VD§¾1_Ê&e.]«¦¾ð…¬7¸"gÔÑà[ØÖ›ÓИ Ë»‹· •ñ ˆÚ'0º û¤Ó°Vӎ榻Å2´dc ݽLË¥ -°NI«ŽYi#º4•çVbh²&5>}Ê{òŽy\ß—OBaIàÆ%§ï Lï>:\ –KíÜ*¹åd{–0"»¾Á¾®.¶õôHü÷še.1¨ ÛqUqBØT\òòêbâýä–’:‡ÈWT‚ÅR¾R2mã×_,l>óN¾§yÝcó›¸ârj{I©ã½ß•†Þ+†ûw}Ÿ Þ7v‚áJýݬ>ô…²²Sq0ëoi§{‡§âK¼ pdgè&!!hü€ž—oØï92å!>ëÛM1C;5<¬h½éÉm¨úÍÑh甑TåÞ"âÛ©lQÁmŒ©³£˜²ùIbߪL—2KoòúÆŠ]š¬yÏwð$š BôAº7'D•wøÜø:&W^ŨzÖÝO•ê¡·ù9<'¬Õ÷œæ€Ž¥\8)ÑXÑåžå‡óË9¨óVEü¯VëIõìxí¸H³–Ç/]’Ž5a$-í¬³z™AT”A$V–W8Rêë×(°&èë~¡îI|]kÛÅlW‡(‚ X<¬t$?oJYÜÕ¹ÿ2ñƒèâ\v¢ÇÕ>h#‰Cý¬PB!yœVêòkÐ5ú¿ÜôÊûž~.Ï3]Œ%ù@ÙŒ“¼ìkí–q˜[‹üÚÏ×|»Þ¢FAüà!ÞTý äÊz¡š”XBaaQ:]}Kâ¦ß»Mm^ûYov;Sëß»¡î·7Fjì(?ýx½¶ßÿ—Häz$aAΠmˆi>ò =‡’êS3¦—ç·ËHŒýv®y*ð¸ø|Ô¼>åÔ ›–æµmÅT§ÛÝ·3ñ¸j'Íû‹:§a>mBΟdŠŽ#!ݼã7CfÖ¼LÙßô7Ì•€ôe8ÉÍóëÊàÓ=Ñá´$àòzw3{ë¶éBõ™ÉÇ¡¤US˜\¡MµbÜ4 "èoÎÒ¢±Õ|»b¿n^w ’ø°¡,‚nV›q·$؇ð:“[T%]Êjô30ŠU§0^öžÐpÍ|Úík«R›µ— ’ßbÞ(À_!Åú·šä¿:‹(eÄU<ôÌãÜi ã¦ƒ¦7Òº|ÅÆkS³I¡¸ŽíÍ—Hü½ÚçUÏ ‰z ì—¤Vü·‡I÷K%·ZÕõ#ô@‹¼ËU¸:c Ù`RþR=Ø‘fJa6R®:—šõ…ÆŸÄÃLãS«RÅߙ֎Èm‰ËjBúMG,Hã4ó4›,GÛÙ¶¶© ·ÓÉ”íõ±ÝÊÇ/Žó“ƒ‹õ( ïA¸Q687ã†8OðK¾Äj5àµÛ</dSÀ¶HLÐÇãyt)Pä·Ï [í“ÿl9»; Ú{œ,ŸìHµäžùDÒô™ÆÿÓ%zÈ,“î|kcmx‡íkÝç 0Uf–ÌÙ£0³ZÅavкóBª„k÷±©]˜û|ÕkOüé"ößz ½ˆËSnÌ#È”ETO’-åp «(È’¿±TŒHý=› ¤µõÊDßæzŽ-Bý§Ÿ”sün¦FH>ÎÿüTãù0Äs,Š£’ä«N&L±¡…¾Lðg|ñplMȺß2(]mÒÄ€kn,\(„ó¿›ú½{Éâ·y2ÁV’}(HÞ0¥³èb%(ÙÚ¦>ÑN.6õ3yhIøÙµþ´Hc=DLàk¡óȃþ{¹­¹¨–ªuùä‰é¸ƒBä$ßþ—nGæÆîÚé¿b€«xÌX“4xA¿îÎÛ†¯ Ôa3eÎP˜“–f\éuÑñË Ü6¶ö|½·°°ODtcö)'üÐáï§;¢ cs,¸U~'–YEØè/JZÞ @hjÇ`êývSùTð(|t™—ñ²c(ú•VÄ,{ð¨Jœð×ÒRPKþ,'EjD"èJÒ3ô³-á¨%÷,E<}wB¶…eÔŠÁÕ/‘’«°Ô‘© ©Ad GMž¯k.ñ÷²³88Ä=üø$,¦W7ÍýADïÃÛΈÓuJñv^g}g Þ²ý-÷ˆ*Kº•ýºü¹à›qwÎø Þ",¶ }~ ú"—ìƒV iöé^žêpäh“¬¸4±w‹ôÏ3Šcõ>H(×ZÌvâžÈ"†j¶Åuk­Üàã7á÷Û«Ú¢#ˆávDE”È5Tó¥r.žL7k˜<ÔAÖÔeó†\ävÆÌYÑ…ÍÈ™3±;:š6 ªû²€b)dte–“WOÓºåÿÑÇ!uï˜ÇK×ðKÀ/¦¿z‹œÍvÔôIß³Î|ªOÛnÛ™†Sþj„—®ED8  œ«y›žƒ7Š¿\R?yIé“#>„fӷΆ)‡wv&VI‘âϲ/üËØŽ¶Ï îÒ›˜;ïňšE‰BQ¢I¿…§óŽ_pËo‡§§ Wö<óf¯ÖªJHÏ„‹e ¹D.Ü3g<Ù‰_M‚Ýìš´WÏ!ëÓ9v’’áÑ|¤e™}ÎZh)Ås’àŒ‹çìíšäxnÚ• PÔ®±gÁÑçƒùë®§ˆ¼Ô¯âåÓV£(áVA4K=F£èªÜ¯"ÛtÿWëê{w›|]°'Öýì¾ ¢íó!œìb~dË1BÓt攩ƒ±k3ÿbѰáÊY³ "a¬C7ßýs«À›•^tjËO –¢xƒ³ÁbJ•7ñ>X†_+Fع©Ä¥•†åƒù¼¦èhL˜/»Bªþ°j$(u¨Õ$h0åÙú‹Gœ6"]`Ç“ L8 ÙÒƒ½‹(Å—ÂyRø)ÁN4e¾üË ÂÝú¯üiúòÝY+ UL‹±ÓÝëSØqÞ0Hûšj@¥ëÜïg%µŸnÿ&äÚF6 KþI¿b9UHXuxÚÎ1¤¸ôw³k‚àéŸkcÞü¨^u:mGýgKkuÓLõÒ0**êI~šäâ$@È6’4P§ËþDÿ^Ù'?Ι¥l°´®Mêœu(*ÇLBl µMH¿^‰=ší|ÍNÞK>»ò“ éùŽ6WT\ ß·.Òßß„Fþb×õ‘2ozq‹—i,¬›×z7f/ ±P-^‚ ÕáÔÛÙVL]`o‰28;–Õ€eˆ gœOÌ?OÞ¸pà.ª@Óg¡Îâä<1°ìâ„!zw 6AÔ L~Ëânà&?§ B©Äù ˜b„9Cáp÷Æ(4Gè†'㲊rÞªvih‹î)9cx™3šØÂÁ¿•X°dF†Mµ&ÿQN¾1"£›òsñ ¥´JÞÛn&“×Ü+€á¨OcQ&–Ý;aèI"Ô„&’ÈSå¢èûm°©â‘qKK(âø‡44>BÀn×ßñ“±‡Žz ÕI³bXÀïjQeõ·ª0að«Ö¾w~„]fÉWcÀN˜-ü|Ð'“Kþ€Kð›T80( èCqÌ+쪪Ǧ[¶³÷¶B }s ïýU«³;þàDZcVà’»`û”ñè¢þ©™Êf¶gP%Ê`ZeTmVˆ}~hi+vï«Å¡]RŸ[ýDnéZâêÛTX…NÕãF:Ì‚É'éÝ[EÚ¡ÁÕz+EéÌݬíæW¹ã}`\ÔÖª¨C¹ê„‘v¦u¹üÓ¨Ü`¡ßR  ÈÍ5¿iÁ¸¥4´ïª¤´.“+Æñ„aé»!Ñ?W ÙÉ“M ±ìEš;¬Èñ ̬+È' wt½0eÄÑFTY9Rfô êqÀ^ôÓ~Ðì9ºÔÖ†ÓЙK˜¹¢bœ+fˆäSÆQ¼pÜÆ´Sþ¢2ž›“¼¬|œUu´=2p€y­/ê%Û¡4@8ŠKùÅÙÎB(„À¡þ¾k{ùKX%}£ HC˜Û,(V#€=NW0ºç:WÐ9¢Íõk¦%Ë­¯ÝÇtN…†ØÊé -*V¯‘ ùÇ&ô?¼˜jD³pÝî¥ÎÞ LpK´R'hâ§©_qÈ´)Õ¡â,Uy2¡›fšo}`¾‹ZSS–I%è£ [ŸáøQJμ½t,o'¯Kbküâhã#šÏ<ÐÅAvñƒœœâaV€5: #A-³¡E#Öš LÇ¥êJœñׂu€M`Ô6J‡%Ëruš0Ü^) ·nHg•ÌÿþfpÙzÔË ÍC@6ü3h±éIÒ;èçÌ×ôüoT¿%KV´+P^™ºÓz˜h©,)ÝÃ)ñÕ¨H¹8(p³Œ¨|?„AäW1å·ï[j± ÛE×+DKª¯N”‹4ÓTÂD&5ï?©•âÜw¸ëÀn,z¥vlîÓ®rsÕi‡»fZC´iz¹Œú³Æ„Rµ"y9Ö Ž0Êrþ f—’ÈekD˜nÍ÷qYðíRö•ÜæE•¢C¶5£´Ó(÷=$Ž‚D²(\µö7N2²ú.)‚Ž“Ž*¡ÇÉ"mÄX@ø÷ÎJ7}2þlePa8›pÄ¥¬mbü½Ák§¼Fb5Òc©H¼²t~…ì ªÆ c˜¢ü6›g?éÁ*MØ b_$ý‰Ö%ñ‚0¢s5Íò ”L*ÍP”¨•0¦ÏTº4{8³ÕlU«lÿ¨ÈÃÀÓÆOºŸ»7?ÇnyõüóÑö\îÁ6#pnìzÏèK‰QgÀ²úo%™g3äÌ9Hrra8×El³˜/Lp^'½…îu_’ÑÆÓ0©[m ŠÜvÔÊè xÇZö®IvådøYBšÜMè}&©¦'~d‘Öœk“h¦Û÷,hî›K2Í»jg(³T³Gß]_3ÛœÂ÷W±ïÀûIͼ¼× Ž"2.kÓ3nd,lHÖÝ ì2Ãnxj™p+ƒöDã°¼;ùâA¡Ò ðÎÓ_»Ïˆ’…‡bÿßM…]ÀCÏ4d¹ðì@°Õ&|eg† ¢ž…ðõ6~(„_fm=îÑZˆ‘g\™w'å Ç\—ñ —ÒUÄ âß?8BìÌGG‚qlÀi}#Ò‰K!IÉJËÔÛ—¨ÌI1wsf-e3Òãº)?öì;ò›‰w#²Úu€;@úØ™éS‹ÞÞÉuÓFe'3ùñ®—úEM Ã›'0ÖbNzÝšr [‡Ç5 øá½Ót7•®W5½-œZ ÏÈ2‰:£C¦äÈøy¿zº3q­"ªIZnMæ37ÃÉ´¿ÃèEm%0šûvfZøÓUˆAÙ^w‡Bbˆó¡Ìˆ¤Çvrùø7ª±»9R¼xõˆ0#Þä˜M5P¬CZJž¿¹Oë³™xGÿµ¬”ï¬~H ôžÜN¤|¦‘¯‰ãrúQ¦A}ô׋‘‘øÎ›þ-€ü“‘å9¨ï/¬óL‘¼óÅÈ·£Á><ÂÐ3‡3[0}<ÞÀÔ:l/4Œ8 Íé Ü´…Ñís·½>FSïOMëAgåÅ2CÇ+]¥,Ã``"—¸k-¯§» v-x׬IØM·—Ô¼%¨“ ãq[¬)p»1ÉY"âekÝ“µCDãîc>í¥ÿ@?ªòG±]ðîé²Ö„Ò`­kv€ÖX„MN‹¾‘ÛCßUŸÄV¹@(ßg•ŠýEÛéNT–н:ý,EkxP’sSû%©6ÙÕT¢b£Êái/—Xº]³ŠUT…)i[À¤U¯´¾1(þs~˜ä…hN@ä#Z.×.½çÐý@ÓHömåbV°ê FõG ß~9eKK{#ËHc«4²^÷§šµPáÁB‚ý£¶ 0i ¹¢õ5g Ÿ|`bhNb¿u(Ž$®û=c\JW};¹|ôÍ’R‚s|âÚ<.s;©µÜêá í³¬¸½±¬h|‚žÚ"ÖTÜ=·2\ûfùlzÍ‹®ò¿eÁgß)÷br 9JåU-uOCü-[‘¶2Òº÷ gÓ®¥Îs83æjžF³$Ü$ô.Q¼À€hZÎ1„¯Z´Ôˆó-òÈóo¶¢ ž#Ÿ¨ˆÏ彇ñ\E›Ð¦,z è5AÔ­ÛéÖe®Ì5ÇJgýYïÀk,Úåe›LOŸyÝ‚D…¼<ê”ÛÔ\ÞTU÷$O[[ÌlvØ/Í­>-Z7P˜ÝW³ã„e޵â$x*»¡)t2Ì%ûT«ÅLŒØVgÝB¿«ýçûzNƒzóªP› e ¶ÐÍ­7LgófkÁõ¦ÙL ”äç>ÿ}WÿiôñEPO` 2šØ)êì%¶hií9CN½1TäÎ~O«dT3›A?©aŠ×´œ¢©²µ•hJ5¥SLÁš˜_ Ûà˜0(O‰ZHvü_y ÌÜÏP"Ín¯îMyk乺8À®«´±•¸bCÛ}÷GûFõÀt&Ȥý Ÿ™¶À¢jì¥øž6ú°h„¬š:»ÿœh‰ºêñ<­î? èî¡R»d…¿§µª¾á^ÄöfDœ­À&º‘¹«üÅÂ)PÓ^ÔeuMVb%‚Ptâ«Ö‘Ð3C–`7hQ8·lBº`…]Ñ£^E'<,êD0ÛÛ®}»ÙHÉo]± Ê'Ìʰ—îÁ“™ó?Чt½NùP«ÐÉu³FçÎæ¶¤ú¶lÜͤ{QÔ™3{˜°¶î‰s1}ìiæñVHh¥ýÅl€gYê@ºn†ÈçjcF`š}‡Æû/Õü½›DþÕôãÜUå©AÄ?fæäem½¿®`€?œrº"ÛëzòŠ%ìvæWCãá ýü´ ƒ ÿ¬x ÿã@JÅîŽÔ;èB\K" ššk’•­ »Ö>ö®ßæõM¨¬X[/Õ:©K,¶SwÑá4`ö³»k4vÝ¥ýÅî}¦•ïy„»¬5îtÖðFñqfàñ&yy9—4ñi…/ñ¾Íp¹z|tgR±HÃâˆp øÀœíà¥J%N¥¤@~¨œ.‘o`ó,KøEnÃp«ð=-•É‘FNÉc6„AdË3köø—po|P ªÚ¸˜]të¶Y?ºàèm‡Î¦S¸|«p Î=¾i1.Û¨”ÅAñ"u†rÃ5Uû(èìù?C™¥‰ˆûìï÷ËuOî ÖÒc‹—k-»N½(¿Àè"€NìÍL”:º´TþGÞu„ÅiùxžŒ!<$Ñ–Æ;=WßC…ý¹»MXOlKsm2ðÕ3ÃižÑåL?NÙ§ˆ Ãd÷ÕWæö…åÍø1_ÞÉ=ó‹ÀÇ庯ˆ_™ßÉ&/w¼Ór‰´=,C1è“{\¿9A®ÕýðžÍ qNÆFVÈŠù·Iw ¨E×öÑÁ!AÇ܇$þû®.Sƒ4¿U˜ú‹g04éîÒ&%Ì…*õ|ds…¡KIêÑœ+ºõxÓYC£¸Ì”:†1‡ªyƒl·ØÛÞd.ÿK¹œ$¯…ßù—Ôô³W+ß(L\5„'ílñd[Ü(9Ä|Œ[(åIñÖ–Çû,Öðd!‰·ü¢e!RÍÏË 6z 3­ˆW`àñ'.p_ǽï¼A×(Esä ‡ñ¢R =댲<ºæDžç‹¸Wãî¢(ù€¸Hã ³ˆsï?á!,5@M· »âÀ>›³Xd?ž™rSbÅ‹µk¯·úÓ`ÐÝ¢£ [_ (‰oªðZs«†¼Rð"j’-¥2þÓæažXÙ÷o6“&•ùÊÀŠV·ëèùÈua{ôKÂQ b5®0÷Ûjz9Bª¾3fiùˆß²ñ‘@¥+Óž.f¾9¾þ’¹rq‘v¼Â@ª^²@epÚ3Í fû"A»Š 97«ºÌ‡Œ“K¶ZAÐ(WTé£ý úâ,CM†x>âi=?ý݉_ ƒA{ÝÑsážA¯)?XµÞÊAµÖô­˜?fŽÅaëÕôF¸OÜ¡e %(ö Å@A:þOã蟦`Ÿ/!ÞZç×ý4úåVÖí»mËÕ¶~µ›+"ª&rjŸ®@{j¡y㤅oXxx7Öw¤ýÅùÃAõPVaÜø×áJé­6…gØéÆ.A奉_Ð8m£Fys]ì?q8P Ä\+ŸÁ$ÿxD«Ëg˜ËÝ3jÅF+úœ)fü4Ùb–"……|üÔÿ$:£öy79ˆ ·0äðuÜcL1vAÇáÙK@»ëtÝ+í CÛ3¢¬È¦ò—Û^ybC Ç'À4bæ<-º¶b!¿]Óÿ°Ýèžù‹Á¥ÆÅÅžm¨ŠMú™õÛ‹®)òn4´!ççL,¨E`_Ûr}ÁZ³c㳜£+#…º$ÇŠ ƒÔ,Q>3ƒ²•TÒõÝoK¡ÿ®ßû‰#Áƒã_uÅ|ôˆ“äÌ¡€‡ÌøÈG•ø£9ïol¢\ÁTöÊ9pö&²RFZv±êè²@ý8z³áç¢[3ÂÀpm§±ÄzÑ][h7÷Ûõ©^˜Ðêìl˜lk¦nG‡ù”y)à8kå^ú^`gÎÞŸT°²x¬Ä>V˜xH¬ÕYbÆr(b%@ê¾qƒÛÁ0_Ê&eM›»sCU«Ä¯­ztÑ#§6•÷°I°ÍÒQpØÏš‰-66û&ˆ?Xã3„›ãàEøáŠNïBñ‘þ¦òûT l˜üø'uz"çZÏ!Ež|BýQ”ÚУ;21õ.ï$ÈL;“‘Ü žÿü´?«ñüg§¥7VêeèíˆÀºålåÛòó»Øš¸{Ló_ñÉ]=»z«Ž<8|Z2ðí%°ùh•y+OvÃâ×mJhm²f.E>:_jâ9²@PZÍMοÿâiVÆÖ¹†Ò:²÷°/'ùàóQŽ^Q׸¨ll è£)VÄ5Ò Â&Ðñl‘f*2Ð^×ök™_7SÐ[‘°0ÍàH×È(…J‰o"ü¾v%A#bÅÖ¦dÙºAPMùr·œD+R2¸ëÞL)Ϻž»ß峑¦0UŸy|"šø…,^Ä«”\Š.]ä0€hOIºÙiò¡Ê é¶û€,{Ò¥LŠèäí¹’mÆ"Ý^B6+KÙ&b"!`~°2’¥ fd$’Vò…€‘ 8ëìy·Yì;f¡ ”nSî˜Ý(— DŒ0Çoç5ò¾ÞU&ä|dï} tÇVM¼d)' &FXh5Ý~bUê™Æj¹@“ý.!ŸÙæ{ºË¬ >g¼˜QQÔnË{2nvuÜã  ´ ëÜ…Nç£ øAÍìŒèwüÜãÍ«FÊø¨Jfè† J9 DERÖiÁÁ¾vG6|ÇR¯€L6é NÊØ“’’Ÿ™ƒÿïªÅ/ùd9ñœ Òë‘H¼lØ ‹V$Ë£„¬ÍU%#¤*CÇÞš¥cq|FÐåsP½½OÏW_þ”Öœ!7wûZÝT=H[Gó§hQèÅz¹WJé©–A'–BW×]—ýIäüS·žë †‰è€—Ì´løIyw@`Çï(¢ç•‰õ•™sH™û»ÝîD¬Ë ˜–ŠXx9'5 sÛýšÁŸWôccæp™‡Än¢b/³ýUçü£ß¹÷„Áì­Tr#lÂyÔÏŸA쪜$tƒùNt*ÿŽ=bwÆé̇F>˜II fû¤7iOÚ×õžºý[§þuðdËÈ÷:ëAb§‡ñÄÔY˜ÙiÞL~Ë:g†Åá?VñêzN·Rðâ‚õ€6XÏõú“ï[ ”ôàÖâÝœÀV¾ï,NÜ)8^ ,Ãwÿ%.»rÂÍÉH©üºÄ©<íŃuãÜ4‡-÷5ÐrtÞBôãpœÑ»j d|¹zäSÜŒånÊ\þM»ƒ³Çïq^Óààô—-}˜Y üÿ¨}7ÿf»ÔÄ ‘<ð` UÃÍÖ7œ¯xÈ 2gë8dylÜh3ê©I÷K Ûæö,ÎX*°G(Œ1j+PE£b´lÆtɸ˜ íÑF+Œë=“¿Ô}3fOÈžI¬Ü Ýð‹2áO‡k¡ðÎx/yßRñqºá6©¶Õ ”ò(d¼a`uÕÙXg‹”בÕ^&&1A¨ .5kü^q30”1Ý€õÜ9®G ã †$dÉlWÂʩݵü=sÀŠw&ÞË]sqaPOã³ÙÞKÔ$Ö‡r*µ ¿/­Ÿ²H0%¯å<Ê T3Þ]XYÓb Ê.>u‘¿KÂM _~É¡6°ñùã.Fêlg0Þ$ÙtƒqŠO§õÍf9gÚú§¼¬>)Ùg~²5úôjw=6<·Ô‰CáâE‹K”4î‚ yƒ*Î(ããmºìÓÜ“ók´P[§X lŠ%8Í}À?§ê¸ÒQI ñ«Vá²ÆXN†ï2tXÇž®½Ö/xdÁ•T¡ŸúsÏ,uÐ ;«§áåk^òSÉJàÞ¥ratÖ‘ðÊr¾å’ÆÎ¾ÔÌè‘ï§qH®Tvy°c¸øz HŠH£½ K³OÔ³å&F¬5 ÅÔÇÁ‘ŸÎñÑMÙyöè¥Vž(Å«Ô!klå*Í™C-ƒ 25¾=‘ˆ]¿4nú+¯®g¶PF}#oήôŠ-›¡ôK;CV4PðÕv}†ÙBq ‚ï õp(±ñ)i‰µÌ™| \‘œèα¾½á¦|²=z¤1àÑí¼MîˆéÚ—ÜL-I!]Ñ„X´!´R6)VÔÀdâHQ:,Ô¥4.°!iaíEfØÌ™böÆó_ d5xè ]Ë C¿ÐF„-ˆX…vSeç çpÎŽ[ úø¶è)“§µo‹.Z•+ØÁ–®˜Ârr¾ÇŸ€ië=6•x)@ŒÍ¾Ï̸¤i•Ìðç’êü`C]3¼AÈ¢†½ZR(,§„i‰‹ü·§²,ÚV¥4gæBA6‰ÍAÕš?×þþ„ iY qkŽÕšÆÃÈ?\F:6œ6›Í¾Jœ5¤“ÉRfK®øº1TõÁ@ p޳e:¸ø§ßË¥-²jC˯ªÄ–@Hê}K¦«è1'e4u %”!¿½ÚÇã¦ÆH30`9Û]׫ZBËç°gZ­õµ-pžEöe“µ¤³UMØwƒÁÆápxŽŽM\-hÓ\¿ÁU3Z¤X_7 ÒÓl÷ ËTÝ1mô¥¹(Í6’ÜÒ€™oó7箜L ¢¬·•aJ̨¿œ_Z'˜©› ©#ÀAæ]4ÓF²¬ú¼šh°YûNÛ*§A©=vŽ_ðwÀʾË2fQ0W±+%a?[4x3OÀû^'§6’øOG[ñŸÈŒ¹ÙºªÜc¬8<¸&n7Ož£j­Àahäw-nô9ûÿ.ýÛ®ÝI…%ë}‚`¡éU«J‘Ï“Xñß&I•óòßáûÜ.(ÀåËH»ÎmêÇ *­mîÇþp>mçzg~œ-mVî$v™žŠÎ ÅYyƒ ëm}ù1ˆŒ$P­ßÄÂ]ôxu—ÐæI:Û w8½Y”yÌN4ˆRIƒÛâ¿|©Ú-øˆÂ¢J’µ—ûŒ¹²…¨ ¡½n0sÆ´‚‰„ãêªA# É8üCÍrKÊÊÙäì×þ¼,(6;ÈðX¯åNGQ€aê±fí¢³ ¿Ë]ÈŽºzÔJ¶jt ûêh.EßãæónÒñ…'¬*4C‰nèÛî~¡Â×+æ¦çÆô;‚Šõkبnß›ÿÿ—Vëbj¢ñ2JS­‡N1fî:ìë7(“ ]?r ÉÞ £ªÚC'sáPazk~N¨æ6ù›ç`·Iþæìÿϱà9¿§Á^”Í+_æìP´#Q¹[¼Qôh -OGu¢‡Ø g ÝüHƒŒ™¸l -?[…U­šÕÜ,¹F¶¹°.É^ÉZËë†×Ûg`¹h‡«ïYfÃWê”v~/`½ŸŸÀ™»C´Ãi·Ò° Êñ#TØsñ±û †#³Žl±ýnz+ˆñõÅÉ8§Ÿô‘ë~gúEäÄ1[G¥„*u±¹ÁËJÄ’ÂaxË]¥•qùÝÜn";4n¾õ•IÌ4T[í;+Ò¦ïgÙÔw³boé‚aªšÞø 6~$SV"GWã°AX¦œe…ÔËy` p % ïu¤ZÐ`Ð)J´½š],Õ4 yÔØ@Ž…iXÐôö–µCXˆ¢Ü|ôÎáK­\œ<‘÷¯xXìÃ7‡ .̺qk‡·–”ò\}?q5]¯ÐÚG7·÷-«]é]´¨ƒ*ãV?A¾­¦ô[8쿟àR_ÔoµË”zp®æfOÔ&'²¶>JºÁ‹½¿—Óñ쌘ۉ³ªümY~­žò4|Õ³‡A8¾¾®»&¸S½ "¡A§¦¢§KïÐ;ÁeÏ<|;?IU!“©´S£}OM ›¸‰k'•§>÷üÔƒ zy—ª¬H7bý¾ÐúSü¿ÂEÓ'@±u™GÇN;Ï3?0±1¦W„†?“øßç·0›ÕÕˆ~”8ó¸ÃĨ”¼1E«{Úo3 Ç-_p½Sޏ½úÿÝ>aR± ,©)éW'ƒ°0{PèjŸt~i ²Ð³ªUþðt¢Q_§c^¨Wq´^ÝJ\®2M‡~ n\!WÀ1ˆr[Õ’Cdà¡#P…^;9Äz36ª[­ÝP_8n×.€Í¬‹ œÖ©,h‘=az’•÷]ÃÄë®z·èí¯çÞ$ylËDd ÚwOÍë‚DÆg*J鲂™|VB>œES¹ãâ:.PZ‹ç®¼<°yÃ*­²XĤL.ï˜ç²§]‰´°—ä*¢7÷‰êw'²´¾xÕÞÇpb°ˆ§n’«.£lÊ5ãƒdp³ûzzózŸ7UŒ…‚®?Ž´Šùß ‰yg…Ò895€íMB]¶physã§œ_w‹Bº×‚,üUàÔéµøõ~v'îûÙŠWjW¹^gk ¼¾¬ÈÆ…qnz’[¶rÉÉùG$ã‰×#ïꄬ$[a:: ÆÊÞèÍÉ xÎ=vW±e”t ÂÔè ó,¤²¹(Ã5µ¹W$YHžo£eØg§#¶™¾%ÎQÚÛÑP¥Ïǯo©·ó+Òu¥&3.Ý-3K[£¸\ÎØíSZŽJžm´òyðò½+Ë1ß^Jdž¡?g¤1éÆPšáo6p+Øþåp½O§ [;%18/óNŽøÂT%5„Ïü.•\¡¾Á© ¤-?ÑÚÒeù6M¦•ßfHVÖ$ FÌdsöKò`Ž!¡„¤uª[Ù%°ÕÏ-N„[7dy;®Åúç [ªg! ÀWXdȲ²·‚¤î-¦©é ÆÙ;Î'ã&q7õ-9qDz>ÿ¦G¢€Ö‚[=ÂâͨioŸ„y?ú™Æ·2“› ØÚ6‡ÿvÍ“Éeå)+p3‡ D¥„²ÒÕr_<<ª7¾¹€t£Ýk»_+™Œ²oø?Ó¾‡ßus 0í@¡2‹†àðÅ3í̯üI`²[§b‹ÇöO‡Ž&AÖ~¥2vàÜ5]ðó.A kÐ"s~‘gü¡sºò±¨û¢ÜêT¨cÄr#vèr?.é¿8&RÎ/cZ0I†ˆ§ÛÖ.žn@‰š„‹øÃ_]VFQ«†0Md±“}”e@PµÒ+÷K ŠnÅJŽjlÈ.˜t°¾Ÿ£çò.±r?¬ÇY{™yJÖ™<6Ñå% ™m86oçƒp@Aþ›ã•4 è-¯ÈÑs¶ÐÏQüÜüZ©]~Œç<9ï›{™Ï´ C¿• ^gPÀÛT´vÎäqšåä ŽºÝWø mðžÞ¡‘° ÿ€+«yÅeuˆ«²5„ÎÛv¦½ ])Zèw`mI¡/§;ÉÞ£#)`Çnn‹0@rRvœ>àm;4Ì£U´²h"wFL‹k{ìÿdþ°Å7’­ø%§>_’¸Jñ“J˜]œe¢O½ú–%ǧ=)‰ì¬$Ë?ŽñÅ~ô=¨ d¥0h7ô6‹ÝLÿÙMm¿z_SBFBñµëmrM” ìÃo5µu‰©·×ïÔ:óÃ.{“¾„·¥@Úî%ÑI}¯¾m0™\CCAÕ±'+½,åþê1{Bº~Y÷Z‘R\€ÛÝ8À²Qñ¾ëíûgc,FÖG§E¢Þ  Žã_ËôÓq Z¦©àÛ›°–,»~Awï?§vÜ﹈ƒ; ü9ÈÆ·Èšq=Ð¥ÓQ&MøY®Y¥u}_›=eaO%—e ª£ƨ»Þ}Û­ùÄÉ€:1Hóô®ïpjp”]ßÚ¢›_Š/¸Ë0P´ç‹X%æP6y•_U õ^LyœUðÏ'¢–°–ð1æο]$iŠ–»6Jó‹¢ }Yè`0Áz0®´±yJmrâ¶- ß’}i…ßÉP½û8®æáƒmÏïä:<¼|3˜Àìq¨¬³+õ‰ic^FxŠ=ýeîR;Æp§'`”¸8÷v-nC)1™'Ü4Ͳ_b ?ÞCƒ”=™B÷U#Ì­[¨aY¶•låk_¸ {3E­×ûšº»7¡µ…Y¼á“ߪ֩÷v;~ ‰›[nE‘`ŽkT Î"®<!_1n‰ÒÔðý‡ÐèïA-íT,6–…$f–µÇ}³Ãš»Þ2áõGjƒ&û°ŠKÉðL ,õ¡‰kÐ^¨¾¥ƒ±[ZÔYcüI ¹©ccߤ{B-€Îfô»ø‰ß–°€8Áü3Ni§möQD¹ä“žT—ÜgÕ7LDS¿±©úlf…ô;{ù¬—)Š3 Üt»ÍšC+]ܩܠC€¢×°$©°â´î>%³ÀÄë+Š É}]»s«mã÷ø2ƒö”yîçÍ ŽMmÑ<.xá/ÅBpz;î?¾Ã&“úHêÅA¸Te¹Æ-!çF6T•Ðì˜FñmY›(å;Á ÃO¨_¯úêý ݉Õ<õc™xa‹a ㊞Z]l[&M0´Ëº¢Õdk,®¦^qo1±ïOŒæÙæí+åÒGÔåýœQŸ/ûóÆp"îU ÉBçÛR­´¦_-³hA”G3ª8K´~¦Dä‹ÅøÄõaýേŸÆB§©èŸ”²s‰-ÛÄNYÜ5îÙ‘´ôëðÉËÅ%ÅrÌâŸ<~³ÐgˆShÂîTv ‚ýïv¹Pçc'²BHcº2ïЯ§·ƒx«i¸cŸÇ@Ñeëñ#öš_ ¾Å×î âbúKa8>+ÚÇxwMàYHÂ08¹ÌÖü¹§T'ŸâtÞñóUŸ.µëGþßÞK^mÍh•hZµïê»p4×`±D@O8¤¬~R°…j¾DYª7!½ÿ]'Q̇l±ûdÀÛaâórŸJë™Ä›=&a² ·y’á‰Ü5[˨փ8ÿÖgõ ,Ökb»€’¡=/Ç Y#à‚—ÇÌú¬ŽÞ´RðAwxÖ{†|Kvl[ Ñ…QÍqÕ4‰Ø(jkúúF'5¶™äˆ½ ÀWˈªµ'Ÿ^ozßåóKß<¡ÅÈ=ôMËõFJ ¯«ý¥™+d½¹Á>t?DÂô¯ šiP;лÔgö.òOŽÈ¼¡¡ÒäûÝÈVJg”mJ‡À8®Ê¤Ô©ŒHŽb,øÌ 2÷ Ý´ç8ˆýÎ=_§Pb¹tyNŸ½l4™£3=ÊuÆÃƒEËðuö¸ô—ˆÛLMÉk“÷¡fÓ;¼÷½'wŽÓ‚¤9Á—J¹DÐO¶Ý®|so !Ýí-­ íÝþêÑpçPøu ݤc²Ú&“º!|–%¥™8è.[è’ÆÆY`\X¦þñãÛq+ñÜ“òóØvÏiLŸ³"þÕà þÊå¦7<06ÍåË)j‡êAÄv5¶u‡VÊú² K’VL‚¿è–I±Û]_%_’\uJL>ÐÐ@ö¥Í›(ÐqhswCzG½i*æ†|” ²ËÓé>ȺâTÜÌ.Ô=9㟰W¨7÷á¯æ¯W‹U{E"׺ ñÅSC‹v!’)«»©qçö¼5ätZõ¡8?qÍF?9‰y_€/ ­Òh9ß3ÈI-zßPˆ€´Á%+ùÒ?SD¾¾ºóS3à-³ÓöL©ñ{xUÇÎm÷Q&`Ô<…ÄKqDFÙîòƒž=•?»¸Ì¿D–á—xoCÍÜ9`,@´·iŽ €û›!t3Ó¾÷¡¶7îØ±ÑÊ'ÝO¾,Xd ‘°"Ÿ¨ôÄ]V`ôrñé¹— ·|±@6ÄØ`0˜¸“Ý—5Ë”[âgUPi•ÜÂ~Ÿ”Ѷ6Y¸9žžÜ“=âãß<‰Ž.z.@sj·é—Ÿ°µÿÜÛ+ðÄÖ™îÀ³Õ[&£ú¦ÉéÐjÛŸLÁñK˜mÙøfÌL½9+6o‹e …YÈú‹ìÄN[ãÞ$SÿbàîÀðφÒáeñ]^Œ.ûÀ–õ7P^¸a¾m!éÀTÖ'ÈðYfì̸U†–î‚\º•Î*~´ê_§Ú´Ü»—;“]øì¾ÜäA¸.˜/ù"d—]’ƤÇp^XZ0ŒÛ묛Fu"]I+ p\öÁ•jãÅ2‘>Ï›ß3‰©W¡ÖõR¿î{–H‘ZÃT/»RŒì7 +ÝuBhZŽNÓ[ò¸w.¼]¡û. x.¦+‡r“ŸS@'zÆ3» ¶òÒ79œxÊàââqºÞ¢K>ͰõQ{2 âÈBø*ußÿ…ÚUª-@QtžkÇà3À’å÷ŠHõq÷ÇÊ[m^JŸ9ªUœÓð2voi.G¿¥rêuÖ(±Ÿ¨xÉEXÁJº½nT‡âº«F™Mi÷å©(ÎìsÛS³Õ€3‰U•¡¢ŽE|ˆEÍs“WLþYØÂ]ûW|”š^NVbKù”*æø— ®Ù\§VS“æÄø“ÃùBïÌÝψ4=IUg ö[Y«_UK¯¿Z”$2t§ÒÉ I¬Ï®/õÙbNpŠ™¤ÈKvøïºzGS¿Gfû/¾“…ŒÅ›2ybj{š!bïRúO8ß@<}üäý•ÊO÷™?ë·ÊZllw h@7«ZÖ‰„çÐDƒE}#<š3rWK&E‚G¦`JŒ8Bì|oêT®°n~’/(ÕefÊ'‡›ÐìÇß•b¿“C!3\&È­„wÛŒðâgÏ‹ã"uŒ£3 ,ùÂÉ¿ˆµ×à6°½»ü?’×à´`s !…RÅ!U2éÜÊÙ[Ý ©­® ‡6@u¸/ŸIFNý^¯Qê’"‡îPr#ðÉè˜ß^)õzóÓù?B[ßÊI"•w;Z«„Æ¢¸ºôtÇû»ö±Yžþ>ŤŸr£¶Ÿs¥Ìⲟÿ¡¶‰½ÝºvbTö‹…È"ì„+‰|»âFÎŒè½Dç±5B=äud4r,L`t†ªù*RWKöF]Ö#Ì5EÓdvÛçÕZÕ×8>_®c§h¬ç/)Bèz6òñ€£ÞôÌ3:%’i‰­L¿äŸ¹ÏŸÒÙ½qˆ/pxBÜr±“$’¼·-†îQC{ikµ—öWÔ‚Ê.w›RÇ'ð ¢=ñu Fit2ˆÚñ†Ï(œY»N âhü0^ÒÍiêÃ|¶¦uÆ4óq„#·Nü‰0”êëøA¬Z'óØb0˜ÁónU>Q¡Hã.›; /⦷…¿þ‹ìO‹ÏÁdµ×b<<Œ ‡òVâù×6<ý©Ð—ØÊ*ä¼É¿ÕÞŠÊ=„a×É\õ:Á޽HéYäK9èLt&Wl­oÔðzš2ކ«ìÙØs(¬S –ÜߦGÞŸ¢~å¼w"Zª„3ŽmcP{´[V û$ù=ìàÿ;=²M‘8ˆä$æ¡á9þz}çõÞ„ãu¡2šÛî÷”±)Þ{ù>+E¿”›5œÂíø¹p@gÚ*ûjà°;yòÀïB BÙý"¯Ÿ¥ÜhºòÙ Á8&%c»ì°w¹©ü˜¥?6± I<ÚÔï4,\€0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark €dvipsk_TexLive-2009-stripped/virtualfont.c0000644000175000017500000001662711372532227020633 0ustar uwabamiuwabami/* * Here's the code to load a VF file into memory. * Any resemblance between this file and loadfont.c is purely uncoincidental. */ #include "dvips.h" /* The copyright notice in that file is included too! */ #ifdef KPATHSEA #include #endif /* * These are the external routines we use. */ #include "protos.h" /* * These are the external variables we use. */ #ifdef DEBUG extern integer debug_flag; #endif /* DEBUG */ extern long bytesleft ; extern quarterword *raster ; #ifndef KPATHSEA extern char *vfpath ; #endif extern char errbuf[200] ; extern real conv ; extern real vconv ; extern real alpha ; extern int actualdpi ; extern int vactualdpi ; extern char *nextstring, *maxstring ; extern fontdesctype *fonthead ; extern real alpha ; extern Boolean noomega ; /* * Now we have some routines to get stuff from the VF file. * Subroutine vfbyte returns the next byte. */ static FILE *vffile ; static char name[50] ; void badvf(char *s) { (void)sprintf(errbuf,"! Bad VF file %s: %s",name,s) ; error(errbuf); } shalfword vfbyte(void) { register shalfword i ; if ((i=getc(vffile))==EOF) badvf("unexpected eof") ; return(i) ; } integer vfquad(void) { register integer i ; i = vfbyte() ; if (i > 127) i -= 256 ; i = i * 256 + vfbyte() ; i = i * 256 + vfbyte() ; i = i * 256 + vfbyte() ; return(i) ; } integer vftrio(void) { register integer i ; i = vfbyte() ; i = i * 256 + vfbyte() ; i = i * 256 + vfbyte() ; return(i) ; } int vfopen(register fontdesctype *fd) { register char *n ; #ifndef KPATHSEA register char *d ; #endif n = fd->name ; #ifndef KPATHSEA d = fd->area ; if (*d==0) d = vfpath ; #endif #ifdef MVSXA /* IBM: MVS/XA */ (void)sprintf(name, "vf(%s)", n) ; #else (void)sprintf(name, "%s.vf", n) ; #endif #ifdef KPATHSEA if (0 != (vffile=search(vfpath, name, READBIN))) #else if (0 != (vffile=search(d, name, READBIN))) #endif return(1) ; if (!noomega) #ifdef KPATHSEA if (0 != (vffile=search(ovfpath, n, READBIN))) #else if (0 != (vffile=search(d, n, READBIN))) #endif return(2) ; return(0) ; } /* * The following routine is like fontdef, but for local fontdefs in VF files. */ fontmaptype * vfontdef(integer s, int siz) { register integer i, j, fn ; register fontdesctype *fp ; register fontmaptype *cfnt ; char *nam, *area ; integer cksum, scsize, dssize ; fn = vfbyte() ; while (siz-- > 1) fn = (fn << 8) + vfbyte() ; cfnt = (fontmaptype *)mymalloc((integer)sizeof(fontmaptype)) ; cfnt->fontnum = fn ; cksum = vfquad() ; scsize = scalewidth(s, vfquad()) ; dssize = (integer)(alpha * (real)vfquad()) ; i = vfbyte() ; j = vfbyte() ; if (nextstring + i + j > maxstring) error("! out of string space") ; area = nextstring ; for (; i>0; i--) *nextstring++ = vfbyte() ; *nextstring++ = 0 ; nam = nextstring ; for (; j>0; j--) *nextstring++ = vfbyte() ; *nextstring++ = 0 ; fp = matchfont(nam, area, scsize, (char *)0) ; if (fp) { nextstring = nam ; fp->checksum = cksum ; } else { fp = newfontdesc(cksum, scsize, dssize, nam, area) ; fp->next = fonthead ; fonthead = fp ; } cfnt->desc = fp ; return (cfnt) ; } /* * Now our virtualfont routine. */ Boolean virtualfont(register fontdesctype *curfnt) { register integer i ; register shalfword cmd ; register integer k ; register integer length ; register integer cc ; register chardesctype *cd ; integer scaledsize = curfnt->scaledsize ; integer no_of_chars=256 ; integer maxcc=255 ; register quarterword *tempr ; fontmaptype *fm, *newf ; int kindfont ; kindfont = vfopen(curfnt) ; /* 1 for TeX, 2 for Omega */ if (!kindfont) return (0) ; #ifdef DEBUG if (dd(D_FONTS)) (void)fprintf(stderr,"Loading virtual font %s at %.1fpt\n", name, (real)scaledsize/(alpha*0x100000)) ; #endif /* DEBUG */ /* * We clear out some pointers: */ if (kindfont==2) { no_of_chars = 65536; curfnt->maxchars=65536; free(curfnt->chardesc); curfnt->chardesc = (chardesctype *) mymalloc(65536 * (integer)sizeof(chardesctype)); } for (i=0; ichardesc[i].TFMwidth = 0 ; curfnt->chardesc[i].packptr = NULL ; curfnt->chardesc[i].pixelwidth = 0 ; curfnt->chardesc[i].flags = 0 ; curfnt->chardesc[i].flags2 = 0 ; } if (vfbyte()!=247) badvf("expected pre") ; if (vfbyte()!=202) badvf("wrong id byte") ; for(i=vfbyte(); i>0; i--) (void)vfbyte() ; k = vfquad() ; check_checksum (k, curfnt->checksum, curfnt->name); k = (integer)(alpha * (real)vfquad()) ; if (k > curfnt->designsize + 2 || k < curfnt->designsize - 2) { (void)sprintf(errbuf,"Design size mismatch in font %s", name) ; error(errbuf) ; } /* * Now we look for font definitions. */ fm = NULL ; while ((cmd=vfbyte())>=243) { if (cmd>246) badvf("unexpected command in preamble") ; newf = vfontdef(scaledsize, cmd-242) ; if (fm) fm->next = newf ; else curfnt->localfonts = newf ; fm = newf ; fm->next = NULL ; /* FIFO */ } /* * Now we get down to the serious business of reading character definitions. */ do { if (cmd==242) { length = vfquad() + 2 ; if (length<2) badvf("negative length packet") ; if (length>65535) badvf("packet too long") ; cc = vfquad() ; if (cc<0 || cc>=no_of_chars) badvf("character code out of range") ; cd = curfnt->chardesc + cc ; cd->TFMwidth = scalewidth(vfquad(), scaledsize) ; } else { length = cmd + 2; cc = vfbyte() ; cd = curfnt->chardesc + cc ; cd->TFMwidth = scalewidth(vftrio(), scaledsize) ; } maxcc = (maxccTFMwidth >= 0) cd->pixelwidth = ((integer)(conv*cd->TFMwidth+0.5)) ; else cd->pixelwidth = -((integer)(conv*-cd->TFMwidth+0.5)) ; cd->flags = EXISTS ; cd->flags2 = EXISTS ; if (bytesleft < length) { #ifdef DEBUG if (dd(D_MEM)) (void)fprintf(stderr, #ifdef SHORTINT "Allocating new raster memory (%ld req, %ld left)\n", #else "Allocating new raster memory (%d req, %ld left)\n", #endif length, bytesleft) ; #endif /* DEBUG */ if (length > MINCHUNK) { tempr = (quarterword *)mymalloc((integer)length) ; bytesleft = 0 ; } else { raster = (quarterword *)mymalloc((integer)RASTERCHUNK) ; tempr = raster ; bytesleft = RASTERCHUNK - length ; raster += length ; } } else { tempr = raster ; bytesleft -= length ; raster += length ; } cd->packptr = tempr ; length -= 2 ; *tempr++ = length / 256 ; *tempr++ = length % 256 ; for (; length>0; length--) *tempr++ = vfbyte() ; cmd = vfbyte() ; } while (cmd < 243) ; if (cmd != 248) badvf("missing postamble") ; (void)fclose(vffile) ; curfnt->loaded = 2 ; if (maxcc+1chardesc = (chardesctype *) xrealloc(curfnt->chardesc, (maxcc+1) * (integer)sizeof(chardesctype)); curfnt->maxchars=maxcc+1; } return (1) ; } dvipsk_TexLive-2009-stripped/pfbincl.test0000755000175000017500000000020611372532227020415 0ustar uwabamiuwabami#! /bin/sh ./dvips -D 300 $srcdir/testdata/pfbincl.xdv -o pfbincl.ps || exit 1 diff $srcdir/testdata/pfbincl.xps pfbincl.ps exit 0 dvipsk_TexLive-2009-stripped/skippage.c0000644000175000017500000000446511372532227020056 0ustar uwabamiuwabami/* * Skips over a page, collecting possible font definitions. A very simple * case statement insures we maintain sync with the dvi file by collecting * the necessary parameters; but font definitions must be processed normally. */ #include "dvips.h" /* The copyright notice in that file is included too! */ /* * These are the external routines called. */ #include "protos.h" /* * These are the external variables accessed. */ #ifdef DEBUG extern integer debug_flag; #endif /* DEBUG */ extern integer pagenum ; extern char errbuf[] ; extern FILE *dvifile ; /* * And now the big routine. */ void skippage(void) { register shalfword cmd ; register integer i ; #ifdef DEBUG if (dd(D_PAGE)) #ifdef SHORTINT (void)fprintf(stderr,"Skipping page %ld\n", pagenum) ; #else /* ~SHORTINT */ (void)fprintf(stderr,"Skipping page %d\n", pagenum) ; #endif /* ~SHORTINT */ #endif /* DEBUG */ /* skipover(40) ; skip rest of bop command? how did this get in here? */ bopcolor(0) ; while ((cmd=dvibyte())!=140) { switch (cmd) { /* illegal options */ case 130: case 131: case 135: case 136: case 139: case 247: case 248: case 249: case 250: case 251: case 252: case 253: case 254: case 255: (void)sprintf(errbuf, "! DVI file contains unexpected command (%d)",cmd) ; error(errbuf) ; /* eight byte commands */ case 132: case 137: cmd = dvibyte() ; cmd = dvibyte() ; cmd = dvibyte() ; cmd = dvibyte() ; /* four byte commands */ case 146: case 151: case 156: case 160: case 165: case 170: case 238: cmd = dvibyte() ; /* three byte commands */ case 145: case 150: case 155: case 159: case 164: case 169: case 237: cmd = dvibyte() ; /* two byte commands */ case 129: case 134: case 144: case 149: case 154: case 158: case 163: case 168: case 236: cmd = dvibyte() ; /* one byte commands */ case 128: case 133: case 143: case 148: case 153: case 157: case 162: case 167: case 235: cmd = dvibyte() ; break ; /* specials */ case 239: i = dvibyte() ; predospecial(i, 0) ; break ; case 240: i = twobytes() ; predospecial(i, 0) ; break ; case 241: i = threebytes() ; predospecial(i, 0) ; break ; case 242: i = signedquad() ; predospecial(i, 0) ; break ; /* font definition */ case 243: case 244: case 245: case 246: fontdef(cmd - 242) ; break ; default: ; } } } dvipsk_TexLive-2009-stripped/emspecial.c0000644000175000017500000010410111372532227020201 0ustar uwabamiuwabami/* * emspecial.c * This routine handles the emTeX special commands. */ #include "dvips.h" /* The copyright notice in that file is included too!*/ #include #include /* * These are the external routines called: */ #include "protos.h" extern char errbuf[] ; extern shalfword linepos; extern FILE *bitfile; extern int actualdpi ; extern int vactualdpi ; extern integer hh, vv; #ifndef KPATHSEA extern char *figpath ; #endif extern int prettycolumn ; extern int quiet; extern Boolean disablecomments ; #ifdef DEBUG extern integer debug_flag; #endif #ifdef EMTEX /* emtex specials, added by rjl */ #ifndef TRUE #define TRUE 1 #define FALSE 0 #endif static long emmax = 161 ; /* * We define these seek constants if they don't have their * values already defined. */ #ifndef SEEK_SET #define SEEK_SET (0) #endif #ifndef SEEK_END #define SEEK_END (2) #endif struct empt { struct empt *next ; shalfword point; integer x, y; }; static struct empt **empoints = NULL ; boolean emused = FALSE; /* true if em points used on this page */ integer emx, emy; struct emunit { char *unit; float factor; }; struct emunit emtable[] = { {"pt",72.27}, {"pc",72.27/12}, {"in",1.0}, {"bp",72.0}, {"cm",2.54}, {"mm",25.4}, {"dd",72.27/(1238.0/1157)}, {"cc",72.27/12/(1238.0/1157)}, {"sp",72.27*65536}, {0,0.0} }; /* clear the empoints array if necessary */ void emclear(void) { int i; if (emused && empoints) for (i=0; ipoint == point ) break; p = p->next ; } if (p == 0) { p = (struct empt *)mymalloc(sizeof(struct empt)) ; p->next = empoints[start] ; empoints[start] = p ; } p->point = point; p->x = x; p->y = y; return(p) ; } /* get an empoint from the empoints array */ struct empt * emptget(shalfword point) { struct empt *p ; int start; start = point % emmax; if (emused == TRUE) { p = empoints[start] ; while (p) { if (p->point == point) return p ; p = p->next ; } } sprintf(errbuf,"!em: point %d not defined",point); specerror(errbuf); return(NULL); /* never returns due to error */ } /* convert width into dpi units */ float emunits(float width, char *unit) { struct emunit *p; for (p=emtable; p->unit; p++) { if (strcmp(p->unit,unit)==0) return( width * actualdpi / p->factor ); } return (-1.0); /* invalid unit */ } /* The main routine for \special{em:graph ...} called from dospecial.c */ /* the line cut parameter is not supported (and is ignored) */ void emspecial(char *p) { float emwidth, emheight; shalfword empoint1, empoint2; struct empt *empoint; char emunit[3]; char emstr[80]; char *emp; #ifndef KPATHSEA void emgraph(); #endif hvpos() ; for (emp = p+3; *emp && isspace(*emp); emp++); /* skip blanks */ if (strncmp(emp, "linewidth", 9) == 0) { /* code for linewidth */ for (emp = emp+9; *emp && isspace(*emp); emp++); /* skip blanks */ sscanf(emp, "%f%2s", &emwidth, emunit); emwidth = emunits(emwidth,emunit); if (emwidth!=-1.0) { sprintf(emstr,"%.1f setlinewidth", emwidth); cmdout(emstr); #ifdef DEBUG if (dd(D_SPECIAL)) (void)fprintf(stderr, "em special: Linewidth set to %.1f dots\n", emwidth) ; #endif } else { sprintf(errbuf,"Unknown em: special width"); specerror(errbuf); } } else if (strncmp(emp, "moveto", 6) == 0) { #ifdef DEBUG if (dd(D_SPECIAL)) #ifdef SHORTINT (void)fprintf(stderr, "em special: moveto %ld,%ld\n", hh, vv); #else (void)fprintf(stderr, "em special: moveto %d,%d\n", hh, vv); #endif #endif emx = hh; emy = vv; } else if (strncmp(emp, "lineto", 6) == 0) { #ifdef DEBUG if (dd(D_SPECIAL)) #ifdef SHORTINT (void)fprintf(stderr, "em special: lineto %ld,%ld\n", hh, vv); #else (void)fprintf(stderr, "em special: lineto %d,%d\n", hh, vv); #endif #endif cmdout("np"); numout(emx); numout(emy); cmdout("a"); numout(hh); numout(vv); cmdout("li"); cmdout("st"); emx = hh; emy = vv; } else if (strncmp(emp, "point", 5) == 0) { if (empoints == NULL) { empoints = (struct empt **)mymalloc((integer)emmax * sizeof(struct empt *)) ; emused = TRUE; emclear(); } for (emp = emp+5; *emp && isspace(*emp); emp++); /* skip blanks */ empoint1 = (shalfword)atoi(emp); empoint = emptput(empoint1,hh,vv); #ifdef DEBUG if (dd(D_SPECIAL)) #ifdef SHORTINT (void)fprintf(stderr, "em special: Point %d is %ld,%ld\n", #else (void)fprintf(stderr, "em special: Point %d is %d,%d\n", #endif empoint->point, empoint->x, empoint->y) ; #endif } else if (strncmp(emp, "line", 4) == 0) { for (emp = emp+4; *emp && isspace(*emp); emp++); /* skip blanks */ empoint1 = (shalfword)atoi(emp); for (; *emp && isdigit(*emp); emp++); /* skip point 1 */ if ( *emp && strchr("hvp",*emp)!=0 ) emp++; /* skip line cut */ for (; *emp && isspace(*emp); emp++); /* skip blanks */ if ( *emp && (*emp==',') ) emp++; /* skip comma separator */ for (; *emp && isspace(*emp); emp++); /* skip blanks */ empoint2 = (shalfword)atoi(emp); for (; *emp && isdigit(*emp); emp++); /* skip point 2 */ if ( *emp && strchr("hvp",*emp)!=0 ) emp++; /* skip line cut */ for (; *emp && isspace(*emp); emp++); /* skip blanks */ if ( *emp && (*emp==',') ) emp++; /* skip comma separator */ emwidth = -1.0; emunit[0]='\0'; sscanf(emp, "%f%2s", &emwidth, emunit); emwidth = emunits(emwidth,emunit); #ifdef DEBUG if (dd(D_SPECIAL)) (void)fprintf(stderr, "em special: Line from point %d to point %d\n", empoint1, empoint2) ; #endif cmdout("np"); if (emwidth!=-1.0) { #ifdef DEBUG if (dd(D_SPECIAL)) (void)fprintf(stderr,"em special: Linewidth temporarily set to %.1f dots\n", emwidth) ; #endif strcpy(emstr,"currentlinewidth"); cmdout(emstr); sprintf(emstr,"%.1f setlinewidth", emwidth); cmdout(emstr); } empoint = emptget(empoint1); numout(empoint->x); numout(empoint->y); cmdout("a"); empoint = emptget(empoint2); numout(empoint->x); numout(empoint->y); cmdout("li"); cmdout("st"); if (emwidth!=-1.0) { strcpy(emstr,"setlinewidth"); cmdout(emstr); } } else if (strncmp(emp, "message", 7) == 0) { (void)fprintf(stderr, "em message: %s\n", emp+7) ; } else if (strncmp(emp, "graph", 5) == 0) { int i; for (emp = emp+5; *emp && isspace(*emp); emp++); /* skip blanks */ for (i=0; *emp && !isspace(*emp) && !(*emp==',') ; emp++) emstr[i++] = *emp; /* copy filename */ emstr[i] = '\0'; /* now get optional width and height */ emwidth = emheight = -1.0; /* no dimension is <= 0 */ for (; *emp && ( isspace(*emp) || (*emp==',') ); emp++) ; /* skip blanks and comma */ if (*emp) { sscanf(emp, "%f%2s", &emwidth, emunit); /* read width */ emwidth = emunits(emwidth,emunit); /* convert to pixels */ for (; *emp && (*emp=='.'||isdigit(*emp)||isalpha(*emp)); emp++) ; /* skip width dimension */ for (; *emp && ( isspace(*emp) || (*emp==',') ); emp++) ; /* skip blanks and comma */ if (*emp) { sscanf(emp, "%f%2s", &emheight, emunit); /* read height */ emheight = emunits(emheight,emunit)*vactualdpi/actualdpi; } } if (emstr[0]) { emgraph(emstr,emwidth,emheight); } else { (void)fprintf(stderr, "em:graph: no file given\n") ; } } else { sprintf(errbuf, "Unknown em: command (%s) in \\special will be ignored", p); specerror(errbuf) ; } return; } /* em:graph routines */ /* The graphics routines currently decode 3 types of IBM-PC based graphics */ /* files: .pcx, .bmp, .msp. The information on the formats has occasionally */ /* been sketchy, and subject to interpretation. I have attempted to implement*/ /* these routines to correctly decode the graphics file types mentioned. */ /* The compressed .bmp file type has not been tested fully due to a lack of */ /* test files. */ /* */ /* The method of reading in the headers of the binary files is ungainly, but */ /* portable. Failure to use a byte by byte read and convert method will */ /* result in portability problems. Specifically there is no requirement that */ /* elements of a C structure be contiguous, only that they have an ascending */ /* order of addresses. */ /* */ /* The current implementations of the graphics format to postscript */ /* conversion are not the most efficient possible. Specifically: color */ /* formats are converted to RGB ratios prior to using a simple thresholding */ /* method to determine if the postscript bit is to be set. The thresholding */ /* method is compabible with that used in emtex's drivers. */ /* */ /* Please send bug reports relating to the em:graph routines to: */ /* maurice@bruce.cs.monash.edu.au */ /* */ /* My thanks to Russell Lang for his assistance with the implementation of */ /* these routines in a manner compatible with dvips and for the optimization */ /* of some routines. */ /* */ /* Maurice Castro */ /* 8 Oct 92 */ /* Routines to read binary numbers from IBM PC file types */ integer readinteger(FILE *f) { integer i; int r; i = 0; for (r = 0; r < 4; r++) { i = i | ( ((integer) fgetc(f)) << (8*r) ); } return(i); } halfword readhalfword(FILE *f) { halfword i; int r; i = 0; for (r = 0; r < 2; r++) { i = i | ( ((halfword) fgetc(f)) << (8*r) ); } return(i); } #define readquarterword(f) ((unsigned char)fgetc(f)) #define tobyte(x) ((x/8) + (x%8 ? 1 : 0)) /* These routines will decode PCX files produced by Microsoft * Windows Paint. Other programs may not produce files which * will be successfully decoded, most notably version 1.xx of * PC Paint. */ /* * Type declarations. integer must be a 32-bit signed; shalfword must * be a sixteen-bit signed; halfword must be a sixteen-bit unsigned; * quarterword must be an eight-bit unsigned. */ typedef struct { quarterword man; quarterword ver; quarterword enc; quarterword bitperpix; halfword xmin; halfword ymin; halfword xmax; halfword ymax; halfword hres; halfword vres; quarterword pal[48]; quarterword reserved; quarterword colorplanes; halfword byteperline; halfword paltype; quarterword fill[58]; } PCXHEAD; static int PCXreadhead(FILE *pcxf, PCXHEAD *pcxh) { pcxh->man = readquarterword(pcxf); pcxh->ver = readquarterword(pcxf); pcxh->enc = readquarterword(pcxf); pcxh->bitperpix = readquarterword(pcxf); pcxh->xmin = readhalfword(pcxf); pcxh->ymin = readhalfword(pcxf); pcxh->xmax = readhalfword(pcxf); pcxh->ymax = readhalfword(pcxf); pcxh->hres = readhalfword(pcxf); pcxh->vres = readhalfword(pcxf); fread(pcxh->pal, 1, 48, pcxf); pcxh->reserved = readquarterword(pcxf); pcxh->colorplanes = readquarterword(pcxf); pcxh->byteperline = readhalfword(pcxf); pcxh->paltype = readhalfword(pcxf); fread(pcxh->fill, 1, 58, pcxf); if (feof(pcxf)) return(0); /* fail */ if (pcxh->man != 0x0a) return(0); /* fail */ if (pcxh->enc != 0x1) return(0); /* fail */ return(1); /* success */ } int PCXreadline(FILE *pcxf, unsigned char *pcxbuf, unsigned int byteperline) { int n; int c; int i; n = 0; memset(pcxbuf,0,byteperline); do { c = fgetc(pcxf); if ((c & 0xc0) == 0xc0) { i = c & 0x3f; c = fgetc(pcxf) & 0xff; while ((i--) && (n < byteperline)) pcxbuf[n++] = c; } else { pcxbuf[n++] = c & 0xff; } } while (n < byteperline); if (c==EOF) n=0; return(n); } static void PCXgetpalette(FILE *pcxf, PCXHEAD *pcxh, unsigned char *r, unsigned char *g, unsigned char *b) { int i; /* clear palette */ for (i=0; i < 256; i++) { r[i] = 0; g[i] = 0; b[i] = 0; } switch (pcxh->ver) { case 0: /* version 2.5 of PC Paint Brush */ for (i=0; i < 16; i++) { r[i] = pcxh->pal[i*3]; g[i] = pcxh->pal[i*3+1]; b[i] = pcxh->pal[i*3+2]; } break; case 2: if (pcxh->colorplanes != 1) { /* version 2.8 of PC Paint Brush with valid Palette */ for (i=0; i < 16; i++) { r[i] = pcxh->pal[i*3]; g[i] = pcxh->pal[i*3+1]; b[i] = pcxh->pal[i*3+2]; } } else { /* not sure if this is correct - rjl */ /* mono palette */ r[0] = 0x00; g[0] = 0x00; b[0] = 0x00; r[1] = 0xff; g[1] = 0xff; b[1] = 0xff; } break; case 3: /* version 2.8 of PC Paint Brush with no valid Palette */ /* either mono or default */ if (pcxh->colorplanes != 1) { /* Color default palette - should be checked */ r[0] = 0x00; g[0] = 0x00; b[0] = 0x00; r[1] = 0x80; g[1] = 0x00; b[1] = 0x00; r[2] = 0x00; g[2] = 0x80; b[2] = 0x00; r[3] = 0x80; g[3] = 0x80; b[3] = 0x00; r[4] = 0x00; g[4] = 0x00; b[4] = 0x80; r[5] = 0x80; g[5] = 0x00; b[5] = 0x80; r[6] = 0x00; g[6] = 0x80; b[6] = 0x80; r[7] = 0x80; g[7] = 0x80; b[7] = 0x80; r[8] = 0xc0; g[8] = 0xc0; b[8] = 0xc0; r[9] = 0xff; g[9] = 0x00; b[9] = 0x00; r[10] = 0x00; g[10] = 0xff; b[10] = 0x00; r[11] = 0xff; g[11] = 0xff; b[11] = 0x00; r[12] = 0x00; g[12] = 0x00; b[12] = 0xff; r[13] = 0xff; g[13] = 0x00; b[13] = 0xff; r[14] = 0x00; g[14] = 0xff; b[14] = 0xff; r[15] = 0xff; g[15] = 0xff; b[15] = 0xff; } else { /* mono palette */ r[0] = 0x00; g[0] = 0x00; b[0] = 0x00; r[1] = 0xff; g[1] = 0xff; b[1] = 0xff; } break; case 5: default: /* version 3.0 of PC Paint Brush or Better */ fseek(pcxf, -769L, SEEK_END); /* if signature byte is correct then read the palette */ /* otherwise copy the existing palette */ if (fgetc(pcxf) == 12) { for (i=0; i < 256; i++) { r[i] = fgetc(pcxf); g[i] = fgetc(pcxf); b[i] = fgetc(pcxf); } } else { for (i=0; i < 16; i++) { r[i] = pcxh->pal[i*3]; g[i] = pcxh->pal[i*3+1]; b[i] = pcxh->pal[i*3+2]; } } break; } } void PCXshowpicture(FILE *pcxf, int wide, int high, int bytes, int cp, int bp, unsigned char *r, unsigned char *g, unsigned char *b) { int x; int y; int c; unsigned char *rowa[4]; /* row array */ unsigned char *row; int p; unsigned char *pshexa; int xdiv, xmod, xbit; int width; int bytewidth; bytewidth = tobyte(wide); width = bytewidth * 8; /* output the postscript image size preamble */ cmdout("/picstr "); numout((integer)tobyte(wide)); cmdout("string def"); numout((integer)width); numout((integer)high); numout((integer)1); newline(); cmdout("["); numout((integer)width); numout((integer)0); numout((integer)0); numout((integer)-high); numout((integer)0); numout((integer)0); cmdout("]"); nlcmdout("{currentfile picstr readhexstring pop} image"); /* allocate the postscript hex output array */ pshexa = (unsigned char *) mymalloc((integer)bytewidth); /* make sure that you start at the right point in the file */ fseek(pcxf, (long) sizeof(PCXHEAD), SEEK_SET); /* malloc the lines */ row = (unsigned char *) mymalloc((integer)bytes * cp); for (c = 0; c < cp; c++) rowa[c] = row + bytes*c; for (y = 0; y < high; y++) { /* clear the postscript hex array */ memset(pshexa,0xff,bytewidth); /* read in all the color planes for a row of pixels */ PCXreadline(pcxf, rowa[0], bytes*cp); /* process each pixel */ for (x = 0; x < wide; x++) { /* build up the pixel value from color plane entries */ p = 0; xdiv = x>>3; xmod = 7 - (x&7); xbit = 1 << xmod; switch(bp) { case 1: for (c = 0; c < cp; c++) { row = rowa[c]; p |= ( (unsigned)(row[xdiv] & xbit) >> xmod ) << c; } break; case 4: /* untested - most programs use 1 bit/pixel, 4 planes */ row = rowa[0]; /* assume single plane */ p = ( x & 1 ? row[xdiv] : row[xdiv]>>4 ) & 0x0f; break; case 8: row = rowa[0]; /* assume single plane */ p = (unsigned) (row[x]); break; default: fprintf(stderr, "em:graph: Unable to Decode this PCX file\n"); return; } if ((r[p] < 0xff) || (g[p] < 0xff) || (b[p] < 0xff)) pshexa[xdiv] &= (~xbit); else pshexa[xdiv] |= xbit; } newline(); mhexout(pshexa,(long)bytewidth); } free(pshexa); free(rowa[0]); } void imagehead(char *filename, int wide, int high, float emwidth, float emheight) { char *fullname = NULL, *name ; if (!quiet) { #ifdef KPATHSEA fullname = (char *)kpse_find_file (filename, pictpath, 0) ; #endif if (!fullname) name = filename ; else name = fullname ; if (strlen(name) + prettycolumn > STDOUTSIZE) { fprintf(stderr,"\n"); prettycolumn = 0; } (void)fprintf(stderr,"<%s",name); (void)fflush(stderr); prettycolumn += 2+strlen(name); if (fullname) free (fullname); } hvpos(); nlcmdout("@beginspecial @setspecial") ; if (!disablecomments) { cmdout("%%BeginDocument: em:graph"); cmdout(filename); newline(); } /* set the image size */ if (emwidth <= 0.0) emwidth = (float)wide; if (emheight <= 0.0) emheight = (float)high; floatout(emwidth*72/actualdpi); floatout(emheight*72/vactualdpi); newline(); cmdout("scale"); #ifdef DEBUG if (dd(D_SPECIAL)) { (void)fprintf(stderr, "\nem:graph: %s width %d pixels scaled to %.1f pixels\n", filename, wide, emwidth); (void)fprintf(stderr, "em:graph: %s height %d pixels scaled to %.1f pixels\n", filename, high, emheight); } #endif } void imagetail(void) { if (!disablecomments) { (void)fprintf(bitfile, "\n%%%%EndDocument\n") ; linepos = 0; } nlcmdout("@endspecial") ; if (!quiet) { (void)fprintf(stderr,">"); (void)fflush(stderr); } } void pcxgraph(FILE *pcxf, char *filename, float emwidth, float emheight /* dimension in pixels */ ) { PCXHEAD pcxh; unsigned char red[256]; unsigned char green[256]; unsigned char blue[256]; int wide; int high; int bytes; int cp; int bpp; if (!PCXreadhead(pcxf, &pcxh)) { sprintf(errbuf,"em:graph: Unable to Read Valid PCX Header"); specerror(errbuf); } PCXgetpalette(pcxf, &pcxh, red, green, blue); /* picture size calculation */ wide = (pcxh.xmax - pcxh.xmin) + 1; high = (pcxh.ymax - pcxh.ymin) + 1; bytes = pcxh.byteperline; cp = pcxh.colorplanes; bpp = pcxh.bitperpix; imagehead(filename,wide,high,emwidth,emheight); PCXshowpicture(pcxf, wide, high, bytes, cp, bpp, red, green, blue); imagetail(); } /* Microsoft Paint routines */ struct wpnt_1 { quarterword id[4]; halfword width; halfword high; halfword x_asp; halfword y_asp; halfword x_asp_prn; halfword y_asp_prn; halfword width_prn; halfword high_prn; integer chk_sum; halfword chk_head; }; #define WPAINT_1 1 #define WPAINT_2 2 void MSP_2_ps(FILE *f, int wide, int high) { char *line; char *l; int i; int j; unsigned char a, b, c; int d; int width; halfword *linelen; /* an undocumented format - based on a type of run length encoding */ /* the format is made up of a list of line lengths, followed by a set */ /* of lines. Each line is made up of 2 types of entries: */ /* 1) A 3 term entry (0 a b): the byte b is repeated a times */ /* 2) A variable length entry (a xxxx....xxxx): a bytes are read */ /* from the file. */ /* These entries are combined to build up a line */ width = tobyte(wide)*8; /* output the postscript image size preamble */ cmdout("/picstr"); numout((integer)tobyte(wide)); cmdout("string def"); numout((integer)width); numout((integer)high); numout((integer)1); cmdout("["); numout((integer)width); numout((integer)0); numout((integer)0); numout((integer)-high); numout((integer)0); numout((integer)0); cmdout("]"); nlcmdout("{currentfile picstr readhexstring pop} image"); fseek(f, 32, SEEK_SET); /* read in the table of line lengths */ linelen = (halfword *) mymalloc((integer)sizeof(halfword) * high); for (i = 0; i < high; i++) { linelen[i] = readhalfword(f); if (feof(f)) return; } line = (char *) mymalloc((integer)tobyte(wide)); for (i = 0; i < high; i++) { memset(line, 0xff, tobyte(wide)); l = line; if (linelen[i] != 0) { d = linelen[i]; while (d) { a = fgetc(f); d--; if (a == 0) { b = fgetc(f); c = fgetc(f); d -= 2; for (j = 0; j < b; j++) *l++ = c; } else { for (j = 0; j < a; j++) *l++ = fgetc(f); d -= j; } } } newline(); mhexout((unsigned char *) line,(long)tobyte(wide)); } free(linelen); free(line); } void MSP_1_ps(FILE *f, int wide, int high) { char *line; int i; int width; width = tobyte(wide)*8; /* an partly documented format - see The PC Sourcebook */ /* the format is made up of a simple bitmap. */ /* output the postscript image size preamble */ cmdout("/picstr"); numout((integer)tobyte(wide)); cmdout("string def"); numout((integer)width); numout((integer)high); numout((integer)1); cmdout("["); numout((integer)width); numout((integer)0); numout((integer)0); numout((integer)-high); numout((integer)0); numout((integer)0); cmdout("]"); nlcmdout("{currentfile picstr readhexstring pop} image"); fseek(f, 32, SEEK_SET); line = (char *) mymalloc((integer)tobyte(wide)); for (i = 0; i < high; i++) { fread(line, 1, tobyte(wide), f); newline(); mhexout((unsigned char *) line,(long)tobyte(wide)); } free(line); } void mspgraph(FILE *f, char *filename, float emwidth, float emheight) { struct wpnt_1 head; int paint_type = 0; /* read the header of the file and figure out what it is */ fread(head.id, 1, 4, f); head.width = readhalfword(f); head.high = readhalfword(f); head.x_asp = readhalfword(f); head.y_asp = readhalfword(f); head.x_asp_prn = readhalfword(f); head.y_asp_prn = readhalfword(f); head.width_prn = readhalfword(f); head.high_prn = readhalfword(f); head.chk_sum = readinteger(f); head.chk_head = readhalfword(f); if (feof(f)) { fprintf(stderr, "em:graph: Unable to Read Valid MSP Header\n"); return; } /* check the id bytes */ if (!memcmp(head.id, "DanM", 4)) paint_type = WPAINT_1; if (!memcmp(head.id, "LinS", 4)) paint_type = WPAINT_2; imagehead(filename,head.width,head.high,emwidth,emheight); switch (paint_type) { case WPAINT_1: MSP_1_ps(f, head.width, head.high); break; case WPAINT_2: MSP_2_ps(f, head.width, head.high); break; default: sprintf(errbuf, "em:graph: Unknown MSP File Type"); specerror(errbuf); } imagetail() ; } /* ------------------------------------------------------------------------ */ /* .BMP file structures */ struct rgbquad { char blue; char green; char red; char res; }; struct bitmapinfoheader { integer size; integer width; integer height; halfword planes; /* must be set to 1 */ halfword bitcount; /* 1, 4, 8 or 24 */ integer compression; integer sizeimage; integer xpelspermeter; integer ypelspermeter; integer clrused; integer clrimportant; }; #ifdef WIN32 #undef RGB #endif /* constants for the compression field */ #define RGB 0L #define RLE8 1L #define RLE4 2L struct bitmapfileheader { char type[2]; integer size; halfword reserved1; halfword reserved2; integer offbits; }; void rgbread(FILE *f, int w, int b, char *s) { int i; /* set the line to white */ memset(s, 0xff, ((w*b)/8)+1); /* read in all the full bytes */ for (i = 0; i < (w * b) / 8; i++) *s++ = fgetc(f); /* read in a partly filled byte */ if ((w * b) % 8) { i++; *s++ = fgetc(f); } /* check that we are on a 32 bit boundary; otherwise align */ while (i % 4 != 0) { fgetc(f); i++; } } unsigned rle_dx = 0; /* delta command horizontal offset */ unsigned rle_dy = 0; /* delta command vertical offset */ /* checked against output from Borland Resource Workshop */ void rle4read(FILE *f, int w, int b, char *s) { int i; int limit; int ch; unsigned cnt; int hi; limit = (w*b)/8; i = 0; hi = TRUE; /* set the line to white */ memset(s, 0xff, limit+1); if (rle_dy) { rle_dy--; return; } if (rle_dx) { for ( ; rle_dx>1; rle_dx-=2) { s++; i++; } if (rle_dx) hi = FALSE; } while (i<=limit) { cnt = fgetc(f); ch = fgetc(f); if (cnt == 0) { /* special operation */ switch(ch) { case 0: /* EOL */ return; /* this is our way out */ case 1: /* End of Bitmap */ return; case 2: /* Delta */ /* untested */ rle_dx = fgetc(f) + i*2 + (hi ? 1 : 0); rle_dy = fgetc(f); return; default: /* next cnt bytes are absolute */ /* must be aligned on word boundary */ if (!hi) fprintf(stderr,"em:graph: RLE4 absolute is not byte aligned\n"); for (cnt = ch; cnt>0 && i<=limit; cnt-=2) { i++; *s++ = fgetc(f); } if (ch % 4) /* word align file */ (void)fgetc(f); } } else { /* cnt is repeat count */ if (!hi) { /* we are about to place the low 4 bits */ ch = ((ch>>4)&0x0f) | ((ch<<4)&0xf0); /* swap order */ i++; *s = (*s & 0xf0) | (ch & 0x0f); s++ ; hi = TRUE; cnt--; } /* we are about to place the high 4 bits */ for ( ; cnt>1 && i<=limit ; cnt-=2) { /* place the whole bytes */ i++; *s++ = ch; } if (cnt) { /* place the partial byte */ *s = (*s & 0x0f) | (ch & 0xf0); hi = FALSE; } } } } /* untested */ void rle8read(FILE *f, int w, int b, char *s) { int i; int limit; int ch; unsigned cnt; limit = (w*b)/8; i = 0; /* set the line to white */ memset(s, 0xff, limit+1); if (rle_dy) { rle_dy--; return; } if (rle_dx) { for ( ; rle_dx > 0; rle_dx--) { s++; i++; } } while (i<=limit) { cnt = fgetc(f); ch = fgetc(f); if (cnt == 0) { /* special operation */ switch(ch) { case 0: /* EOL */ return; /* this is our way out */ case 1: /* End of Bitmap */ return; case 2: /* Delta */ /* untested */ rle_dx = fgetc(f) + i; rle_dy = fgetc(f); return; default: /* next cnt bytes are absolute */ for (cnt = ch; cnt>0 && i<=limit; cnt--) { i++; *s++ = fgetc(f); } if (ch % 2) /* word align file */ (void)fgetc(f); } } else { /* cnt is repeat count */ for ( ; cnt>0 && i<=limit; cnt--) { i++; *s++ = ch; } } } } void bmpgraph(FILE *f, char *filename, float emwidth, float emheight) { struct bitmapfileheader bmfh; struct bitmapinfoheader bmih; unsigned char isblack[256]; unsigned char rr; unsigned char gg; unsigned char bb; unsigned char c = 0; char *line; char *pshexa; int clrtablesize; int i; int j; unsigned char omask; int oroll; unsigned char emask = 0; integer ewidth = 0; int isOS2; /* read the header of the file */ fread(bmfh.type, 1, 2, f); bmfh.size = readinteger(f); bmfh.reserved1 = readhalfword(f); bmfh.reserved2 = readhalfword(f); bmfh.offbits = readinteger(f); if (feof(f)) { sprintf(errbuf, "em:graph: Unable to Read Valid BMP Header\n"); specerror(errbuf); return; } bmih.size = readinteger(f); if (bmih.size == 12) { /* OS2 bitmap */ isOS2 = TRUE; bmih.width = readhalfword(f); bmih.height = readhalfword(f); bmih.planes = readhalfword(f); bmih.bitcount = readhalfword(f); /* the following don't exist in OS2 format so fill with 0's */ bmih.compression = RGB; bmih.sizeimage = 0; bmih.xpelspermeter = 0; bmih.ypelspermeter = 0; bmih.clrused = 0; bmih.clrimportant = 0; } else { /* Windows bitmap */ isOS2 = FALSE; bmih.width = readinteger(f); bmih.height = readinteger(f); bmih.planes = readhalfword(f); bmih.bitcount = readhalfword(f); bmih.compression = readinteger(f); bmih.sizeimage = readinteger(f); bmih.xpelspermeter = readinteger(f); bmih.ypelspermeter = readinteger(f); bmih.clrused = readinteger(f); bmih.clrimportant = readinteger(f); } if (feof(f)) { sprintf(errbuf, "em:graph: Unable to Read Valid BMP Info"); specerror(errbuf); return; } if (memcmp(bmfh.type, "BM", 2)) { sprintf(errbuf, "em:graph: Unknown BMP File Type"); specerror(errbuf); return; } if ((bmih.compression == RLE4) && (bmih.bitcount != 4)) { sprintf(errbuf, "em:graph: Can't do BMP RLE4 with %d bits per pixel", bmih.bitcount); specerror(errbuf); return; } if ((bmih.compression == RLE8) && (bmih.bitcount != 8)) { sprintf(errbuf, "em:graph: Can't do BMP RLE8 with %d bits per pixel\n", bmih.bitcount); specerror(errbuf); return; } imagehead(filename,(int)bmih.width,(int)bmih.height,emwidth,emheight); /* determine the size of the color table to read */ clrtablesize = 0; if (bmih.clrused == 0) { switch (bmih.bitcount) { case 1: clrtablesize = 2; break; case 4: clrtablesize = 16; break; case 8: clrtablesize = 256; break; case 24: break; } } else clrtablesize = bmih.clrused; /* read in the color table */ for (i = 0; i < clrtablesize; i++) { bb = fgetc(f); gg = fgetc(f); rr = fgetc(f); isblack[i] = (rr < 0xff) || (gg < 0xff) || (bb < 0xff); if (!isOS2) (void) fgetc(f); } line = (char *) mymalloc((integer)((bmih.width * bmih.bitcount) / 8) + 1); pshexa = (char *) mymalloc((integer)tobyte(bmih.width)); /* output the postscript image size preamble */ cmdout("/picstr"); numout((integer)tobyte(bmih.width)); cmdout("string def"); numout((integer)bmih.width); numout((integer)bmih.height); numout((integer)1); cmdout("["); numout((integer)bmih.width); numout((integer)0); numout((integer)0); numout((integer)bmih.height); numout((integer)0); numout((integer)bmih.height); cmdout("]"); nlcmdout("{currentfile picstr readhexstring pop} image"); if (bmih.bitcount == 1) { if (bmih.width%8) emask = (1<<(8-(bmih.width%8)))-1; /* mask for edge of bitmap */ else emask = 0; ewidth = tobyte(bmih.width); } /* read in all the lines of the file */ for (i = 0; i < bmih.height; i++) { memset(pshexa,0xff,tobyte(bmih.width)); switch (bmih.compression) { case RGB: rgbread(f, (int) bmih.width, (int) bmih.bitcount, line); break; case RLE4: rle4read(f, (int) bmih.width, (int) bmih.bitcount, line); break; case RLE8: rle8read(f, (int) bmih.width, (int) bmih.bitcount, line); break; default: sprintf(errbuf,"em:graph: Unknown BMP compression\n"); specerror(errbuf); return; } omask = 0x80; oroll = 7; if (bmih.bitcount == 1) { if (isblack[0]) for (j = 0; j < ewidth ; j++) pshexa[j] = line[j]; else for (j = 0; j < ewidth ; j++) pshexa[j] = ~line[j]; pshexa[ewidth-1] |= emask; } else { for (j = 0; j < bmih.width; j++) { switch (bmih.bitcount) { case 4: c = line[j>>1]; if (!(j&1)) c >>= 4; c = isblack[ c & 0x0f ]; break; case 8: c = isblack[ (int)(line[j]) ]; break; case 24: rr = line[j*3]; gg = line[j*3+1]; bb = line[j*3+2]; c = (rr < 0xff) || (gg < 0xff) || (bb < 0xff); break; } if (c) pshexa[j/8] &= ~omask; else pshexa[j/8] |= omask; oroll--; omask >>= 1; if (oroll < 0) { omask = 0x80; oroll = 7; } } } newline(); mhexout((unsigned char *) pshexa,(long)tobyte(bmih.width)); } imagetail() ; free(pshexa); free(line); } /* ------------------------------------------------------------------------ */ #define PCX 0 #define MSP 1 #define BMP 2 char *extarr[]= { ".pcx", ".msp", ".bmp", NULL }; void emgraph(char *filename, float emwidth, float emheight) { char fname[80]; int filetype; FILE *f; char *env; char id[4]; int i; strcpy(fname, filename); /* find the file */ f = search(figpath, fname, READBIN); if (f == (FILE *)NULL) { if ( (env = getenv("DVIDRVGRAPH")) != NULL ) #ifdef KPATHSEA f = search((kpse_file_format_type)env,filename,READBIN); #else f = search(env,filename,READBIN); #endif } /* if still haven't found it try adding extensions */ if (f == (FILE *)NULL) { i = 0; while (extarr[i] != NULL) { strcpy(fname, filename); strcat(fname, extarr[i]); f = search(figpath, fname, READBIN); if (f == (FILE *)NULL) { if ( (env = getenv("DVIDRVGRAPH")) != NULL ) #ifdef KPATHSEA f = search((kpse_file_format_type)env,filename,READBIN); #else f = search(env,filename,READBIN); #endif } if (f != (FILE *)NULL) break; i++; } } filetype = -1; if (f != (FILE *)NULL) { for (i=0; i<4; i++) { id[i] = readquarterword(f); } if ( (id[0] == 0x0a) && (id[2] == 0x01) ) filetype = PCX; if (!memcmp(id, "DanM", 4)) filetype = MSP; if (!memcmp(id, "LinS", 4)) filetype = MSP; if (!memcmp(id, "BM", 2)) filetype = BMP; fseek(f, 0L, SEEK_SET); } switch (filetype) { case PCX: pcxgraph(f, fname, emwidth, emheight); break; case MSP: mspgraph(f, fname, emwidth, emheight); break; case BMP: bmpgraph(f, fname, emwidth, emheight); break; default: sprintf(fname,"em:graph: %s: File not found", filename); error(fname); } if (f != (FILE *)NULL) close_file(f); } #else void emspecial(char *p) { sprintf(errbuf,"emTeX specials not compiled in this version"); specerror(errbuf); } #endif /* EMTEX */ dvipsk_TexLive-2009-stripped/protos.h0000644000175000017500000003301211372532227017574 0ustar uwabamiuwabami#ifndef _PROTOS_H_ #define _PROTOS_H_ /* some types need declaration before being used */ struct nlink; struct hps_link; struct Char; struct String; struct tcd; /* prototypes for functions from bbox.c */ extern void bbtfmload(fontdesctype *curfnt); extern void bbspecial(int h, int v, int nbytes); extern void bbdopage(void); extern void findbb(int bop); /* prototypes for functions from color.c */ extern void colorcmdout(char *s); extern void initcolor(void); extern void background(char *bkgrnd); extern void resetcolorstack(char *p, int outtops); extern void bopcolor(int outtops); extern void pushcolor(char *p, Boolean outtops); extern void popcolor(Boolean outtops); /* prototypes for functions from dopage.c */ extern void dopage(void); /* prototypes for functions from dosection.c */ extern void dosection(sectiontype *s, int c); extern int InPageList(int i); extern void InstallPL(int pslow, int pshigh); extern int ParsePages(char *s); /* prototypes for functions from dospecial.c */ extern void specerror(char *s); extern void outbangspecials(void); extern int IsSame(char *a, char *b); extern char *GetKeyVal(char *str, int *tno); extern void predospecial(int numbytes, Boolean scanning); extern int maccess(char *s); extern void dospecial(int numbytes); extern void fil2ps(char *task, char *iname); extern float *bbdospecial(int nbytes); /* prototypes for functions from download.c */ extern void download(charusetype *p, int psfont); extern void makepsname(char *s, int n); extern void lfontout(int n); extern void dopsfont(sectiontype *fs); /* prototypes for functions from dpicheck.c */ extern void addsiz(int rhsize); extern void adddpi(int hsize); extern unsigned short dpicheck(unsigned short dpi); /* prototypes for functions from drawPS.c */ #ifdef TPIC extern void setPenSize(char *cp); extern void addPath(char *cp); extern void arc(char *cp, int invis); extern void flushDashedPath(int dotted, double inchesPerDash); extern void flushPath(int invis); extern void flushDashed(char *cp, int dotted); extern void flushSpline(char *cp); extern void SetShade(char *cp); extern void shadeLast(char *cp); extern void whitenLast(void); extern void blackenLast(void); #endif /* TPIC */ /* prototypes for functions from dviinput.c */ extern void abortpage(void); extern short dvibyte(void); extern unsigned short twobytes(void); extern int threebytes(void); extern short signedbyte(void); extern short signedpair(void); extern int signedtrio(void); extern int signedquad(void); extern void skipover(int i); /* prototypes for functions from dvips.c */ extern void help(int status); extern void error_with_perror(char *s, char *fname); extern void error(char *s); extern void check_checksum(unsigned int c1, unsigned int c2, const char *name); extern char *mymalloc(int n); extern void morestrings(void); extern void checkstrings(void); extern void initialize(void); extern char *newstring(char *s); extern void newoutname(void); extern void *revlist(void *p); extern void queryargs(void); /* prototypes for functions from emspecial.c */ extern void emclear(void); extern struct empt *emptput(short point, int x, int y); extern struct empt *emptget(short point); extern float emunits(float width, char *unit); extern void emspecial(char *p); extern int readinteger(FILE *f); extern unsigned short readhalfword(FILE *f); extern int PCXreadline(FILE *pcxf, unsigned char *pcxbuf, unsigned int byteperline); extern void PCXshowpicture(FILE *pcxf,int wide,int high,int bytes,int cp,int bp,unsigned char *r,unsigned char *g,unsigned char *b); extern void imagehead(char *filename, int wide, int high, float emwidth, float emheight); extern void imagetail(void); extern void pcxgraph(FILE *pcxf, char *filename, float emwidth, float emheight); extern void MSP_2_ps(FILE *f, int wide, int high); extern void MSP_1_ps(FILE *f, int wide, int high); extern void mspgraph(FILE *f, char *filename, float emwidth, float emheight); extern void rgbread(FILE *f, int w, int b, char *s); extern void rle4read(FILE *f, int w, int b, char *s); extern void rle8read(FILE *f, int w, int b, char *s); extern void bmpgraph(FILE *f, char *filename, float emwidth, float emheight); extern void emgraph(char *filename, float emwidth, float emheight); /* prototypes for functions from finclude.c */ extern fontdesctype *ifontdef(char *name, char *area, int scsize, int dssize, char *scname); extern void setfamily(fontdesctype *f); extern char *getname(char *s); extern void includechars(fontdesctype *f, char *s); extern void scan1fontcomment(char *p); extern int scanvm(char *p); extern void scan_fontnames(char *str, char *psfile); extern void scanfontusage(char *p, char *psfile); extern void scanfontcomments(char *filename); extern Boolean okascmd(char *ss); extern void nameout(char *area, char *name); extern void fonttableout(void); /* prototypes for functions from flib.c */ #ifdef FONTLIB extern void fliload(void); #endif /* prototypes for functions from fontdef.c */ extern fontdesctype *newfontdesc(int cksum, int scsize, int dssize, char *name, char *area); extern fontdesctype *matchfont(char *name, char *area, int scsize, char *scname); extern void fontdef(int siz); extern int skipnop(void); /* prototypes for functions from header.c */ extern int add_name(char *s, struct header_list **what ); extern int add_name_general(char *s, struct header_list **what, char *pre, char *post); extern void checkhmem(char *s, char *p, char *q); extern int add_header(char *s); extern int add_header_general(char *s, char *pre, char* post); extern char *get_name(struct header_list **what ); extern void send_headers(void); /* prototypes for functions from hps.c */ #ifdef HPS extern void do_html(char *s); extern int href_or_name(void); extern int parseref(void); extern int get_string(void); extern int do_link(char *s, int type); extern unsigned int hash_string(char *s); extern struct nlist *lookup_link(char *s, int type); extern struct nlist *install_link(char *name, struct hps_link *defn, int type); extern struct hps_link *link_dup(struct hps_link *s); extern double dvi_to_hps_conv(int i, int dir); extern int vert_loc(int i); extern struct hps_link *dest_link(char *s); extern int count_targets(void); extern void do_targets(void); extern void do_target_dict(void); extern int href_name_match(char *h, char *n); extern void stamp_hps(struct hps_link *pl); extern void stamp_external(char *s, struct hps_link *pl); extern void finish_hps(void); extern void set_bitfile(char *s, int mode); extern void vertical_in_hps(void); extern void print_rect_list(void); extern void end_current_box(void); extern void start_new_box(void); #endif /* HPS */ /* prototypes for functions from loadfont.c */ extern void badpk(char *s); extern short pkbyte(void); extern int pkquad(void); extern int pktrio(void); extern void lectureuser(void); extern Boolean pkopen(fontdesctype *fd); extern void loadfont(fontdesctype *curfnt); /* prototypes for functions from makefont.c */ extern void makefont(char *name, int dpi, int bdpi); /* prototypes for functions from output.c */ extern void copyfile(char *s); extern void copyfile_general(char *s, struct header_list *h); extern void figcopyfile(char *s, int systemtype); extern void specialout(char c); extern void stringend(void); #ifdef SHIFTLOWCHARS extern int T1Char(int c); #endif extern void scout(unsigned char c); extern void cmdout(char *s); extern void floatout(float n); extern void doubleout(double n); extern void numout(int n); extern void mhexout(unsigned char *p, long len); extern void fontout(int n); extern void hvpos(void); extern void newline(void); extern void nlcmdout(char *s); extern int mlower(int c); extern int ncstrcmp(char *a, char *b); extern void findpapersize(void); extern void paperspec(char *s, int hed); extern char *epsftest(int bop); extern void open_output(void); extern void initprinter(sectiontype *sect); extern void setup(void); extern void cleanprinter(void); extern void psflush(void); extern void pageinit(void); extern void pageend(void); extern void drawrule(int rw, int rh); extern void drawchar(chardesctype * c, int cc); extern void tell_needed_fonts(void); /* prototypes for functions from papersiz.c */ extern long myatodim(char **s ); extern void handlepapersize(char *p, int *x, int *y); /* prototypes for functions from pprescan.c */ extern void pprescanpages(void); /* prototypes for functions from prescan.c */ extern void readpreamble(void); extern void prescanpages(void); /* prototypes for functions from repack.c */ extern void was_putlong(char *a, long i); extern long getlong(unsigned char *a); extern void dochar(unsigned char *from, short width, short height); extern char *makecopy(unsigned char *what, long len, unsigned char *p); extern void repack(struct tcd *cp); /* prototypes for functions from resident.c */ extern int hash(char *s); extern void revpslists(void); extern void cleanres(void); extern struct resfont *lookup(char *name); extern struct resfont *findPSname(char *name); extern void add_entry(char *TeXname, char *PSname, char *Fontfile, char *Vectfile, char *specinfo, char *downloadinfo); extern int residentfont(fontdesctype *curfnt); extern void bad_config(char *err); extern char *configstring(char *s, int nullok); extern Boolean getdefaults(char *s); extern void getpsinfo(char *name); extern void checkenv(int which); /* prototypes for functions from scalewidth.c */ extern int scalewidth(int a, int b); /* prototypes for functions from scanpage.c */ extern Boolean prescanchar(chardesctype *cd); extern Boolean preselectfont(fontdesctype *f); extern short scanpage(void); /* prototypes for functions from search.c */ #ifdef KPATHSEA extern FILE *search(kpse_file_format_type format, char *file, char *mode); extern FILE *pksearch(char *file, char *mode, halfword dpi, char **name_ret, int *dpi_ret); #else /* !KPATSHEA */ extern FILE *search(char *path, char *file, char *mode); extern FILE *pksearch(char *path, char *file, char *mode, char *n, halfword dpi, halfword vdpi); #endif /* KPATHSEA */ extern FILE *my_real_fopen(char *n, char *t); extern int close_file(FILE *f); /* prototypes for functions from skippage.c */ extern void skippage(void); /* prototypes for functions from squeeze.c */ extern void specialout(char c); extern void strout(char *s); extern void cmdout(char *s); /* prototypes for functions from t1part.c */ extern int DefTypeFont(unsigned char *name); extern int GetZeroLine(unsigned char *str); extern int GetWord(unsigned char *mem); extern int GetToken(void); extern int GetNum(void); extern int PassToken(void); extern int PassString(unsigned char flg); extern void *getmem(unsigned int size); extern struct Char *AddChar(struct Char *TmpChar, unsigned char *CharName, int num); extern void AddStr(unsigned char *name, int num); extern void RevChar(struct Char *TmpChar); extern void OutChar(struct Char *TmpChar, FILE *fout); extern void Reverse(struct String *TmpStr); extern void OutStr(struct String *TmpStr, FILE *fout); extern void PrintChar(struct Char *TmpChar); extern int ClearB(void); extern int ChooseChar(unsigned char *name, struct Char *TmpChar); extern int FindSeac(int num); extern int FindCharW(unsigned char *name, int length); extern void ClearCW(struct Char *ThisChar); extern int WorkVect(struct Char *TmpChar); extern void UnDefineCharsW(void); extern struct Char *UnDefineChars(struct Char *TmpChar); extern void UnDefineStr(void); extern void ScanSubrs(int i); extern void ViewReturnCall(int num_err, int top, int *pstack, int j, int depth); extern int DeCodeStr(int num, int numseac); extern void ScanChars(int i); extern void LastLook(void); extern int FindKeyWord(int First_Key, int lastkey); extern int ScanBinary(void); extern unsigned char *itoasp(int n, unsigned char *s, int len); extern void SubstNum(void); extern unsigned long little4(unsigned char *buff); extern unsigned char CDeCrypt(unsigned char cipher, unsigned int *lcdr); extern int EndOfEncoding(int err_num); extern void CorrectGrid(void); extern int CharEncoding(void); extern void FindEncoding(void); extern void CheckChoosing(void); extern void OutASCII(FILE *fout, unsigned char *buff, unsigned long len); extern void BinEDeCrypt(unsigned char *buff, unsigned long len); extern void HexEDeCrypt(unsigned char *mem); extern int PartialPFA(FILE *fin, FILE *fout); extern int PartialPFB(FILE *fin, FILE *fout); extern void OutHEX(FILE *fout); extern int Afm(void); extern int FontPart(FILE *fout, unsigned char *fontfile, unsigned char *vectfile); extern int LoadVector(int num, struct Char *TmpChar); extern int ChooseVect(struct Char *tmpChar); extern void ErrorOfScan(int err); extern void NameOfProgram(void); /* prototypes for functions from tfmload.c */ extern void badtfm(char *s); extern void tfmopen(fontdesctype *fd); extern short tfmbyte(void); extern unsigned short tfm16(void); extern int tfm32(void); extern int tfmload(fontdesctype *curfnt); /* prototypes for functions from unpack.c */ extern short getnyb(void); extern Boolean getbit(void); extern long pkpackednum(void); extern void flip(char *s, long howmany); extern long unpack(unsigned char *pack, unsigned short *raster, unsigned short cwidth, unsigned short cheight, unsigned short cmd); /* prototypes for functions from virtualfont.c */ extern void badvf(char *s); extern short vfbyte(void); extern int vfquad(void); extern int vftrio(void); extern int vfopen(fontdesctype *fd); extern struct tft *vfontdef(int s, int siz); extern Boolean virtualfont(fontdesctype *curfnt); /* prototypes for functions from writet1.c */ extern void load_enc(char *, char **); extern void writet1(void); extern void t1_free(void); extern boolean t1_subset(char *, char *, unsigned char *); extern boolean t1_subset_2(char *, unsigned char *, char *); #endif dvipsk_TexLive-2009-stripped/lafonts.map0000644000175000017500000000066211372532227020247 0ustar uwabamiuwabamilasy5 lasy5 0x40000000L) error("! arithmetic overflow in parameter") ; sf = sf % den ; v += (sf * num * 2 + den) / (2 * den) ; return(v) ; } /* * Convert a sequence of digits into a long; return -1 if no digits. * Advance the passed pointer as well. */ static long myatol(char **s) { register char *p ; register long result ; result = 0 ; p = *s ; while ('0' <= *p && *p <= '9') { if (result > 100000000) error("! arithmetic overflow in parameter") ; result = 10 * result + *p++ - '0' ; } if (p == *s && *p == '.') { return 0; } else if (p == *s) { #ifdef KPATHSEA error(concat3 ("expected number in ", *s, ", returning 10")) ; #else error("expected number! returning 10") ; #endif return 10 ; } else { *s = p ; return(result) ; } } /* * Get a dimension, allowing all the various extensions, and * defaults. Returns a value in scaled points. */ static long scalevals[] = { 1864680L, 65536L, 786432L, 186468L, 1L, 65782L, 70124L, 841489L, 4736286L } ; static char *scalenames = "cmptpcmmspbpddccin" ; long myatodim(char **s) { register long w, num, den, sc ; register char *q ; char *p ; int negative = 0, i ; p = *s ; if (**s == '-') { p++ ; negative = 1 ; } w = myatol(&p) ; if (w < 0) { error("number too large; 1000 used") ; w = 1000 ; } num = 0 ; den = 1 ; if (*p == '.') { p++ ; while ('0' <= *p && *p <= '9') { if (den <= 1000) { den *= 10 ; num = num * 10 + *p - '0' ; } else if (den == 10000) { den *= 2 ; num = num * 2 + (*p - '0') / 5 ; } p++ ; } } while (*p == ' ') p++ ; for (i=0, q=scalenames; ; i++, q += 2) if (*q == 0) { #ifdef KPATHSEA error(concat3 ("expected units in ", *s, ", assuming inches.")) ; #else error("expected units! assuming inches.") ; #endif sc = scalevals[8] ; break ; } else if (*p == *q && p[1] == q[1]) { sc = scalevals[i] ; p += 2 ; break ; } w = scale(w, num, den, sc) ; *s = p ; return(negative?-w:w) ; } /* * The routine where we handle the paper size special. We need to pass in * the string after the `papersize=' specification. */ void handlepapersize(char *p, integer *x, integer *y) { while (*p == ' ') p++ ; *x = myatodim(&p) ; while (*p == ' ' || *p == ',') p++ ; *y = myatodim(&p) ; } dvipsk_TexLive-2009-stripped/configure.ac0000644000175000017500000000216411372532227020367 0ustar uwabamiuwabamidnl Process this file with autoconf to produce a configure script. dnl dnl Copyright (C) 2009 Peter Breitenlohner dnl dnl This file is free software; the copyright holder dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl AC_INIT([dvipsk], [5.98], [tex-k@tug.org]) AC_PREREQ([2.63]) AC_CONFIG_SRCDIR([dvips.c]) AC_CONFIG_AUX_DIR([../../build-aux]) AC_CONFIG_MACRO_DIR([../../m4]) dnl Common code for all programs using libkpathsea. KPSE_COMMON([dvipsk]) AC_CONFIG_HEADERS([c-auto.h:c-auto.in]) AC_CHECK_SIZEOF([int]) AC_SEARCH_LIBS([pow], [m]) KPSE_KPATHSEA_FLAGS AC_CONFIG_SUBDIRS([squeeze]) AC_CONFIG_FILES([Makefile]) dnl The subdirectory squeeze must be configured for the build system. dnl When cross compiling, can not share the cache file with the subdirectory! AC_CONFIG_COMMANDS_POST([AS_IF([test "x$cross_compiling" = xyes], [cache_file=/dev/null ac_configure_args="$ac_configure_args --host='$build' \ CC='$BUILDCC' CPPFLAGS='$BUILDCPPFLAGS'\ CFLAGS='$BUILDCFLAGS' LDFLAGS='$BUILDLDFLAGS'"])]) AC_OUTPUT dvipsk_TexLive-2009-stripped/README0000644000175000017500000001142711372532227016763 0ustar uwabamiuwabamiThis directory contains Dvipsk, my (kb@mail.tug.org) modified version of Tom Rokicki's dvips, a DVI-to-PostScript translator. See `NEWS' for major changes by release, `ChangeLog` for all changes. See `INSTALL' for installation instructions. See `../kpathsea/BUGS' for details on reporting bugs. AT LEAST NEWS, ChangeLog, AND INSTALL ARE WOEFULLY OUT OF DATE. Aside from configuration, this differs from the original primarily in that it uses the same code for path searching as TeX and my other distributions. Dvipsk does not install any default config.ps file, since no one file is generally suitable. Sample Dvips config files are in the contrib/ directory. See ./INSTALL. The documentation is now in Texinfo format. I've removed the font naming section, since it was an old version of the font naming document (which you can get from ftp://ftp.tug.org/tex/fontname/). Dvipsk is free software; Tom's original files are public domain. The files I wrote (originally for the Free Software Foundation) are covered by the GNU General Public License -- see the files COPYING*. You can get the original dvips from ftp://labrea.stanford.edu/pub/dvips*. kb@mail.tug.org Member of the League for Programming Freedom -- write lpf@uunet.uu.net. ------------------------------------------------------------------------- dvips 5.86 notes: Minor improvements to epsf style file. Another patch to t1part.c to make it more liberal in accepting pfb/pfa font files. Added PS reencoding reimplementation by Rob Hutchings. Added 'F' in config file to send controlD. Added quick exit if -? or -v. Improved tex.lpro to fix a bug that showed up in distiller. Improved tex.lpro to work around a problem in certain Windows environments. Made dvips complain if it had to section a document. Eliminated use-after-free bug in hps.c. Fixed a problem in t1part for the Euro fonts with partial font downloading. Fixed a big problem in t1part for some font downloading due to uninitialized allocations. Added `unknown' paper size back to config.ps. Made t1part munge the UniqueID to prevent cache problems in Acrobat and other programs. Fixed parsing error when whitespace following '<' in psfonts.map. Made '<<' work correctly (disable partial font downloading for that particular font) in psfonts.map. dvips 5.74 notes: The epsf.sty and epsf.tex files are now in the public domain. The t1part.c has been updated to support binary files with multiple binary sections. dvips 5.72 notes: Bug fix in t1part.c??? I hope so! Debugging now turned on by default. No real reason to turn it off. (Too many Linux versions of dvips without debugging have been distributed, and it makes it very difficult to help the users with their problems . . .) dvips 5.62 notes: The makefile and config.ps and MakeTeXPK need to be modified to fit your site! dvips.tex needs updating. To document: Landscape mfmode HPS integration Separate EPSF file generation Better bbox support Partial type 1 support Comment elision now turned *off* Upleveling of font requirements Bitmap font descriptions Questions: Should I eliminate PStfms/PSvfs/afm-extra? Should I eliminate PSlatex? (my guess is yes) Partial type 1 downloading (Sergey Lesenko) HyperTeX support (Mark Doyle) Lots of little bugs/changes/fixes Still todo: - Make a better copyfile that handles Level 2 data better - Add landscape mode def and code to select it. - Sanitize; test on various systems - Improve makefile!!! Goal: on a standard C installation (with stdlib and all) and a Unix machine using TDS, make it be just a `make' away. - Improve diagnostics, especially when files not found. - Eliminate `extern' declarations; use header files properly Despite the fact that I reference Mark and Sergey, bugs are mine, mine, all mine, so please bug me and not them. ---------------------------------------------------------------------------- All real documentation is now in the file dvips.tex. There is also a file called test.tex that you can read and run to test some basic capabilities of dvips. INSTALLATION has the primary installation instructions. If you enjoy using dvips, you will probably enjoy being a member of the TeX Users Group. To join or contribute to TUG, contact them at TeX Users Group 1850 Union Street #1637 San Francisco, CA 94123 Voice: (415) 982-8449 FAX: (415) 982-8559 Email: TUG@tug.org Web: http://www.tug.org/ This is a list of people who have contributed substantially to dvips. I'm sure I've forgotten many. Thanks to all! Karl Berry P. W. Daly Mark Doyle Edward J. Groth James Hafner John Hobby Rob Hutchings Donald E. Knuth Russell Lang Sergey Lesenko Art Ogawa Melissa O'Neill Sebastian Rahtz Andrew Trevorrow Staszek Wawrykiewicz dvipsk_TexLive-2009-stripped/contrib/0000755000175000017500000000000011372532227017536 5ustar uwabamiuwabamidvipsk_TexLive-2009-stripped/contrib/afm-extra/0000755000175000017500000000000011372532227021422 5ustar uwabamiuwabamidvipsk_TexLive-2009-stripped/contrib/afm-extra/ptmr.ed0000644000175000017500000000356311372532227022725 0ustar uwabamiuwabami1s/)/, then edited for Greek)/ /(LIGTABLE/i (MAPFONT D 1 (FONTNAME rpsyr) (FONTCHECKSUM O 12741765024) ) . /(CHARACTER/i (CHARACTER O 0 (comment Gamma) (CHARWD R 603) (CHARHT R 689) (CHARIC R 6) (MAP (SELECTFONT D 1) (SETCHAR C G) ) ) (CHARACTER O 1 (comment Delta) (CHARWD R 612) (CHARHT R 689) (MAP (SELECTFONT D 1) (SETCHAR C D) ) ) (CHARACTER O 2 (comment Theta) (CHARWD R 741) (CHARHT R 689) (CHARDP R 7) (MAP (SELECTFONT D 1) (SETCHAR C Q) ) ) (CHARACTER O 3 (comment Lambda) (CHARWD R 686) (CHARHT R 689) (MAP (SELECTFONT D 1) (SETCHAR C L) ) ) (CHARACTER O 4 (comment Xi) (CHARWD R 645) (CHARHT R 689) (MAP (SELECTFONT D 1) (SETCHAR C X) ) ) (CHARACTER O 5 (comment Pi) (CHARWD R 768) (CHARHT R 689) (MAP (SELECTFONT D 1) (SETCHAR C P) ) ) (CHARACTER O 6 (comment Sigma) (CHARWD R 592) (CHARHT R 689) (MAP (SELECTFONT D 1) (SETCHAR C S) ) ) (CHARACTER O 7 (comment Upsilon1) (CHARWD R 620) (CHARHT R 689) (MAP (SELECTFONT D 1) (SETCHAR O 241) ) ) (CHARACTER O 10 (comment Phi) (CHARWD R 763) (CHARHT R 689) (MAP (SELECTFONT D 1) (SETCHAR C F) ) ) (CHARACTER O 11 (comment Psi) (CHARWD R 795) (CHARHT R 689) (MAP (SELECTFONT D 1) (SETCHAR C Y) ) ) (CHARACTER O 12 (comment Omega) (CHARWD R 768) (CHARHT R 689) (MAP (SELECTFONT D 1) (SETCHAR C W) ) ) (CHARACTER O 13 (comment arrowup) (CHARWD R 603) (CHARHT R 907) (MAP (SELECTFONT D 1) (SETCHAR O 255) ) ) (CHARACTER O 14 (comment arrowdown) (CHARWD R 603) (CHARHT R 907) (CHARDP R 7) (MAP (SELECTFONT D 1) (SETCHAR O 257) ) ) . w ptmr.vpl q dvipsk_TexLive-2009-stripped/contrib/afm-extra/ptmro.ed0000644000175000017500000000410411372532227023074 0ustar uwabamiuwabami1s/)/, edited for Greek)/ /(LIGTABLE/i (MAPFONT D 1 (FONTNAME psyro) (FONTCHECKSUM O 12741765024) ) . /(CHARACTER/i (CHARACTER O 0 (comment Gamma) (CHARWD R 603) (CHARHT R 689) (CHARIC R 118) (MAP (SELECTFONT D 1) (SETCHAR C G) ) ) (CHARACTER O 1 (comment Delta) (CHARWD R 612) (CHARHT R 689) (CHARIC R 111) (MAP (SELECTFONT D 1) (SETCHAR C D) ) ) (CHARACTER O 2 (comment Theta) (CHARWD R 741) (CHARHT R 689) (CHARDP R 7) (CHARIC R 87) (MAP (SELECTFONT D 1) (SETCHAR C Q) ) ) (CHARACTER O 3 (comment Lambda) (CHARWD R 686) (CHARHT R 689) (CHARIC R 109) (MAP (SELECTFONT D 1) (SETCHAR C L) ) ) (CHARACTER O 4 (comment Xi) (CHARWD R 645) (CHARHT R 689) (CHARIC R 66) (MAP (SELECTFONT D 1) (SETCHAR C X) ) ) (CHARACTER O 5 (comment Pi) (CHARWD R 768) (CHARHT R 689) (CHARIC R 89) (MAP (SELECTFONT D 1) (SETCHAR C P) ) ) (CHARACTER O 6 (comment Sigma) (CHARWD R 592) (CHARHT R 689) (CHARIC R 109) (MAP (SELECTFONT D 1) (SETCHAR C S) ) ) (CHARACTER O 7 (comment Upsilon1) (CHARWD R 620) (CHARHT R 689) (CHARIC R 104) (MAP (SELECTFONT D 1) (SETCHAR O 241) ) ) (CHARACTER O 10 (comment Phi) (CHARWD R 763) (CHARHT R 689) (CHARIC R 89) (MAP (SELECTFONT D 1) (SETCHAR C F) ) ) (CHARACTER O 11 (comment Psi) (CHARWD R 795) (CHARHT R 689) (CHARIC R 100) (MAP (SELECTFONT D 1) (SETCHAR C Y) ) ) (CHARACTER O 12 (comment Omega) (CHARWD R 768) (CHARHT R 689) (CHARIC R 83) (MAP (SELECTFONT D 1) (SETCHAR C W) ) ) (CHARACTER O 13 (comment arrowup) (CHARWD R 603) (CHARHT R 907) (CHARIC R 120) (MAP (SELECTFONT D 1) (SETCHAR O 255) ) ) (CHARACTER O 14 (comment arrowdown) (CHARWD R 603) (CHARHT R 907) (CHARDP R 7) (CHARIC R 116) (MAP (SELECTFONT D 1) (SETCHAR O 257) ) ) . w ptmro.vpl q dvipsk_TexLive-2009-stripped/contrib/latex209/0000755000175000017500000000000011372532227021106 5ustar uwabamiuwabamidvipsk_TexLive-2009-stripped/contrib/latex209/lucida.sty0000644000175000017500000000045511372532227023114 0ustar uwabamiuwabami% LaTeX style using Lucida for text (but not math). % Bob Morris and Karl Berry, 15 Feb 93. \def\@mrm{plcr}% roman \def\@mit{plcri}% italic \def\@msl{plcro}% oblique \def\@mbf{plcb}% bold \def\@mcsc{plcrc}% small caps \def\@mtt{plcrst}% (sans) typewriter \def\@mss{plcrs}% sans \input psfonts.sty dvipsk_TexLive-2009-stripped/contrib/latex209/chancery.sty0000644000175000017500000000053411372532227023445 0ustar uwabamiuwabami% latex style using Zapf Chancery for text. \def\@mrm{pzcmi}% Zapf Chancery Medium Italic \def\@mit{pzcmi}% Zapf Chancery Medium Italic \def\@msl{pzcmi}% Zapf Chancery Medium Italic \def\@mbf{pzcmi}% Zapf Chancery Medium Italic \def\@mcsc{pzcmi}% Zapf Chancery Medium Italic \def\@mtt{pcrr}% courier \def\@mss{phvr}% helvetica \input psfonts.sty dvipsk_TexLive-2009-stripped/contrib/latex209/rotate.sty0000644000175000017500000000435511372532227023154 0ustar uwabamiuwabami% % These macros allow you to rotate or flip a \TeX\ box. Very useful for % sideways tables or upsidedown answers. % % To use, create a box containing the information you want to rotate. % (An hbox or vbox will do.) Now call \@rotr\boxnum to rotate the % material and create a new box with the appropriate (flipped) dimensions. % \@rotr rotates right, \@rotl rotates left, \@rotu turns upside down, and % \@rotf flips. These boxes may contain other rotated boxes. % \newdimen\@rotdimen \newbox\@rotbox \def\@vspec#1{\special{ps:#1}}% passes #1 verbatim to the output \def\@rotstart#1{\@vspec{gsave currentpoint currentpoint translate #1 neg exch neg exch translate}}% #1 can be any origin-fixing transformation \def\@rotfinish{\@vspec{currentpoint grestore moveto}}% gets back in synch % % First, the rotation right. The reference point of the rotated box % is the lower right corner of the original box. % \def\@rotr#1{\@rotdimen=\ht#1\advance\@rotdimen by\dp#1% \hbox to\@rotdimen{\hskip\ht#1\vbox to\wd#1{\@rotstart{90 rotate}% \box#1\vss}\hss}\@rotfinish} % % Next, the rotation left. The reference point of the rotated box % is the upper left corner of the original box. % \def\@rotl#1{\@rotdimen=\ht#1\advance\@rotdimen by\dp#1% \hbox to\@rotdimen{\vbox to\wd#1{\vskip\wd#1\@rotstart{270 rotate}% \box#1\vss}\hss}\@rotfinish}% % % Upside down is simple. The reference point of the rotated box % is the upper right corner of the original box. (The box's height % should be the current font's xheight, \fontdimen5\font, % if you want that xheight to be at the baseline after rotation.) % \def\@rotu#1{\@rotdimen=\ht#1\advance\@rotdimen by\dp#1% \hbox to\wd#1{\hskip\wd#1\vbox to\@rotdimen{\vskip\@rotdimen \@rotstart{-1 dup scale}\box#1\vss}\hss}\@rotfinish}% % % And flipped end for end is pretty ysae too. We retain the baseline. % \def\@rotf#1{\hbox to\wd#1{\hskip\wd#1\@rotstart{-1 1 scale}% \box#1\hss}\@rotfinish}% % % Now the user interface for LaTeX: \rotate[type]{text} where % ``type'' is `l' for left, `r' for right, `u' for upside-down, or % `f' for flip. `l' is the default. % \def\rotate{\@ifnextchar[{\@rotate}{\@rotate[l]}} \def\@rotate[#1]#2{\setbox\@rotbox=\hbox{#2}\@nameuse{@rot#1}\@rotbox} dvipsk_TexLive-2009-stripped/contrib/latex209/bookman.sty0000644000175000017500000000046011372532227023275 0ustar uwabamiuwabami% latex style using Bookman for text \def\@mrm{pbkl}% Bookman - light \def\@mit{pbkli}% Bookman - light italic \def\@msl{pbkdi}% Bookman - demi italic \def\@mbf{pbkd}% Bookman - demi \def\@mcsc{pbklc}% Bookman - light - small caps \def\@mtt{pcrr}% courier \def\@mss{phvr}% helvetica \input psfonts.sty dvipsk_TexLive-2009-stripped/contrib/latex209/blackdvi.sty0000644000175000017500000000563511372532227023437 0ustar uwabamiuwabami% This is BLACKDVI.STY and BLACKDVI.TEX in text format, as of March 5, % 1992, written by Jim Hafner, HAFNER@ALMADEN, or hafner@almaden.ibm.com. % This file turns all color commands defined by COLORDVI.STY or COLORDVI.TEX % into no-ops and so can be used to get B/W printing without having to % ferret out all the color macros. Modified by Tomas Rokicki to be a % bit smaller. % % 20 Aug. 1992: Revised by J. Hafner, by adding \globalColor as a no-op. % % For example, with FoilTeX, just use % \documentstyle[blackdvi]{foils} % in place of % \documentstyle[colordvi]{foils} % % This file can be used anywhere COLORDVI.STY or COLORDVI.TEX is used. In % particular, It can be used in any flavor of LaTeX (e.g. LaTeX, % FoilTeX, AMS-LaTeX) by adding the keyword "blackdvi" to the options in % the \documentstyle command (e.g., "\documentstyle[blackdvi]{foils}") or % \input in any flavor of TeX (e.g. Plain TeX, eplain, AMS-TeX or any of % the above LaTeX flavors) with the command "\input blackdvi". % % Here is the background command \def\background#1{}% % % This is used to define all the \newColor macros defined by \newColor % as no-ops. \def\newColor #1 {\expandafter\def\csname text#1\endcsname{}% \expandafter\def\csname #1\endcsname##1{##1}}% % % Here are the two macros used for user-definable colors \def\textColor#1{} \def\Color#1#2{#2} % % This is the macro that is used to protect certain regions of the % text from corruption by local color commands. See COLORDVI.STY for % more information. We make it a no-op in this style. \def\globalColor#1{#1} % % Here are the preset color names. This list should match the list % in . % \newColor GreenYellow \newColor Yellow \newColor Goldenrod \newColor Dandelion \newColor Apricot \newColor Peach \newColor Melon \newColor YellowOrange \newColor Orange \newColor BurntOrange \newColor Bittersweet \newColor RedOrange \newColor Mahogany \newColor Maroon \newColor BrickRed \newColor Red \newColor OrangeRed \newColor RubineRed \newColor WildStrawberry \newColor Salmon \newColor CarnationPink \newColor Magenta \newColor VioletRed \newColor Rhodamine \newColor Mulberry \newColor RedViolet \newColor Fuchsia \newColor Lavender \newColor Thistle \newColor Orchid \newColor DarkOrchid \newColor Purple \newColor Plum \newColor Violet \newColor RoyalPurple \newColor BlueViolet \newColor Periwinkle \newColor CadetBlue \newColor CornflowerBlue \newColor MidnightBlue \newColor NavyBlue \newColor RoyalBlue \newColor Blue \newColor Cerulean \newColor Cyan \newColor ProcessBlue \newColor SkyBlue \newColor Turquoise \newColor TealBlue \newColor Aquamarine \newColor BlueGreen \newColor Emerald \newColor JungleGreen \newColor SeaGreen \newColor Green \newColor ForestGreen \newColor PineGreen \newColor LimeGreen \newColor YellowGreen \newColor SpringGreen \newColor OliveGreen \newColor RawSienna \newColor Sepia \newColor Brown \newColor Tan \newColor Gray \newColor Black \newColor White dvipsk_TexLive-2009-stripped/contrib/latex209/psgreek.sty0000644000175000017500000000232611372532227023312 0ustar uwabamiuwabami%-------------------------------------------------------------- %---------- greek.sty --------------------- %---------- 4/19/90 S. Janowsky ----------- % % Include as a style option after times, palatino, or whatever. % \def\@mathgreekmap#1{\@cmrscale=\@cmrfam \multiply\@cmrscale by 256 \advance\@cmrscale by \the#1 \mathchardef#1=\@cmrscale\relax} \@mathgreekmap{\Gamma} \@mathgreekmap{\Delta} \@mathgreekmap{\Theta} \@mathgreekmap{\Lambda} \@mathgreekmap{\Xi} \@mathgreekmap{\Pi} \@mathgreekmap{\Sigma} \@mathgreekmap{\Upsilon} \@mathgreekmap{\Phi} \@mathgreekmap{\Psi} \@mathgreekmap{\Omega} % \def\@mathaccdefmap#1#2{\@cmrscale=\@cmrfam \multiply\@cmrscale by 256 \advance\@cmrscale by #2 \edef#1{\mathaccent\the\@cmrscale}\relax} % \@mathaccdefmap{\acute}{"0013 } \@mathaccdefmap{\grave}{"0012 } \@mathaccdefmap{\ddot}{"007F } \@mathaccdefmap{\tilde}{"007E } \@mathaccdefmap{\bar}{"0016 } \@mathaccdefmap{\breve}{"0015 } \@mathaccdefmap{\check}{"0014 } \@mathaccdefmap{\hat}{"005E } %\@mathaccdefmap{\vec}{"017E } % Not type 00 \@mathaccdefmap{\dot}{"005F } %\@mathaccdefmap{\widetilde}{"0365 } % Not type 00 %\@mathaccdefmap{\widehat}{"0362 } % Not type 00 % %---------------------------------------------------- dvipsk_TexLive-2009-stripped/contrib/latex209/colordvi.sty0000644000175000017500000002015511372532227023473 0ustar uwabamiuwabami% This is COLORDVI.TEX and COLORDVI.STY in text format, as of % March 5, 1992, written by Jim Hafner, HAFNER@ALMADEN, or % hafner@almaden.ibm.com. Modified by Tomas Rokicki to be a % bit smaller and easier to add to. % % 20 Aug. 1992: Revised by J. Hafner, by adding \globalColor. % % This style file can be used to get color in TeX, LaTeX or more % importantly, FoilTeX as an optional style file. It is generic in % that the color parameters are determined by the driver's header files. % % It can be used with any driver which knows how to process the keywords % in the \special commands. Currently, only versions of dvips greater % than 5.478 (dvips is the DVI->PostScript driver by Tom Rokicki) and % TeXview on the NeXT interpret these specials. % % This file can be used in any flavor of LaTeX (e.g. LaTeX, FoilTeX, % AMS-LaTeX) by adding the keyword "colordvi" to the options in the % \documentstyle command (e.g., "\documentstyle[colordvi]{foils}") or \input % in any flavor of TeX (e.g. Plain TeX, eplain, AMS-TeX or any of the % above LaTeX flavors) with the command "\input colordvi". % % The actual parameters for each color are determined by the device % driver. % For "dvips", that is the header file color.pro prepended to the % output file by dvips. They can be overrriden by a user-supplied % header, called by either the -h option or the "h" flag in a printer % configuration file, or in the .dvipsrc (or its analogue on other % systems). % % Most of the color names and their matches were based on the % most recent (at time of writing) Crayola Crayon box of 64 colors. % % There are 68 predefined colors. At the end of this file is a % listing of the color names and their approximate PANTONE color % match. This is for reference purposes only. % % The first macro lets the user specify the background color for the % document. It sets the background color for the current page and all % succeeding pages, unless changed by another command of this type. To % change the background color back to the default, issue % \background{White} % \def\background#1{\special{background #1}} % % There are two types of text color commands. The first is in the form % \ColorName (note the uppercase for the color name). % % It is called a local color command since it takes one argument % enclosed in brackets. It writes the contents of its argument in the % selected color. This should be used for local or nested color % changes, since it restores the original color state when it completes. % The second type of color command is in the form % \textColorName % This uses the same naming convention as before. It is called a global % color command since it takes no arguments and simply sets the color at % this point. No previous color information is saved. IF YOU USE THIS % INTERNAL TO ANY LOCAL COLOR COMMAND, THE NESTING HISTORY IS LOST. % % This next definition is used in an invocation of a \textColorName % macro to save the global color value in local form via the \globalColor % macro. This new macro can then be used to protect certain regions of % the text, like item tags and headers and footers which can be % corrupted by local colors. In particular, item tags in lists can % incorrectly inherit the color from a local color command immediately % following it. The \subdef macro is invoked within the invocation of a % global color change. % \def\subdef#1{\gdef\globalColor##1{\special {color push #1}##1\special{color pop}}} % % Here are the global color changers, with color codes defined; % these are used to define the small region colors. % % This first is for user defined color. The argument #1 is for a "CMYK" % quadruple of intensity values between 0 and 1. (CMYK stands for Cyan, % Magenta, Yellow and Black.) E.g., \textColor{.2 .3 .4 .1} % \def\textColor#1{\subdef{cmyk #1}\special{color cmyk #1}} % % and a userdefinable local color command. \def\Color#1#2{\special{color push cmyk #1}#2\special{color pop}} % % \def\newColor #1 {\expandafter\def\csname #1\endcsname##1{\special {color push #1}##1\special{color pop}}% \expandafter\def\csname text#1\endcsname{\subdef{#1}% \special{color #1}}}% % % Here are the color names and their PANTONE match (approximately) % \newColor GreenYellow % GreenYellow Approximate PANTONE 388 \newColor Yellow % Yellow Approximate PANTONE YELLOW \newColor Goldenrod % Goldenrod Approximate PANTONE 109 \newColor Dandelion % Dandelion Approximate PANTONE 123 \newColor Apricot % Apricot Approximate PANTONE 1565 \newColor Peach % Peach Approximate PANTONE 164 \newColor Melon % Melon Approximate PANTONE 177 \newColor YellowOrange % YellowOrange Approximate PANTONE 130 \newColor Orange % Orange Approximate PANTONE ORANGE-021 \newColor BurntOrange % BurntOrange Approximate PANTONE 388 \newColor Bittersweet % Bittersweet Approximate PANTONE 167 \newColor RedOrange % RedOrange Approximate PANTONE 179 \newColor Mahogany % Mahogany Approximate PANTONE 484 \newColor Maroon % Maroon Approximate PANTONE 201 \newColor BrickRed % BrickRed Approximate PANTONE 1805 \newColor Red % Red VERY-Approx PANTONE RED \newColor OrangeRed % OrangeRed No PANTONE match \newColor RubineRed % RubineRed Approximate PANTONE RUBINE-RED \newColor WildStrawberry % WildStrawberry Approximate PANTONE 206 \newColor Salmon % Salmon Approximate PANTONE 183 \newColor CarnationPink % CarnationPink Approximate PANTONE 218 \newColor Magenta % Magenta Approximate PANTONE PROCESS-MAGENTA \newColor VioletRed % VioletRed Approximate PANTONE 219 \newColor Rhodamine % Rhodamine Approximate PANTONE RHODAMINE-RED \newColor Mulberry % Mulberry Approximate PANTONE 241 \newColor RedViolet % RedViolet Approximate PANTONE 234 \newColor Fuchsia % Fuchsia Approximate PANTONE 248 \newColor Lavender % Lavender Approximate PANTONE 223 \newColor Thistle % Thistle Approximate PANTONE 245 \newColor Orchid % Orchid Approximate PANTONE 252 \newColor DarkOrchid % DarkOrchid No PANTONE match \newColor Purple % Purple Approximate PANTONE PURPLE \newColor Plum % Plum VERY-Approx PANTONE 518 \newColor Violet % Violet Approximate PANTONE VIOLET \newColor RoyalPurple % RoyalPurple Approximate PANTONE 267 \newColor BlueViolet % BlueViolet Approximate PANTONE 2755 \newColor Periwinkle % Periwinkle Approximate PANTONE 2715 \newColor CadetBlue % CadetBlue Approximate PANTONE (534+535)/2 \newColor CornflowerBlue % CornflowerBlue Approximate PANTONE 292 \newColor MidnightBlue % MidnightBlue Approximate PANTONE 302 \newColor NavyBlue % NavyBlue Approximate PANTONE 293 \newColor RoyalBlue % RoyalBlue No PANTONE match \newColor Blue % Blue Approximate PANTONE BLUE-072 \newColor Cerulean % Cerulean Approximate PANTONE 3005 \newColor Cyan % Cyan Approximate PANTONE PROCESS-CYAN \newColor ProcessBlue % ProcessBlue Approximate PANTONE PROCESS-BLUE \newColor SkyBlue % SkyBlue Approximate PANTONE 2985 \newColor Turquoise % Turquoise Approximate PANTONE (312+313)/2 \newColor TealBlue % TealBlue Approximate PANTONE 3145 \newColor Aquamarine % Aquamarine Approximate PANTONE 3135 \newColor BlueGreen % BlueGreen Approximate PANTONE 320 \newColor Emerald % Emerald No PANTONE match \newColor JungleGreen % JungleGreen Approximate PANTONE 328 \newColor SeaGreen % SeaGreen Approximate PANTONE 3268 \newColor Green % Green VERY-Approx PANTONE GREEN \newColor ForestGreen % ForestGreen Approximate PANTONE 349 \newColor PineGreen % PineGreen Approximate PANTONE 323 \newColor LimeGreen % LimeGreen No PANTONE match \newColor YellowGreen % YellowGreen Approximate PANTONE 375 \newColor SpringGreen % SpringGreen Approximate PANTONE 381 \newColor OliveGreen % OliveGreen Approximate PANTONE 582 \newColor RawSienna % RawSienna Approximate PANTONE 154 \newColor Sepia % Sepia Approximate PANTONE 161 \newColor Brown % Brown Approximate PANTONE 1615 \newColor Tan % Tan No PANTONE match \newColor Gray % Gray Approximate PANTONE COOL-GRAY-8 \newColor Black % Black Approximate PANTONE PROCESS-BLACK \newColor White % White No PANTONE match % Now we make sure that we initialize the global color to Black \subdef{Black} dvipsk_TexLive-2009-stripped/contrib/latex209/palatino.sty0000644000175000017500000000043511372532227023460 0ustar uwabamiuwabami% latex style using Palatino for text. \def\@mrm{pplr}% palatino \def\@mit{pplri}% palatino - italic \def\@msl{pplro}% palatino - oblique \def\@mbf{pplb}% palatino - bold \def\@mcsc{pplrc}% palatino - small caps \def\@mtt{pcrr}% courier \def\@mss{phvr}% helvetica \input psfonts.sty dvipsk_TexLive-2009-stripped/contrib/latex209/times.sty0000644000175000017500000000045711372532227022776 0ustar uwabamiuwabami% latex style with times roman text but cm math italic. \def\@mrm{ptmr}% times - roman \def\@mit{ptmri}% times - italic \def\@msl{ptmro}% times - oblique \def\@mbf{ptmb}% times - bold \def\@mcsc{ptmrc}% times - roman - small caps \def\@mtt{pcrr}% courier \def\@mss{phvr}% helvetica \input psfonts.sty dvipsk_TexLive-2009-stripped/contrib/latex209/avantgarde.sty0000644000175000017500000000050211372532227023760 0ustar uwabamiuwabami% latex style using AvantGarde for text. \def\@mrm{pagk}% AvantGarde - book \def\@mit{pagko}% AvantGarde - book oblique \def\@msl{pagdo}% AvantGarde - demi oblique \def\@mbf{pagd}% AvantGarde - demi \def\@mcsc{pagkc}% AvantGarde - book - small caps \def\@mtt{pcrr}% courier \def\@mss{phvr}% helvetica \input psfonts.sty dvipsk_TexLive-2009-stripped/contrib/latex209/ncs.sty0000644000175000017500000000056511372532227022440 0ustar uwabamiuwabami% latex style using New Century Schoolbook for text. \def\@mrm{pncr}% new century schoolbook \def\@mit{pncri}% new century schoolbook - italic \def\@msl{pncbi}% new century schoolbook - bold italic \def\@mbf{pncb}% new century schoolbook - bold \def\@mcsc{pncrc}% new century schoolbook - small caps \def\@mtt{pcrr}% courier \def\@mss{phvr}% helvetica \input psfonts.sty dvipsk_TexLive-2009-stripped/contrib/latex209/psfonts.sty0000644000175000017500000003012011372532227023337 0ustar uwabamiuwabami% psfonts.sty - re-work of lfonts.tex to allow postscript fonts % to replace cmr fonts. Original by LA Carr. Hacked by Van % Jacobson. % % $Header: psfonts.sty,v 1.2 88/01/23 17:52:49 van Exp $ % \def\@@getfont#1#2#3#4#5#6#7{% \@ifundefined{\string #1\string #5}{\global\expandafter \font \csname \string #1\string #5\endcsname #4\@ptscale{#5}\relax}{}% \@ifundefined{\string #1\string #6}{\global\expandafter \font \csname \string #1\string #6\endcsname #4\@ptscale{#6}\relax}{}% \@ifundefined{\string #1\string #7}{\global\expandafter \font \csname \string #1\string #7\endcsname #4\@ptscale{#7}\relax}{}% \@ifundefined{\string #1\string #3}{\global\expandafter \let \csname \string #1\string #3\endcsname #3\relax \@addfontinfo#3{\textfont #2\csname \string #1\string #5\endcsname \scriptfont #2\csname \string #1\string #6\endcsname \scriptscriptfont #2\csname \string #1\string #7\endcsname \def#1{\fam #2\csname\string #1\string #5\endcsname}}}{}#3#1} \def\@@@getfont#1#2#3#4#5{% \@ifundefined{\string #1\string #5}{\global\expandafter \font \csname \string #1\string #5\endcsname #4\@ptscale{#5}\relax}{}% \@ifundefined{\string #1\string #3}{\global\expandafter \let \csname \string #1\string #3\endcsname #3\relax \@addfontinfo#3{\def#1{\fam #2\csname\string #1\string #5\endcsname}}}{}#3#1} \def\@psfonts#1#2#3#4{% \def\prm{\@@getfont\prm\z@#1\@mrm{#2}{#3}{#4}}% \def\pit{\@@getfont\pit\itfam#1\@mit{#2}{#3}{#4}}% \def\psl{\@@getfont\psl\slfam#1\@msl{#2}{#3}{#4}}% \def\pbf{\@@getfont\pbf\bffam#1\@mbf{#2}{#3}{#4}}% \def\ptt{\@@getfont\ptt\ttfam#1\@mtt{#2}{#3}{#4}% \@nohyphens\ptt {#2}\@nohyphens\ptt {#3}\@nohyphens\ptt {#4}}% \def\psf{\@@getfont\psf\sffam#1\@mss{#2}{#3}{#4}}% \def\psc{\@@getfont\psc\scfam#1\@mcsc{#2}{#3}{#4}}} % math stuff: we want to use cmr operator characters but Times % letters. So, we make a new family to hold cmrX & re-mathcode % to force the operators to come from that family. \newfam\@cmrfam \newcount\@cmrscale \def\@mathmap#1{\@cmrscale=\@cmrfam \multiply\@cmrscale by 256 \advance\@cmrscale by \the\mathcode#1 \mathcode#1=\@cmrscale\relax} \def\@cmrset#1#2#3{\textfont\@cmrfam #1% \scriptfont\@cmrfam #2\scriptscriptfont\@cmrfam #3\relax} \@mathmap{`\(} \@mathmap{`\)} \@mathmap{`\+} \@mathmap{`\=} \@mathmap{`\[} \@mathmap{`\]} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\vpt{\textfont\z@\fivrm \scriptfont\z@\fivrm \scriptscriptfont\z@\fivrm \textfont\@ne\fivmi \scriptfont\@ne\fivmi \scriptscriptfont\@ne\fivmi \textfont\tw@\fivsy \scriptfont\tw@\fivsy \scriptscriptfont\tw@\fivsy \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex \def\unboldmath{\everymath{}\everydisplay{}\@nomath \unboldmath\fam\@ne\@boldfalse}\@boldfalse \def\boldmath{\@subfont\boldmath\unboldmath}% \@psfonts\@vpt555% \@cmrset\fivrm\fivrm\fivrm% \def\ly{\fam\lyfam\fivly}\textfont\lyfam\fivly \scriptfont\lyfam\fivly \scriptscriptfont\lyfam\fivly \@setstrut\rm} \def\@vpt{} \def\vipt{\textfont\z@\sixrm \scriptfont\z@\sixrm \scriptscriptfont\z@\sixrm \textfont\@ne\sixmi \scriptfont\@ne\sixmi \scriptscriptfont\@ne\sixmi \textfont\tw@\sixsy \scriptfont\tw@\sixsy \scriptscriptfont\tw@\sixsy \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex \def\unboldmath{\everymath{}\everydisplay{}\@nomath \unboldmath\@boldfalse}\@boldfalse \def\boldmath{\@subfont\boldmath\unboldmath}% \@psfonts\@vipt666% \@cmrset\sixrm\sixrm\sixrm% \def\ly{\fam\lyfam\sixly}\textfont\lyfam\sixly \scriptfont\lyfam\sixly \scriptscriptfont\lyfam\sixly \@setstrut\rm} \def\@vipt{} \def\viipt{\textfont\z@\sevrm \scriptfont\z@\sixrm \scriptscriptfont\z@\fivrm \textfont\@ne\sevmi \scriptfont\@ne\fivmi \scriptscriptfont\@ne\fivmi \textfont\tw@\sevsy \scriptfont\tw@\fivsy \scriptscriptfont\tw@\fivsy \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex \def\unboldmath{\everymath{}\everydisplay{}\@nomath \unboldmath\@boldfalse}\@boldfalse \def\boldmath{\@subfont\boldmath\unboldmath}% \@psfonts\@viipt755% \@cmrset\sevrm\sixrm\fivrm% \def\ly{\fam\lyfam\sevly}\textfont\lyfam\sevly \scriptfont\lyfam\fivly \scriptscriptfont\lyfam\fivly \@setstrut \rm} \def\@viipt{} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\viiipt{\textfont\z@\egtrm \scriptfont\z@\sixrm \scriptscriptfont\z@\fivrm \textfont\@ne\egtmi \scriptfont\@ne\sixmi \scriptscriptfont\@ne\fivmi \textfont\tw@\egtsy \scriptfont\tw@\sixsy \scriptscriptfont\tw@\fivsy \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex \def\unboldmath{\everymath{}\everydisplay{}\@nomath \unboldmath\@boldfalse}\@boldfalse \def\boldmath{\@subfont\boldmath\unboldmath}% \@psfonts\@viiipt865% \@cmrset\egtrm\sixrm\fivrm% \def\ly{\fam\lyfam\egtly}\textfont\lyfam\egtly \scriptfont\lyfam\sixly \scriptscriptfont\lyfam\fivly \@setstrut \rm} \def\@viiipt{} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\ixpt{\textfont\z@\ninrm \scriptfont\z@\sixrm \scriptscriptfont\z@\fivrm \textfont\@ne\ninmi \scriptfont\@ne\sixmi \scriptscriptfont\@ne\fivmi \textfont\tw@\ninsy \scriptfont\tw@\sixsy \scriptscriptfont\tw@\fivsy \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath \@boldfalse}\@boldfalse \def\boldmath{\@subfont\boldmath\unboldmath}% \@psfonts\@ixpt965% \@cmrset\ninrm\sixrm\fivrm% \def\ly{\fam\lyfam\ninly}\textfont\lyfam\ninly \scriptfont\lyfam\sixly \scriptscriptfont\lyfam\fivly \@setstrut \rm} \def\@ixpt{} \def\xpt{\textfont\z@\tenrm \scriptfont\z@\sevrm \scriptscriptfont\z@\fivrm \textfont\@ne\tenmi \scriptfont\@ne\sevmi \scriptscriptfont\@ne\fivmi \textfont\tw@\tensy \scriptfont\tw@\sevsy \scriptscriptfont\tw@\fivsy \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath \textfont\@ne\tenmi \textfont\tw@\tensy \textfont\lyfam\tenly \@boldfalse}\@boldfalse \def\boldmath{\@ifundefined{tenmib}{\global\font\tenmib\@mbi \global\font\tensyb\@mbsy \global\font\tenlyb\@lasyb\relax\@addfontinfo\@xpt {\def\boldmath{\everymath{\mit}\everydisplay{\mit}\@prtct\@nomathbold \textfont\@ne\tenmib \textfont\tw@\tensyb \textfont\lyfam\tenlyb \@prtct\@boldtrue}}}{}\@xpt\boldmath}% \@psfonts\@xpt{10}75% \@cmrset\tenrm\sevrm\fivrm% \def\ly{\fam\lyfam\tenly}\textfont\lyfam\tenly \scriptfont\lyfam\sevly \scriptscriptfont\lyfam\fivly \@setstrut \rm} \def\@xpt{} \def\xipt{\textfont\z@\elvrm \scriptfont\z@\egtrm \scriptscriptfont\z@\sixrm \textfont\@ne\elvmi \scriptfont\@ne\egtmi \scriptscriptfont\@ne\sixmi \textfont\tw@\elvsy \scriptfont\tw@\egtsy \scriptscriptfont\tw@\sixsy \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath \textfont\@ne\elvmi \textfont\tw@\elvsy \textfont\lyfam\elvly \@boldfalse}\@boldfalse \def\boldmath{\@ifundefined{elvmib}{\global\font\elvmib\@mbi\@halfmag \global\font\elvsyb\@mbsy\@halfmag \global\font\elvlyb\@lasyb\@halfmag\relax\@addfontinfo\@xipt {\def\boldmath{\everymath{\mit}\everydisplay{\mit}\@prtct\@nomathbold \textfont\@ne\elvmib \textfont\tw@\elvsyb \textfont\lyfam\elvlyb\@prtct\@boldtrue}}}{}\@xipt\boldmath}% \@psfonts\@xipt{11}86% \@cmrset\elvrm\egtrm\sixrm% \def\ly{\fam\lyfam\elvly}\textfont\lyfam\elvly \scriptfont\lyfam\egtly \scriptscriptfont\lyfam\sixly \@setstrut \rm} \def\@xipt{} \def\xiipt{\textfont\z@\twlrm \scriptfont\z@\egtrm \scriptscriptfont\z@\sixrm \textfont\@ne\twlmi \scriptfont\@ne\egtmi \scriptscriptfont\@ne\sixmi \textfont\tw@\twlsy \scriptfont\tw@\egtsy \scriptscriptfont\tw@\sixsy \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath \textfont\@ne\twlmi \textfont\tw@\twlsy \textfont\lyfam\twlly \@boldfalse}\@boldfalse \def\boldmath{\@ifundefined{twlmib}{\global\font\twlmib\@mbi\@magscale1\global \font\twlsyb\@mbsy \@magscale1\global\font \twllyb\@lasyb\@magscale1\relax\@addfontinfo\@xiipt {\def\boldmath{\everymath {\mit}\everydisplay{\mit}\@prtct\@nomathbold \textfont\@ne\twlmib \textfont\tw@\twlsyb \textfont\lyfam\twllyb\@prtct\@boldtrue}}}{}\@xiipt\boldmath}% \@psfonts\@xiipt{12}86% \@cmrset\twlrm\egtrm\sixrm% \def\ly{\fam\lyfam\twlly}\textfont\lyfam\twlly \scriptfont\lyfam\egtly \scriptscriptfont\lyfam\sixly \@setstrut \rm} \def\@xiipt{} \def\xivpt{\textfont\z@\frtnrm \scriptfont\z@\tenrm \scriptscriptfont\z@\sevrm \textfont\@ne\frtnmi \scriptfont\@ne\tenmi \scriptscriptfont\@ne\sevmi \textfont\tw@\frtnsy \scriptfont\tw@\tensy \scriptscriptfont\tw@\sevsy \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath \textfont\@ne\frtnmi \textfont\tw@\frtnsy \textfont\lyfam\frtnly \@boldfalse}\@boldfalse \def\boldmath{\@ifundefined{frtnmib}{\global\font \frtnmib\@mbi\@magscale2\global\font\frtnsyb\@mbsy\@magscale2 \global\font\frtnlyb\@lasyb\@magscale2\relax\@addfontinfo\@xivpt {\def\boldmath{\everymath {\mit}\everydisplay{\mit}\@prtct\@nomathbold \textfont\@ne\frtnmib \textfont\tw@\frtnsyb \textfont\lyfam\frtnlyb\@prtct\@boldtrue}}}{}\@xivpt\boldmath}% \@psfonts\@xivpt{14}{10}7% \@cmrset\frtnrm\tenrm\sevrm% \def\ly{\fam\lyfam\frtnly}\textfont\lyfam\frtnly \scriptfont\lyfam\tenly \scriptscriptfont\lyfam\sevly \@setstrut \rm} \def\@xivpt{} \def\xviipt{\textfont\z@\svtnrm \scriptfont\z@\twlrm \scriptscriptfont\z@\tenrm \textfont\@ne\svtnmi \scriptfont\@ne\twlmi \scriptscriptfont\@ne\tenmi \textfont\tw@\svtnsy \scriptfont\tw@\twlsy \scriptscriptfont\tw@\tensy \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath \textfont\@ne\svtnmi \textfont\tw@\svtnsy \textfont\lyfam\svtnly \@boldfalse}\@boldfalse \def\boldmath{\@subfont\boldmath\unboldmath}% \@psfonts\@xviipt{17}{12}{10}% \@cmrset\svtnrm\twlrm\tenrm% \def\ly{\fam\lyfam\svtnly}\textfont\lyfam\svtnly \scriptfont\lyfam\twlly \scriptscriptfont\lyfam\tenly \@setstrut \rm} \def\@xviipt{} \def\xxpt{\textfont\z@\twtyrm \scriptfont\z@\frtnrm \scriptscriptfont\z@\twlrm \textfont\@ne\twtymi \scriptfont\@ne\frtnmi \scriptscriptfont\@ne\twlmi \textfont\tw@\twtysy \scriptfont\tw@\frtnsy \scriptscriptfont\tw@\twlsy \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath \textfont\@ne\twtymi \textfont\tw@\twtysy \textfont\lyfam\twtyly \@boldfalse}\@boldfalse \def\boldmath{\@subfont\boldmath\unboldmath}% \@psfonts\@xxpt{20}{14}{12}% \@cmrset\twtyrm\frtnrm\twlrm% \def\ly{\fam\lyfam\twtyly}\textfont\lyfam\twtyly \scriptfont\lyfam\frtnly \scriptscriptfont\lyfam\twlly \@setstrut \rm} \def\@xxpt{} \def\xxvpt{\textfont\z@\twfvrm \scriptfont\z@\twtyrm \scriptscriptfont\z@\svtnrm \textfont\@ne\twtymi \scriptfont\@ne\twtymi \scriptscriptfont\@ne\svtnmi \textfont\tw@\twtysy \scriptfont\tw@\twtysy \scriptscriptfont\tw@\svtnsy \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath \textfont\@ne\twtymi \textfont\tw@\twtysy \textfont\lyfam\twtyly \@boldfalse}\@boldfalse \def\boldmath{\@subfont\boldmath\unboldmath}% \@psfonts\@xxvpt{25}{20}{17}% \@cmrset\twfvrm\twtyrm\svtnrm% \def\ly{\fam\lyfam\twtyly}\textfont\lyfam\twtyly \scriptfont\lyfam\twtyly \scriptscriptfont\lyfam\svtnly \@setstrut \rm} \def\@xxvpt{} % % Fix accents for PostScript fonts (but break them for non-PostScript % fonts.) -tgr, 6 April 91. % \def\H#1{{\accent"CD #1}}\def\.#1{{\accent"C7 #1}} \def\dot{\mathaccent"70C7 } \newdimen\aadimen \def\AA{\leavevmode\setbox0\hbox{h}\aadimen\ht0 \advance\aadimen-1ex\setbox0\hbox{A}\rlap{\raise.67\aadimen \hbox to \wd0{\hss\char'27\hss}}A} \def\pounds{\char163} dvipsk_TexLive-2009-stripped/contrib/crop.lpr0000644000175000017500000002300011372532227021213 0ustar uwabamiuwabami%! % This file is for crop marks and registration marks if there is color. % % First, we translate and draw the marks. You can change the way the % marks are drawn, but the quarter inch border around the page is fixed. % % This file uses bop-hook; sorry. % TeXDict begin % % CM %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % x_center y_center CM - % % % % Make a crop mark at x_center y_center. This crop mark is just a cross. % % Checks to see if TeXcolorcmyk is defined---if there is no color, you can % % setgray instead of setcmykcolor. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /cX 18 def % the crop offset /CM { gsave 3 1 roll translate rotate .3 setlinewidth /TeXcolorcmyk where {pop 1 1 1 1 setcmykcolor} {0 setgray} ifelse 0 cX neg moveto 0 cX 2 div neg lineto stroke cX neg 0 moveto cX 2 div neg 0 lineto stroke grestore } def % % RegMark %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % x_center y_center RegMark - % % % % Make a registration mark at x_center y_center. Consists of two concentric % % circles, the inner one filled, and a cross hair through them. Preferred % % by those who register films for proof. Checks to see if TeXcolorcmyk is % % defined---if there is no color, you don't need registration marks! % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /RegMark { /TeXcolorcmyk where { pop gsave translate .3 setlinewidth 1 1 1 1 setcmykcolor 0 0 3 0 360 arc fill 0 0 6 0 360 arc stroke 0 1 3 { pop 90 rotate 0 0 0 0 setcmykcolor 0 0 moveto 3 0 lineto stroke 1 1 1 1 setcmykcolor 3 0 moveto 8 0 lineto stroke } for grestore } {pop pop} ifelse } def % % DoLogo %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % x_left y_upper DoLogo - % % % % If /CompositorName is defined, then the logo will be placed in the crop % % area. /JobDescription and /Contractor can also be defined in the TeX file % % to define the job. If there is no definition, they simply will not show % % up. Examples: % % /CompositorName (Meridian Creative Group) def % % /JobDescription (College Algebra: Concepts and Models 2/e) def % % /Contractor (D.C. Heath and Company) def % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /DoLogo { moveto save % % Variables to control the look of the Logo: % /LogoVgap 1 def % Vertical gap between logo string and box /LogoHgap 3 def % Horizontal gap between logo string and box /LogoFont {6 /Helvetica} def % The font to use for this logo. % % Gather some useful information about the Logo Font. % /LogoAscent LogoFont findfont /FontBBox get 3 get abs 1000 div mul def /LogoDescent LogoFont findfont /FontBBox get 1 get abs 1000 div mul def /LogoHeight LogoAscent LogoDescent add def % % AddToLogo % /LogoWidth 0 def /AddToLogo { dup show % leaving on stack stringwidth pop % on stack } def % % Start by setting line width, color, and establish logo font. % .24 setlinewidth /TeXcolorcmyk where {pop 1 1 1 1 setcmykcolor} {0 setgray} ifelse LogoFont findfont exch scalefont setfont % % Then move into position % LogoHgap LogoVgap LogoAscent add neg rmoveto % % If there is a logo, there will be a compositor, so start by setting % the compositor name and add to the LogoWidth. % CompositorName AddToLogo % Add compositor name to logo LogoWidth add /LogoWidth exch def % Add compositor name to logo width % % If there is a job description, set it next. % /JobDescription where { pop % Get rid of dictionary LogoFont pop 0 rmoveto % Move a bit to the right LogoWidth LogoFont pop add % Add that on to the logo width JobDescription AddToLogo % Add job description to logo add /LogoWidth exch def % Add job description to logo width } if % % Same thing with Contractor. % /Contractor where { pop % Get rid of dictionary LogoFont pop 0 rmoveto % Move a bit to the right LogoWidth LogoFont pop add % Add that on to the logo width Contractor AddToLogo % Add contractor to logo add /LogoWidth exch def % Add contractor to logo width } if % % Add the gaps onto the logo dimensions for box drawing. % /LogoHeight LogoHeight 2 LogoVgap mul add def /LogoWidth LogoWidth 2 LogoHgap mul add def % % Move into lower right corner of box and draw it clockwise. % LogoHgap LogoVgap LogoDescent add neg rmoveto LogoWidth neg 0 rlineto 0 LogoHeight rlineto LogoWidth 0 rlineto 0 LogoHeight neg rlineto stroke restore stroke } def % /DrawCenterTicks { gsave .3 setlinewidth /TeXcolorcmyk where {pop 1 1 1 1 setcmykcolor} {0 setgray} ifelse hsize cX 2 mul sub 2 div cX 2 div neg moveto 0 cX 2 div neg rlineto hsize cX 1.5 mul sub vsize cX 2 mul sub 2 div moveto cX 2 div 0 rlineto hsize cX 2 mul sub 2 div vsize cX 1.5 mul sub moveto 0 cX 2 div rlineto cX 2 div neg vsize cX 2 mul sub 2 div moveto cX 2 div neg 0 rlineto stroke grestore } def % % NamePlates %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % left bottom NamePlates - % % % % /FirstPlate, /SecondPlate, /ThirdPlate, and /FourthPlate have default % % names but may be overridden in the job.hdr. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /NamePlates { gsave translate % Make sure each plate has a name. /FirstPlate where {pop} {/FirstPlate (Cyan) def} ifelse /SecondPlate where {pop} {/SecondPlate (Magenta) def} ifelse /ThirdPlate where {pop} {/ThirdPlate (Yellow) def} ifelse /FourthPlate where {pop} {/FourthPlate (Black) def} ifelse /Helvetica-Bold findfont 10 scalefont setfont % Cyan block 1 0 0 0 setcmykcolor 0 0 moveto 9 0 lineto 9 9 lineto 0 9 lineto closepath fill 0 0 0 0 setcmykcolor 0.75 1 moveto (C) show % Magenta block 0 1 0 0 setcmykcolor 9 0 moveto 18 0 lineto 18 9 lineto 9 9 lineto closepath fill 0 0 0 0 setcmykcolor 9.25 1 moveto (M) show % Yellow block 0 0 1 0 setcmykcolor 18 0 moveto 27 0 lineto 27 9 lineto 18 9 lineto closepath fill 0 0 0 0 setcmykcolor 19.25 1 moveto (Y) show % Black block 0 0 0 1 setcmykcolor 27 0 moveto 36 0 lineto 36 9 lineto 27 9 lineto closepath fill 0 0 0 0 setcmykcolor 27.5 1 moveto (K) show % Name Plates /Helvetica-Narrow findfont 9 scalefont setfont 1 1 1 1 setcmykcolor ( Plate:) show 1 0 0 0 setcmykcolor FirstPlate show 0 1 0 0 setcmykcolor SecondPlate show 0 0 1 0 setcmykcolor ThirdPlate show 0 0 0 1 setcmykcolor FourthPlate show grestore } def % end %TeXDict % /bop-hook { cX dup TR % move the origin a bit gsave % Draw center tic marks in the crop margin DrawCenterTicks % Do the logo /CompositorName where {pop cX 2 div dup neg DoLogo} if % Name the plates /TeXcolorcmyk where {pop hsize 2 div cX add -18 NamePlates} if % now draw four crop marks and four registration marks 0 0 0 CM cX -2 div dup RegMark vsize cX 2 mul sub dup hsize cX 2 mul sub dup isls { 4 2 roll } if 0 2 copy 90 CM cX 2 div sub exch cX 2 div add exch RegMark exch 2 copy 180 CM cX 2 div add exch cX 2 div add exch RegMark 0 exch 2 copy 270 CM cX 2 div add exch cX 2 div sub exch RegMark grestore 0 cX -2 mul TR % now move to where we start drawing isls { cX -2 mul 0 TR } if } def dvipsk_TexLive-2009-stripped/contrib/whichinpath0000644000175000017500000000046511372532227021774 0ustar uwabamiuwabami#!/bin/sh # # Useful with the backtick execution special; helps to find PostScript # files on TEXINPUTS. Contributed by S. P. Q. Rahtz. # pathList=`echo ${TEXINPUTS:=.:/usr/local/tex/inputs} | tr ':' ' '` theFile=$1 for p in $pathList do test -f $p/$theFile && { echo $p/$theFile; exit 0; } done exit 1 dvipsk_TexLive-2009-stripped/contrib/PSTricks0000644000175000017500000002732711372532227021176 0ustar uwabamiuwabamiThis file contains the read-me file for the PSTricks package, including information on how to obtain PSTricks, and a PostScript file that gives an idea of what the package has to offer. *********************************************************************** **** "readme" file for PSTricks package, v0.92, 92/10/02 **** *********************************************************************** COPYRIGHT 1992, by Timothy Van Zandt, tvz@Princeton.EDU COPYING: Copying of part or all of any file in the PSTricks package is allowed under the following conditions only: (1) You may freely distribute unchanged copies of the files. Please include the documentation when you do so. (2) You may modify a renamed copy of any file, but only for personal use or use within an organization. (3) You may copy fragments from the files, for personal use or for use in a macro package for distribution, as long as credit is given where credit is due. You are NOT ALLOWED to take money for the distribution or use of these files or modified versions or fragments thereof, except for a nominal charge for copying etc. DESCRIPTION: pstricks.tex is an extensive collection of PostScript macros that is compatible with most TeX macro packages, including Plain TeX , LaTeX AmSTeX and AmS-LaTeX. Included are macros for color, graphics, rotation, trees and overlays. It has several special features: * There is a wide variety of graphics (picture drawing) macros, with a flexible interface and with color support. All lines and outlines can be solid, dotted or dashed. Lines and curves can have arrowheads, t-bars, brackets or circles on the ends. Regions can be filled with solid colors, lines or crosshatch. * There is support for polar and cartesian coordinate systems. * There are macros for plots and axes. * Nested rotations can be made with respect to the physical page. * There are flexible node macros, useful for trees, mathematical diagrams, and linking information of any kind. * There is a powerful loop macro that is useful for making pictures. * There are macros for coloring or shading the cells of tables. PSTricks puts the icing (PostScript) on your cake (TeX)! GETTING PSTRICKS The PSTricks package is available from the /pub directory at Princeton.EDU, and at other archives. A bug list pstricks.bug is kept up-to-date on Princeton.EDU. Send requests to get on or off the PSTricks mailing list to the author. FILES: Inputs: pstricks.tex : The main macro file, for use with a header file. pstricks.sty : The same as pstricks.tex, but the .sty extension. pstricks.con : The configuration file for pstricks.tex. multido.tex : Contains the \multido macro. multido.sty : Same as multido.tex, but with .sty extension. Contributed: pallete.tex : A palette of RGB colors, by Fred Knight. pallete.sty : The same as pallete.tex, but with .sty extension. Documentation: pst-usr1.ps : User's Guide, part I. pst-usr2.ps : User's Guide, part II. pst-quik.ps : Quick Reference. samples.pst : A LaTeX file of samples. pst-test.tex : A Plain TeX test file. changes.pst : An ASCII list of changes. multido.ps : Documentation for multido.tex. Sources: pstricks.doc : Documentation and code for pstricks.tex. pst-code.tex : LaTeX file for typesetting pstricks.doc. pst-user.tex : LaTeX source for User's Guide. defaults.pst : List of parameter defaults, for pst-user.tex. tvz-hax.sty : Macros for pst-user.tex and pst-code.tex. npsfont.sty : Macros for pst-user.tex. pst-make.tex : For making pstricks.tex and pstricks.pro from pstricks.doc Other: read-me.pst : This file. pstricks.pro : A PostScript prologue (for use with dvips). PRINTING THE USER'S GUIDE: The User's Guide is distributed in PostScript format as pst-usr1.ps and pst-usr2.ps. There is also a quick reference, pst-quik.ps. Sun Newsprint/Pageview users: See relevant section below. For printing on a4 paper: See relevant section below. The User's Guide uses less than 150K of virtual memory, which is well below the minimal PostScript configuration. If you run out of memory, try turning off the printer to flush out stuff left in memory from previous jobs. Any other problems printing pst-usr1.ps and pst-usr2.ps should be reported to me. However, you are on your own if you choose to typeset the LaTeX source (pst-user.tex). LaTeXing pst-user.tex is NOT a good way to test PSTricks, as there are too many other macros involved. PRINTING THE USER'S GUIDE ON A4 PAPER: You may find that it prints fine as is, but you might want to try making the following changes to the .ps files (this stuff is printer dependent): Change these lines: OLD: %%BoundingBox: 0 0 612 792 TeXDict begin 40258431 52099146 1000 300 300 @start /Fa 134[33 NEW: %%BoundingBox: 0 0 596 842 TeXDict begin 39158280 55380996 1000 300 300 @start /Fa 134[33 Add this just before %%EndComments: %%DocumentPaperSizes: a4 Add these just before %%EndSetup. %%BeginPaperSize: a4 a4 %%EndPaperSize INSTALLATION FOR USERS OF ROKICKI'S DVIPS: 1. Put the input files where your TeX looks for inputs. 2. Put the file pstricks.pro where dvips looks for headers. Probably /usr/lib/tex/ps on unix systems. 3. Typeset the LaTeX file samples.pst as a test and to see the samples. 3. Have fun! INSTALLATION FOR USERS OF ARBORTEXT'S DVIPS AND TEXTURES: 1. Examine the configuration file pstricks.con. Uncomment the \iffalse...\fi surrounding the commands for Rokicki's dvips. Comment out the \iffalse...\fi surrounding the commands for Arbortext's dvips or Textures. 2. If using Textures, decide whether you want to use a header file. Uncomment the definition of \pstheader if you do. 3. Run pst-make through Plain TeX or LaTeX. This generates pstricks.tex and possibly pstricks.pro. 4. Follow the instructions above for Rokicki's dvips, using the pstricks.tex and pstricks.pro files that you generated rather than the ones that came with the package. INSTALLATION FOR USERS OF OTHER DVI-TO-PS DRIVERS: PSTricks should be adaptable to other drivers with similar capabilities. Feel free to contact me for help. 1. Use pstricks.doc as your input file for now (rather than pstricks.tex). 2. Examine the configuration file pstricks.con. Uncomment the \iffalse...\fi surrounding the commands for Rokicki's dvips. Try to define the required commands appropriately for you driver, but don't use a header file yet (i.e., leave \pstheader undefined). 3. Run pst-test.tex through Plain TeX until you get things to work as well as possible. You may not be able to use all of PSTricks features, but if you can define \pstverb and \pstunit, you at least can use all the graphics objects. 4. Decide whether your driver supports inclusion of a PostScript header file. (PSTricks runs much more efficiently with a header,) If so, define \pstheader appropriately in pstricks.con. 5. Run pst-make through Plain TeX or LaTeX. This generates pstricks.tex and possibly pstricks.pro. 6. Follow the instructions above for Rokicki's dvips, using the pstricks.tex and pstricks.pro files that you generated rather than the ones that came with the package. UPGRADING FROM VERSION 0.91: You need to reinstall the package in its entirety, including pstricks.pro. There are a few incompatible changes, described in changes.pst. The User's Guide is greatly improved -- check it out. UPGRADING FROM VERSION 0.9 OR EARLIER: Much has changed. You should reinstall the package in its entirety. \dbox and \rotate have been removed. \psput has been replaced by \rput, with new syntax. However, the command \OldPsput defines \psput to work with the old syntax; the command \NewPsput defines \psput to work with the new syntax. See the pst-chan.ges for more information. TIPS FOR HACKERS: The file pstricks.doc contains the documentation and code, using Frank Mittelbach's doc system. You can typeset this, if desired, by running LaTeX on pst-code.tex. See pst-code.tex for details. Don't expect too much from the documentation. If you want to modify the internals of PSTricks, don't use a PostScript header file (i.e., don't define \pstheader in pstricks.con) and use pstricks.doc as your input file. This allows you to modify both the TeX and the PostScript macros. When you don't expect to make more changes for a while, run pst-make to generate a new compact macro file and a new PostScript header file (if desired). If using a header file, don't forget to redefine \pstheader in pstricks.con. Beware that the internal code in PSTricks is still unstable. USING PSTRICKS WITH SUN'S PAGEVIEW/NEWSPRINT/OPENWINDOWS Sun's PageView/NeWSPrint/OpenWindows have many bugs. Workarounds for several known problems of these have been coded into PSTricks. A workaround for another bug is described below. Report other problems to me. A bug under Sun's PageView/NeWSprint 3.0 (perhaps fixed in 3.0.1), causes arrows to disturb the lines. To see if you have this problem, try previewing the section in pst-usr2.ps on axes. Here is a workaround: If using a header, append the following to pstricks.pro: /EndArrow { x2 y2 currentpoint grestore angle matrix identmatrix rotate transform y1 add exch x1 add exch end } def Do this in pst-usr1.ps and pst-usr2.ps as well. If not using a header file, add the following to the end of pstricks.con: \pst@def{EndArrow}<% x2 y2 currentpoint grestore angle matrix identmatrix rotate transform y1 add exch x1 add exch end> CONTRIBUTING TO PSTRICKS Please send me: * Whatever you can spare. * Pretty/interesting/clever things you have created with PSTricks, for possible inclusion in the User's Guide or pst-samp.tex. Don't be bashful! * High level macros for trees/graphs, math diagrams, and linguistic diagrams, based on PSTricks' node macros. * Any other macros based on PSTricks. * Contributions to the Tips and Tricks section of the User's Guide. * Reports on +/- experiences with DVI-to-PS converters and previewers. * Bug reports. * pstricks.doc -- cleaned up, optimized, and documented. * To Nepal. PSTRICKS AND SEMINAR.STY The PSTricks package grew out of macros originally written for the seminar.sty package. seminar.sty is a LaTeX style for slides and notes. seminar.sty, combined with pstricks.tex and your favorite macros for inclusion of EPS files, make a complete TeX presentation software package. PSTricks v0.92 works with seminar.sty version 0.92, and maybe later versions as well. The seminar.sty package is also available from Princeton.EDU, and perhaps from wherever else you got PSTricks. ABOUT MULTIDO.TEX: multido.tex contains a loop macro that is useful for making pictures, among other things. See multido.ps for details. multido.tex is required by PSTricks \psaxes macro. The complete multido.tex distribution (i.e., including sources) is available from the /pub directory at Princeton.EDU. ACKNOWLEDGEMENTS: The basic idea for the node macros is from Emma Pease's tree-dvips.sty. The algorithm in the \pscurve macro was adapted from a C program by Shamim Zvonko Mohamed. Thanks to Geoffrey Tobin for helpful comments. The author is thankful to Frank Mittelbach for his documentation system. Thanks to various contributors to samples.pst. DISCLAIMERS: This is just an elaborate hack. Not for use as children's sleepware. dvipsk_TexLive-2009-stripped/contrib/volker/0000755000175000017500000000000011372532227021040 5ustar uwabamiuwabamidvipsk_TexLive-2009-stripped/contrib/volker/scr90.cfg0000644000175000017500000000125211372532227022461 0ustar uwabamiuwabami% config.screen90 % Configuration file for dvips. Load with: dvips -P screen90. % % Sets screen frequency and angle for images to 90lpi/45degree. % % This file is built so it can be used both as the header file for % PostScript and as the configuration file for dvips. % (Note that dvips ignores any lines beginning with a space or a "%".) % % Volker Kuhlmann, 20 Feb 1995 % VOLKER@ELEC.CANTERBURY.AC.NZ % 90 45 % "Dot" function: {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 sub }{dup mul exch dup mul add 1 exch sub }ifelse} setscreen % { % start a procedure so PostScript `ignores' the dvips options. h config.screen90 } pop % PostScript cleanup dvipsk_TexLive-2009-stripped/contrib/volker/scr100-0.cfg0000644000175000017500000000126311372532227022670 0ustar uwabamiuwabami% config.screen100-0 % Configuration file for dvips. Load with: dvips -P screen100-0. % % Sets screen frequency and angle for images to 100lpi/0degree. % % This file is built so it can be used both as the header file for % PostScript and as the configuration file for dvips. % (Note that dvips ignores any lines beginning with a space or a "%".) % % Volker Kuhlmann, 20 Feb 1995 % VOLKER@ELEC.CANTERBURY.AC.NZ % 100 0 % "Dot" function: {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 sub }{dup mul exch dup mul add 1 exch sub }ifelse} setscreen % { % start a procedure so PostScript `ignores' the dvips options. h config.screen100-0 } pop % PostScript cleanup dvipsk_TexLive-2009-stripped/contrib/volker/scr140.cfg0000644000175000017500000000125711372532227022542 0ustar uwabamiuwabami% config.screen140 % Configuration file for dvips. Load with: dvips -P screen140. % % Sets screen frequency and angle for images to 140lpi/45degree. % % This file is built so it can be used both as the header file for % PostScript and as the configuration file for dvips. % (Note that dvips ignores any lines beginning with a space or a "%".) % % Volker Kuhlmann, 20 Feb 1995 % VOLKER@ELEC.CANTERBURY.AC.NZ % 140 45 % "Dot" function: {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 sub }{dup mul exch dup mul add 1 exch sub }ifelse} setscreen % { % start a procedure so PostScript `ignores' the dvips options. h config.screen140 } pop % PostScript cleanup dvipsk_TexLive-2009-stripped/contrib/volker/scr100.cfg0000644000175000017500000000125711372532227022536 0ustar uwabamiuwabami% config.screen100 % Configuration file for dvips. Load with: dvips -P screen100. % % Sets screen frequency and angle for images to 100lpi/45degree. % % This file is built so it can be used both as the header file for % PostScript and as the configuration file for dvips. % (Note that dvips ignores any lines beginning with a space or a "%".) % % Volker Kuhlmann, 20 Feb 1995 % VOLKER@ELEC.CANTERBURY.AC.NZ % 100 45 % "Dot" function: {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 sub }{dup mul exch dup mul add 1 exch sub }ifelse} setscreen % { % start a procedure so PostScript `ignores' the dvips options. h config.screen100 } pop % PostScript cleanup dvipsk_TexLive-2009-stripped/contrib/volker/README0000644000175000017500000001077311372532227021730 0ustar uwabamiuwabamiNOTE S Rahtz 1998/01/18: renamed files to suite 8+3 .cfg style ******************************************************************** Release 1.13, 21 Aug 1995 Release 1.12, 02 Mar 1995 Release 1.0, 20 Feb 1995 This is a set of files which can be used with dvips to control certain parameters of the printer, like simplex/duplex printing, or screen frequencies of images. Put together by Volker Kuhlmann, VOLKER@ELEC.CANTERBURY.AC.NZ. No copyright. Freely distributable. If you make additions, please send me a copy. LIST OF FILES ============= README This file. config.* Configuration files and header files for dvips. Special format which serves both purposes. INSTALLATION ============ Copy these files into a directory which is searched by dvips both for configuration files and for header files. dvips looks in $TEXCONFIG for configuration files, and in $DVIPSHEADERS for header files. For details please see the dvips documentation. USAGE ===== dvips reads the instructions in a configuration file with the -P option: dvips -P All these configuration files contain the PostScript code for the respective operation as well, and can be used as header file as they are. Now to the stuff provided: -P simplex On a duplex printer, force printing in simplex mode. On a simplex printer, this will be ignored. -P duplong On a duplex printer, force duplex printing with binding on the long edge. On a simplex printer, this will be ignored. -P dupshort On a duplex printer, force duplex printing with binding on the short edge. On a simplex printer, this will be ignored. -P a3 Print on A3 paper. Note: this is just a demo - use "-t a3" instead! -P inv Print all pages inverted, i.e. white letters on black background. Note: this currently does not work properly. Any hints/fixes greatly appreciated! -P screenN Print images with a screen frequency of N lpi at 45 degrees. N = {70, 80, 85, 90, 100, 110, 120, 130, 140, 150} -P screen100-0 Print images with a screen frequency of 100lpi at 0 degrees. Note: When working with screen frequencies, it is possible that turning the printer off and back on solves the problem of the screen commands not having any effect. CONTROLLING SCREEN FREQUENCIES ============================== Various PostScript commands for controlling the screen frequencies of images exist, but not all work on all printers. See fragments of PostScript code and comments below. The form working on most printers is LPI DEGREES {FUNCTION} setscreen Insert numbers for LPI and DEGREES, and a function for FUNCTION about which I only know (right or wrong?): "Should read 2 values from the stack (x, y coordinates in a halftone cell), and return one in the range -1 to 1. The return values determine the order in which pixels within a halftone cell are whitened to produce any desired shade of gray." The simplest function is {pop}, creating a "linescreen" pattern. There is also a function "Dot" (currently used) and "Ellipse". For any other frequencies/angles/functions put the instructions in a file, and load the file with dvips -h Thanks to osakari@unda.fi (Olavi Sakari) for some help, and the "Dot" and "Ellipse" code. Notes follow: %currentscreen 3 1 roll pop pop 70 45 3 -1 roll setscreen % Works on HP LJ3Si, HP LJ4m. Ignored on HP LJ4mv (VK). %currentscreen 3 1 roll pop pop 70 45 3 -1 roll sethalftone % Ignored on HP LJ4mv (VK). %70 45 {pop} setscreen % Produces a funny, 1-diagonal pattern ("linescreen") on HP LJ4mv (VK). % "Dot": %70 45 {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 % sub }{dup mul exch dup mul add 1 exch sub }ifelse} setscreen % Works on HP LJ3Si, HP LJ4m, HP LJ4mv (VK). % "Ellipse": %70 45 {dup 5 mul 8 div mul exch dup mul exch add sqrt 1 exch sub} setscreen % Works on HP LJ4mv (VK). %70 45 %<< % /HalftoneType 1 % 0 gives range check error, 2 gives undefined error (VK). % /Frequency 150 % /Angle 20 % the values for /Frequency, /Angle are irrelevant % /SpotFunction {pop} %>> %setscreen % 70 45 seem to replace /Frequency and /Angle in dict % - Note: NO curly braces around the dict! % Works on HP LJ4m, produces errors with HP LJ3Si, % Produces "linescreen" on HP LJ4mv caused by {pop} (VK). %<< % /HalftoneType 1 % % 0 gives range check error, 2 gives undefined error (VK). % /Frequency 70 % /Angle 45 % /SpotFunction {pop} %>> %sethalftone % Level 2 only % Produces "linescreen" on HP LJ4mv caused by {pop} (VK). dvipsk_TexLive-2009-stripped/contrib/volker/scr150.cfg0000644000175000017500000000125711372532227022543 0ustar uwabamiuwabami% config.screen150 % Configuration file for dvips. Load with: dvips -P screen150. % % Sets screen frequency and angle for images to 150lpi/45degree. % % This file is built so it can be used both as the header file for % PostScript and as the configuration file for dvips. % (Note that dvips ignores any lines beginning with a space or a "%".) % % Volker Kuhlmann, 20 Feb 1995 % VOLKER@ELEC.CANTERBURY.AC.NZ % 150 45 % "Dot" function: {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 sub }{dup mul exch dup mul add 1 exch sub }ifelse} setscreen % { % start a procedure so PostScript `ignores' the dvips options. h config.screen150 } pop % PostScript cleanup dvipsk_TexLive-2009-stripped/contrib/volker/scr130.cfg0000644000175000017500000000125711372532227022541 0ustar uwabamiuwabami% config.screen130 % Configuration file for dvips. Load with: dvips -P screen130. % % Sets screen frequency and angle for images to 130lpi/45degree. % % This file is built so it can be used both as the header file for % PostScript and as the configuration file for dvips. % (Note that dvips ignores any lines beginning with a space or a "%".) % % Volker Kuhlmann, 20 Feb 1995 % VOLKER@ELEC.CANTERBURY.AC.NZ % 130 45 % "Dot" function: {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 sub }{dup mul exch dup mul add 1 exch sub }ifelse} setscreen % { % start a procedure so PostScript `ignores' the dvips options. h config.screen130 } pop % PostScript cleanup dvipsk_TexLive-2009-stripped/contrib/volker/scr120.cfg0000644000175000017500000000125711372532227022540 0ustar uwabamiuwabami% config.screen120 % Configuration file for dvips. Load with: dvips -P screen120. % % Sets screen frequency and angle for images to 120lpi/45degree. % % This file is built so it can be used both as the header file for % PostScript and as the configuration file for dvips. % (Note that dvips ignores any lines beginning with a space or a "%".) % % Volker Kuhlmann, 20 Feb 1995 % VOLKER@ELEC.CANTERBURY.AC.NZ % 120 45 % "Dot" function: {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 sub }{dup mul exch dup mul add 1 exch sub }ifelse} setscreen % { % start a procedure so PostScript `ignores' the dvips options. h config.screen120 } pop % PostScript cleanup dvipsk_TexLive-2009-stripped/contrib/volker/a3.cfg0000644000175000017500000000073211372532227022026 0ustar uwabamiuwabami% config.a3 % Configuration file for dvips. Load with: dvips -P a3. % % Forces printing on A3 paper. % % This file is built so it can be used both as the header file for % PostScript and as the configuration file for dvips. % (Note that dvips ignores any lines beginning with a space or a "%".) % % Volker Kuhlmann, 21 Feb 1995 % VOLKER@ELEC.CANTERBURY.AC.NZ % a3 % { % start a procedure so PostScript `ignores' the dvips options. h config.a3 } pop % PostScript cleanup dvipsk_TexLive-2009-stripped/contrib/volker/dupshort.cfg0000644000175000017500000000116611372532227023375 0ustar uwabamiuwabami% config.dupshort % Configuration file for dvips. Load with: dvips -P dupshort. % % Prints in duplex mode with binding on the short edge. % Ignored on a simplex printer. % Works on HP LaserJet IIISi. % % This file is built so it can be used both as the header file for % PostScript and as the configuration file for dvips. % (Note that dvips ignores any lines beginning with a space or a "%".) % % Volker Kuhlmann, 20 Feb 1995 % VOLKER@ELEC.CANTERBURY.AC.NZ % statusdict begin true setduplexmode true settumble end % { % start a procedure so PostScript `ignores' the dvips options. h config.dupshort } pop % PostScript cleanup dvipsk_TexLive-2009-stripped/contrib/volker/scr110.cfg0000644000175000017500000000125711372532227022537 0ustar uwabamiuwabami% config.screen110 % Configuration file for dvips. Load with: dvips -P screen110. % % Sets screen frequency and angle for images to 110lpi/45degree. % % This file is built so it can be used both as the header file for % PostScript and as the configuration file for dvips. % (Note that dvips ignores any lines beginning with a space or a "%".) % % Volker Kuhlmann, 20 Feb 1995 % VOLKER@ELEC.CANTERBURY.AC.NZ % 110 45 % "Dot" function: {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 sub }{dup mul exch dup mul add 1 exch sub }ifelse} setscreen % { % start a procedure so PostScript `ignores' the dvips options. h config.screen110 } pop % PostScript cleanup dvipsk_TexLive-2009-stripped/contrib/volker/inv.cfg0000644000175000017500000000123611372532227022317 0ustar uwabamiuwabami% config.inv % Configuration file for dvips. Load with: dvips -P inv. % % Invert the printing. % This currently mucks up the first of the pages printed. % % This file is built so it can be used both as the header file for % PostScript and as the configuration file for dvips. % (Note that dvips ignores any lines beginning with a space or a "%".) % % Volker Kuhlmann, 20 Feb 1995 % VOLKER@ELEC.CANTERBURY.AC.NZ % %[{} /exec load currenttransfer /exec load] cvx settransfer [{1 exch sub} /exec load currenttransfer /exec load] cvx settransfer %/fPP true def % { % start a procedure so PostScript `ignores' the dvips options. h config.inv } pop % PostScript cleanup dvipsk_TexLive-2009-stripped/contrib/volker/simplex.cfg0000644000175000017500000000114511372532227023203 0ustar uwabamiuwabami% config.simplex % Configuration file for dvips. Load with: dvips -P simplex. % % Forces printing in simplex mode on a duplex printer. % Ignored on a simplex printer. % Works on HP LaserJet IIISi. % % This file is built so it can be used both as the header file for % PostScript and as the configuration file for dvips. % (Note that dvips ignores any lines beginning with a space or a "%".) % % Volker Kuhlmann, 20 Feb 1995 % VOLKER@ELEC.CANTERBURY.AC.NZ % statusdict begin false setduplexmode end % { % start a procedure so PostScript `ignores' the dvips options. h config.simplex } pop % PostScript cleanup dvipsk_TexLive-2009-stripped/contrib/volker/duplong.cfg0000644000175000017500000000116311372532227023172 0ustar uwabamiuwabami% config.duplong % Configuration file for dvips. Load with: dvips -P duplong. % % Prints in duplex mode with binding on the long edge. % Ignored on a simplex printer. % Works on HP LaserJet IIISi. % % This file is built so it can be used both as the header file for % PostScript and as the configuration file for dvips. % (Note that dvips ignores any lines beginning with a space or a "%".) % % Volker Kuhlmann, 20 Feb 1995 % VOLKER@ELEC.CANTERBURY.AC.NZ % statusdict begin true setduplexmode false settumble end % { % start a procedure so PostScript `ignores' the dvips options. h config.duplong } pop % PostScript cleanup dvipsk_TexLive-2009-stripped/contrib/volker/scr80.cfg0000644000175000017500000000125211372532227022460 0ustar uwabamiuwabami% config.screen80 % Configuration file for dvips. Load with: dvips -P screen80. % % Sets screen frequency and angle for images to 80lpi/45degree. % % This file is built so it can be used both as the header file for % PostScript and as the configuration file for dvips. % (Note that dvips ignores any lines beginning with a space or a "%".) % % Volker Kuhlmann, 20 Feb 1995 % VOLKER@ELEC.CANTERBURY.AC.NZ % 80 45 % "Dot" function: {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 sub }{dup mul exch dup mul add 1 exch sub }ifelse} setscreen % { % start a procedure so PostScript `ignores' the dvips options. h config.screen80 } pop % PostScript cleanup dvipsk_TexLive-2009-stripped/contrib/volker/scr85.cfg0000644000175000017500000000125211372532227022465 0ustar uwabamiuwabami% config.screen85 % Configuration file for dvips. Load with: dvips -P screen85. % % Sets screen frequency and angle for images to 85lpi/45degree. % % This file is built so it can be used both as the header file for % PostScript and as the configuration file for dvips. % (Note that dvips ignores any lines beginning with a space or a "%".) % % Volker Kuhlmann, 02 Mar 1995 % VOLKER@ELEC.CANTERBURY.AC.NZ % 85 45 % "Dot" function: {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 sub }{dup mul exch dup mul add 1 exch sub }ifelse} setscreen % { % start a procedure so PostScript `ignores' the dvips options. h config.screen85 } pop % PostScript cleanup dvipsk_TexLive-2009-stripped/contrib/volker/scr70.cfg0000644000175000017500000000125211372532227022457 0ustar uwabamiuwabami% config.screen70 % Configuration file for dvips. Load with: dvips -P screen70. % % Sets screen frequency and angle for images to 70lpi/45degree. % % This file is built so it can be used both as the header file for % PostScript and as the configuration file for dvips. % (Note that dvips ignores any lines beginning with a space or a "%".) % % Volker Kuhlmann, 20 Feb 1995 % VOLKER@ELEC.CANTERBURY.AC.NZ % 70 45 % "Dot" function: {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 sub }{dup mul exch dup mul add 1 exch sub }ifelse} setscreen % { % start a procedure so PostScript `ignores' the dvips options. h config.screen70 } pop % PostScript cleanup dvipsk_TexLive-2009-stripped/contrib/configs/0000755000175000017500000000000011372532227021166 5ustar uwabamiuwabamidvipsk_TexLive-2009-stripped/contrib/configs/config.lino0000644000175000017500000000473211372532227023324 0ustar uwabamiuwabami* * This configuration file is a sample one for a typesetter. See the * end of the file especially, where we use setpageparams. With a * configuration file like this, you can use * * -t film0 -k -T 11in,17in * * for instance to print an 11x17 inch document in orientation 0 with * crop marks. * * Assume we have a nice modern lino with lots of memory. * m 1000000 * * And send output by default to a PostScript file. * o * * Default resolution. We must get this right! * D 1270 * * Compress the fonts. * Z * * Paper size information. First definition is the default. * * If your default is a4 uncomment the following definition * and comment out the letterSize definition. * *@ a4size 210mm 297mm *@+ %%PaperSize: a4 @ letterSize 8.5in 11in @+ %%PaperSize: Letter @ letter 8.5in 11in @+ %%BeginPaperSize: Letter @+ letter @+ %%EndPaperSize @ legal 8.5in 14in @+ ! %%DocumentPaperSizes: Legal @+ %%BeginPaperSize: Legal @+ legal @+ %%EndPaperSize @ ledger 17in 11in @+ ! %%DocumentPaperSizes: Ledger @+ %%BeginPaperSize: Ledger @+ ledger @+ %%EndPaperSize @ tabloid 11in 17in @+ ! %%DocumentPaperSizes: Tabloid @+ %%BeginPaperSize: Tabloid @+ 11x17 @+ %%EndPaperSize @ a4 210mm 297mm @+ ! %%DocumentPaperSizes: a4 @+ %%BeginPaperSize: a4 @+ a4 @+ %%EndPaperSize @ a3 297mm 420mm @+ ! %%DocumentPaperSizes: a3 @+ %%BeginPaperSize: a3 @+ a3 @+ %%EndPaperSize * * These last two are only for typesetters that can set the page size; * uncomment and put them in a `config.lino', for instance. * * Use this for pages where you want the text to run in the same direction * as the film feeds (slow scan direction; down the length of the film.) * Best for everything *but* pages higher than the film is wide or pages * wider than they are tall; needed for pages wider than the film is wide. * @ film0 0in 0in @+ statusdict /setpageparams known { vsize hsize 0 0 statusdict begin { @+ setpageparams } stopped end } { true } ifelse { statusdict /setpage known @+ { vsize hsize 0 statusdict begin { setpage } stopped pop end } if } if * * Use this for pages where you want the text to run across the width of * the film (fast scan direction.) Needed for pages taller than the film * is wide; preferred for pages wider than they are tall. * @ film1 0in 0in @+ statusdict /setpageparams known { hsize vsize 0 1 statusdict begin { @+ setpageparams } stopped end } { true } ifelse { statusdict /setpage known @+ { hsize vsize 1 statusdict begin { setpage } stopped pop end } if } if dvipsk_TexLive-2009-stripped/contrib/configs/config.rokicki0000644000175000017500000000211211372532227024004 0ustar uwabamiuwabami* * See config.lino for more info. * With a virtual machine, we can claim 1M of memory. * m 1000000 * * And send output by default to the printer. * o !lpr * * Default resolution. * D 400 * * Last resort sizes. * R 100 120 144 300 360 400 432 480 * * Paper size information. First definition is the default. * * If your default is a4 uncomment the following definition * and comment out the letterSize definition. * *@ A4size 210mm 297mm *@+ %%PaperSize: A4 @ letterSize 8.5in 11in @ letter 8.5in 11in @+ %%BeginPaperSize: Letter @+ letter @+ %%EndPaperSize @ legal 8.5in 14in @+ ! %%DocumentPaperSizes: Legal @+ %%BeginPaperSize: Legal @+ legal @+ %%EndPaperSize @ ledger 17in 11in @+ ! %%DocumentPaperSizes: Ledger @+ %%BeginPaperSize: Ledger @+ ledger @+ %%EndPaperSize @ tabloid 11in 17in @+ ! %%DocumentPaperSizes: Tabloid @+ %%BeginPaperSize: Tabloid @+ 11x17 @+ %%EndPaperSize @ A4 210mm 297mm @+ ! %%DocumentPaperSizes: A4 @+ %%BeginPaperSize: A4 @+ a4 @+ %%EndPaperSize @ A3 297mm 420mm @+ ! %%DocumentPaperSizes: A3 @+ %%BeginPaperSize: A3 @+ a3 @+ %%EndPaperSize dvipsk_TexLive-2009-stripped/contrib/configs/papersize.level20000644000175000017500000001306511372532227024310 0ustar uwabamiuwabami% If your printer doesn't support setpagedevice, and your default paper % size is A4, uncomment this. %@ A4size 210mm 297mm %@+ %%PaperSize: A4 % If you want the lettersize definition that uses setpagedevice to be % the default, comment this out. @ letterSize 8.5in 11in % More paper size information. First definition is the default. % These definitions were generated by the contrib/mkdvipspapers Perl 5 script, % by Yves.Arrouye@imag.fr. % % If your default is a4 put the a4 definition first (i.e., before the letter % definition). You should always keep a definition here in order to have the % document print on the desired paper if possible even outside your original % environment. % % If your default is something else than a4, of course, put its % definition first! @ letter 8.5in 11in @+ ! %%DocumentPaperSizes: Letter @+ %%PaperSize: Letter @+ %%BeginPaperSize: Letter @+ /setpagedevice where { @+ pop 1 dict dup /PageSize [ 612 792 ] put setpagedevice @+ } { @+ statusdict /lettertray known { @+ statusdict begin lettertray end @+ /letter where { pop letter } if @+ } { @+ /letter where { @+ pop letter @+ } { @+ statusdict /setpage known { @+ statusdict begin @+ 612 792 0 setpage @+ end @+ } if @+ } ifelse @+ } ifelse @+ } ifelse @+ %%EndPaperSize @ a4 210mm 297mm @+ ! %%DocumentPaperSizes: a4 @+ %%PaperSize: a4 @+ %%BeginPaperSize: a4 @+ /setpagedevice where { @+ pop 1 dict dup /PageSize [ 595 842 ] put setpagedevice @+ } { @+ statusdict /a4tray known { @+ statusdict begin a4tray end @+ /a4 where { pop a4 } if @+ } { @+ /a4 where { @+ pop a4 @+ } { @+ statusdict /setpage known { @+ statusdict begin @+ 595 842 0 setpage @+ end @+ } if @+ } ifelse @+ } ifelse @+ } ifelse @+ %%EndPaperSize @ 11x17 11in 17in @+ ! %%DocumentPaperSizes: 11x17 @+ %%PaperSize: 11x17 @+ %%BeginPaperSize: 11x17 @+ /setpagedevice where { @+ pop 1 dict dup /PageSize [ 792 1224 ] put setpagedevice @+ } { @+ statusdict /11x17tray known { @+ statusdict begin 11x17tray end @+ /11x17 where { pop 11x17 } if @+ } { @+ /11x17 where { @+ pop 11x17 @+ } { @+ statusdict /setpage known { @+ statusdict begin @+ 792 1224 0 setpage @+ end @+ } if @+ } ifelse @+ } ifelse @+ } ifelse @+ %%EndPaperSize @ a3 297mm 420mm @+ ! %%DocumentPaperSizes: a3 @+ %%PaperSize: a3 @+ %%BeginPaperSize: a3 @+ /setpagedevice where { @+ pop 1 dict dup /PageSize [ 842 1190 ] put setpagedevice @+ } { @+ statusdict /a3tray known { @+ statusdict begin a3tray end @+ /a3 where { pop a3 } if @+ } { @+ /a3 where { @+ pop a3 @+ } { @+ statusdict /setpage known { @+ statusdict begin @+ 842 1190 0 setpage @+ end @+ } if @+ } ifelse @+ } ifelse @+ } ifelse @+ %%EndPaperSize @ b5 177mm 250mm @+ ! %%DocumentPaperSizes: b5 @+ %%PaperSize: b5 @+ %%BeginPaperSize: b5 @+ /setpagedevice where { @+ pop 1 dict dup /PageSize [ 502 709 ] put setpagedevice @+ } { @+ statusdict /b5tray known { @+ statusdict begin b5tray end @+ /ab5 where { pop ab5 } if @+ } { @+ /ab5 where { @+ pop ab5 @+ } { @+ statusdict /setpage known { @+ statusdict begin @+ 502 709 0 setpage @+ end @+ } if @+ } ifelse @+ } ifelse @+ } ifelse @+ %%EndPaperSize @ ledger 11in 17in @+ ! %%DocumentPaperSizes: Ledger @+ %%PaperSize: Ledger @+ %%BeginPaperSize: Ledger @+ /setpagedevice where { @+ pop 1 dict dup /PageSize [ 792 1224 exch ] put setpagedevice @+ } { @+ statusdict /ledgertray known { @+ statusdict begin ledgertray end @+ /ledger where { pop ledger } if @+ } { @+ /ledger where { @+ pop ledger @+ } { @+ statusdict /setpage known { @+ statusdict begin @+ 792 1224 1 setpage @+ end @+ } if @+ } ifelse @+ } ifelse @+ } ifelse @+ %%EndPaperSize @ legal 8.5in 14in @+ ! %%DocumentPaperSizes: Legal @+ %%PaperSize: Legal @+ %%BeginPaperSize: Legal @+ /setpagedevice where { @+ pop 1 dict dup /PageSize [ 612 1008 ] put setpagedevice @+ } { @+ statusdict /legaltray known { @+ statusdict begin legaltray end @+ /legal where { pop legal } if @+ } { @+ /legal where { @+ pop legal @+ } { @+ statusdict /setpage known { @+ statusdict begin @+ 612 1008 0 setpage @+ end @+ } if @+ } ifelse @+ } ifelse @+ } ifelse @+ %%EndPaperSize @ note 7.5in 10in @+ ! %%DocumentPaperSizes: Note @+ %%PaperSize: Note @+ %%BeginPaperSize: Note @+ /setpagedevice where { @+ pop 1 dict dup /PageSize [ 540 720 ] put setpagedevice @+ } { @+ statusdict /notetray known { @+ statusdict begin notetray end @+ /note where { pop note } if @+ } { @+ /note where { @+ pop note @+ } { @+ statusdict /setpage known { @+ statusdict begin @+ 540 720 0 setpage @+ end @+ } if @+ } ifelse @+ } ifelse @+ } ifelse @+ %%EndPaperSize @ tabloid 11in 17in @+ ! %%DocumentPaperSizes: Tabloid @+ %%PaperSize: Tabloid @+ %%BeginPaperSize: Tabloid @+ /setpagedevice where { @+ pop 1 dict dup /PageSize [ 792 1224 ] put setpagedevice @+ } { @+ statusdict /11x17tray known { @+ statusdict begin 11x17tray end @+ /11x17 where { pop 11x17 } if @+ } { @+ /11x17 where { @+ pop 11x17 @+ } { @+ statusdict /setpage known { @+ statusdict begin @+ 792 1224 0 setpage @+ end @+ } if @+ } ifelse @+ } ifelse @+ } ifelse @+ %%EndPaperSize dvipsk_TexLive-2009-stripped/contrib/configs/2a4.ps0000644000175000017500000000300111372532227022112 0ustar uwabamiuwabami% @(#)2a4.ps 1.0 95/10/30 pete % % The following code defines PostScript procedures to work dvips. % they must be downloaded or sent as a header file together with % the PostScript version of your (La)TeX file. % % Originated probably by Piet van Oostrum, Department of Computer Science, % Utrecht University, Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht % Phone +31 30 531806 % Fax +31 30 513791 % uunet!mcsun!ruuinf!piet % % it is now re-written to work with dvips(k)-5.58f by Peter Dyballa % Johann Wolfgang Goethe-Universit\"at Robert-Mayer-Str. 11-15 % Fachbereich 20 - Theoretische Informatik D 60325 Frankfurt am Main % (Department for Computer Science) (Federal Republic of Germany) % % % To use 2a4.ps include this on invocation of dvips: % -h 2a4.ps -t landscape % % do not include this in your (La)TeX source: % \special{landscape}\special{header=2a4.ps} % /isoddpage true def /orig-showpage /showpage load def /factor 0.707106781187 def /showpage { isoddpage not { orig-showpage } if /isoddpage isoddpage not store } def /bop-hook { /vsize 1 factor add neg def isoddpage {factor factor scale 842 412 translate } { 0 -595 translate } ifelse } def /end-hook { isoddpage not { orig-showpage } if } def % % Theses measures are for those paper formats: % % DIN A4 letter legal % 148mm = 412 PS pt 5.5in = 396 PS pt 7in = 504 PS pt % 210mm = 595 PS pt 8.5in = 612 PS pt 8.5in = 612 PS pt % 297mm = 842 PS pt 11in = 792 PS pt 14in = 1008 PS pt dvipsk_TexLive-2009-stripped/contrib/configs/config.post3x30000644000175000017500000000167511372532227023711 0ustar uwabamiuwabami % % This file is an example of a header file for dvips. It prints a page % (or a whole document) as a 3x3 poster. This file is built so it can % be used both as the header file for PostScript and as the configuration % file for dvips. First comes the PostScript part. (Note that dvips % ignores any lines beginning with a space.) Change the number here. % Use it with -P post3x3. We try to overlap pages a bit. % /xpost 3 def /ypost 3 def userdict begin /bop-hook { 36 36 translate dup xpost ypost mul mod dup xpost mod hsize 36 xpost 1 sub mul sub mul neg exch xpost idiv vsize 36 ypost 1 sub mul sub mul neg translate % translate! xpost ypost scale % scale! -36 -36 translate } def end { % we start a procedure so PostScript `ignores' the dvips options. % % Now the dvips options. Change the number here too, to be % xpost * ypost. % b 9 h config.post3x3 % % Now PostScript cleanup. % } pop dvipsk_TexLive-2009-stripped/contrib/configs/loop.ps0000644000175000017500000000006011372532227022477 0ustar uwabamiuwabami%(%stdin) (r) file 1 string readstring { } loop dvipsk_TexLive-2009-stripped/contrib/configs/prepipe.ps0000644000175000017500000000004511372532227023175 0ustar uwabamiuwabami/showpage { 1 true .outputpage } def dvipsk_TexLive-2009-stripped/contrib/configs/config.fax0000644000175000017500000000007611372532227023136 0ustar uwabamiuwabami* * For FAX output, we set 200 dpi, FAX mode. * D 200 M FAX dvipsk_TexLive-2009-stripped/contrib/configs/mkdvipspapers0000644000175000017500000002424411372532227024007 0ustar uwabamiuwabami#!/usr/local/bin/perl # # mkdvipspapers: a simple Perl script that generates a bunch of paper sizes # definitions for dvips. # # Copyright (C) 1995, Yves Arrouye [06/15/95] # # THIS CODE IS PROVIDED AS IS, WITHOUT ANY WARRANTIES, EITHER EXPRESSED OR # IMPLIED, OF ITS FITNESS TO ANY PURPOSE. IT'S AUTHOR CANNOT BE HELD LIABLE # FOR ANY DAMAGES OCCURING DUE TO THE USE OF THIS CODE. USE AT YOUR OWN RISKS! # Known bugs: this script is written in Perl 5. (If you ever rewrite it in # Perl 4, I'm interested to get your version; I can provide a Perl-4 options # parser that is Getopt modified for it). # Last change: added the -p (--paper) option for specifying default size # (the first that will be generated). Arranged for the letter and a4 defs # be the first ones if nothing is specified (i.e. in the dvips default). # Note: the default paper size need not be in the chose ones, it is taken from # all the known papers sizes. # Read what follows for simple documentation and explanations. # # Options accepted by the script: # # --help print a small help message # --version print version # # -s, --standard generate standard definitions (Adobe ones) # -n, --non-standard generate dvips non-standard definitions # -d, --dvips generate dvips (i.e. standard + some) definitions # -g, --gs generate non-standard gs definitions # -e, --extra generate non-standard extra definitions # -l, --local generate local definitions # -a, --all generate all definitions # # -p, --paper default paper size # # default behaviour is the same as --dvips. # use Getopt::Long; # # The paper sizes definitions are stored in arrays with the following entries # for each paper size: # # - the name of the paper for dvips, e.g. letter; # - the name of the paper for the DSC PaperSize comment, e.g. Letter; # - the name of an accessible PostScript operator that may select the # correct paper size, e.g. letter; # - the name of a PostScript operator in statusdict that may select the # correct paper tray. e.g. lettertray (this is preferred); # - the physical width and height of the paper, either in points (no units # or bp, as in 4000bp), in inches (e.g 8.5in), centimeters (e.g. 21cm) # or in millimeters (e.g. 297mm); # - a flag indicating the orientation of the sheet, 0 meaning portrait and # 1 meaning landscape (this actually used only for gs' setpage operator). # # The PostScript code generated in the Setup section does the following. # First, we look in statusdict in order to look for a tray selection operator. # If there is none, but the specified PostScript operator is accessible with # the current dictionaries stacking order, we use it. If setpagedevice is # implemented and the other methods did fail, we use it. Otherwise, if the # setpage operator is present in statusdict, use this one. The setpage op. is # assumed to be # # setpage -- # # where is 0 for portrait and 1 for landscape (in which case # and are swapped!). # # # This code has been tested with an Apple LaserWriter II, an Hewlett Packard # 4L laser printer, Ghostscript 3.33 and Ghostview 1.5 with success. # # # Enter your local definitions here in the same format as the examples # below. # # Papers defined here: (none). # @localpapersdefs = ( ); # # Standard (Adobe) names. Missing names are a4small and lettersmall, because # I don't have their definition handy. # # Papers defined here: 11x17, a3, a4, b5, ledger, legal, letter, note. # @stdpapersdefs = ( [ 'letter', 'Letter', 'letter', 'lettertray', '8.5in', '11in', 0 ], [ 'a4', 'A4', 'a4', 'a4tray', '210mm', '297mm', 0 ], [ '11x17', '11x17', '11x17', '11x17tray', '11in', '17in', 0 ], [ 'a3', 'A3', 'a3', 'a3tray', '297mm', '420mm', 0 ], [ 'b5', 'B5', 'ab5', 'b5tray', '177mm', '250mm', 0 ], [ 'ledger', 'Ledger', 'ledger', 'ledgertray', '11in', '17in', 1 ], [ 'legal', 'Legal', 'legal', 'legaltray', '8.5in', '14in', 0 ], [ 'note', 'Note', 'note', 'notetray', '7.5in', '10in', 0 ] ); # # Names that are present in the standard dvips distribution. # # Papers defined here: tabloid (aka 11x17). # @dvipspapersdefs = ( [ 'tabloid', 'Tabloid', '11x17', '11x17tray', '11in', '17in', 0 ], ); # # Names that are present in the standard gs distribution. (Some names are # currently missing...) # # Papers defined here: a0, a1, a2, a5, a6, a7, a8, a9, a10, # b0, b1, b2, b3, b4. # @gspapersdefs = ( [ 'a0', 'A0', 'a0', 'a0tray', '840mm', '1188mm', 0 ], [ 'a1', 'A1', 'a1', 'a1tray', '594mm', '840mm', 0 ], [ 'a2', 'A2', 'a2', 'a2tray', '420mm', '594mm', 0 ], [ 'a5', 'A5', 'a5', 'a5tray', '148mm', '210mm', 0 ], [ 'a6', 'A6', 'a6', 'a6tray', '105mm', '148mm', 0 ], [ 'a7', 'A7', 'a7', 'a7tray', '74mm', '105mm', 0 ], [ 'a8', 'A8', 'a8', 'a8tray', '52.5mm', '74mm', 0 ], [ 'a9', 'A9', 'a9', 'a9tray', '37mm', '52.5mm', 0 ], [ 'a10', 'A10', 'a10', 'a10tray', '26.25mm', '37mm', 0 ], [ 'b0', 'B0', 'b0', 'b0tray', '2836bp', '4008bp', 0 ], [ 'b1', 'B1', 'b1', 'b1tray', '2004bp', '2836bp', 0 ], [ 'b2', 'B2', 'b2', 'b2tray', '1418bp', '2004bp', 0 ], [ 'b3', 'B3', 'b3', 'b3tray', '1002bp', '1418bp', 0 ], [ 'b4', 'B4', 'b4', 'b4tray', '709bp', '1002bp', 0 ], ); @extrapapersdefs = ( [ 'executive', 'Executive', 'executivepage', 'executivepagetray', '7.25in', '10.5in', 0 ], [ 'halfexecutive', 'HalfExecutive', 'halfexecutivepage', 'halfexecutivepagetray', '5.25in', '7.25in', 0 ] ); sub basename { local($fullname, $ext) = @_; local($basename) = $fullname; $basename =~ s,(.*/)?([^/]+),$2,; $ext && $basename =~ s,$ext$,,; $basename; } sub dumpsizes { local($legend, @sizes) = @_; print "$legend"; for $spec (@sizes) { local(@array) = @$spec; local($name) = @array; print $name, " "; } print "\n"; } sub usage { local($exitcode) = @_; local($myname) = &basename($0); if ($exitcode) { select STDERR; } print "usage: $myname [ --version ] [ -h, --help ] [ -s, --standard ] [ -n, --non-standard ] [ -d, --dvips ] [ -g, --gs ] [ -e, --extra ] [ -l, --local ] [ -a, --all ] [ -p, --paper papername ]\n"; if ($exitcode == 0) { print "\n"; print "options: --version\t\tprint version information\n"; print " -h, --help\t\tprint this help message\n"; print " -s, --standard\t\tdefine standard paper sizes\n"; print " -n, --non-standard\tdefine dvips' non-standard paper sizes\n"; print " -d, --dvips\t\tdefine all dvips paper sizes\n"; print " -g, --gs\t\tdefine gs' non-standard paper sizes\n"; print " -e, --extra\t\tdefine extra paper sizes\n"; print " -l, --local\t\tdefine local paper sizes\n"; print " -a, --all\t\tdefine all previous paper sizes\n"; print " -p, --paper papername\tspecify default paper size\n"; print "\npapers: "; &dumpsizes("--standard\t\t", @stdpapersdefs); print " "; &dumpsizes("--non-standard\t\t", @dvipspapersdefs); print " "; &dumpsizes("--gs\t\t\t", @gspapersdefs); print " "; &dumpsizes("--extra\t\t", @extrapapersdefs); print " "; &dumpsizes("--local\t\t", @localpapersdefs); } exit $exitcode; } sub pssize { local ($size) = @_; local $number = $size; $number =~ s/\D+$//; if ($size =~ /in$/) { $number *= 72; } elsif ($size =~ /cm$/) { $number *= 72 / 2.54; } elsif ($size =~ /mm$/) { $number *= 72 / 25.4; } return int($number + .4); } sub genpaperdefs { local ($papername, $dscname, $psname, $trayname, $width, $height, $orient) = @$_; local ($pswidth, $psheight) = (&pssize($width), &pssize($height)); local ($exch) = ($orient == 1 ? " exch" : ""); if ($width =~ /^\d$/) { $width = "${width}bp"; } if ($height =~ /^\d$/) { $height = "${height}bp"; } print <\n"; exit(0); } else { @allpapersdefs = (@stdpapersdefs, @dvipspapersdefs, @gspapersdefs, @extrapapersdefs, @localpapersdefs); if ($opt_all) { @paperdefs = @allpapersdefs; } else { @papersdefs = (); if ($opt_dvips) { $opt_standard = 1; $opt_non_standard = 1; } if ($opt_standard && !$opt_dvips) { @papersdefs = (@papersdefs, @stdpapersdefs); } if ($opt_non_standard && !$opt_dvips) { @papersdefs = (@papersdefs, @dvipspapersdefs); } if ($opt_gs) { @papersdefs = (@papersdefs, @gsspapersdefs); } if ($opt_extra) { @papersdefs = (@papersdefs, @extrapapersdefs); } if ($opt_local) { @papersdefs = (@papersdefs, @localpapersdefs); } if ($#papersdefs == -1) { @papersdefs = (@stdpapersdefs, @dvipspapersdefs); } } } # Find default paper def in *all* definitions and generate config if ($opt_paper) { for (@allpapersdefs) { local(@paper) = @$_; local($papername) = @paper; if ($papername eq $opt_paper) { genpaperdefs @paper; last; } } } # Generate config for all selected paper sizes but the default one for (@defaultpaper, @papersdefs) { local($papername) = @$_; if ($papername eq $opt_paper) { next; } genpaperdefs $_; } dvipsk_TexLive-2009-stripped/contrib/configs/config.lj2p0000644000175000017500000000322611372532227023227 0ustar uwabamiuwabami* original config.ps -- default definitions for dvips output. * * (If you change or delete `original' on the previous line, dvips won't * install its config.ps over this file.) * * Configuration file for Karl & Kathy's LaserJet IIP. * We have 2 2MB expansion cards. * m 2750000 * Send output by default to our printer. * o |lpr * Default resolution. * D 300 * Reverse the pages, since we usually print on the face-up tray. * r * Mode is for Canon engine. * M CanonCX * Also look for this list of resolutions. * R 300 * The printer offsets the output by this much. * O 0pt,-6pt * Paper size information. First definition is the default. * * If your default is a4 uncomment the following definition * and comment out the letterSize definition. * * There is some redundancy in the following comments; that is to * get things to work both on the NeXT and on other printers. * *@ a4size 210mm 297mm *@+ %%PaperSize: a4 @ letterSize 8.5in 11in @ letter 8.5in 11in @+ %%PaperSize: Letter @+ %%BeginPaperSize: Letter @+ letter @+ %%EndPaperSize @ legal 8.5in 14in @+ ! %%DocumentPaperSizes: Legal @+ %%PaperSize: Legal @+ %%BeginPaperSize: Legal @+ legal @+ %%EndPaperSize @ ledger 17in 11in @+ ! %%DocumentPaperSizes: Ledger @+ %%PaperSize: Ledger @+ %%BeginPaperSize: Ledger @+ ledger @+ %%EndPaperSize @ tabloid 11in 17in @+ ! %%DocumentPaperSizes: Tabloid @+ %%PaperSize: Tabloid @+ %%BeginPaperSize: Tabloid @+ 11x17 @+ %%EndPaperSize @ a4 210mm 297mm @+ ! %%DocumentPaperSizes: a4 @+ %%PaperSize: a4 @+ %%BeginPaperSize: a4 @+ a4 @+ %%EndPaperSize @ a3 297mm 420mm @+ ! %%DocumentPaperSizes: a3 @+ %%PaperSize: a3 @+ %%BeginPaperSize: a3 @+ a3 @+ %%EndPaperSize dvipsk_TexLive-2009-stripped/contrib/configs/papersize.simple0000644000175000017500000000150711372532227024406 0ustar uwabamiuwabami* Paper size information. First definition is the default. * * If your default is a4 uncomment the following definition * and comment out the letterSize definition. * *@ A4size 210mm 297mm *@+ %%PaperSize: A4 @ letterSize 8.5in 11in @ letter 8.5in 11in @+ %%BeginPaperSize: Letter @+ letter @+ %%EndPaperSize @ legal 8.5in 14in @+ ! %%DocumentPaperSizes: Legal @+ %%BeginPaperSize: Legal @+ legal @+ %%EndPaperSize @ ledger 17in 11in @+ ! %%DocumentPaperSizes: Ledger @+ %%BeginPaperSize: Ledger @+ ledger @+ %%EndPaperSize @ tabloid 11in 17in @+ ! %%DocumentPaperSizes: Tabloid @+ %%BeginPaperSize: Tabloid @+ 11x17 @+ %%EndPaperSize @ A4 210mm 297mm @+ ! %%DocumentPaperSizes: A4 @+ %%BeginPaperSize: A4 @+ a4 @+ %%EndPaperSize @ A3 297mm 420mm @+ ! %%DocumentPaperSizes: A3 @+ %%BeginPaperSize: A3 @+ a3 @+ %%EndPaperSize dvipsk_TexLive-2009-stripped/contrib/configs/showpage.ps0000644000175000017500000000001111372532227023337 0ustar uwabamiuwabamishowpage dvipsk_TexLive-2009-stripped/contrib/config.proto0000644000175000017500000000273311372532227022075 0ustar uwabamiuwabami% Prototype Dvips configuration file. % How to print, maybe with lp instead lpr, etc. o |lpr % Default resolution of this device, in dots per inch. D 600 % Metafont mode. (This is completely different from the -M command-line % option, which controls whether MakeTeXPK is invoked.) Get % @url{ftp://ftp.tug.org/tex/modes.mf} for a list of mode names. This mode % and the D number above must agree, or MakeTeXPK will get confused. M ljfour % Memory available. Download the three-line PostScript file: % %! Hey, we're PostScript % /Times-Roman findfont 30 scalefont setfont 144 432 moveto % vmstatus exch sub 40 string cvs show pop showpage % to determine this number. (It will be the only thing printed.) m 3500000 % Correct printer offset. You can use testpage.tex from the LaTeX % distribution to find these numbers. Print testpage.dvi more than once. O 0pt,0pt % Partially download Type 1 fonts by default. Only reason not to do % this is if you encounter bugs. (Please report them to % @email{tex-k@@mail.tug.org} if you do.) j % Also look for fonts at these resolutions. R 300 600 % With a high resolution and a RISC cpu, better to compress the bitmaps. Z % Uncomment these if you have and want to use PostScript versions of the % fonts. %p +cmfonts.map %p +lafonts.map %p +cyrfonts.map %p +eufonts.map % You will also want definitions for alternative paper sizes -- A4, % legal, and such. Examples in @file{contrib/papersize.level2} and % @file{contrib/papersize.simple}. dvipsk_TexLive-2009-stripped/contrib/colorsep.lpro0000644000175000017500000001022211372532227022257 0ustar uwabamiuwabami%! % Colour separation. % Ask dvips to do 4 pages. In bop-hook, cycle % round CMYK color spaces. % % Sebastian Rahtz 30.9.93 % checked 7.1.94 % from Green Book, and Kunkel Graphic Design with PostScript % (Green Book Listing 9-5, on page 153.) % /seppages 0 def userdict begin /Min {% 3 items on stack 2 copy lt { pop }{ exch pop } ifelse 2 copy lt { pop }{ exch pop } ifelse } def /SetGray { 1 exch sub systemdict begin adjustdot setgray end } def /sethsbcolor {systemdict begin sethsbcolor currentrgbcolor end userdict begin setrgbcolor end}def /ToCMYK % Red book p 305 { % subtract each colour from 1 3 { 1 exch sub 3 1 roll } repeat % define percent of black undercolor % find minimum (k) 3 copy Min % remove undercolor blackUCR sub dup 0 lt {pop 0} if /percent_UCR exch def % % subtract that from each colour % 3 { percent_UCR sub 3 1 roll } repeat % work out black itself percent_UCR 1.25 mul % 1 exch sub % stack should now have C M Y K } def % % crop marks % /cX 18 def /CM{gsave TR 0 cX neg moveto 0 cX lineto stroke cX neg 0 moveto cX 0 lineto stroke grestore}def % /bop-hook{cX dup TR % % which page are we producing % seppages 1 add /seppages exch def seppages 5 eq { /seppages 1 def } if seppages 1 eq { /ColourName (CYAN) def CYAN setupcolor /WhichColour 3 def } if seppages 2 eq { /ColourName (MAGENTA) def MAGENTA setupcolor /WhichColour 2 def } if seppages 3 eq { /ColourName (YELLOW) def YELLOW setupcolor /WhichColour 1 def } if seppages 4 eq { /ColourName (BLACK) def BLACK setupcolor /WhichColour 0 def } if % % crop marks % gsave .3 setlinewidth 3 -7 moveto /Helvetica findfont 6 scalefont setfont ColourName show 0 0 CM vsize cX 2 mul sub dup hsize cX 2 mul sub dup isls{4 2 roll}if 0 CM exch CM 0 exch CM grestore 0 cX -2 mul TR isls {cX -2 mul 0 TR}if } def end % /separations 48 dict def separations begin /cmykprocs [ %def % cyan { pop pop pop SetGray } % magenta { pop pop exch pop SetGray } % yellow { pop 3 1 roll pop pop SetGray } % black { 4 1 roll pop pop pop SetGray } ] def /rgbprocs [ %def % cyan { ToCMYK pop pop pop SetGray } % magenta { ToCMYK pop pop exch pop SetGray } % yellow { ToCMYK pop 3 1 roll pop pop SetGray } % black { ToCMYK 4 1 roll pop pop pop SetGray } ] def /testprocs [ %def % cyan { ToCMYK pop pop pop } % magenta { ToCMYK pop pop exch pop } % yellow { ToCMYK pop 3 1 roll pop pop } % black { ToCMYK 4 1 roll pop pop pop } ] def /screenangles [ %def 105 % cyan 75 % magenta 0 % yellow 45 % black ] def end % separations % setupcolortakes 0, 1, 2, or 3 as its argument, % for cyan, magenta, yellow, and black. /CYAN 0 def /MAGENTA 1 def /YELLOW 2 def /BLACK 3 def /setupcolor{ %def userdict begin dup separations /cmykprocs get exch get /setcmykcolor exch def dup separations /rgbprocs get exch get /setrgbcolor exch def dup separations /testprocs get exch get /testrgbcolor exch def separations /screenangles get exch get currentscreen exch pop 3 -1 roll exch setscreen /setscreen { pop pop pop } def % % redefine setgray so that it only shows on the black separation % /setgray { WhichColour 0 eq {systemdict begin adjustdot setgray end} {pop systemdict begin 1 setgray end} ifelse}def end } bind def % % from Kunkel % /adjustdot { dup 0 eq { } { dup 1 exch sub .1 mul add} ifelse } def % % redefine existing operators % % Percent of undercolor removal /magentaUCR .3 def /yellowUCR .07 def /blackUCR .4 def % % Correct yellow and magenta /correctMY {rgb2cym 1 index yellowUCR mul sub 3 1 roll 1 index magentaUCR mul sub 3 1 roll 3 1 roll rgb2cym}def % %(bluely green ) = %CYAN setupcolor %.1 .4 .5 testrgbcolor = %MAGENTA setupcolor %.1 .4 .5 testrgbcolor = %YELLOW setupcolor %.1 .4 .5 testrgbcolor = %BLACK setupcolor %.1 .4 .5 testrgbcolor = %quit dvipsk_TexLive-2009-stripped/resident.c0000644000175000017500000010353011372532227020061 0ustar uwabamiuwabami/* For use with emTeX set FONTPATH to "TEXTFM" */ #ifndef FONTPATH #define FONTPATH "TEXFONTS" #endif /* * This code reads in and handles the defaults for the program from the * file config.sw. This entire file is a bit kludgy, sorry. */ #include "dvips.h" /* The copyright notice in that file is included too! */ #include "paths.h" #ifdef KPATHSEA #include #include #include #include #include #include #endif /* * This is the structure definition for resident fonts. We use * a small and simple hash table to handle these. We don't need * a big hash table. */ struct resfont *reshash[RESHASHPRIME] ; /* * These are the external routines we use. */ #include "protos.h" /* * These are the external variables we use. */ extern char *realnameoffile ; extern int prettycolumn ; extern int dvips_debug_flag ; #ifdef DEBUG extern integer debug_flag; #endif /* DEBUG */ extern integer pagecopies ; extern int overridemag ; extern long bytesleft ; extern quarterword *raster ; extern FILE *pkfile ; extern char *oname ; extern integer swmem, fontmem ; #ifndef KPATHSEA extern char *tfmpath, *pictpath ; extern char *pkpath ; extern char *vfpath ; extern char *figpath ; extern char *configpath ; extern char *headerpath ; #ifdef SEARCH_SUBDIRECTORIES extern char *fontsubdirpath ; #endif #endif extern Boolean noenv ; extern Boolean downloadpspk ; #ifdef FONTLIB extern char *flipath, *fliname ; #endif extern char *paperfmt ; extern char *nextstring ; extern char *maxstring ; extern char *warningmsg ; extern Boolean disablecomments ; extern Boolean compressed ; extern Boolean partialdownload ; extern int quiet ; extern int filter ; extern Boolean reverse ; extern Boolean usesPSfonts ; extern Boolean nosmallchars ; extern Boolean removecomments ; extern Boolean safetyenclose ; extern Boolean dopprescan ; extern integer maxsecsize ; extern double mag ; extern Boolean sepfiles ; extern int actualdpi ; extern int vactualdpi ; extern int maxdrift ; extern int vmaxdrift ; extern char *printer ; extern char *mfmode, *mflandmode ; extern int mfmode_option; extern int secure_option; extern int oname_option; extern Boolean sendcontrolD ; #ifdef SHIFTLOWCHARS extern Boolean shiftlowchars ; #endif extern unsigned lastresortsizes[] ; extern integer hoff, voff ; extern struct papsiz *papsizes ; extern int secure ; extern integer hpapersize, vpapersize ; extern int landscape ; /* * To maintain a list of document fonts, we use the following * pointer. */ struct header_list *ps_fonts_used ; /* * Our hash routine. */ int hash(char *s) { int h = 12 ; while (*s != 0) h = (h + h + *s++) % RESHASHPRIME ; return(h) ; } /* * Reverse the hash chains. */ void revpslists(void) { register int i ; for (i=0; inext) if (p->sent == 1) p->sent = 0 ; } /* * The routine that looks up a font name. */ struct resfont * lookup(char *name) { struct resfont *p ; for (p=reshash[hash(name)]; p!=NULL; p=p->next) if (strcmp(p->Keyname, name)==0) return(p) ; return(NULL) ; } struct resfont * findPSname(char *name) { register int i ; register struct resfont *p ; for (i=0; inext) { if (strcmp(p->PSname, name)==0) return p; } return NULL; } /* * This routine adds an entry. */ void add_entry(char *TeXname, char *PSname, char *Fontfile, char *Vectfile, char *specinfo, char *downloadinfo) { struct resfont *p ; int h ; if (PSname == NULL) PSname = TeXname ; p = (struct resfont *)mymalloc((integer)sizeof(struct resfont)) ; p->Keyname = TeXname ; p->PSname = PSname ; p->Fontfile = Fontfile; p->Vectfile = Vectfile; p->TeXname = TeXname ; p->specialinstructions = specinfo ; if (downloadinfo && *downloadinfo) p->downloadheader = downloadinfo ; else p->downloadheader = 0 ; h = hash(TeXname) ; p->next = reshash[h] ; p->sent = 0 ; reshash[h] = p ; } /* * Now our residentfont routine. Returns the number of characters in * this font, based on the TFM file. */ extern char *infont ; int residentfont(register fontdesctype *curfnt) { int i ; struct resfont *p ; /* * First we determine if we can find this font in the resident list. */ if (*curfnt->area) return 0 ; /* resident fonts never have a nonstandard font area */ if ((p=lookup(curfnt->name))==NULL) return 0 ; /* * This is not yet the correct way to do things, but it is useful as it * is so we leave it in. The problem: if resident Times-Roman is * re-encoded, then it will be downloaded as bitmaps; this is not * right. The solution will be to introduce two types of `<' * directives, one that downloads fonts and one that downloads * short headers that are innocuous. */ if (p->Fontfile && downloadpspk) { #ifdef DEBUG if (dd(D_FONTS)) (void)fprintf(stderr,"Using PK font %s for <%s>.\n", curfnt->name, p->PSname) ; #endif /* DEBUG */ return 0 ; } /* * We clear out some pointers: */ #ifdef DEBUG if (dd(D_FONTS)) (void)fprintf(stderr,"Font %s <%s> is resident.\n", curfnt->name, p->PSname) ; #endif /* DEBUG */ curfnt->resfont = p ; curfnt->name = p->TeXname ; for (i=0; i<256; i++) { curfnt->chardesc[i].TFMwidth = 0 ; curfnt->chardesc[i].packptr = NULL ; curfnt->chardesc[i].pixelwidth = 0 ; curfnt->chardesc[i].flags = 0 ; curfnt->chardesc[i].flags2 = 0 ; } add_name(p->PSname, &ps_fonts_used) ; /* * We include the font here. But we only should need to include the * font if we have a stupid spooler; smart spoolers should be able * to supply it automatically. */ if (p->downloadheader) { char *cp = p->downloadheader ; char *q ; infont = p->PSname ; while (1) { q = cp ; while (*cp && *cp != ' ') cp++ ; if (*cp) { *cp = 0 ; add_header(q) ; *cp++ = ' ' ; } else { /* if (strstr(q,".pfa")||strstr(q,".pfb")|| strstr(q,".PFA")||strstr(q,".PFB")) break ; else */ { add_header(q) ; break; } } infont = 0 ; } infont = 0 ; } i = tfmload(curfnt) ; if (i < 0) i = 1 ; usesPSfonts = 1 ; return(i) ; } #define INLINE_SIZE (2000) static char was_inline[INLINE_SIZE] ; static unsigned c_lineno; void bad_config(char *err) { fprintf (stderr, "%s:%d:", realnameoffile, c_lineno); error (err); fprintf(stderr, " (%s)\n", was_inline) ; } #ifndef KPATHSEA /* * Get environment variables! These override entries in ./config.h. * We substitute everything of the form ::, ^: or :$ with default, * so a user can easily build on to the existing paths. */ static char * getpath(char *who, char *what) { if (who) { register char *pp, *qq ; int lastsep = 1 ; for (pp=nextstring, qq=who; *qq;) { if (*qq == PATHSEP) { if (lastsep) { strcpy(pp, what) ; pp = pp + strlen(pp) ; } lastsep = 1 ; } else lastsep = 0 ; *pp++ = *qq++ ; } if (lastsep) { strcpy(pp, what) ; pp = pp + strlen(pp) ; } *pp = 0 ; qq = nextstring ; nextstring = pp + 1 ; return qq ; } else return what ; } #endif /* * We use this function so we can support strings delimited by * double quotes with spaces in them. We also accept strings * with spaces in them, but kill off any spaces at the end. */ char * configstring(char *s, int nullok) { char tstr[INLINE_SIZE] ; char *p = tstr ; while (*s && *s <= ' ') s++ ; if (*s == '"') { s++ ; while (*s != 10 && *s != 0 && *s != '"' && p < tstr+290) *p++ = *s++ ; } else { while (*s && p < tstr+290) *p++ = *s++ ; while (*(p-1) <= ' ' && p > tstr) p-- ; } *p = 0 ; if (p == tstr && ! nullok) bad_config("bad string") ; return newstring(tstr) ; } #ifdef KPATHSEA /* We use this in `getdefaults' to modify the kpathsea structure for the paths we read. See kpathsea/tex-file.[ch]. */ #define SET_CLIENT_PATH(filefmt, val) \ kpse_format_info[filefmt].client_path = xstrdup (val) #endif /* * Now we have the getdefaults routine. */ char *psmapfile = PSMAPFILE ; Boolean getdefaults(char *s) { FILE *deffile ; char PSname[INLINE_SIZE] ; register char *p ; integer hsiz, vsiz ; #ifndef KPATHSEA char *d = configpath ; int i, j ; #endif int canaddtopaper = 0 ; if (printer == NULL) { if (s) { strcpy(PSname, s) ; } else { #ifdef KPATHSEA char *dvipsrc = kpse_var_value ("DVIPSRC"); #ifdef WIN32 if (dvipsrc && *dvipsrc) { /* $DVIPSRC was set by user */ strcpy(PSname, dvipsrc); } else /* No env var, looking into some kind of standard path. */ if (SearchPath(".;%HOME%;c:\\", ".dvipsrc", NULL, INLINE_SIZE, PSname, &dvipsrc) == 0) { /* search failed, we must put something into PSname. */ dvipsrc = kpse_var_expand(DVIPSRC); if (dvipsrc) { strcpy(PSname, dvipsrc); free(dvipsrc); } /* Else SearchPath has filled PSname with something */ } /* remove any redundant path separators. Many configurations can show up: c:\/.dvipsrc and so on ... */ { char *p, *q; for (p = q = PSname; *p && (p - PSname < INLINE_SIZE) ; p++, q++) { if (IS_DIR_SEP(*p)) { *q = DIR_SEP; p++; q++; while (*p && IS_DIR_SEP(*p)) p++; } *q = *p; } *q = '\0'; } #else if(!dvipsrc) dvipsrc = kpse_var_expand(DVIPSRC) ; strcpy(PSname, dvipsrc ? dvipsrc : "~/.dvipsrc") ; if(dvipsrc) free(dvipsrc) ; #endif /* WIN32 */ #else /* ! KPATHSEA */ #ifndef VMCMS /* IBM: VM/CMS - don't have home directory on VMCMS */ #ifndef MVSXA d = "~" ; #endif #endif /* IBM: VM/CMS */ strcpy(PSname, DVIPSRC) ; #endif /* KPATHSEA */ } } else { #if defined(MSDOS) || defined(OS2) strcpy(PSname, printer) ; strcat(PSname, ".cfg") ; #else strcpy(PSname, "config.") ; strcat(PSname, printer) ; #endif } #ifdef KPATHSEA if ((deffile=search(configpath,PSname,READ))!=NULL) { #else if ((deffile=search(d,PSname,READ))!=NULL) { #endif if (dvips_debug_flag && !quiet) { if (strlen(realnameoffile) + prettycolumn > STDOUTSIZE) { fprintf(stderr, "\n") ; prettycolumn = 0 ; } (void)fprintf(stderr, "{%s}", realnameoffile); prettycolumn += strlen(realnameoffile) + 2 ; } #ifdef DEBUG if (dd (D_CONFIG)) { fprintf (stderr, "Reading dvips config file `%s':\n", realnameoffile); } #endif c_lineno = 0; while (fgets(was_inline, INLINE_SIZE, deffile)!=NULL) { c_lineno++; #ifdef DEBUG if (dd (D_CONFIG)) { fprintf (stderr, "%s:%d:%s", realnameoffile, c_lineno, was_inline); } #endif /* * We need to get rid of the newline. */ for (p=was_inline; *p; p++) ; while (p > was_inline && (*(p-1) == '\n' || *(p-1) == '\r')) { *--p = '\0' ; } if (was_inline[0] != '@') canaddtopaper = 0 ; switch (was_inline[0]) { /* * Handling paper size information: * * If line is empty, then we clear out the paper size information * we have so far. * * If it is `@+', then we add to the current paper size info. * * If it is `name hsize vsize', then we start a new definition. */ case '@' : p = was_inline + 1 ; while (*p && *p <= ' ') p++ ; if (*p == 0) { papsizes = 0 ; /* throw away memory */ } else if (*p == '+') { if (canaddtopaper == 0) error( " @+ in config files must immediately following a @ lines") ; else { *(nextstring-1) = '\n' ;/* IBM: VM/CMS - changed 10 to "\n" */ p++ ; while (*p && *p == ' ') p++ ; strcpy(nextstring, p) ; nextstring += strlen(p) + 1 ; } } else { struct papsiz *ps ; ps = (struct papsiz *)mymalloc((integer)sizeof(struct papsiz)) ; ps->next = papsizes ; papsizes = ps ; ps->name = p ; while (*p && *p > ' ') p++ ; *p++ = 0 ; ps->name = newstring(ps->name) ; while (*p && *p <= ' ') p++ ; handlepapersize(p, &hsiz, &vsiz) ; ps->xsize = hsiz ; ps->ysize = vsiz ; ps->specdat = nextstring++ ; *(ps->specdat) = 0 ; canaddtopaper = 1 ; } break ; case 'a' : dopprescan = (was_inline[1] != '0') ; break ; case 'b': #ifdef SHORTINT if (sscanf(was_inline+1, "%ld", &pagecopies) != 1) bad_config("missing pagecopies to b") ; #else if (sscanf(was_inline+1, "%d", &pagecopies) != 1) bad_config("missing pagecopies to b") ; #endif if (pagecopies < 1 || pagecopies > 1000) bad_config("pagecopies not between 1 and 1000") ; break ; case 'm' : #ifdef SHORTINT if (sscanf(was_inline+1, "%ld", &swmem) != 1) bad_config("missing swmem to m") ; #else /* ~SHORTINT */ if (sscanf(was_inline+1, "%d", &swmem) != 1) bad_config("missing swmem to m") ; #endif /* ~SHORTINT */ swmem += fontmem ; /* grab headers we've seen already */ break ; case 'M' : /* If the user specified a -mode, don't replace it. */ if (!mfmode_option) mfmode = configstring(was_inline+1, 0) ; mflandmode = 0 ; { char *pp ; for (pp=mfmode; pp && *pp>' '; pp++) ; if (pp && *pp == ' ') { *pp++ = 0 ; while (*pp && *pp <= ' ') pp++ ; if (*pp) mflandmode = pp ; } } break ; case 'o' : if (!oname_option) { struct stat st_buf; oname = configstring(was_inline+1, 1) ; if ((*oname && oname[strlen(oname)-1] == ':') || (stat(oname, &st_buf) == 0 && S_ISCHR(st_buf.st_mode))) { sendcontrolD = 1 ; /* if we send to a device, *we* are spooler */ #if defined(MSDOS) || defined(OS2) oname[strlen(oname)-1] = 0 ; #endif } } break ; case 'F' : sendcontrolD = (was_inline[1] != '0') ; break ; case 'O' : p = was_inline + 1 ; handlepapersize(p, &hoff, &voff) ; break ; #ifdef FONTLIB case 'L' : { char tempname[INLINE_SIZE] ; extern char *fliparse() ; if (sscanf(was_inline+1, "%s", PSname) != 1) bad_config("missing arg to L") ; else { flipath = getpath(fliparse(PSname,tempname), flipath); fliname = newstring(tempname) ; } } break ; #endif case 'T' : if (sscanf(was_inline+1, "%s", PSname) != 1) bad_config("missing arg to T") ; else #ifdef KPATHSEA SET_CLIENT_PATH (kpse_tfm_format, PSname); #else tfmpath = getpath(PSname, tfmpath) ; #endif break ; case 'P' : if (sscanf(was_inline+1, "%s", PSname) != 1) bad_config("missing arg to P") ; else #ifdef KPATHSEA SET_CLIENT_PATH (kpse_pk_format, PSname); #else pkpath = getpath(PSname, pkpath) ; #endif break ; case 'p' : p = was_inline + 1 ; while (*p && *p <= ' ') p++ ; if (*p == '+') { if (sscanf(p+1, "%s", PSname) != 1) bad_config("missing arg to p") ; getpsinfo(PSname) ; } else { psmapfile = configstring(was_inline+1, 0) ; } break ; case 'v' : case 'V' : if (sscanf(was_inline+1, "%s", PSname) != 1) bad_config("missing arg to V") ; else #ifdef KPATHSEA SET_CLIENT_PATH (kpse_vf_format, PSname); #else vfpath = getpath(PSname, vfpath) ; #endif break ; case 'S' : if (sscanf(was_inline+1, "%s", PSname) != 1) bad_config("missing arg to S") ; else #ifdef KPATHSEA SET_CLIENT_PATH (kpse_pict_format, PSname); #else figpath = getpath(PSname, figpath) ; #endif break ; case 's': safetyenclose = 1 ; break ; case 'H' : if (sscanf(was_inline+1, "%s", PSname) != 1) bad_config("missing arg to H") ; else #ifdef KPATHSEA SET_CLIENT_PATH (headerpath, PSname); #else headerpath = getpath(PSname, headerpath) ; #endif break ; case '%': case ' ' : case '*' : case '#' : case ';' : case '=' : case 0 : case '\n' : break ; case 'r' : reverse = (was_inline[1] != '0') ; break ; /* * This case is for last resort font scaling; I hate this, but enough * people have in no uncertain terms demanded it that I'll go ahead and * add it. * * This line must have numbers on it, resolutions, to search for the * font as a last resort, and then the font will be scaled. These * resolutions should be in increasing order. * * For most machines, just `300' is sufficient here; on the NeXT, * `300 400' may be more appropriate. */ case 'R': #ifndef KPATHSEA i = 0 ; p = was_inline + 1 ; while (*p) { while (*p && *p <= ' ') p++ ; if ('0' <= *p && *p <= '9') { j = 0 ; while ('0' <= *p && *p <= '9') j = 10 * j + (*p++ - '0') ; if (i > 0) if (lastresortsizes[i-1] > j) { bad_config("last resort sizes (R) must be sorted") ; } lastresortsizes[i++] = j ; } else { if (*p == 0) break ; bad_config("only numbers expected on `R' line") ; } } lastresortsizes[i] = 32000 ; #else /* KPATHSEA */ for (p = was_inline + 1; *p; p++) { if (isblank (*p)) { *p = ':'; } } kpse_fallback_resolutions_string = xstrdup (was_inline + 1); #endif break ; case 'D' : if (sscanf(was_inline+1, "%d", &actualdpi) != 1) bad_config("missing arg to D") ; if (actualdpi < 10 || actualdpi > 10000) bad_config("dpi must be between 10 and 10000") ; vactualdpi = actualdpi; break ; /* * Execute a command. This can be dangerous, but can also be very useful. */ case 'E' : #ifdef SECURE error("dvips was compiled with SECURE, which disables E in config") ; #else if (secure) { error("E in config is disabled. To enable E, set z0 before E") ; break ; } (void)system(was_inline+1) ; #endif break ; case 'K': removecomments = (was_inline[1] != '0') ; break ; case 'U': nosmallchars = (was_inline[1] != '0') ; break ; case 'W': for (p=was_inline+1; *p && *p <= ' '; p++) ; if (*p) warningmsg = newstring(p) ; else warningmsg = 0 ; break ; case 'X' : if (sscanf(was_inline+1, "%d", &actualdpi) != 1) bad_config("missing numeric arg to X") ; if (actualdpi < 10 || actualdpi > 10000) bad_config("X arg must be between 10 and 10000") ; break ; case 'Y' : if (sscanf(was_inline+1, "%d", &vactualdpi) != 1) bad_config("missing numeric arg to Y") ; if (vactualdpi < 10 || vactualdpi > 10000) bad_config("Y arg must be between 10 and 10000") ; break ; case 'x': case 'y': if (sscanf(was_inline+1, "%lg", &mag) != 1) bad_config("missing arg to x or y") ; overridemag = (was_inline[0] == 'x') ? 1 : -1 ; break ; case 'e' : if (sscanf(was_inline+1, "%d", &maxdrift) != 1) bad_config("missing arg to e") ; if (maxdrift < 0) bad_config("bad argument to e") ; vmaxdrift = maxdrift; break ; case 'z' : if (secure_option && secure && was_inline[1] == '0') { fprintf (stderr, "warning: %s: z0 directive ignored since -R1 given\n", realnameoffile); /* Never happen */ } else { if (was_inline[1] == '0') { secure = 0 ; } else if (was_inline[1] == '2') { secure = 2 ; } else { secure = 1 ; } } break ; case 'q' : case 'Q' : quiet = (was_inline[1] != '0') ; break ; case 'f' : filter = (was_inline[1] != '0') ; if (filter) oname = ""; /* noenv has already been tested, so no point in setting. */ sendcontrolD = 0; break ; #ifdef SHIFTLOWCHARS case 'G': shiftlowchars = (was_inline[1] != '0') ; break ; #endif case 'h' : if (sscanf(was_inline+1, "%s", PSname) != 1) bad_config("missing arg to h") ; else (void)add_header(PSname) ; break ; case 'i' : if (sscanf(was_inline+1, "%d", &maxsecsize) != 1) maxsecsize = 0 ; sepfiles = 1 ; break ; case 'I': noenv = (was_inline[1] != '0') ; break ; case 'N' : disablecomments = (was_inline[1] != '0') ; break ; case 'Z' : compressed = (was_inline[1] != '0') ; break ; case 'j': partialdownload = (was_inline[1] != '0') ; break ; case 't' : if (sscanf(was_inline+1, "%s", PSname) != 1) bad_config("missing arg to t") ; else { if (strcmp(PSname, "landscape") == 0) { if (hpapersize || vpapersize) error( "both landscape and papersize specified; ignoring landscape") ; else landscape = 1 ; } else paperfmt = newstring(PSname) ; } break ; default: bad_config("strange line") ; } } (void)fclose(deffile) ; } else { if (printer) { char msg[1000]; sprintf (msg, "warning: no config file for `%s'", printer); error(msg); return 0; } } return 1; } /* * If a character pointer is passed in, use that name; else, use the * default (possibly set) name, psfonts.map. */ void getpsinfo(char *name) { FILE *deffile ; register char *p ; char *specinfo, *downloadinfo ; char downbuf[500] ; char specbuf[500] ; int slen ; if (name == 0) name = psmapfile ; if ((deffile=search(mappath, name, READ))!=NULL) { if (dvips_debug_flag && !quiet) { if (strlen(realnameoffile) + prettycolumn > STDOUTSIZE) { fprintf(stderr, "\n") ; prettycolumn = 0 ; } (void)fprintf(stderr, "{%s}", realnameoffile); prettycolumn += strlen(realnameoffile) + 2 ; } while (fgets(was_inline, INLINE_SIZE, deffile)!=NULL) { p = was_inline ; if (*p > ' ' && *p != '*' && *p != '#' && *p != ';' && *p != '%') { char *TeXname = NULL ; char *PSname = NULL ; char *Fontfile = NULL; char *Vectfile = NULL; char *hdr_name = NULL; boolean nopartial_p = false; boolean encoding_p = false; specinfo = NULL ; downloadinfo = NULL ; downbuf[0] = 0 ; specbuf[0] = 0 ; while (*p) { encoding_p = false ; while (*p && *p <= ' ') p++ ; if (*p) { if (*p == '"') { /* PostScript instructions? */ if (specinfo) { strcat(specbuf, specinfo) ; strcat(specbuf, " ") ; } specinfo = p + 1 ; } else if (*p == '<') { /* Header to download? */ /* If had previous downloadinfo, save it. */ if (downloadinfo) { strcat(downbuf, downloadinfo) ; strcat(downbuf, " ") ; downloadinfo = NULL; } if (p[1] == '<') { /* << means always full download */ p++; nopartial_p = true; } else if (p[1] == '[') { /* <[ means an encoding */ p++; encoding_p = true; } p++ ; /* skip whitespace after < */ while (*p && *p <= ' ') p++; /* save start of header name */ hdr_name = p ; } else if (TeXname) /* second regular word on line? */ PSname = p ; else /* first regular word? */ TeXname = p ; if (*p == '"') { p++ ; /* find end of "..." word */ while (*p != '"' && *p) p++ ; } else while (*p > ' ') /* find end of anything else */ p++ ; if (*p) *p++ = 0 ; /* If we had a header we were downloading, figure out what to do; couldn't do this above since we want to check the suffix. */ if (hdr_name) { char *suffix = find_suffix (hdr_name); if (encoding_p || STREQ (suffix, "enc")) { /* (SPQR) if it is a reencoding, pass on to FontPart, and download as usual */ Vectfile = downloadinfo = hdr_name; } else if (nopartial_p) { downloadinfo = hdr_name ; } else if (FILESTRCASEEQ (suffix, "pfa") || FILESTRCASEEQ (suffix, "pfb") || STREQ (suffix, "PFA") || STREQ (suffix, "PFB")) { Fontfile = hdr_name; } else { downloadinfo = hdr_name; } } } } if (specinfo) strcat(specbuf, specinfo) ; if (downloadinfo) strcat(downbuf, downloadinfo) ; slen = strlen(downbuf) - 1; if (slen > 0 && downbuf[slen] == ' ') { downbuf[slen] = 0; } if (TeXname) { TeXname = newstring(TeXname) ; PSname = newstring(PSname) ; Fontfile = newstring(Fontfile); Vectfile = newstring(Vectfile); specinfo = newstring(specbuf) ; downloadinfo = newstring(downbuf) ; add_entry(TeXname, PSname, Fontfile, Vectfile, specinfo, downloadinfo) ; } } } (void)fclose(deffile) ; } checkstrings() ; } #ifndef KPATHSEA /* * Get environment variables! These override entries in ./config.h. * We substitute everything of the form ::, ^: or :$ with default, * so a user can easily build on to the existing paths. */ static char * getenvup(char *who, char *what) { return getpath(getenv(who), what) ; } #endif #if !defined(KPATHSEA) && defined(SEARCH_SUBDIRECTORIES) static char *concat3(); #endif void checkenv(int which) { #ifndef KPATHSEA if (which) { tfmpath = getenvup(FONTPATH, tfmpath) ; vfpath = getenvup("VFFONTS", vfpath) ; pictpath = getenvup("TEXPICTS", pictpath) ; figpath = getenvup("TEXINPUTS", figpath) ; headerpath = getenvup("DVIPSHEADERS", headerpath) ; if (getenv("TEXPKS")) pkpath = getenvup("TEXPKS", pkpath) ; else if (getenv("TEXPACKED")) pkpath = getenvup("TEXPACKED", pkpath) ; else if (getenv("PKFONTS")) pkpath = getenvup("PKFONTS", pkpath) ; #ifdef SEARCH_SUBDIRECTORIES else if (getenv(FONTPATH)) pkpath = getenvup(FONTPATH, pkpath) ; if (getenv ("TEXFONTS_SUBDIR")) fontsubdirpath = getenvup ("TEXFONTS_SUBDIR", fontsubdirpath); { char pathsep[2] ; char *do_subdir_path(); char *dirs = do_subdir_path (fontsubdirpath); /* If the paths were in dynamic storage before, that memory is wasted now. */ pathsep[0] = PATHSEP ; pathsep[1] = '\0' ; tfmpath = concat3 (tfmpath, pathsep, dirs); pkpath = concat3 (pkpath, pathsep, dirs); } #endif } else configpath = getenvup("TEXCONFIG", configpath) ; #endif } #if !defined(KPATHSEA) && defined(SEARCH_SUBDIRECTORIES) #include #include #include #ifdef SYSV #include typedef struct dirent *directory_entry_type; #else #include typedef struct direct *directory_entry_type; #endif /* Declare the routine to get the current working directory. */ #ifndef HAVE_GETCWD extern char *getwd (); #define getcwd(b, len) ((b) ? getwd (b) : getwd (xmalloc (len))) #else #ifdef ANSI extern char *getcwd (char *, int); #else extern char *getcwd (); #endif /* not ANSI */ #endif /* not HAVE_GETWD */ #if defined(SYSV) || defined(VMS) || defined(MSDOS) || defined(OS2) || defined(ATARIST) #define MAXPATHLEN (256) #else /* ~SYSV */ #include /* for MAXPATHLEN */ #endif extern void exit() ; extern int chdir() ; /* Memory operations: variants of malloc(3) and realloc(3) that just give up the ghost when they fail. */ char * xmalloc(unsigned size) { char *mem = malloc (size); if (mem == NULL) { fprintf (stderr, "! Cannot allocate %u bytes.\n", size); exit (10); } return mem; } char * xrealloc(char *ptr, unsigned size) { char *mem = realloc (ptr, size); if (mem == NULL) { fprintf (stderr, "! Cannot reallocate %u bytes at %x.\n", size, (int)ptr); exit (10); } return mem; } /* Return, in NAME, the next component of PATH, i.e., the characters up to the next PATHSEP. */ static void next_component(char *name, char **path) { unsigned count = 0; while (**path != 0 && **path != PATHSEP) { name[count++] = **path; (*path)++; /* Move further along, even between calls. */ } name[count] = 0; if (**path == PATHSEP) (*path)++; /* Move past the delimiter. */ } #ifndef _POSIX_SOURCE #ifndef S_ISDIR #define S_ISDIR(m) ((m & S_IFMT) == S_IFDIR) #endif #endif /* Return true if FN is a directory or a symlink to a directory, false if not. */ int is_dir(char *fn) { struct stat stats; return stat (fn, &stats) == 0 && S_ISDIR (stats.st_mode); } static char * concat3(char *s1, char *s2, char *s3) { char *r = xmalloc (strlen (s1) + strlen (s2) + strlen (s3) + 1); strcpy (r, s1); strcat (r, s2); strcat (r, s3); return r; } /* DIR_LIST is the default list of directories (colon-separated) to search. We want to add all the subdirectories directly below each of the directories in the path. We return the list of directories found. */ char * do_subdir_path(char *dir_list) { char *cwd; unsigned len; char *result = xmalloc ((unsigned)1); char *temp = dir_list; char dirsep[2] ; dirsep[0] = DIRSEP ; dirsep[1] = '\0' ; /* Make a copy in writable memory. */ dir_list = xmalloc (strlen (temp) + 1); strcpy (dir_list, temp); *result = 0; /* Unfortunately, we can't look in the environment for the current directory, because if we are running under a program (let's say Emacs), the PWD variable might have been set by Emacs' parent to the current directory at the time Emacs was invoked. This is not necessarily the same directory the user expects to be in. So, we must always call getcwd(3) or getwd(3), even though they are slow and prone to hang in networked installations. */ cwd = getcwd (NULL, MAXPATHLEN + 2); if (cwd == NULL) { perror ("getcwd"); exit (errno); } do { DIR *dir; directory_entry_type e; char dirname[MAXPATHLEN]; next_component (dirname, &dir_list); /* All the `::'s should be gone by now, but we may as well make sure `chdir' doesn't crash. */ if (*dirname == 0) continue; /* By changing directories, we save a bunch of string concatenations (and make the pathnames the kernel looks up shorter). */ if (chdir (dirname) != 0) continue; dir = opendir ("."); if (dir == NULL) continue; while ((e = readdir (dir)) != NULL) { if (is_dir (e->d_name) && strcmp (e->d_name, ".") != 0 && strcmp (e->d_name, "..") != 0) { char *found = concat3 (dirname, dirsep, e->d_name); result = xrealloc (result, strlen (result) + strlen (found) + 2); len = strlen (result); if (len > 0) { result[len] = PATHSEP; result[len + 1] = 0; } strcat (result, found); free (found); } } closedir (dir); /* Change back to the current directory, in case the path contains relative directory names. */ if (chdir (cwd) != 0) { perror (cwd); exit (errno); } } while (*dir_list != 0); return result; } #endif /* SEARCH_SUBDIRECTORIES */ dvipsk_TexLive-2009-stripped/tex.lpro0000644000175000017500000002465411372532227017607 0ustar uwabamiuwabami% tex.lpro - public domain. % % The following defines procedures assumed and used by program "dvips" % and must be downloaded or sent as a header file for all TeX jobs. % Originated by Neal Holtz, Carleton University, Ottawa, Canada % % June, 1985 % % Hacked by tgr, July 1987, stripped down to bare essentials, % plus a few new commands for speed. % % Hacked by don, December 1989, to give characters top down and to % remove other small nuisances; merged with tgr's compression scheme % % To convert this file into a downloaded file instead of a header % file, uncomment all of the lines beginning with %-% % % To observe available VM, uncomment the following. % (The first ten lines define a general 'printnumber' routine.) % % /VirginMtrx 6 array currentmatrix def % /dummystring 20 string def % /numberpos 36 def % /printnumber { gsave VirginMtrx setmatrix % /Helvetica findfont 10 scalefont setfont % 36 numberpos moveto % /numberpos numberpos 12 add def % dummystring cvs show % grestore % } bind def % /showVM { vmstatus exch sub exch pop printnumber } def % /eop-aux { showVM } def % %-%0000000 % Server loop exit password %-%serverdict begin exitserver %-% systemdict /statusdict known %-% {statusdict begin 9 0 3 setsccinteractive /waittimeout 300 def end} %-% if /TeXDict 300 dict def % define a working dictionary TeXDict begin % start using it. /N {def} def /B {bind def} N /S {exch} N /X { S N } B /A {dup} B /TR {translate} N % The output of dvips assumes pixel units, Resolution/inch, with % increasing y coordinates corresponding to moving DOWNWARD. % The PostScript default is big point units (bp), 72/inch, with % increasing y coordinates corresponding to moving UP; the % following routines handle conversion to dvips conventions. % Let the PostScript origin be (xps,yps) in dvips coordinates. /isls false N /vsize 11 72 mul N /hsize 8.5 72 mul N /landplus90 { false } def % make this true to flip landscape /@rigin % -xps -yps @rigin - establishes dvips conventions { 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 % As bad as setmatrix is, it is better than misalignment. [ 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 % n @copies - set number of copies /@copies { /#copies X } B % Bitmap fonts are called Fa, Fb, ..., Fz, F0, F1 . . . Ga . . . % The calling sequence for downloading font foo is % /foo df charde1 ... chardefn E % where each chardef is % wd ht xoff yoff dx charno D % or wd ht xoff yoff dx I % or charno D % or I /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 % id numcc maxcc df-tail -- initialize a new font dictionary { % dmystr 2 fontname cvx (@@@@) cvs putinterval % put name in template /nn 8 dict N % allocate new font dictionary 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 } % dummy macro to be filled in 2 array copy cvx N % have to allocate a new one load % now we change it % 0 dmystr 6 string copy % get a copy of the font name 0 nn put % cvn cvx put % and stick it in the dummy macro /ctr 0 N % go, count, and etc. [ % start next char definition } 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 % the following is the only character builder we need. it looks up the % char data in the BitMaps array, and paints the character if possible. % char data -- a bitmap descriptor -- is an array of length 6, of % which the various slots are: /Cw {Cd A length 5 sub get} B % the number of pixels across /Ch {Cd A length 4 sub get} B % the number of pixels tall /Cx {128 Cd A length 3 sub get sub} B % num pixels right of origin /Cy {Cd A length 2 sub get 127 sub} B % number of pixels below origin /Cdx {Cd A length 1 sub get} B % number of pixels to next character /Ci {Cd A type /stringtype ne { ctr get /ctr ctr 1 add N } if } B % the hex string image, or array of same % begin code for uncompressed fonts only /CharBuilder % fontdict ch Charbuilder - -- image one character {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 % end code for uncompressed fonts only % % here's the alternate code for unpacking compressed fonts % /id 0 N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N % /CharBuilder % fontdict ch Charbuilder - -- image one character % {save 3 1 roll S A /base get 2 index get S /BitMaps get S get % /Cd X pop % /ctr 0 N % Cdx 0 Cx Cy Ch sub % Cx Cw add Cy % setcachedevice % Cw Ch true % [1 0 0 -1 -.1 Cx sub Cy .1 sub] % /id Ci N % image data % /rw Cw 7 add 8 idiv string N % row, initially zero % /rc 0 N % repeat count % /gp 0 N % image data pointer % /cp 0 N % column pointer % { rc 0 ne { rc 1 sub /rc X rw } { G } ifelse } imagemask % restore % } B % /G { { id gp get /gp gp 1 add N % A 18 mod S 18 idiv pl S get exec } loop } B % /adv { cp add /cp X } B % /chg { rw cp id gp 4 index getinterval putinterval % A gp add /gp X adv } B % /nd { /cp 0 N rw exit } B % /lsh { rw cp 2 copy get A 0 eq { pop 1 } { A 255 eq { pop 254 } % { A A add 255 and S 1 and or } ifelse } ifelse put 1 adv } B % /rsh { rw cp 2 copy get A 0 eq { pop 128 } { A 255 eq { pop 127 } % { A 2 idiv S 128 and or } ifelse } ifelse put 1 adv } B % /clr { rw cp 2 index string putinterval adv } B % /set { rw cp fillstr 0 4 index getinterval putinterval adv } B % /fillstr 18 string 0 1 17 { 2 copy 255 put pop } for N % /pl [ % { adv 1 chg } % { adv 1 chg nd } % { 1 add chg } % { 1 add chg nd } % { adv lsh } % { adv lsh nd } % { adv rsh } % { adv rsh nd } % { 1 add adv } % { /rc X nd } % { 1 add set } % { 1 add clr } % { adv 2 chg } % { adv 2 chg nd } % { pop nd } ] A { bind pop } forall N % % end of code for unpacking compressed fonts /D % char-data ch D - -- define character bitmap in current font { /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 % a faster D for when the next char follows immediately { cc 1 add D } B /bop % %t %d bop - -- begin a brand new page, %t=pageno %d=seqno { userdict /bop-hook known { bop-hook } if /SI save N @rigin % % Now we check the resolution. If it's correct, we use RV as V, % otherwise we use QV. % 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 % - eop - -- end a page { % eop-aux % -- to observe VM usage SI restore userdict /eop-hook known { eop-hook } if showpage } N /@start % hsz vsz mag dpi vdpi name @start - -- start everything { userdict /start-hook known { start-hook } if pop % the job name string is used only by start-hook /VResolution X /Resolution X 1000 div /DVImag X /IEn 256 array N 2 string 0 1 255 { IEn S A 360 add 36 4 index cvrs cvn put } for pop 65781.76 div /vsize X 65781.76 div /hsize X } N /p {show} N % the main character setting routine /RMat [ 1 0 0 -1 0 0 ] N % things we need for rules /BDot 260 string N /Rx 0 N /Ry 0 N % % What we need to do to get things to work here is tragic. % /V {} B /RV /v { % can't use ...fill; it makes rules too big /Ry X /Rx X V } B % % Which do we use? The first if we are talking to Display % PostScript, the latter otherwise. % 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 % % We use this if the resolution doesn't match. % /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 % absolute positioning /delta 0 N % we need a variable to hold space moves % % The next ten macros allow us to make horizontal motions that % are within 4 of the previous horizontal motion with a single % character. These are typically used for spaces. % /tail { A /delta X 0 rmoveto } B /M { S p delta add tail } B /b { S p tail } B % show and tail! /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 % % These next allow us to make small motions (-4..4) cheaply. % Typically used for kerns. % /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 is good for small vertical positioning. % And y is good for a print followed by a move. % /x { 0 S rmoveto } B /y { 3 2 roll p a } B % % The bos and eos commands bracket sections of downloaded characters. % /bos { /SS save N } B /eos { SS restore } B end % revert to previous dictionary dvipsk_TexLive-2009-stripped/crop.lpro0000644000175000017500000000136611372532227017745 0ustar uwabamiuwabami%! % This file is for crop marks. This file is public domain. % % First, we translate and draw the marks. You can change the way the % marks are drawn, but the quarter inch border around the page is fixed. % % This file uses bop-hook; sorry. % TeXDict begin % /cX 18 def % the crop offset /CM { % draw a crop mark; just a cross. gsave TR 0 cX neg moveto 0 cX lineto stroke cX neg 0 moveto cX 0 lineto stroke grestore } def % end % /bop-hook { cX dup TR % move the origin a bit gsave .3 setlinewidth 0 0 CM % now draw four crop marks vsize cX 2 mul sub dup hsize cX 2 mul sub dup isls { 4 2 roll } if 0 CM exch CM 0 exch CM grestore 0 cX -2 mul TR % now move to where we start drawing isls { cX -2 mul 0 TR } if } def dvipsk_TexLive-2009-stripped/t1part.c0000644000175000017500000016731211372532227017467 0ustar uwabamiuwabami/* * T1part.c version 1.59 beta Copyright (C)1994, 1996 * by Sergey Lesenko * lesenko@mx.ihep.su * * It is distributed with no warranty of any kind. * You may modify and use this program. It can be included * in any distribution, commercial or otherwise, so long as * copyright notice be preserved on all copies. */ #include "dvips.h" #include "t1part.h" #ifndef SEEK_SET #define SEEK_SET (0) #endif #ifdef BORLANDC void huge *UniGetMem(size) ub4 size ; { void huge *tmp; if ((tmp =(void huge*) farcalloc(1L, size)) == NULL) { fprintf(stderr,"Error allocating far memory\n"); exit(1); } return tmp; } #else #define UniGetMem getmem #endif #ifdef WIN32 /* CHAR is typedef'd by -- popineau@esemetz.ese-metz.fr. */ #define CHAR CHARACTER #endif typedef struct Char { unsigned char *name; int length; int num; int choose; struct Char *NextChar; } CHAR; typedef struct String { unsigned char *name; int num; struct String *NextStr; } STRING; static STRING *FirstStr; static STRING *RevStr; static CHAR *FirstChar; static CHAR *FirstCharA; CHAR *FirstCharB; static CHAR *FirstCharW; int CharCount; int GridCount; int ind_ref; int LoadVector(int, CHAR *) ; int Afm(void) ; typedef struct { int num[4]; int select; } def_ref; def_ref refer[10]; #ifndef min #define min(a, b) ((a) < (b) ? (a) : (b)) #endif #ifndef max #define max(a, b) ((a) > (b) ? (a) : (b)) #endif #define PFA 1 #define PFB 2 #define NOTHING 0 #define FLG_ASCII 1 #define FLG_BINARY 2 #define FLG_EOF 3 #define FLG_ZERO_LINE 4 #define FLG_OUT_STR (-1) #define CHAR_NOT_DEF (-1) #define SEAC_NOT_END (-2) #define FLG_LOAD_BASE (1) #define STANDARD_ENC (1) #define SPECIAL_ENC (2) #define AFM_ENC (4) #define FLG_REENCODE (4) #define BYTES_PER_LINE 32 #ifndef KPATHSEA_TYPES_H #define TRUE 1 #define FALSE 0 #endif /* not KPATHSEA_TYPES_H */ #define LENIV 0 #define SUBRS 1 #define CHARSTRINGS 2 #define ERR_FIRST_NUM (-1) #define ERR_SECOND_NUM (-2) #define ERR_FIRST_TOK (-3) #define ERR_SECOND_TOK (-4) #define ERR_STACK (-5) #define ERR_NUM_CHAR (-6) #define ERR_NAME_CHAR (-7) #define SUBR_STR 1 #define CHAR_STR -1 #define CHAR_SEAC -2 #define SKIP_ON_DUP 3 #define C1 52845 #define C2 22719 #define EDR 55665 #define EER 55665 #define CDR 4330 #define MAX_ESCAPE 33 #define HSTEM 1 #define VSTEM 3 #define VMOVETO 4 #define CHARS_RLINETO 5 #define HLINETO 6 #define VLINETO 7 #define RRCURVETO 8 #define CHARS_CLOSEPATH 9 #define CALLSUBR 10 #define RETURN 11 #define ESCAPE 12 #define HSBW 13 #define ENDCHAR 14 #define CHARS_RMOVETO 21 #define HMOVETO 22 #define VHCURVETO 30 #define HVCURVETO 31 #define DOTSECTION 0 #define VSTEM3 1 #define HSTEM3 2 #define SEAC 6 #define SBW 7 #define CHARS_DIV 12 #define CALLOTHERSUBR 16 #define POP 17 #define SETCURRENTPOINT 33 typetemp _HUGE *temp; typetemp _HUGE *begin_of_scan; typetemp _HUGE *end_of_scan; unsigned char *line; unsigned char *tmpline; unsigned char token[64]; unsigned char notdef[]="/.notdef"; unsigned char grid[256]; unsigned char tmpgrid[256]; unsigned char psfontfile[500]; /* really should dynamically allocate */ unsigned char psvectfile[500]; unsigned char basevect[]="ad.enc"; unsigned char version[] = "v1.59 beta (c)1994, 1996"; unsigned char tmp_token[64]; /* static int j = 0; */ static int stack[128]; ub1 buf[BUFSIZ]; int loadbase = 0; static int encode; static int reencode; int find_encod; int lastpart=0; int keep_flg=0; int keep_num=0; int number; int offset; long value; int lenIV = 4; static int grow=0; static int level; static int flg_seac=0; typedef struct { char *command; int code; } tablecommand; tablecommand TableCommand[] = { {"callsubr", CALLSUBR}, {"callothersubr", CALLOTHERSUBR}, {"pop", POP }, {"seac", SEAC}, {""} }; typedef struct { char *extension; int num; } typefonts; typefonts TypeFonts[] = { {".pfa", PFA}, {".pfb", PFB}, {".PFA", PFA}, {".PFB", PFB}, {""} }; static char Dup[]="dup"; typedef struct { typetemp _HUGE *begin; int length; int type; int offset; int oldnum; int newnum; } def_key; def_key keyword[6]; int FirstKey, current; int subrs, char_str; typedef struct { char *name; int num; } type_key; type_key Key[] = { {"/LenIV", LENIV}, {"/Subrs", SUBRS}, {"/CharStrings", CHARSTRINGS}, {""} }; struct def_label { typetemp _HUGE *begin; unsigned char skip; int length; short select; int num; }; struct def_label label[NUM_LABEL]; int DefTypeFont(unsigned char *name) { int i; for(i=0;*TypeFonts[i].extension;i++) { if(strstr((char *)name,TypeFonts[i].extension)!=0) return(TypeFonts[i].num); } return -1; } int GetZeroLine(unsigned char *str) { int token_type=0; if(*str!='0') { return (token_type=0); } while(*str=='0') { str++; } if(*str=='\n' || *str=='\r') token_type= -1; else token_type=0; return(token_type); } /* We get token type and its content for ASCII code */ int GetWord(unsigned char *mem) { int token_type=0; register unsigned char *tmp; tmp=mem; *tmp= *line; while((*line!='\0')&&(*line!='%')) { if(*line=='-') { *tmp++= *line++; } if(isdigit(*line)) { while(isdigit(*line)) { *tmp++= *line++; } *tmp = '\0'; return 5; } if(*line=='/') { *tmp++= *line++; token_type=1; } if(*line=='.') { *tmp++= *line++; if(token_type==1) { if(*line==' ') { *tmp = '\0'; return(token_type=token_type+2); } } } if(isalpha(*line)) { *tmp++ = *line++ ; while(!isspace(*line) && *line != '/') *tmp++= *line++; *tmp = '\0'; return(token_type=token_type+2); } token_type=0; tmp=mem; line++; } return(token_type= -1); } /* We get token type and its content for BINARY code */ int GetToken(void) { register unsigned char *tmp; int token_type=0; tmp=token; *tmp= *temp; while(tempname = (unsigned char *) getmem(length+1); strcpy((char *) ThisChar->name, (char *) CharName); ThisChar->length= length; ThisChar->num=num; ThisChar->NextChar = TmpChar; TmpChar = ThisChar; return TmpChar; } void AddStr(unsigned char *name, int num) { int length; STRING *ThisStr = (STRING *) getmem(sizeof(STRING)); length = strlen((char *) name); ThisStr->name = (unsigned char *) getmem(length+1); strcpy((char *) ThisStr->name, (char *) name); ThisStr->num=num; ThisStr->NextStr = FirstStr; FirstStr = ThisStr; } /* We prepare own encoding vector for output */ void RevChar(CHAR *TmpChar) { int i; CHAR *ThisChar = TmpChar; while (ThisChar != NULL) { for(i=keyword[char_str].offset-1; i < number; i++) { if(ThisChar->num == label[i].num) { if (label[i].select==FLG_BINARY) { CHAR *Rev_Char = (CHAR *) getmem(sizeof(CHAR)); Rev_Char->name = ThisChar->name; Rev_Char->num = ThisChar->num; Rev_Char->NextChar = FirstCharW; FirstCharW = Rev_Char; break; } } } ThisChar = ThisChar->NextChar; } } /* And here we produce own resulting encoding vector for partial font */ void OutChar(CHAR *TmpChar, FILE *fout) { CHAR *ThisChar = TmpChar; while (ThisChar != NULL) { CHAR *tm = ThisChar; if (ThisChar->num >= 0) #ifdef SHIFTLOWCHARS fprintf(fout, "dup %d %s put\n",T1Char(ThisChar->num),ThisChar->name); #else fprintf(fout, "dup %d %s put\n",ThisChar->num,ThisChar->name); #endif ThisChar = ThisChar->NextChar; free(tm); } FirstCharW = NULL; } /* We prepare strings list for output */ static void Reeverse(STRING *TmpStr) { int tmp; if(encode==AFM_ENC) tmp = -2; else tmp=0; while (TmpStr != NULL) { if(TmpStr->num < tmp) { STRING *ThisStr = (STRING *) getmem(sizeof(STRING)); ThisStr->name = TmpStr->name; ThisStr->NextStr = RevStr; RevStr = ThisStr; } TmpStr = TmpStr->NextStr; } } /* And here we post strings to out */ void OutStr(STRING *TmpStr, FILE *fout) { STRING *ThisStr = TmpStr; if(encode==AFM_ENC) fprintf(fout, "readonly def\n"); while (ThisStr != NULL) { STRING *tm = ThisStr; fprintf(fout, "%s",ThisStr->name); ThisStr = ThisStr->NextStr; free(tm); } RevStr = NULL; } void PrintChar(CHAR *TmpChar) { CHAR *ThisChar = TmpChar; while (ThisChar != NULL) { if(ThisChar->choose==1) { fprintf(stderr, " Debug: Char %d '%s'\n", ThisChar->num,ThisChar->name); } ThisChar = ThisChar->NextChar; } } int ClearB(void) { CHAR *ThisChar = FirstCharB; while (ThisChar != NULL) { ThisChar->choose=0; ThisChar = ThisChar->NextChar; } return 1; } /* We mark chars in encoding vector thanks same names from reencoding vector */ int ChooseChar(unsigned char *name, CHAR *TmpChar) { int length; CHAR *ThisChar = TmpChar; length=strlen((char *) name); while (ThisChar != NULL) { CHAR *NextChar = ThisChar->NextChar; if(ThisChar->length==length) { if (strcmp((char *) name, (char *) ThisChar->name) == 0) { ThisChar->choose=1; return 1; } } /* * If we couldn't find it, NextChar is NULL here. We fake up an entry * (assuming it really does exist in the font). Fix is from Melissa * O'Neill; bugs in application of fix due to me. */ if (NextChar == 0) { NextChar = (CHAR *) getmem(sizeof(CHAR)) ; NextChar->name = (unsigned char *) getmem(length + 1) ; strcpy((char *) NextChar->name, (char *) name) ; NextChar->length = length ; NextChar->num = -1 ; NextChar->NextChar = 0 ; NextChar->choose = 1 ; ThisChar->NextChar = NextChar ; } ThisChar = NextChar; } /* * Can't ever get here. */ return -1; } /* We find index in label array for char, wich is required for compose char, if it uses SEAC command */ int FindSeac(int num) { int i; for(i=keyword[char_str].offset-1; i < number; i++) { if(label[i].num==num) { return i; } } return -1; } void ClearCW(CHAR *); int FindCharW(unsigned char *name, int length) { CHAR *ThisChar = FirstCharW; int find = 0; int keep_char = 0; int tmp = 0; int tmp_num = 0; int ddd = 0; #ifdef DEBUG if(dd(D_VIEW_VECTOR)) { ddd = 1; } #endif while (ThisChar != NULL) { /* since ClearCW may free ThisChar, follow the pointer now. */ CHAR *NextChar = ThisChar->NextChar; if(ThisChar->length==length) { if (strcmp((char *) name, (char *) ThisChar->name) == 0) { if(ThisChar->choose==1) { if(find !=2) { find = 2; tmp=FLG_BINARY; label[number].num=ThisChar->num; } } else { keep_char = 0; if(find != 2) { find = 1; tmp_num = ThisChar->num; } } if(keep_char == 0) { ClearCW(ThisChar); } if((find == 2)&&(ddd == 1)) keep_char = 1; } } ThisChar = NextChar; } if(find == 1) { tmp=NOTHING; label[number].num=tmp_num; } return tmp; } void ClearCW(CHAR *ThisChar) { if (ThisChar == FirstCharW) FirstCharW = ThisChar->NextChar; else { CHAR *tm = FirstCharW; while (tm != NULL) { if (ThisChar == tm->NextChar) { tm->NextChar = ThisChar->NextChar; break; } tm = tm->NextChar; } } free(ThisChar); } /* We build temporary 'work' encoding vector only for searching needed chars */ int WorkVect(CHAR *TmpChar) { while (TmpChar != NULL) { { CHAR *ThisChar = (CHAR *) getmem(sizeof(CHAR)); ThisChar->name = TmpChar->name; ThisChar->length = TmpChar->length; ThisChar->num = TmpChar->num; ThisChar->choose = TmpChar->choose; ThisChar->NextChar = FirstCharW; FirstCharW = ThisChar; } TmpChar = TmpChar->NextChar; } return 0; } void UnDefineCharsW(void) { CHAR *ThisChar = FirstCharW; while (ThisChar != NULL) { CHAR *tm = ThisChar; ThisChar = ThisChar->NextChar; free(tm); } FirstCharW = NULL; CharCount = 0; } CHAR * UnDefineChars(CHAR *TmpChar) { CHAR *ThisChar = TmpChar; while (ThisChar != NULL) { CHAR *tm = ThisChar; free(ThisChar->name); ThisChar = ThisChar->NextChar; free(tm); } TmpChar = NULL; CharCount = 0; return TmpChar; } void UnDefineStr(void) { STRING *ThisStr = FirstStr; while (ThisStr != NULL) { STRING *tm = ThisStr; free(ThisStr->name); ThisStr = ThisStr->NextStr; free(tm); } FirstStr = NULL; } /* */ /* We mark subroutines without charstring decrypting */ /* */ void ScanSubrs(int i) { int err_num; int word_type = 0; int len_dup; int num_err=0; int test=0; len_dup = strlen(Dup); for( ; number < keyword[i].oldnum + keyword[i].offset;) { if((word_type=GetToken())>0) { if(word_type==2) { if(!strcmp((char *) token,Dup)) { if(test==0) test=1; label[number].begin = temp-len_dup; err_num=GetNum(); if(err_num<0) ; else { if(err_num<4) { label[number].select=FLG_BINARY; keyword[i].newnum++; } } label[number].num=err_num; num_err=PassString(1); if(num_err<0) { ErrorOfScan(num_err); fprintf(stderr,"in %d Subr string", number - 1); exit(1); } if(test>1) PassToken(); number++; } else { if(test>=1) test++; } } } else { ErrorOfScan(0); fprintf(stderr, "Token 'def' not found in %d Subr string ", number - 1); exit(1); } } } void ViewReturnCall(int num_err, int top, int *pstack, int j, int depth) { int k,m; #ifdef DEBUG if((dd(D_CALL_SUBR))&&(num_err>0)) { if(grow==1) { grow=0; fprintf(stderr, "\n Top: "); } else fprintf(stderr, " Back: "); } #endif if(num_err<0) { if(grow==1) { grow=0; fprintf(stderr, "\n ERROR: "); ErrorOfScan(num_err); } else fprintf(stderr, " Back: "); } fprintf(stderr, " %d Subr \n", top); fprintf(stderr," %dth level> STACK: ", level); for(m=0; m < j; m++, pstack++) { if(depth>(j-(m+1))) { for(k=0; TableCommand[k].command; k++) { if(TableCommand[k].code==*pstack) { fprintf(stderr," %s", TableCommand[k].command); k=0; break; } } if(k!=0) fprintf(stderr," (%d)", *pstack); } else fprintf(stderr, " %d", *pstack); } fprintf(stderr, " \n"); } /* */ /* We decrypt charstring with recursive descent */ /* */ int DeCodeStr(int num, int numseac) { unsigned int loccr; unsigned char byte; static int j ; int i; unsigned char jj,k; int tmpnum; int depth = 0; int num_err = 0; int len_str; typetemp _HUGE *loc; typetemp _HUGE *end_str; int pstack[64]; int last_subr; if(num > CHAR_STR) { last_subr=keyword[subrs].offset+keyword[subrs].oldnum; for(tmpnum=keyword[subrs].offset; tmpnum keyword[subrs].newnum ) /* max num of subr */ keyword[subrs].newnum = num+1; } loc = label[tmpnum].begin + label[tmpnum].skip; len_str=label[tmpnum].length; } else { j=0; if(num == CHAR_SEAC) { if(label[numseac].select!=FLG_BINARY) { label[numseac].select=FLG_BINARY; keyword[char_str].newnum++; temp = label[numseac].begin; } else return 1; } len_str=GetNum(); if(len_str < 0) { return ERR_SECOND_NUM; } num_err = PassToken(); if(num_err < 0) { return ERR_FIRST_TOK; } loc=temp; } loc++; end_str=loc+len_str; loccr = CDR; for (i = 0; i < lenIV; i++,loc++) { byte = CDeCrypt(*loc, &loccr); } for (; loc < end_str;) { byte = CDeCrypt(*loc++, &loccr); if (byte == RETURN) { j=0; break; } else if (byte == ESCAPE) { byte = CDeCrypt(*loc++, &loccr); if (byte > MAX_ESCAPE) fprintf(stderr, "Error: not_defined_e%d in %s", byte, psfontfile); else { switch(byte) { case DOTSECTION : j=0; break; case VSTEM3 : j=0; break; case HSTEM3 : j=0; break; case SEAC : stack[j++]=byte; grow=1; level++; jj=j; for(k=0;k -3) label[number].select=SEAC_NOT_END; grow=0; level=0; j=0; break; } num_err=DeCodeStr(CHAR_SEAC, num_err); level--; #ifdef DEBUG if((num_err<0)||(dd(D_CALL_SUBR))) #else if(num_err<0) #endif ViewReturnCall (num_err, pstack[jj-3],pstack,jj,1); grow=1; level++; num_err=FindSeac(pstack[jj-2]); if(num_err<0) { flg_seac=1; CharCount++; keyword[char_str].newnum--; keyword[char_str].newnum--; if(flg_seac > -3) label[number].select=SEAC_NOT_END; grow=0; level=0; j=0; break; } num_err=DeCodeStr(CHAR_SEAC, num_err); level--; #ifdef DEBUG if((num_err<0)||(dd(D_CALL_SUBR))) #else if(num_err<0) #endif ViewReturnCall (num_err, pstack[jj-2],pstack,jj,1); if(num_err<0) return ERR_STACK; j=0; break; case SBW : j=0; break; case CHARS_DIV : j=0; break; case CALLOTHERSUBR : stack[j++]=byte; depth=depth+2; break; case POP : stack[j++]=byte; depth=depth+2; break; case SETCURRENTPOINT : j=0; break; } } continue; } else if (byte < 32) { switch(byte) { case HSTEM : j=0; break; case VSTEM : j=0; break; case VMOVETO : j=0; break; case CHARS_RLINETO : j=0; break; case HLINETO : j=0; break; case VLINETO : j=0; break; case RRCURVETO : j=0; break; case CHARS_CLOSEPATH : j=0; break; case CALLSUBR : stack[j++]=byte; depth=depth+2; level++; grow=1; jj=j; j=j-depth; for(k=0;k= 32) { if (byte <= 246) { value= byte - 139; stack[j++]=value; } else if ((byte >= 247) && (byte <= 250)) { value= (byte - 247) * 256 + CDeCrypt(*loc++, &loccr) + 108; stack[j++]=value; } else if ((byte >= 251) && (byte <= 254)) { value= -(byte - 251) * 256 - CDeCrypt(*loc++, &loccr) - 108; stack[j++]=value; } else if (byte == 255) { value = CDeCrypt(*loc++, &loccr); value <<= 8; value += CDeCrypt(*loc++, &loccr); value <<= 8; value += CDeCrypt(*loc++, &loccr); value <<= 8; value += CDeCrypt(*loc++, &loccr); stack[j++]=value; } } } if(num == CHAR_STR) { temp=loc; num_err = PassToken(); if(num_err<0) { return ERR_SECOND_TOK; } } return 1; } /* */ /* We mark only necessary charstring */ /* */ void ScanChars(int i) { int word_type=0; int found; int str_len; int max_num; int counter; int num_err = 0; typetemp _HUGE *tmptemp; CharCount++; counter=number; max_num = keyword[i].offset+keyword[i].oldnum; while( number < max_num ) { if((word_type=GetToken())>0) { if(word_type>=3) { strcpy((char *) tmp_token, (char *) token); str_len = strlen((char *) token); if(CharCount!=0) { num_err=FindCharW(token, str_len); if(num_err==FLG_BINARY) { CharCount--; found=num_err; keyword[i].newnum++; } else { #ifdef DEBUG if(dd(D_VIEW_VECTOR)&&(num_err==-1)) { fprintf(stderr, " Debug: Char '%s' not used in WorkVector\n", token); } #endif if(word_type>3) { if(strstr((char *) token, (char *) notdef)!=NULL) { CharCount--; label[number].num = -2; found=FLG_BINARY; keyword[i].newnum++; } else found=NOTHING; } else found=NOTHING; } } else { found=NOTHING; } label[number].begin = temp-str_len; label[number].select = found; switch(found) { case FLG_BINARY: tmptemp=temp; for(subrs=FirstKey; subrs0) fprintf(stderr, " Debug for Char '%s'\n", tmp_token); } #endif break; case NOTHING: num_err=PassString(0); break; } if(num_err<0) { ErrorOfScan(num_err); fprintf(stderr,"in Char string of '%s'", tmp_token); exit(1); } number++; } } else { fprintf(stderr, "\n File <%s> ended before all chars have been found.", psfontfile); fprintf(stderr, "\n We scan %d Chars from %d", counter - (2 + keyword[subrs].oldnum), keyword[i].oldnum); if(tmp_token!=NULL) { fprintf(stderr, "\n Last seen token was '%s'\n", tmp_token); } exit(1); } } if(flg_seac!=0) { tmptemp=temp; flg_seac--; for(; counter0) { if(word_type==3) { for(i=First_Key; i<=lastkey; i++) { if(!strcmp((char *) token, Key[i].name)) { tmp_num = GetNum(); if(tmp_num<0) { fprintf(stderr, "\n ERROR: Number not found for '%s' in <%s>", Key[i].name, psfontfile); exit(1); } keyword[current].oldnum = tmp_num; keyword[current].length=strlen((char *) token); keyword[current].begin=temp - keyword[current].length; return i; } } } } else { fprintf(stderr, "\n ERROR: In <%s> keyword not found:", psfontfile); for(i=First_Key; i<=lastkey; i++) fprintf(stderr,"\n %dth > '%s' ",i,Key[i].name); exit(1); } } } /* To increase scan speed we use dynamic range of keywords */ int ScanBinary(void) { int i; int firstnum, lastnum; firstnum= LENIV; lastnum=SUBRS; number=0; label[number].begin = begin_of_scan; temp = label[number].begin; label[number].select = FLG_BINARY; offset= ++number; for (current=0, FirstKey=current ; ; current++) { i=FindKeyWord(firstnum,lastnum); switch(i) { case LENIV: FirstKey++; firstnum=SUBRS; lastnum=SUBRS; lenIV=keyword[current].oldnum; keyword[current].type=Key[0].num; break; case SUBRS: firstnum=SUBRS; lastnum= CHARSTRINGS; keyword[current].offset=number; keyword[current].newnum=0; keyword[current].type=Key[1].num; ScanSubrs(current); LastLook(); break; case CHARSTRINGS: char_str=current; keyword[current].offset=number; keyword[current].newnum=0; keyword[current].type=Key[2].num; ScanChars(current); LastLook(); #ifdef DEBUG if(dd(D_CALL_SUBR)) { for(i=0;i<=2;i++) { if(keyword[i].oldnum!=0) fprintf(stderr, " Result for <%s>: %s %d (instead %d) \n", psfontfile, Key[keyword[i].type].name,keyword[i].newnum, keyword[i].oldnum); } } #endif return 1; } } } unsigned char * itoasp(int n, unsigned char *s, int len) { static int i, j; j++; if(n/10) itoasp(n/10,s,len); else i=0; s[i++]=abs(n)%10+'0'; j--; if(j==0) { for(; i> 8)); *lcdr = (cipher + *lcdr) * c1 + c2; return plain; } unsigned short int eer; /* We find end of own vector with non StandardEncoding, */ int EndOfEncoding(int err_num) { int j; int i = 0; int flg_get_word=0; static char *RefKey[] = { "readonly", "getinterval", "exch", "def", "" }; for(;;) { if(flg_get_word==0) flg_get_word = 1; else { err_num=GetWord(token); } if(err_num <= 0) return -1; if(err_num==5) refer[ind_ref].num[i++]=atoi((char *) token); else { for(j=0; *RefKey[j]; j++) { if(strcmp((char *) token, RefKey[j]) ==0) break; } switch(j) { case 0: case 3: find_encod=1; keep_num = -2; if(ind_ref!=0) { CorrectGrid(); } return 1; case 1: break; case 2: if(i==1) { refer[ind_ref].num[1] = 1; refer[ind_ref].num[2] = refer[ind_ref].num[0]; GetWord(token); refer[ind_ref].num[0]= atoi((char *) token); } i=0; refer[ind_ref].select=1; ind_ref++; break; default: break; } } } } /* We rebuild grid for case "dup dup 161 10 getinterval 0 exch putinterval dup dup 173 23 getinterval 10 exch putinterval dup dup 127 exch 196 get put readonly def" in non StandardEncoding */ void CorrectGrid(void) { int i, j, k, imax; for(j=0; j<=ind_ref; j++){ if(refer[j].select==1){ imax= refer[j].num[1] + refer[j].num[2]; for(k=0, i=refer[j].num[2]; i< imax; k++,i++){ if(grid[i]==1){ grid[i]=0; grid[k+refer[j].num[0]]=1; } } } } } /* We build vector for non StandardEncoding */ int CharEncoding(void) { int err_token=0; int num=0; int seen = 0 ; while (1) { err_token=GetWord(token); if(err_token==2) { if(strcmp((char *) token, Dup) ==0) { err_token=GetWord(token); if(err_token<0) return ERR_NUM_CHAR; if(err_token!=2) /* define "dup word" */ { num=atoi((char *) token); err_token=GetWord(token); if(err_token<0) { return ERR_NAME_CHAR; } FirstChar=AddChar(FirstChar,token, num); keep_num=num; keep_flg=1; seen++ ; err_token = GetWord(token) ; } } else { if(keep_flg==1) { keep_num=FLG_OUT_STR; if(EndOfEncoding(err_token)<0) { return -1; } } } } else return seen ; } } void FindEncoding(void) { int num_err=0; int tmpnum; line=tmpline; if(encode==0) { while((num_err=GetWord(token))>=0) { if(num_err==3) { if (strcmp((char *) token,"/Encoding") == 0) { tmpnum=GetWord(token); if(tmpnum==5) { encode=SPECIAL_ENC; } else { find_encod=1; encode=STANDARD_ENC; } return; } } } } else { num_err= CharEncoding(); if(num_err<0) { ErrorOfScan(num_err); fprintf(stderr, "\n ERROR in encoding vector in <%s>", psfontfile); exit(1); } } } /* Before parse in BINARY portion of font we should mark needed chars, reencode them if there is reencoding vector for this case and build work vector */ void CheckChoosing(void) { CHAR *TmpChar; int err_num, i; if(encode==STANDARD_ENC) { TmpChar = FirstCharB; } else { if(encode==SPECIAL_ENC) { TmpChar = FirstChar; } else { fprintf(stderr, "WARNING: '/Encoding' not found in <%s>\n", psfontfile); exit(1); } } if(reencode==FLG_REENCODE) err_num=LoadVector(reencode, TmpChar); else err_num=ChooseVect(TmpChar); if(err_num<0) { Afm(); encode=AFM_ENC; TmpChar = FirstCharA; for(i=0;i<=255;i++) grid[i]=tmpgrid[i]; if(reencode==FLG_REENCODE) err_num=LoadVector(reencode, TmpChar); else err_num=ChooseVect(TmpChar); if(err_num<0) { fprintf(stderr, "\n Warning: after loading AFM file \n"); fprintf(stderr, " only %d chars found instead %d for <%s>\n", CharCount, GridCount, psfontfile); } } WorkVect(TmpChar); #ifdef DEBUG if(dd(D_VIEW_VECTOR)) { fprintf(stderr, "\n"); if(encode==1) fprintf(stderr, " Encoding: standard \n"); else fprintf(stderr, " Encoding: not standard \n"); if(reencode==FLG_REENCODE) fprintf(stderr, " with reencode vector <%s>\n", psvectfile); PrintChar(FirstCharW); } #endif } /* * As we write the output file, we search for /UniqueID, and if we find * such, we munge it. We need to do this because the font is only partial, * and if we send out a valid UniqueID, this well may mess up future jobs * that use this font, but characters that we do not include. We munge * the string from /UniqueID to /UniqueXX just to make it more clear * what we've done. */ static char * KillUnique(char *s) { char *r = strstr(s, "/UniqueID") ; if (r) { r[7] = 'X' ; r[8] = 'X' ; } return s ; } void OutASCII(FILE *fout, ub1 *buff, ub4 len) { ub4 i; for (i = 0; i < len; i++) { if ((*buff == 10)||(*buff == 13)) { buff++; *line++='\n'; *line='\0'; if((find_encod==0)&&(lastpart==0)) { FindEncoding(); } line=(unsigned char *) KillUnique((char *) tmpline); if(keep_flg==0) fprintf(fout,"%s", line); else { if(keep_num<0) { AddStr(line,keep_num); if(keep_num==-2) keep_num = -3; } } } else { *line++ = *buff++; } } } /* It's eexec decription for PFB format */ void BinEDeCrypt(ub1 *buff, ub4 len) { ub4 i; for (i = 0; i < len; i++, temp++, buff++) { *temp = (*buff ^ (edr >> 8)); edr = (*buff + edr) * c1 + c2; } } /* And it's eexec decription for PFA format */ void HexEDeCrypt(unsigned char *mem) { int ch1, ch2, cipher; for(;*mem!='\n' && *mem!='\r'; temp++) { ch1= *mem++; ch2= *mem++; if ('A' <= ch1 && ch1 <= 'F') ch1 -= 'A' - 10; else if ('a' <= ch1 && ch1 <= 'f') ch1 -= 'a' - 10; else ch1 -= '0'; ch1<<=4; if ('A' <= ch2 && ch2 <= 'F') ch2 -= 'A' - 10; else if ('a' <= ch2 && ch2 <= 'f') ch2 -= 'a' - 10; else ch2 -= '0'; cipher = ch1 + ch2; *temp = (cipher ^ (edr >> 8)); edr = (cipher + edr) * c1 + c2; } } int PartialPFA(FILE *fin, FILE *fout) { ub1 type; ub4 memory, addmemory, length, add_of_len; unsigned char *mem = tmpline; int check_vect=0; tmpline=buf; edr = EDR; type = FLG_ASCII; memory = BASE_MEM; addmemory= ADD_MEM; length=0; temp=(typetemp *) UniGetMem(memory); begin_of_scan=temp; for(;;) { if(fgets((char *)buf,BUFSIZ,fin)==NULL) break; switch (type) { case FLG_ASCII: if(strstr((char *)buf,"currentfile eexec") != NULL) { type=FLG_BINARY; } if((find_encod==0)&&(lastpart==0)) { FindEncoding(); } if(keep_flg==0) fprintf(fout,"%s", KillUnique((char *)buf)); else { AddStr(buf,keep_num); } break; case FLG_BINARY: if(check_vect==0) { tmpline=mem; CheckChoosing(); check_vect=1; } if(GetZeroLine(buf)<0) { type = FLG_ZERO_LINE; end_of_scan=temp; ScanBinary(); SubstNum(); if(keep_flg==1) { keep_flg=0; lastpart=1; if(encode!=1) { UnDefineCharsW(); if(encode==4) RevChar(FirstCharA); else RevChar(FirstChar); OutChar(FirstCharW, fout); } Reeverse(FirstStr); OutStr(RevStr, fout); } OutHEX(fout); UniFree(begin_of_scan); fprintf(fout, "%s", KillUnique((char*) buf)); break; } add_of_len=strlen((char *) buf)/2; length=length + add_of_len; if(length>memory) { memory = memory + addmemory; /* Using "memory = length;" retains minimum */ /* of memory but it will be more slowly */ begin_of_scan = (typetemp*) UniRealloc(begin_of_scan, memory); temp = begin_of_scan + length - add_of_len; } HexEDeCrypt(buf); break; case FLG_ZERO_LINE: fprintf(fout, "%s", buf); break; } } if(type == FLG_ZERO_LINE) return TRUE; else return FALSE; } #define FIRST_ASCII 1 #define FIRST_BINARY 2 #define NEXT_BINARY 3 #define NEXT_ASCII 4 int PartialPFB(FILE *fin, FILE *fout) { ub1 type; ub4 t_length, length, nread; int nbytes, rc; int check_vect = 0; int sub_type = FIRST_ASCII; line=tmpline; edr = EDR; /* To find summary length of multiple binary parts we prescan font file */ t_length = 0L; for (;;) { if ((rc = fread((char *) buf, 1, 6, fin)) < 2) { return FALSE; } if (buf[0] != 128) return FALSE; type = buf[1]; if (type == FLG_EOF) { break; } if (rc != 6) return FALSE; length = little4(&buf[2]); if(type==FLG_BINARY) { t_length = (ub4)(length + t_length); } fseek(fin, ftell(fin) + length, SEEK_SET); } /* Here we start real parsing */ sub_type = FIRST_BINARY; fseek(fin, 0L, SEEK_SET); for (;;) { if ((rc = fread((char *) buf, 1, 6, fin)) < 2) { return FALSE; } if (buf[0] != 128) return FALSE; type = buf[1]; if (type == FLG_EOF) { return TRUE; } if (rc != 6) return FALSE; length = little4(&buf[2]); if(type==FLG_BINARY) { if(sub_type == FIRST_BINARY) { sub_type = NEXT_BINARY; temp=(typetemp*) UniGetMem(t_length); begin_of_scan=temp; } } else { if( sub_type == NEXT_BINARY) { sub_type = NEXT_ASCII; end_of_scan=temp; ScanBinary(); SubstNum(); if(keep_flg==1) { keep_flg=0; lastpart=1; if(encode!=1) { UnDefineCharsW(); if(encode==4) RevChar(FirstCharA); else RevChar(FirstChar); OutChar(FirstCharW, fout); } Reeverse(FirstStr); OutStr(RevStr, fout); } OutHEX(fout); UniFree(begin_of_scan); } } for (nread = 0; nread < length; nread += rc) { nbytes = min(BUFSIZ, length - nread); if ((rc = fread((char *) buf, 1, nbytes, fin)) == 0) { return FALSE; } switch (type) { case FLG_ASCII: OutASCII(fout, buf, (ub4) rc); break; case FLG_BINARY: if(check_vect==0) { CheckChoosing(); check_vect=1; } BinEDeCrypt(buf, (ub4) rc); break; default: return FALSE; } } } } void OutHEX(FILE *fout) { int i=0; int num; static char *hexstr = "0123456789abcdef" ; int bin; line=tmpline; eer = EER; label[number].begin = end_of_scan; label[number].select = NOTHING; number++; for(num=0; num < number; num++) { switch(label[num].select) { case NOTHING: break; case FLG_BINARY: label[num].select=NOTHING; for(temp=label[num].begin; temp> 8)); /* Eexec encryption */ eer = ((bin + eer) * c1 + c2); *line++= hexstr[(bin&0xf0)>>4]; *line++= hexstr[bin&0xf]; if (!((i + 1) % BYTES_PER_LINE)) { *line++='\0'; line =tmpline; fprintf(fout, "%s\n",line); } } break; } } if (i % BYTES_PER_LINE) { *line++='\0'; line =tmpline; fprintf(fout, "%s\n",line); } } /* We parse AFM file only if we've received errors after parsing of own vector */ int Afm(void) { unsigned char afmfile[100]; FILE *fafm; int err_num=0; int i,j,k,num=0; unsigned char name[40]; static char *AfmKey[] = { "StartCharMetrics", "EndCharMetrics", "" }; static char *InfoKey[] = { "C", "N", "" }; for(i=0; psfontfile[i] ; i++) { if(psfontfile[i] == '.') break; else afmfile[i]=psfontfile[i]; } afmfile[i]='\0'; strcat((char *) afmfile,".afm"); fprintf(stderr, "<%s>", afmfile); if ((fafm = psfopen((char *) afmfile, "r")) == NULL) { NameOfProgram(); perror((char *) afmfile); return -1; } for(j=0;;) { line = tmpline; if(fgets((char *) line,BUFSIZ,fafm)==NULL) break; if(strstr((char *) line, AfmKey[j])!=NULL) { if(j==0) { j++; continue; } else { fclose(fafm); return 1; } } if(j==1) { for(k=0; err_num>=0; ) { err_num=GetWord(token); if(err_num==2) { if(strcmp((char *) token,InfoKey[k])==0) { if(k==0) { err_num=GetWord(token); num=atoi((char *) token); k=1; continue; } else { err_num=GetWord(token); name[0]='/'; name[1]='\0'; strcat((char *) name, (char *) token); if(num>=0) FirstCharA=AddChar(FirstCharA, name, num); break; } } } } } } return -2; } int FontPart(FILE *fout, unsigned char *fontfile, unsigned char *vectfile) { FILE *fin=0; int num; int rc; int i; ind_ref=0; reencode=0; encode=0; lastpart=0; keep_flg=0; flg_seac=0; strcpy((char *) psfontfile, (char *) fontfile); find_encod=0; CharCount=0; if(loadbase != 1) { for(i=offset; i < NUM_LABEL; i++) label[i].num=CHAR_NOT_DEF; strcpy((char *) psvectfile, (char *) basevect); #ifdef DEBUG if(dd(D_VIEW_VECTOR)) fprintf(stderr, " Base vector <%s>.", basevect); #endif if(LoadVector(1, FirstCharB)==1) { loadbase = FLG_LOAD_BASE; } else exit(1); } if(vectfile) { reencode=FLG_REENCODE; strcpy((char *) psvectfile, (char *) vectfile); } for(num=0;num 0) CharCount++; else { fprintf(stderr, "Error: '%s' not found in reencoding vector <%s> for <%s>\n", token,psvectfile, psfontfile); } } index_grid++; } else { if(num==1) /* Build base vector */ { FirstCharB=AddChar(FirstCharB,token, CharCount); CharCount++; } } continue; } if(j== -1) break; if(j==2) { i=0; end_vect = 1; break; } } } if(j==2) { if((index_grid!=256)&&(CharCount!=256)) { fclose(fvect); fprintf(stderr,"Error during Load Vector in <%s> \n", psvectfile); fprintf(stderr, "Found %d chars instead 256\n", max(index_grid,CharCount)); return -3; } if(CharCount>0) { fclose(fvect); return 1; } else { fclose(fvect); fprintf(stderr, "\n Warning: Vector from <%s> for <%s> doesn't load\n", psvectfile, psfontfile); return -1; } } else { fprintf(stderr,"\n Error: ending token 'def' not found in <%s> \n", psvectfile); return -2; } } int ChooseVect(CHAR *tmpChar) { CHAR *ThisChar = tmpChar; CharCount=0; while (ThisChar != NULL) { ThisChar->choose= grid[ThisChar->num]; if(grid[ThisChar->num]==1) { CharCount++; } ThisChar = ThisChar->NextChar; } if(CharCount #endif /* * These are the external routines we call. */ #include "protos.h" /* * The external variables we use: */ extern char *nextstring, *maxstring ; extern double mag ; #ifdef DEBUG extern integer debug_flag; #endif /* DEBUG */ extern int actualdpi ; extern real alpha ; extern fontmaptype *ffont ; extern quarterword *curpos ; extern fontdesctype *fonthead ; extern integer fsizetol ; /* * newfontdesc creates a new font descriptor with the given parameters and * returns a pointer to the new object. */ fontdesctype* newfontdesc(integer cksum, integer scsize, integer dssize, char *name, char *area) { register fontdesctype *fp ; fp = (fontdesctype *)mymalloc((integer)sizeof(fontdesctype)) ; fp->chardesc = (chardesctype *)mymalloc(256*(integer)sizeof(chardesctype)) ; fp->maxchars = 256 ; fp->psname = 0 ; fp->loaded = 0 ; fp->checksum = cksum ; fp->scaledsize = scsize ; fp->designsize = dssize ; fp->thinspace = scsize / 6 ; fp->scalename = NULL ; fp->psflag = 0 ; fp->codewidth = 1 ; fp->name = name; #ifdef VMCMS /* IBM: VM/CMS */ { int i ; for ( i=0 ; fp->name[i] ; i++ ) fp->name[i] = ascii2ebcdic[ fp->name[i] ] ; } #else #ifdef MVSXA /* IBM: MVS/XA */ { int i ; for ( i=0 ; fp->name[i] ; i++ ) fp->name[i] = ascii2ebcdic[ fp->name[i] ] ; } #endif /* IBM: MVS/XA */ #endif /* IBM: VM/CMS */ fp->area = area; fp->resfont = NULL ; fp->localfonts = NULL ; #ifdef KPATHSEA fp->dpi = kpse_magstep_fix ((halfword)(mag*(float)fp->scaledsize*DPI/ ((float)fp->designsize*1000.0)+0.5), DPI, NULL) ; #else fp->dpi = dpicheck((halfword)(mag*fp->scaledsize*DPI/ ((float)fp->designsize*1000.0)+0.5)) ; #endif fp->loadeddpi = fp->dpi ; #ifdef DEBUG if (dd(D_FONTS)) (void)fprintf(stderr,"Defining font (%s) %s at %.1fpt\n", area, name, (real)scsize/(alpha*0x100000)) ; #endif /* DEBUG */ return fp ; } /* * Try to find a font with a given name and approximate scaled size, returning * NULL if unsuccessful. If scname and the font's scalename are both * non-NULL they must match exactly. If both are NULL, scsize and the * font's scaledsize come from the dvi file and should match exactly. * Otherwise there can be some slop due to the inaccuracies of sizes * read from an included psfile. */ fontdesctype * matchfont(char *name, char *area, integer scsize, char *scname) { register fontdesctype *fp; register integer smin, smax; smin = scsize - fsizetol ; smax = scsize + fsizetol ; for (fp=fonthead; fp; fp=fp->next) if (smin < fp->scaledsize && fp->scaledsize < smax && strcmp(name,fp->name)==0 && strcmp(area,fp->area)==0) { if (scname == NULL) { if (fp->scalename!=NULL || scsize==fp->scaledsize) break ; } else { if (fp->scalename==NULL || strcmp(scname,fp->scalename)==0) break ; } } #ifdef DEBUG if (dd(D_FONTS) && fp) (void)fprintf(stderr,"(Already known.)\n") ; #endif /* DEBUG */ return fp; } /* * fontdef takes a font definition in the dvi file and loads the data * into its data structures. */ void fontdef(int siz) { register integer i, j, fn ; register fontdesctype *fp ; register fontmaptype *cfnt ; char *name, *area ; integer cksum, scsize, dssize ; extern void skipover(int) ; fn = dvibyte() ; while (siz-- > 1) fn = (fn << 8) + dvibyte() ; for (cfnt=ffont; cfnt; cfnt = cfnt->next) if (cfnt->fontnum == fn) goto alreadydefined ; cfnt = (fontmaptype *)mymalloc((integer)sizeof(fontmaptype)) ; cfnt->next = ffont ; ffont = cfnt ; cfnt->fontnum = fn ; cksum = signedquad() ; scsize = signedquad() ; dssize = signedquad() ; i = dvibyte() ; j = dvibyte() ; if (nextstring + i + j > maxstring) error("! out of string space") ; area = nextstring ; for (; i>0; i--) *nextstring++ = dvibyte() ; *nextstring++ = 0 ; name = nextstring ; for (; j>0; j--) *nextstring++ = dvibyte() ; *nextstring++ = 0 ; fp = matchfont(name, area, scsize, (char *)0) ; if (fp) { nextstring = name ; fp->checksum = cksum ; } else { fp = newfontdesc(cksum, scsize, dssize, name, area) ; fp->next = fonthead ; fonthead = fp ; } cfnt->desc = fp ; return ; alreadydefined: /* A DVI file will not define a font twice; but we may be scanning * a font definition twice because a new section has started, * or because of collated copies. */ skipover(12) ; skipover(dvibyte()+dvibyte()) ; } /* * The next routine handles nops or font definitions between pages in a * dvi file. Returns the first command that is not a nop or font definition. * * Now handles specials (but ignores them) */ int skipnop(void) { register int cmd ; while (1) { switch(cmd=dvibyte()) { case 138: break ; case 239: skipover((int)dvibyte()) ; break ; /* xxx1 */ case 240: skipover((int)twobytes()) ; break ; /* xxx2 */ case 241: skipover((int)threebytes()) ; break ; /* xxx3 */ case 242: skipover((int)signedquad()) ; break ; /* xxx4 */ case 243: case 244: case 245: case 246: fontdef(cmd-242) ; break ; default: return cmd ; } } } dvipsk_TexLive-2009-stripped/drawPS.c0000644000175000017500000004447711372532227017462 0ustar uwabamiuwabami/* * D R A W P S . C * * Changed to take magnification into account, 27 August 1990. * * (minor mods by don on 5 Jan 90 to accommodate highres PostScript) * * $Revision: 1.1 $ * * $Log: drawPS.c,v $ * Revision 1.1 90/03/10 20:32:48 grunwald * Initial revision * * * 89/04/24: decouty@irisa.fr, priol@irisa.fr * added three shading levels for fig, * removed '\n' in cmdout() calls * * Revision 1.4 87/05/07 15:06:24 dorab * relinked back hh to h and vv to v undoing a previous change. * this was causing subtle quantization problems. the main change * is in the definition of hconvPS and vconvPS. * * changed the handling of the UC seal. the PS file should now be * sent via the -i option. * * Revision 1.3 86/04/29 23:20:55 dorab * first general release * * Revision 1.3 86/04/29 22:59:21 dorab * first general release * * Revision 1.2 86/04/29 13:23:40 dorab * Added distinctive RCS header * */ #ifndef lint char RCSid[] = "@(#)$Header: /usr/local/src/TeX/Dvips-5.0.2/RCS/drawPS.c,v 1.1 90/03/10 20:32:48 grunwald Exp $ (UCLA)"; #endif /* the driver for handling the \special commands put out by the tpic program as modified by Tim Morgan the co-ordinate system is with the origin at the top left and the x-axis is to the right, and the y-axis is to the bottom. when these routines are called, the origin is set at the last dvi position, which has to be gotten from the dvi-driver (in this case, dvips) and will have to be converted to device co-ordinates (in this case, by [hv]convPS). all dimensions are given in milli-inches and must be converted to what dvips has set up (i.e. there are convRESOLUTION units per inch). it handles the following \special commands pn n set pen size to n pa x y add path segment to (x,y) fp flush path ip flush invisible path, i.e. do shading only da l flush dashed - each dash is l (inches) dt l flush dotted - one dot per l (inches) sp [l] flush spline - optional l is dot/dash length ar x y xr yr sa ea arc centered at (x,y) with x-radius xr and y-radius yr, start angle sa (in rads), end angle ea (in rads) ia x y xr yr sa ea invisible arc with same parameters as above sh [s] shade last path (box, circle, ellipse) s = gray level (0 = white, 1 = black) wh whiten last path (box, circle, ellipse) bk blacken last path (box,circle, ellipse) tx texture command - Added by T. Priol (priol@irisa.fr), enhanced by M. Jourdan: textures are translated into uniform gray levels this code is in the public domain written by dorab patel december 1985 released feb 1986 changes for dvips july 1987 */ #include "dvips.h" #ifdef TPIC /* rest of the file !! */ #include /* used in function "arc" */ #ifdef DEBUG extern integer debug_flag; #endif /* DEBUG */ /* * external functions used here */ #include "protos.h" /* * external variables used here */ extern integer hh,vv; /* the current x,y position in pixel units */ extern int actualdpi ; extern int vactualdpi ; extern double mag ; #define convRESOLUTION DPI #define convVRESOLUTION VDPI #define tpicRESOLUTION 1000 /* number of tpic units per inch */ #ifndef TRUE #define TRUE 1 #define FALSE 0 #endif /* convert from tpic units to PS units */ #define PixRound(a,b) zPixRound((a),(b)) #define convPS(x) PixRound((x),convRESOLUTION) #define convVPS(x) PixRound((x),convVRESOLUTION) /* convert from tpic locn to abs horiz PS locn */ #define hconvPS(x) (hh + convPS(x)) /* convert from tpic locn to abs vert PS locn */ #define vconvPS(x) (vv + convVPS(x)) /* convert to degrees */ #define convDeg(x) (360*(x)/(2*3.14159265358979)) /* if PostScript had splines, i wouldnt need to store the path */ #define MAXPATHS 600 /* maximum number of path segments */ #define NONE 0 /* for shading */ #define BLACK 1 /* for shading */ #define GRAY 2 /* MJ; for shading */ #define WHITE 3 /* for shading */ /* the following defines are used to make the PostScript shorter; the corresponding defines are in the PostScript prolog special.lpro */ #define MOVETO "a" #define LINETO "li" #define RCURVETO "rc" #define RLINETO "rl" #define STROKE "st" #define FILL "fil" #define NEWPATH "np" #define CLOSEPATH "closepath" /* * STROKE and FILL must restore the current point to that * saved by NEWPATH */ static double xx[MAXPATHS], yy[MAXPATHS]; /* the current path in milli-inches */ static integer pathLen = 0; /* the current path length */ static integer shading = NONE; /* what to shade the last figure */ static integer penSize = 2; /* pen size in PS units */ /* forward declarations */ /* static void doShading(); */ static double zPixRound(double, double); /* (x/y)PixRound(x,y) */ static double shadetp = 0.5; /* shading level, initialized as requested by tpic 2.0 -- MJ */ void setPenSize(char *cp) { long ps; if (sscanf(cp, " %ld ", &ps) != 1) { error("Illegal .ps command format"); return; } penSize = convPS(ps); doubleout((integer)penSize); cmdout("setlinewidth"); } /* end setPenSize */ void addPath(char *cp) { double x,y; if (++pathLen >= MAXPATHS) error("! Too many points"); if (sscanf(cp, " %lg %lg ", &x, &y) != 2) error("! Malformed path expression"); xx[pathLen] = x; yy[pathLen] = y; } /* end of addPath */ void arc(char *cp, int invis) { double xc, yc, xrad, yrad; double startAngle, endAngle; if (sscanf(cp, " %lg %lg %lg %lg %lg %lg ", &xc, &yc, &xrad, &yrad, &startAngle, &endAngle) != 6) { error("Illegal arc specification"); return; } /* To have filled ellipses/circles also have borders, we duplicate the object specification; first time we emit a FILL command, second time we emit a STROKE command. There certainly exists a better way to do that in PostScript, by remembering the object specification (path) across the fill command. However I (MJ) am completely unproficient at PostScript... */ /* we need the newpath since STROKE doesnt do a newpath */ if (shading) { /* first time for shading */ cmdout(NEWPATH); doubleout(hconvPS(xc)); doubleout(vconvPS(yc)); doubleout(convPS(xrad)); if (xrad != yrad && VDPI == DPI) doubleout(convPS(yrad)); doubleout(convDeg(startAngle)); doubleout(convDeg(endAngle)); if (xrad == yrad && VDPI == DPI) /* for arcs and circles */ cmdout("arc"); else cmdout("ellipse"); cmdout(FILL); shading = NONE; cmdout("0 setgray"); /* default of black */ } if (!invis) { /* There is a problem with tpic 2.0's handling of dotted ellipses. In most (all?) cases, after conversion to degrees and rounding to integers, startAngle and endAngle become the same, so nothing, not even a dot (as requested), is printed in the output (at least on my Apple LaserWriter). So I (MJ) singled out this case. */ double degStAng = convDeg(startAngle), degEnAng = convDeg(endAngle); cmdout(NEWPATH); /* save current point */ if (degStAng != degEnAng) { /* normal case */ doubleout(hconvPS(xc)); doubleout(vconvPS(yc)); doubleout(convPS(xrad)); if (xrad != yrad) doubleout(convPS(yrad)); doubleout(degStAng); doubleout(degEnAng); if (xrad == yrad) /* for arcs and circles */ cmdout("arc"); else cmdout("ellipse"); } else { /* draw a single dot */ double xdot, ydot; xdot = ((double)xc + (double)xrad * cos ((startAngle + endAngle) / 2.0)); ydot = ((double)yc + (double)yrad * sin ((startAngle + endAngle) / 2.0)); doubleout(hconvPS(xdot)); doubleout(vconvPS(ydot)); cmdout(MOVETO); /* +1 to make sure the dot is printed */ doubleout(hconvPS(xdot)+1); doubleout(vconvPS(ydot)+1); cmdout(LINETO); } cmdout(STROKE); } } /* end of arc */ /* * In pic dashed lines are created in a manner which makes boths ends * of a line solid. * This means that the corner of a dotted box is a dot and the corner * of a dashed box is solid. * The number of inches/dash must be adjusted accordingly. */ void flushDashedPath(int dotted, double inchesPerDash) { register int i; int nipd = (integer) convPS((int) inchesPerDash); if (nipd == 0) nipd = 1 ; if (pathLen < 2) { error("Path less than 2 points - ignored"); pathLen = 0 ; return; } cmdout(NEWPATH); /* to save the current point */ for (i=2; i <= pathLen; i++) { integer dx = hconvPS(xx[i-1]) - hconvPS(xx[i]); integer dy = vconvPS(yy[i-1]) - vconvPS(yy[i]); double delta = sqrt((double) (dx * dx + dy * dy)); double ipd; int ndashes; /* * If a line is dashed there must be an odd number of dashes. * This makes the first and last dash of the line solid. * If a line is dotted the length of a dot + space sequence must be * chosen such that (n+1) * dotlength + n space length = linelength * => (dot + space) = (line - dot) / n */ if (dotted) delta -= penSize; ndashes = (integer) (delta / nipd + 0.5); /* number of dashes on line */ /* only odd when dashed, choose odd number with smallest deviation */ if (ndashes > 2 && (ndashes & 0x1) == 0 && !dotted) { if (fabs(nipd - delta/(ndashes - 1)) < (fabs(nipd - delta/(ndashes + 1)))) ndashes -= 1; else ndashes += 1; } else if (ndashes < 1) ndashes = 1 ; ipd = delta / ndashes; if (ipd <= 0.0) ipd = 1.0 ; cmdout("["); if (dotted) { doubleout(penSize); doubleout(fabs(ipd - penSize)); } else /* if dashed */ doubleout(ipd); cmdout("]"); doubleout(0); cmdout("setdash"); doubleout(hconvPS(xx[i-1])); doubleout(vconvPS(yy[i-1])); cmdout(MOVETO); doubleout(hconvPS(xx[i])); doubleout(vconvPS(yy[i])); cmdout(LINETO); cmdout(STROKE); } cmdout("[] 0 setdash"); pathLen = 0; } void flushPath(int invis) { register int i; if (pathLen < 2) { error("Path less than 2 points - ignored"); pathLen = 0 ; return; } /* To have filled boxes also have borders, we duplicate the object specification; first time we emit a FILL command, second time we emit a STROKE command. There certainly exists a better way to do that in PostScript, by remembering the object specification (path) across the fill command. However I (MJ) am completely unproficient at PostScript... */ #ifdef DEBUG if (dd(D_SPECIAL)) (void)fprintf(stderr, #ifdef SHORTINT "flushpath(1): hh=%ld, vv=%ld, x=%lg, y=%lg, xPS=%lg, yPS=%lg\n", #else /* ~SHORTINT */ "flushpath(1): hh=%d, vv=%d, x=%lg, y=%lg, xPS=%lg, yPS=%lg\n", #endif /* ~SHORTINT */ hh, vv, xx[1], yy[1], hconvPS(xx[1]), vconvPS(yy[1])); #endif /* DEBUG */ if (shading) { /* first time for shading */ cmdout(NEWPATH); /* to save the current point */ doubleout(hconvPS(xx[1])); doubleout(vconvPS(yy[1])); cmdout(MOVETO); for (i=2; i < pathLen; i++) { #ifdef DEBUG if (dd(D_SPECIAL)) (void)fprintf(stderr, #ifdef SHORTINT "flushpath(%ld): hh=%ld, vv=%ld, x=%lg, y=%lg, xPS=%lg, yPS=%lg\n", #else /* ~SHORTINT */ "flushpath(%d): hh=%d, vv=%d, x=%lg, y=%lg, xPS=%lg, yPS=%lg\n", #endif /* ~SHORTINT */ i, hh, vv, xx[i], yy[i], hconvPS(xx[i]), vconvPS(yy[i])); #endif /* DEBUG */ doubleout(hconvPS(xx[i])); doubleout(vconvPS(yy[i])); cmdout(LINETO); } /* Shading should always apply to a closed path force it and complain if necessary */ if (xx[1] == xx[pathLen] && yy[1] == yy[pathLen]) cmdout(CLOSEPATH); else { doubleout(hconvPS(xx[pathLen])); doubleout(vconvPS(yy[pathLen])); cmdout(LINETO); cmdout(CLOSEPATH); error("Attempt to fill a non-closed path"); fprintf(stderr, #ifdef SHORTINT "\tfirst point: x=%lg, y=%lg; last point: x=%lg, y=%lg\n", #else /* ~SHORTINT */ "\tfirst point: x=%lg, y=%lg; last point: x=%lg, y=%lg\n", #endif /* ~SHORTINT */ xx[1], yy[1], xx[pathLen], yy[pathLen]); } cmdout(FILL); shading = NONE; cmdout("0 setgray"); /* default of black */ } if (!invis) { cmdout(NEWPATH); /* to save the current point */ doubleout(hconvPS(xx[1])); doubleout(vconvPS(yy[1])); cmdout(MOVETO); for (i=2; i < pathLen; i++) { doubleout(hconvPS(xx[i])); doubleout(vconvPS(yy[i])); cmdout(LINETO); } if (xx[1] == xx[pathLen] && yy[1] == yy[pathLen]) cmdout(CLOSEPATH); else { doubleout(hconvPS(xx[pathLen])); doubleout(vconvPS(yy[pathLen])); cmdout(LINETO); } cmdout(STROKE); } pathLen = 0; } /* end of flushPath */ void flushDashed(char *cp, int dotted) { double inchesPerDash; int savelen = pathLen; if (sscanf(cp, " %lg ", &inchesPerDash) != 1) { error ("Illegal format for dotted/dashed line"); return; } if (inchesPerDash <= 0.0) { error ("Length of dash/dot cannot be negative"); return; } inchesPerDash = 1000 * inchesPerDash; /* to get milli-inches */ flushPath(1);/* print filled, always invisible bounds */ pathLen = savelen; flushDashedPath(dotted,inchesPerDash); cmdout("[] 0 setdash"); } /* end of flushDashed */ void flushSpline(char *cp) { /* as exact as psdit!!! */ register long i ; register double dxi, dyi, dxi1, dyi1; if (*cp) { double inchesPerDash; int ipd ; if (sscanf(cp, "%lg ", &inchesPerDash) != 1) { error ("Illegal format for dotted/dashed spline"); return; } ipd = (int)(1000.0 * inchesPerDash); /* to get milli-inches */ if (ipd != 0) { cmdout("["); if (inchesPerDash < 0.0) /* dotted */ { doubleout(penSize); doubleout(fabs(convPS((int)-ipd) - penSize)); } else /* dashed */ doubleout(convPS((int)ipd)); cmdout("]"); doubleout(0); cmdout("setdash"); } } if (pathLen < 2) { error("Spline less than two points - ignored"); return; } cmdout(NEWPATH); /* to save the current point */ doubleout(hconvPS(xx[1])); doubleout(vconvPS(yy[1])); cmdout(MOVETO); doubleout(convPS((xx[2]-xx[1])/2)); doubleout(convPS((yy[2]-yy[1])/2)); cmdout(RLINETO); for (i=2; i < pathLen; i++) { dxi = convPS(xx[i] - xx[i-1]); dyi = convVPS(yy[i] - yy[i-1]); dxi1 = convPS(xx[i+1] - xx[i]); dyi1 = convVPS(yy[i+1] - yy[i]); doubleout(dxi/3); doubleout(dyi/3); doubleout((3*dxi+dxi1)/6); doubleout((3*dyi+dyi1)/6); doubleout((dxi+dxi1)/2); doubleout((dyi+dyi1)/2); cmdout(RCURVETO); } doubleout(hconvPS(xx[pathLen])); doubleout(vconvPS(yy[pathLen])); cmdout(LINETO); /* doShading(); */ cmdout(STROKE); /* assume no shaded splines */ pathLen = 0; if (*cp) cmdout("[] 0 setdash"); } /* end of flushSpline */ /* set shading level (used with Fig 1.4-TFX). priol@irisa.fr, 89/04 */ /* A better trial at setting shading level -- jourdan@minos.inria.fr */ /* Count number of black bits in the pattern together with total number, */ /* compute the average and use this as the PostScript gray level */ void SetShade(register char *cp) { int blackbits = 0, totalbits = 0; while (*cp) { switch (*cp) { case '0': totalbits += 4; break; case '1': case '2': case '4': case '8': blackbits += 1; totalbits += 4; break; case '3': case '5': case '6': case '9': case 'a': case 'A': case 'c': case 'C': blackbits += 2; totalbits += 4; break; case '7': case 'b': case 'B': case 'd': case 'D': case 'e': case 'E': blackbits += 3; totalbits += 4; break; case 'f': case 'F': blackbits += 4; totalbits += 4; break; case ' ': break; default: error("Invalid character in .tx pattern"); break; } cp++; } shadetp = 1.0 - ((double) blackbits / (double) totalbits); shading = GRAY; } /* end of SetShade */ void shadeLast(char *cp) { char tpout[20]; if (*cp) { double tempShadetp; if (sscanf(cp, "%lg ", &tempShadetp) != 1) error ("Illegal format for shade level"); else if (tempShadetp < 0.0 || tempShadetp > 1.0) error ("Invalid shade level"); else /* if "sh" has an argument we can safely assume that tpic 2.0 is used so that all subsequent "sh" commands will come with an explicit argument. Hence we may overwrite shadetp's old value */ /* Also note the inversion of gray levels for tpic 2.0 (0 = white, 1 = black) w.r.t. PostScript (0 = black, 1 = white) */ shadetp = 1.0 - tempShadetp; } shading = GRAY; sprintf(tpout,"%1.3f setgray",shadetp); /* priol@irisa.fr, MJ */ cmdout(tpout); } /* end of shadeLast */ void whitenLast(void) { shading = WHITE; cmdout("1 setgray"); } /* end of whitenLast */ void blackenLast(void) { shading = BLACK; cmdout("0 setgray"); /* actually this aint needed */ } /* end of whitenLast */ #if 0 /* Not used */ static void doShading(void) { if (shading) { cmdout(FILL); shading = NONE; cmdout("0 setgray"); !* default of black *! } else cmdout(STROKE); } !* end of doShading *! #endif /* * We need to calculate (x * convDPI * mag) / (tpicResolution * 1000) * So we use doubleing point. (This should have a very small impact * on the speed of the program.) */ static double zPixRound(register double x, /* in DVI units */ register double convDPI /* dots per inch */ ) /* return rounded number of pixels */ { return ((x * mag * (double)convDPI / (1000.0 * tpicRESOLUTION))) ; } #endif /* TPIC */ dvipsk_TexLive-2009-stripped/output.c0000644000175000017500000013535111372532227017612 0ustar uwabamiuwabami/* * These routines do most of the communicating with the printer. * * LINELENGTH tells the maximum line length to send out. It's been * reduced to 72 because sometimes PostScript files are included in * mail messages and many mailers mutilate longer lines. */ #define LINELENGTH (72) #include "dvips.h" /* The copyright notice in that file is included too! */ #include #include #ifdef OS2 #ifdef _MSC_VER #define popen(pcmd, pmode) _popen(pcmd, pmode) #define pclose(pstream) _pclose(pstream) #endif #endif #ifdef __DJGPP__ #include /* for `isatty' */ #endif /* * The external routines called here: */ #include "protos.h" /* * These are the external variables used by these routines. */ extern integer hh, vv ; extern fontdesctype *curfnt ; extern FILE *bitfile ; extern char *oname ; extern int secure ; extern Boolean reverse ; extern Boolean removecomments ; extern Boolean sendcontrolD, disablecomments, multiplesects ; extern Boolean shiftlowchars ; extern Boolean usesPSfonts, headers_off ; extern Boolean safetyenclose ; extern Boolean cropmarks ; extern Boolean tryepsf ; extern Boolean compressed ; extern Boolean sepfiles ; extern int numcopies ; extern int collatedcopies ; extern integer pagecopies ; extern int totalpages ; extern integer pagenum ; extern Boolean manualfeed ; extern int landscape ; extern int quiet ; extern int prettycolumn ; extern int actualdpi, vactualdpi ; extern char *iname, *nextstring ; extern char *paperfmt ; #ifndef KPATHSEA extern char *headerpath ; extern char *figpath ; #endif extern char errbuf[] ; extern shalfword linepos ; extern struct header_list *ps_fonts_used ; extern char banner[], banner2[] ; extern int gargc ; extern char **gargv ; extern struct papsiz *papsizes ; extern integer hpapersize, vpapersize ; char preamblecomment[256] ; /* usually "TeX output ..." */ #ifdef HPS extern Boolean noprocset, HPS_FLAG ; #endif /* * We need a few statics to take care of things. */ static integer rhh, rvv ; static int instring ; static Boolean lastspecial = 1 ; static shalfword d ; static Boolean popened = 0 ; int lastfont ; /* exported to dospecial to fix rotate.tex problem */ static void chrcmd(char c); /* just a forward declaration */ static char strbuffer[LINELENGTH + 20], *strbp = strbuffer ; static struct papsiz *finpapsiz ; static struct papsiz defpapsiz = { 0, 40258437L, 52099154L, "letter", "" } ; #ifdef CREATIONDATE #if (!defined(VMS) && !defined(MSDOS) && !(defined(OS2) && defined(_MSC_VER)) && !defined(ATARIST)) /* VAXC/MSDOS don't like/need this !! */ #include #include /* time(), at least on BSD Unix */ #endif #include /* asctime() and localtime(), at least on BSD Unix */ static time_t jobtime; #endif /* * This routine copies a file down the pipe. Search path uses the * header path. * * We add code to handle the case of MS-DOS font files. * * Format: 80 {01,02} four byte length in littleendian order data * repeated possibly multiple times. */ static char *hxdata = "0123456789ABCDEF" ; static int infigure ; extern char *infont ; static char possibleDSCLine[81], *dscLinePointer = possibleDSCLine, *dscLineEnd = possibleDSCLine + 80 ; void copyfile_general(char *s, struct header_list *cur_header) { extern char *realnameoffile ; FILE *f = NULL ; int c, prevc = '\n' ; long len ; /* begin DOS EPS code */ int doseps = 0; unsigned long dosepsbegin, dosepsend = 0; int removingBytes = 0 ; char *scanForEnd = 0 ; int scanningFont = 0; /* end DOS EPS code */ #ifdef VMCMS register char *lastdirsep ; register char *trunc_s ; trunc_s = s ; #endif #ifdef MVSXA register char *lastdirsep ; register char *trunc_s ; trunc_s = s ; #endif dscLinePointer = possibleDSCLine ; switch (infigure) { case 1: /* * Look in headerpath too, just in case. This allows common header * or figure files to be installed in the .../ps directory. */ f = search(figpath, s, READBIN) ; if (f == 0) f = search(headerpath, s, READBIN) ; #ifdef VMCMS lastdirsep = strrchr(s, '/') ; if ( NULL != lastdirsep ) trunc_s = lastdirsep + 1 ; (void)sprintf(errbuf, "Couldn't find figure file %s with CMS name %s; continuing.\nNote that an absolute path or a relative path with .. are denied in -R2 mode.", s, trunc_s) ; #else #ifdef MVSXA lastdirsep = strrchr(s, '/') ; if ( NULL != lastdirsep ) trunc_s = lastdirsep + 1 ; (void)sprintf(errbuf, "Couldn't find figure file %s with MVS name %s; continuing.\nNote that an absolute path or a relative path with .. are denied in -R2 mode.", s, trunc_s) ; #else (void)sprintf(errbuf, "Could not find figure file %s; continuing.\nNote that an absolute path or a relative path with .. are denied in -R2 mode.", s) ; #endif #endif break ; #ifndef VMCMS #ifndef MVSXA #ifndef VMS #if !defined(MSDOS) || defined(__DJGPP__) #ifndef ATARIST #ifndef __THINK__ case 2: #ifdef SECURE (void)sprintf(errbuf, "<%s>: Tick filename execution disabled", s) ; #else #ifdef OS2 if (_osmode == OS2_MODE) { #endif if (secure == 0) { (void)sprintf(errbuf, "Execution of <%s> failed ", s) ; f = popen(s, "r") ; if (f != 0) (void)SET_BINARY(fileno(f)) ; } else { (void)sprintf(errbuf,"Secure mode is %d so execute <%s> will not run", secure,s) ; } #ifdef OS2 } #endif #endif break; #endif #endif #endif #endif #endif #endif default: f = search(headerpath, s, READBIN) ; if(cur_header && (cur_header->precode || cur_header->postcode)) { if(f==NULL) f = search(figpath, s, READBIN) ; } (void)sprintf(errbuf, "! Could not find header file %s.\nNote that an absolute path or a relative path with .. are denied in -R2 mode.", s) ; break ; } if (f==NULL) error(errbuf) ; else { if (! quiet) { #if defined(VMCMS) || defined (MVSXA) if (strlen(s) + prettycolumn > STDOUTSIZE) { #else if (strlen(realnameoffile) + prettycolumn > STDOUTSIZE) { #endif fprintf(stderr, "\n") ; prettycolumn = 0 ; } #ifdef VMCMS (void)fprintf(stderr, "<%s>", trunc_s) ; #else #ifdef MVSXA (void)fprintf(stderr, "<%s>", trunc_s) ; #else (void)fprintf(stderr, "<%s>", realnameoffile) ; #endif #endif (void)fflush(stderr) ; #if defined(VMCMS) || defined (MVSXA) prettycolumn += 2 + strlen(s) ; #else prettycolumn += 2 + strlen(realnameoffile) ; #endif } if (linepos != 0) (void)putc('\n', bitfile) ; /* * Suggested by Andrew Trevorrow; don't ever BeginFont a file ending in .enc */ if (infont && strstr(s,".enc")) infont = 0 ; if (! disablecomments) { if (infigure) (void)fprintf(bitfile, "%%%%BeginDocument: %s\n", s) ; else if (infont) (void)fprintf(bitfile, "%%%%BeginFont: %s\n", infont) ; #ifdef HPS else if (noprocset) {} #endif else (void)fprintf(bitfile, "%%%%BeginProcSet: %s 0 0\n", s) ; } if (cur_header && cur_header->precode) { (void)fprintf(bitfile, "%s\n", cur_header->precode) ; free(cur_header->precode) ; } c = getc(f) ; if (c == 0x80) { while (1) { c = getc(f) ; switch(c) { case 1: case 2: len = getc(f) ; len += getc(f) * 256L ; len += getc(f) * 65536L ; len += getc(f) * 256L * 65536 ; if (c == 1) { while (len > 0) { c = getc(f) ; if (c == EOF) { error("premature EOF in MS-DOS font file") ; len = 0 ; } else { if (c == '\r') { /* Mac- or DOS-style text file */ (void)putc('\n', bitfile) ; if ((c = getc(f)) == '\n') /* DOS-style text */ len--; /* consume, but don't generate NL */ else ungetc(c, f); } else (void)putc(c, bitfile) ; len-- ; } } } else { putc('\n', bitfile) ; prevc = 0 ; while (len > 0) { c = getc(f) ; if (c == EOF) { error("premature EOF in MS-DOS font file") ; len = 0 ; } else { (void)putc(hxdata[c >> 4], bitfile) ; (void)putc(hxdata[c & 15], bitfile) ; len-- ; prevc += 2 ; if (prevc >= 76) { putc('\n', bitfile) ; prevc = 0 ; } } } } break ; case 3: goto msdosdone ; default: error("saw type other than 1, 2, or 3 in MS-DOS font file") ; break ; } c = getc(f) ; if (c == EOF) break ; if (c != 0x80) { error("saw non-MSDOS header in MSDOS font file") ; break ; } } msdosdone: prevc = 0 ; } else { /* begin DOS EPS code */ if (c == 'E'+0x80) { if ((getc(f)=='P'+0x80) && (getc(f)=='S'+0x80) && (getc(f)=='F'+0x80)) { doseps = 1; dosepsbegin = getc(f) ; dosepsbegin += getc(f) * 256L ; dosepsbegin += getc(f) * 65536L ; dosepsbegin += getc(f) * 256L * 65536 ; dosepsend = getc(f) ; dosepsend += getc(f) * 256L ; dosepsend += getc(f) * 65536L ; dosepsend += getc(f) * 256L * 65536 ; fseek(f, dosepsbegin, 0); c = getc(f); dosepsend-- ; } else { rewind(f); c = getc(f); } } /* end DOS EPS code */ if (c != EOF) { while (1) { if (c == '\n') { /* end or beginning of line; check DSC */ *dscLinePointer = 0 ; /* make sure we terminate! * might be a new empty line! */ if (strncmp(possibleDSCLine, "%%BeginBinary:", 14) == 0 || strncmp(possibleDSCLine, "%%BeginData:", 12) == 0 || strncmp(possibleDSCLine, "%%BeginFont:", 12) == 0) { integer size = 0 ; char *p = possibleDSCLine ; *dscLinePointer = 0 ; *dscLineEnd = 0 ; if (scanForEnd == 0 && removecomments) (void)fputs(possibleDSCLine, bitfile) ; if (strncmp(possibleDSCLine, "%%BeginFont:", 12) == 0) { /* Theoretically, we could wait until we see the "currentfile eexec" and possibly even check that the following data really looks like binary before we begin verbatim copying, but that would complicate the code beyond our present needs. If we were going to do that much work, this entire chunk of code should probably be rewritten. [dmj@ams.org, 2007/08/20] */ scanForEnd = "%%EndFont"; scanningFont = 1; } else { scanningFont = 0; scanForEnd = 0 ; while (*p != ':') p++ ; p++ ; while (*p && *p <= ' ') p++ ; if ('0' > *p || *p > '9') { /* * No byte count! We need to scan for end binary * or end data, and hope we get it right. Really * the file is malformed. */ scanForEnd = "Yes" ; } while ('0' <= *p && *p <= '9') { size = size * 10 + *p - '0' ; p++ ; } while (*p && *p <= ' ') p++ ; if (*p == 'h' || *p == 'H') /* * Illustrator 8 and 9 have bogus byte counts * for hex data. But if it is hex, we assume * that it is safe to use ASCII scanning, so * we do so. */ scanForEnd = "Yes" ; while (*p > ' ') /* ignore Hex/Binary/ASCII */ p++ ; while (*p && *p <= ' ') p++ ; (void)putc(c, bitfile) ; if (c == '\r') { /* maybe we have a DOS-style text file */ c = getc(f); if (c == '\n') { (void)putc(c, bitfile); dosepsend-- ; } else ungetc(c, f); } if (scanForEnd != 0) { if (strncmp(possibleDSCLine, "%%BeginBinary", 13) == 0) scanForEnd = "%%EndBinary" ; else scanForEnd = "%%EndData" ; } } if (scanForEnd == 0) { if (strncmp(p, "lines", 5) != 0 && strncmp(p, "Lines", 5) != 0) { for (; size>0; size--) { c = getc(f) ; dosepsend-- ; if (c == EOF) error( "! premature end of file in binary section") ; (void)putc(c, bitfile) ; } } else { /* * Count both newlines and returns, and when either * goes over the count, we are done. */ int newlines=0, returns=0 ; while (newlines < size && returns < size) { c = getc(f) ; dosepsend-- ; if (c == EOF) error( "! premature end of file in binary section") ; (void)putc(c, bitfile) ; if (c == '\n') newlines++ ; else if (c == '\r') returns++ ; } /* * If we've seen precisely one too few newlines, * and the next char is a newline, include it too. */ if (returns == newlines + 1) { if ((c = getc(f)) == '\n') { putc(c, bitfile) ; dosepsend-- ; } else { ungetc(c, f); } } } c = getc(f) ; dosepsend-- ; if (c == '\n' || c == '\r') { (void)putc(c, bitfile) ; if (c == '\r') { /* DOS-style text file? */ c = getc(f); dosepsend-- ; if (c == '\n') { putc(c, bitfile); c = getc(f); dosepsend-- ; } } else { c = getc(f) ; dosepsend-- ; } } if (c != '%') { /* try to find %%EndBinary or %%EndData anywhere in the rest of the file, and pretend it worked; this works around various Illustrator bugs. -tgr, 14 June 2003 */ char *m1 = "%%EndData" ; char *m2 = "%%EndBinary" ; char *p1 = m1 ; char *p2 = m2 ; error( " expected to see %%EndBinary at end of data; struggling on") ; while (1) { (void)putc(c, bitfile) ; if (c == '\r' || c == '\n') { if (c == '\r') { /* DOS-style text file? */ c = getc(f); if (c != '\n') ungetc(c, f); else dosepsend-- ; } break ; } c = getc(f) ; dosepsend-- ; if (c == EOF) error( "! premature end of file in binary section") ; /* * By the way, this code can be fooled by things like %%%EndBinary * or even %%EndBi%%EndBinary, but this isn't valid DSC anyway. * This comment is mainly here to prevent anyone else from emulating * this code when doing stream-based substring matching. */ if (c == *p1) { p1++ ; if (*p1 == 0) break ; } else { p1 = m1 ; } if (c == *p2) { p2++ ; if (*p2 == 0) break ; } else { p2 = m2 ; } } } while (1) { (void)putc(c, bitfile) ; if (c == '\r' || c == '\n') { if (c == '\r') { /* DOS-style text file? */ c = getc(f); if (c != '\n') ungetc(c, f); else { (void)putc(c, bitfile) ; dosepsend-- ; } } break ; } c = getc(f) ; removingBytes = 0; dosepsend-- ; if (c == EOF) error( "! premature end of file in binary section") ; } c = getc(f) ; dosepsend-- ; } } else if (scanForEnd && strncmp(possibleDSCLine, scanForEnd, strlen(scanForEnd))==0) { scanForEnd = 0 ; scanningFont = 0; } dscLinePointer = possibleDSCLine ; } else if (dscLinePointer < dscLineEnd) { *dscLinePointer++ = c ; if (removecomments && scanForEnd == 0 && c == '%' && dscLinePointer == possibleDSCLine + 1) { /* % is first char */ c = getc(f) ; if (c == '%' || c == '!') removingBytes = 1 ; if (c != EOF) ungetc(c, f) ; c = '%' ; } } #ifdef VMCMS if (c != 0x37 || scanningFont) { #else #ifdef MVSXA if (c != 0x37 || scanningFont) { #else if (c != 4 || scanningFont) { #endif #endif if (!removingBytes) (void)putc(c, bitfile) ; } prevc = c ; /* begin DOS EPS code */ if (doseps && (dosepsend <= 0)) break; /* stop at end of DOS EPS PostScript section */ /* end DOS EPS code */ c = getc(f) ; dosepsend-- ; if (c == EOF) break ; else if (c == '\r' && ! scanningFont) { c = getc(f); if (c == '\n') { /* DOS-style text file? */ if (!removingBytes) (void)putc('\r', bitfile); dosepsend-- ; } else ungetc(c, f); c = '\n' ; } if (prevc == '\n') removingBytes = 0 ; } } } if (prevc != '\n') (void)putc('\n', bitfile) ; linepos = 0 ; #ifndef VMCMS #ifndef MVSXA #ifndef VMS #if !defined(MSDOS) || defined(__DJGPP__) #ifndef ATARIST #ifndef __THINK__ if (infigure == 2) #ifdef OS2 { if (_osmode == OS2_MODE) (void)pclose(f) ; } #else (void)pclose(f) ; #endif else #endif #endif #endif #endif #endif #endif (void)fclose(f) ; if (cur_header && cur_header->postcode) { (void)fprintf(bitfile, "\n%s", cur_header->postcode) ; free(cur_header->postcode) ; } if (!disablecomments) { if (infigure) (void)fprintf(bitfile, "\n%%%%EndDocument\n") ; else if (infont) (void)fprintf(bitfile, "\n%%%%EndFont\n") ; #ifdef HPS else if (noprocset) {} #endif else (void)fprintf(bitfile, "\n%%%%EndProcSet\n") ; } } } void copyfile(char *s) { copyfile_general(s, NULL) ; } /* * For included PostScript graphics, we use the above routine, but * with no fatal error message. */ void figcopyfile(char *s, int systemtype) { infigure = systemtype ? 2 : 1 ; copyfile(s) ; infigure = 0 ; } /* * This next routine writes out a `special' character. In this case, * we simply put it out, since any special character terminates the * preceding token. */ void specialout(char c) { if (linepos >= LINELENGTH) { (void)putc('\n', bitfile) ; linepos = 0 ; } (void)putc(c, bitfile) ; linepos++ ; lastspecial = 1 ; } void stringend(void) { if (linepos + instring >= LINELENGTH - 2) { (void)putc('\n', bitfile) ; linepos = 0 ; } (void)putc('(', bitfile) ; *strbp = 0 ; (void)fputs(strbuffer, bitfile) ; (void)putc(')', bitfile) ; linepos += instring + 2 ; lastspecial = 1 ; instring = 0 ; strbp = strbuffer ; } #ifdef SHIFTLOWCHARS /* * moving chars 0-32 and 127 to higher positions * is desirable when using some fonts */ int T1Char(int c) { int tmpchr = c; if (shiftlowchars && curfnt->resfont) { if ((tmpchr <= 0x20)&&(tmpchr>=0)) { if (tmpchr < 0x0A) { tmpchr += 0xA1; } else { tmpchr += 0xA3; } } else if (tmpchr == 0x7F) { tmpchr = 0xC4; } } if (curfnt->chardesc[tmpchr].flags2 & EXISTS) tmpchr = c ; return tmpchr; } #endif void scout(unsigned char c) /* string character out */ { /* * Is there room in the buffer? LINELENGTH-6 is used because we * need room for (, ), and a possible four-byte string \000, for * instance. If it is too long, we send out the string. */ if (instring > LINELENGTH-6) { stringend() ; chrcmd('p') ; } #ifdef SHIFTLOWCHARS c=T1Char(c); #endif /* changed next line to hex representation for VMCMS port if (c<' ' || c > 126 || c=='%' ) { */ if ( c<0x20 || c>= 0x7F || c==0x25 ) { *strbp++ = '\\' ; *strbp++ = '0' + ((c >> 6) & 3) ; *strbp++ = '0' + ((c >> 3) & 7) ; *strbp++ = '0' + (c & 7) ; instring += 4 ; } else { #ifdef VMCMS c = ascii2ebcdic[c]; #else #ifdef MVSXA c = ascii2ebcdic[c]; #endif #endif if (c == '(' || c == ')' || c == '\\') { *strbp++ = '\\' ; *strbp++ = c ; instring += 2 ; } else { *strbp++ = c ; instring++ ; } } } static void scout2(int c) { char s[64] ; sprintf(s, "<%04x>p", c) ; cmdout(s) ; } void cmdout(char *s) { int l ; /* hack added by dorab */ if (instring) { stringend(); chrcmd('p'); } l = strlen(s) ; if ((! lastspecial && linepos >= LINELENGTH - 20) || linepos + l >= LINELENGTH) { (void)putc('\n', bitfile) ; linepos = 0 ; lastspecial = 1 ; } else if (! lastspecial) { (void)putc(' ', bitfile) ; linepos++ ; } (void)fputs(s, bitfile) ; linepos += l ; lastspecial = 0 ; } static void chrcmd(char c) { if ((! lastspecial && linepos >= LINELENGTH - 20) || linepos + 2 > LINELENGTH) { (void)putc('\n', bitfile) ; linepos = 0 ; lastspecial = 1 ; } else if (! lastspecial) { (void)putc(' ', bitfile) ; linepos++ ; } (void)putc(c, bitfile) ; linepos++ ; lastspecial = 0 ; } void floatout(float n) { char buf[20] ; (void)sprintf(buf, "%.2f", n) ; cmdout(buf) ; } void doubleout(double n) { char buf[40] ; (void)sprintf(buf, "%g", n) ; cmdout(buf) ; } void numout(integer n) { char buf[10] ; #ifdef SHORTINT (void)sprintf(buf, "%ld", n) ; #else (void)sprintf(buf, "%d", n) ; #endif cmdout(buf) ; } void mhexout(register unsigned char *p, register long len) { register char *hexchar = hxdata ; register int n, k ; while (len > 0) { if (linepos > LINELENGTH - 2) { (void)putc('\n', bitfile) ; linepos = 0 ; } k = (LINELENGTH - linepos) >> 1 ; if (k > len) k = len ; len -= k ; linepos += (k << 1) ; while (k--) { n = *p++ ; (void)putc(hexchar[n >> 4], bitfile) ; (void)putc(hexchar[n & 15], bitfile) ; } } } void fontout(int n) { char buf[6] ; if (instring) { stringend() ; chrcmd('p') ; } makepsname(buf, n) ; cmdout(buf) ; } void hvpos(void) { if (rvv != vv) { if (instring) { stringend() ; numout(hh) ; numout(vv) ; chrcmd('y') ; } else if (rhh != hh) { numout(hh) ; numout(vv) ; chrcmd('a') ; } else { /* hard to get this case, but it's there when you need it! */ numout(vv - rvv) ; chrcmd('x') ; } rvv = vv ; } else if (rhh != hh) { if (instring) { stringend() ; if (hh - rhh < 5 && rhh - hh < 5) { #ifdef VMCMS /* should replace 'p' in non-VMCMS line as well */ chrcmd(ascii2ebcdic[(char)(112 + hh - rhh)]) ; #else #ifdef MVSXA /* should replace 'p' in non-MVSXA line as well */ chrcmd(ascii2ebcdic[(char)(112 + hh - rhh)]) ; #else chrcmd((char)('p' + hh - rhh)) ; #endif #endif } else if (hh - rhh < d + 5 && rhh - hh < 5 - d) { #ifdef VMCMS /* should replace 'g' in non-VMCMS line as well */ chrcmd(ascii2ebcdic[(char)(103 + hh - rhh - d)]) ; #else #ifdef MVSXA /* should replace 'g' in non-MVSXA line as well */ chrcmd(ascii2ebcdic[(char)(103 + hh - rhh - d)]) ; #else chrcmd((char)('g' + hh - rhh - d)) ; #endif #endif d = hh - rhh ; } else { numout(hh - rhh) ; chrcmd('b') ; d = hh - rhh ; } } else { numout(hh - rhh) ; chrcmd('w') ; } } rhh = hh ; } /* * initprinter opens the bitfile and writes the initialization sequence * to it. */ void newline(void) { if (linepos != 0) { (void)fprintf(bitfile, "\n") ; linepos = 0 ; } lastspecial = 1 ; } void nlcmdout(char *s) { newline() ; cmdout(s) ; newline() ; } /* * Is the dimension close enough for a match? We use 5bp * as a match; this is 65536*72.27*5/72 or 328909 scaled points. */ static int indelta(integer i) { if (i < 0) i = -i ; return (i <= 328909) ; } /* * A case-irrelevant string compare. */ int mlower(int c) { if ('A' <= c && c <= 'Z') return c - 'A' + 'a' ; else return c ; } int ncstrcmp(char *a, char *b) { while (*a && (*a == *b || mlower(*a) == mlower(*b))) a++, b++ ; if (*a == 0 && *b == 0) return 0 ; else return 1 ; } /* * Find the paper size. */ void findpapersize(void) { if (finpapsiz == 0) { struct papsiz *ps ; struct papsiz *fps = 0 ; int ih, iv, it ; int mindiff = 0x7fffffff ; if (tryepsf && !landscape) { finpapsiz = &defpapsiz ; hpapersize = defpapsiz.xsize ; vpapersize = defpapsiz.ysize ; return ; } if (cropmarks) { /* * If user wanted crop marks, we increase the size of the page by * a half inch all around. */ if (hpapersize == 0 || vpapersize == 0) { error( "warning: -k crop marks wanted, but no paper size specified; using default") ; if (landscape) { hpapersize = defpapsiz.ysize ; vpapersize = defpapsiz.xsize ; } else { hpapersize = defpapsiz.xsize ; vpapersize = defpapsiz.ysize ; } } hpapersize += 2368143L ; vpapersize += 2368143L ; add_header(CROPHEADER) ; } if (paperfmt && *paperfmt) { for (ps = papsizes; ps; ps = ps->next) if (ncstrcmp(paperfmt, ps->name)==0) finpapsiz = ps ; if (finpapsiz == 0) error("no match for papersize") ; } if (finpapsiz == 0 && hpapersize > 0 && vpapersize > 0) { for (ps=papsizes; ps; ps = ps->next) { ih = ps->xsize-hpapersize ; iv = ps->ysize-vpapersize ; if (ih < 0) ih = -ih ; if (iv < 0) iv = -iv ; it = ih ; if (it < iv) it = iv ; if (it < mindiff) { mindiff = it ; fps = ps ; } } if (indelta(mindiff)) landscape = 0 ; else fps = 0 ; mindiff = 0x7fffffff ; if (fps == 0) { for (ps=papsizes; ps; ps = ps->next) { iv = ps->ysize-hpapersize ; ih = ps->xsize-vpapersize ; if (ih < 0) ih = -ih ; if (iv < 0) iv = -iv ; it = ih ; if (it < iv) it = iv ; if (it < mindiff) { mindiff = it ; fps = ps ; } } if (indelta(mindiff)) landscape = 1 ; else fps = 0 ; if (fps == 0) { for (ps=papsizes; ps; ps = ps->next) { if (ps->ysize == 0 && ps->xsize == 0) { fps = ps ; break ; } } if (fps == 0) { landscape = (hpapersize > vpapersize) ; error( "no match for special paper size found; using default") ; } } } finpapsiz = fps ; } if (finpapsiz == 0) { if (papsizes) finpapsiz = papsizes ; else finpapsiz = &defpapsiz ; /* * But change xsize/ysize to match so bounding box works. */ if (hpapersize && vpapersize) { if (landscape) { finpapsiz->ysize = hpapersize ; finpapsiz->xsize = vpapersize ; } else { finpapsiz->xsize = hpapersize ; finpapsiz->ysize = vpapersize ; } } } /* * Here, there was no papersize special. We set the paper size from * the selected paper format. If the selected paper format has no * sizes, we use the defaults. */ if (hpapersize == 0 || vpapersize == 0) { if (finpapsiz->xsize == 0 || finpapsiz->ysize == 0) { finpapsiz->xsize = defpapsiz.xsize ; finpapsiz->ysize = defpapsiz.ysize ; } if (landscape) { vpapersize = finpapsiz->xsize ; hpapersize = finpapsiz->ysize ; } else { hpapersize = finpapsiz->xsize ; vpapersize = finpapsiz->ysize ; } /* * Here, there was a papersize special, but the selected paper * format has 0 0 for sizes. We set the sizes here so that the * bounding box works. */ } else if (finpapsiz->xsize == 0 || finpapsiz->ysize == 0) { finpapsiz->xsize = hpapersize ; finpapsiz->ysize = vpapersize ; /* * Here, the user specified a size with -t, and there was a * papersize special, and its sizes were greater than zero. * We make sure the sizes are okay. Note that the user must have * specified landscape if this is desired. */ } else if (paperfmt && *paperfmt) { if (landscape) { if (!indelta(vpapersize - finpapsiz->xsize) || !indelta(hpapersize - finpapsiz->ysize)) { if (vpapersize > finpapsiz->xsize || hpapersize > finpapsiz->ysize) error("warning: -t selected paper may be too small") ; else error("note: -t selected paper may be too large") ; } } else { if (!indelta(hpapersize - finpapsiz->xsize) || !indelta(vpapersize - finpapsiz->ysize)) { if (hpapersize > finpapsiz->xsize || vpapersize > finpapsiz->ysize) error("warning: -t selected paper may be too small") ; else error("note: -t selected paper may be too large") ; } } } } } /* * Convert scaled points to PostScript points. This is the same * as return (i * 72 / (65536 * 72.27)), which is the same as * dividing by 65781.76, but we want to round up. */ static int topoints(integer i) { i += 65780L ; return (i / 6578176L)*100 + (i % 6578176) * 100 / 6578176 ; } /* * Send out the special paper stuff. If `hed' is non-zero, only * send out lines starting with `!' else send all other lines out. */ void paperspec(char *s, int hed) { int sendit ; while (*s) { s++ ; if (*s == '\0') return ; if (*s == '!') { s++ ; while (*s == ' ') s++ ; sendit = hed ; } else sendit = ! hed ; if (sendit) { while (*s && *s != '\n') (void)putc(*s++, bitfile) ; putc('\n', bitfile) ; } else { while (*s && *s != '\n') s++ ; } } } char * epsftest(integer bop) { if (tryepsf && paperfmt == 0 && *iname) { findbb(bop+44) ; return nextstring ; } return 0 ; } static char *isepsf = 0 ; static int endprologsent ; void open_output(void) { FILE * pf = NULL; if (*oname != 0) { /* * We check to see if the first character is a exclamation * point, and popen if so. */ if (*oname == '!' || *oname == '|') { #if defined (MSDOS) && !defined (__DJGPP__) error("! can't open output pipe") ; #else #ifdef VMS error("! can't open output pipe") ; #else #ifdef VMCMS error("! can't open output pipe") ; #else #ifdef MVSXA error("! can't open output pipe") ; #else #ifdef __THINK__ error("! can't open output pipe") ; #else #ifdef ATARIST error("! can't open output pipe") ; #else #ifdef OS2 if (_osmode != OS2_MODE) { error("! can't open output pipe") ; } else { #endif #ifdef __DJGPP__ /* Feature: if they pipe to "lpr" and there's no executable by that name anywhere in sight, write to local printer instead. We do this up front, before even trying to popen, because on MS-DOS popen always succeeds for writing (it only opens a temporary file), and by the time we get to actually run the (possibly nonexistent) program in pclose, it's too late to fall back. We don't use kpathsea functions here because they don't know about DOS-specific executable extensions, while we want to be able to find "lpr.exe", "lpr.com", "lpr.bat" etc. */ extern char *__dosexec_find_on_path(const char *, char **, char *) ; extern char **environ ; char *p = oname + 1 ; char found[FILENAME_MAX] ; while (ISSPACE(*p)) p++ ; if (strncmp(p, "lpr", 3) == 0 && (ISSPACE(p[3]) || p[3] == '\0') && !__dosexec_find_on_path(oname+1, (char **)0, found) && !__dosexec_find_on_path(oname+1, environ, found)) pf = fopen("PRN", "w") ; #endif if (pf == NULL && (pf = popen(oname+1, "w")) != NULL) popened = 1; if (pf == NULL) error("! couldn't open output pipe") ; bitfile = pf; #ifdef OS2 } #endif #endif #endif #endif #endif #endif #endif } else { if ((bitfile=fopen(oname,"w"))==NULL) error("! couldn't open PostScript file") ; } } else { bitfile = stdout ; } /* Even PostScript output may include binary characters, so switch bitfile to binary mode. */ if (O_BINARY && !isatty(fileno(bitfile))) SET_BINARY(fileno(bitfile)) ; } void initprinter(sectiontype *sect) { void tell_needed_fonts() ; int n = sect->numpages * pagecopies * collatedcopies ; #ifdef HPS if (!HPS_FLAG) #endif open_output() ; findpapersize() ; if (disablecomments) { (void)fprintf(bitfile, "%%!PS (but not EPSF; comments have been disabled)\n") ; (void)fprintf(stderr, "Warning: no %%%%Page comments generated.\n") ; } else { if (multiplesects) { (void)fprintf(bitfile, "%%!PS (but not EPSF because of memory limits)\n") ; (void)fprintf(stderr, "Warning: no %%%%Page comments generated.\n") ; } else { isepsf = epsftest(sect->bos) ; if (isepsf) (void)fprintf(bitfile, "%%!PS-Adobe-2.0 EPSF-2.0\n") ; else (void)fprintf(bitfile, "%%!PS-Adobe-2.0\n") ; } if (tryepsf && isepsf == 0) error("We tried, but couldn't make it EPSF.") ; (void)fprintf(bitfile, "%%%%Creator: %s\n", banner + 8) ; if (*iname) (void)fprintf(bitfile, "%%%%Title: %s\n", iname) ; #ifdef CREATIONDATE jobtime=time(0); (void)fprintf(bitfile, "%%%%CreationDate: %s", asctime(localtime(&jobtime))) ; #endif if (! isepsf) { /* * Normally, we wouldn't want to add that second field * indicating that the page order is reversed, as per page * 644 of the Red book. But we have to, for many existing * spoolers. */ (void)fprintf(bitfile, "%%%%Pages: %d%s\n", (sepfiles ? n : totalpages), (reverse?" -1":"")) ; (void)fprintf(bitfile, "%%%%PageOrder: %sscend\n", reverse?"De":"A"); } if (landscape) { fprintf(bitfile, "%%%%Orientation: Landscape\n") ; fprintf(bitfile, "%%%%BoundingBox: 0 0 %d %d\n", topoints(finpapsiz->xsize), topoints(finpapsiz->ysize)) ; } else if (isepsf) fprintf(bitfile, "%%%%BoundingBox: %s\n", isepsf) ; else fprintf(bitfile, "%%%%BoundingBox: 0 0 %d %d\n", topoints(finpapsiz->xsize), topoints(finpapsiz->ysize)) ; tell_needed_fonts() ; paperspec(finpapsiz->specdat, 1) ; (void)fprintf(bitfile, "%%%%EndComments\n") ; } { int i, len ; char *p ; /* * Here, too, we have to be careful not to exceed the line length * limitation, if possible. */ (void)fprintf(bitfile, "%%DVIPSWebPage: %s\n", banner2) ; (void)fprintf(bitfile, "%%DVIPSCommandLine:") ; len = 18 ; for (i=0; i ' ') p++ ; if (*p) len += 2 ; len += strlen(gargv[i]) + 1 ; if (len > LINELENGTH) { (void)fprintf(bitfile, "\n%%+") ; len = strlen(gargv[i]) + 3 ; if (*p) len += 2 ; } (void)fprintf(bitfile, (*p ? " \"%s\"" : " %s"), gargv[i]) ; } (void)fprintf(bitfile, "\n%%DVIPSParameters: dpi=%d", actualdpi) ; if (actualdpi != vactualdpi) (void)fprintf(bitfile, "x%d", vactualdpi) ; if (compressed) (void)fprintf(bitfile, ", compressed") ; if (removecomments) (void)fprintf(bitfile, ", comments removed") ; (void)fputc('\n', bitfile) ; } #ifdef VMCMS /* convert preamblecomment to ebcdic so we can read it */ { int i ; for ( i=0 ; preamblecomment[i] ; i++ ) preamblecomment[i] = ascii2ebcdic[preamblecomment[i]] ; } #else #ifdef MVSXA /* IBM: MVS/XA */ { int i ; for ( i=0 ; preamblecomment[i] ; i++ ) preamblecomment[i] = ascii2ebcdic[preamblecomment[i]] ; } #endif /* VMCMS */ #endif (void)fprintf(bitfile, "%%DVIPSSource: %s\n", preamblecomment) ; linepos = 0 ; endprologsent = 0 ; if (safetyenclose) (void)fprintf(bitfile, "/SafetyEnclosure save def\n") ; if (! headers_off) send_headers() ; } void setup(void) { newline() ; if (endprologsent == 0 && !disablecomments) { (void)fprintf(bitfile, "%%%%EndProlog\n") ; (void)fprintf(bitfile, "%%%%BeginSetup\n") ; if (vactualdpi == actualdpi) (void)fprintf(bitfile, "%%%%Feature: *Resolution %ddpi\n", actualdpi) ; else (void)fprintf(bitfile, "%%%%Feature: *Resolution %dx%ddpi\n", actualdpi, vactualdpi) ; if (multiplesects && *(finpapsiz->specdat)) { (void)fprintf(bitfile, "TeXDict begin\n") ; paperspec(finpapsiz->specdat, 0) ; (void)fprintf(bitfile, "end\n") ; } if (manualfeed) (void)fprintf(bitfile, "%%%%Feature: *ManualFeed True\n") ; #ifdef HPS if (!HPS_FLAG) #endif if (multiplesects) (void)fprintf(bitfile, "%%%%EndSetup\n") ; } if (multiplesects && ! disablecomments) (void)fprintf(bitfile, "%%DVIPSBeginSection\n") ; cmdout("TeXDict") ; cmdout("begin") ; if (endprologsent || disablecomments || multiplesects == 0) { (void)fprintf(bitfile, "\n") ; paperspec(finpapsiz->specdat, 0) ; } if (manualfeed) cmdout("@manualfeed") ; if (landscape) cmdout("@landscape") ; if (numcopies != 1) { numout((integer)numcopies) ; cmdout("@copies") ; } cmdout("end") ; if (endprologsent == 0 && !disablecomments) { newline() ; endprologsent = 1 ; #ifdef HPS if (!HPS_FLAG) #endif if (! multiplesects) (void)fprintf(bitfile, "%%%%EndSetup\n") ; } #ifdef HPS if (HPS_FLAG) { fclose(bitfile) ; set_bitfile("body.tmp",0) ; } #endif } /* * cleanprinter is the antithesis of the above routine. */ void cleanprinter(void) { (void)fprintf(bitfile, "\n") ; (void)fprintf(bitfile, "userdict /end-hook known{end-hook}if\n") ; if (safetyenclose) (void)fprintf(bitfile, "SafetyEnclosure restore\n") ; if (!disablecomments) (void)fprintf(bitfile, "%%%%EOF\n") ; if (sendcontrolD) (void)putc(4, bitfile) ; if (ferror(bitfile)) error("Problems with file writing; probably disk full.") ; #if !defined(MSDOS) || defined(__DJGPP__) #ifndef VMS #ifndef MVSXA #ifndef VMCMS #ifndef __THINK__ #ifndef ATARIST #ifdef OS2 if (_osmode == OS2_MODE) #endif if (popened) (void)pclose(bitfile) ; #endif #endif #endif #endif #endif #endif if (popened == 0) (void)fclose(bitfile) ; bitfile = NULL ; } /* this tells dvips that it has no clue where it is. */ static int thispage = 0 ; static integer rulex, ruley ; void psflush(void) { rulex = ruley = rhh = rvv = -314159265 ; lastfont = -1 ; } /* * pageinit initializes the output variables. */ void pageinit(void) { psflush() ; newline() ; thispage++ ; if (!disablecomments) { if (multiplesects) #ifdef SHORTINT (void)fprintf(bitfile, "%%DVIPSSectionPage: %ld\n", pagenum) ; else if (! isepsf) (void)fprintf(bitfile, "%%%%Page: %ld %d\n", pagenum, thispage) ; #else (void)fprintf(bitfile, "%%DVIPSSectionPage: %d\n", pagenum) ; else if (! isepsf) (void)fprintf(bitfile, "%%%%Page: %d %d\n", pagenum, thispage) ; #endif } linepos = 0 ; cmdout("TeXDict") ; cmdout("begin") ; #ifdef HPS if (HPS_FLAG) { cmdout("HPSdict") ; cmdout("begin") ; } #endif if (landscape) cmdout("@landscape") ; numout((integer)pagenum) ; numout((integer)thispage-1) ; cmdout("bop") ; d = 0 ; } /* * This routine ends a page. */ void pageend(void) { if (instring) { stringend() ; chrcmd('p') ; } cmdout("eop") ; cmdout("end") ; #ifdef HPS if (HPS_FLAG) cmdout("end") ; #endif } /* * drawrule draws a rule at the specified position. * It does nothing to save/restore the current position, * or even draw the current string. (Rules are normally * set below the baseline anyway, so this saves us on * output size almost always.) */ void drawrule(integer rw, integer rh) { numout((integer)hh) ; numout((integer)vv) ; if (rw == rulex && rh == ruley) chrcmd('V') ; else { numout((integer)rw) ; numout((integer)rh) ; chrcmd('v') ; rulex = rw ; ruley = rh ; } } /* * drawchar draws a character at the specified position. */ void drawchar(chardesctype *c, int cc) { hvpos() ; if (lastfont != curfnt->psname) { fontout((int)curfnt->psname) ; lastfont = curfnt->psname ; } if (curfnt->codewidth==1) scout((unsigned char)cc) ; else scout2(cc) ; rhh = hh + c->pixelwidth ; /* rvv = rv */ } /* * This routine sends out the document fonts comment. */ void tell_needed_fonts(void) { struct header_list *hl = ps_fonts_used ; char *q ; int roomleft = -1 ; if (hl == 0) return ; while (0 != (q=get_name(&hl))) { if ((int)strlen(q) >= roomleft) { if (roomleft != -1) { fprintf(bitfile, "\n%%%%+") ; roomleft = LINELENGTH - 3 ; } else { fprintf(bitfile, "%%%%DocumentFonts:") ; roomleft = LINELENGTH - 16 ; } } fprintf(bitfile, " %s", q) ; roomleft -= strlen(q) + 1 ; } fprintf(bitfile, "\n") ; } dvipsk_TexLive-2009-stripped/search.c0000644000175000017500000004216511372532227017517 0ustar uwabamiuwabami/* * The search routine takes a directory list, separated by PATHSEP, and * tries to open a file. Null directory components indicate current * directory. In an environment variable, null directory components * indicate substitution of the default path list at that point. */ #include "dvips.h" /* The copyright notice in that file is included too! */ #include "protos.h" #ifdef KPATHSEA #include #include #include #include #include extern char name[]; #else #include #if !defined(WIN32) extern int fclose(); /* these added to keep SunOS happy */ extern int pclose(); extern char *getenv(); #endif #ifdef OS2 #include FILE *fat_fopen(); #endif #if defined(SYSV) || defined(VMS) || defined(__THINK__) || defined(MSDOS) || defined(OS2) || defined(ATARIST) || defined(WIN32) #define MAXPATHLEN (2000) #else #include /* for MAXPATHLEN */ #endif #if !defined(MSDOS) && !defined(OS2) && !defined(WIN32) #ifndef VMS #ifndef MVSXA #ifndef VMCMS /* IBM: VM/CMS */ #ifndef __THINK__ #ifndef ATARIST #include #endif #endif #endif #endif /* IBM: VM/CMS */ #endif #endif #endif /* KPATHSEA */ /* * * We hope MAXPATHLEN is enough -- only rudimentary checking is done! */ #ifndef SECURE extern int secure ; #endif #ifdef DEBUG extern integer debug_flag; #endif /* DEBUG */ extern char *mfmode ; extern int actualdpi ; int to_close ; #ifdef KPATHSEA #ifndef UNCOMPRESS #define UNCOMPRESS "uncompress" #endif #ifndef GUNZIP #define GUNZIP "gzip -d" #endif #ifndef BUNZIP2 #define BUNZIP2 "bzip2 -d" #endif #endif #ifdef KPATHSEA char *realnameoffile ; FILE * search(kpse_file_format_type format, char *file, char *mode) { FILE *ret; string found_name; /* This change suggested by maj@cl.cam.ac.uk to disallow reading of arbitrary files. Further modified by Y. Oiwa. */ #ifndef SECURE if (secure == 2) { #endif /* an absolute path is denied */ if (kpse_absolute_p (file, false)) return NULL; if (file[0] == '.' && file[1] == '.' && IS_DIR_SEP(file[2])) { /* a relative path starting with ../ is denied */ return NULL; } else { /* a relative path containing /../ is denied */ char *p; if (file[0] != '\0') { for(p = file + 1; *p && ((p = strstr(p, "..")) != NULL); p += 2) { /* p[2] is valid, because p points to string starting with ".." */ /* p[-1] is valid, because p does not point the top of file */ if ((p[2] == '\0' || IS_DIR_SEP(p[2])) && IS_DIR_SEP(p[-1])) { return NULL; } } } } #ifndef SECURE } #endif /* Most file looked for through here must exist -- the exception is VF's. Bitmap fonts go through pksearch. */ found_name = kpse_find_file (file, format, format != vfpath && format != ofmpath); if (found_name) { unsigned len = strlen (found_name); #ifndef AMIGA if ((format == figpath || format == headerpath) && ((len > 2 && FILESTRCASEEQ (found_name + len - 2, ".Z")) || (len > 3 && FILESTRCASEEQ (found_name + len - 3, ".gz")))) { /* FIXME : use zlib instead of gzip ! */ char *cmd = concat3 (GUNZIP, " -c ", found_name); ret = popen (cmd, "r"); to_close = USE_PCLOSE ; } else { #endif /* not AMIGA */ ret = fopen (found_name, mode); to_close = USE_FCLOSE ; #ifndef AMIGA } #endif /* not AMIGA */ if (!ret) FATAL_PERROR (found_name); /* Free result of previous search. */ if (realnameoffile) free (realnameoffile); /* Save in `name' and `realnameoffile' because other routines access those globals. Sigh. */ realnameoffile = found_name; strcpy(name, realnameoffile); } else ret = NULL; return ret; } /* end search */ FILE * pksearch(char *file, char *mode, halfword dpi, char **name_ret, int *dpi_ret) { FILE *ret; kpse_glyph_file_type font_file; string found_name = kpse_find_pk (file, dpi, &font_file); if (found_name) { ret = fopen (found_name, mode); if (!ret) FATAL_PERROR (name); /* Free result of previous search. */ if (realnameoffile) free (realnameoffile); /* Save in `name' and `realnameoffile' because other routines access those globals. Sigh. */ realnameoffile = found_name; strcpy(name, realnameoffile); *name_ret = font_file.name; *dpi_ret = font_file.dpi; } else ret = NULL; return ret; } /* end search */ #else /* ! KPATHSEA */ char realnameoffile[MAXPATHLEN] ; extern char *figpath, *pictpath, *headerpath ; FILE * search(char *path, char *file, char *mode) { register char *nam ; /* index into fname */ register FILE *fd ; /* file desc of file */ char fname[MAXPATHLEN] ; /* to store file name */ static char *home = 0 ; /* home is where the heart is */ int len = strlen(file) ; int tryz = 0 ; if (len>=3 && ((file[len-2] == '.' && file[len-1] == 'Z') || (file[len-3] == '.' && file[len-2] == 'g' && file[len-1] == 'z')) && (path==figpath || path==pictpath || path==headerpath)) tryz = file[len-1] ; to_close = USE_FCLOSE ; #ifdef MVSXA char fname_safe[256]; register int i, firstext, lastext, lastchar; #endif #ifdef VMCMS /* IBM: VM/CMS - we don't have paths or dirsep's but we strip off filename if there is a Unix path dirsep */ register char *lastdirsep ; lastdirsep = strrchr(file, '/') ; if ( NULL != lastdirsep ) file = lastdirsep + 1 ; if ((fd=fopen(file,mode)) != NULL) { return(fd) ; } else { return(NULL) ; } #else if (*file == DIRSEP || NAME_BEGINS_WITH_DEVICE(file)) { /* if full path name */ if ((fd=fopen(file,mode)) != NULL) { strcpy(realnameoffile, file) ; if (tryz) { char *cmd = mymalloc(strlen(file) + 20) ; strcpy(cmd, (tryz=='z' ? "gzip -d <" : "compress -d <")) ; strcat(cmd, file) ; fclose(fd) ; fd = popen(cmd, "r") ; to_close = USE_PCLOSE ; free(cmd) ; } return(fd) ; } else return(NULL) ; } #endif /* IBM: VM/CMS */ #if defined MSDOS || defined OS2 || defined(ATARIST) || defined(WIN32) if ( isalpha(file[0]) && file[1]==':' ) { /* if full path name */ if ((fd=fopen(file,mode)) != NULL) { strcpy(realnameoffile, file) ; return(fd) ; } else return(NULL) ; } if (*file == '/') {/* if full path name with unix DIRSEP less drive code */ if ((fd=fopen(file,mode)) != NULL) { strcpy(realnameoffile, file) ; return(fd) ; } else return(NULL) ; } #endif do { /* copy the current directory into fname */ nam = fname; /* copy till PATHSEP */ if (*path == '~') { char *p = nam ; path++ ; while (*path && *path != PATHSEP && *path != DIRSEP) *p++ = *path++ ; *p = 0 ; if (*nam == 0) { if (home == 0) { if (0 != (home = getenv("HOME"))) home = newstring(home) ; else home = "." ; } strcpy(fname, home) ; } else { #if defined MSDOS || defined OS2 error("! ~username in path???") ; #else #ifdef WIN32 /* FIXME: at least under NT, it should be possible to retrieve the HOME DIR for a given user */ error("! ~username in path???") ; #else #ifdef VMS error("! ~username in path???") ; #else #ifdef ATARIST error("! ~username in path???") ; #else #ifdef VMCMS /* IBM: VM/CMS */ error("! ~username in path???") ; #else #ifdef MVSXA /* IBM: MVS/XA */ error("! ~username in path???") ; #else #ifdef __THINK__ error("! ~username in path???") ; #else struct passwd *pw = getpwnam(fname) ; if (pw) strcpy(fname, pw->pw_dir) ; else error("no such user") ; #endif #endif /* IBM: VM/CMS */ #endif #endif #endif #endif #endif } nam = fname + strlen(fname) ; } while (*path != PATHSEP && *path) *nam++ = *path++; *nam = 0 ; #ifndef VMS #ifndef __THINK__ if (nam == fname) *nam++ = '.'; /* null component is current dir */ if (*file != '\0') { if ((nam != fname) && *(nam-1) != DIRSEP) /* GNW 1992.07.09 */ *nam++ = DIRSEP; /* add separator */ (void)strcpy(nam,file); /* tack the file on */ } else *nam = '\0' ; #else (void)strcpy(nam,file); /* tack the file on */ #endif #else (void)strcpy(nam,file); /* tack the file on */ #endif #ifdef MVSXA nam = fname; if (strchr(nam,'=') != NULL) { (void) strcpy(fname_safe,fname); /* save fname */ firstext = strchr(nam, '=') - nam + 2; lastext = strrchr(nam, '.') - nam + 1; lastchar = strlen(nam) - 1; (void) strcpy(fname,"dd:"); /* initialize fname */ nam=&fname[3]; for (i=lastext; i<=lastchar; i++) *nam++ = fname_safe[i] ; *nam++ = '(' ; for (i=firstext; i MAXPATHLEN) error("! overran allocated storage in search()"); #ifdef DEBUG if (dd(D_PATHS)) (void)fprintf(stderr,"search: Trying to open %s\n", fname) ; #endif if ((fd=fopen(fname,mode)) != NULL) { strcpy(realnameoffile, fname) ; if (tryz) { char *cmd = mymalloc(strlen(file) + 20) ; strcpy(cmd, (tryz=='z' ? "gzip -d <" : "compress -d <")) ; strcat(cmd, file) ; fclose(fd) ; fd = popen(cmd, "r") ; to_close = USE_PCLOSE ; } return(fd); } /* skip over PATHSEP and try again */ } while (*(path++)); return(NULL); } /* end search */ FILE * pksearch(char *path, char *file, char *mode, char *n, halfword dpi, halfword vdpi) { register char *nam ; /* index into fname */ register FILE *fd ; /* file desc of file */ char fname[MAXPATHLEN] ; /* to store file name */ static char *home = 0 ; /* home is where the heart is */ int sub ; if (*file == DIRSEP) { /* if full path name */ if ((fd=fopen(file,mode)) != NULL) return(fd) ; else return(NULL) ; } #if defined MSDOS || defined OS2 || defined(WIN32) if ( isalpha(file[0]) && file[1]==':' ) { /* if full path name */ if ((fd=fopen(file,mode)) != NULL) return(fd) ; else return(NULL) ; } #endif do { /* copy the current directory into fname */ nam = fname; sub = 0 ; /* copy till PATHSEP */ if (*path == '~') { char *p = nam ; path++ ; while (*path && *path != PATHSEP && *path != DIRSEP) *p++ = *path++ ; *p = 0 ; if (*nam == 0) { if (home == 0) { if (0 != (home = getenv("HOME"))) home = newstring(home) ; else home = "." ; } strcpy(fname, home) ; } else { #if defined MSDOS || defined OS2 error("! ~username in path???") ; #else #ifdef WIN32 error("! ~username in path???") ; #else #ifdef VMS error("! ~username in path???") ; #else #ifdef ATARIST error("! ~username in path???") ; #else #ifdef VMCMS /* IBM: VM/CMS */ error("! ~username in path???") ; #else #ifdef MVSXA /* IBM: MVS/XA */ error("! ~username in path???") ; #else #ifdef __THINK__ error("! ~username in path???") ; #else struct passwd *pw = getpwnam(fname) ; if (pw) strcpy(fname, pw->pw_dir) ; else error("no such user") ; #endif #endif /* IBM: VM/CMS */ #endif #endif #endif #endif #endif } nam = fname + strlen(fname) ; } /* copy till PATHSEP */ while (*path != PATHSEP && *path) { if (*path == '%') { sub = 1 ; path++ ; switch(*path) { case 'b': sprintf(nam, "%d", actualdpi) ; break ; case 'd': sprintf(nam, "%d", dpi) ; break ; case 'f': strcpy(nam, n) ; break ; case 'm': if (mfmode == 0) if (actualdpi == 300) mfmode = "imagen" ; else if (actualdpi == 400) mfmode = "nexthi" ; else if (actualdpi == 635) mfmode = "linolo" ; else if (actualdpi == 1270) mfmode = "linohi" ; else if (actualdpi == 2540) mfmode = "linosuper" ; if (mfmode == 0) error("! MF mode not set, but used in pk path") ; strcpy(nam, mfmode) ; break ; case 'p': strcpy(nam, "pk") ; break ; case '%': strcpy(nam, "%") ; break ; default: fprintf(stderr, "Format character: %c\n", *path) ; error("! bad format character in pk path") ; } nam = fname + strlen(fname) ; if (*path) path++ ; } else *nam++ = *path++; } #ifndef VMS #ifndef __THINK__ if (nam == fname) *nam++ = '.'; /* null component is current dir */ #endif #endif /* VMS */ if (sub == 0 && *file) { #ifndef VMS /* change suggested by MG */ if ((nam != fname) && *(nam-1) != DIRSEP) /* GNW 1992.07.09 */ *nam++ = DIRSEP ; #endif strcpy(nam, file) ; } else *nam = 0 ; #ifdef MVSXA /* IBM: MVS/XA */ if (fname[0] == '/') { fname[0] = '\''; strcat(&fname[strlen(fname)],"\'"); } if (fname[0] == '.') fname[0] = ' '; if (fname[1] == '.') fname[1] = ' '; #endif /* IBM: MVS/XA */ /* belated check -- bah! */ if (strlen(fname) + 1 > MAXPATHLEN) error("! overran allocated storage in search()"); #ifdef DEBUG if (dd(D_PATHS)) (void)fprintf(stderr,"pksearch: Trying to open %s\n", fname) ; #endif if ((fd=fopen(fname,mode)) != NULL) return(fd); /* skip over PATHSEP and try again */ } while (*(path++)); return(NULL); } /* end search */ #endif /* KPATHSEA */ /* do we report file openings? */ #ifdef DEBUG # ifdef fopen # undef fopen # endif # ifdef VMCMS /* IBM: VM/CMS */ # define fopen cmsfopen # endif /* IBM: VM/CMS */ FILE * my_real_fopen(register char *n, register char *t) { FILE *tf ; if (dd(D_FILES)) { fprintf(stderr, "<%s(%s)> ", n, t) ; tf = fopen(n, t) ; if (tf == 0) fprintf(stderr, "failed\n") ; else fprintf(stderr, "succeeded\n") ; } else tf = fopen(n, t) ; #ifdef OS2 if (tf == (FILE *)NULL) tf = fat_fopen(n, t); /* try again with filename truncated to 8.3 */ #endif return tf ; } #endif #ifdef OS2 /* truncate filename at end of fname to FAT filesystem 8.3 limit */ /* if truncated, return fopen() with new name */ FILE * fat_fopen(char *fname, char *t) { char *np; /* pointer to name within path */ char nbuf[13], *ns, *nd; char n[MAXPATHLEN]; int ni, ne; FILE *tf; strcpy(n, fname); for (ns=n; *ns; ns++) { if (*ns=='/') *ns=DIRSEP; } np = strrchr(n,DIRSEP); if (np==(char *)NULL) np = n; else np++; /* fail if it contains more than one '.' */ ni = 0; for (ns=np; *ns; ns++) { if (*ns=='.') ni++; } if (ni>1) return (FILE *)NULL; /* copy it to nbuf, truncating to 8.3 */ ns = np; nd = nbuf; ni = 0; while ((*ns!='.') && (*ns) && (ni<8)) { *nd++ = *ns++; ni++; } while ((*ns!='.') && (*ns)) { ns++; ni++; } ne = 0; if (*ns=='.') { *nd++ = *ns++; while ((*ns!='.') && (*ns) && (ne<3)) { *nd++ = *ns++; ne++; } while (*ns) { ns++; ne++; } } *nd++='\0'; if ((ni>8) || (ne>3)) { strcpy(np,nbuf); /* now code copied from my_real_fopen() */ if (dd(D_FILES)) { fprintf(stderr, "<%s(%s)> ", n, t) ; tf = fopen(n, t) ; if (tf == 0) fprintf(stderr, "failed\n") ; else fprintf(stderr, "succeeded\n") ; } else tf = fopen(n, t) ; return tf; } return (FILE *)NULL; } #endif int close_file(FILE *f) { switch(to_close) { case USE_PCLOSE: return pclose(f) ; case USE_FCLOSE: return fclose(f) ; default: return -1 ; } } dvipsk_TexLive-2009-stripped/texc.script0000755000175000017500000000035211372532227020272 0ustar uwabamiuwabami#! /bin/sh # A shell script to convert tex.lpro to texc.lpro. Public domain. # # To use it, say # texc.script tex.lpro texc.lpro # sed -e '/begin code/,/end code/d' \ -e '/alternate code/,/end of code/s/^% //' \ $1 >$2 dvipsk_TexLive-2009-stripped/aclocal.m40000644000175000017500000010747111372532227017750 0ustar uwabamiuwabami# generated automatically by aclocal 1.11 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. # This file 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. m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63],, [m4_warning([this file was generated for autoconf 2.63. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # # This file 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. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.11], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.11])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file 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. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 # Free Software Foundation, Inc. # # This file 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. # serial 9 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 # Free Software Foundation, Inc. # # This file 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. # serial 10 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], UPC, [depcc="$UPC" am_compiler_list=], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file 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. #serial 5 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2008, 2009 Free Software Foundation, Inc. # # This file 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. # serial 16 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.62])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl dnl The `parallel-tests' driver may need to know about EXEEXT, so add the dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl ]) dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc. # # This file 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. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. # # This file 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. # serial 2 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering # Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file 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. # serial 5 # AM_MAINTAINER_MODE([DEFAULT-MODE]) # ---------------------------------- # Control maintainer-specific portions of Makefiles. # Default is to disable them, unless `enable' is passed literally. # For symmetry, `disable' may be passed as well. Anyway, the user # can override the default with the --enable/--disable switch. AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]), [enable], [m4_define([am_maintainer_other], [disable])], [disable], [m4_define([am_maintainer_other], [enable])], [m4_define([am_maintainer_other], [enable]) m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles]) dnl maintainer-mode's default is 'disable' unless 'enable' is passed AC_ARG_ENABLE([maintainer-mode], [ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful (and sometimes confusing) to the casual installer], [USE_MAINTAINER_MODE=$enableval], [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST([MAINT])dnl ] ) AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. # # This file 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. # serial 4 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file 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. # serial 6 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # # This file 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. # AM_PROG_MKDIR_P # --------------- # Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. # # This file 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. # serial 4 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # ------------------------------ # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ---------------------------------- # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 # Free Software Foundation, Inc. # # This file 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. # serial 5 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file 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. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006, 2008 Free Software Foundation, Inc. # # This file 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. # serial 2 # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005 Free Software Foundation, Inc. # # This file 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. # serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. AM_MISSING_PROG([AMTAR], [tar]) m4_if([$1], [v7], [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([../../m4/kpse-common.m4]) m4_include([../../m4/kpse-kpathsea-flags.m4]) m4_include([../../m4/kpse-warnings.m4]) m4_include([../../m4/libtool.m4]) m4_include([../../m4/ltoptions.m4]) m4_include([../../m4/ltsugar.m4]) m4_include([../../m4/ltversion.m4]) m4_include([../../m4/lt~obsolete.m4]) dvipsk_TexLive-2009-stripped/hps.c0000644000175000017500000003632611372532227017046 0ustar uwabamiuwabami/* This is the main file for hacking dvips to do HyperPostScript * Written by Mark D. Doyle 11/94. It is (C) Copyright 1994 by Mark D. Doyle * and the University of California. You may modify and use this program to * your heart's content. */ #include "dvips.h" #ifdef HPS #include #ifdef KPATHSEA #include #else #define TOLOWER Tolower #endif #ifndef FALSE #define FALSE 0 #endif #ifndef TRUE #define TRUE 1 #endif #ifndef Tolower #define Tolower tolower #endif #define NAME 0 #define HREF 1 #define skip_space(s) for( ; *s == ' ' ; s++) ; Boolean inHTMLregion = 0 ; Boolean NO_ERROR = 1 ; Boolean HPS_ERROR = 0 ; integer HREF_COUNT ; Boolean ISHREF = 0 ; Boolean POPPED = 0 ; Boolean PUSHED = 0 ; char *current_name ; int current_type ; int current_pushcount ; extern integer pushcount ; extern shalfword linepos ; #define GoTo 0 #define GoToR 1 #define Launch 2 typedef struct rectangle { double llx ; /* lower left x coor */ double lly ; /* lower left y coor */ double urx ; /* upper right x coor */ double ury ; /* upper right y coor */ } dvipsRectangle ; typedef struct hps_link { int action ; /* GoTo, GoToR, or Launch */ char *file ; /* PDF-style system-independent filename - unused now */ dvipsRectangle rect ; /* rectangle for location of link */ int border[5] ; /* Border info --- with dashes*/ int srcpg ; /* Page of location */ int page ; /* Page of destination --- left out is same as srcpg */ int vert_dest ; /* Vertical position of destination on page */ double color[3] ; /* color: length of array gives colorspace (3 <=> RGB)*/ char *title ; /* Title of link */ } Hps_link ; struct nlist { /* hashtable entry */ struct nlist *next ; /* next entry in chain */ char *name ; /* defined name */ Hps_link *defn ; /* Link associated with name */ } ; typedef struct rect_list { /* linked list of rectangles */ struct rect_list *next ; /* next rectangle in the chain */ dvipsRectangle rect ; } Rect_list ; Rect_list *current_rect_list ; #define HASHSIZE 1223 static struct nlist *link_targets[HASHSIZE] ; /* names .... */ static struct nlist *link_sources[HASHSIZE] ; /* hrefs .... */ #ifdef KPATHSEA #define dup_str xstrdup #else char *dup_str() ; /* duplicate a string */ #endif #include "protos.h" extern Boolean removecomments ; Boolean noprocset ; /* Leave out BeginProc and EndProc comments */ extern int vactualdpi ; extern int pagecounter ; extern integer hhmem, vvmem ; extern integer vpapersize ; /* This was hardcoded to letter size. The denominator converts scaled points to big points (65536*72.27/72). */ #undef PAGESIZE /* HP-UX 10 defines for itself. */ #define PAGESIZE ((int) (vpapersize/65781.76)) #define MARGIN 72 #define VERTICAL 0 #define HORIZONTAL 1 #define FUDGE 2.0 /* For later use * static char *dest_key[9] = {"Fit", "FitB", "FitW", "FitH", "FitBH" "FitR", "FitV", "FitBV", "XYZ"} ; */ extern FILE *bitfile ; extern char *oname ; extern integer pagenum ; extern integer hh ; extern integer vv ; char *hs = NULL ; /* html string to be handled */ char *url_name = NULL ; /* url between double quotes */ /* parse anchor into link */ void do_html(char *s) { Hps_link *nl ; url_name = (char *)malloc(strlen(s)+1) ; hs = s ; HREF_COUNT = 0 ; skip_space(hs) ; /* skip spaces */ if ( TOLOWER(*hs) == 'a') { /* valid start */ POPPED = FALSE ; if (inHTMLregion) { error("previous html not closed with /A"); return; } else { inHTMLregion = TRUE ; current_rect_list = NULL ; } hs++ ; skip_space(hs) ; while(*hs != '\0') { /* parse for names and href */ if (!href_or_name()) { error("Bad HMTL:") ; error(s) ; error("!") ; break ; } skip_space(hs) ; } } else if ( (*hs == '/') && (TOLOWER(hs[1]) == 'a') ) { if (!inHTMLregion) { error("In html, /A found without previous A") ; return; } else { inHTMLregion = FALSE ; } if (current_type == HREF && current_name[0] != '#') { if ((nl = lookup_link(current_name, current_type)->defn)) { nl->rect.urx = dvi_to_hps_conv(hh, HORIZONTAL) ; nl->rect.ury = dvi_to_hps_conv(vv, VERTICAL)-FUDGE+12.0 ; stamp_external(current_name,nl); /* Broken lines ? */ } else { error("!Null lookup"); } } else { if ((nl = lookup_link(current_name, current_type)->defn)) { nl->rect.urx = dvi_to_hps_conv(hh, HORIZONTAL) ; nl->rect.ury = dvi_to_hps_conv(vv, VERTICAL)-FUDGE+12.0 ; if (current_type) { stamp_hps(nl) ; /* Put link info right where special is */ print_rect_list() ; /* print out rectangles */ } } else { error("!Null lookup"); } } } else { error( "No A in html special") ; error(s) ; /*error("!") ;*/ } return ; } int href_or_name(void) { if ((strncmp(hs, "href", 4) == 0) || (strncmp(hs, "HREF", 4) == 0)) { ISHREF = TRUE ; } else if ((strncmp(hs, "name", 4) == 0) || (strncmp(hs, "NAME", 4) == 0)) { ISHREF = FALSE ; } else { error("Not valid href or name html reference") ; return(HPS_ERROR) ; } if(!parseref()) return(HPS_ERROR) ; if (url_name) { if( ISHREF ) { do_link(url_name, HREF) ; } else do_link(url_name, NAME) ; } else { error("No string in qoutes ") ; return(HPS_ERROR) ; } return(NO_ERROR) ; } int parseref(void) { int i = 0 ; for(i=0 ; i++ < 4 ; hs++) ; /* skip href or name in html string */ skip_space(hs) ; if (*hs == '=' ) { hs++ ; } else { error("No equal sign") ; return(HPS_ERROR) ; } if(!get_string()) return(HPS_ERROR) ; return(NO_ERROR) ; /* extract stuff between double quotes */ } int get_string(void) { char *v = url_name ; skip_space(hs) ; /* hash_name() ; */ if (*hs == '"') { for(hs++ ; *hs != '"' && *hs != '\0' ; *v++ = *hs++) ; /* need to esc " */ if(*hs == '"') { hs++ ; *v++ = '\0' ; return(NO_ERROR) ; } else { error("Improper href. Missing closing double quote") ; return(HPS_ERROR) ; } } else { error("Improper href. Missing opening double quote") ; return(HPS_ERROR) ; } } int do_link(char *s, int type) { Hps_link *p ; if (HREF_COUNT++ > 0) { error("!HTML string contains more than one href") ; return(HPS_ERROR) ; } p = (Hps_link *)malloc(sizeof(*p)) ; p->action = GoTo ; p->title = (char *)malloc(strlen(s)+1) ; p->title = s ; p->srcpg = pagecounter ; p->rect.llx = dvi_to_hps_conv(hh, HORIZONTAL) ; p->rect.lly = dvi_to_hps_conv(vv, VERTICAL)-FUDGE ; p->rect.urx = -1.0 ; p->rect.ury = -1.0 ; p->vert_dest = -1 ; p->page = -1 ; p->color[0] = 0 ; p->color[1] = 0 ; /* Blue links */ p->color[2] = 1 ; p->border[0] = 1 ; /* horizontal corner radius */ p->border[1] = 1 ; /* vertical corner radius */ p->border[2] = 1 ; /* box line width */ p->border[3] = 3 ; /* dash on size */ p->border[4] = 3 ; /* dash off size */ current_name = (char *)malloc(strlen(s)+1) ; current_name = s ; current_type = type ; current_pushcount = pushcount ; install_link(s, p, type) ; return(NO_ERROR) ; } unsigned int hash_string(char *s) { unsigned hashval ; for (hashval = 0 ; *s != '\0' ; s++) hashval = *s + 31 * hashval ; return hashval % HASHSIZE ; } /* lookup a hashed name */ struct nlist * lookup_link(char *s, int type) { struct nlist *np ; for(np = type ? link_sources[hash_string(s)] : link_targets[hash_string(s)] ; np != NULL ; np = np -> next) if (strcmp(s, np->name) == 0) return np ; /* found */ return NULL ; /* not found */ } struct nlist * install_link(char *name, Hps_link *defn, int type) { struct nlist *np ; unsigned hashval ; np = (struct nlist *)malloc(sizeof(*np)) ; if (np == NULL || (np->name = dup_str(name)) == NULL) return NULL ; hashval = hash_string(name) ; np->next = type ? link_sources[hashval] : link_targets[hashval] ; (type ? link_sources : link_targets)[hashval] = np ; if ((np->defn = link_dup(defn)) == NULL) return NULL ; return np ; } #ifndef KPATHSEA char * dup_str(char *w) /* make a duplicate of s */ { char *p ; p = (char *)malloc(strlen(w)+1) ; if (p != NULL) strcpy(p,w) ; return p ; } #endif Hps_link * link_dup(Hps_link *s) /* make a duplicate link */ { Hps_link *p ; p = (Hps_link *) malloc(sizeof(*p)) ; if (p != NULL) p = s ; return p ; } double dvi_to_hps_conv(int i, int dir) { double hps_coor ; /* Convert dvi integers into proper hps coordinates Take into account magnification and resolution that dvi file was produced at */ hps_coor = dir ? (((i * 72.0) / vactualdpi) +MARGIN) : (PAGESIZE - ((i * 72.0) / (vactualdpi)) - MARGIN ) ; return(hps_coor) ; } int vert_loc(int i) { int return_value ; return_value = (int) (i + (PAGESIZE / 4) + FUDGE) ; if ( return_value > PAGESIZE) { return((int)PAGESIZE) ; } else if (return_value < (PAGESIZE / 4.0)) { return((PAGESIZE / 4)) ; } else return(return_value) ; } Hps_link * dest_link(char *s) { /* Assume for now that only one entry with same NAME, i.e. Should be true for all legitimate papers. Also, assume prepending of # for names. */ struct nlist *np ; s++ ; /* get rid of hashmark */ for(np = link_targets[hash_string(s)] ; np != NULL ; np = np -> next) { if ( href_name_match(s, np->name)) { return (np->defn) ; /* found */ } } error("Oh no, link not found in target hashtable") ; error(s) ; error("!") ; return NULL ; /* not found */ } int count_targets(void) { int count=0 ; int i ; struct nlist *np ; for (i = 0 ; i < HASHSIZE ; i++) for(np = link_targets[i] ; np != NULL ; np = np -> next) count++ ; return count ; } void do_targets(void) { struct nlist *np ; int i ; Hps_link *dest ; for (i = 0 ; i < HASHSIZE ; i++) for(np = link_sources[i] ; np != NULL ; np = np -> next) { if (np->name[0] == '#') { dest = dest_link(np->name) ; np->defn->page = dest->srcpg ; np->defn->vert_dest = vert_loc((int) dest->rect.lly) ; } } } void do_target_dict(void) { struct nlist *np ; int i ; (void) fprintf(bitfile, "HPSdict begin\n") ; (void)fprintf(bitfile, "/TargetAnchors\n") ; (void)fprintf(bitfile, "%i dict dup begin\n",count_targets()) ; for (i = 0 ; i < HASHSIZE ; i++) for(np = link_targets[i] ; np != NULL ; np = np -> next) (void)fprintf(bitfile, "(%s) [%i [%.0f %.0f %.0f %.0f] %i] def\n", np->defn->title, np->defn->srcpg, np->defn->rect.llx, np->defn->rect.lly, np->defn->rect.urx, np->defn->rect.ury, vert_loc((int) np->defn->rect.lly)) ; (void)fprintf(bitfile,"end targetdump-hook def end\n") ; } int href_name_match(char *h, char *n) { int count = 0 ; int name_length = strlen(n) ; while((*h == *n) & (*h != '\0') ) { count++ ; h++ ; n++ ; } if (name_length == count) { return 1 ; } else { /* printf(" count: %i \n", count) ; */ return 0 ; } } void stamp_hps(Hps_link *pl) { char * tmpbuf; if (pl == NULL) { error("stamp_hps: null pl pointer, oh no!") ; return ; } if(pl->title == NULL) { error("stamp_hps: null pl->title pointer, oh no!") ; return ; } tmpbuf = (char *) xmalloc(strlen(pl->title)+200); /* print out the proper pdfm with local page info only * target info will be in the target dictionary */ (void)sprintf(tmpbuf, " (%s) [[%.0f %.0f %.0f %.0f] [%i %i %i [%i %i]] [%.0f %.0f %.0f]] pdfm ", pl->title, pl->rect.llx, pl->rect.lly, pl->rect.urx, pl->rect.ury, pl->border[0], pl->border[1], pl->border[2], pl->border[3],pl->border[4], pl->color[0], pl->color[1], pl->color[2]) ; cmdout(tmpbuf) ; free(tmpbuf); } /* For external URL's, we just pass them through as a string. The hyperps * interpreter can then do what is wants with them. */ void stamp_external(char *s, Hps_link *pl) { char *tmpbuf; if (pl == NULL) { error("stamp_external: null pl pointer, oh no!") ; return ; } if (s == NULL) { error("stamp_external: null s pointer, oh no!") ; return ; } tmpbuf = (char *) xmalloc(strlen(s) + 200); /* print out the proper pdfm with local page info only * target info will be in the target dictionary */ (void)sprintf(tmpbuf," [[%.0f %.0f %.0f %.0f] [%i %i %i [%i %i]] [%.0f %.0f %.0f]] (%s) pdfm ", pl->rect.llx, pl->rect.lly, pl->rect.urx, pl->rect.ury, pl->border[0], pl->border[1], pl->border[2], pl->border[3],pl->border[4], pl->color[0], pl->color[1], pl->color[2], s) ; cmdout(tmpbuf) ; free(tmpbuf); } void finish_hps(void) { extern int dvips_debug_flag; extern int debug_flag; fclose(bitfile) ; set_bitfile("head.tmp",1); do_targets() ; do_target_dict(); (void)fprintf(bitfile, "TeXDict begin\n") ; (void)fprintf(bitfile, "%%%%EndSetup\n") ; fclose(bitfile) ; open_output() ; noprocset = 1 ; removecomments = 0; copyfile("head.tmp") ; copyfile("body.tmp") ; if (dvips_debug_flag == 0 && debug_flag == 0) { unlink("head.tmp"); unlink("body.tmp"); } } void set_bitfile(char *s, int mode) { if ((bitfile=fopen(s, mode ? FOPEN_ABIN_MODE : FOPEN_WBIN_MODE))==NULL) { error(s) ; error("!couldn't open file") ; } linepos = 0 ; } void vertical_in_hps(void) { Rect_list *rl ; /*printf("in vertical_in_hps") ; */ if (current_type == NAME) return; /* Handle this case later */ if (!current_rect_list) { current_rect_list = (Rect_list *)malloc(sizeof(Rect_list)) ; current_rect_list->next = NULL ; } else { rl = (Rect_list *)malloc(sizeof(Rect_list)) ; rl->next = current_rect_list ; current_rect_list = rl ; } current_rect_list->rect.llx = dvi_to_hps_conv(hh, HORIZONTAL) ; current_rect_list->rect.lly = dvi_to_hps_conv(vv, VERTICAL)-FUDGE ; current_rect_list->rect.urx = dvi_to_hps_conv(hhmem, HORIZONTAL) ; current_rect_list->rect.ury = dvi_to_hps_conv(vvmem, VERTICAL)-FUDGE ; if (POPPED) start_new_box() ; } void print_rect_list(void) { Rect_list *rl, *rln ; for(rl = current_rect_list ; rl != NULL ; rl = rln) { /* printf("Rectangle is %.0f, %.0f, %.0f, %.0f\n", rl->rect.llx, rl->rect.lly, rl->rect.urx, rl->rect.ury) ; */ rln = rl -> next ; free(rl) ; } } void end_current_box(void) { Hps_link *nl ; POPPED = TRUE ; HREF_COUNT-- ; if (current_type == HREF && current_name[0] != '#') { if ((nl = lookup_link(current_name, current_type)->defn)) { nl->rect.urx = dvi_to_hps_conv(hhmem, HORIZONTAL) ; nl->rect.ury = dvi_to_hps_conv(vvmem, VERTICAL)-FUDGE+12.0 ; stamp_external(current_name,nl); /* Broken lines ? */ } else { error("!Null lookup"); } } else { if ((nl = lookup_link(current_name, current_type)->defn)) { nl->rect.urx = dvi_to_hps_conv(hhmem, HORIZONTAL) ; nl->rect.ury = dvi_to_hps_conv(vvmem, VERTICAL)-FUDGE+12.0 ; if (current_type) { stamp_hps(nl) ; /* Put link info right where special is */ } } else { error("!Null lookup"); } /* printf("Ended box %.0f, %.0f, %.0f, %.0f\n", nl->rect.llx, \ nl->rect.lly,nl->rect.urx, nl->rect.ury) ; */ } } void start_new_box(void) { POPPED = FALSE ; do_link(current_name, current_type) ; } #else int no_hypertex ; /* prevent an empty file */ #endif dvipsk_TexLive-2009-stripped/header.c0000644000175000017500000001071711372532227017500 0ustar uwabamiuwabami/* * This routine handles the PostScript prologs that might * be included through: * * - Default * - Use of PostScript fonts * - Specific inclusion through specials, etc. * - Use of graphic specials that require them. * * Things are real simple. We build a linked list of headers to * include. Then, when the time comes, we simply copy those * headers down. */ #include "dvips.h" /* The copyright notice in that file is included too! */ struct header_list *header_head ; /* * The external routines we use. */ #include "protos.h" extern char errbuf[] ; extern integer fontmem, swmem ; #ifndef KPATHSEA extern char *headerpath ; #endif extern char *infont ; extern int headersready ; #ifdef DEBUG extern integer debug_flag ; #endif #ifdef HPS extern Boolean noprocset ; extern Boolean HPS_FLAG ; #endif int add_name(char *s, struct header_list **what) { return (int) add_name_general (s, what, NULL, NULL); } /* * This more general routine adds a name to a list of unique * names. */ int add_name_general(char *s, struct header_list **what, char *pre, char *post) { struct header_list *p, *q ; for (p = *what ; p != NULL; p = p->next) if (strcmp(p->name, s)==0) return 0 ; q = (struct header_list *)mymalloc((integer)(sizeof(struct header_list) + strlen(s))) ; q->Hname = infont ; q->next = NULL ; q->precode = pre ; q->postcode = post ; strcpy(q->name, s) ; if (*what == NULL) *what = q ; else { for (p = *what; p->next != NULL; p = p->next) ; p->next = q ; } return 1 ; } /* * This function checks the virtual memory usage of a header file. * If we can find a VMusage comment, we use that; otherwise, we use * length of the file. */ void checkhmem(char *s, char *pre, char *post) { FILE *f ; f = search(headerpath, s, READBIN) ; if (pre || post) { if (f==NULL) f = search(figpath, s, READBIN) ; } if (f==0) { (void)sprintf(errbuf, "! Couldn't find header file %s.\nNote that an absolute path or a relative path with .. are denied in -R2 mode.", s) ; error(errbuf) ; } else { int len, i, j ; long mem = -1 ; char buf[1024] ; len = fread(buf, sizeof(char), 1024, f) ; for (i=0; i 0) { mem += len ; len = fread(buf, sizeof(char), 1024, f) ; } } if (mem < 0) mem = DNFONTCOST ; (*close_file) (f) ; #ifdef DEBUG if (dd(D_HEADER)) (void)fprintf(stderr, "Adding header file \"%s\" %ld\n", s, mem) ; #endif fontmem -= mem ; if (fontmem > 0) /* so we don't count it twice. */ swmem -= mem ; } } /* * This routine is responsible for adding a header file. We also * calculate the VM usage. If we can find a VMusage comment, we * use that; otherwise, we use the length of the file. */ int add_header(char *s) { return (int) add_header_general (s, NULL, NULL); } int add_header_general(char *s, char *pre, char *post) { int r ; r = add_name_general(s, &header_head, pre, post) ; if (r) { if (headersready == 1) { struct header_list *p = header_head ; while (p) { checkhmem(p->name, p->precode, p->postcode) ; p = p->next ; } headersready = 2 ; } else if (headersready == 2) { checkhmem(s, pre, post) ; } } return r ; } /* * This routine runs down a list, returning each in order. */ static struct header_list *CUR_head = NULL ; char * get_name(struct header_list **what) { if (what && *what) { char *p = (*what)->name ; infont = (*what)->Hname ; CUR_head = *what ; *what = (*what)->next ; return p ; } else return 0 ; } /* * This routine actually sends the headers. */ void send_headers(void) { struct header_list *p = header_head ; char *q ; while (0 != (q=get_name(&p))) { #ifdef DEBUG if (dd(D_HEADER)) (void)fprintf(stderr, "Sending header file \"%s\"\n", q) ; #endif #ifdef HPS if (HPS_FLAG) { if (strcmp(q,"target.dct")==0) noprocset = 1 ; } #endif copyfile_general(q, CUR_head) ; } infont = 0 ; } dvipsk_TexLive-2009-stripped/Makefile.am0000644000175000017500000000716311372532227020141 0ustar uwabamiuwabami## Makefile.am for the TeX Live subdirectory texk/dvipsk/ ## ## Copyright (C) 2009 Peter Breitenlohner ## You may freely use, modify and/or distribute this file. ## ACLOCAL_AMFLAGS = -I ../../m4 SUBDIRS = squeeze INCLUDES = $(KPATHSEA_INCLUDES) AM_CPPFLAGS = -DUNIX -DKPATHSEA -DSHIFTLOWCHARS AM_CFLAGS = $(WARNING_CFLAGS) bin_PROGRAMS = afm2tfm dvips afm2tfm_SOURCES = afm2tfm.c afm2tfm_DEPENDENCIES = $(KPATHSEA_DEPEND) dvips_SOURCES = \ bbox.c \ color.c \ config.h \ debug.h \ dopage.c \ dosection.c \ dospecial.c \ download.c \ dpicheck.c \ drawPS.c \ dviinput.c \ dvips.c \ dvips.h \ emspecial.c \ finclude.c \ fontdef.c \ header.c \ hps.c \ loadfont.c \ output.c \ papersiz.c \ paths.h \ pprescan.c \ prescan.c \ protos.h \ ptexmac.h \ repack.c \ resident.c \ scalewidth.c \ scanpage.c \ search.c \ skippage.c \ t1part.c \ t1part.h \ tfmload.c \ unpack.c \ virtualfont.c \ writet1.c dvips_DEPENDENCIES = $(KPATHSEA_DEPEND) LDADD = $(KPATHSEA_LIBS) ## Rebuild libkpathsea @KPATHSEA_RULE@ dist_man1_MANS = afm2tfm.1 dvips.1 info_TEXINFOS = dvips.texi dvips_TEXINFOS = contrib/config.proto dvips.help DISTCLEANFILES = $(DVIS) $(PSS) prolog_DATA = $(prologues) dist_prologues = \ color.lpro \ crop.lpro \ finclude.lpro \ hps.lpro \ special.lpro \ tex.lpro \ texps.lpro prologdir = ${prefix}/texmf/dvips/base prologues = $(dist_prologues:.lpro=.pro) texc.pro texc.lpro: texc.script tex.lpro $(SHELL) $(srcdir)/texc.script $(srcdir)/tex.lpro $@ SUFFIXES = .pro .lpro # The `t[mp]-' business is so that we don't create an empty .pro file, # if running squeeze fails for some reason. A dependency on squeeze # fails here, so we include it below. .lpro.pro: squeeze/squeeze <$< >t-$@ && mv t-$@ $@ # When cross-compiling, EXEEXT for the build and hosts system may differ. # Thus we depend on the auxiliary file squeeze/stamp-squeeze. $(prologues): squeeze/stamp-squeeze squeeze/stamp-squeeze: cd squeeze && $(MAKE) $(AM_MAKEFLAGS) stamp-squeeze EXTRA_DIST = $(dist_prologues) texc.script CLEANFILES = $(prologues) texc.lpro ## dvips test ## TESTS = dvips.test pfbincl.test TESTS_ENVIRONMENT = TEXMFCNF=$(srcdir)/../kpathsea TEXCONFIG=$(srcdir)/testdata TESTS_ENVIRONMENT += TFMFONTS=$(srcdir)/testdata VFFONTS=$(srcdir)/testdata TESTS_ENVIRONMENT += TEXFONTMAPS=$(srcdir)/testdata TEXPSHEADERS=$(srcdir)/testdata EXTRA_DIST += \ dvips.test \ pfbincl.test \ testdata/8r.enc \ testdata/ad.enc \ testdata/cmex10.pfb \ testdata/cmex10.tfm \ testdata/cmmi10.pfb \ testdata/cmmi10.tfm \ testdata/cmr10.pfb \ testdata/cmr10.tfm \ testdata/cmsy10.pfb \ testdata/cmsy10.tfm \ testdata/cmtt10.pfb \ testdata/cmtt10.tfm \ testdata/config.ps \ testdata/dvipstst.tex \ testdata/dvipstst.xdv \ testdata/dvipstst.xps \ testdata/pfbincl.eps \ testdata/pfbincl.tex \ testdata/pfbincl.xdv \ testdata/pfbincl.xps \ testdata/psfonts.map \ testdata/ptmbi.vf \ testdata/ptmbi8r.tfm \ testdata/ptmr.vf \ testdata/ptmr8r.tfm \ testdata/ptmri.vf \ testdata/ptmri8r.tfm \ testdata/special.pro \ testdata/texc.pro \ testdata/texps.pro CLEANFILES += dvipstst.ps missfont.log mtest.ps pfbincl.ps ## Not used ## EXTRA_DIST += \ INSTALLATION \ atari \ cmfonts.map \ config.ps \ contrib/PSTricks \ contrib/afm-extra \ contrib/colorsep.lpro \ contrib/configs \ contrib/crop.lpr \ contrib/latex209 \ contrib/volker \ contrib/whichinpath \ cyrfonts.map \ eufonts.map \ flib.c \ hps/CHANGES_HPS.txt \ hps/README_HPS.txt \ lafonts.map \ makefont.c \ mvs \ pc \ psfonts.map \ reencode \ tex \ vmcms \ vms # in case of an SVN repository dist-hook: rm -rf `find $(distdir) -name .svn` dvipsk_TexLive-2009-stripped/dopage.c0000644000175000017500000003133311372532227017504 0ustar uwabamiuwabami/* * Main page drawing procedure. Interprets the page commands. A simple * (if lengthy) case statement interpreter. */ #include "dvips.h" /* The copyright notice in that file is included too! */ #include /* * The external routines we use: */ #include "protos.h" /* * Now the external variables. */ extern fontdesctype *curfnt ; extern fontmaptype *ffont ; extern quarterword *curpos, *curlim ; extern integer hh, vv ; extern integer hoff, voff ; extern Boolean noomega ; /* * CONVENTION: conv -> horizontial converter * vconv -> vertical converter */ extern real conv ; extern real vconv ; extern FILE *bitfile ; extern int actualdpi ; extern int vactualdpi ; extern frametype frames[] ; extern int maxdrift ; extern int vmaxdrift ; #ifdef XENIX #define PixRound(x) ((integer)(x + (iconv >> 1)) / iconv) #define VPixRound(x) ((integer)(x + (viconv >> 1)) / viconv) #else #ifdef __THINK__ #define PixRound(x) ((integer)(x + (iconv >> 1)) / iconv) #define VPixRound(x) ((integer)(x + (viconv >> 1)) / viconv) #else #define PixRound(x) ((integer)(floor(((x) * conv) + 0.5))) #define VPixRound(x) ((integer)(floor(((x) * vconv) + 0.5))) #endif #endif /* * Now we have the dopage procedure. * Most error checking is suppressed because the prescan has already * verified that the DVI data is OK....except for stack over/underflow. */ struct dvistack { integer hh, vv ; integer h, v, w, x, y, z ; } stack[STACKSIZE] ; #ifdef HPS extern int pagecounter ; extern Boolean HPS_FLAG ; extern Boolean inHTMLregion ; integer vvmem, hhmem ; integer pushcount = 0 ; Boolean PAGEUS_INTERUPPTUS = 0 ; Boolean NEED_NEW_BOX = 0 ; extern integer HREF_COUNT ; extern int current_pushcount ; integer H_BREAK ; /* An empirical parameter for guessing line breaks; needs dpi dependence */ #endif void dopage(void) { register shalfword cmd ; register integer p ; register chardesctype *cd ; register integer h ; register fontmaptype *cfnt ; register frametype *frp = frames ; integer fnt ; integer mychar; int charmove ; struct dvistack *sp = stack ; integer v, w, x, y, z ; integer roundpos ; integer thinspace ; integer vertsmallspace ; #ifdef XENIX integer iconv ; integer viconv ; iconv = (integer)(1.0 / conv + 0.5) ; viconv = (integer)(1.0 / vconv + 0.5) ; #else #ifdef __THINK__ integer iconv ; integer viconv ; iconv = (integer)(1.0 / conv + 0.5) ; viconv = (integer)(1.0 / vconv + 0.5) ; #endif #endif #ifdef EMTEX emclear() ; #endif pageinit() ; bopcolor(1) ; thinspace = (integer)(0.025*DPI/conv) ; /* 0.025 inches */ vertsmallspace = (integer)(0.025*VDPI/vconv) ; /* 0.025 inches */ #ifdef HPS if (HPS_FLAG) pagecounter++ ; H_BREAK = (30 * DPI / 400 ) ; /* 30 seems to have worked well at 400 dpi */ #endif w = x = y = z = 0 ; h = (integer) (DPI / conv * hoff / 4736286.72) ; v = (integer) (DPI / conv * voff / 4736286.72) ; hh = PixRound(h) ; vv = PixRound(v) ; curfnt = NULL ; curpos = NULL ; charmove = 0 ; beginloop: switch (cmd=dvibyte()) { case 138: goto beginloop ; /* nop command does nuttin */ /* * For put1 commands, we subtract the width of the character before * dropping through to the normal character setting routines. This */ case 134: /* put2 */ if (noomega) error("! synch") ; mychar = dvibyte() ; mychar = (mychar << 8) + dvibyte() ; charmove = 0 ; goto dochar ; case 129: /* set2 */ if (noomega) error("! synch") ; mychar = dvibyte() ; mychar = (mychar << 8) + dvibyte() ; charmove = 1 ; goto dochar ; case 133: /* put1 */ mychar = dvibyte() ; charmove = 0 ; goto dochar ; case 128: cmd = dvibyte() ; /* set1 command drops through to setchar */ default: /* these are commands 0 (setchar0) thru 127 (setchar127) */ mychar = cmd ; charmove = 1 ; dochar: #ifdef HPS if (HPS_FLAG && PAGEUS_INTERUPPTUS) { HREF_COUNT-- ; start_new_box() ; PAGEUS_INTERUPPTUS = 0 ; } if (HPS_FLAG && NEED_NEW_BOX) { vertical_in_hps(); NEED_NEW_BOX = 0; } #endif cd = &(curfnt->chardesc[mychar]) ; if (cd->flags & EXISTS) { if (curfnt->loaded == 2) { /* virtual character being typeset */ if (charmove) { sp->hh = hh + cd->pixelwidth ; sp->h = h + cd->TFMwidth ; } else { sp->hh = hh ; sp->h = h ; } sp->vv = vv ; sp-> v = v ; sp->w = w ; sp->x = x ; sp->y = y ; sp->z = z ; if (++sp >= &stack[STACKSIZE]) error("! Out of stack space") ; w = x = y = z = 0 ; /* will be in relative units at new stack level */ frp->curp = curpos ; frp->curl = curlim ; frp->ff = ffont ; frp->curf = curfnt ; if (++frp == &frames[MAXFRAME] ) error("! virtual recursion stack overflow") ; curpos = cd->packptr + 2 ; curlim = curpos + (256*(long)(*cd->packptr)+(*(cd->packptr+1))) ; ffont = curfnt->localfonts ; if (ffont) { curfnt = ffont->desc ; thinspace = curfnt->thinspace ; } else { curfnt = NULL ; thinspace = vertsmallspace ; } goto beginloop ; } drawchar(cd, mychar) ; } if (charmove) { h += cd->TFMwidth ; hh += cd->pixelwidth ; } goto setmotion ; case 130: case 131: case 135: case 136: case 139: case 247: case 248: case 249: case 250: case 251: case 252: case 253: case 254: case 255: /* unimplemented or illegal commands */ error("! synch") ; case 132: case 137: /* rules */ { integer ry, rx , rxx, ryy ; ry = signedquad() ; rx = signedquad() ; if (rx>0 && ry>0) { if (curpos) { rx = scalewidth(rx, (frp-1)->curf->scaledsize) ; ry = scalewidth(ry, (frp-1)->curf->scaledsize) ; } rxx = (int)(conv * rx + 0.9999999) ; ryy = (int)(vconv * ry + 0.9999999) ; drawrule(rxx, ryy) ; } else rxx = 0 ; if (cmd == 137) goto beginloop ; h += rx ; hh += rxx ; goto setmotion ; } case 141: /* push */ #ifdef HPS if (HPS_FLAG) pushcount++ ; /* if (HPS_FLAG && PAGEUS_INTERUPPTUS) { HREF_COUNT-- ; start_new_box() ; PAGEUS_INTERUPPTUS = 0 ; } */ if (HPS_FLAG && NEED_NEW_BOX) { vertical_in_hps(); NEED_NEW_BOX = 0; } /* printf("push %i, %i\n", pushcount, inHTMLregion) ; */ #endif sp->hh = hh ; sp->vv = vv ; sp->h = h ; sp->v = v ; sp->w = w ; sp->x = x ; sp->y = y ; sp->z = z ; if (++sp >= &stack[STACKSIZE]) error("! Out of stack space") ; goto beginloop ; case 140: /* eop or end of virtual character */ if (curpos == NULL) { /* eop */ #ifdef HPS if (HPS_FLAG && inHTMLregion) PAGEUS_INTERUPPTUS = 1 ; /* printf("Page interrupted"); */ #endif break; } --frp ; curfnt = frp->curf ; thinspace = (curfnt) ? curfnt->thinspace : vertsmallspace ; ffont = frp->ff ; curlim = frp->curl ; curpos = frp->curp ; if (hh < (sp-1)->hh+2 && hh > (sp-1)->hh-2) (sp-1)->hh = hh; /* retain `intelligence' of pixel width, if close */ /* falls through */ case 142: /* pop */ #ifdef HPS pushcount-- ; /* printf("pop %i\n", pushcount) ; */ #endif if (--sp < stack) error("! More pops than pushes") ; #ifdef HPS if (HPS_FLAG) { hhmem = hh ; vvmem = vv ; } #endif hh = sp->hh ; vv = sp->vv ; h = sp->h ; v = sp->v ; w = sp->w ; x = sp->x ; y = sp->y ; z = sp->z ; #ifdef HPS if (HPS_FLAG && inHTMLregion && (hhmem - hh > H_BREAK) && (pushcount > 0) && (pushcount < current_pushcount)) end_current_box() ; #endif goto beginloop ; case 143: /* right1 */ p = signedbyte() ; goto horizontalmotion ; case 144: /* right2 */ p = signedpair() ; goto horizontalmotion ; case 145: /* right3 */ p = signedtrio() ; goto horizontalmotion ; case 146: /* right4 */ p = signedquad() ; goto horizontalmotion ; case 147: /* w0 */ p = w ; goto horizontalmotion ; case 148: /* w1 */ p = w = signedbyte() ; goto horizontalmotion ; case 149: /* w2 */ p = w = signedpair() ; goto horizontalmotion ; case 150: /* w3 */ p = w = signedtrio() ; goto horizontalmotion ; case 151: /* w4 */ p = w = signedquad() ; goto horizontalmotion ; case 152: /* x0 */ p = x ; goto horizontalmotion ; case 153: /* x1 */ p = x = signedbyte() ; goto horizontalmotion ; case 154: /* x2 */ p = x = signedpair() ; goto horizontalmotion ; case 155: /* x3 */ p = x = signedtrio() ; goto horizontalmotion ; case 156: /* x4 */ p = x = signedquad() ; goto horizontalmotion ; case 157: /* down1 */ p = signedbyte() ; goto verticalmotion ; case 158: /* down2 */ p = signedpair() ; goto verticalmotion ; case 159: /* down3 */ p = signedtrio() ; goto verticalmotion ; case 160: /* down4 */ p = signedquad() ; goto verticalmotion ; case 161: /* y0 */ p = y ; goto verticalmotion ; case 162: /* y1 */ p = y = signedbyte() ; goto verticalmotion ; case 163: /* y2 */ p = y = signedpair() ; goto verticalmotion ; case 164: /* y3 */ p = y = signedtrio() ; goto verticalmotion ; case 165: /* y4 */ p = y = signedquad() ; goto verticalmotion ; case 166: /* z0 */ p = z ; goto verticalmotion ; case 167: /* z1 */ p = z = signedbyte() ; goto verticalmotion ; case 168: /* z2 */ p = z = signedpair() ; goto verticalmotion ; case 169: /* z3 */ p = z = signedtrio() ; goto verticalmotion ; case 170: /* z4 */ p = z = signedquad() ; goto verticalmotion ; case 171: case 172: case 173: case 174: case 175: case 176: case 177: case 178: case 179: case 180: case 181: case 182: case 183: case 184: case 185: case 186: case 187: case 188: case 189: case 190: case 191: case 192: case 193: case 194: case 195: case 196: case 197: case 198: case 199: case 200: case 201: case 202: case 203: case 204: case 205: case 206: case 207: case 208: case 209: case 210: case 211: case 212: case 213: case 214: case 215: case 216: case 217: case 218: case 219: case 220: case 221: case 222: case 223: case 224: case 225: case 226: case 227: case 228: case 229: case 230: case 231: case 232: case 233: case 234: case 235: case 236: case 237: case 238: /* font selection commands */ if (cmd < 235) fnt = cmd - 171 ; /* fntnum0 thru fntnum63 */ else { fnt = dvibyte() ; while (cmd-- > 235) fnt = (fnt << 8) + dvibyte() ; } for (cfnt=ffont; cfnt; cfnt = cfnt->next) if (cfnt->fontnum == fnt) break ; curfnt = cfnt->desc ; thinspace = curfnt->thinspace ; goto beginloop ; case 243: case 244: case 245: case 246: /*fntdef1 */ skipover(cmd - 230) ; skipover(dvibyte() + dvibyte()) ; goto beginloop ; case 239: /* xxx1 */ p = dvibyte() ; dospecial(p) ; goto beginloop ; case 240: /* xxx2 */ p = twobytes() ; dospecial(p) ; goto beginloop ; case 241: /* xxx3 */ p = threebytes() ; dospecial(p) ; goto beginloop ; case 242: /* xxx4 */ p = signedquad() ; dospecial(p) ; goto beginloop ; /* * The calculations here are crucial to the appearance of the document. * If the motion is small, we round the amount of relative motion; otherwise, * we update the position and round the new position. Then we check to * insure that the rounded position didn't accumulate an error that was * greater than maxdrift. */ verticalmotion: /* vertical motion cases */ if (curpos) p = scalewidth(p, (frp-1)->curf->scaledsize) ; v += p ; if (p >= vertsmallspace) vv = VPixRound(v) ; else if (p <= -vertsmallspace) vv = VPixRound(v) ; else { vv += VPixRound(p) ; roundpos = VPixRound(v) ; if (roundpos - vv > vmaxdrift) vv = roundpos - vmaxdrift ; else if (vv - roundpos > vmaxdrift) vv = roundpos + vmaxdrift ; } #ifdef HPS /* printf("Doing vertical motion: p = %i, v = %i, vv = %i\n",p,v,vv); */ /* printf("inHTMLregion %i\n", inHTMLregion) ; */ if (HPS_FLAG && inHTMLregion) NEED_NEW_BOX = 1 /* vertical_in_hps() */; #endif goto beginloop ; /* * Horizontal motion is analogous. We know the exact width of each * character in pixels. Kerning is distinguished from space between * words if it's less than a thinspace and not more negative than would * occur when an accent is being positioned by backspacing. */ horizontalmotion: /* horizontal motion cases */ if (curpos) p = scalewidth(p, (frp-1)->curf->scaledsize) ; h += p ; if (p >= thinspace || p <= -6 * thinspace) { hh = PixRound(h) ; goto beginloop ; } else hh += PixRound(p) ; #ifdef HPS /* printf("Doing horizontal motion: p = %i, h = %i, hh = %i\n",p,h,hh); */ #endif setmotion: roundpos = PixRound(h) ; if (roundpos - hh > maxdrift) { hh = roundpos - maxdrift ; } else if (hh - roundpos > maxdrift) { hh = roundpos + maxdrift ; } goto beginloop ; } /* end of the big switch */ pageend() ; } dvipsk_TexLive-2009-stripped/psfonts.map0000644000175000017500000005731411372532227020303 0ustar uwabamiuwabami% original psfonts.map -- match TFM filenames to PostScript FontNames. % This file is public domain. % (If you change or delete `original' on the previous line, dvips won't % install its psfonts.map over this file.) % % This file includes mappings for the standard 35 PostScript fonts, plus % freely available high-quality fonts, plus fonts that come with various % commercial Unixes. (dvips.texi gives the precise directories for the latter.) % % The fontname distribution contains listings of many more commercially % available fonts. See /tex-archive/info/fontname on CTAN hosts, % mirrored from ftp://ftp.tug.org/tex/fontname. % The standard 35 fonts built in to almost all (but very old) PostScript % printers, plus a few variants afm2tfm can construct. rpagk AvantGarde-Book rpagko AvantGarde-BookOblique rpagd AvantGarde-Demi rpagdo AvantGarde-DemiOblique rpbkl Bookman-Light rpbkli Bookman-LightItalic rpbkd Bookman-Demi rpbkdi Bookman-DemiItalic rpcrr Courier rpcrro Courier-Oblique rpcrb Courier-Bold rpcrbo Courier-BoldOblique rphvr Helvetica rphvro Helvetica-Oblique rphvb Helvetica-Bold rphvbo Helvetica-BoldOblique rphvrrn Helvetica ".82 ExtendFont" rphvron Helvetica-Oblique ".82 ExtendFont" rphvbrn Helvetica-Bold ".82 ExtendFont" rphvbon Helvetica-BoldOblique ".82 ExtendFont" rpncr NewCenturySchlbk-Roman rpncri NewCenturySchlbk-Italic rpncb NewCenturySchlbk-Bold rpncbi NewCenturySchlbk-BoldItalic rpplr Palatino-Roman rpplri Palatino-Italic rpplro Palatino-Roman ".167 SlantFont" rpplb Palatino-Bold rpplbi Palatino-BoldItalic rpplbu Palatino-BoldItalic "-.1763 SlantFont" rpplru Palatino-Italic "-.1763 SlantFont" rpplrrn Palatino-Roman ".82 ExtendFont" rpplrre Palatino-Roman "1.2 ExtendFont" psyr Symbol rpsyr Symbol psyro Symbol ".167 SlantFont" rpsyro Symbol ".167 SlantFont" rptmr Times-Roman rptmri Times-Italic rptmro Times-Roman ".167 SlantFont" rptmb Times-Bold rptmbi Times-BoldItalic rptmbo Times-Bold ".167 SlantFont" rptmrrn Times-Roman ".8 ExtendFont" rptmrre Times-Roman "1.2 ExtendFont" pzdr ZapfDingbats rpzdr ZapfDingbats rpzcmi ZapfChancery-MediumItalic % Some fonts that have been contributed by vendors to the X % consortium (also Courier). You can get TFM and VF files for these % from ftp://ftp.tug.org/tex (and on ctan). rputr Utopia-Regular TeX tfm converter for OS/2 and DOS' STACKSIZE 0x2000 dvipsk_TexLive-2009-stripped/pc/dvips16.def0000644000175000017500000000016111372532227020452 0ustar uwabamiuwabamiNAME dvips WINDOWCOMPAT NEWFILES DESCRIPTION 'TeX DVI -> PostScript converter for OS/2 and DOS' STACKSIZE 0x2000 dvipsk_TexLive-2009-stripped/pc/makefile.emx0000644000175000017500000002511511372532227020774 0ustar uwabamiuwabami# # Makefile for dvips. Edit this first part of the file. # # First, the things that absolutely must be edited for your system. # modified for EMX-0.8g/GCC with NMAKE on OS/2 2.1. # by rjl@monu1.cc.monash.edu.au # 17th February 1994 # If using HPFS you may need to type 'nmake fixup' to truncate names. # If using NDMAKE 4.5 under MS-DOS, PKPATH needs %% changed to %. # If using Borland MAKER under MS-DOS, all paths need \\ changed to \\\\. # compiler EMXPATH = e:/emx CC = gcc # All DIRs must use a single \ as a directory separator. # All PATHs must use \\ as a directory separator DRIVE = c: TEXDIR = $(DRIVE)\emtex TEXPATH = $(DRIVE)\\emtex # the default path to search for TFM files # (this usually is identical to TeX's defaultfontpath, which omits `.') # (private fonts are given an explicit directory, which overrides the path) # TFMPATH = $(TEXPATH)\\tfm TFMPATH = $(TEXPATH)\\tfm # the default path to search for PK files (usually omits `.') # Don't forget to add the directory that # MakeTeXPK puts the files! (In this case, /LocalLibrary/Fonts...) # PKPATH = $(DRIVE)\\texfonts\\pixel.lj\\%ddpi\\%f.%p PKPATH = $(DRIVE)\\texfonts\\pixel.lj\\%%ddpi\\%%f.%%p # the default path to search for VF files (usually omits `.') # VFPATH = $(DRIVE)\\texfonts\\vf VFPATH = $(DRIVE)\\texfonts\\vf # additional directories in which to search for subdirectories to find # both tfm and pk files FONTSUBDIRPATH = # where the config files go # CONFIGDIR = $(TEXDIR)\ps CONFIGDIR = $(TEXDIR)\ps # the default path to search for config files # CONFIGPATH = .;$(TEXPATH)\\ps CONFIGPATH = .;$(TEXPATH)\\ps # the name of your config file # CONFIGFILE = config.ps CONFIGFILE = config.ps # where the header PS files go # HEADERDIR = $(TEXDIR)\ps HEADERDIR = $(TEXDIR)\ps # the default path to search for header files # HEADERPATH = .;$(TEXPATH)\\ps HEADERPATH = .;$(TEXPATH)\\ps # where epsf.tex and rotate.tex go (usually the TeX macros directory) # TEXMACRODIR = $(TEXDIR)\texinput TEXMACROPARENTDIR = $(TEXDIR)\texinput TEXMACRODIR = $(TEXDIR)\texinput\dvips # the default path to search for epsf and psfiles # (usually the same as TeX's defaultinputpath) # FIGPATH = .;..;$(TEXPATH)\\texinput FIGPATH = .;..;$(TEXPATH)\\texinput # the default path to search for emTeX font libraries # FLIPATH = $(DRIVE)\\texfonts FLIPATH = $(DRIVE)\\texfonts # the names of emTeX font libraries # FLINAME = lj_0;lj_h;lj_1;lj_2;lj_3;lj_4;lj_5a;lj_5b;lj_sli FLINAME = lj_0;lj_h;lj_1;lj_2;lj_3;lj_4;lj_5a;lj_5b;lj_sli # change -DDEFRES=300 or whatever is required # if the default resolution is not 300 dpi, # add -DDEBUG to turn on debugging capability # add -DTPIC for tpic support # add -DFONTLIB to search font libraries # add -DSEARCH_SUBDIRECTORIES to search the FONTSUBDIRPATH. # add -DHAVE_GETCWD if you have getcwd (relevant only for subdir searching) # add -DCREATIONDATE if your system has a working time() and you want dated files # If you define FONTLIB, make sure to also give definitions to # FLIPATH and FLINAME. # DEFS= -DTPIC -DDEBUG -DFONTLIB -DDEFRES=300 OPT = -O -s LINKOPT = -lm # If you are compiling dvips for suid or other privileges, you will # definitely want to define the following symbol; else don't. # SECURE = -DSECURE SECURE = # If you want EMTEX specials, define the following. EMTEX = -DEMTEX # define the c-compiler flag # -DOS2 for OS/2 and MS-DOS with EMX extender SYS = -DOS2 # where the installed binary goes # BINDIR = c:\emtex BINDIR = $(TEXDIR) # where the manual page goes # MANDIR = c:\emtex\doc MANDIR = $(TEXDIR)\doc #makefile.emx sets all paths in paths.rsp CFLAGS = $(OPT) $(SYS) $(SECURE) $(EMTEX) $(DEFS) SRC = dospecia.c dviinput.c fontdef.c loadfont.c dvips.c tfmload.c \ download.c prescan.c scanpage.c skippage.c output.c scalewid.c \ dosectio.c dopage.c resident.c search.c unpack.c drawPS.c \ header.c makefont.c repack.c virtualf.c dpicheck.c finclude.c \ pprescan.c papersiz.c flib.c color.c bbox.c emspecia.c OBJ = dospecia.o dviinput.o fontdef.o loadfont.o dvips.o \ tfmload.o download.o prescan.o scanpage.o skippage.o \ output.o scalewid.o dosectio.o dopage.o resident.o \ search.o unpack.o drawPS.o header.o makefont.o repack.o \ virtualf.o dpicheck.o finclude.o \ pprescan.o papersiz.o flib.o color.o bbox.o emspecia.o all : afm2tfm.exe dvips32.exe tex.pro texps.pro texc.pro \ special.pro finclude.pro color.pro crop.pro # default rules .SUFFIXES: .o .c .c.o: $(CC) -c $(CFLAGS) @paths.rsp $< dvips32.exe: $(OBJ) gcclink.rsp $(CC) -o dvips32 @gcclink.rsp $(LINKOPT) emxbind $(EMXPATH)/bin/emx.exe dvips32 dvips32.exe -p gcclink.rsp: pc/makefile.emx echo dospecia.o>gcclink.rsp echo dviinput.o>>gcclink.rsp echo fontdef.o>>gcclink.rsp echo loadfont.o>>gcclink.rsp echo dvips.o>>gcclink.rsp echo tfmload.o>>gcclink.rsp echo download.o>>gcclink.rsp echo prescan.o>>gcclink.rsp echo scanpage.o>>gcclink.rsp echo skippage.o>>gcclink.rsp echo output.o>>gcclink.rsp echo scalewid.o>>gcclink.rsp echo dosectio.o>>gcclink.rsp echo dopage.o>>gcclink.rsp echo resident.o>>gcclink.rsp echo search.o>>gcclink.rsp echo unpack.o>>gcclink.rsp echo drawPS.o>>gcclink.rsp echo header.o>>gcclink.rsp echo makefont.o>>gcclink.rsp echo repack.o>>gcclink.rsp echo virtualf.o>>gcclink.rsp echo dpicheck.o>>gcclink.rsp echo finclude.o>>gcclink.rsp echo pprescan.o>>gcclink.rsp echo papersiz.o>>gcclink.rsp echo flib.o>>gcclink.rsp echo color.o>>gcclink.rsp echo bbox.o>>gcclink.rsp echo emspecia.o>>gcclink.rsp afm2tfm.exe: afm2tfm.c paths.rsp $(CC) $(CFLAGS) @paths.rsp afm2tfm.c -o afm2tfm $(LINKOPT) emxbind $(EMXPATH)/bin/emx.exe afm2tfm afm2tfm.exe paths.rsp: pc\makefile.emx echo -I$(EMXPATH)/include> paths.rsp echo -L$(EMXPATH)/lib>> paths.rsp echo -funsigned-char>> paths.rsp echo -DCREATIONDATE>> paths.rsp echo -DTFMPATH="$(TFMPATH)">> paths.rsp echo -DPKPATH="$(PKPATH)">> paths.rsp echo -DVFPATH="$(VFPATH)">> paths.rsp echo -DHEADERPATH="$(HEADERPATH)">> paths.rsp echo -DCONFIGPATH="$(CONFIGPATH)">> paths.rsp echo -DCONFIGFILE="$(CONFIGFILE)">> paths.rsp echo -DFONTSUBDIRPATH="$(FONTSUBDIRPATH)">> paths.rsp echo -DFIGPATH="$(FIGPATH)">> paths.rsp echo -DFLIPATH="$(FLIPATH)">> paths.rsp echo -DFLINAME="$(FLINAME)">> paths.rsp $(OBJ) : dvips.h debug.h paths.h paths.rsp squeeze.exe : squeeze.c paths.rsp $(CC) $(CFLAGS) @paths.rsp squeeze.c -o squeeze emxbind $(EMXPATH)/bin/emx.exe squeeze squeeze.exe tex.pro : tex.lpr squeeze.exe squeeze tex.lpr tex.pro texc.pro: texc.lpr squeeze.exe squeeze texc.lpr texc.pro texc.lpr: tex.lpr @echo This does "texc.scr tex.lpro texc.lpro" on Unix @echo For MSDOS or OS/2, copy tex.lpro to texc.lpr @echo then edit texc.lpr to remove the code @echo for uncompressed fonts and uncomment the @echo code for unpacking compressed fonts texps.pro : texps.lpr squeeze.exe squeeze texps.lpr texps.pro special.pro : special.lpr squeeze.exe squeeze special.lpr special.pro finclude.pro: finclude.lpr squeeze.exe squeeze finclude.lpr finclude.pro color.pro: color.lpr squeeze.exe squeeze color.lpr color.pro crop.pro: crop.lpr squeeze.exe squeeze crop.lpr crop.pro install : afm2tfm.exe dvips32.exe pc/maketexp.bat pc/maketexp.cmd \ tex.pro texc.pro texps.pro special.pro finclude.pro color.pro crop.pro \ pc/config.ps psfonts.map epsf.tex epsf.sty rotate.tex rotate.sty \ dvips.tex dvipsmac.tex colordvi.sty colordvi.tex blackdvi.sty \ blackdvi.tex pc/dvips.doc pc/afm2tfm.doc -mkdir $(BINDIR) -mkdir $(HEADERDIR) -mkdir $(CONFIGDIR) -mkdir $(MANDIR) -mkdir $(TEXMACROPARENTDIR) -mkdir $(TEXMACRODIR) copy afm2tfm.exe $(BINDIR)\afm2tfm.exe copy dvips32.exe $(BINDIR)\dvips32.exe copy pc\maketexp.bat $(BINDIR)\maketexp.bat copy pc\maketexp.cmd $(BINDIR)\maketexp.cmd copy tex.pro $(HEADERDIR) copy texc.pro $(HEADERDIR) copy texps.pro $(HEADERDIR) copy special.pro $(HEADERDIR) copy finclude.pro $(HEADERDIR) copy color.pro $(HEADERDIR) copy crop.pro $(HEADERDIR) copy pc\config.ps $(CONFIGDIR)\$(CONFIGFILE) copy psfonts.map $(CONFIGDIR) copy epsf.tex $(TEXMACRODIR) copy epsf.sty $(TEXMACRODIR) copy rotate.tex $(TEXMACRODIR) copy rotate.sty $(TEXMACRODIR) copy colordvi.sty $(TEXMACRODIR) copy colordvi.tex $(TEXMACRODIR) copy blackdvi.sty $(TEXMACRODIR) copy blackdvi.tex $(TEXMACRODIR) copy dvips.tex $(TEXMACRODIR) copy dvipsmac.tex $(TEXMACRODIR) copy pc\dvips.doc $(MANDIR) copy pc\afm2tfm.doc $(MANDIR) veryclean : -del *.o -del dvips32.exe -del dvips32 -del squeeze.exe -del squeeze -del afm2tfm.exe -del afm2tfm -del *.pro -del paths.rsp -del gcclink.rsp clean : -del *.o -del dvips32 -del squeeze.exe -del squeeze -del afm2tfm -del paths.rsp -del gcclink.rsp # convert long names to 8.3 names fixup: -rename dosection.c dosectio.c -rename dospecial.c dospecia.c -rename emspecial.c emspecia.c -rename scalewidth.c scalewid.c -rename virtualfont.c virtualf.c -rename tex.lpro tex.lpr -rename texc.lpro texc.lpr -rename texps.lpro texps.lpr -rename special.lpro special.lpr -rename finclude.lpro finclude.lpr -rename color.lpro color.lpr -rename crop.lpro crop.lpr -rename ..\PSlatex\avantgarde.sty avantgar.sty # convert short 8.3 names to original long names long: -rename dosectio.c dosection.c -rename dospecia.c dospecial.c -rename emspecia.c emspecia..c -rename scalewid.c scalewidth.c -rename virtualf.c virtualfont.c -rename tex.lpr tex.lpro -rename texc.lpr texc.lpro -rename texps.lpr texps.lpro -rename special.lpr special.lpro -rename finclude.lpr finclude.lpro -rename color.lpr color.lpro -rename crop.lpr crop.lpro -rename installa INSTALLATION -rename maketexp MakeTeXPK -rename config.lin config.lino -rename config.pos config.post3x3 -rename rotsampl.tex rotsample.tex -rename ..\PSlatex\avantgar.sty avantgarde.sty # used for creating zip file zip: copy ..\PSlatex\*.* $(TEXMACRODIR) -mkdir $(TEXDIR)\tfm copy ..\PStfms\*.* $(TEXDIR)\tfm -mkdir $(DRIVE)\texfonts -mkdir $(DRIVE)\texfonts\vf copy ..\PSvfs\*.* $(DRIVE)\texfonts\vf copy pc\README.pc $(DRIVE)\ $(DRIVE) cd \ dir /f /s /l emtex > emtex.lst dir /f /s /l texfonts >> emtex.lst remove -w emtex\remove\dvips.rem emtex.lst -del dvipsexe.zip zip -r dvipsexe README.pc emtex texfonts # used for converting Unix EOL to OS/2 EOL # when dvips.tar has been extracted under OS/2. eol: -flip -m *.* cd contrib -flip -m *.* cd bbfig -flip -m *.* cd ..\psfig -flip -m *.* cd ..\psfntmac -flip -m *.* cd ..\pspic -flip -m *.* cd ..\..\mvs -flip -m *.* cd ..\pc -flip -m *.* cd ..\reencode -flip -m *.* cd ..\vmcms -flip -m *.* cd ..\vms -flip -m *.* cd .. dvipsk_TexLive-2009-stripped/pc/dvipswin.def0000644000175000017500000000024111372532227021020 0ustar uwabamiuwabamiNAME dvips DESCRIPTION 'TeX DVI -> PostScript converter' EXETYPE WINDOWS CODE MOVEABLE NONDISCARDABLE PRELOAD DATA MULTIPLE MOVEABLE PRELOAD STACKSIZE 16384 dvipsk_TexLive-2009-stripped/pc/makefile.tc0000644000175000017500000002024211372532227020605 0ustar uwabamiuwabami# # Makefile for dvips. Edit this first part of the file. # # First, the things that absolutely must be edited for your system. # modified for Borland C 3.1 on MS-DOS by rjl@monu1.cc.monash.edu.au # 17th February 1994 # compiler directory CCDIR = c:\borlandc # compiler and linker CC = $(CCDIR)\bin\bcc LINK = $(CCDIR)\bin\tlink INCLUDE = $(CCDIR)\include LIB =$(CCDIR)\lib # For Windows application WIN = win # Note that printf("%f",d) didn't work on Windows 3.0, BCC 3.0, 286 & 287 # and is fixed in BCC 3.1. #WIN = win # All DIRs must use a single \ as a directory separator. # All PATHs must use \\\\ as a directory separator and must use \; not ; DRIVE = c: TEXDIR = $(DRIVE)\emtex TEXPATH = $(DRIVE)\\\\emtex # the default path to search for TFM files # (this usually is identical to TeX's defaultfontpath, which omits `.') # (private fonts are given an explicit directory, which overrides the path) # TFMPATH = c:\\\\emtex\\\\tfm TFMPATH = $(TEXPATH)\\\\tfm # the default path to search for PK files (usually omits `.') # Don't forget to add the directory that # MakeTeXPK puts the files! (In this case, /LocalLibrary/Fonts...) # PKPATH = c:\\\\texfonts\\\\pixel.lj\\\\%ddpi\\\\%f.%p PKPATH = $(TEXPATH)\\\\pixel.lj\\\\%ddpi\\\\%f.%p # the default path to search for VF files (usually omits `.') # VFPATH = c:\\\\texfonts\\\\vf VFPATH = $(TEXPATH)\\\\vf # additional directories in which to search for subdirectories to find # both tfm and pk files FONTSUBDIRPATH = # where the config files go # CONFIGDIR = c:\emtex\ps CONFIGDIR = $(TEXDIR)\ps # the default path to search for config files # CONFIGPATH = .\;c:\\\\emtex\\\\ps CONFIGPATH = .\;$(TEXPATH)\\\\ps # the name of your config file # CONFIGFILE = config.ps CONFIGFILE = config.ps # where the header PS files go # HEADERDIR = c:\emtex\ps HEADERDIR = $(TEXDIR)\ps # the default path to search for header files # HEADERPATH = .\;c:\\\\emtex\\\\ps HEADERPATH = .\;$(TEXPATH)\\\\ps # where epsf.tex and rotate.tex go (usually the TeX macros directory) # TEXMACRODIR = c:\emtex\texinput TEXMACROPARENTDIR = $(TEXDIR)\texinput TEXMACRODIR = $(TEXDIR)\texinput\dvips # the default path to search for epsf and psfiles # (usually the same as TeX's defaultinputpath) # FIGPATH = .\;..\;c:\\\\emtex\\\\texinput FIGPATH = .\;..\;$(TEXPATH)\\\\texinput # the default path to search for emTeX font libraries # FLIPATH = c:\\\\texfonts FLIPATH = $(DRIVE)\\\\texfonts # the names of emTeX font libraries # FLINAME = lj_0\;lj_h\;lj_1\;lj_2\;lj_3\;lj_4\;lj_5a\;lj_5b\;lj_sli FLINAME = lj_0\;lj_h\;lj_1\;lj_2\;lj_3\;lj_4\;lj_5a\;lj_5b\;lj_sli # change -DDEFRES=300 or whatever is required # if the default resolution is not 300 dpi, # add -DDEBUG to turn on debugging capability # add -DTPIC for tpic support # add -DFONTLIB to search font libraries # add -DSEARCH_SUBDIRECTORIES to search the FONTSUBDIRPATH. # add -DHAVE_GETCWD if you have getcwd (relevant only for subdir searching) # add -DCREATIONDATE if your system has a working time() and you want dated files # If you define FONTLIB, make sure to also give definitions to # FLIPATH and FLINAME. # DEFS= -DTPIC -DDEBUG -DDEFRES=300 -DFONTLIB -DHAVE_GETCWD -DCREATIONDATE # these options to produce debug map OPT = -M -y -v #OPT = LINKOPT = /l /m /s /v /c #LINKOPT = /c /x # If you are compiling dvips for suid or other privileges, you will # definitely want to define the following symbol; else don't. # SECURE = -DSECURE # If you want EMTEX specials, define the following. EMTEX = -DEMTEX # for SYSV (and friends which use instead of ) # define the c-compiler flag # -DMSDOS for MS-DOS systems SYS = -DMSDOS # where the installed binary goes # BINDIR = c:\emtex BINDIR = $(DRIVE)\emtex # where the manual page goes # MANDIR = c:\emtex\doc MANDIR = $(DRIVE)\emtex\doc #MSDOS sets all paths in turboc.cfg CFLAGS = $(DEFS) $(OPT) $(SYS) $(SECURE) $(EMTEX) $(DEFPFMT) SRC = dospecial.c dviinput.c fontdef.c loadfont.c dvips.c tfmload.c \ download.c prescan.c scanpage.c skippage.c output.c scalewidth.c \ dosection.c dopage.c resident.c search.c unpack.c drawPS.c \ header.c makefont.c repack.c virtualfont.c dpicheck.c finclude.c \ pprescan.c papersiz.c flib.c color.c bbox.c emspecial.c OBJ = dospecial.obj dviinput.obj fontdef.obj loadfont.obj dvips.obj \ tfmload.obj download.obj prescan.obj scanpage.obj skippage.obj \ output.obj scalewidth.obj dosection.obj dopage.obj resident.obj \ search.obj unpack.obj drawPS.obj header.obj makefont.obj repack.obj \ virtualfont.obj dpicheck.obj finclude.obj papersiz.obj flib.obj \ pprescan.obj color.obj bbox.obj emspecial.obj all : afm2tfm.exe dvips$(WIN).exe tex.pro texps.pro texc.pro special.pro \ finclude.pro color.pro crop.pro # default rules .c.obj: !if $d(WIN) $(CC) -c -ml -w-pro -W { $< } !else $(CC) -c -f -ml -w-pro { $< } !endif dvips.exe : $(OBJ) $(LINK) $(LINKOPT) @&&! $(LIB)\C0l + $(OBJ) + ,dvips ,dvips, + $(LIB)\emu + $(LIB)\mathl + $(LIB)\cl ! winmain.obj: pc\winmain.c $(CC) -c -ml -w-pro -W -owinmain.obj pc\winmain.c dvipswin.exe : $(OBJ) winmain.obj pc\dvipswin.rc pc\dvipswin.def $(LINK) /Twe $(LINKOPT) @&&! $(LIB)\C0wl + winmain.obj + $(OBJ) + ,dvipswin ,dvipswin, + $(LIB)\mathwl + $(LIB)\import + $(LIB)\cwl, + pc\dvipswin.def ! $(CCDIR)\bin\brc -30 -i$(INCLUDE) pc\dvipswin.rc dvipswin.exe afm2tfm.exe: afm2tfm.c turboc.cfg $(CC) -mc -w-pro -w-pia afm2tfm.c turboc.cfg: pc\makefile.tc echo -I$(INCLUDE) > turboc.cfg echo -L$(LIB) >> turboc.cfg echo $(CFLAGS) >> turboc.cfg echo -DTFMPATH="$(TFMPATH)" >> turboc.cfg echo -DPKPATH="$(PKPATH)" >> turboc.cfg echo -DVFPATH="$(VFPATH)" >> turboc.cfg echo -DHEADERPATH="$(HEADERPATH)" >> turboc.cfg echo -DCONFIGPATH="$(CONFIGPATH)" >> turboc.cfg echo -DCONFIGFILE="$(CONFIGFILE)" >> turboc.cfg echo -DFONTSUBDIRPATH="$(FONTSUBDIRPATH)" >> turboc.cfg echo -DFIGPATH="$(FIGPATH)" >> turboc.cfg echo -DFLIPATH="$(FLIPATH)" >> turboc.cfg echo -DFLINAME="$(FLINAME)" >> turboc.cfg $(OBJ) : dvips.h debug.h paths.h turboc.cfg squeeze.exe : squeeze.c turboc.cfg $(CC) -mc -w-pro squeeze.c tex.pro : tex.lpr squeeze.exe squeeze tex.lpro tex.pro texc.pro: texc.lpr squeeze.exe squeeze texc.lpro texc.pro texc.lpr: tex.lpr @echo This does "texc.scr tex.lpr texc.lpr" on Unix @echo For MSDOS, copy tex.lpr to texc.lpr @echo then edit texc.lpr to remove the code @echo for uncompressed fonts, and uncomment the @echo code for unpacking compressed fonts texps.pro : texps.lpr squeeze.exe squeeze texps.lpro texps.pro special.pro : special.lpr squeeze.exe squeeze special.lpr special.pro finclude.pro: finclude.lpr squeeze.exe squeeze finclude.lpr finclude.pro color.pro: color.lpr squeeze.exe squeeze color.lpr color.pro crop.pro: crop.lpr squeeze.exe squeeze crop.lpr crop.pro install : afm2tfm.exe dvips$(WIN).exe pc/maketexp.bat \ tex.pro texc.pro texps.pro special.pro finclude.pro color.pro crop.pro \ pc/config.ps psfonts.map epsf.tex epsf.sty rotate.tex rotate.sty \ dvips.tex dvipsmac.tex colordvi.sty colordvi.tex blackdvi.sty \ blackdvi.tex pc/dvips.doc pc/afm2tfm.doc mkdir $(BINDIR) mkdir $(HEADERDIR) mkdir $(CONFIGDIR) mkdir $(MANDIR) mkdir $(TEXMACROPARENTDIR) mkdir $(TEXMACRODIR) copy afm2tfm.exe $(BINDIR)\afm2tfm.exe copy dvips$(WIN).exe $(BINDIR)\dvips$(WIN).exe copy pc\maketexp.bat $(BINDIR)\maketexp.bat copy tex.pro $(HEADERDIR) copy texc.pro $(HEADERDIR) copy texps.pro $(HEADERDIR) copy special.pro $(HEADERDIR) copy finclude.pro $(HEADERDIR) copy color.pro $(HEADERDIR) copy crop.pro $(HEADERDIR) copy pc\config.ps $(CONFIGDIR)\$(CONFIGFILE) copy psfonts.map $(CONFIGDIR) copy epsf.tex $(TEXMACRODIR) copy epsf.sty $(TEXMACRODIR) copy rotate.tex $(TEXMACRODIR) copy rotate.sty $(TEXMACRODIR) copy colordvi.sty $(TEXMACRODIR) copy colordvi.tex $(TEXMACRODIR) copy blackdvi.sty $(TEXMACRODIR) copy blackdvi.tex $(TEXMACRODIR) copy dvips.tex $(TEXMACRODIR) copy dvipsmac.tex $(TEXMACRODIR) copy pc\dvips.doc $(MANDIR) copy pc\afm2tfm.doc $(MANDIR) veryclean : clean del dvips.exe del dvipswin.exe del afm2tfm.exe del *.pro del turboc.cfg clean : del *.obj del squeeze.exe del afm2tfm.map del dvips.map del dvipswin.map del squeeze.map del turboc.cfg dvipsk_TexLive-2009-stripped/pc/squeeze.def0000644000175000017500000000015411372532227020641 0ustar uwabamiuwabamiNAME squeeze WINDOWCOMPAT NEWFILES DESCRIPTION 'squeeze a PostScript file (source: dvips)' STACKSIZE 0x2000 dvipsk_TexLive-2009-stripped/pc/config.ps0000644000175000017500000000267511372532227020323 0ustar uwabamiuwabami* Claim 180kbytes memory m 180000 * Default resolution. D 300 * Default metafont mode (defined in emTeX's local.mf) M hplaser * Paths (uncomment and edit if you need these) *T c:\emtex\tfm *V c:\texfonts\vf *P c:\texfonts\pixel.lj\%ddpi\%f.%p *L c:\texfonts\;lj_0;lj_h;lj_1;lj_2;lj_3;lj_4;lj_5a;lj_5b;lj_sli *S .;c:\emtex\texinput *H .;c:\emtex\ps * Compress fonts Z * * Paper size information. First definition is the default. * * If your default is a4 uncomment the following definition * and comment out the letterSize definition. *@ a4size 210mm 297mm *@+ %%PaperSize: A4 @ letterSize 8.5in 11in @+ %%PaperSize: Letter @ letter 8.5in 11in @+ %%BeginPaperSize: Letter @+ letter @+ %%EndPaperSize @ legal 8.5in 14in @+ ! %%DocumentPaperSizes: Legal @+ %%BeginPaperSize: Legal @+ legal @+ %%EndPaperSize @ ledger 17in 11in @+ ! %%DocumentPaperSizes: Ledger @+ %%BeginPaperSize: Ledger @+ ledger @+ %%EndPaperSize @ tabloid 11in 17in @+ ! %%DocumentPaperSizes: Tabloid @+ %%BeginPaperSize: Tabloid @+ 11x17 @+ %%EndPaperSize @ a4 210mm 297mm @+ ! %%DocumentPaperSizes: A4 @+ %%BeginPaperSize: A4 @+ a4 @+ %%EndPaperSize @ a3 297mm 420mm @+ ! %%DocumentPaperSizes: a3 @+ %%BeginPaperSize: a3 @+ a3 @+ %%EndPaperSize @ unknown 0in 0in @+ statusdict /setpageparams known { hsize vsize 0 1 statusdict begin { @+ setpageparams } stopped end } { true } ifelse { statusdict /setpage known @+ { hsize vsize statusdict begin { setpage } stopped pop end } if } if dvipsk_TexLive-2009-stripped/pc/maketexp.bat0000644000175000017500000000257511372532227021017 0ustar uwabamiuwabami@echo off REM REM This script file makes a new TeX PK font, because one wasn't REM found. Parameters are: REM REM name dpi bdpi magnification [mode] REM REM `name' is the name of the font, such as `cmr10'. `dpi' is REM the resolution the font is needed at. `bdpi' is the base REM resolution, useful for figuring out the mode to make the font REM in. `magnification' is a string to pass to MF as the REM magnification. `mode', if supplied, is the mode to use. REM REM Because of MSDOS memory constraints, this batch file just REM creates a mfjob file, so that the fonts can be created later. REM REM NAME=%1 DPI=%2 BDPI=%3 MAG=%4 MODE=%5 if exist dvips.mfj goto :second echo %% dvips.mfj - created by dvips > dvips.mfj echo input [modes]; >> dvips.mfj echo Created dvips.mfj :second echo { >> dvips.mfj echo base=plain; >> dvips.mfj echo font=%1; >> dvips.mfj echo mag=%4; >> dvips.mfj if "%5" == "" goto :nomode if "%5" == "imagen" goto :hpmode if "%5" == "hplaser" goto :hpmode :goodmode echo mode=%5[%3]; >> dvips.mfj echo output=pk[c:\texfonts\%5\@Rrdpi\@f]; >> dvips.mfj goto :donemode :hpmode echo mode=hplaser[%3]; >> dvips.mfj echo output=pk[c:\texfonts\pixel.lj\@Rrdpi\@f]; >> dvips.mfj goto :donemode :nomode echo m; >> dvips.mfj :donemode echo } >> dvips.mfj echo Run "mfjob dvips" :exit dvipsk_TexLive-2009-stripped/pc/makefile.wat0000644000175000017500000002307211372532227020776 0ustar uwabamiuwabami# # Makefile for dvips. Edit this first part of the file. # # First, the things that absolutely must be edited for your system. # modified for Borland MAKE 3.0 and Watcom 386 9.01 on MS-DOS # by js@rphnw3.ngate.uni-regensburg.de # 18th November 1992 # This version of dvips HAS NOT BEEN THOROUGHLY TESTED # All DIRs must use \\ as a directory separator. # All PATHs must use \\\\ as a directory separator # the default path to search for TFM files # (this usually is identical to TeX's defaultfontpath, which omits `.') # (private fonts are given an explicit directory, which overrides the path) # overridden by the environment variable TEXFONTS # TFMPATH = c:\\emtex\\tfm TFMPATH = c:\\\\emtex\\\\tfm # the default path to search for PK files (usually omits `.') # Don't forget to add the directory that # MakeTeXPK puts the files! (In this case, /LocalLibrary/Fonts...) # overridden by the environment variable TEXPKS or TEXPACKED or PKFONTS # PKPATH = c:\\texfonts\\pixel.lj\\%ddpi\\%f.%p PKPATH = c:\\\\texfonts\\\\pixel.lj\\\\%ddpi\\\\%f.%p # the default path to search for VF files (usually omits `.') # overridden by the environment variable VFFONTS # VFPATH = c:\\texfonts\\vf VFPATH = c:\\\\emtex\\\\vf # additional directories in which to search for subdirectories to find # both tfm and pk files FONTSUBDIRPATH = # where the config files go # CONFIGDIR = c:\emtex\ps CONFIGDIR = c:\\emtex\\ps # the default path to search for config files # overridden by the environment variable TEXCONFIG # CONFIGPATH = .;c:\\emtex\\ps CONFIGPATH = .;c:\\\\emtex\\\\ps # the name of your config file # CONFIGFILE = config.ps CONFIGFILE = config.ps # where the header PS files go # HEADERDIR = c:\emtex\ps HEADERDIR = c:\\emtex\\ps # the default path to search for header files # HEADERPATH = .;c:\\emtex\\ps HEADERPATH = .;c:\\\\emtex\\\\ps # where epsf.tex and rotate.tex go (usually the TeX macros directory) # TEXMACRODIR = c:\emtex\texinput TEXMACROPARENTDIR = c:\\emtex\\texinput TEXMACRODIR = c:\\emtex\\texinput\\dvips # the default path to search for epsf and psfiles # (usually the same as TeX's defaultinputpath) # FIGPATH = .;..;c:\\emtex\\texinput FIGPATH = .;..;c:\\\\emtex\\\\texinput # the default path to search for emTeX font libraries # FLIPATH = c:\\texfonts FLIPATH = c:\\\\texfonts # the names of emTeX font libraries # FLINAME = lj_0;lj_h;lj_1;lj_2;lj_3;lj_4;lj_5a;lj_5b;lj_sli FLINAME = lj_0;lj_h;lj_1;lj_2;lj_3;lj_4;lj_5;lj_sli # change -DDEFRES=300 or whatever is required # if the default resolution is not 300 dpi, # add -DDEBUG to turn on debugging capability # add -DTPIC for tpic support # add -DFONTLIB to search font libraries # add -DSEARCH_SUBDIRECTORIES to search the FONTSUBDIRPATH. # add -DHAVE_GETCWD if you have getcwd (relevant only for subdir searching) # add -DIBM6000 for compiling on IBM 6000 systems # add -DCREATIONDATE if your system has a working time() and you want dated files # (for VM/CMS, see the MKDVIPS.EXEC file in the vmcms subdirectory). # # If you define FONTLIB, make sure to also give definitions to # FLIPATH and FLINAME. # DEFS= -DTPIC -DDEBUG -DDEFRES=300 -DFONTLIB -DHAVE_GETCWD # your compiler CC = wcl386 # either use # OPT = -g -Wall -funsigned-char # or # OPT = -O -s -Wall -funsigned-char OPT = /fpi/om/ox/p # libraries to include (-lm -lc on most systems) #FLIBS= -lNeXT_s -lsys_s #FLIBS= -lm -lc FLIBS= # If you are compiling dvips for suid or other privileges, you will # definitely want to define the following symbol; else don't. # SECURE = -DSECURE SECURE = # If you want EMTEX specials, define the following. EMTEX = -DEMTEX # for SYSV (and friends which use instead of ) # define the c-compiler flag # add -D_POSIX_SOURCE if you are POSIX (also define SYSV) (only relevant # for subdir searching) # add -DMSDOS for MS-DOS systems # add -DDJGPP for MS-DOS GNU's SYS = -DMSDOS -DDJGPP # where the installed binary goes # BINDIR = c:\emtex BINDIR = c:\emtex # where the manual page goes # MANDIR = c:\emtex\doc MANDIR = c:\emtex\doc PATHS = -DTFMPATH=\"$(TFMPATH)\" \ -DPKPATH=\"$(PKPATH)\" \ -DVFPATH=\"$(VFPATH)\" \ -DHEADERPATH=\"$(HEADERPATH)\" \ -DCONFIGPATH=\"$(CONFIGPATH)\" \ -DCONFIGFILE=\"$(CONFIGFILE)\" \ -DFONTSUBDIRPATH=\"$(FONTSUBDIRPATH)\" \ -DFIGPATH=\"$(FIGPATH)\" \ -DFLIPATH=\"$(FLIPATH)\" \ -DFLINAME=\"$(FLINAME)\" CFLAGS = $(DEFS) $(OPT) $(SYS) $(SECURE) $(EMTEX) # default rules .c.obj: $(CC) -c $(CFLAGS) $< SRC = dospecia.c dviinput.c fontdef.c loadfont.c dvips.c tfmload.c \ download.c prescan.c scanpage.c skippage.c output.c scalewid.c \ dosectio.c dopage.c resident.c search.c unpack.c drawPS.c \ header.c makefont.c repack.c virtualf.c dpicheck.c finclude.c \ pprescan.c papersiz.c flib.c color.c bbox.c emspecial.c OBJ = dospecia.obj dviinput.obj fontdef.obj loadfont.obj dvips.obj \ tfmload.obj download.obj prescan.obj scanpage.obj skippage.obj \ output.obj scalewid.obj dosectio.obj dopage.obj resident.obj \ search.obj unpack.obj drawPS.obj header.obj makefont.obj repack.obj \ virtualf.obj dpicheck.obj finclude.obj \ pprescan.obj papersiz.obj flib.obj color.obj bbox.obj emspecial.obj all : afm2tfm.exe dvips4gl.exe dvipsos2.exe tex.pro texps.pro texc.pro \ special.pro finclude.pro color.pro crop.pro dvips4gl.exe: $(OBJ) wat.lnk $(CC) /fe=$&.exe /l=dos4g @wat.lnk dvipsos2.exe: $(OBJ) wat.lnk $(CC) /fe=$&.exe /l=os2v2 @wat.lnk wat.lnk: pc\makefile.wat copy &&| FILE dospecia.obj FILE dviinput.obj FILE fontdef.obj FILE loadfont.obj FILE dvips.obj FILE tfmload.obj FILE download.obj FILE prescan.obj FILE scanpage.obj FILE skippage.obj FILE output.obj FILE scalewid.obj FILE dosectio.obj FILE dopage.obj FILE resident.obj FILE search.obj FILE unpack.obj FILE drawPS.obj FILE header.obj FILE makefont.obj FILE repack.obj FILE virtualf.obj FILE dpicheck.obj FILE finclude.obj FILE pprescan.obj FILE papersiz.obj FILE flib.obj FILE color.obj FILE bbox.obj FILE emspecial.obj | wat.lnk # you have to add the hash sign by hand ! win\wat.h: echo define TFMPATH \"$(TFMPATH)\" >>win\wat.h echo define PKPATH \"$(PKPATH)\" >>win\wat.h echo define VFPATH \"$(VFPATH)\" >>win\wat.h echo define HEADERPATH \"$(HEADERPATH)\" >>win\wat.h echo define CONFIGPATH \"$(CONFIGPATH)\" >>win\wat.h echo define CONFIGFILE \"$(CONFIGFILE)\" >>win\wat.h echo define FONTSUBDIRPATH \"$(FONTSUBDIRPATH)\" >>win\wat.h echo define FIGPATH \"$(FIGPATH)\" >>win\wat.h echo define FLIPATH \"$(FLIPATH)\" >>win\wat.h echo define FLINAME \"$(FLINAME)\" >>win\wat.h dvips.obj: dvips.c $(CC) $(CFLAGS) -c dvips.c /fi=win\wat.h afm2tfm.exe: afm2tfm.c $(CC) $(CFLAGS) afm2tfm.c $(LIBS) $(FLIBS) #$(OBJ) : dvips.h debug.h paths.h squeeze.exe : squeeze.c $(CC) $(CFLAGS) squeeze.c $(LIBS) $(FLIBS) tex.pro : tex.lpr squeeze.exe squeeze tex.lpro tex.pro texc.pro: texc.lpr squeeze.exe squeeze texc.lpro texc.pro texc.lpr: tex.lpr @echo This does "texc.scr tex.lpr texc.lpr" on Unix @echo For MSDOS, copy tex.lpr to texc.lpr @echo then edit texc.lpr to remove the code @echo for uncompressed fonts, and uncomment the @echo code for unpacking compressed fonts texps.pro : texps.lpr squeeze.exe squeeze texps.lpro texps.pro special.pro : special.lpr squeeze.exe squeeze special.lpr special.pro finclude.pro: finclude.lpr squeeze.exe squeeze finclude.lpr finclude.pro color.pro: color.lpr squeeze.exe squeeze color.lpr color.pro crop.pro: crop.lpr squeeze.exe squeeze crop.lpr crop.pro install : afm2tfm.exe dvips$(DEST).exe pc/maketexp.bat \ tex.pro texc.pro texps.pro special.pro finclude.pro color.pro crop.pro \ pc/config.ps psfonts.map epsf.tex epsf.sty rotate.tex rotate.sty \ dvips.tex dvipsmac.tex colordvi.sty colordvi.tex blackdvi.sty \ blackdvi.tex pc/dvips.doc pc/afm2tfm.doc mkdir $(BINDIR) mkdir $(HEADERDIR) mkdir $(CONFIGDIR) mkdir $(MANDIR) mkdir $(TEXMACROPARENTDIR) mkdir $(TEXMACRODIR) copy afm2tfm.exe $(BINDIR)\afm2tfm.exe copy dvips4gl.exe $(BINDIR)\dvips4gl.exe copy dvipsos2.exe $(BINDIR)\dvipsos2.exe copy pc\maketexp.bat $(BINDIR)\maketexp.bat copy tex.pro $(HEADERDIR) copy texc.pro $(HEADERDIR) copy texps.pro $(HEADERDIR) copy texps.pro $(HEADERDIR) copy special.pro $(HEADERDIR) copy finclude.pro $(HEADERDIR) copy color.pro $(HEADERDIR) copy crop.pro $(HEADERDIR) copy pc\config.ps $(CONFIGDIR)\$(CONFIGFILE) copy psfonts.map $(CONFIGDIR) copy epsf.tex $(TEXMACRODIR) copy epsf.sty $(TEXMACRODIR) copy rotate.tex $(TEXMACRODIR) copy rotate.sty $(TEXMACRODIR) copy colordvi.sty $(TEXMACRODIR) copy colordvi.tex $(TEXMACRODIR) copy blackdvi.sty $(TEXMACRODIR) copy blackdvi.tex $(TEXMACRODIR) copy dvips.tex $(TEXMACRODIR) copy dvipsmac.tex $(TEXMACRODIR) copy pc\dvips.doc $(MANDIR) copy pc\afm2tfm.doc $(MANDIR) veryclean : del *.obj del dvips4gl.exe del dvipsos2.exe del squeeze.exe del afm2tfm.exe del *.pro del *.bak del *.log del wat.lnk clean : del *.obj del squeeze.exe del *.bak del *.log del wat.lnk dvipsk_TexLive-2009-stripped/pc/makefile.msc0000644000175000017500000002206011372532227020761 0ustar uwabamiuwabami# # Makefile for dvips. Edit this first part of the file. # # First, the things that absolutely must be edited for your system. # modified for MSC 6.00A with dmake on OS/2. # by hankedr@mail.auburn.edu # 17th February 1994 # from makefile.emx # by rjl@monu1.cc.monash.edu.au # If using HPFS you may need to type 'nmake fixup' to truncate names. # If using NDMAKE 4.5 under MS-DOS, PKPATH needs %% changed to %. # If using Borland MAKER under MS-DOS, all paths need \\ changed to \\\\. # compiler CC = cl -nologo -AL # Define BIND to create bound OS/2 and DOS executables BIND= bind $@ /n DOSMAKEPIPE DOSCWAIT # Utility programs for "make install" CP = cp RM = rm # All DIRs must use a single \ as a directory separator. # All PATHs must use \\ as a directory separator DRIVE = c: TEXDIR = $(DRIVE)\emtex TEXPATH = $(DRIVE)\\emtex # the default path to search for TFM files # (this usually is identical to TeX's defaultfontpath, which omits `.') # (private fonts are given an explicit directory, which overrides the path) # TFMPATH = c:\\emtex\\tfm TFMPATH = $(TEXPATH)\\tfm # the default path to search for PK files (usually omits `.') # Don't forget to add the directory that # MakeTeXPK puts the files! (In this case, /LocalLibrary/Fonts...) # PKPATH = c:\\texfonts\\pixel.lj\\%ddpi\\%f.%p #PKPATH = $(DRIVE)\\texfonts\\pixel.lj\\%ddpi\\%f.%p PKPATH = $(DRIVE)\\texfonts\\pixel.lj\\%%ddpi\\%%f.%%p # the default path to search for VF files (usually omits `.') # VFPATH = c:\\texfonts\\vf VFPATH = $(DRIVE)\\texfonts\\vf # additional directories in which to search for subdirectories to find # both tfm and pk files FONTSUBDIRPATH = # where the config files go # CONFIGDIR = c:\emtex\ps CONFIGDIR = $(TEXDIR)\ps # the default path to search for config files # CONFIGPATH = .;c:\\emtex\\ps CONFIGPATH = .;$(TEXPATH)\\ps # the name of your config file # CONFIGFILE = config.ps CONFIGFILE = config.ps # where the header PS files go # HEADERDIR = c:\emtex\ps HEADERDIR = $(TEXDIR)\ps # the default path to search for header files # HEADERPATH = .;c:\\emtex\\ps HEADERPATH = .;$(TEXPATH)\\ps # where epsf.tex and rotate.tex go (usually the TeX macros directory) # TEXMACRODIR = c:\emtex\texinput TEXMACROPARENTDIR = $(TEXDIR)\texinput TEXMACRODIR = $(TEXDIR)\texinput\dvips # the default path to search for epsf and psfiles # (usually the same as TeX's defaultinputpath) # FIGPATH = .;..;c:\\emtex\\texinput FIGPATH = .;..;$(TEXPATH)\\texinput # the default path to search for emTeX font libraries # FLIPATH = c:\\texfonts FLIPATH = c:\\texfonts # the names of emTeX font libraries # FLINAME = lj_0;lj_h;lj_1;lj_2;lj_3;lj_4;lj_5a;lj_5b;lj_sli FLINAME = lj_0;lj_h;lj_1;lj_2;lj_3;lj_4;lj_5a;lj_5b;lj_sli # change -DDEFRES=300 or whatever is required # if the default resolution is not 300 dpi, # add -DDEBUG to turn on debugging capability # add -DTPIC for tpic support # add -DFONTLIB to search font libraries # add -DSEARCH_SUBDIRECTORIES to search the FONTSUBDIRPATH. # add -DHAVE_GETCWD if you have getcwd (relevant only for subdir searching) # add -DCREATIONDATE if your system has a working time() and you want dated files # If you define FONTLIB, make sure to also give definitions to # FLIPATH and FLINAME. # DEFS= -DTPIC -DDEBUG -DFONTLIB -DDEFRES=300 -DHAVE_GETCWD # OPT = -J -W2 -Zi OPT = -J # LFLAGS = -Lp -Zi -Od LFLAGS = -Lp setargv$O -link /NOE # If you are compiling dvips for suid or other privileges, you will # definitely want to define the following symbol; else don't. # SECURE = -DSECURE SECURE = # If you want EMTEX specials, define the following. EMTEX = -DEMTEX # define the c-compiler flag # -DOS2 for OS/2 and MS-DOS with EMX extender or MSC SYS = -DOS2 -UMSDOS # where the installed binary goes # BINDIR = c:\emtex BINDIR = $(TEXDIR) # where the manual page goes # MANDIR = c:\emtex\doc MANDIR = $(TEXDIR)\doc PATHS = -DCREATIONDATE \ -DTFMPATH=\"$(TFMPATH)\" \ -DPKPATH=\"$(PKPATH)\" \ -DVFPATH=\"$(VFPATH)\" \ -DHEADERPATH=\"$(HEADERPATH)\" \ -DCONFIGPATH=\"$(CONFIGPATH)\" \ -DCONFIGFILE=\"$(CONFIGFILE)\" \ -DFONTSUBDIRPATH=\"$(FONTSUBDIRPATH)\" \ -DFIGPATH=\"$(FIGPATH)\" \ -DFLIPATH=\"$(FLIPATH)\" \ -DFLINAME=\"$(FLINAME)\" CFLAGS = $(OPT) $(SYS) $(SECURE) $(EMTEX) $(DEFS) SRC = dospecia.c dviinput.c fontdef.c loadfont.c dvips.c tfmload.c \ download.c prescan.c scanpage.c skippage.c output.c scalewid.c \ dosectio.c dopage.c resident.c search.c unpack.c drawPS.c \ header.c makefont.c repack.c virtualf.c dpicheck.c finclude.c \ pprescan.c papersiz.c flib.c color.c bbox.c emspecia.c OBJ = dospecia$O dviinput$O fontdef$O loadfont$O dvips$O \ tfmload$O download$O prescan$O scanpage$O skippage$O \ output$O scalewid$O dosectio$O dopage$O resident$O \ search$O unpack$O drawPS$O header$O makefont$O repack$O \ virtualf$O dpicheck$O finclude$O \ pprescan$O papersiz$O flib$O color$O bbox$O emspecia$O all : afm2tfm.exe dvips16.exe tex.pro texps.pro texc.pro \ special.pro finclude.pro color.pro crop.pro # default rules O = .obj .SUFFIXES: $O .c .c$O: $(CC) -c $(CFLAGS) $(PATHS) $< dvips16.exe: $(OBJ) $(CC) -o $@ $(OBJ) pc\dvips16.def $(LFLAGS) $(BIND) # The following may be useful in adapting this makefile to DOS # LINK = link # LINKOPT = /NOE /NOD:llibce.lib llibcep.lib, pc\dvips16.def # # link.rsp: pc/makefile.msc # echo dospecia$O + > link.rsp # echo dviinput$O + >>link.rsp # echo fontdef$O + >>link.rsp # echo loadfont$O + >>link.rsp # echo dvips$O + >>link.rsp # echo tfmload$O + >>link.rsp # echo download$O + >>link.rsp # echo prescan$O + >>link.rsp # echo scanpage$O + >>link.rsp # echo skippage$O + >>link.rsp # echo output$O + >>link.rsp # echo scalewid$O + >>link.rsp # echo dosectio$O + >>link.rsp # echo dopage$O + >>link.rsp # echo resident$O + >>link.rsp # echo search$O + >>link.rsp # echo unpack$O + >>link.rsp # echo drawPS$O + >>link.rsp # echo header$O + >>link.rsp # echo makefont$O + >>link.rsp # echo repack$O + >>link.rsp # echo virtualf$O + >>link.rsp # echo dpicheck$O + >>link.rsp # echo finclude$O + >>link.rsp # echo pprescan$O + >>link.rsp # echo papersiz$O + >>link.rsp # echo flib$O + >>link.rsp # echo color$O + >>link.rsp # echo bbox$O + >>link.rsp # echo emspecia$O + >>link.rsp # echo setargv$O, dvips16.exe,, + >>link.rsp # echo $(LINKOPT) >>link.rsp afm2tfm.exe: afm2tfm.c $(CC) $(CFLAGS) afm2tfm.c -o $@ pc\afm2tfm.def $(LFLAGS) $(BIND) $(OBJ) : dvips.h debug.h paths.h squeeze.exe : squeeze.c $(CC) $(CFLAGS) squeeze.c -o $@ pc\squeeze.def $(LFLAGS) $(BIND) tex.pro : tex.lpr squeeze.exe squeeze tex.lpr tex.pro texc.pro: texc.lpr squeeze.exe squeeze texc.lpr texc.pro texc.lpr: tex.lpr @echo This does "texc.scr tex.lpro texc.lpro" on Unix @echo For MSDOS or OS/2, copy tex.lpro to texc.lpr @echo then edit texc.lpr to remove the code @echo for uncompressed fonts and uncomment the @echo code for unpacking compressed fonts texps.pro : texps.lpr squeeze.exe squeeze texps.lpr texps.pro special.pro : special.lpr squeeze.exe squeeze special.lpr special.pro finclude.pro: finclude.lpr squeeze.exe squeeze finclude.lpr finclude.pro color.pro: color.lpr squeeze.exe squeeze color.lpr color.pro crop.pro: crop.lpr squeeze.exe squeeze crop.lpr crop.pro install : afm2tfm.exe dvips16.exe pc/maketexp.bat pc/maketexp.cmd \ tex.pro texc.pro texps.pro special.pro finclude.pro color.pro crop.pro \ pc/config.ps psfonts.map epsf.tex epsf.sty rotate.tex rotate.sty \ dvips.tex dvipsmac.tex colordvi.sty colordvi.tex blackdvi.sty \ blackdvi.tex pc/dvips.doc pc/afm2tfm.doc -mkdir $(BINDIR) -mkdir $(HEADERDIR) -mkdir $(CONFIGDIR) -mkdir $(MANDIR) -mkdir $(TEXMACROPARENTDIR) -mkdir $(TEXMACRODIR) $(CP) afm2tfm.exe $(BINDIR)\afm2tfm.exe $(CP) dvips16.exe $(BINDIR)\dvips16.exe $(CP) pc\maketexp.bat $(BINDIR)\maketexp.bat $(CP) pc\maketexp.cmd $(BINDIR)\maketexp.cmd $(CP) tex.pro $(HEADERDIR) $(CP) texc.pro $(HEADERDIR) $(CP) texps.pro $(HEADERDIR) $(CP) special.pro $(HEADERDIR) $(CP) finclude.pro $(HEADERDIR) $(CP) color.pro $(HEADERDIR) $(CP) crop.pro $(HEADERDIR) $(CP) pc\config.ps $(CONFIGDIR)\$(CONFIGFILE) $(CP) psfonts.map $(CONFIGDIR) $(CP) epsf.tex $(TEXMACRODIR) $(CP) epsf.sty $(TEXMACRODIR) $(CP) rotate.tex $(TEXMACRODIR) $(CP) rotate.sty $(TEXMACRODIR) $(CP) colordvi.sty $(TEXMACRODIR) $(CP) colordvi.tex $(TEXMACRODIR) $(CP) blackdvi.sty $(TEXMACRODIR) $(CP) blackdvi.tex $(TEXMACRODIR) $(CP) dvips.tex $(TEXMACRODIR) $(CP) dvipsmac.tex $(TEXMACRODIR) $(CP) pc\dvips.doc $(MANDIR) $(CP) pc\afm2tfm.doc $(MANDIR) veryclean : -$(RM) *.obj -$(RM) dvips16.exe -$(RM) squeeze.exe -$(RM) afm2tfm.exe -$(RM) *.pro clean : -$(RM) *.obj -$(RM) squeeze.exe fixup: -rename dosection.c dosectio.c -rename dospecial.c dospecia.c -rename emspecial.c emspecia.c -rename scalewidth.c scalewid.c -rename virtualfont.c virtualf.c -rename tex.lpro tex.lpr -rename texc.lpro texc.lpr -rename texps.lpro texps.lpr -rename special.lpro special.lpr -rename finclude.lpro finclude.lpr -rename color.lpro color.lpr -rename crop.lpro crop.lpr dvipsk_TexLive-2009-stripped/pc/maketexp.cmd0000644000175000017500000000270211372532227021004 0ustar uwabamiuwabami@echo off REM REM This script file makes a new TeX PK font, because one wasn't REM found. Parameters are: REM REM name dpi bdpi magnification [mode] REM REM `name' is the name of the font, such as `cmr10'. `dpi' is REM the resolution the font is needed at. `bdpi' is the base REM resolution, useful for figuring out the mode to make the font REM in. `magnification' is a string to pass to MF as the REM magnification. `mode', if supplied, is the mode to use. REM REM Because of MSDOS memory constraints, this batch file just REM creates a mfjob file, so that the fonts can be created later. REM REM NAME=%1 DPI=%2 BDPI=%3 MAG=%4 MODE=%5 if exist dvips.mfj goto :second echo %% dvips.mfj - created by dvips > dvips.mfj echo input [modes]; >> dvips.mfj echo Created dvips.mfj :second echo { >> dvips.mfj echo base=plain; >> dvips.mfj echo font=%1; >> dvips.mfj echo mag=%4; >> dvips.mfj if "%5" == "" goto :nomode if "%5" == "imagen" goto :hpmode if "%5" == "hplaser" goto :hpmode :goodmode echo mode=%5[%3]; >> dvips.mfj echo output=pk[c:\texfonts\%5\@Rrdpi\@f]; >> dvips.mfj goto :donemode :hpmode echo mode=hplaser[%3]; >> dvips.mfj echo output=pk[c:\texfonts\pixel.lj\@Rrdpi\@f]; >> dvips.mfj goto :donemode :nomode echo m; >> dvips.mfj :donemode echo } >> dvips.mfj REM Uncomment the following line and comment out the echo instruction to REM make operation automatic. REM mfjob dvips echo Run "mfjob dvips" :exit dvipsk_TexLive-2009-stripped/pc/makefile.wt20000644000175000017500000002310011372532227020707 0ustar uwabamiuwabami# # Makefile for dvips. Edit this first part of the file. # # Watcom C/386 9.0 for MSDOS, 21 Dec 1993, rcpt@urc.tue.nl. # Compilation takes about 3 minutes on my 486/8MB clone. # # [ If you don't have MTPK, # - remove mtpk.c from SRC # - remove mtpk.obj from OBJ # rjl 23 Dec 1993 ] # # This makefile use the UNIX compatible rm.exe and sed.exe tools. # They are available on good fileservers. And because of MSDOS # limitations in handling command lines you have to add manually an # include line to dvips.c and mtpk.c: # #include "dvips.wat" (the one needed in dvips.c) # #include "paths.wat" (the one needed in mtpk.c) # # First, the things that absolutely must be edited for your system. # Please, don't forget to install MTPK with the same settings # # Run with: `wmake -f pc\makefile.wat' from dvips source directory. # Define default resolution DEFRES = 300 # Define name of MTPK MTPK = mtpk # where TeX is `rooted'. Sometimes d:\emtex # TEXDIR = c:\emtex TEXDIR = c:\emtex # another place pk, tfm, and vf files might be found. # LOCALDIR = c:\texfonts LOCALDIR = # the default path to search for TFM files # (this usually is identical to TeX's defaultfontpath, which omits `.') # (private fonts are given an explicit directory, which overrides the path) # overridden by the environment variable TEXFONTS # TFMPATH = .;$(TEXDIR)\tfm TFMPATH = .;$(TEXDIR)\tfm # the default path to search for PK files # Don't forget to add the directory that MTPK puts the files! # (In this case %ddpi\%f.pk) # overridden by the environment variable TEXPKS or TEXPACKED or PKFONTS # PKPATH = %ddpi\%f.pk;$(TEXDIR)\texfonts\%m\%ddpi\%f.pk PKPATH = %ddpi\%f.pk;$(TEXDIR)\texfonts\%m\%ddpi\%f.pk # Default FLIPATH and FLINAME FLIPATH = $(TEXDIR)\texfonts FLINAME = lj_0;lj_h;lj_1;lj_2;lj_3;lj_4;lj_5 # the default path to search for VF files (usually omits `.') # overridden by the environment variable VFFONTS # VFPATH = .;$(TEXDIR)\vf VFPATH = .;$(TEXDIR)\vf # additional directories in which to search for subdirectories to find # both tfm and pk files FONTSUBDIRPATH = # where the config files go # CONFIGDIR = $(TEXDIR)\ps CONFIGDIR = $(TEXDIR)\ps # the default path to search for config files # overridden by the environment variable TEXCONFIG # CONFIGPATH = .;$(CONFIGDIR) CONFIGPATH = .;$(CONFIGDIR) # the name of your config file # CONFIGFILE = config.ps CONFIGFILE = config.ps # where the header PS files go # HEADERDIR = $(TEXDIR)\ps HEADERDIR = $(TEXDIR)\ps # the default path to search for header files # HEADERPATH = .;$(HEADERDIR) HEADERPATH = .;$(HEADERDIR) # where epsf.tex and rotate.tex go (usually the TeX macros directory) # TEXMACRODIR = $(TEXDIR)\texinput TEXMACROPARENTDIR = $(TEXDIR)\texinput TEXMACRODIR = $(TEXMACROPARENTDIR)\dvips # the default path to search for epsf and psfiles # (usually the same as TeX's defaultinputpath) # FIGPATH = .;$(TEXDIR)\texinput FIGPATH = .;$(TEXDIR)\texinput # the place man pages are located. MANDIR = $(TEXDIR)\doc # change -DDEFRES=300 or whatever is required # if the default resolution is not 300 dpi, # add -DDEBUG to turn on debugging capability # add -DTPIC for tpic support # add -DFONTLIB to search font libraries # add -DSEARCH_SUBDIRECTORIES to search the FONTSUBDIRPATH. # add -DHAVE_GETCWD if you have getcwd (relevant only for subdir searching) # add -DIBM6000 for compiling on IBM 6000 systems # add -DCREATIONDATE if your system has a working time() and you want dated files # (for VM/CMS, see the MKDVIPS.EXEC file in the vmcms subdirectory). # # If you define FONTLIB, make sure to also give definitions to # FLIPATH and FLINAME. # # If your compiler doesn't like void*, then add # -DVOID=char # DEFS= -DTPIC -DDEBUG -DFONTLIB -DHAVE_GETCWD # either use # OPT = -dMSDOS -zq -d2 -j # OPTIMIZE = /oaxe /zp4 /4r # or OPTIMIZE = /oaxe /zp4 /4r OPT = -dMSDOS -zq -d2 -j # libraries to include (-lm -lc on most systems) #FLIBS= FLIBS= # If you are compiling dvips for suid or other privileges, you will # definitely want to define the following symbol; else don't. # SECURE = -DSECURE # If you want EMTEX specials, define the following. EMTEX = -DEMTEX # for SYSV (and friends which use instead of ) # define the c-compiler flag # add -D_POSIX_SOURCE if you are POSIX (also define SYSV) (only relevant # for subdir searching) # SYS = -DSYSV # Define this to be whatever you use for installation. If you don't have # install, use a script that invokes copy and chmod's the files # appropriately. # INSTALL = copy INSTALL = copy # where the installed binary goes # BINDIR = $(TEXDIR) BINDIR = $(TEXDIR) # Compiler and linker names (protected mode versions) CC = wcl386 -p LD = wlinkp .EXTENSIONS: .EXTENSIONS: .exe .obj .c .BEFORE @set INCLUDE=.;$(%watcom)\h @set DOS4G=quiet CFLAGS = $(DEFS) $(OPT) $(EMTEX) $(OPTIMIZE) SRC = dospecial.c dviinput.c fontdef.c loadfont.c dvips.c tfmload.c & download.c prescan.c scanpage.c skippage.c output.c scalewidth.c & dosection.c dopage.c resident.c search.c unpack.c drawPS.c & header.c mtpk.c repack.c virtualfont.c dpicheck.c finclude.c & pprescan.c papersiz.c flib.c color.c bbox.c emspecial.c OBJ = dospecial.obj dviinput.obj fontdef.obj loadfont.obj dvips.obj & tfmload.obj download.obj prescan.obj scanpage.obj skippage.obj & output.obj scalewidth.obj dosection.obj dopage.obj resident.obj & search.obj unpack.obj drawPS.obj header.obj mtpk.obj repack.obj & virtualfont.obj dpicheck.obj finclude.obj pprescan.obj papersiz.obj & flib.obj color.obj bbox.obj emspecial.obj all : afm2tfm.exe dvips.exe tex.pro texps.pro texc.pro special.pro & finclude.pro color.pro crop.pro .SYMBOLIC dvips.exe : $(OBJ) dvips.rsp $(LD) @dvips.rsp dvips.rsp: pc\Makefile.wat echo name dvips.exe > dvips.rsp echo debug all >> dvips.rsp echo option caseexact >> dvips.rsp echo option dosseg >> dvips.rsp echo system dos4g >> dvips.rsp for %f in ($(OBJ)) do echo file %f >> dvips.rsp dvips.obj: dvips.c dvips.wat $(CC) $(CFLAGS) -c dvips.c mtpk.obj: mtpk.c paths.wat $(CC) $(CFLAGS) -c mtpk.c afm2tfm.exe: afm2tfm.obj $(LD) system dos4g name afm2tfm.exe file afm2tfm.obj squeeze.exe : squeeze.obj $(LD) system dos4g file squeeze.obj name squeeze.exe tex.pro : tex.lpro squeeze.exe squeeze tex.pro texc.pro: texc.lpro squeeze.exe squeeze texc.pro texc.lpro: texc.script tex.lpro @echo ================================================ @echo Create texc.lpro: @echo 1) copy tex.lpro texc.lpro @echo 2) edit texc.lpro; delete lines between @echo % begin code for uncompressed fonts only @echo % end code for uncompressed fonts only @echo 3) remove comments `% ' for next lines till line @echo % end of code for unpacking compressed fonts @echo 4) restart make @echo ================================================ texps.pro : texps.lpro squeeze.exe squeeze texps.pro special.pro : special.lpro squeeze.exe squeeze special.pro finclude.pro : finclude.lpro squeeze.exe squeeze finclude.pro color.pro : color.lpro squeeze.exe squeeze color.pro crop.pro : crop.lpro squeeze.exe squeeze crop.pro install : afm2tfm.exe dvips.exe & tex.pro texc.pro texps.pro special.pro finclude.pro color.pro & crop.pro config.ps psfonts.map epsf.tex epsf.sty rotate.tex & rotate.sty colordvi.tex colordvi.sty blackdvi.tex blackdvi.sty & dvips.tex dvipsmac.tex .SYMBOLIC -md $(BINDIR) -md $(CONFIGDIR) -md $(HEADERDIR) -md $(MANDIR) -md $(TEXMACRODIR) $(INSTALL) afm2tfm.exe $(BINDIR)\afm2tfm.exe $(INSTALL) dvips.exe $(BINDIR)\dvips.exe $(INSTALL) tex.pro $(HEADERDIR) $(INSTALL) texc.pro $(HEADERDIR) $(INSTALL) texps.pro $(HEADERDIR) $(INSTALL) special.pro $(HEADERDIR) $(INSTALL) finclude.pro $(HEADERDIR) $(INSTALL) color.pro $(HEADERDIR) $(INSTALL) crop.pro $(HEADERDIR) $(INSTALL) config.ps $(CONFIGDIR)\$(CONFIGFILE) $(INSTALL) psfonts.map $(CONFIGDIR) $(INSTALL) epsf.tex $(TEXMACRODIR) $(INSTALL) epsf.sty $(TEXMACRODIR) $(INSTALL) rotate.tex $(TEXMACRODIR) $(INSTALL) rotate.sty $(TEXMACRODIR) $(INSTALL) colordvi.sty $(TEXMACRODIR) $(INSTALL) colordvi.tex $(TEXMACRODIR) $(INSTALL) blackdvi.sty $(TEXMACRODIR) $(INSTALL) blackdvi.tex $(TEXMACRODIR) $(INSTALL) dvips.tex $(MANDIR) $(INSTALL) dvipsmac.tex $(MANDIR) veryclean : clean .SYMBOLIC -rm -f dvips.exe texc.lpro *.pro clean -rm -f *.obj squeeze.exe afm2tfm.exe *.log *.dvi dvips.wat: pc\Makefile.wat echo $#define TFMPATH "$(TFMPATH)" > dvips.tmp echo $#define PKPATH "$(PKPATH)" >> dvips.tmp echo $#define VFPATH "$(VFPATH)" >> dvips.tmp echo $#define HEADERPATH "$(HEADERPATH)" >> dvips.tmp echo $#define CONFIGPATH "$(CONFIGPATH)" >> dvips.tmp echo $#define CONFIGFILE "$(CONFIGFILE)" >> dvips.tmp echo $#define FONTSUBDIRPATH "$(FONTSUBDIRPATH)" >> dvips.tmp echo $#define FIGPATH "$(FIGPATH)" >> dvips.tmp echo $#define DEFRES $(DEFRES) >> dvips.tmp echo $#define FLIPATH "$(FLIPATH)" >> dvips.tmp echo $#define FLINAME "$(FLINAME)" >> dvips.tmp sed -e "s,\\,\\\\,g" dvips.tmp > dvips.wat -rm dvips.tmp paths.wat: pc\Makefile.wat echo $#define TFMPATH "$(TFMPATH)" > paths.tmp echo $#define PKPATH "$(PKPATH)" >> paths.tmp echo $#define VFPATH "$(VFPATH)" >> paths.tmp echo $#define HEADERPATH "$(HEADERPATH)" >> paths.tmp echo $#define CONFIGPATH "$(CONFIGPATH)" >> paths.tmp echo $#define CONFIGFILE "$(CONFIGFILE)" >> paths.tmp echo $#define MODEDEF $(DEFRES) >> paths.tmp echo $#define FLIPATH "$(FLIPATH);$(FLINAME)" >> paths.tmp echo $#define MTPK "$(MTPK)" >> paths.tmp sed -e "s,\\,\\\\,g" paths.tmp > paths.wat -rm paths.tmp .c.obj: $(CC) $(CFLAGS) -c $[* dvipsk_TexLive-2009-stripped/pc/winmain.c0000644000175000017500000000415011372532227020306 0ustar uwabamiuwabami/* * dvips - winmain.c * This module is Copyright 1992 by Russell Lang and Maurice Castro. * This file may be freely copied and modified. */ #include #include #include #include /* local */ #define MAXSTR 255 HWND FAR hwndeasy; static char FAR szAppName[] = "dvips"; char winline[MAXSTR]; /* command line for MS-Windows */ int wargc; /* argc for windows */ char *wargv[32]; /* argv for windows */ /* external */ extern void help(); /* in dvips.c */ extern void error(); /* in dvips.c */ /* EasyWin */ extern POINT _ScreenSize; int main(int argc, char *argv[], char *env[]); /* A fake system() for Microsoft Windows */ int system(command) char *command; { char str[MAXSTR]; strcpy(str,"Windows can't do system(\042"); if (command) { strncat(str,command,MAXSTR-strlen(str)); } strncat(str,"\042);",MAXSTR-strlen(str)); error(str); return(1); /* error */ } /* Get a new command line */ void winargs() { fputs("Options: ",stdout); fgets(winline,MAXSTR,stdin); wargc=1; if ( (wargv[1] = strtok(winline," \n")) != (char *)NULL ) { wargc=2; while ( ((wargv[wargc] = strtok((char *)NULL," \n")) != (char *)NULL) && (wargc < 31) ) wargc++; } wargv[wargc] = (char *)NULL; } int PASCAL WinMain(HANDLE hInstance, HANDLE hPrevInstance, LPSTR lpszCmdLine, int cmdShow) { char modulename[MAXSTR]; /* start up the text window */ _ScreenSize.y = 50; _InitEasyWin(); /* fix up the EasyWindows window provided by Borland */ GetModuleFileName(hInstance, (LPSTR) modulename, MAXSTR); hwndeasy = FindWindow("BCEasyWin", modulename); SetWindowText(hwndeasy, szAppName); /* change title */ SetClassWord(hwndeasy, GCW_HICON, LoadIcon(hInstance, "RadicalEye")); /* change icon */ if (_argc==1) { /* get new command line if no options or filenames */ help(); winargs(); wargv[0] = _argv[0]; _argc=wargc; _argv=wargv; } main(_argc, _argv, environ); /* unfortunately dvips doesn't return from main(), it exits */ /* so the following code is never executed */ DestroyWindow(hwndeasy); return 0; } dvipsk_TexLive-2009-stripped/pc/README.pc0000644000175000017500000001447211372532227017771 0ustar uwabamiuwabamiSome notes on installing dvips 5.5 on MS-DOS and OS/2 by Russell Lang 17th February 1994 These notes are not by Tomas Rokicki. Tomas Rokicki does not use MS-DOS ( smart person :-) and so will be unable to answer questions about MS-DOS problems. ========= ZIP files ========= If you have ZIP files, one should contain the sources of dvips (same as labrea.stanford.edu:pub/dvips55?.tar.Z) and the other should contain dvips ready to run with the following compiled versions of dvips: dvips.exe MS-DOS 8086 dvipswin.exe MS-Windows 3.1 dvips32.exe OS/2 32 bit or MS-DOS with EMX DOS extender The following may or may not be in the ZIP file. dvips16.exe OS/2 16 bit and MS-DOS (MSC6). To install this in the emTeX directories on drive C:, use unzip dvips55? c:\ ======= General ======= If you want to use a different directory arrangement, modify the paths in c:\emtex\ps\config.ps. If you want to store config.ps or psfonts.map in a different place, either recompile dvips or use the environment variable TEXCONFIG. The LaTeX and TeX input files supplied with dvips (e.g. epsf.sty, epsf.tex) are now put in c:\emtex\texinput\dvips and not in their old location c:\emtex\texinput. This means that you need emTeX beta 11 and you will need to enable emTeX's subdirectory searching with set TEXINPUT=c:\emtex\texinput! The MSDOS and OS/2 versions of dvips differ from the Unix version described in dvips.tex in the following ways: - path separators are ';' not ':' - directory separators are '\' not '/' - The user's initialization file is "dvips.ini" not ".dvipsrc". - Printer configuration files are called .cfg, not config.. - Pipes to printers are not supported by MS-DOS. Output must go to a file. OS/2 supports pipes. - MakeTeXPk is a batch or command file. Since MS-DOS has insufficient memory to run both dvips and metafont at the same time, this batch or command file will typically write out a set of commands for running metafont later. The maketexp.bat supplied writes out an mfjob file for em\TeX. OS/2 has more memory so the maketexp.cmd supplied writes out an mfjob file for emTeX and calls mfjob. The emTeX betatest mfjob 1.1l package is required. - To automatically make fonts under MS-DOS, use emTeX's dvidrv as follows: dvidrv dvips file.dvi dvidrv is part of the emTeX betatest dvidrv 1.4s package. dvidrv sets an option -pj=mfjobfile for dvips, where mfjobfile is the name of a temporary mfjob file. If there are missing fonts, dvips will write this mfjob file and then ask: Exit to make missing fonts now (y/n)? If you answer yes, dvips exits with errorlevel 8 which tells dvidrv to call mfjob to make the fonts, and then to call dvips again. For this to work, dvidrv, dvips, mfjob and mf must be located in the PATH, and the environment variables for mfjob and mf set correctly. A font mode must be set with the 'M' option in config.ps. If the -pj option is set, dvips will not call MakeTeXPk.bat - limited emTeX specials. The following ones are supported: \special{em:message xxx} \special{em:point n} \special{em:line a[h|v|p],b[h|v|p] [,width]} \special{em:linewidth width} \special{em:moveto} \special{em:lineto} \special{em:graph xxx[,width[,height]]} The line cut parameters [h|v|p] of the \special{em:line ...} command are ignored. Lines are ended with a rounded cap. A maximum of 1613 different point numbers are permitted on each page. The \special{em:graph xxx} should work with PCX, MSP1, MSP2 and BMP files. Compressed BMP files have not been tested. The graph file may be scaled by giving an optional width and height (expressed in the same way as TeX dimensions). An example: \special{em:graph scrdump.pcx,100mm,75mm} The program dvips can use emTeX font libraries created with the fontlib /2 option. PXL fonts within font libraries will be ignored. If you run out of memory running dvips, try using the `-Z0 -a' or just the `-a' command line options. If that fails, use the 32 bit version. ===== Files ===== This set of MSDOS and OS/2 files for dvips contains: README.pc This file. makefile.tc Makefile for Borland C++ (MS-DOS). makefile.emx Makefile for nmake/ndmake and emx/gcc (OS/2 and MS-DOS). makefile.msc Makefile for dmake and MSC6 (OS/2). makefile.wat Makefile for Watcom C (untested) makefile.wt2 Makefile for Watcom C (untested) config.ps config.ps modified for MSDOS and OS/2 maketexp.bat Batch file to make tex pk files. maketexp.cmd OS/2 batch file to make tex pk files. winmain.c WinMain() routine for Windows dvips. dvipswin.rc Windows Resource file containing radical eye icon. dvipswin.def Windows defaults file. afm2tfm.def OS/2 16 bit defaults file. dvips16.def OS/2 16 bit defaults file. squeeze.def OS/2 16 bit defaults file. ========= Compiling ========= If you have the Unix tar file, the steps involved in making dvips on a PC are: - On Unix, in the dvips directory, give the following commands: make texc.lpro nroff -man dvips.1 > pc/dvips.doc nroff -man afm2tfm.1 > pc/afm2tfm.doc - Copy dvips/* and dvips/pc/* directories to the PC. - copy PStfms/*.tfm to C:\EMTEX\TFM on the PC (then optionally delete pst*.tfm, rpst*.tfm, pop*.tfm rpop*.tfm, pad*.tfm rpad*.tfm) - copy PSvfs/*.vf to C:\TEXFONTS\VF on the PC (then optionally delete pst*.vf, pop*.vf, pad*.vf) - edit dvipsmac.tex and replace the line \generictrue with %\generictrue For Borland C++: - edit paths and directories in pc/makefile.tc and pc/config.ps. - 'make -fpc/makefile.tc' Borland C++ gives a large number of 'possible incorrect assignment' warnings. - if that works, try 'make -fpc/makefile.tc install'. - change to another directory (to avoid using the Unix config.ps) and then try to run dvips! For emx/gcc: - edit paths and directories in pc/makefile.emx and pc/config.ps. - If using HPFS, type 'nmake -fpc\makefile.emx fixup' - If using ndmake under msdos, PKPATH will need to be changed to using single % not %%. - 'nmake -f pc\makefile.emx' - if that works, try 'nmake -f pc\makefile.emx install'. - change to another directory (to avoid using the Unix config.ps) and then try to run dvips32! - dvips32.exe will run under OS/2 and MSDOS. - See the EMX documentation for the EMX DOS extender. dvipsk_TexLive-2009-stripped/pc/wat.h0000644000175000017500000000066711372532227017455 0ustar uwabamiuwabami#define TFMPATH "c:\\emtex\\tfm" #define PKPATH "c:\\texfonts\\pixel.lj\\%ddpi\\%f.%p" #define VFPATH "c:\\emtex\\vf" #define HEADERPATH ".;c:\\emtex\\ps" #define CONFIGPATH ".;c:\\emtex\\ps" #define CONFIGFILE "config.ps" #define FONTSUBDIRPATH "" #define FIGPATH ".;..;c:\\emtex\\texinput" #define FLIPATH "c:\\texfonts" #define FLINAME "lj_0;lj_h;lj_1;lj_2;lj_3;lj_4;lj_5;lj_sli" dvipsk_TexLive-2009-stripped/afm2tfm.10000644000175000017500000000160211372532227017513 0ustar uwabamiuwabami.\" man page for afm2tfm .TH AFM2TFM 1 "9 August 1990" .SH NAME afm2tfm \- convert Adobe font metrics to TeX font metrics .SH DESCRIPTION PostScript fonts are (or should be) accompanied by font metric files such as .B Times-Roman.afm, which describes the characteristics of the font called Times-Roman. To use such fonts with TeX, we need TFM files that contain similar information. This program does that conversion. For more information, print out the dvips manual. .SH FILES .I psfonts.map in the config directory used by dvips (update this). .br .I ../afm/Makefile in the dvips sources (look at this for examples). .SH "SEE ALSO" dvips(1), tex(1), vptovf(1) .SH BUGS An option to add letterspacing to the virtual font was rejected by Knuth because it would make the fi and fl ligatures break the normal rhythmic pattern. .SH AUTHORS Tomas Rokicki and Donald E. Knuth dvipsk_TexLive-2009-stripped/vmcms/0000755000175000017500000000000011372532227017223 5ustar uwabamiuwabamidvipsk_TexLive-2009-stripped/vmcms/afm2tfm.doc0000644000175000017500000002603411372532227021253 0ustar uwabamiuwabami AFM2TFM(1) (9 August 1990) AFM2TFM(1) NAME afm2tfm - convert Adobe font metrics to TeX font metrics SYNOPSIS afm2tfm foo1[.afm] [ -e ratio ] [ -s slant ] [ -t foo2[.tfm] ] [ -v bar[.vpl] | -V bar[.vpl] ] [ foo3[.tfm] ] DESCRIPTION PostScript fonts are (or should be) accompanied by font metric files such as Times-Roman.afm, which describes the characteristics of the font called Times-Roman. To use such fonts with TeX, we need TFM files that contain similar information. The command afm2tfm Times-Roman.afm Times-Roman.tfm (which can be reduced to simply afm2tfm Times-Roman by taking default shortcuts) will create the necessary file Times-Roman.tfm, which can then be moved to the directory where TeX normally looks for font metric information. The PostScript conversion program dvips will also treat Times-Roman as a resident PostScript font if you include the line Times-Roman in the file psfonts.map. The file names used in this manual page are not consistent with the new font naming scheme implemented by Karl Berry; please refer to the main dvips.tex documentation for the correct names to use. PostScript fonts have a different encoding scheme from that of plain TeX. Although both schemes are based on ASCII, special characters such as ligatures and accents are handled quite differently. Therefore we obtain best results by using a "virtual font" interface, which makes TeX act as if the PostScript font had a standard TeX encoding. Such a virtual font can be obtained, for example, by the command afm2tfm Times-Roman -v times or, more fully, by: afm2tfm Times-Roman.afm -v times.vpl Times-Roman.tfm This produces two outputs, namely the "virtual property list" file times.vpl and the TeX font metric file Times-Roman.tfm. The latter file describes an "actual font" on Page 1 (printed 2/26/92) AFM2TFM(1) (9 August 1990) AFM2TFM(1) which the virtual font is based. If you wish to specify a different TFM file name than the default, you can use the -t option; this will override any default TFM file name that would be calculated from the input file name. To use the font in TeX, you should first run vptovf times.vpl times.vf times.tfm then install the file times.vf in the directory for virtual fonts and install times.tfm in the directory for TeX font metrics. (You can also make more complex virtual fonts by editing times.vpl first.) Once this has been done, you're all set. You can use code like this in TeX henceforth: \font\myfont=times at 10pt \myfont Hello, I am being typeset in Times-Roman. Note that there are two fonts, one actual (`Times-Roman', which is analogous to a raw piece of hardware) and one virtual (`times', which has typesetting knowhow added). You could also say `\font\TR=Times-Roman at 10pt' and typeset directly with that, but then you would have no ligatures or kerning, and you would have to use Adobe character positions for special letters like \ae. The virtual font called times not only has ligatures and kerning, and most of the standard accent conventions of TeX, it also has a few additional features not present in the Computer Modern fonts. For example, it includes all the Adobe characters (such as the Polish ogonek and the French guillemots). It also allows you to type 58 accented letters from `Aacute' to `zcaron' as if they were ligatures --- namely as `acute' followed by `A', etc., where you can get `acute' (\char 19) by defining a suitable control sequence. (The 58 constructed characters are found in the AFM file, and constructed as specified by Adobe; you may wish to adjust the spacing and/or add additional accent combinations by editing the VPL file.) The only things you lose from ordinary TeX text fonts are the dotless j (which can be hacked into the VPL file with literal PostScript specials if you have the patience) and uppercase Greek letters (which just don't exist unless you buy them separately). These fonts can be scaled to any size. Go wild! Note however, that using PostScript fonts does use up the printer's virtual memory and it does take time. You may find downloading the Computer Modern fonts to be faster than using the built-in PostScript fonts! Page 2 (printed 2/26/92) AFM2TFM(1) (9 August 1990) AFM2TFM(1) OPTIONS Special effects are also obtainable, with commands such as afm2tfm Times-Roman -s .167 -v timessl Times-Slanted which create timessl.vpl and Times-Slanted.tfm. To use this, proceed as above but put the line Times-Slanted "/Times-Roman .167 SlantFont" into psfonts.map. Then Times-Slanted will act as if it were a resident font, although it is actually constructed from Times-Roman by PostScript hackery. (It's an oblique version of Times-Roman, obtained by slanting everything 1/6 to the right.) Similarly, you can get an extended font by afm2tfm Times-Extended -e 1.2 -v timesx Times-Extended and by recording the pseudo-resident font Times-Extended "/Times-Roman 1.2 ExtendFont" The command line switches are: -e ratio All characters are stretched horizontally by the stated ratio; if it is less than 1.0, you get a condensed font. -s slant All characters are slanted to the right by the stated slant; if it is negative, the letters slope to the left (or they might be upright if you start with an italic font). -v file[.vpl] Generate a virtual property list (VPL) file as well as a TFM file. -V file[.vpl] Same as -v, but the virtual font generated is a caps and-small-caps font obtained by scaling uppercase letters by .8 to typeset lowercase. This font handles accented letters and retains proper kerning. NON-RESIDENT POSTSCRIPT FONTS If you want to use a non-printer-resident PostScript font for which you have a .pfb file (an Adobe Type 1 font program), you can make it act like a resident font by putting a `<' sign and the name of the .pfb file just after the font name in the psfonts.map file entry. For example, Page 3 (printed 2/26/92) AFM2TFM(1) (9 August 1990) AFM2TFM(1) StoneInformal and Don Knuth Page 5 (printed 2/26/92) dvipsk_TexLive-2009-stripped/vmcms/dvipscms.h0000644000175000017500000001046511372532227021232 0ustar uwabamiuwabami/* * These are changes needed for the VM/CMS version of dvips as of * May 21, 1991. Revised 12/1/92. * This was written by J. Hafner, E. Blanz and M. Flickner of IBM Research, * Almaden Research Center. Contact hafner@almaden.ibm.com. * The changes to the rest of the code can be found by searching for * "VMCMS". * * This code can be included in dvips, subject to the same restrictions as * in the copyright notice. */ extern char *malloc(); /* * Added ascii to ebcdic conversion table for VMCMS. * Only for the printable characters. This is used by DVIPS. */ char ascii2ebcdic[256] = { 0, 1, 2, 3, 53, 45, 46, 47, 22, 5, 37, 11, 12, 64, 14, 15, 16, 17, 18, 19, 60, 61, 50, 38, 24, 25, 63, 39,111,111,111,111, 64, 90,127,123, 91,108, 80,125, 77, 93, 92, 78,107, 96, 75, 97, 240,241,242,243,244,245,246,247, 248,249,122, 94, 76,126,110,111, 124,193,194,195,196,197,198,199, 200,201,209,210,211,212,213,214, 215,216,217,226,227,228,229,230, 231,232,233,173,224,189, 95,109, 121,129,130,131,132,133,134,135, 136,137,145,146,147,148,149,150, 151,152,153,162,163,164,165,166, 167,168,169,192, 79,208,161, 7, 128,129,130,131,132,133,134,135, 136,137,138,139,140,141,142,143, 144,145,146,147,148,149,150,151, 152,153,154,155,156,157,158,159, 160,161,162,163,164,165,166,167, 168,169,170,171,172,173,174,175, 176,177,178,179,180,181,182,183, 184,185,186,187,188,189,190,191, 192,193,194,195,196,197,198,199, 200,201,202,203,204,205,206,207, 208,209,210,211,212,213,214,215, 216,217,218,219,220,221,222,223, 224,225,226,227,228,229,230,231, 232,233,234,235,236,237,238,239, 240,241,242,243,244,245,246,247, 248,249,250,251,252,253,254,255 }; /* * Added ebcdic to ascii conversion table for VMCMS. * Only for the printable characters. This inverts the * table above and is used by AFM2TFM. */ char ebcdic2ascii[256] = { 0, 1, 2, 3, 4, 9, 6,127, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 8, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 10, 23, 27, 40, 41, 42, 43, 44, 5, 6, 7, 48, 49, 22, 51, 52, 4, 54, 55, 56, 57, 58, 59, 20, 21, 62, 26, 32, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 46, 60, 40, 43,124, 38, 81, 82, 83, 84, 85, 86, 87, 88, 89, 33, 36, 42, 41, 59, 94, 45, 47, 98, 99,100,101,102,103, 104,105,124, 44, 37, 95, 62, 63, 112,113,114,115,116,117,118,119, 120, 96, 58, 35, 64, 39, 61, 34, 128, 97, 98, 99,100,101,102,103, 104,105,138,123,140,141,142,143, 144,106,107,108,109,110,111,112, 113,114,154,125,156,157,158,159, 160,161,115,116,117,118,119,120, 121,122,170,171,172, 91,174,175, 176,177,178,179,180,181,182,183, 184,185,186,187,188, 93,190,191, 192, 65, 66, 67, 68, 69, 70, 71, 72, 73,202,203,204,205,206,207, 208, 74, 75, 76, 77, 78, 79, 80, 81, 82,218,219,220,221,222,223, 92,225, 83, 84, 85, 86, 87, 88, 89, 90,234,235,236,237,238,239, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,250,251,252,253,254,255 }; /* * This redefines fopen for VMCMS, truncating long filenames for * portability of TeX source. */ #ifdef fopen #undef fopen #endif FILE *cmsfopen(filename, mode) char *filename, *mode ; { char cmsfile[21] ; char *save_file; char *ptr; void exit() ; if (!(save_file = (char *)malloc(strlen(filename) + 1, sizeof(char)))) { fprintf (stderr, "sorry---out of memory\n"); exit(10); } strcpy(save_file, filename); cmsfile[0] = '\0' ; ptr = strtok(save_file, ". ") ; strncat(cmsfile, ptr, 8) ; strcat(cmsfile, "."); if (!(ptr = strtok(NULL, ". "))) { /* Remove this, not much help anyway since most filenames are built internally. */ /* fprintf(stderr, "\n<%s> is not a legitimate VM/CMS file name\n", filename); fprintf(stderr, "...we'll try to continue...\n"); */ return(NULL); } strncat(cmsfile, ptr, 8); if (ptr = strtok(NULL, ". ")) { strcat(cmsfile, "."); strncat(cmsfile, ptr, 2); } free(save_file); return(fopen(cmsfile, mode)); } /* * access.c for VMCMS */ int access (path, amode) char *path; int amode; { return(1); } dvipsk_TexLive-2009-stripped/vmcms/dvips.doc0000644000175000017500000000266211372532227021045 0ustar uwabamiuwabami DVIPS(1) TeXware (13 February 1992) DVIPS(1) NAME dvips - convert a TeX DVI file to PostScript SYNOPSIS dvips [ options ] file[.dvi] DESCRIPTION The program dvips converts a DVI file file[.dvi] produced by TeX (or by some other processor like GFtoDVI) and converts it to PostScript, normally sending the result directly to the laserprinter. The DVI file may be specified without the .dvi extension. Fonts used may either be resident in the printer or defined as bitmaps in PK files, or a `virtual' combination of both. If the MakeTeXPK program is installed, dvips will automatically invoke METAFONT to generate fonts that don't already exist. For more information, see the manual dvips.tex is in the TEXINPUTS directory. The manual can be printed with the following commands: tex dvips dvips dvips -o dvips.ps lpr dvips.ps OPTIONS A summary of command line options can be obtained by running dvips without a filename. For more details refer to dvips.tex. SEE ALSO mf(1), afm2tfm(1), tex(1), latex(1), lpr(1) NOTES PostScript is a registered trademark of Adobe Systems Incorporated. AUTHOR Tomas Rokicki ; extended to virtual fonts by Don Knuth. Page 1 (printed 2/24/92) dvipsk_TexLive-2009-stripped/vmcms/Makefile.IBM0000644000175000017500000001515111372532227021274 0ustar uwabamiuwabami# # Makefile for dvips. Edit this first part of the file. # # First, the things that absolutely must be edited for your system. # Please, don't forget to edit MakeTeXPK in the same way! # the default path to search for TFM files # (this usually is identical to TeX's defaultfontpath, which omits `.') # (private fonts are given an explicit directory, which overrides the path) # TFMPATH = /LocalLibrary/Fonts/TeXFonts/tfm:/usr/lib/tex/fonts/tfm TFMPATH = /usr/local/lib/tex/fonts/tfm:/local/lib/tex/fonts/tfm # the default path to search for PK files (usually omits `.') # Don't forget to add the directory that # MakeTeXPK puts the files! (In this case, /LocalLibrary/Fonts...) # PKPATH = /LocalLibrary/Fonts/TeXFonts/pk:/usr/lib/tex/fonts/pk PKPATH = /local/lib/tex/fonts/%m/%f.%d%p:/usr/local/lib/tex/fonts/%m/%f.%d%p: # the default path to search for VF files (usually omits `.') # VFPATH = /LocalLibrary/Fonts/TeXFonts/vf:/usr/lib/tex/fonts/vf VFPATH = /local/lib/tex/fonts/vf:/usr/local/lib/tex/fonts/vf # additional directories in which to search for subdirectories to find # both tfm and pk files FONTSUBDIRPATH = # where the config files go # CONFIGDIR = /usr/lib/tex/ps CONFIGDIR = /local/lib/tex/dvips # the default path to search for config files # CONFIGPATH = .:$(CONFIGDIR) CONFIGPATH = .:$(CONFIGDIR):/usr/local/lib/tex/dvips # the name of your config file # CONFIGFILE = config.ps CONFIGFILE = config.ps # where the header PS files go # HEADERDIR = /usr/lib/tex/ps HEADERDIR = /local/lib/tex/dvips # the default path to search for header files # HEADERPATH = .:$(HEADERDIR) HEADERPATH = .:$(HEADERDIR):/usr/local/lib/tex/dvips # where epsf.tex and rotate.tex go (usually the TeX macros directory) # TEXMACRODIR = /usr/lib/tex/inputs TEXMACRODIR = /local/lib/tex/inputs # the default path to search for epsf and psfiles # (usually the same as TeX's defaultinputpath) # FIGPATH = .:..:/usr/lib/tex/inputs FIGPATH = .:..:/local/lib/tex/inputs:/usr/local/lib/tex/inputs # change -DDEFRES=300 or whatever is required # if the default resolution is not 300 dpi, # add -DDEBUG to turn on debugging capability # add -DTPIC for tpic support # add -DFONTLIB to search font libraries # add -DSEARCH_SUBDIRECTORIES to search the FONTSUBDIRPATH. # add -DHAVE_GETCWD if you have getcwd (relevant only for subdir searching) # add -DIBM6000 for compiling on IBM 6000 systems # (for VM/CMS, see the MKDVIPS.EXEC file in the vmcms subdirectory). DEFS= -DTPIC -DDEBUG -DDEFRES=300 -DIBM6000 # either use # OPT = -g -Wall # or #OPT = -O -s -Wall OPT = -O # libraries to include (-lm -lc on most systems) #FLIBS= -lNeXT_s -lsys_s FLIBS= -lm # If you are compiling dvips for suid or other privileges, you will # definitely want to define the following symbol; else don't. # SECURE = -DSECURE # If you want EMTEX specials, define the following. #EMTEX = -DEMTEX # for SYSV (and friends which use instead of ) # define the c-compiler flag # add -D_POSIX_SOURCE if you are POSIX (also define SYSV) (only relevant # for subdir searching) # SYS = -DSYSV # Define this to be whatever you use for installation. If you don't have # install, use a script that invokes copy and chmod's the files # appropriately. # INSTALL = install INSTALL = install # where the installed binary goes # BINDIR = /usr/bin BINDIR = PATHS = -DTFMPATH=\"$(TFMPATH)\" \ -DPKPATH=\"$(PKPATH)\" \ -DVFPATH=\"$(VFPATH)\" \ -DHEADERPATH=\"$(HEADERPATH)\" \ -DCONFIGPATH=\"$(CONFIGPATH)\" \ -DCONFIGFILE=\"$(CONFIGFILE)\" \ -DFONTSUBDIRPATH=\"$(FONTSUBDIRPATH)\" \ -DFIGPATH=\"$(FIGPATH)\" CFLAGS = $(DEFS) $(PATHS) $(OPT) $(SYS) $(SECURE) $(EMTEX) $(DEFPFMT) SRC = dospecial.c dviinput.c fontdef.c loadfont.c dvips.c tfmload.c \ download.c prescan.c scanpage.c skippage.c output.c scalewidth.c \ dosection.c dopage.c resident.c search.c unpack.c drawPS.c \ header.c makefont.c repack.c virtualfont.c dpicheck.c finclude.c \ pprescan.c papersiz.c flib.c color.c bbox.c emspecial.c OBJ = dospecial.o dviinput.o fontdef.o loadfont.o dvips.o tfmload.o \ download.o prescan.o scanpage.o skippage.o output.o scalewidth.o \ dosection.o dopage.o resident.o search.o unpack.o drawPS.o \ header.o makefont.o repack.o virtualfont.o dpicheck.o finclude.o \ pprescan.o papersiz.o flib.o color.o bbox.o emspecial.o all : afm2tfm dvips tex.pro texps.pro texc.pro special.pro finclude.pro \ color.pro dvips : $(OBJ) $(CC) $(CFLAGS) $(OBJ) $(LIBS) $(FLIBS) -o dvips afm2tfm: afm2tfm.c $(CC) $(CFLAGS) -o afm2tfm afm2tfm.c $(LIBS) $(FLIBS) $(OBJ) : dvips.h debug.h Makefile flib.o resident.o dvips.o loadfont.o tfmload.o : paths.h squeeze : squeeze.o $(CC) $(CFLAGS) squeeze.o -o squeeze $(LIBS) $(FLIBS) tex.pro : tex.lpro squeeze ./squeeze tex.pro texc.pro: texc.lpro squeeze ./squeeze texc.pro texc.lpro: texc.script tex.lpro ./texc.script tex.lpro texc.lpro texps.pro : texps.lpro squeeze ./squeeze texps.pro special.pro : special.lpro squeeze ./squeeze special.pro finclude.pro : finclude.lpro squeeze ./squeeze finclude.pro color.pro : color.lpro squeeze ./squeeze color.pro install : afm2tfm dvips MakeTeXPK \ tex.pro texc.pro texps.pro special.pro finclude.pro color.pro \ config.ps psfonts.map epsf.tex epsf.sty rotate.tex rotate.sty \ colordvi.tex colordvi.sty blackdvi.tex blackdvi.sty - mkdir $(BINDIR) - mkdir $(HEADERDIR) - mkdir $(CONFIGDIR) - mkdir $(MANDIR) - mkdir $(TEXMACRODIR) $(INSTALL) -c -m 755 afm2tfm $(BINDIR)/afm2tfm $(INSTALL) -c -m 755 dvips $(BINDIR)/dvips $(INSTALL) -c -m 755 MakeTeXPK $(BINDIR)/MakeTeXPK $(INSTALL) -c -m 644 tex.pro $(HEADERDIR) $(INSTALL) -c -m 644 texc.pro $(HEADERDIR) $(INSTALL) -c -m 644 texps.pro $(HEADERDIR) $(INSTALL) -c -m 644 special.pro $(HEADERDIR) $(INSTALL) -c -m 644 finclude.pro $(HEADERDIR) $(INSTALL) -c -m 644 color.pro $(HEADERDIR) $(INSTALL) -c -m 644 config.ps $(CONFIGDIR)/$(CONFIGFILE) $(INSTALL) -c -m 644 psfonts.map $(CONFIGDIR) $(INSTALL) -c -m 644 epsf.tex $(TEXMACRODIR) $(INSTALL) -c -m 644 epsf.sty $(TEXMACRODIR) $(INSTALL) -c -m 644 rotate.tex $(TEXMACRODIR) $(INSTALL) -c -m 644 rotate.sty $(TEXMACRODIR) $(INSTALL) -c -m 644 colordvi.sty $(TEXMACRODIR) $(INSTALL) -c -m 644 colordvi.tex $(TEXMACRODIR) $(INSTALL) -c -m 644 blackdvi.sty $(TEXMACRODIR) $(INSTALL) -c -m 644 blackdvi.tex $(TEXMACRODIR) $(INSTALL) -c -m 644 dvips.tex $(TEXMACRODIR) $(INSTALL) -c -m 644 dvipsmac.tex $(TEXMACRODIR) veryclean : rm -f *.o dvips squeeze afm2tfm texc.lpro *.pro *~ *.log *.dvi clean : rm -f *.o squeeze afm2tfm *~ *.log *.dvi lint : lint $(DEFS) $(PATHS) $(SRC) lint $(DEFS) squeeze.c lint $(DEFS) afm2tfm.c dvipsk_TexLive-2009-stripped/vmcms/README.VMCMS0000644000175000017500000001746311372532227021002 0ustar uwabamiuwabamiREADME.VMCMS: Remarks and history of the VM/CMS port of DVIPS. Appropos DVIPS version 5.495, 5.55. Written by Jim Hafner (hafner@almaden.ibm.com). Last revised 10 Nov. 1992. Version 5.55 checked and slightly modified on 2 May 1994. NOTE: This port was not done by Tom Rokicki and he has no responsibility for it. You can direct questions to the name and address above. The current set of changes and enhancements to the VM/CMS port over the previous release should be fairly complete. Lots of things have changed and been enhanced. Here are some of the features of the port and VM/CMS package: 1) We have completely revised the MKDVIPS EXEC so that it behaves a bit more like the Unix 'make' facility. In particular, it now allows for command line options to do any or all of the package building for the DVIPS program, the AFM2TFM program, the HEADERS files and to clean up the TEXT and LOAD MAP files after completion. This has only been tested with C/370, not, in particular with Waterloo C. Furthermore, it also does a rudimentary time stamp check of existing TEXT files against that for the corresponding C file and ALL H files so that the compiler will not be called unless it seems necessary. Note that it checks ALL H files in all ACCESSED disks. This can be fixed by simply editing the MKDVIPS EXEC. See the file itself for more detailed information. 2) We have completed the port of AFM2TFM. If should now produce identical files on VM/CMS as on Unix (it certainly does as far as we could test it). There is a small front-end EXEC included that sets up the necessary run-time environment. The current version is extensively revised from the original port due to Alessio Guglielmi and Marco Prevedelli of Pisa. The syntax for the EXEC is the same as described in the DVIPS manual and the manpage is available as AFM2TFM.DOC. 3) The DVIPS front-end EXEC has been extensively remodeled. It now supports automatic font generation at the EXEC level (and the MODULE level with the appropriate command line options). More on this feature later. The EXEC assumes that the first command line argument is the dvifilename. The online documentation indicates this as well, though DVIPS.DOC does not. This is NOT required by the MODULE, just the EXEC, and only to make parsing the arguments easier. The current version of this exec handles the LOADLIB and TXTLIB save/reset/restore processes much better, so users with very large libraries accessed will not have them lost along the way. This version does not access any font disks since that is surely site dependent. So, it assumes that the required fonts are available. It also assumes that MF is somewhere to be found. Local installers might want to modify this exec in the following way. Parse the command line options for a -P PRINTER specification. If found, then either use PRINTER to determine which font disk to access OR read the corresponding CONFIG.PRINTER file and use the 'M' option to get the Metafont mode for that PRINTER. Then use that mfmode to access the right font disk. 4) AUTOMATIC FONT GENERATION: This can be handled in two ways, at the installers or users discretion. First, we have included a MakeTeXP EXEC which we think is pretty generic and should need little modifications. (See below for a few additional comments.) This MakeTeXP EXEC can be called in two different ways. The default (based on DVIPS EXEC) is to have DVIPS run completely and create a MISSFONT LOG file for any missing fonts. If there are any found, then the DVIPS EXEC prompts the user, asking to attempt to generate the fonts. If requested, then MakeTeXP EXEC is called by processing each line of MISSFONT LOG. If this process completes, then the user is again prompted. This time, the user can specify an exit from the EXEC or to RE-invoke DVIPS (the module not the exec) on the file. In this way, all the font generation can be handled entirely OUTSIDE of the module, using no special system calls (which have been known to cause memory clashes). To make sure that DVIPS doesn't try to make the system call, a '-M' flag is prepended to the options list. Consequently, if the installer is sure that system calls will be safe, then this option can be removed. Conversely, if a user wants to risk it, putting '-M0' in the command line options will override this default. We mention explicitly that, contrary to the earlier VM/CMS port, we have NOT disabled the system call within DVIPS itself. 5) MakeTeXP EXEC: This exec is similar to the Unix version in that if no Metafont mode is specified on the command line, then it tries to 'guess' a mode from the base dpi. This part of the exec is very site dependent and will need to be modified for your location. You might want to modify this exec to read some configuration file like CONFIG.MODES or DVIPS.MODES and use this to set the mfmode from the base dpi. Furthermore, we have written this to not invoke MF EXEC but to call MF MODULE directly. We hope that this will be more generic since we structure the parameters as MF MODULE wants them and not as some fancy execs might. We have set up a special default for passing arguments to the module. Namely, &plain modes; \mode=mfmode; ... where 'modes' is the name of your local .MF file that contains the mode definitions. Because of this, each output file of MF will have a filename of MODES. Later in the exec, these output files are renamed with the font input filename. If you have a mode def file of a different name, you will need to change the defining variable (localModeFile) accordingly. If you don't have such a file, then you will probably have to modify this EXEC somewhat to compensate. All (we hope) site dependent parts of the code are tagged boldly with 'SITE DEPENDENCIES'. Look at these locations for places that might require modifications. 5) As before, the .dvipsrc file referred to in the manuals has the new name DVIPS.PROFILE on VM/CMS. 6) Online documentation is available by invoking DVIPS with no arguments or filename. You can also browse the file dvips.doc for some additional comments (this was converted from the Unix manpage via, on Unix, "nroff -man dvips.1 | col -b > vmcms/dvips.doc" and so some comments may not be appropriate for VM/CMS, e.g., the order of the filename in the command line arguments. 8) Since there are no pipes on VM/CMS, the option -f is meaningless. Also, the output is always written to a file, with the same filename as the dvi file and filetype "PS". You can always override this with the -o option. 9) Since there are no PATHs in VM/CMS, the H, P, S and T configuration file options are meaningless. The DVIPS.EXEC file should make sure that all the necessary disks are linked (we have all .tfm, .pro, config. and other files on our main TeX disk, with the EXECs and MODULES -- only our fonts (the pk files) are on separate disks.) To compile the programs, run the program MKDVIPS.EXEC program. Be sure you edit this file first to make sure that your C/370 programs disks and libraries are all correctly link. See the comments at the beginning of that file for more information. When complete, all the necessary modules and files should be built, on your primary write-accessed disk. You may need to move them to their destination manually. THANKS: Some of this port was provided courtesy of Alessio Guglielmi (guglielm@di.unipi.it) and Marco Prevedelli (prevedelli@ipisnsva.bitnet) with help from via Michel Goossens (goossens@cernvm.bitnet) and Ronald Kappert (R.Kappert@uci.kun.nl). Acknowledgements to Shashi Sathaye for fix to 5.55 and other helpful hints for the original port of 5.495. dvipsk_TexLive-2009-stripped/vms/0000755000175000017500000000000011372532227016703 5ustar uwabamiuwabamidvipsk_TexLive-2009-stripped/vms/texc_scr.com0000644000175000017500000000744011372532227021222 0ustar uwabamiuwabami$!---------------------------------------------------------------------- $! $! TEXC_SCR.COM $! $! Convert TEX.LPRO to TEXC.LPRO $! This command file replaces the TexC.script file, intended for Unix OS, $! with its TPU equivalent. $! $! Tony McGrath 5-OCT-1990 $! Dept. of Physics, Monash University, Victoria, Australia 3168 $! $!---------------------------------------------------------------------- $! $ Edit/TPU/NoSection/NoDisplay/Command=SYS$Input/Output=TEXC.LPRO TEX.LPRO ! PROCEDURE texc$script LOCAL string_1, string_2, string_3, a_range, a_line, two_chars; !----------------------------------------------------------------------- ! Won't bother with CREATE_ARRAY, try to keep the TPU as basic as possible ! so it works on older versions of VMS. !----------------------------------------------------------------------- string_1 := "% begin code for uncompressed fonts only"; string_2 := "% end code for uncompressed fonts only"; string_3 := "% end of code for unpacking compressed fonts"; !----------------------------------------------------------------------- ! Search for the first of the 3 special strings. ! Exit if we can't find it. !----------------------------------------------------------------------- a_range := search( string_1, forward); if( a_range = 0) then message( "TEXC-F-NoString, Couldn't locate first string, Aborting"); return(0); endif; !----------------------------------------------------------------------- ! Go to the start of the first string. !----------------------------------------------------------------------- position( beginning_of( a_range)); !----------------------------------------------------------------------- ! Search for the second of the 3 special strings. ! Exit if we can't find it. !----------------------------------------------------------------------- a_range := search( string_2, forward); if( a_range = 0) then message( "TEXC-F-NoString, Couldn't locate second string, Aborting"); return(0); endif; !----------------------------------------------------------------------- ! Then start deleting lines until the second special string is found. !----------------------------------------------------------------------- loop a_line := erase_line; exitif a_line = string_2; endloop; !----------------------------------------------------------------------- ! Search for the third of the 3 special strings. ! Exit if we can't find it. !----------------------------------------------------------------------- a_range := search( string_3, forward); if( a_range = 0) then message( "TEXC-F-NoString, Couldn't locate third string, Aborting"); return(0); endif; !----------------------------------------------------------------------- ! Again start looping, deleting the first 2 characters from each line ! until the 3rd special string is found, making sure that the first two ! characters are "% " !----------------------------------------------------------------------- loop two_chars := erase_character(2); if two_chars <> "% " then message( "TEXC-F-NoComment, First 2 chars not correct, Aborting"); return(0); endif; exitif current_line = string_3; move_vertical(1); endloop; !----------------------------------------------------------------------- ! Assume all is well, return TRUE. !----------------------------------------------------------------------- return(1); ENDPROCEDURE !----------------------------------------------------------------------- ! Initialize the main buffer. !----------------------------------------------------------------------- f:=Get_Info(Command_Line,"File_Name"); b:=Create_Buffer("",f); o:=Get_Info(Command_Line,"Output_File"); Set (Output_File,b,o); Position (Beginning_of(b)); ! if texc$script then Exit; else message( "TEXC-W-NoSave, current buffer not saved, errors were encountered"); Quit; endif; dvipsk_TexLive-2009-stripped/vms/README0000644000175000017500000000717311372532227017573 0ustar uwabamiuwabamiI backed out some of the changes, but it should compile and run on VMS. I removed the changes that guarantee that the scratch files get unique names; I did this because the resulting filenames would not work on some systems, and because if this is a problem I feel the correct solution would be to make sure each user is actually running in the correct unique directory, rather than changing the names of all of the temporary files that dvips might create. -tgr Original message: From: "Edward J. Groth" To: doyle@mmm.lanl.gov, rokicki@CS.Stanford.EDU CC: groth@PUPGG.PRINCETON.EDU Message-ID: <009A5364.5D7EC83B.21977@PUPGG.PRINCETON.EDU> Subject: vms port and mods of hyper dvips 5.58 Content-Type: text Content-Length: 155227 Status: RO To: Mark Doyle and Tomas Rokicki I've picked up dvips version 5.58 from LANL, with Mark's hps modifications. I've ported (reported?) this to VMS. Below is a summary of my changes, followed by a copy of each changed routine (all changes are annotated with EJG). (It looks like whoever was keeping the vms port going hasn't worked on it for a while.) Thanks for the good work! - Ed EJG 08-Jul-1996 This directory contains dvips 5.58 hacked by Mark Doyle to put in mods for hyperps and hacked by me to make sure it ports to VMS. This was obtained by following links from http://xxx.lanl.gov/hypertex in early July, 1996. Dvips has been made for vms v6.2 (alpha and vax) using DEC C v5.0. Main changes I made: ****** dvips.c include subdirectory [.vms] where vmscli.c is included. get process id and use in constructing file names dvips_h_pidxxxxx.tmp and dvips_b_pidxxxxx.tmp to replace head.tmp and body.tmp, so we don't get a name collision if two users are using the same scratch space. Change all references to these names to reference the variables holding the new names. ****** hps.c replace head.tmp and body.tmp as above. replace ERROR with ERROR_HPS to avoid collision with error() function. Question: why us a boolean variable to represent a constant? after the former head.tmp and body.tmp files are copied to the output, they are deleted. (neatness) ****** output.c replace head.tmp and body.tmp as above. Required a little bit of extra logic when testing to see if the output file is the former head.tmp (so we don't put in a \n). Don't want to do the test if the HPS_FLAG hasn't been set. ****** dvips.h include subdirectory [.vms] where vms.h is included. ****** [.vms]vmscli.c add qualifiers for new options since this file was last updated. fix up some bugs in qualifiers. ****** [.vms]dvips.cld add qualifiers for new options since this file was last updated. fix up some bugs in qualifiers. ****** [.vms]dvips.hlp add help for new qualifiers added above. make help agree with what the qualifiers actually do. For example, the /filter qualifier, sends the output to stdout, but still requires an input file (it will not read from stdin). ****** [.vms]newmake.com Made from [.vms]make.com. Don't prompt for options - all hardwired as defaults, except fontlib is turned off. HPS is defined in all cc's, and /standard=vaxc is added to all cc's. hps.c is included in the compile and link steps options file is removed from the link steps. /----------------------------------------------------------------------\ | Edward J. Groth | Phone: 609-258-4361 Fax: 609-258-6853 | | Physics Dept., Jadwin Hall | URL: http://pupgg.princeton.edu/~groth/ | | Princeton University | SPAN/HEPNET: PUPGG::GROTH=44117::GROTH | | Princeton, NJ 08544 | Internet: groth@pupgg.princeton.edu | \----------------------------------------------------------------------/ dvipsk_TexLive-2009-stripped/vms/vaxcrtl.opt0000644000175000017500000000003011372532227021103 0ustar uwabamiuwabamisys$share:vaxcrtl/share dvipsk_TexLive-2009-stripped/vms/vms_gcc_paths.h0000644000175000017500000000156311372532227021701 0ustar uwabamiuwabami/*-----------------------------------------------------------------------* * These definitions cannot be defined on the command line because so many * DEFINE's overflow the DCL buffer when using the GNU CC compiler. *-----------------------------------------------------------------------*/ #ifndef TFMPATH #define TFMPATH "TEX_FONTS:" #endif #ifndef PKPATH #define PKPATH "TEX_DISK:[TEX.FONTS.%d]%f.PK" #endif #ifndef VFPATH #define VFPATH "TEX_VF:" #endif #ifndef FIGPATH #define FIGPATH ",TEX_INPUTS:,TEX$POSTSCRIPT:," /* Include blank so it looks on default dir. */ #endif #ifndef HEADERPATH #define HEADERPATH "TEX$POSTSCRIPT:,SYS$LOGIN:" #endif #ifndef CONFIGPATH #define CONFIGPATH "TEX$POSTSCRIPT:" #endif #ifndef CONFIGFILE #define CONFIGFILE "config.ps" #endif #ifdef FONTLIB #ifndef FLIPATH #define FLIPATH "" #endif #ifndef FLINAME #define FLINAME "" #endif #endif dvipsk_TexLive-2009-stripped/vms/vmscli.c0000644000175000017500000003375611372532227020362 0ustar uwabamiuwabami/* EJG - 02-Jul-1996 */ /* fix processing of filter qualifier */ /* add secure qualifier */ /* add oddpages qualifier */ /* add evenpages qualifier */ /* set sendcontrold only if qualifier present, not if merely negated */ /* check for setting or resetting disablecomments was cli$_negated in both cases - fix */ /* add downloadps (as PK) fonts qualifier */ /* add hyperps qualifier */ /* EJG - 07-Jul-1996 */ /* test for INC_COM was looking for negated in both cases, so fixed */ #ifdef __GNUC__ #include "ssdef.h" #else #include ssdef #endif /* this code is included into dvips.c; don't compile it separately. */ int vmscli() {long int k,scnt; int length,status,maxdrift,jext; float offset,conversion; char *u; static char dummy[100],prtr[20]; static $DESCRIPTOR(qual1,"copies"); static $DESCRIPTOR(qual2,"debug"); static $DESCRIPTOR(qual3,"maxdrift"); static $DESCRIPTOR(qual4,"filter"); static $DESCRIPTOR(qual5,"last"); static $DESCRIPTOR(qual6,"manual"); static $DESCRIPTOR(qual7,"number"); static $DESCRIPTOR(qual8,"output"); static $DESCRIPTOR(qual9,"start"); static $DESCRIPTOR(qual10,"quiet"); static $DESCRIPTOR(qual11,"reverse"); static $DESCRIPTOR(qual12,"sav_res"); static $DESCRIPTOR(qual13,"mode"); static $DESCRIPTOR(qual14,"magnification"); static $DESCRIPTOR(qual15,"collate"); static $DESCRIPTOR(qual16,"dpi"); static $DESCRIPTOR(qual17,"ctrld"); static $DESCRIPTOR(qual18,"inc_com"); static $DESCRIPTOR(qual19,"comment"); static $DESCRIPTOR(qual20,"vm_save"); static $DESCRIPTOR(qual21,"h_dpi"); static $DESCRIPTOR(qual22,"v_dpi"); static $DESCRIPTOR(qual23,"compress"); static $DESCRIPTOR(qual24,"printer"); static $DESCRIPTOR(qual25,"header"); static $DESCRIPTOR(qual26,"absolute"); static $DESCRIPTOR(qual27,"epsf"); static $DESCRIPTOR(qual28,"prescan"); static $DESCRIPTOR(qual29,"pagecopies"); static $DESCRIPTOR(qual30,"separate"); static $DESCRIPTOR(qual31,"cropmarks"); static $DESCRIPTOR(qual32,"sec_size"); static $DESCRIPTOR(qual33,"help"); static $DESCRIPTOR(qual34,"makefont"); static $DESCRIPTOR(qual35,"psize"); static $DESCRIPTOR(qual36,"poffset"); static $DESCRIPTOR(qual37,"secure"); /* EJG 02-Jul-1996 */ static $DESCRIPTOR(qual38,"oddpages"); /* EJG 02-Jul-1996 */ static $DESCRIPTOR(qual39,"evenpages"); /* EJG 02-Jul-1996 */ static $DESCRIPTOR(qual40,"downloadps"); /* EJG 02-Jul-1996 */ static $DESCRIPTOR(qual41,"hyperps"); /* EJG 02-Jul-1996 */ static $DESCRIPTOR(dumdum,dummy); static $DESCRIPTOR(dvi_file,"dvifile"); static $DESCRIPTOR(input_file,infnme); scnt=0; status = cli$present(&dvi_file); if(status == CLI$_PRESENT) {status = cli$get_value(&dvi_file,&input_file,&jext); length=0; for(k=0;k<252;k++) { if(infnme[k] == ':' || infnme[k] == ']') scnt=k+1; } for(k=scnt;k<252;k++) {if(infnme[k]=='.') {length=k; jext=k; } else {if(infnme[k]=='/' || infnme[k]==' ' || infnme[k]=='\0') infnme[k]='\0'; } } if(length==0) {jext= strlen(infnme); strcat(infnme,".DVI");} iname = &infnme[0] ; length = 0; /* Initialize length...VAX C bug? */ } status = cli$present(&qual1); if(status == CLI$_PRESENT | status == CLI$_DEFAULTED) {status = cli$get_value(&qual1,&dumdum,&length); if(sscanf(&dummy[0],"%d",&numcopies) == 0) error("!Bad copies option"); } #ifdef DEBUG status = cli$present(&qual2); if(status == CLI$_PRESENT) { status = cli$get_value(&qual2,&dumdum,&length); if(sscanf(&dummy[0],"%d",&debug_flag) == 0) error("!Bad debug option"); } #else error("not compiled in debug mode"); #endif status = cli$present(&qual3); if(status == CLI$_PRESENT) {status = cli$get_value(&qual3,&dumdum,&length); if(sscanf(&dummy[0],"%d",&maxdrift) == 0 ||maxdrift <0) error("bad maxdrift option"); vmaxdrift=maxdrift; } status = cli$present(&qual5); if(status == CLI$_PRESENT) {status = cli$get_value(&qual5,&dumdum,&length); #ifdef SHORTINT switch(sscanf(&dummy[0], "%ld.%ld", &lastpage, &lastseq)) { #else /* ~SHORTINT */ switch(sscanf(&dummy[0], "%ld.%ld", &lastpage, &lastseq)) { #endif /* ~SHORTINT */ case 1: lastseq = 0 ; case 2: break ; default: error("! Bad last page option.") ; } notlast = 1 ; } status = cli$present(&qual6); if(status == CLI$_PRESENT) manualfeed=1; else if(status == CLI$_NEGATED) manualfeed=0; status = cli$present(&qual7); if(status == CLI$_PRESENT) {status = cli$get_value(&qual7,&dumdum,&length); #ifdef SHORTINT if (sscanf(&dummy[0], "%ld", &maxpages)==0) #else /* ~SHORTINT */ if (sscanf(&dummy[0], "%d", &maxpages)==0) #endif /* ~SHORTINT */ error("! Bad number of pages option.") ; } status = cli$present(&qual8); if(status == CLI$_PRESENT) {status = cli$get_value(&qual8,&dumdum,&length); sscanf(&dummy[0],"%s",ofnme); } else {for(k=scnt;k100000) error("!Bad magnification parameter."); overridemag=1; } status = cli$present(&qual15); if(status == CLI$_PRESENT | status == CLI$_DEFAULTED) {status = cli$get_value(&qual15,&dumdum,&length); if(sscanf(&dummy[0],"%d",&collatedcopies) == 0) error("!Bad number of collated copies"); } status = cli$present(&qual16); if(status == CLI$_PRESENT | status == CLI$_DEFAULTED) {status = cli$get_value(&qual16,&dumdum,&length); if(sscanf(&dummy[0],"%d",&actualdpi) == 0 || actualdpi < 10 || actualdpi >10000) error("!Bad dpi parameter."); vactualdpi=actualdpi; } status = cli$present(&qual17); if(status == CLI$_PRESENT) /* EJG 02-Jul-1996 */ sendcontrolD =1; else if(status == CLI$_NEGATED | status==CLI$_DEFAULTED) /* EJG 02-Jul-1996 */ sendcontrolD =0; status = cli$present(&qual18); if(status == CLI$_PRESENT) /* EJG 07-Jul-1996 */ removecomments =0; else if(status == CLI$_NEGATED) removecomments =1; status = cli$present(&qual19); if(status == CLI$_PRESENT) /* EJG 02-JUL-1996 */ disablecomments = 0; else if(status == CLI$_NEGATED) disablecomments = 1; status = cli$present(&qual20); if(status == CLI$_PRESENT) nosmallchars=1; else if(status == CLI$_NEGATED) nosmallchars=0; status = cli$present(&qual21); if(status == CLI$_PRESENT) {status = cli$get_value(&qual21,&dumdum,&length); if(sscanf(&dummy[0],"%d",&actualdpi) == 0 || actualdpi < 10 || actualdpi >10000) error("!Bad dpi parameter in X."); } status = cli$present(&qual22); if(status == CLI$_PRESENT) {status = cli$get_value(&qual22,&dumdum,&length); if(sscanf(&dummy[0],"%d",&vactualdpi) == 0 || vactualdpi < 10 || vactualdpi >10000) error("!Bad dpi parameter in Y."); } status = cli$present(&qual23); if(status == CLI$_PRESENT) compressed=1; else if(status == CLI$_NEGATED) compressed=0; status = cli$present(&qual24); if(status == CLI$_PRESENT) {status = cli$get_value(&qual24,&dumdum,&length); sscanf(&dummy[0],"%s",prtr); u = &dummy[0] ; strcpy(u,"config."); strcat(u,&prtr[0]); getdefaults(""); noenv=1; getdefaults(u); } status = cli$present(&qual25); if(status == CLI$_PRESENT) { while (status != SS$_NORMAL) { status = cli$get_value(&qual25,&dumdum,&length); dummy[length] = '\0'; if (strcmp(dummy, "-") == 0) headers_off = 1; else (void)add_header(dummy) ; } } else { if(status == CLI$_NEGATED) headers_off = 1; } status = cli$present(&qual26); if(status == CLI$_PRESENT) abspage = 1; status = cli$present(&qual27); if(status == CLI$_PRESENT | status==CLI$_DEFAULTED) tryepsf = 1; else if(status == CLI$_NEGATED) tryepsf = 0; status = cli$present(&qual28); if(status == CLI$_PRESENT | status==CLI$_DEFAULTED) dopprescan = 1; else if(status == CLI$_NEGATED) dopprescan = 0; status = cli$present(&qual29); if(status == CLI$_PRESENT | status == CLI$_DEFAULTED) {status = cli$get_value(&qual29,&dumdum,&length); if(sscanf(&dummy[0],"%d",&pagecopies) == 0) error("!Bad number of page copies option /PAGECOPIES"); if (pagecopies < 1 || pagecopies > 1000) error("! can only print one to a thousand page copies") ; } status = cli$present(&qual30); if(status == CLI$_PRESENT | status==CLI$_DEFAULTED) sepfiles = 1; else if(status == CLI$_NEGATED) sepfiles = 0; status = cli$present(&qual31); if(status == CLI$_PRESENT | status==CLI$_DEFAULTED) cropmarks = 1; else if(status == CLI$_NEGATED) cropmarks = 0; status = cli$present(&qual32); if(status == CLI$_PRESENT) {status = cli$get_value(&qual32,&dumdum,&length); #ifdef SHORTINT if (sscanf(&dummy[0], "%ld", &maxsecsize)==0) #else /* ~SHORTINT */ if (sscanf(&dummy[0], "%d", &maxsecsize)==0) #endif /* ~SHORTINT */ error("! Bad section size arg (/SEC_SIZE).") ; } status = cli$present(&qual33); if(status == CLI$_PRESENT) { (void)fprintf(stderr, banner) ; help() ; } status = cli$present(&qual34); if(status == CLI$_NEGATED) dontmakefont = 1; /*----------------------------------------------------------------------- * Currently one uses /PSIZE="5mm,10mm" This way CASE is preserved * Should I convert the PSIZE to allow a LIST => /PSIZE=(5mm,10mm) and * convert the case back to lowercase in here. *-----------------------------------------------------------------------*/ status = cli$present(&qual35); if(status == CLI$_PRESENT) { status = cli$get_value(&qual35,&dumdum,&length); dummy[length] = '\0'; handlepapersize(&dummy[0], &hpapersize, &vpapersize) ; if (landscape) { error("both landscape and papersize specified; ignoring landscape") ; landscape = 0 ; } } status = cli$present(&qual36); if(status == CLI$_PRESENT) { status = cli$get_value(&qual36,&dumdum,&length); dummy[length] = '\0'; handlepapersize(&dummy[0], &hoff, &voff) ; } status = cli$present(&qual37); /* EJG 02-Jul-1996 */ if(status == CLI$_PRESENT) secure = 1; /* EJG 02-Jul-1996 */ else /* EJG 02-Jul-1996 */ if(status == CLI$_NEGATED | status == CLI$_DEFAULTED) secure = 0; /* EJG 02-Jul-1996 */ status = cli$present(&qual38); /* EJG 02-Jul-1996 */ if(status == CLI$_PRESENT) oddpages = 1; /* EJG 02-Jul-1996 */ else /* EJG 02-Jul-1996 */ if(status == CLI$_NEGATED | status == CLI$_DEFAULTED) oddpages = 0; /* EJG 02-Jul-1996 */ status = cli$present(&qual39); /* EJG 02-Jul-1996 */ if(status == CLI$_PRESENT) evenpages = 1; /* EJG 02-Jul-1996 */ else /* EJG 02-Jul-1996 */ if(status == CLI$_NEGATED | status == CLI$_DEFAULTED) evenpages = 0; /* EJG 02-Jul-1996 */ status = cli$present(&qual40); /* EJG 02-Jul-1996 */ if(status == CLI$_PRESENT) downloadpspk = 1; /* EJG 02-Jul-1996 */ else /* EJG 02-Jul-1996 */ if(status == CLI$_NEGATED | status == CLI$_DEFAULTED) downloadpspk = 0; /* EJG 02-Jul-1996 */ #ifdef HPS /* EJG 02-Jul-1996 */ status = cli$present(&qual41); /* EJG 02-Jul-1996 */ if(status == CLI$_PRESENT) HPS_FLAG = 1; /* EJG 02-Jul-1996 */ else /* EJG 02-Jul-1996 */ if(status == CLI$_NEGATED | status == CLI$_DEFAULTED) HPS_FLAG = 0; /* EJG 02-Jul-1996 */ #endif /* EJG 02-Jul-1996 */ } dvipsk_TexLive-2009-stripped/vms/MAKETEXPK.COM0000644000175000017500000000647011372532227020603 0ustar uwabamiuwabami!!/bin/sh ! ! This script file makes a new TeX PK font, because one wasn't ! found. Parameters are: ! ! name dpi bdpi magnification [mode] ! ! `name' is the name of the font, such as `cmr10'. `dpi' is ! the resolution the font is needed at. `bdpi' is the base ! resolution, useful for figuring out the mode to make the font ! in. `magnification' is a string to pass to MF as the ! magnification. `mode', if supplied, is the mode to use. ! ! Note that this file must execute Metafont, and then gftopk, ! and place the result in the correct location for the PostScript ! driver to find it subsequently. If this doesn't work, it will ! be evident because MF will be invoked over and over again. ! ! Of course, it needs to be set up for your site. ! ! $ set mess/nofa/nose/note/noid $ newtex $ set mess/se/fa/id/te $ NAME = f$sear("mf_inputs:"+p1+".mf") $ onlyname=f$parse(name,,,"name") $ name= f$parse(name,,,"device")+f$parse(name,,,"directory")+f$parse(name,,, - "name") $ DPI = f$integer(P2) $ BDPI = f$integer(P3) $ MAG = f$edit(P4,"LOWERCASE") $ MODE = P5 $ if MODE .EQS. "" then $ if BDPI .EQ. 300 $ then $ MODE := "imagen" $ goto GotMode $ endif $ if BDPI .EQ. 400 $ then $ MODE := "nexthi" $ goto GotMode $ endif $ if BDPI .EQ. 100 $ then $ MODE := "nextscreen" $ goto GotMode $ endif $ if BDPI .EQ. 635 $ then $ MODE := "linolo" $ goto GotMode $ endif $ if BDPI .EQ. 1270 $ then $ MODE := "linohi" $ goto GotMode $ endif $ if BDPI .EQ. 2540 $ then $ MODE := "linosuper" $ goto GotMode $ endif $ write sys$output "I don't know the mode for ",BDPI $ write sys$output "Have your system admin update MakeTeXPK" $ exit 1 $ GotMode: $ $ GFNAME = f$fao("!AS.!ASgf",onlyNAME,f$string(DPI)) $ PKNAME = f$fao("!AS.!ASPK",onlyNAME,f$string(DPI)) $ $ pkfilename = f$fao("tex_pk:!AS",PKNAME) $ pkfile = f$search (pkfilename) $ if pkfile .EQS. "" $ then $! Clean up on normal or abnormal exit $ on control_y then goto ControlY $ on error then goto ControlY $ on severe_error then goto ControlY $ $ OLDDIR = f$environment("DEFAULT") $ set def sys$login $ command = f$fao - ("mf ""\mode:=!AS; mag:=!AS; scrollmode ; input !AS""", - MODE,MAG,NAME) $ write sys$output "Creating font file for ",onlyname $ write sys$output "Please wait about 2 minutes" $ write sys$output "" $ set noon $ command $ set on $ $ gffile=f$sear(onlyname+"."+f$str(dpi)+"gf") $ if gffile .EQS. "" $ then $ write sys$output "Metafont failed for some reason on ",gfname $ goto ControlY $ endif $ $ gftopk 'gfname' $ delete/noconf/nolog 'gfname'; $ delete/noconf/nolog 'onlyname'.lis; $ $ if f$getsyi("nodename").eqs."VAXSNS" $ then $ on error then goto goodexit $ on severe_error then goto goodexit $ send/file/vms 'pkname' newtex $! write sys$output "------- ",pkname," has been sent to NEWTEX" $ send/file/vms 'onlyname'.tfm newtex $! write sys$output "------- ",onlyname,".TFM has been sent to NEWTEX" $ endif $ $ goto GoodExit $ else $ write sys$output "tex_pk:",PKNAME," already exists!" $ exit $ endif $ $ $ GoodExit: $ set default 'olddir $ exit $ $ ControlY: $ set default 'olddir $ exit 1 dvipsk_TexLive-2009-stripped/vms/README.VMS0000644000175000017500000000271511372532227020234 0ustar uwabamiuwabamiThis is the beginnings of a port to VMS. The documentation is not yet complete, but the program works. To compile, set the following in MAKE.COM: Set TFMPATH to where the TFM files are located. Default is TEX$FONTS: ($ TFMPATH = "TEX$FONTS:") Set PKPATH to where the PK fonts are located. Default is TEX_PK: ($ PKPATH = "TEX_PK:") Set VFPATH to where the VF fonts are located. Default is TEX_VF: ($ VFPATH = "TEX_VF:") Set FIGPATH to where the epsf and psfiles are located. Default is TEX_INPUTS: ($ FIGPATH = "TEX_INPUTS:") Set HEADERPATH to where the header files are located. Default is TEX$POSTSCRIPT:,SYS$LOGIN:," ($ HEADERPATH = "TEX$POSTSCRIPT:,SYS$LOGIN:,") Set CONFIGPATH to where the config files are located. Default is TEX$POSTSCRIPT: ($ CONFIGPATH = "TEX$POSTSCRIPT:") Set TPIC to ",TPIC" if you want TPIC support enabled. Default is enabled. ($ TPIC = ",TPIC") Set DEBUG to ",DEBUG" if you want DEBUG support enabled. Default is enabled. ($ DEBUG = ",DEBUG") Expect 1 warning in dospecial.c To install: dvips := $DIRECTORY:dvips maketexpk := @DIRECTORY:maketexpk Make sure that all the logicals defined above (eg, tex_pk, tex_vf) are actually defined. Again, this is a first cut, with improvements to come later. It has not been thoroughly tested. More documentation will be coming later, and possibly a VMS command line interface. If you have any problems or improvements, please let me know. Xev Gittler GTE Laboratories, Inc. xev@bunny.gte.com dvipsk_TexLive-2009-stripped/vms/make.com0000644000175000017500000003363311372532227020330 0ustar uwabamiuwabami$ ! $ ! dvips for VAX/VMS $ ! $ ! $ ! Use to compile and link dvips with VAXC under VMS. Before using $ ! this command file you must set the following definitions according $ ! to your own environment; $ ! $ ! TFMPATH - The directory where TFM files live ( needed for $ ! the compilation of dvips.c ). Be sure and include $ ! the needed directory separator in the path ( i.e. $ ! TEX_FONTS: ) $ ! PKPATH - The directory where PK files live ( needed for the $ ! compilation of dvips.c ). You should also decided $ ! whether you need VMS_ROOTED ( needed for the $ ! compilation of loadfont.c ) defined so that $ ! PKPATH will be interpreted as a rooted directory $ ! under VMS. Be sure and include the needed directory $ ! separator in the path ( i.e. TEX_FONTS: ). $ ! HEADERPATH - The directory where the PostScript prologue file $ ! live ( needed for the compilation of output.c & $ ! dvips.c). Be sure and include a trailing comma in $ ! your definition of the header path as dvips uses this $ ! definition as a path for both PostScript prologue $ ! files and files which are included with \special $ ! options. This definition should be a comma $ ! separated list of directories where dvips will $ ! look for a specified file. As an example; $ ! $ ! "HEADERPATH=""TEX_POSTSCRIPT:,SYS$LOGIN:,""" $ ! $ ! to look first in TEX_POSTSCRIPT:, then in SYS$LOGIN:, $ ! and finally in the current default directory. $ ! CONFIGPATH - The directory where the configuration file lives $ ! ( needed for the compilation of resident.c ). Be $ ! sure and include the needed directory separator $ ! in the path ( i.e. TEX_POSTSCRIPT: ). $ ! $ ! FIGPATH - Where the .ps and .eps files are $ ! $ ! After dvips has been compiled and linked the user will be given the $ ! option of compressing the PostScript prologue files which are used $ ! by dvips and copying the resultant prologue files to the specifed $ ! HEADERPATH. The user will also be given the option of copying the $ ! dvips image file to the area where TeX related images are stored. $ ! Answering "yes" to either of these options should be done only if $ ! the user has write priviledges to the directories which are specified. $ ! $ ! Command file by: Robert Schneider $ ! Department of Petroleum Engineering $ ! The University of Texas at Austin $ ! $ ! October 1989 $ ! $ ! Updates by: Earle Ake $ ! Science Applications International Corporation $ ! Dayton, Ohio $ ! ake@dayton.saic.com $ ! $ ! Updated for DVIPS 5.34 $ ! August 1990 $ ! $ ! Ted Nieland $ ! Control Data Corporation $ ! DECUS TeX Collection Editor $ ! ted@nieland.dayton.oh.us $ ! $ ! Updated for DVIPS 5.47, February 1991 $ ! $ ! Updated for DVIPS 5.474, March 1992 $ ! Earle F. Ake $ ! $! Updated for DVIPS 5.493, Sept 1992 $! Added HAVE_GETCWD,ANSI in CC for $! dvips.c and resident.c $! Max Calvani $! calvani@astrpd.astro.it $! $! Updated for DVIPS 5.495, Oct. 1992 $! calvani@astrpd.astro.it $! $! Updated for DVIPS 5.499, Jan. 1993 $! Added FONTLIB support $! calvani@astrpd.astro.it $! $ on error then goto bad_exit $ on severe_error then goto bad_exit $ ! $ TFMPATH = "TEX_FONTS:" $ PKPATH = "TEX_PKDIR:" $ VFPATH = "TEX_VFDIR:" $ HEADERPATH = "DVI_INPUTS:,TEX_INPUTS:,SYS$LOGIN:,SYS$DISK:[]," $ PLACEHEADER_DIR = "TEX_DISK:[TEX.INPUTS.DVIDRIVERS]" $ CONFIGPATH = "TEX_INPUTS:" $ FIGPATH = "TEX_INPUTS:,SYS$DISK:" $ TPIC = ",TPIC" $ EMTEX = ",EMTEX" $ FONTLIB = ",FONTLIB" $ VMS_ROOTED = ",VMS_ROOTED" $ TEXEXEPATH = "TEX_DISK:[TEX.EXE]" $ DEBUG = ",DEBUG" $ ! $ write sys$output " " $ inquire/nop ANSWER "Have you read the file VMS_INSTALL.TXT [no]? " $ if ANSWER .eqs. "" then ANSWER = 0 $ if ANSWER then goto read_instructions $ write sys$output " " $ write sys$output "Please read the VMS_INSTALL.TXT file, edit this command" $ write sys$output "file if necessary, and then execute this file again." $ write sys$output " " $ exit $ read_instructions: $ write sys$output " " $ inquire/nop ANSWER "Compile sources [no]? " $ if ANSWER .eqs. "" then ANSWER = 0 $ if .not. ANSWER then goto linkstep $ ! $ get_definitions: $ write sys$output " " $ ! $ inquire/nop ANSWER "TFM path [''TFMPATH']? " $ if ANSWER .nes. "" then TFMPATH = ANSWER $ inquire/nop ANSWER "PK path [''PKPATH']? " $ if ANSWER .nes. "" then PKPATH = ANSWER $ inquire/nop ANSWER "VF path [''VFPATH']? " $ if ANSWER .nes. "" then VFPATH = ANSWER $ inquire/nop ANSWER "PostScript HEADER path [''HEADERPATH']? " $ if ANSWER .nes. "" then HEADERPATH = ANSWER $ inquire/nop ANSWER "PostScript CONFIG path [''CONFIGPATH'])? " $ if ANSWER .nes. "" then CONFIGPATH = ANSWER $ inquire/nop ANSWER "FIG path [''FIGPATH'])? " $ if ANSWER .nes. "" then FIGPATH = ANSWER $ inquire/nop ANSWER "Do you want TPIC support [yes]? " $ if ANSWER .eqs. "" then ANSWER = 1 $ if .not. ANSWER then TPIC = "" $ inquire/nop ANSWER "Do you want EMTEX support [yes]? " $ if ANSWER .eqs. "" then ANSWER = 1 $ if .not. ANSWER then EMTEX = "" $ inquire/nop ANSWER "Do you want FONTLIB support [yes]? " $ if ANSWER .eqs. "" then ANSWER = 1 $ if .not. ANSWER then FONTLIB = "" $ inquire/nop ANSWER "Do you want DEBUG support [yes]? " $ if ANSWER .eqs. "" then ANSWER = 1 $ if .not. ANSWER then DEBUG = "" $ inquire/nop ANSWER "Is ''PKPATH' a rooted directory [yes]? " $ if ANSWER .eqs. "" then ANSWER = 1 $ if .not. ANSWER then VMS_ROOTED = "" $ write sys$output " " $ write sys$output "dvips will be compiled with the following definitions;" $ write sys$output " " $ write sys$output "TFMPATH = ",TFMPATH $ write sys$output "PKPATH = ",PKPATH $ write sys$output "VFPATH = ",VFPATH $ write sys$output "HEADERPATH = ",HEADERPATH $ write sys$output "CONFIGPATH = ",CONFIGPATH $ write sys$output "FIGPATH = ",FIGPATH $ if TPIC .eqs. "" then - write sys$output "TPIC support is not enabled." $ if TPIC .nes. "" then - write sys$output "TPIC support is enabled." $ if FONTLIB .eqs. "" then - write sys$output "FONTLIB support is not enabled." $ if FONTLIB .nes. "" then - write sys$output "FONTLIB support is enabled." $ if EMTEX .eqs. "" then - write sys$output "EMTEX support is not enabled." $ if EMTEX .nes. "" then - write sys$output "EMTEX support is enabled." $ if DEBUG .eqs. "" then - write sys$output "DEBUG support is not enabled." $ if DEBUG .nes. "" then - write sys$output "DEBUG support is enabled." $ if VMS_ROOTED .eqs. "" then - write sys$output PKPATH," is not a rooted directory." $ if VMS_ROOTED .nes. "" then - write sys$output PKPATH," is a rooted directory." $ write sys$output " " $ inquire/nop ANSWER "Is this correct [yes]? " $ if ANSWER .eqs. "" then ANSWER = 1 $ if .not. ANSWER then goto get_definitions $ ! $ if VMS_ROOTED .nes. "" then PKPATH = "''PKPATH'[%d]%f.PK" $ write sys$output " " $ write sys$output "Compiling sources ..." $ write sys$output " " $ write sys$output "afm2tfm.c ..." $ cc /define=(VMS'DEBUG') AFM2TFM.C $ write sys$output "color.c ..." $ cc /define=(VMS'DEBUG') COLOR.C $ write sys$output "dopage.c ..." $ cc /define=(VMS'DEBUG''EMTEX') DOPAGE.C $ write sys$output "dosection.c ..." $ cc /define=(VMS'DEBUG') DOSECTION.C $ write sys$output "dospecial.c ..." $ cc /define=(VMS'DEBUG''TPIC') DOSPECIAL.C $ write sys$output "download.c ..." $ cc /define=(VMS'DEBUG') DOWNLOAD.C $ write sys$output "dpicheck.c ..." $ cc /define=(VMS'DEBUG') DPICHECK.C $ write sys$output "drawps.c ..." $ cc /define=(VMS'DEBUG''TPIC') DRAWPS.C $ write sys$output "dviinput.c ..." $ cc /define=(VMS'DEBUG') DVIINPUT.C $ write sys$output "dvips.c ..." $ cc /define=(VMS'DEBUG',"TFMPATH=""''TFMPATH'""","PKPATH=""''PKPATH'""", - "VFPATH=""''VFPATH'""","FIGPATH=""''FIGPATH'""",HAVE_GETCWD,ANSI, - "CONFIGPATH=""''CONFIGPATH'""","HEADERPATH=""''HEADERPATH'""") DVIPS.C $ write sys$output "finclude.c ..." $ cc /DEF=(VMS'DEBUG') FINCLUDE.C $ write sys$output "flib.c ..." $ cc /DEF=(VMS'DEBUG''FONTLIB') FLIB.C $ write sys$output "fontdef.c ..." $ cc /define=(VMS'DEBUG') FONTDEF.C $ write sys$output "header.c ..." $ cc /define=(VMS'DEBUG') HEADER.C $ write sys$output "loadfont.c ..." $ cc /define=(VMS'DEBUG') LOADFONT.C $ write sys$output "makefont.c ..." $ cc /define=(VMS'DEBUG') MAKEFONT.C $ write sys$output "output.c ..." $ cc /define=(VMS'DEBUG',"HEADERPATH=""''HEADERPATH'""") OUTPUT.C $ write sys$output "papersiz.c ..." $ cc /define=(VMS'DEBUG') PAPERSIZ.C $ write sys$output "pprescan.c ..." $ cc /define=(VMS'DEBUG') PPRESCAN.C $ write sys$output "prescan.c ..." $ cc /define=(VMS'DEBUG') PRESCAN.C $ write sys$output "repack.c ..." $ cc /define=(VMS'DEBUG') REPACK.C $ write sys$output "resident.c ..." $ cc /define=(VMS'DEBUG',"CONFIGPATH=""''CONFIGPATH'""",HAVE_GETCWD,ANSI) - RESIDENT.C $ write sys$output "scalewidth.c ..." $ cc /define=(VMS'DEBUG') SCALEWIDTH.C $ write sys$output "scanpage.c ..." $ cc /define=(VMS'DEBUG') SCANPAGE.C $ write sys$output "search.c ..." $ cc /define=(VMS'DEBUG') SEARCH.C $ write sys$output "skippage.c ..." $ cc /define=(VMS'DEBUG') SKIPPAGE.C $ write sys$output "squeeze.c ..." $ cc /define=(VMS'DEBUG') SQUEEZE.C $ write sys$output "tfmload.c ..." $ cc /define=(VMS'DEBUG') TFMLOAD.C $ write sys$output "unpack.c ..." $ cc /define=(VMS'DEBUG') UNPACK.C $ write sys$output "virtualfont.c ..." $ cc /define=(VMS'DEBUG') VIRTUALFONT.C $ write sys$output "bbox.c ..." $ cc /define=(VMS'DEBUG') BBOX.C $ write sys$output "emspecial.c ..." $ cc /define=(VMS'DEBUG''EMTEX') EMSPECIAL.C $ ! $ ! vaxvms fixes some irritating problems with VAXC ( particulary $ ! fseek and ftell ). Thanks to Nelson Beebee at Utah. $ ! $ write sys$output "vaxvms.c ..." $ cc /define=(VMS'DEBUG') [.VMS]VAXVMS.C $ ! $ linkstep: $ write sys$output " " $ write sys$output "Linking dvips ..." $ link /exe=dvips dvips,dopage,dosection,dospecial,download,dpicheck,drawps, - dviinput,header,finclude,flib,fontdef,loadfont,tfmload,prescan, - scanpage,skippage,output,scalewidth,resident,search,unpack, - makefont,repack,virtualfont,vaxvms,color,papersiz,pprescan, - bbox,emspecial,[.vms]vaxcrtl.opt/opt $ write sys$output " " $ write sys$output "Linking squeeze ..." $ link /exe=squeeze squeeze,vaxvms,[.vms]vaxcrtl.opt/opt $ write sys$output " " $ write sys$output "Linking afm2tfm ..." $ write sys$output " " $ link /exe=afm2tfm afm2tfm,vaxvms,[.vms]vaxcrtl.opt/opt $ ! $ inquire/nop ANSWER - "Do you wish to compress the PostScript prologue files [no]? " $ if ANSWER .eqs. "" then ANSWER = 0 $ if .not. ANSWER then goto copy_prologue $ squeeze :== $'f$environment("DEFAULT")'squeeze.exe $ write sys$output " " $ set verify $ squeeze COLOR.LPRO COLOR.PRO $ squeeze FINCLUDE.LPRO FINCLUDE.PRO $ squeeze TEX.LPRO TEX.PRO $ squeeze TEXPS.LPRO TEXPS.PRO $ squeeze SPECIAL.LPRO SPECIAL.PRO $ verify = 'f$verify(0) $ write sys$output " " $ copy_prologue: $ FIRSTPATH = PLACEHEADER_DIR $ inquire/nop ANSWER - "Do you wish to copy the prologue files to ''FIRSTPATH' [yes]? " $ if ANSWER .eqs. "" then ANSWER = 1 $ if .not. ANSWER then goto copy_config $ write sys$output " " $ set verify $ copy COLOR.PRO 'FIRSTPATH'COLOR.PRO $ copy FINCLUDE.PRO 'FIRSTPATH'FINCLUDE.PRO $ copy TEX.PRO 'FIRSTPATH'TEX.PRO $ copy TEXPS.PRO 'FIRSTPATH'TEXPS.PRO $ copy SPECIAL.PRO 'FIRSTPATH'SPECIAL.PRO $ set protection=(s:rwed,o:rwed,g:re,w:re) 'FIRSTPATH'COLOR.PRO $ set protection=(s:rwed,o:rwed,g:re,w:re) 'FIRSTPATH'FINCLUDE.PRO $ set protection=(s:rwed,o:rwed,g:re,w:re) 'FIRSTPATH'TEX.PRO $ set protection=(s:rwed,o:rwed,g:re,w:re) 'FIRSTPATH'SPECIAL.PRO $ set protection=(s:rwed,o:rwed,g:re,w:re) 'FIRSTPATH'TEXPS.PRO $ verify = 'f$verify(0) $ write sys$output " " $ copy_config: $ FIRSTPATH = PLACEHEADER_DIR $ inquire/nop ANSWER - "Do you wish to copy the CONFIG.PS file to ''FIRSTPATH' [yes]? " $ if ANSWER .eqs. "" then ANSWER = 1 $ if .not. ANSWER then goto copy_image $ write sys$output " " $ set verify $ copy CONFIG.PS 'FIRSTPATH'CONFIG.PS $ set protection=(s:rwed,o:rwed,g:re,w:re) 'FIRSTPATH'CONFIG.PS $ verify = 'f$verify(0) $ write sys$output " " $ copy_image: $ inquire/nop ANSWER "Do you wish to copy DVIPS.EXE to the TeX area [yes]? " $ if ANSWER .eqs. "" then ANSWER = 1 $ if .not. ANSWER then goto done $ inquire/nop ANSWER "TeX image area [''TEXEXEPATH']? " $ if ANSWER .nes. "" THEN TEXEXEPATH = ANSWER $ write sys$output " " $ set verify $ copy dvips.exe 'TEXEXEPATH' $ set protect=(s:rwed,o:rwed,g:re,w:re) 'TEXEXEPATH'dvips.exe $ verify = 'f$verify(0) $ write sys$output " " $ done: $ write sys$output " " $ write sys$output "Be sure to add dvips to your CLI by using the SET " $ write sys$output "COMMAND syntax and do the other steps which are" $ write sys$output "necessary to finish up the installation of dvips." $ write sys$output " " $ goto good_exit $ bad_exit: $ write sys$output " " $ write sys$output "Something's wrong here. You might want to take a look" $ write sys$output "at the offending code or command and start over." $ write sys$output " " $ exit $ good_exit: $ write sys$output "Done." $ write sys$output " " $ exit $! --------------------- EOF ------------------------------------- dvipsk_TexLive-2009-stripped/vms/dvips.hlp0000644000175000017500000003471411372532227020546 0ustar uwabamiuwabami1 DVIPS ! Modified 07-Jul-1996 - EJG ! Fix description of filter (can write to stdout, but not read from stdin! ! Change mode description, landscape used with others just gives ! landscape. So took that out. Removed warning about quotes (not ! necessary). Added tabloid. ! Changed qualifier ctrl_d to ctrld to agree with cld file ! Changed default for inc_com to be noinc_com to agree with dvips ! Fix header qualifier ! ! Added comment about the manual to front and also under the ! special heading. The dvips program converts a TEX dvi file into a PostScript file for printing or distribution. Seldom has such a seemingly easy programming task required so much effort. The dvips program has a number of features that set it apart from other PostScript drivers for TEX. The dvips driver generates excellent, standard PostScript, that can be included in other documents as figures or printed through a variety of spoolers. The generated PostScript requires very little printer memory, so very complex documents with a lot of fonts can easily be printed even on PostScript printers without much memory, such as the original Apple LaserWriter. The PostScript output is also compact, requiring less disk space to store and making it feasible as a transfer format. Missing fonts can be automatically generated if METAFONT exists on the system, or fonts can be converted from gf to pk format on demand. If a font cannot be generated, a scaled version of the same font at a different size can be used instead, although dvips will complain loudly about the poor aesthetics of the resulting output. A manual for dvips may be printed with the command: printps tex_root:[local]dvips.ps In this manual, the command line options are for the unix variant of dvips. Our version has the qualifiers as detailed in this help file. Also, some of the latest options are not in the manual (in particular, the /hyperps option). usage: DVIPS filename[.dvi] 2 /COPIES /COPIES=num Generate num copies of every page. Default is 1. (For collated copies, see the /COLLATE option.) 2 /DEBUG /DEBUG=num Set the debug flags. This is intended only for emergencies or for unusual fact-finding expeditions; it will work only if dvips has been compiled with the DEBUG option. Use num=1 for special num=2 for paths num=4 for fonts num=8 for pages num=16 for headers num=32 for font compression num=64 for files num=128 for memory allocation Use a value of -1 for maximum output. 2 /MAXDRIFT /MAXDRIFT=num Make sure that each character is placed at most this many pixels from its `true' resolution-independent position on the page. The default value of this parameter is resolution dependent (it is the number of entries in the list [100, 200, 300, 400, 500, 600, 800, 1000, 1200, 1600, 2000, 2400, 2800, 3200, : : :] that are less than or equal to the resolution in dots per inch). Allowing individual characters to `drift' from their correctly rounded positions by a few pixels, while regaining the true position at the beginning of each new word, improves the spacing of letters in words. 2 /FILTER Run as a filter writing the output to the standard output. (The input must still be specified as the argument.) 2 /LAST /LAST=num The last page printed will be the first one numbered num. Default is the last page in the document. 2 /MANUAL Specify manual feed for printer. 2 /NUMBER /NUMBER=num At most num pages will be printed. Default is 100000. 2 /OUTPUT /OUTPUT=filename.ext The output will be sent to file name. If no file name is given, the default name is file.ps where the dvi file was called file.dvi . 2 /START /START=num The first page printed will be the first one numbered num. Default is the first page in the document. 2 /QUIET Run in quiet mode. Don't chatter about pages converted, etc.; report nothing but errors to standard error. 2 /REVERSE Stack pages in reverse order. Normally, page 1 will be printed first. 2 /SAV_RES Causes the entire global output to be enclosed in a save/restore pair. This causes the file to not be truly conformant, and is thus not recommended, but is useful if you are driving the printer directly and don't care too much about the portability of the output. 2 /MODE /MODE=modename This sets the paper mode to modename. Currently, the only modes allowable are "letter", which selects an 8.5 by 11 inch page, "a3", which selects an a3 sized page, "a4" , which selects an a4 sized page, "legal", which selects an 8.5 by 14 inch page, "ledger", which selects an 11 by 17 inch page, and "tabloid", which selects a 17 by 11 inch page, and "landscape", which rotates a letter size document by 90 degrees. The default mode is "letter". The upper left corner of each page in the dvi file is placed one inch from the left and one inch from the top. 2 /MAGNIFICATION /MAGNIFICATION=num Set the magnification ratio to num/1000. Overrides the magnification specified in the dvi file. Must be between 10 and 100000. 2 /COLLATE /COLLATE=num Create num copies, but collated (by replicating the data in the PostScript file). Slower than the /COPIES option, but easier on the hands, and faster than resubmitting the same PostScript file multiple times. 2 /DPI /DPI=num Set the resolution in dpi (dots per inch) to num. This affects the choice of bitmap fonts that are loaded and also the positioning of letters in resident PostScript fonts. Must be between 10 and 10000. This affects both the horizontal and vertical resolution. If a high resolution (something greater than 400 dpi, say) is selected, the /COMPRESS flag should probably also be used. 2 /CTRLD Causes Control-D (ASCII code 4) to be appended as the very last character of the PostScript file. This is useful when dvips is driving the printer directly instead of working through a spooler, as is common on extremely small systems. Otherwise, it is not recommended. 2 /INC_COM /INC_COM /NOINC_COM (default) /NOINC_COM option causes comments in included PostScript graphics, font files, and headers to be removed. This is sometimes necessary to get around bugs in spoolers or PostScript post-processing programs. Specifically, the %%Page comments, when left in, often cause difficulties. Use of this flag can cause some included graphics to fail, since the PostScript header macros from some software packages read portions of the input stream line by line, searching for a particular comment. 2 /COMMENT /COMMENT (default) /NOCOMMENT /NOCOMMENT turns off structured comments; this might be necessary on some systems that try to interpret PostScript comments in weird ways, or on some PostScript printers. Old versions of Transcript in particular cannot handle modern Encapsulated PostScript. 2 /PRINTER /PRINTER=printername Sets up the output for the appropriate printer. This is implemented by reading in config.printername , which can set various parameters such as the font paths and any other defaults for that printer only. It is recommended that all standard defaults go in the one master config.ps file and only things that vary printer to printer go in the config.printername files. Note that config.ps is read before config.printername. In addition, another file called "/.dvipsrc is searched for immediately after config.ps; this file is intended for user defaults. If no /PRINTER command is given, the environment variable PRINTER is checked. If that variable exists, and a corresponding configuration file exists, that configuration file is read in. 2 /HEADER /HEADER=(file1,file2,...) /NOHEADER Prepend file1, file2, ... as additional header files. This header file gets added to the PostScript userdict. With /NOHEADER, suppress all header output. 2 /VM_SAVE /VM_SAVE (default) /NOVM_SAVE /NOVM_SAVE disables a PostScript virtual memory saving optimization that stores the character metric information in the same string that is used to store the bitmap information. This is only necessary when driving the Xerox 4045 PostScript interpreter, and it is caused by a bug in that interpreter that results in `garbage' on the bottom of each character. Not recommended unless you must drive this printer. 2 /H_DPI /H_DPI=num Set the horizontal resolution in dots per inch to num. 2 /V_DPI /V_DPI=num Set the vertical resolution in dots per inch to num. 2 /COMPRESS Causes bitmapped fonts to be compressed before they are downloaded, thereby reducing the size of the PostScript font-downloading information. Especially useful at high resolutions or when very large fonts are used. Will slow down printing somewhat, especially on early 68000-based PostScript printers. 2 /ABSOLUTE Makes references to page numbers absolute (rather than TeX page numbers). 2 /EPSF /EPSF /NOEPSF (default) /EPSF makes dvips attempt to generate an EPSF file with a tight bounding box. This only works on one-page files, and it only looks at marks made by characters and rules, not by any included graphics. In addition, it gets the glyph metrics from the tfm file, so characters that lie outside their enclosing tfm box may confuse it. In addition, the bounding box might be a bit too loose if the character glyph has significant left or right side bearings. Nonetheless, this option works well for creating small EPSF files for equations or tables or the like. (Note, of course, that dvips output is resolution dependent and thus does not make very good EPSF files, especially if the images are to be scaled; use these EPSF files with a great deal of care.) 2 /PRESCAN /PRESCAN /NOPRESCAN (default) Conserve memory by making three passes over the .dvi file instead of two and only loading those characters actually used. Generally only useful on machines with a very limited amount of memory, like some PCs. 2 /PAGECOPIES /PAGECOPIES=num (default=1) Number of times to print each page. Executes the postscript for each page this number of times (unlike /COPIES which executes the postscript once and prints multiple times.) 2 /SEPARATE /SEPARATE /NOSEPARATE (default) Make each section be a separate file. Under certain circumstances, dvips will split the document up into `sections' to be processed independently; this is most often done for memory reasons. Using this option tells dvips to place each section into a separate file; the new file names are created replacing the suffix of the supplied output file name by a three-digit sequence number. This option is most often used in conjunction with the /SEC_SIZE option which sets the maximum section length in pages. For instance, some phototypesetters cannot print more than ten or so consecutive pages before running out of steam; these options can be used to automatically split a book into ten-page sections, each to its own file. 2 /CROPMARKS /CROPMARKS /NOCROPMARKS (default) Print crop marks. This option increases the paper size (which should be specified, either with a paper size special or with the /PSIZE option) by a half inch in each dimension. It translates each page by a quarter inch and draws cross-style crop marks. It is mostly useful with typesetters that can set the page size automatically. 2 /SEC_SIZE /SEC_SIZE=number Set the maximum number of pages in each `section'. This option is most commonly used with the /SEPARATE option; see that documentation above for more information. 2 /HELP /HELP Given with a dummy file name, causes dvips to output a one page listing of options in unix form. Not very useful! 2 /MAKEFONT /MAKEFONT (default) /NOMAKEFONT The /NOMAKEFONT option turns off the automatic font generation facility. If any fonts are missing, commands to generate the fonts are appended to the file missfont.log in the current directory; this file can then be executed and deleted to create the missing fonts. 2 /PSIZE /PSIZE="dim,dim" Set the paper size to the given pair of dimensions. This option takes its arguments in the same syntax as the papersize special, for example 8.5in,11in. It overrides any paper size special in the dvi file. The dimensions must resolve to a papersize specified in the configuration files. 2 /POFFSET /POFFSET="dim,dim" Move the origin by a certain amount. The offset is a comma-separated pair of dimensions, such as .1in,-.3cm (in the same syntax used in the papersize special). The origin of the page is shifted from the default position (of one inch down, one inch to the right from the upper left corner of the paper) by this amount. 2 /SECURE /SECURE /NOSECURE (default) With the /SECURE option, dvips will not attempt to open pipes or run commands (such as commands to make fonts). 2 /ODDPAGES /ODDPAGES /NOODDPAGES (default) Print only odd pages (TeX pages, not sequence pages). 2 /EVENPAGES /EVENPAGES /NOEVENPAGES (default) Print only even pages (TeX pages, not sequence pages). 2 /DOWNLOADPS /DOWNLOADPS /NODOWNLOADPS (default) Downloadable postscript fonts are set in PK (compressed bitmap) format. 2 /HYPERPS /HYPERPS /NOHYPERPS (default) Outputs \specials containing hyperlinks to the output file as pdf marks embedded in postscript comments. These can then be turned into hyperlinks with Adobe Distiller and viewed with Adobe Acrobat. 2 Specials The specials are described in the manual which may be printed with the command printps tex_root:[local]dvips.ps In this manual, the command line options are for the unix variant of dvips. Our version has the qualifiers as detailed in this help file. Also, some of the latest options are not in the manual (in particular, the /hyperps option). dvipsk_TexLive-2009-stripped/vms/newmake.com0000644000175000017500000003770611372532227021047 0ustar uwabamiuwabami$! EJG - 02-Jul-1996 - Made from Make.com $! PWD - 03-Mar-1997 - Add t1part.c $! Changes: $! $! Added HPS define to compilation. $! Skip all the questions at the beginning and go straight to compile. $! Reorder modules (bbox and emspecial) to be in alphabetical order $! during compile. $! Add hps.c to compile. $! Add hps to link. $! Remove option file from links. $! Add /standard=vaxc to all cc commands $! Remove FONTLIB (if included, need to define FLINAME and FLIPATH, but $! before I do this I need to find out what a font library is!) $! $! PWD: add t1part.c to compile and link $! change TEX$POSTSCRIPT to TEX_POSTSCRIPT $ ! $ ! dvips for VAX/VMS $ ! $ ! $ ! Use to compile and link dvips with VAXC under VMS. Before using $ ! this command file you must set the following definitions according $ ! to your own environment; $ ! $ ! TFMPATH - The directory where TFM files live ( needed for $ ! the compilation of dvips.c ). Be sure and include $ ! the needed directory separator in the path ( i.e. $ ! TEX_FONTS: ) $ ! PKPATH - The directory where PK files live ( needed for the $ ! compilation of dvips.c ). You should also decided $ ! whether you need VMS_ROOTED ( needed for the $ ! compilation of loadfont.c ) defined so that $ ! PKPATH will be interpreted as a rooted directory $ ! under VMS. Be sure and include the needed directory $ ! separator in the path ( i.e. TEX_FONTS: ). $ ! HEADERPATH - The directory where the PostScript prologue file $ ! live ( needed for the compilation of output.c & $ ! dvips.c). Be sure and include a trailing comma in $ ! your definition of the header path as dvips uses this $ ! definition as a path for both PostScript prologue $ ! files and files which are included with \special $ ! options. This definition should be a comma $ ! separated list of directories where dvips will $ ! look for a specified file. As an example; $ ! $ ! "HEADERPATH=""TEX_POSTSCRIPT:,SYS$LOGIN:,""" $ ! $ ! to look first in TEX_POSTSCRIPT:, then in SYS$LOGIN:, $ ! and finally in the current default directory. $ ! CONFIGPATH - The directory where the configuration file lives $ ! ( needed for the compilation of resident.c ). Be $ ! sure and include the needed directory separator $ ! in the path ( i.e. TEX_POSTSCRIPT: ). $ ! $ ! FIGPATH - Where the .ps and .eps files are $ ! $ ! After dvips has been compiled and linked the user will be given the $ ! option of compressing the PostScript prologue files which are used $ ! by dvips and copying the resultant prologue files to the specifed $ ! HEADERPATH. The user will also be given the option of copying the $ ! dvips image file to the area where TeX related images are stored. $ ! Answering "yes" to either of these options should be done only if $ ! the user has write priviledges to the directories which are specified. $ ! $ ! Command file by: Robert Schneider $ ! Department of Petroleum Engineering $ ! The University of Texas at Austin $ ! $ ! October 1989 $ ! $ ! Updates by: Earle Ake $ ! Science Applications International Corporation $ ! Dayton, Ohio $ ! ake@dayton.saic.com $ ! $ ! Updated for DVIPS 5.34 $ ! August 1990 $ ! $ ! Ted Nieland $ ! Control Data Corporation $ ! DECUS TeX Collection Editor $ ! ted@nieland.dayton.oh.us $ ! $ ! Updated for DVIPS 5.47, February 1991 $ ! $ ! Updated for DVIPS 5.474, March 1992 $ ! Earle F. Ake $ ! $! Updated for DVIPS 5.493, Sept 1992 $! Added HAVE_GETCWD,ANSI in CC for $! dvips.c and resident.c $! Max Calvani $! calvani@astrpd.astro.it $! $! Updated for DVIPS 5.495, Oct. 1992 $! calvani@astrpd.astro.it $! $! Updated for DVIPS 5.499, Jan. 1993 $! Added FONTLIB support $! calvani@astrpd.astro.it $! $ on error then goto bad_exit $ on severe_error then goto bad_exit $ ! $ TFMPATH = "TEX_FONTS:" $ PKPATH = "TEX_PKDIR:" $ VFPATH = "TEX_VFDIR:" $ HEADERPATH = "TEX_POSTSCRIPT:,TEX_INPUTS:,SYS$LOGIN:,SYS$DISK:[]," ! PWD $ PLACEHEADER_DIR = "TEX_POSTSCRIPT:,TEX_ROOT:[TEX.DVIDRIVERS]" ! Changed by PWD $ CONFIGPATH = "TEX_POSTSCRIPT:" !Changed by PWD $ FIGPATH = "TEX_INPUTS:,SYS$DISK:" $ TPIC = ",TPIC" $ EMTEX = ",EMTEX" $! FONTLIB = ",FONTLIB" !EJG 02-Jul-1996 $ FONTLIB = "" !EJG 02-Jul-1996 $ VMS_ROOTED = ",VMS_ROOTED" $ TEXEXEPATH = "TEX_DISK:[TEX.EXE]" $ DEBUG = ",DEBUG" $ HPS = ",HPS" !EJG 02-Jul-1996 $ GOTO DOCOMPILE !EJG 02-Jul-1996 $ ! $ write sys$output " " $ inquire/nop ANSWER "Have you read the file VMS_INSTALL.TXT [no]? " $ if ANSWER .eqs. "" then ANSWER = 0 $ if ANSWER then goto read_instructions $ write sys$output " " $ write sys$output "Please read the VMS_INSTALL.TXT file, edit this command" $ write sys$output "file if necessary, and then execute this file again." $ write sys$output " " $ exit $ read_instructions: $ write sys$output " " $ inquire/nop ANSWER "Compile sources [no]? " $ if ANSWER .eqs. "" then ANSWER = 0 $ if .not. ANSWER then goto linkstep $ ! $ get_definitions: $ write sys$output " " $ ! $ inquire/nop ANSWER "TFM path [''TFMPATH']? " $ if ANSWER .nes. "" then TFMPATH = ANSWER $ inquire/nop ANSWER "PK path [''PKPATH']? " $ if ANSWER .nes. "" then PKPATH = ANSWER $ inquire/nop ANSWER "VF path [''VFPATH']? " $ if ANSWER .nes. "" then VFPATH = ANSWER $ inquire/nop ANSWER "PostScript HEADER path [''HEADERPATH']? " $ if ANSWER .nes. "" then HEADERPATH = ANSWER $ inquire/nop ANSWER "PostScript CONFIG path [''CONFIGPATH'])? " $ if ANSWER .nes. "" then CONFIGPATH = ANSWER $ inquire/nop ANSWER "FIG path [''FIGPATH'])? " $ if ANSWER .nes. "" then FIGPATH = ANSWER $ inquire/nop ANSWER "Do you want TPIC support [yes]? " $ if ANSWER .eqs. "" then ANSWER = 1 $ if .not. ANSWER then TPIC = "" $ inquire/nop ANSWER "Do you want EMTEX support [yes]? " $ if ANSWER .eqs. "" then ANSWER = 1 $ if .not. ANSWER then EMTEX = "" $ inquire/nop ANSWER "Do you want FONTLIB support [yes]? " $ if ANSWER .eqs. "" then ANSWER = 1 $ if .not. ANSWER then FONTLIB = "" $ inquire/nop ANSWER "Do you want DEBUG support [yes]? " $ if ANSWER .eqs. "" then ANSWER = 1 $ if .not. ANSWER then DEBUG = "" $ inquire/nop ANSWER "Is ''PKPATH' a rooted directory [yes]? " $ if ANSWER .eqs. "" then ANSWER = 1 $ if .not. ANSWER then VMS_ROOTED = "" $ write sys$output " " $ write sys$output "dvips will be compiled with the following definitions;" $ write sys$output " " $ write sys$output "TFMPATH = ",TFMPATH $ write sys$output "PKPATH = ",PKPATH $ write sys$output "VFPATH = ",VFPATH $ write sys$output "HEADERPATH = ",HEADERPATH $ write sys$output "CONFIGPATH = ",CONFIGPATH $ write sys$output "FIGPATH = ",FIGPATH $ if TPIC .eqs. "" then - write sys$output "TPIC support is not enabled." $ if TPIC .nes. "" then - write sys$output "TPIC support is enabled." $ if FONTLIB .eqs. "" then - write sys$output "FONTLIB support is not enabled." $ if FONTLIB .nes. "" then - write sys$output "FONTLIB support is enabled." $ if EMTEX .eqs. "" then - write sys$output "EMTEX support is not enabled." $ if EMTEX .nes. "" then - write sys$output "EMTEX support is enabled." $ if DEBUG .eqs. "" then - write sys$output "DEBUG support is not enabled." $ if DEBUG .nes. "" then - write sys$output "DEBUG support is enabled." $ if VMS_ROOTED .eqs. "" then - write sys$output PKPATH," is not a rooted directory." $ if VMS_ROOTED .nes. "" then - write sys$output PKPATH," is a rooted directory." $ write sys$output " " $ inquire/nop ANSWER "Is this correct [yes]? " $ if ANSWER .eqs. "" then ANSWER = 1 $ if .not. ANSWER then goto get_definitions $ ! $DOCOMPILE: !EJG 02-Jul-1996 $ if VMS_ROOTED .nes. "" then PKPATH = "''PKPATH'[%d]%f.PK" $ write sys$output " " $ write sys$output "Compiling sources ..." $ write sys$output " " $ write sys$output "afm2tfm.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS') AFM2TFM.C $ write sys$output "bbox.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS') BBOX.C $ write sys$output "color.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS') COLOR.C $ write sys$output "dopage.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS''EMTEX') DOPAGE.C $ write sys$output "dosection.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS') DOSECTION.C $ write sys$output "dospecial.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS''TPIC') DOSPECIAL.C $ write sys$output "download.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS') DOWNLOAD.C $ write sys$output "dpicheck.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS') DPICHECK.C $ write sys$output "drawps.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS''TPIC') DRAWPS.C $ write sys$output "dviinput.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS') DVIINPUT.C $ write sys$output "dvips.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS',"TFMPATH=""''TFMPATH'""","PKPATH=""''PKPATH'""", - "VFPATH=""''VFPATH'""","FIGPATH=""''FIGPATH'""",HAVE_GETCWD,ANSI, - "CONFIGPATH=""''CONFIGPATH'""","HEADERPATH=""''HEADERPATH'""") DVIPS.C $ write sys$output "emspecial.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS''EMTEX') EMSPECIAL.C $ write sys$output "finclude.c ..." $ cc/standard=vaxc /DEF=(VMS'DEBUG''HPS') FINCLUDE.C $ write sys$output "flib.c ..." $ cc/standard=vaxc /DEF=(VMS'DEBUG''HPS''FONTLIB') FLIB.C $ write sys$output "fontdef.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS') FONTDEF.C $ write sys$output "header.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS') HEADER.C $ write sys$output "hps.c ..." !EJG 02-Jul-1996 $ cc/standard=vaxc /define=(VMS'DEBUG''HPS') HPS.C !EJG 02-Jul-1996 $ write sys$output "loadfont.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS') LOADFONT.C $ write sys$output "makefont.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS') MAKEFONT.C $ write sys$output "output.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS',"HEADERPATH=""''HEADERPATH'""") OUTPUT.C $ write sys$output "papersiz.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS') PAPERSIZ.C $ write sys$output "pprescan.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS') PPRESCAN.C $ write sys$output "prescan.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS') PRESCAN.C $ write sys$output "repack.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS') REPACK.C $ write sys$output "resident.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS',"CONFIGPATH=""''CONFIGPATH'""",HAVE_GETCWD,ANSI) - RESIDENT.C $ write sys$output "scalewidth.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS') SCALEWIDTH.C $ write sys$output "scanpage.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS') SCANPAGE.C $ write sys$output "search.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS') SEARCH.C $ write sys$output "skippage.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS') SKIPPAGE.C $ write sys$output "squeeze.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS') SQUEEZE.C $ write sys$output "t1part.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS') T1PART.C $ write sys$output "tfmload.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS') TFMLOAD.C $ write sys$output "unpack.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS') UNPACK.C $ write sys$output "virtualfont.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS') VIRTUALFONT.C $ ! $ ! vaxvms fixes some irritating problems with VAXC ( particulary $ ! fseek and ftell ). Thanks to Nelson Beebee at Utah. $ ! $ write sys$output "vaxvms.c ..." $ cc/standard=vaxc /define=(VMS'DEBUG''HPS') [.VMS]VAXVMS.C $ ! $ linkstep: $ write sys$output " " $ write sys$output "Linking dvips ..." $ link /exe=dvips dvips,dopage,dosection,dospecial,download,dpicheck,drawps, - t1part, - dviinput,header,hps,finclude,flib,fontdef,loadfont,tfmload,prescan, - scanpage,skippage,output,scalewidth,resident,search,unpack, - makefont,repack,virtualfont,vaxvms,color,papersiz,pprescan, - bbox,emspecial !EJG 02-Jul-1996 $ write sys$output " " $ write sys$output "Linking squeeze ..." $ link /exe=squeeze squeeze,vaxvms !EJG 02-Jul-1996 $ write sys$output " " $ write sys$output "Linking afm2tfm ..." $ write sys$output " " $ link /exe=afm2tfm afm2tfm,vaxvms !EJG 02-Jul-1996 $ exit !EJG 02-Jul-1996 $ ! $ inquire/nop ANSWER - "Do you wish to compress the PostScript prologue files [no]? " $ if ANSWER .eqs. "" then ANSWER = 0 $ if .not. ANSWER then goto copy_prologue $ squeeze :== $'f$environment("DEFAULT")'squeeze.exe $ write sys$output " " $ set verify $ squeeze COLOR.LPRO COLOR.PRO $ squeeze FINCLUDE.LPRO FINCLUDE.PRO $ squeeze TEX.LPRO TEX.PRO $ squeeze TEXC.LPRO TEXC.PRO $ squeeze TEXPS.LPRO TEXPS.PRO $ squeeze SPECIAL.LPRO SPECIAL.PRO $ squeeze CROP.LPRO CROP.PRO $ squeeze HPS.LPRO HPS.PRO $ verify = 'f$verify(0) $ write sys$output " " $ copy_prologue: $ FIRSTPATH = PLACEHEADER_DIR $ inquire/nop ANSWER - "Do you wish to copy the prologue files to ''FIRSTPATH' [yes]? " $ if ANSWER .eqs. "" then ANSWER = 1 $ if .not. ANSWER then goto copy_config $ write sys$output " " $ set verify $ copy COLOR.PRO 'FIRSTPATH'COLOR.PRO $ copy FINCLUDE.PRO 'FIRSTPATH'FINCLUDE.PRO $ copy TEX.PRO 'FIRSTPATH'TEX.PRO $ copy TEXC.PRO 'FIRSTPATH'TEXC.PRO $ copy TEXPS.PRO 'FIRSTPATH'TEXPS.PRO $ copy SPECIAL.PRO 'FIRSTPATH'SPECIAL.PRO $ copy HPS.PRO 'FIRSTPATH'HPS.PRO $ copy CROP.PRO 'FIRSTPATH'CROP.PRO $ set protection=(s:rwed,o:rwed,g:re,w:re) 'FIRSTPATH'COLOR.PRO $ set protection=(s:rwed,o:rwed,g:re,w:re) 'FIRSTPATH'FINCLUDE.PRO $ set protection=(s:rwed,o:rwed,g:re,w:re) 'FIRSTPATH'TEX.PRO $ set protection=(s:rwed,o:rwed,g:re,w:re) 'FIRSTPATH'TEXC.PRO $ set protection=(s:rwed,o:rwed,g:re,w:re) 'FIRSTPATH'SPECIAL.PRO $ set protection=(s:rwed,o:rwed,g:re,w:re) 'FIRSTPATH'TEXPS.PRO $ set protection=(s:rwed,o:rwed,g:re,w:re) 'FIRSTPATH'HPS.PRO $ set protection=(s:rwed,o:rwed,g:re,w:re) 'FIRSTPATH'CROP.PRO $ verify = 'f$verify(0) $ write sys$output " " $ copy_config: $ FIRSTPATH = PLACEHEADER_DIR $ inquire/nop ANSWER - "Do you wish to copy the CONFIG.PS file to ''FIRSTPATH' [yes]? " $ if ANSWER .eqs. "" then ANSWER = 1 $ if .not. ANSWER then goto copy_image $ write sys$output " " $ set verify $ copy CONFIG.PS 'FIRSTPATH'CONFIG.PS $ set protection=(s:rwed,o:rwed,g:re,w:re) 'FIRSTPATH'CONFIG.PS $ verify = 'f$verify(0) $ write sys$output " " $ copy_image: $ inquire/nop ANSWER "Do you wish to copy DVIPS.EXE to the TeX area [yes]? " $ if ANSWER .eqs. "" then ANSWER = 1 $ if .not. ANSWER then goto done $ inquire/nop ANSWER "TeX image area [''TEXEXEPATH']? " $ if ANSWER .nes. "" THEN TEXEXEPATH = ANSWER $ write sys$output " " $ set verify $ copy dvips.exe 'TEXEXEPATH' $ set protect=(s:rwed,o:rwed,g:re,w:re) 'TEXEXEPATH'dvips.exe $ verify = 'f$verify(0) $ write sys$output " " $ done: $ write sys$output " " $ write sys$output "Be sure to add dvips to your CLI by using the SET " $ write sys$output "COMMAND syntax and do the other steps which are" $ write sys$output "necessary to finish up the installation of dvips." $ write sys$output " " $ goto good_exit $ bad_exit: $ write sys$output " " $ write sys$output "Something's wrong here. You might want to take a look" $ write sys$output "at the offending code or command and start over." $ write sys$output " " $ exit $ good_exit: $ write sys$output "Done." $ write sys$output " " $ exit $! --------------------- EOF ------------------------------------- dvipsk_TexLive-2009-stripped/vms/vms_gcc.txt0000644000175000017500000000735711372532227021101 0ustar uwabamiuwabami DVIPS & GNU C Changes that had to be made in order to compile the DVIPS program with the GNU CC (GCC) compiler on Vax/VMS. (1) DVIPS.C (a) Problem with 'include' files. The person who did the original port to VMS used the : #include filename notation rather than the more traditional #include "filename.h" notation. With the VAX C compiler this means that the chosen header file is extracted from the SYS$SHARE:VAXCDEF.TLB text library. Well, the GCC compiler doesn't understand this notation. Now, I could've simply changed it so that if the code was being compiled on a VMS machine then use the #include "filename.h" notation regardless of the compiler. But some sites may not have extracted the header files from the text library when the VAX C compiler was installed. This problem also affects the VMSCLI.C file on the [.VMS] directory. (b) The TFMPATH, PKPATH, etc.., definitions cannot be defined in the MAKEFILE because the GCC.EXE program complains with the following error message... % gcc-cpp command too long. Unable to compile. After removing some of the path definitions to shorten the command (just too see roughly how big the buffer was) I eventually tricked the GCC.EXE program into getting as far as executing the GNU_CC:[000000]GCC.COM command file but it then complained, giving the following message... %DCL-W-TKNOVF, command element is too long - shorten So, I gave up and took the easy way out, i.e. put these PATH definitions back in to a new GCC-specific PATHS.H, called VMS_GCC_PATHS.H (2) DOSPECIAL.C The "tolower" macro, defined in GNU_CC:[INCLUDE]CTYPE.H, is too simple. It doesn't check to see if the character is in the range 'A' to 'Z' therefore we may as well use the "Tolower" function supplied in the DOSPECIAL.C file. (3) The MAKEFILE has been updated to handle the GCC compiler. It must be edited by the user to select either the VAX11C or the GCC compiler. Search for the strings VAXC or GNUC and comment out the appropriate lines. (4) VMS.H The "getchar" macro is undefined if it already exists. This is just to stop the warning message from the GCC compiler informing us that it is being redefined. GNUC defines it in GNU_CC:[INCLUDE]STDIO.H (5) VAXVMS.C Defined all the functions at the top of the file to keep the GCC compiler quiet, since it reported the following problems... vaxvms.c;1: In function vms_ftell: vaxvms.c;1:223: warning: `vms_ftell' was previously implicitly declared to return `int' vaxvms.c;1: In function vms_ungetc: vaxvms.c;1:296: warning: `vms_ungetc' was previously implicitly declared to return `int' vaxvms.c;1: In function vms_getenv: Next, if using the GNU CC compiler then #include so that the compiler knows all about the `strchr' and `getenv' functions, hence avoiding the following warnings... vaxvms.c;1:331: warning: assignment of pointer from integer lacks a cast vaxvms.c;1:333: warning: assignment of pointer from integer lacks a cast vaxvms.c;1:336: warning: assignment of pointer from integer lacks a cast vaxvms.c;1:340: warning: assignment of pointer from integer lacks a cast ------------------------------------------------------------------------------- These changes were tested with GCC 1.42 which is the current official release of VMS GCC, available from any of the many GNU archive sites. These changes were also tested with GCC 2.3.3 which is avaliable from MANGO.RSMAS.MIAMI.EDU (pub/VMS-gcc). The problem to be aware of is that GNUC doesn't have a CLIMSGDEF.H header file (needed for DVIPS.C). One way out it to create one by hand from the output from ... $ LIBRARY/MACRO/EXTRACT=$CLIMSGDEF/OUTPUT=SYS$OUTPUT SYS$LIBRARY:STARLET.MLB The other solution is to use the more complete package of C header files provided by Pat Rankin, also available at MANGO.RSMAS.MIAMI.EDU dvipsk_TexLive-2009-stripped/vms/vaxvms.c0000644000175000017500000003360211372532227020377 0ustar uwabamiuwabami/*********************************************************************** This file provides alternative functions for several VMS VMS C library routines which either unacceptable, or incorrect, implementations. They have been developed and tested under VMS Version 4.4, but indications are that they apply to earlier versions, back to 3.2 at least. They should be retested with each new release of VMS C. Contents: EXIT FSEEK FTELL GETCHAR GETENV READ UNGETC getlogin qsort system tell unlink The VAX VMS file system record structure has unfortunate consequences for random access files. By default, text files written by most system utilities, and languages other than C, have a variable length record format, in which a 16-bit character count is aligned on an even-byte boundary in the disk block b(always 512 bytes in VMS, independent of record and file formats), followed by bytes of data. Binary files, such as .EXE, .OBJ, and TeX .DVI and font files, all use a 512-byte fixed record format which has no explicit length field. No file byte count is stored; instead, the block count, and the offset of the last data byte in the last block are recorded in the file header (do ``DUMP/HEADER filespec'' to see it). For binary files with fixed-length records, the last block is normally assumed to be full, and consequently, file transfer of binary data from other machines via Kermit, FTP, or DCL COPY from ANSI tapes, generally fails because the input file length is not a multiple of 512. This record organization may be contrasted with the STREAM, STREAM_LF, and STREAM_CR organizations supported from Version 4.0; in these, disk blocks contain a continuous byte stream in which nothing, or LF, or CR, is recognized as a record terminator. These formats are similar to the Unix and TOPS-20 file system formats which also use continuous byte streams. For C, this means that a program operating on a file in record format cannot count input characters and expect that count to be the same value as the offset parameter passed to fseek(), which numerous C programs assume to be the case. The draft ANSI C standard, and Harbison and Steele's ``C Reference Manual'', emphasize that only values returned by ftell() should be used as arguments to fseek(), allowing the program to return to a position previously read or written. UNFORTUNATELY, VMS C ftell() DOES NOT RETURN A CORRECT OFFSET VALUE FOR RECORD FILES. Instead, for record files, it returns the byte offset of the start of the current record, no matter where in that record the current position may be. This misbehavior is completely unnecessary, since the replacements below perform correctly, and are written entirely in C. Another problem is that ungetc(char c, FILE* fp) is unreliable. VMS C implements characters as signed 8-bit integers (so do many other C implementations). fgetc(FILE* fp) returns an int, not a char, whose value is EOF (-1) in the event of end-of-file; however, this value will also be returned for a character 0xFF, so it is essential to use feof(FILE *fp) to test for a true end-of-file condition when EOF is returned. ungetc() checks the sign of its argument c, and if it is negative (which it will be for 128 of the 256 signed bytes), REFUSES TO PUT IT BACK IN THE INPUT STREAM, on the assumption that c is really EOF. This too can be fixed; ungetc() should only do nothing if feof() indicates a true end-of-file condition. The overhead of this is trivial, since feof() is actually implemented as a macro which does nothing more than a logical AND and compare-with-zero. getchar() waits for a to be typed when stdin is a terminal; the replacement vms_getchar() remedies this. Undoubtedly other deficiencies in VMS C will reveal themselves. VMS read() returns only a single disk block on each call. Its replacment, vms_read(), will return the requested number of bytes, if possible. There are also a few Unix standard functions which are unimplemented. qsort() is not provided. getlogin() and unlink() have VMS equivalents provided below. tell() is considered obsolete, since its functionality is available from lseek(), but it is still seen in a few programs, so is provided below. getenv() fails if the name contains a colon; its replacement allows the colon. In the interest of minimal source perturbation, replacements for VMS functions are given the same names, but prefixed "vms_". For readability, the original names are preserved, but are converted to upper-case: #define FTELL vms_ftell #define FSEEK vms_fseek #define GETCHAR vms_getchar #define GETENV vms_getenv #define UNGETC vms_ungetc These are only defined to work correctly for fixed length 512-byte records, and no check is made that the file has that organization (it is possible, but not without expensive calls to fstat(), or access to internal library structures). [02-Apr-87] -- Nelson H.F. Beebe, University of Utah Center for Scientific Computing ***********************************************************************/ #define EXIT vms_exit #define FTELL vms_ftell #define FSEEK vms_fseek #define GETENV vms_getenv #define GETCHAR vms_getchar #define READ vms_read #define UNGETC vms_ungetc #include #include #include #include #include #include /* need for vms_getchar() */ #include #ifdef __GNUC__ #include #endif void EXIT(int code); long FTELL(FILE *fp); long FSEEK(FILE *fp, long n, long dir); long UNGETC(char c, FILE *fp); int GETCHAR(void); int READ(int file_desc, char *buffer, int nbytes); char *GETENV(char *name); char *getlogin(void); long tell(int handle); int unlink(char *filename); /**********************************************************************/ /*-->EXIT*/ void vms_exit(int code) { switch (code) { case 0: exit(1); /* success */ break; default: exit(2); /* error */ break; } } /**********************************************************************/ /*-->FSEEK*/ /* VMS fseek() and ftell() on fixed-length record files work correctly only at block boundaries. This replacement code patches in the offset within the block. Directions from current position and from end-of-file are converted to absolute positions, and then the code for that case is invoked. */ long FSEEK(FILE *fp, long n, long dir) { long k,m,pos,val,oldpos; struct stat buffer; for (;;) /* loops only once or twice */ { switch (dir) { case 0: /* from BOF */ oldpos = FTELL(fp); /* get current byte offset in file */ k = n & 511; /* offset in 512-byte block */ m = n >> 9; /* relative block number in file */ if (((*fp)->_cnt) && ((oldpos >> 9) == m)) /* still in same block */ { val = 0; /* success */ (*fp)->_ptr = ((*fp)->_base) + k; /* reset pointers to requested byte */ (*fp)->_cnt = 512 - k; } else { val = fseek(fp,m << 9,0); /* move to start of requested 512-byte block */ if (val == 0) /* success */ { (*fp)->_cnt = 0; /* indicate empty buffer */ (void)fgetc(fp); /* force refill of buffer */ (*fp)->_ptr = ((*fp)->_base) + k; /* reset pointers to requested byte */ (*fp)->_cnt = 512 - k; } } return(val); case 1: /* from current pos */ pos = FTELL(fp); if (pos == EOF) /* then error */ return (EOF); n += pos; dir = 0; break; /* go do case 0 */ case 2: /* from EOF */ val = fstat(fileno(fp),&buffer); if (val == EOF) /* then error */ return (EOF); n += buffer.st_size - 1; /* convert filesize to offset and */ /* add to requested offset */ dir = 0; break; /* go do case 0 */ default: /* illegal direction parameter */ return (EOF); } } } /**********************************************************************/ /*-->FTELL*/ /* With fixed-length record files, ftell() returns the offset of the start of block. To get the true position, this must be biased by the offset within the block. */ long FTELL(FILE *fp) { char c; long pos; long val; if ((*fp)->_cnt == 0) /* buffer empty--force refill */ { c = fgetc(fp); val = UNGETC(c,fp); if (val != c) return (EOF); /* should never happen */ } pos = ftell(fp); /* this returns multiple of 512 (start of block) */ if (pos >= 0) /* then success--patch in offset in block */ pos += ((*fp)->_ptr) - ((*fp)->_base); return (pos); } /**********************************************************************/ /*-->GETCHAR*/ static int tt_channel = -1; /* terminal channel for image QIO's */ #define FAILED(status) (~(status) & 1) /* failure if LSB is 0 */ int GETCHAR() { int ret_char; /* character returned */ int status; /* system service status */ static $DESCRIPTOR(sys_in,"TT:"); if (tt_channel == -1) /* then first call--assign channel */ { status = sys$assign(&sys_in,&tt_channel,0,0); if (FAILED(status)) lib$stop(status); } ret_char = 0; status = sys$qiow(0,tt_channel,IO$_TTYREADALL | IO$M_NOECHO,0,0,0, &ret_char,1,0,0,0,0); if (FAILED(status)) lib$stop(status); return (ret_char); } /**********************************************************************/ /*-->READ*/ int READ(register int file_desc,register char *buffer,register int nbytes) { register int ngot; register int left; for ((left = nbytes, ngot = 0); left > 0; /* NOOP */) { ngot = read(file_desc,buffer,left); if (ngot < 0) return (-1); /* error occurred */ buffer += ngot; left -= ngot; } return(nbytes-left); } /**********************************************************************/ /*-->UNGETC*/ long UNGETC(char c, FILE *fp) /* VMS ungetc() is a no-op if c < 0 */ { /* (which is half the time!) */ if ((c == EOF) && feof(fp)) return (EOF); /* do nothing at true end-of-file */ else if ((*fp)->_cnt >= 512)/* buffer full--no fgetc() done in this block!*/ return (EOF); /* must be user error if this happens */ else /* put the character back in the buffer */ { (*fp)->_cnt++; /* increase count of characters left */ (*fp)->_ptr--; /* backup pointer to next available char */ *((*fp)->_ptr) = c; /* save the character */ return (c); /* and return it */ } } /**********************************************************************/ /*-->getenv*/ char* GETENV(char *name) { char* p; char* result; char ucname[256]; p = ucname; while (*name) /* VMS logical names must be upper-case */ { *p++ = islower(*name) ? toupper(*name) : *name; ++name; } *p = '\0'; p = strchr(ucname,':'); /* colon in name? */ if (p == (char *)NULL) /* no colon in name */ result = getenv(ucname); else /* try with and without colon */ { result = getenv(ucname); if (result == (char *)NULL) { *p = '\0'; result = getenv(ucname); *p = ':'; } } return (result); } /**********************************************************************/ /*-->getlogin*/ char* getlogin() { return ((char *)getenv("USER")); /* use equivalent VMS routine */ } /**********************************************************************/ /*-->qsort*/ /*********************************************************************** TeXindex uses the standard Unix library function qsort() for record sorting. Unfortunately, qsort() is not a stable sorting algorithm, so input order is not necessarily preserved for equal sort keys. This is important, because the sorting is case-independent, while the actual entries may not be. For example, the input \entry{i}{22}{{\CODE{i}}} \entry{i}{42}{{\CODE{i}}} \entry{I}{41}{{\CODE{I}}} \entry{I}{42}{{\CODE{I}}} produces \initial {I} \entry {{\CODE{i}}}{22} \entry {{\CODE{I}}}{41--42} \entry {{\CODE{i}}}{42} instead of the correct \initial {I} \entry {{\CODE{i}}}{22, 42} \entry {{\CODE{I}}}{41--42} We therefore provide this stable shellsort replacement for qsort() based on the code given on p. 116 of Kernighan and Ritchie, ``The C Programming Language'', Prentice-Hall (1978). This has order N**1.5 average performance, which is usually slower than qsort(). In the interests of simplicity, we make no attempt to handle short sequences by alternative methods. [07-Nov-86] ***********************************************************************/ #if VMS_QSORT #define BASE(i) &base[(i)*width] void qsort(base, nel, width, compar) char base[]; /* start of data in memory */ int nel; /* number of elements to be sorted */ int width; /* size (in bytes) of each element */ int (*compar)(); /* comparison function */ { int gap; int i; int j; register int k; /* inner exchange loop parameters */ register char* p; register char* q; register char c; for (gap = nel/2; gap > 0; gap /= 2) { for (i = gap; i < nel; i++) { for (j = i-gap; j >= 0; j -= gap) { p = BASE(j); q = BASE(j+gap); if ((*compar)(p,q) <= 0) break; /* exit j loop */ else { for (k = 0; k < width; (++p, ++q, ++k)) { c = *q; *q = *p; *p = c; } } } } } } #endif /********************************************************************** *-->system* int system(char *s) { struct dsc$descriptor t; t.dsc$w_length = strlen(s); t.dsc$a_pointer = s; t.dsc$b_class = DSC$K_CLASS_S; t.dsc$b_dtype = DSC$K_DTYPE_T; return (LIB$SPAWN(&t) == SS$_NORMAL) ? 0 : 127; } **********************************************************************/ /*-->tell*/ long tell(int handle) { return (lseek(handle,0L,1)); } /**********************************************************************/ /*-->unlink*/ int unlink(char *filename) { return (delete(filename)); /* use equivalent VMS routine */ } dvipsk_TexLive-2009-stripped/vms/dvips.rnh0000644000175000017500000003752511372532227020555 0ustar uwabamiuwabami.RM 68 .NO NUMBER .NO PAGING .STHL 5,1,1 .lm 0 1 DVIPS .lm 2 The dvips program converts a TEX dvi file into a PostScript file for printing or distribution. Seldom has such a seemingly easy programming task required so much effort. The dvips program has a number of features that set it apart from other PostScript drivers for TEX. The dvips driver generates excellent, standard PostScript, that can be included in other documents as figures or printed through a variety of spoolers. The generated PostScript requires very little printer memory, so very complex documents with a lot of fonts can easily be printed even on PostScript printers without much memory, such as the original Apple LaserWriter. The PostScript output is also compact, requiring less disk space to store and making it feasible as a transfer format. .skip 1 Missing fonts can be automatically generated if METAFONT exists on the system, or fonts can be converted from gf to pk format on demand. If a font cannot be generated, a scaled version of the same font at a different size can be used instead, although dvips will complain loudly about the poor aesthetics of the resulting output. .skip 1 .literal usage: DVIPS filename[.dvi] .end literal .skip 1 .lm 0 2 Parameters .s .lm 2 Filename .s Specifies the name of the .DVI file that is to be processed. .lm 0 2 Command__Qualifiers .skip 1 /COPIES .lm 6 .skip 1 /COPIES=num .lm 2 .skip 1 Generate num copies of every page. Default is 1. (For collated copies, see the /COLLATE option.) .skip 1 .lm 0 /DEBUG .skip 1 .lm 6 /DEBUG=num .lm 2 .skip 1 Set the debug flags. This is intended only for emergencies or for unusual fact-finding expeditions; it will work only if dvips has been compiled with the DEBUG option. Use .skip 1 .literal num=1 for special num=2 for paths num=4 for fonts num=8 for pages num=16 for headers num=32 for font compression num=64 for files num=128 for memory allocation .end literal .skip 1 Use a value of -1 for maximum output. .skip 1 .lm 0 /MAXDRIFT .skip 1 .lm 6 /MAXDRIFT=num .lm 2 .skip 1 Make sure that each character is placed at most this many pixels from its `true' resolution-independent position on the page. The default value of this parameter is resolution dependent (it is the number of entries in the list [100, 200, 300, 400, 500, 600, 800, 1000, 1200, 1600, 2000, 2400, 2800, 3200, : : :] that are less than or equal to the resolution in dots per inch). Allowing individual characters to `drift' from their correctly rounded positions by a few pixels, while regaining the true position at the beginning of each new word, improves the spacing of letters in words. .skip 1 .lm 0 /FILTER .skip 1 .lm 2 Run as a filter. Read the dvi file from standard input and write the PostScript to standard output. The standard input must be seekable, so it cannot be a pipe. If you must use a pipe, write a shell script that copies the pipe output to a temporary file and then points dvips at this file. i-h name: Prepend file name as an additional header file. (However, if the name is simply `- ', suppress all header files from the output.) This header file gets added to the PostScript userdict. .skip 1 .lm 0 /LAST .skip 1 .lm 6 /LAST=num .lm 2 .skip 1 The last page printed will be the first one numbered num. Default is the last page in the document. .skip 1 If the /ABSOLUTE qualifier has been used then it (and any argument to the /START qualifier) is treated as a sequence number, rather than a value to compare with \count0 values. Thus, using /LAST=9/ABSOLUTE will end with the ninth page of the document, no matter what the pages are actually numbered. .skip 1 .lm 0 /MANUAL .skip 1 .lm 2 Specify manual feed for printer. .skip 1 .lm 0 /NUMBER .skip 1 .lm 6 /NUMBER=num .lm 2 .skip 1 At most num pages will be printed. Default is 100000. .skip 1 .lm 0 /OUTPUT .skip 1 .lm 6 /OUTPUT=filename.ext .lm 2 .skip 1 The output will be sent to file name. If no file name is given, the default name is file.ps where the dvi file was called file.dvi . .skip 1 .lm 0 /START .skip 1 .lm 6 /START=num .lm 2 .skip 1 The first page printed will be the first one numbered num. Default is the first page in the document. .skip 1 If the /ABSOLUTE qualifier has been used then it (and any argument to the /LAST qualifier) is treated as a sequence number, rather than a value to compare with \count0 values. Thus, using /START=3/ABSOLUTE will start with the third page of the document, no matter what the pages are actually numbered. .skip 1 .lm 0 /QUIET .skip 1 .lm 2 Run in quiet mode. Don't chatter about pages converted, etc.; report nothing but errors to standard error. .skip 1 .lm 0 /REVERSE .skip 1 .lm 2 Stack pages in reverse order. Normally, page 1 will be printed first. .skip 1 .lm 0 /SAV__RES .skip 1 .lm 2 Causes the entire global output to be enclosed in a save/restore pair. This causes the file to not be truly conformant, and is thus not recommended, but is useful if you are driving the printer directly and don't care too much about the portability of the output. .skip 1 .lm 0 /MODE .skip 1 .lm 6 /MODE=modename .lm 2 .skip 1 This sets the paper mode to modename. Currently, the only modes allowable are .skip 1 .literal "letter", which selects an 8.5 by 11 inch page, "a3", which selects an a3 sized page, "a4" , which selects an a4 sized page, "legal", which selects an 8.5 by 14 inch page, "ledger", which selects an 11 by 17 inch page, and "landscape", which rotates a letter size document by 90 degrees. .end literal .skip 1 WARNING: always include paper format between quotation marks! .skip 1 The default mode is "letter". The upper left corner of each page in the dvi file is placed one inch from the left and one inch from the top. .skip 1 If you want to specify a paper format (e.g. a4) AND landscape mode, you must use something like .literal /MODE=("landscape","a4") .end literal putting "landscape" as the first value. .skip 1 .lm 0 /MAGNIFICATION .skip 1 .lm 6 /MAGNIFICATION=num .lm 2 .skip 1 Set the magnification ratio to num/1000. Overrides the magnification specified in the dvi file. Must be between 10 and 100000. .skip 1 .lm 0 /COLLATE .skip 1 .lm 6 /COLLATE=num .lm 2 .skip 1 Create num copies, but collated (by replicating the data in the PostScript file). Slower than the /COPIES option, but easier on the hands, and faster than resubmitting the same PostScript file multiple times. .skip 1 .lm 0 /DPI .skip 1 .lm 6 /DPI=num .lm 2 .skip 1 Set the resolution in dpi (dots per inch) to num. This affects the choice of bitmap fonts that are loaded and also the positioning of letters in resident PostScript fonts. Must be between 10 and 10000. This affects both the horizontal and vertical resolution. If a high resolution (something greater than 400 dpi, say) is selected, the /COMPRESS flag should probably also be used. .skip 1 .lm 0 /CTRL__D .skip 1 .lm 2 Causes Control-D (ASCII code 4) to be appended as the very last character of the PostScript file. This is useful when dvips is driving the printer directly instead of working through a spooler, as is common on extremely small systems. Otherwise, it is not recommended. .skip 1 .lm 0 /INC__COM .skip 1 .lm 6 /INC__COM (default) .break /NOINC__COM .lm 2 .skip 1 /NOINC__COM option causes comments in included PostScript graphics, font files, and headers to be removed. This is sometimes necessary to get around bugs in spoolers or PostScript post-processing programs. Specifically, the %%Page comments, when left in, often cause difficulties. Use of this flag can cause some included graphics to fail, since the PostScript header macros from some software packages read portions of the input stream line by line, searching for a particular comment. .skip 1 .lm 0 /COMMENT .skip 1 .lm 6 /COMMENT (default) .break /NOCOMMENT .lm 2 .skip 1 /NOCOMMENT turns off structured comments; this might be necessary on some systems that try to interpret PostScript comments in weird ways, or on some PostScript printers. Old versions of Transcript in particular cannot handle modern Encapsulated PostScript. .skip 1 .lm 0 /PRINTER .skip 1 .lm 6 /PRINTER=printername .lm 2 .skip 1 Sets up the output for the appropriate printer. This is implemented by reading in config.printername , which can set various parameters such as the font paths and any other defaults for that printer only. It is recommended that all standard defaults go in the one master config.ps file and only things that vary printer to printer go in the config.printername files. Note that config.ps is read before config.printername. In addition, another file called "/.dvipsrc is searched for immediately after config.ps; this file is intended for user defaults. If no /PRINTER command is given, the environment variable PRINTER is checked. If that variable exists, and a corresponding configuration file exists, that configuration file is read in. .skip 1 .lm 0 /VM__SAVE .skip 1 .lm 6 /VM__SAVE (default) .break /NOVM__SAVE .lm 2 .skip 1 /NOVM__SAVE disables a PostScript virtual memory saving optimization that stores the character metric information in the same string that is used to store the bitmap information. This is only necessary when driving the Xerox 4045 PostScript interpreter, and it is caused by a bug in that interpreter that results in `garbage' on the bottom of each character. Not recommended unless you must drive this printer. .skip 1 .lm 0 /H__DPI .skip 1 .lm 6 /H__DPI=num .lm 2 .skip 1 Set the horizontal resolution in dots per inch to num. .skip 1 .lm 0 /V__DPI .skip 1 .lm 6 /V__DPI=num .lm 2 .skip 1 Set the vertical resolution in dots per inch to num. .skip 1 .lm 0 /COMPRESS .skip 1 .lm 2 Causes bitmapped fonts to be compressed before they are downloaded, thereby reducing the size of the PostScript font-downloading information. Especially useful at high resolutions or when very large fonts are used. Will slow down printing somewhat, especially on early 68000-based PostScript printers. .skip 1 .lm 0 .!----------------------------------------------------------------------- .! New stuff for version 5.497 .!----------------------------------------------------------------------- /HEADER .skip 1 .lm 6 /HEADER=file-spec .break /NOHEADER .lm 2 .skip 1 Prepend file "file-spec" as an additional header file. However, if the name is simply `-', suppress all header files from the output. Similarly, /NOHEADER suppress all header files from the output. This header file gets added to the PostScript userdict. (Corresponds to the -h option) .skip 1 .lm 0 /ABSOLUTE .lm 2 .skip 1 If the /ABSOLUTE qualifier has been used then any argument to the /START and/or /LAST qualifiers are treated as sequence numbers, rather than a value to compare with \count0 values. Thus, using /START=3/ABSOLUTE will start with the third page of the document, no matter what the pages are actually numbered. (Corresponds to the -p and -l options) .skip 1 .lm 0 /EPSF .lm 2 .skip 1 Makes `dvips' attempt to generate an EPSF file with a tight bounding box. This only works on one-page files, and it only looks at marks made by characters and rules, not by any included graphics. In addition, it gets the glyph metrics from the `tfm' file, so characters that lie outside their enclosing `tfm' box may confuse it. In addition, the bounding box might be a bit too loose if the character glyph has significant left or right side bearings. Nonetheless, this option works well for creating small EPSF files for equations or tables or the like. (Note, of course, that `dvips' output is resolution dependent and thus does not make very good EPSF files, especially if the images are to be scaled; use these EPSF files with a great deal of care.) (Corresponds to the -E option) .skip 1 .lm 0 /PRESCAN .lm 2 .skip 1 Conserve memory by making three passes over the `dvi' file instead of two and only loading those characters actually used. Generally only useful on machines with a very limited amount of memory, like some PCs. (Corresponds to the -a option) .skip 1 .lm 0 /PAGECOPIES .skip 1 .lm 6 /PAGECOPIES=num .lm 2 .skip 1 Generate `num' copies of each page, but duplicating the page body rather than using the `#numcopies' option. This can be useful in conjunction with a header file setting \bop-hook to do color separations or other neat tricks. (Corresponds to the -b option) .skip 1 .lm 0 /SEPARATE .skip 1 .lm 2 Make each section be a separate file. Under certain circumstances, `dvips' will split the document up into `sections' to be processed independently; this is most often done for memory reasons. Using this option tells `dvips' to place each section into a separate file; the new file names are created replacing the suffix of the supplied output file name by a three-digit sequence number. .break This option is most often used in conjunction with the /SEC_SIZE qualifier which sets the maximum section length in pages. For instance, some phototypesetters cannot print more than ten or so consecutive pages before running out of steam; these options can be used to automatically split a book into ten-page sections, each to its own file. (Corresponds to the -i option) .skip 1 .lm 0 /CROPMARKS .skip 1 .lm 2 Print crop marks. This option increases the paper size (which should be specified, either with a paper size special or with the /PSIZE qualifier) by a half inch in each dimension. It translates each page by a quarter inch and draws cross-style crop marks. It is mostly useful with typesetters that can set the page size automatically. (Corresponds to the -k option) .skip 1 .lm 0 /SEC_SIZE .skip 1 .lm 6 /SEC_SIZE=num .lm 2 .skip 1 Set the maximum number of pages in each `section'. This option is most commonly used with the /SEPARATE qualifier; see that documentation above for more information. (Corresponds to the -S option) .skip 1 .lm 0 /HELP .skip 1 .lm 2 Displays a summary of the comand line options for the DVIPS program, but it show the UNIX version. Not much use to the VMS people, maybe one day we can set it to read this help library through the LBR$ utility routines. (Corresponds to the -? option) .skip 1 .lm 0 /MAKEFONT .skip 1 .lm 6 /MAKEFONT (default) /NOMAKEFONT .lm 2 By default an attempt is made to make missing fonts. Use of /NOMAKEFONT turns off the automatic font generation facility. If any fonts are missing, commands to generate the fonts are appended to the file `missfont.log' in the current directory; this file can then be executed and deleted to create the missing fonts. .skip 1 .lm 0 /PSIZE .skip 1 .lm 6 /PSIZE="xsize,ysize" .lm 2 .skip 1 Set the paper size to the given pair of dimensions. This option takes its arguments in the same style as /POFFSET. It overrides any paper size special in the `dvi' file. .skip 1 Example : /PSIZE="6in,8in" .skip 1 .lm 0 /POFFSET .skip 1 .lm 6 /POFFSET="xoffset,yoffset" .lm 2 .skip 1 Move the origin by a certain amount. The `offset' is a comma-separated pair of dimensions, such as ".1in,-.3cm" (in the same syntax used in the /PSIZE qualifier). The origin of the page is shifted from the default position (of one inch down, one inch to the right from the upper left corner of the paper) by this amount. .skip 1 Example : /POFFSET=".1in,-.3cm" .skip 1 .!----------------------------------------------------------------------- .lm 0 2 Specials .skip 1 .lm 2 For a description of the special features of dvips see the dvips manual a LaTeX version of which may be copied using the command .skip 1 copy tex$postscript:dvips.tex dvips.tex dvipsk_TexLive-2009-stripped/vms/Makefile0000644000175000017500000002157611372532227020356 0ustar uwabamiuwabami# # Makefile for dvips. Edit this first part of the file. # # This version is for Vax/VMS running the Todd Aven MAKE program. # # First, the things that absolutely must be edited for your system. # Please, don't forget to edit MakeTeXPK in the same way! # where TeX is `rooted'. Sometimes /usr/local/lib/tex. # TEXDIR = /usr/lib/tex TEXDIR = /usr/lib/tex # another place pk, tfm, and vf files might be found. # LOCALDIR = /LocalLibrary/Fonts/TeXFonts LOCALDIR = /LocalLibrary/Fonts/TeXFonts # the default path to search for TFM files # (this usually is identical to TeX's defaultfontpath, which omits `.') # (private fonts are given an explicit directory, which overrides the path) # overridden by the environment variable TEXFONTS # TFMPATH = $(LOCALDIR)/tfm:$(TEXDIR)/fonts/tfm TFMPATH = ""TEX_FONTS:"" # TEX_FONTS is a searchlist. # the default path to search for PK files (usually omits `.') # Don't forget to add the directory that # MakeTeXPK puts the files! (In this case, /LocalLibrary/Fonts...) # overridden by the environment variable TEXPKS or TEXPACKED or PKFONTS # PKPATH = $(LOCALDIR)/pk:$(TEXDIR)/fonts/pk PKPATH = ""VC$3:[PHS595F.FONTS.%d]%f.PK,TEX_DISK:[TEX.FONTS.%d]%f.PK,"" # the default path to search for VF files (usually omits `.') # overridden by the environment variable VFFONTS # VFPATH = $(LOCALDIR)/vf:$(TEXDIR)/fonts/vf VFPATH = ""TEX_VF:"" # TEX_VF may be a searchlist. # additional directories in which to search for subdirectories to find # both tfm and pk files FONTSUBDIRPATH = """" # where the config files go # CONFIGDIR = $(TEXDIR)/ps CONFIGDIR = TEX$POSTSCRIPT: # The Physics Dept. DVIPS directory # the default path to search for config files # overridden by the environment variable TEXCONFIG # CONFIGPATH = .:$(CONFIGDIR) CONFIGPATH = "" ,SYS$LOGIN:,$(CONFIGDIR),"" # the name of your config file # CONFIGFILE = config.ps CONFIGFILE = config.ps # where the header PS files go # HEADERDIR = $(TEXDIR)/ps HEADERDIR = TEX$POSTSCRIPT: # The Physics Dept. DVIPS directory # the default path to search for header files # HEADERPATH = .:$(HEADERDIR) HEADERPATH = "" ,SYS$LOGIN:,$(HEADERDIR),"" # where epsf.tex and rotate.tex go (usually the TeX macros directory) # TEXMACRODIR = $(TEXDIR)/inputs TEXMACRODIR = TEX_INPUTS: # the default path to search for epsf and psfiles # (usually the same as TeX's defaultinputpath) # FIGPATH = .:..:$(TEXDIR)/inputs FIGPATH = "" ,TEX_INPUTS:,"" # Include blank so it looks on default dir. # the place man pages are located. # MANDIR = /usr/man/man1 MANDIR = TEX_INPUTS: # change -DDEFRES=300 or whatever is required # if the default resolution is not 300 dpi, # add -DDEBUG to turn on debugging capability # add -DTPIC for tpic support # add -DFONTLIB to search font libraries # add -DSEARCH_SUBDIRECTORIES to search the FONTSUBDIRPATH. # add -DHAVE_GETCWD if you have getcwd (relevant only for subdir searching) # add -DIBM6000 for compiling on IBM 6000 systems # add -DCREATIONDATE if your system has a working time() and you want dated files # (for VM/CMS, see the MKDVIPS.EXEC file in the vmcms subdirectory). # # If you define FONTLIB, make sure to also give definitions to # FLIPATH and FLINAME. # # DEFS= -DTPIC -DDEBUG -DDEFRES=400 DEFS= TPIC,DEBUG,DEFRES=300,HAVE_GETCWD,ANSI,CREATIONDATE # either use # OPT = -g -Wall -funsigned-char # or # OPT = -O -s -Wall -funsigned-char OPT = # libraries to include (-lm -lc on most systems) #FLIBS= -lNeXT_s -lsys_s FLIBS=,sys$disk:[.vms]vaxcrtl/opt # LIBS= # VAXC LIBS= ,gnu_cc:[000000]GCCLIB/LIB # GNUC # If you are compiling dvips for suid or other privileges, you will # definitely want to define the following symbol; else don't. # SECURE = -DSECURE SECURE = # If you want EMTEX specials, define the following. EMTEX =,EMTEX # for SYSV (and friends which use instead of ) # define the c-compiler flag # add -D_POSIX_SOURCE if you are POSIX (also define SYSV) (only relevant # for subdir searching) # SYS = -DSYSV SYS = # Define this to be whatever you use for installation. If you don't have # install, use a script that invokes copy and chmod's the files # appropriately. # INSTALL = install INSTALL = copy # where the installed binary goes # BINDIR = /usr/bin BINDIR = TEX$POSTSCRIPT: # The Physics Dept. DVIPS directory # Define the default paper format (Actually no longer used) DEFPFMT = # PATHS =\ # VAXC # ,TFMPATH="$(TFMPATH)",\ # PKPATH="$(PKPATH)",\ # VFPATH="$(VFPATH)",\ # HEADERPATH="$(HEADERPATH)",\ # CONFIGPATH="$(CONFIGPATH)",\ # CONFIGFILE="""$(CONFIGFILE)""",\ # FONTSUBDIRPATH="$(FONTSUBDIRPATH)",\ # FIGPATH="$(FIGPATH)" PATHS = # GNUC INC = /include="SYS$DISK:[],SYS$SHARE:" # CC = CC # VAXC CC = GCC/NoCase_Hack # GNUC CFLAGS = /NoList $(INC)- /Define=($(DEFS) $(OPT) $(SYS) $(SECURE) $(EMTEX) $(DEFPFMT)) CFLAGS2 = /NoList $(INC)- /Define=($(DEFS) $(OPT) $(SYS) $(SECURE) $(EMTEX) $(DEFPFMT) $(PATHS)) LFLAGS = /NoMap SRC = dospecial.c dviinput.c fontdef.c loadfont.c dvips.c tfmload.c \ download.c prescan.c scanpage.c skippage.c output.c scalewidth.c \ dosection.c dopage.c resident.c search.c unpack.c drawPS.c \ header.c makefont.c repack.c virtualfont.c dpicheck.c finclude.c \ pprescan.c papersiz.c flib.c color.c bbox.c emspecial.c OBJ = dospecial.obj, dviinput.obj, fontdef.obj, loadfont.obj, dvips.obj,\ tfmload.obj, download.obj, prescan.obj, scanpage.obj, skippage.obj,\ output.obj, scalewidth.obj, dosection.obj, dopage.obj, resident.obj,\ search.obj, unpack.obj, drawPS.obj, header.obj, makefont.obj,\ repack.obj, virtualfont.obj, dpicheck.obj, finclude.obj, \ pprescan.obj, papersiz.obj, flib.obj, color.obj, bbox.obj, \ emspecial.obj, vaxvms.obj all : afm2tfm.exe dvips.exe tex.pro texps.pro texc.pro special.pro \ finclude.pro color.pro crop.pro dvips.hlb dvips.exe : $(OBJ) Link /Exe=DviPS.exe $(LFLAGS) $(OBJ) $(LIBS) $(FLIBS) # dvips.obj : dvips.c vmscli.c # VAXC dvips.obj : dvips.c vmscli.c vms_gcc_paths.h # GNUC $(CC) $(CFLAGS2) dvips.c afm2tfm.exe : afm2tfm.obj Link $(LFLAGS) afm2tfm.obj $(LIBS) $(FLIBS) afm2tfm.obj : afm2tfm.c $(CC) $(CFLAGS) afm2tfm.c $(OBJ) : dvips.h debug.h vms.h flib.obj resident.obj dvips.obj loadfont.obj tfmload.obj : paths.h vaxvms.obj : [.vms]vaxvms.c ! $(CC) $(CFLAGS) [.vms]vaxvms.c /object=[]vaxvms.obj vmscli.c : [.vms]vmscli.c Copy /Log [.vms]vmscli.c [] vms.h : [.vms]vms.h Copy /Log [.vms]vms.h [] vms_gcc_paths.h : [.vms]vms_gcc_paths.h # GNUC Copy /Log [.vms]vms_gcc_paths.h [] # GNUC *.obj : *.c $(CC) $(CFLAGS) $< squeeze.exe : squeeze.obj Link $(LFLAGS) squeeze.obj $(LIBS) $(FLIBS) squeeze.obj : squeeze.c $(CC) $(CFLAGS) squeeze.c tex.pro : tex.lpro squeeze.exe MCR sys$disk:[]squeeze tex.lpro tex.pro texc.pro: texc.lpro squeeze.exe MCR sys$disk:[]squeeze texc.lpro texc.pro texc.lpro: tex.lpro @[.vms]texc_scr.com # tex.lpro texc.lpro texps.pro : texps.lpro squeeze.exe MCR sys$disk:[]squeeze texps.lpro texps.pro special.pro : special.lpro squeeze.exe MCR sys$disk:[]squeeze special.lpro special.pro finclude.pro : finclude.lpro squeeze.exe MCR sys$disk:[]squeeze finclude.lpro finclude.pro color.pro : color.lpro squeeze.exe MCR sys$disk:[]squeeze color.lpro color.pro crop.pro : crop.lpro squeeze.exe MCR sys$disk:[]squeeze crop.lpro crop.pro dvips.hlb : dvips.hlp Library/Create=Blocks:40/Help dvips.hlb dvips.hlp dvips.hlp : [.vms]dvips.rnh Runoff [.vms]dvips.rnh install : afm2tfm.exe dvips.exe dvips.hlb [.vms]MakeTeXPK.com \ tex.pro texc.pro texps.pro special.pro finclude.pro color.pro \ crop.pro config.ps psfonts.map epsf.tex epsf.sty rotate.tex \ rotate.sty colordvi.tex colordvi.sty blackdvi.tex blackdvi.sty # - mkdir $(BINDIR) # - mkdir $(HEADERDIR) # - mkdir $(CONFIGDIR) # - mkdir $(MANDIR) # - mkdir $(TEXMACRODIR) $(INSTALL) afm2tfm.exe $(BINDIR)afm2tfm.exe $(INSTALL) dvips.exe $(BINDIR)dvips.exe $(INSTALL) dvips.hlb $(BINDIR)dvips.hlb # $(INSTALL) [.VMS]MakeTeXPK.COM $(BINDIR)MakeTeXPK.COM $(INSTALL) tex.pro $(HEADERDIR) $(INSTALL) texc.pro $(HEADERDIR) $(INSTALL) texps.pro $(HEADERDIR) $(INSTALL) special.pro $(HEADERDIR) $(INSTALL) finclude.pro $(HEADERDIR) $(INSTALL) color.pro $(HEADERDIR) $(INSTALL) crop.pro $(HEADERDIR) $(INSTALL) config.ps $(CONFIGDIR)$(CONFIGFILE) $(INSTALL) psfonts.map $(CONFIGDIR) $(INSTALL) epsf.tex $(TEXMACRODIR) $(INSTALL) epsf.sty $(TEXMACRODIR) $(INSTALL) rotate.tex $(TEXMACRODIR) $(INSTALL) rotate.sty $(TEXMACRODIR) $(INSTALL) colordvi.sty $(TEXMACRODIR) $(INSTALL) colordvi.tex $(TEXMACRODIR) $(INSTALL) blackdvi.sty $(TEXMACRODIR) $(INSTALL) blackdvi.tex $(TEXMACRODIR) $(INSTALL) dvips.tex $(TEXMACRODIR) $(INSTALL) dvipsmac.tex $(TEXMACRODIR) $(INSTALL) dvips.1 $(MANDIR) $(INSTALL) afm2tfm.1 $(MANDIR) veryclean : Delete *.obj;*, dvips.exe;*, squeeze.exe;*, afm2tfm.exe;*,\ texc.lpro;*, *.pro;*, *.log;*, *.dvi;* clean : Delete *.obj;*, squeeze.exe;*, afm2tfm.exe;*, *.log;*, *.dvi;* # lint : # lint $(DEFS) $(PATHS) $(SRC) # lint $(DEFS) squeeze.c # lint $(DEFS) afm2tfm.c dvipsk_TexLive-2009-stripped/vms/vms.h0000644000175000017500000000112311372532227017656 0ustar uwabamiuwabami#ifdef VMS /* The replacement ftell and fseek functions in the vaxvms.c file dated * [02-Apr-87] do not work properly under OpenVMS 1.5 on DEC Alpha, when * compiled using DEC C 1.3. However, the DEC supplied ftell and fseek * functions work fine. They should also work for DEC C on a VAX. */ #ifndef __DECC #define ftell vms_ftell #define fseek vms_fseek #endif /* __DECC */ #define getchar vms_getchar #define getenv vms_getenv #define ungetc vms_ungetc #define getname vms_getname #define popen(pcmd, pmode) fopen(pcmd, pmode) #define pclose(pstream) fclose(pstream) #endif /* VMS */ dvipsk_TexLive-2009-stripped/vms/dvips.cld0000644000175000017500000000376211372532227020524 0ustar uwabamiuwabami! EJG 02-Jul-1996 ! Add secure qualifier ! Add oddpages qualifier ! Add evenpages qualifier ! Default mode is letter rather than A4 ! Add downloadPS (as PK) fonts qualifier ! Add hyperPS qualifier ! EJG 07-Jul-1996 ! change output qualifier to remove placement=positional define verb dvips image tex$postscript:dvips parameter p1, label=dvifile, prompt="DVI File", value(required,type=$infile) qualifier copies, default, value(default=1) qualifier debug default, value(required) qualifier maxdrift default, value(required) qualifier filter negatable qualifier last, default, value(required) qualifier manual, negatable qualifier number, default, value(required) qualifier output, nonnegatable, value(type=$file,required) !EJG 07-Jul-1996 qualifier start, default, value(required) qualifier quiet, negatable qualifier reverse, negatable qualifier sav_res, negatable qualifier mode, value(list,default="letter") ! EJG 02-Jul-1996 qualifier magnification,default, value(required) qualifier collate, default, value(default=1) qualifier dpi, default, value(default=300) qualifier ctrld, negatable qualifier inc_com, negatable qualifier comment, negatable qualifier vm_save, negatable qualifier h_dpi, default, value(required) qualifier v_dpi, default, value(required) qualifier compress, negatable qualifier printer, default, value(required) qualifier header, negatable, value(list,required) qualifier absolute qualifier epsf, negatable qualifier prescan, negatable qualifier pagecopies, default, value(default=1) qualifier separate, negatable qualifier cropmarks, negatable qualifier sec_size, default, value(required) qualifier help qualifier makefont, default, negatable qualifier psize, value(required) qualifier poffset, value(required) qualifier secure, negatable ! EJG 02-Jul-1996 qualifier oddpages, negatable ! EJG 02-Jul-1996 qualifier evenpages, negatable ! EJG 02-Jul-1996 qualifier downloadps, negatable ! EJG 02-Jul-1996 qualifier hyperps, negatable ! EJG 02-Jul-1996 dvipsk_TexLive-2009-stripped/c-auto.in0000644000175000017500000001065311372532227017623 0ustar uwabamiuwabami/* c-auto.in. Generated from configure.ac by autoheader. */ /* Define to 1 if the `closedir' function returns void instead of `int'. */ #undef CLOSEDIR_VOID /* Define to 1 if you have the header file. */ #undef HAVE_ASSERT_H /* Define to 1 if you have the `bcmp' function. */ #undef HAVE_BCMP /* Define to 1 if you have the `bcopy' function. */ #undef HAVE_BCOPY /* Define to 1 if you have the `bzero' function. */ #undef HAVE_BZERO /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_DIRENT_H /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the header file. */ #undef HAVE_FLOAT_H /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #undef HAVE_FSEEKO /* Define to 1 if you have the `getcwd' function. */ #undef HAVE_GETCWD /* Define to 1 if you have the `getwd' function. */ #undef HAVE_GETWD /* Define to 1 if you have the `index' function. */ #undef HAVE_INDEX /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H /* Define to 1 if you have the `memcmp' function. */ #undef HAVE_MEMCMP /* Define to 1 if you have the `memcpy' function. */ #undef HAVE_MEMCPY /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_NDIR_H /* Define to 1 if you are using GNU libc or otherwise have global variables `program_invocation_name' and `program_invocation_short_name'. */ #undef HAVE_PROGRAM_INVOCATION_NAME /* Define to 1 if you have the `putenv' function. */ #undef HAVE_PUTENV /* Define to 1 if you have the header file. */ #undef HAVE_PWD_H /* Define to 1 if you have the `rindex' function. */ #undef HAVE_RINDEX /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `strcasecmp' function. */ #undef HAVE_STRCASECMP /* Define to 1 if you have the `strchr' function. */ #undef HAVE_STRCHR /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strrchr' function. */ #undef HAVE_STRRCHR /* Define to 1 if you have the `strstr' function. */ #undef HAVE_STRSTR /* Define to 1 if you have the `strtol' function. */ #undef HAVE_STRTOL /* Define to 1 if `st_mtim' is member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_MTIM /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_SYS_DIR_H /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_SYS_NDIR_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the version of this package. */ #undef PACKAGE_VERSION /* The size of `int', as computed by sizeof. */ #undef SIZEOF_INT /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION /* Number of bits in a file offset, on hosts where this is settable. */ #undef _FILE_OFFSET_BITS /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ #undef _LARGEFILE_SOURCE /* Define for large files, on AIX-style hosts. */ #undef _LARGE_FILES /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus #undef inline #endif dvipsk_TexLive-2009-stripped/squeeze/0000755000175000017500000000000011372532227017557 5ustar uwabamiuwabamidvipsk_TexLive-2009-stripped/squeeze/configure0000755000175000017500000041704011372532227021474 0ustar uwabamiuwabami#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.63 for dvipsk squeeze 5.97. # # Report bugs to . # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh 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 else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH if test "x$CONFIG_SHELL" = x; then if (eval ":") 2>/dev/null; then as_have_required=yes else as_have_required=no fi if test $as_have_required = yes && (eval ": (as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=\$LINENO as_lineno_2=\$LINENO test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } ") 2> /dev/null; then : else as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. case $as_dir in /*) for as_base in sh bash ksh sh5; do as_candidate_shells="$as_candidate_shells $as_dir/$as_base" done;; esac done IFS=$as_save_IFS for as_shell in $as_candidate_shells $SHELL; do # Try only shells that exist, to save several forks. if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { ("$as_shell") 2> /dev/null <<\_ASEOF 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 else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : _ASEOF }; then CONFIG_SHELL=$as_shell as_have_required=yes if { "$as_shell" 2> /dev/null <<\_ASEOF 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 else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : (as_func_return () { (exit $1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = "$1" ); then : else exitcode=1 echo positional parameters were not saved. fi test $exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } _ASEOF }; then break fi fi done if test "x$CONFIG_SHELL" != x; then for as_var in BASH_ENV ENV do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done export CONFIG_SHELL exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} fi if test $as_have_required = no; then echo This script requires a shell more modern than all the echo shells that I found on your system. Please install a echo modern shell, or manually run the script under such a echo shell if you do have one. { (exit 1); exit 1; } fi fi fi (eval "as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0") || { echo No shell found that supports shell functions. echo Please tell bug-autoconf@gnu.org about your system, echo including any error possibly output before this message. echo This can help us improve future autoconf versions. echo Configuration will now proceed without shell functions. } as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='dvipsk squeeze' PACKAGE_TARNAME='dvipsk-squeeze' PACKAGE_VERSION='5.97' PACKAGE_STRING='dvipsk squeeze 5.97' PACKAGE_BUGREPORT='tex-k@tug.org' ac_unique_file="squeeze.c" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS WARNING_CFLAGS am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_maintainer_mode enable_dependency_tracking enable_compiler_warnings ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { $as_echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { $as_echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2 { (exit 1); exit 1; }; } ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || { $as_echo "$as_me: error: working directory cannot be determined" >&2 { (exit 1); exit 1; }; } test "X$ac_ls_di" = "X$ac_pwd_ls_di" || { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 { (exit 1); exit 1; }; } # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures dvipsk squeeze 5.97 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/dvipsk-squeeze] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of dvipsk squeeze 5.97:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-compiler-warnings=[no|min|yes|max] Turn on compiler warnings [default: yes if maintainer-mode, min otherwise] Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF dvipsk squeeze configure 5.97 generated by GNU Autoconf 2.63 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by dvipsk squeeze $as_me 5.97, which was generated by GNU Autoconf 2.63. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------------- ## ## File substitutions. ## ## ------------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then ac_site_file1=$CONFIG_SITE elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test -r "$ac_site_file"; then { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 $as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_aux_dir= for ac_dir in ../../../build-aux "$srcdir"/../../../build-aux; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in ../../../build-aux \"$srcdir\"/../../../build-aux" >&5 $as_echo "$as_me: error: cannot find install-sh or install.sh in ../../../build-aux \"$srcdir\"/../../../build-aux" >&2;} { (exit 1); exit 1; }; } fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. am__api_version='1.11' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) { { $as_echo "$as_me:$LINENO: error: unsafe absolute working directory name" >&5 $as_echo "$as_me: error: unsafe absolute working directory name" >&2;} { (exit 1); exit 1; }; };; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) { { $as_echo "$as_me:$LINENO: error: unsafe srcdir value: \`$srcdir'" >&5 $as_echo "$as_me: error: unsafe srcdir value: \`$srcdir'" >&2;} { (exit 1); exit 1; }; };; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 $as_echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftest.file ) then # Ok. : else { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 $as_echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test "${ac_cv_path_mkdir+set}" = set; then $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. test -d ./--version && rmdir ./--version MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AWK+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:$LINENO: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 $as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='dvipsk-squeeze' VERSION='5.97' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' { $as_echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi { $as_echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 $as_echo "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 $as_echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } # Provide some information about the compiler. $as_echo "$as_me:$LINENO: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { (ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi { $as_echo "$as_me:$LINENO: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } if test -z "$ac_file"; then $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 $as_echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; }; } fi ac_exeext=$ac_cv_exeext # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi fi fi { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } { $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } { $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi rm -f conftest$ac_cv_exeext { $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT { $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if test "${ac_cv_objext+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_c89=$ac_arg else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:$LINENO: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:$LINENO: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:$LINENO: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi # Check whether --enable-compiler-warnings was given. if test "${enable_compiler_warnings+set}" = set; then enableval=$enable_compiler_warnings; fi case $enable_compiler_warnings in no | min | yes | max) : ;; *) if test "x$enable_maintainer_mode" = xyes; then enable_compiler_warnings=yes else enable_compiler_warnings=min fi ;; esac { $as_echo "$as_me:$LINENO: checking what warning flags to pass to the C compiler" >&5 $as_echo_n "checking what warning flags to pass to the C compiler... " >&6; } if test "${kpse_cv_warning_cflags+set}" = set; then $as_echo_n "(cached) " >&6 else if test "x$enable_compiler_warnings" = xno; then kpse_cv_warning_cflags= elif test "x$GCC" = xyes; then kpse_cv_warning_cflags="-Wall -Wunused" case `$CC -dumpversion` in 3.4.* | 4.*) kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wdeclaration-after-statement" ;; esac case `$CC -dumpversion` in 3.[234].* | 4.*) kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wno-unknown-pragmas" ;; esac if test "x$enable_compiler_warnings" != xmin; then kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wmissing-prototypes -Wmissing-declarations" if test "x$enable_compiler_warnings" != xyes; then kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wimplicit -Wparentheses -Wreturn-type" kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wswitch -Wtrigraphs -Wshadow -Wpointer-arith" kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wcast-qual -Wcast-align -Wwrite-strings" case `$CC -dumpversion` in 3.4.* | 4.*) kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wold-style-definition" ;; esac fi fi else : # FIXME: warning flags for non-gcc compilers fi fi { $as_echo "$as_me:$LINENO: result: $kpse_cv_warning_cflags" >&5 $as_echo "$kpse_cv_warning_cflags" >&6; } WARNING_CFLAGS=$kpse_cv_warning_cflags ac_config_files="$ac_config_files Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then test "x$cache_file" != "x/dev/null" && { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\[/\\&/g s/\]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh 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 else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 # Save the log message, to keep $[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by dvipsk squeeze $as_me 5.97, which was generated by GNU Autoconf 2.63. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTION]... [FILE]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ dvipsk squeeze config.status 5.97 configured by $0, generated by GNU Autoconf 2.63, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2008 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac CONFIG_FILES="$CONFIG_FILES '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { $as_echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 $as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= trap 'exit_status=$? { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || { $as_echo "$as_me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=' ' ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\).*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\).*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 $as_echo "$as_me: error: could not setup config files machinery" >&2;} { (exit 1); exit 1; }; } _ACEOF # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/ s/:*\${srcdir}:*/:/ s/:*@srcdir@:*/:/ s/^\([^=]*=[ ]*\):*/\1/ s/:*$// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5 $as_echo "$as_me: error: invalid tag $ac_tag" >&2;} { (exit 1); exit 1; }; };; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 $as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} { (exit 1); exit 1; }; };; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac ac_file_inputs="$ac_file_inputs '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:$LINENO: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$tmp/stdin" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir="$ac_dir" case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p ' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&2;} rm -f "$tmp/stdin" case $ac_file in -) cat "$tmp/out" && rm -f "$tmp/out";; *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; esac \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } ;; :C) { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir=$dirpart/$fdir case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; esac done # for ac_tag { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 $as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi dvipsk_TexLive-2009-stripped/squeeze/configure.ac0000644000175000017500000000120411372532227022042 0ustar uwabamiuwabamidnl Process this file with autoconf to produce a configure script. dnl dnl Copyright (C) 2009 Peter Breitenlohner dnl dnl This file is free software; the copyright holder dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl AC_INIT([dvipsk squeeze], [5.97], [tex-k@tug.org]) AC_PREREQ([2.63]) AC_CONFIG_SRCDIR([squeeze.c]) AC_CONFIG_AUX_DIR([../../../build-aux]) AC_CONFIG_MACRO_DIR([../../../m4]) AM_INIT_AUTOMAKE([foreign dist-bzip2]) AM_MAINTAINER_MODE AC_PROG_CC KPSE_COMPILER_WARNINGS AC_CONFIG_FILES([Makefile]) AC_OUTPUT dvipsk_TexLive-2009-stripped/squeeze/aclocal.m40000644000175000017500000010706611372532227021431 0ustar uwabamiuwabami# generated automatically by aclocal 1.11 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. # This file 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. m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63],, [m4_warning([this file was generated for autoconf 2.63. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # # This file 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. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.11], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.11])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file 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. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 # Free Software Foundation, Inc. # # This file 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. # serial 9 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 # Free Software Foundation, Inc. # # This file 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. # serial 10 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], UPC, [depcc="$UPC" am_compiler_list=], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file 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. #serial 5 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2008, 2009 Free Software Foundation, Inc. # # This file 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. # serial 16 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.62])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl dnl The `parallel-tests' driver may need to know about EXEEXT, so add the dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl ]) dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc. # # This file 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. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. # # This file 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. # serial 2 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering # Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file 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. # serial 5 # AM_MAINTAINER_MODE([DEFAULT-MODE]) # ---------------------------------- # Control maintainer-specific portions of Makefiles. # Default is to disable them, unless `enable' is passed literally. # For symmetry, `disable' may be passed as well. Anyway, the user # can override the default with the --enable/--disable switch. AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]), [enable], [m4_define([am_maintainer_other], [disable])], [disable], [m4_define([am_maintainer_other], [enable])], [m4_define([am_maintainer_other], [enable]) m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles]) dnl maintainer-mode's default is 'disable' unless 'enable' is passed AC_ARG_ENABLE([maintainer-mode], [ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful (and sometimes confusing) to the casual installer], [USE_MAINTAINER_MODE=$enableval], [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST([MAINT])dnl ] ) AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. # # This file 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. # serial 4 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file 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. # serial 6 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # # This file 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. # AM_PROG_MKDIR_P # --------------- # Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. # # This file 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. # serial 4 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # ------------------------------ # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ---------------------------------- # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 # Free Software Foundation, Inc. # # This file 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. # serial 5 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file 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. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006, 2008 Free Software Foundation, Inc. # # This file 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. # serial 2 # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005 Free Software Foundation, Inc. # # This file 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. # serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. AM_MISSING_PROG([AMTAR], [tar]) m4_if([$1], [v7], [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([../../../m4/kpse-warnings.m4]) dvipsk_TexLive-2009-stripped/squeeze/Makefile.am0000644000175000017500000000062111372532227021612 0ustar uwabamiuwabami## Makefile.am for the TeX Live subdirectory texk/dvipsk/squeeze/ ## ## Copyright (C) 2009 Peter Breitenlohner ## You may freely use, modify and/or distribute this file. ## ACLOCAL_AMFLAGS = -I ../../../m4 AM_CFLAGS = $(WARNING_CFLAGS) noinst_PROGRAMS = squeeze nodist_noinst_DATA = stamp-squeeze stamp-squeeze: squeeze$(EXEEXT) echo timestamp >$@ CLEANFILES = stamp-squeeze dvipsk_TexLive-2009-stripped/squeeze/squeeze.c0000644000175000017500000000754311372532227021415 0ustar uwabamiuwabami/* $Id: squeeze.c 14277 2009-07-16 12:00:58Z peter $ * Copyright 1986-2008 Tomas Rokicki. * You may freely use, modify and/or distribute this program or any * portion thereof. * This routine squeezes a PostScript file down to its * minimum. We parse and then output it. */ #include #include #include #include #ifndef O_BINARY # ifdef _O_BINARY # define O_BINARY _O_BINARY # else # define O_BINARY 0 # endif #endif /* !O_BINARY */ #if O_BINARY # ifdef __CYGWIN__ # include # include # define SET_BINARY(fd) setmode((fd), O_BINARY) # else # define SET_BINARY(fd) _setmode((fd), O_BINARY) # endif #endif #define LINELENGTH (72) #define BUFLENGTH (1000) static char buf[BUFLENGTH] ; static FILE *in, *out ; static int linepos = 0 ; static int lastspecial = 1 ; /* * This next routine writes out a `special' character. In this case, * we simply put it out, since any special character terminates the * preceding token. */ static void specialout (char c) { if (linepos + 1 > LINELENGTH) { putchar('\n') ; linepos = 0 ; } putchar(c) ; linepos++ ; lastspecial = 1 ; } static void strout (char *s) { if (linepos + strlen(s) > LINELENGTH) { putchar('\n') ; linepos = 0 ; } linepos += strlen(s) ; while (*s != 0) putchar(*s++) ; lastspecial = 1 ; } static void cmdout (char *s) { int l ; l = strlen(s) ; if (linepos + l + 1 > LINELENGTH) { putchar('\n') ; linepos = 0 ; lastspecial = 1 ; } if (! lastspecial && *s != '/') { putchar(' ') ; linepos++ ; } while (*s != 0) { putchar(*s++) ; } linepos += l ; lastspecial = 0 ; } int main (int argc, char *argv[]) { int c ; char *b ; char seeking ; if (argc > 3 || (in=(argc < 2 ? stdin : fopen(argv[1], "r")))==NULL || (out=(argc < 3 ? stdout : fopen(argv[2], "w")))==NULL) { (void)fprintf(stderr, "Usage: squeeze [infile [outfile]]\n") ; exit(1) ; } /* Binary output is safer (for those systems which care to know the difference) since PostScript can include non-printable characters. */ #if O_BINARY if (!isatty(fileno(in))) SET_BINARY(fileno(in)) ; if (!isatty(fileno(out))) SET_BINARY(fileno(out)) ; #endif (void)fprintf(out, "%%!\n") ; while (1) { c = getc(in) ; if (c==EOF) break ; if (c=='%') { while ((c=getc(in))!='\n') ; } if (c <= ' ') continue ; switch (c) { case '{' : case '}' : case '[' : case ']' : specialout((char) c) ; break ; case '<' : case '(' : if (c=='(') seeking = ')' ; else seeking = '>' ; b = buf ; *b++ = c ; do { c = getc(in) ; if (b > buf + BUFLENGTH-2) { (void)fprintf(stderr, "Overran buffer seeking %c", seeking) ; exit(1) ; } *b++ = c ; if (c=='\\') *b++ = getc(in) ; } while (c != seeking) ; *b++ = 0 ; strout(buf) ; break ; default: b = buf ; while ((c>='A'&&c<='Z')||(c>='a'&&c<='z')|| (c>='0'&&c<='9')||(c=='/')||(c=='@')|| (c=='!')||(c=='"')||(c=='&')||(c=='*')||(c==':')|| (c==',')||(c==';')||(c=='?')||(c=='^')||(c=='~')|| (c=='-')||(c=='.')||(c=='#')||(c=='|')||(c=='_')|| (c=='=')||(c=='$')||(c=='+')) { *b++ = c ; c = getc(in) ; } if (b == buf) { (void)fprintf(stderr, "Oops! Missed a case: %c.\n", c) ; exit(1) ; } *b++ = 0 ; (void)ungetc(c, in) ; cmdout(buf) ; } } if (linepos != 0) putchar('\n') ; exit(0) ; /*NOTREACHED*/ } dvipsk_TexLive-2009-stripped/squeeze/Makefile.in0000644000175000017500000004321711372532227021633 0ustar uwabamiuwabami# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@ VPATH = @srcdir@ 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 = : noinst_PROGRAMS = squeeze$(EXEEXT) subdir = . DIST_COMMON = $(am__configure_deps) \ $(srcdir)/../../../build-aux/depcomp \ $(srcdir)/../../../build-aux/install-sh \ $(srcdir)/../../../build-aux/missing \ $(srcdir)/../../../build-aux/mkinstalldirs \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/configure ../../../build-aux/config.guess \ ../../../build-aux/config.sub ../../../build-aux/depcomp \ ../../../build-aux/install-sh ../../../build-aux/ltmain.sh \ ../../../build-aux/missing ../../../build-aux/mkinstalldirs \ ../../../build-aux/texinfo.tex ../../../build-aux/ylwrap ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../../../m4/kpse-warnings.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(SHELL) \ $(top_srcdir)/../../../build-aux/mkinstalldirs CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) squeeze_SOURCES = squeeze.c squeeze_OBJECTS = squeeze.$(OBJEXT) squeeze_LDADD = $(LDADD) DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/../../../build-aux/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = squeeze.c DIST_SOURCES = squeeze.c DATA = $(nodist_noinst_DATA) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ { test ! -d "$(distdir)" \ || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -fr "$(distdir)"; }; } DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EXEEXT = @EXEEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WARNING_CFLAGS = @WARNING_CFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ 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@ ACLOCAL_AMFLAGS = -I ../../../m4 AM_CFLAGS = $(WARNING_CFLAGS) nodist_noinst_DATA = stamp-squeeze CLEANFILES = stamp-squeeze all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj am--refresh: @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) squeeze$(EXEEXT): $(squeeze_OBJECTS) $(squeeze_DEPENDENCIES) @rm -f squeeze$(EXEEXT) $(LINK) $(squeeze_OBJECTS) $(squeeze_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/squeeze.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @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 -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @$(am__cd) '$(distuninstallcheck_dir)' \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(DATA) installdirs: 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: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) 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-generic clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \ clean-generic clean-noinstPROGRAMS ctags dist dist-all \ dist-bzip2 dist-gzip dist-lzma dist-shar dist-tarZ dist-xz \ dist-zip distcheck distclean distclean-compile \ distclean-generic distclean-tags distcleancheck distdir \ distuninstallcheck 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-generic mostlyclean \ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ tags uninstall uninstall-am stamp-squeeze: squeeze$(EXEEXT) echo timestamp >$@ # 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: dvipsk_TexLive-2009-stripped/dvips.help0000644000175000017500000000354111372532227020100 0ustar uwabamiuwabamiUsage: dvips [OPTION]... FILENAME[.dvi] Convert DVI input files to PostScript. See http://tug.org/dvips/ for the full manual and other information. Options: -a* Conserve memory, not time -A Print only odd (TeX) pages -b # Page copies, for posters e.g. -B Print only even (TeX) pages -c # Uncollated copies -C # Collated copies -d # Debugging -D # Resolution -e # Maxdrift value -E* Try to create EPSF -f* Run as filter -F* Send control-D at end -G* Shift low chars to higher pos. -h f Add header file -i* Separate file per section -j* Download fonts partially -k* Print crop marks -K* Pull comments from inclusions -l # Last page -m* Manual feed -M* Don't make fonts -mode s Metafont device name -n # Maximum number of pages -N* No structured comments -noomega Disable Omega extensions -o f Output file -O c Set/change paper offset -p # First page -P s Load config.$s -pp l Print only pages listed -q* Run quietly -r* Reverse order of pages -R* Run securely -s* Enclose output in save/restore -S # Max section size in pages -t s Paper format -T c Specify desired page size -u s PS mapfile -U* Disable string param trick -v Print version number and quit -V* Send downloadable PS fonts as PK -x # Override dvi magnification -X # Horizontal resolution -y # Multiply by dvi magnification -Y # Vertical resolution -z* Hyper PS -Z* Compress bitmap fonts # = number f = file s = string * = suffix, `0' to turn off c = comma-separated dimension pair (e.g., 3.2in,-32.1cm) l = comma-separated list of page ranges (e.g., 1-4,7-9) Email bug reports to tex-k@mail.tug.org. dvipsk_TexLive-2009-stripped/makefont.c0000644000175000017500000001743111372532227020054 0ustar uwabamiuwabami/* makefont.c */ #include "dvips.h" /* The copyright notice in that file is included too! */ #include #include "protos.h" extern int quiet ; extern int filter ; extern int dontmakefont ; extern int secure ; extern char *mfmode ; #ifdef OS2 #include #endif #if !defined(WIN32) extern char *getenv(); extern int system(); #endif #if defined MSDOS || defined OS2 extern char *mfjobname ; extern FILE *mfjobfile ; extern char *pkpath ; extern int actualdpi ; extern int vactualdpi ; /* * Write mfjob file */ void mfjobout(char *font, double mag) { if (mfjobfile == (FILE *)NULL) { char pkout[128]; char *p; int i; for (p=pkpath, i=0; *p && *p!=PATHSEP && i<127; p++) { if (*p=='%') { p++; switch(*p) { /* convert %x codes to mfjob @y codes */ case 'b': sprintf(pkout+i,"%d",actualdpi); break; case 'd': strcpy(pkout+i,"@Rr"); break; case 'f': strcpy(pkout+i,"@f"); break; case 'p': strcpy(pkout+i,"pk"); break; case 'm': strcpy(pkout+i, mfmode ? mfmode : "default"); break; case '%': strcpy(pkout+i,"%"); break; default: sprintf(pkout+i, "%%%c", *p) ; fprintf(stderr,"Unknown option %%%c in pk path\n",*p); } i += strlen(pkout+i); } else pkout[i++] = *p; } /* *p='\0'; Could some DOS person explain to me what this does? */ pkout[i] = 0 ; mfjobfile = fopen(mfjobname,"w"); if (mfjobfile == (FILE *)NULL) return; fprintf(mfjobfile,"input[dvidrv];\n{\ndriver=dvips;\n"); if (actualdpi == vactualdpi) fprintf(mfjobfile,"mode=%s[%d];\n",mfmode,actualdpi); else fprintf(mfjobfile,"mode=%s[%d %d];\n",mfmode,actualdpi,vactualdpi); fprintf(mfjobfile,"output=pk[%s];\n",pkout); } fprintf(mfjobfile,"{font=%s; mag=%f;}\n",font,mag); (void)fprintf(stderr, "Appending {font=%s; mag=%f;} to %s\n",font,mag,mfjobname) ; } #endif /* * Calculate magstep values. */ static int magstep(register int n, register int bdpi) { register float t ; int neg = 0 ; if (n < 0) { neg = 1 ; n = -n ; } if (n & 1) { n &= ~1 ; t = 1.095445115 ; } else t = 1.0 ; while (n > 8) { n -= 8 ; t = t * 2.0736 ; } while (n > 0) { n -= 2 ; t = t * 1.2 ; } if (neg) return((int)floor(0.5 + bdpi / t)) ; else return((int)floor(0.5 + bdpi * t)) ; } #ifdef MAKEPKCMD static char *defcommand = MAKEPKCMD " %n %d %b %m" ; #else #ifdef OS2 static char *doscommand = "command /c MakeTeXP %n %d %b %m" ; static char *os2command = "MakeTeXP %n %d %b %m" ; #define defcommand ( _osmode==OS2_MODE ? os2command : doscommand ) #else #ifdef MSDOS static char *defcommand = "command /c MakeTeXP %n %d %b %m" ; #else #ifdef VMCMS static char *defcommand = "EXEC MakeTeXPK %n %d %b %m" ; #else #ifdef ATARIST static char *defcommand = "maketexp %n %d %b %m" ; #else static char *defcommand = "MakeTeXPK %n %d %b %m" ; #endif #endif #endif #endif #endif char *command = 0 ; /* * This routine tries to create a font by executing a command, and * then opening the font again if possible. */ static char buf[125] ; void makefont(char *name, int dpi, int bdpi) { register char *p, *q ; register int m, n ; int modegiven = 0 ; #if defined MSDOS || defined OS2 || defined(ATARIST) double t; #endif if (command == 0) if (secure == 0 && (command=getenv("MAKETEXPK"))) command = newstring(command) ; else command = defcommand ; for (p=command, q=buf; *p; p++) if (*p != '%') *q++ = *p ; else { switch (*++p) { case 'n' : case 'N' : (void)strcpy(q, name) ; break ; case 'd' : case 'D' : (void)sprintf(q, "%d", dpi) ; break ; case 'b' : case 'B' : (void)sprintf(q, "%d", bdpi) ; break ; case 'o' : case 'O' : (void)sprintf(q, "%s", mfmode ? mfmode : "default") ; modegiven = 1 ; break ; case 'm' : case 'M' : /* * Here we want to return a string. If we can find some integer * m such that floor(0.5 + bdpi * 1.2 ^ (m/2)) = dpi, we write out * magstep(m/2) * where m/2 is a decimal number; else we write out * dpi/bdpi * We do this for the very slight improvement in accuracy that * magstep() gives us over the rounded dpi/bdpi. */ m = 0 ; if (dpi < bdpi) { while (1) { m-- ; n = magstep(m, bdpi) ; if (n == dpi) break ; if (n < dpi || m < -40) { m = 9999 ; break ; } } } else if (dpi > bdpi) { while (1) { m++ ; n = magstep(m, bdpi) ; if (n == dpi) break ; if (n > dpi || m > 40) { m = 9999 ; break ; } } } #if defined MSDOS || defined OS2 /* write out magnification as decimal number */ if (m == 9999) { t = (double)dpi/bdpi; } else { if (m < 0) n = -m; else n = m; if (n & 1) { n &= ~1 ; t = 1.095445115 ; } else t = 1.0 ; while (n > 0) { n -= 2 ; t = t * 1.2 ; } if (m < 0) t = 1 / t ; } (void)sprintf(q, "%12.9f", t) ; #else #ifndef ATARIST if (m == 9999) { #else { #endif (void)sprintf(q, "%d+%d/%d", dpi/bdpi, dpi%bdpi, bdpi) ; } else if (m >= 0) { (void)sprintf(q, "magstep\\(%d.%d\\)", m/2, (m&1)*5) ; } else { (void)sprintf(q, "magstep\\(-%d.%d\\)", (-m)/2, (m&1)*5) ; } #endif break ; case 0 : *q = 0 ; break ; default: *q++ = *p ; *q = 0 ; break ; } q += strlen(q) ; } *q = 0 ; if (mfmode && !modegiven) { strcpy(q, " ") ; strcat(q, mfmode) ; } #ifdef OS2 if ((_osmode == OS2_MODE) && filter) (void)strcat(buf, quiet ? " >nul" : " 1>&2") ; #else #ifndef VMCMS /* no filters and no need to print to stderr */ #ifndef MVSXA #ifndef MSDOS #ifndef ATARIST if (filter) (void)strcat(buf, quiet ? " >/dev/null" : " 1>&2") ; #endif #endif #endif #endif #endif #if defined MSDOS || defined OS2 if (! quiet && mfjobname == (char *)NULL) (void)fprintf(stderr, "- %s\n", buf) ; if (dontmakefont == 0) { if (mfjobname != (char *)NULL) mfjobout(name,t); else (void)system(buf) ; } #else if (! quiet) (void)fprintf(stderr, "- %s\n", buf) ; if (dontmakefont == 0) (void)system(buf) ; #endif else { static FILE *fontlog = 0 ; if (fontlog == 0) { fontlog = fopen("missfont.log", "a") ; if (fontlog != 0) { (void)fprintf(stderr, #ifndef VMCMS "Appending font creation commands to missfont.log\n") ; #else "\nMissing font data will be passed to DVIPS EXEC via MISSFONT LOG\n"); #endif } } if (fontlog != 0) { (void)fprintf(fontlog, "%s\n", buf) ; (void)fflush(fontlog) ; } } } dvipsk_TexLive-2009-stripped/dviinput.c0000644000175000017500000000323711372532227020111 0ustar uwabamiuwabami/* * Input bytes from the dvi file or the current virtual character. * These routines could probably be sped up significantly; but they are * very machine dependent, so I will leave such tuning to the installer. * They simply get and return bytes in batches of one, two, three, and four, * updating the current position as necessary. */ #include "dvips.h" /* The copyright notice in that file is included too! */ #include "protos.h" extern FILE *dvifile ; extern quarterword *curpos, *curlim ; void abortpage(void) { error("! unexpected eof on DVI file") ; } shalfword /* the value returned is, however, between 0 and 255 */ dvibyte(void) { register shalfword i ; if (curpos) { if (curpos>=curlim) return((shalfword)140) ; return (*curpos++) ; } if ((i=getc(dvifile))==EOF) abortpage() ; return(i) ; } halfword twobytes(void) { register halfword i ; i = dvibyte() ; return(i*256+dvibyte()) ; } integer threebytes(void) { register integer i ; i = twobytes() ; return(i*256+dvibyte()) ; } shalfword signedbyte(void) { register shalfword i ; if (curpos) { if (curpos>=curlim) error("! unexpected end of virtual packet") ; i = *curpos++ ; } else if ((i=getc(dvifile))==EOF) abortpage() ; if (i<128) return(i) ; else return(i-256) ; } shalfword signedpair(void) { register shalfword i ; i = signedbyte() ; return(i*256+dvibyte()) ; } integer signedtrio(void) { register integer i ; i = signedpair() ; return(i*256+dvibyte()) ; } integer signedquad(void) { register integer i ; i = signedpair() ; return(i*65536+twobytes()) ; } void skipover(int i) { while (i-->0) (void)dvibyte() ; } dvipsk_TexLive-2009-stripped/INSTALL0000644000175000017500000003162411372532227017135 0ustar uwabamiuwabamiContents: Installation `config.ps' installation PostScript font installation Ghostscript installation Diagnosing problems Debug options No output at all Output too small or inverted Error messages from printer Long documents fail to print Including graphics fails Installation ************ (A copy of this chapter is in the distribution file `dvipsk/INSTALL'.) Installing Dvips is mostly the same as installing any Kpathsea-using program. Therefore, for the basic steps involved, *note Installation: (kpathsea)Installation.. (A copy is in the file `kpathsea/INSTALL'.) For solutions to common installation problems and information on how to report a bug, see the file `kpathsea/BUGS' (*note Bugs: (kpathsea)Bugs.). For solutions to Dvips-specific problems, *note Debug options::.. Also see the Dvips home page at `http://www.radicaleye.com/dvips'. Dvips does require some additional installation, detailed in the sections below. Also, to configure color devices, *note Color device configuration::.. `config.ps' installation ======================== Dvips has its own configuration files: a file `config.ps' for sitewide defaults, and a file `config.PRINTER' for each printer (output device). Since these are site-specific, `make install' does not create them; you must create them yourself. (These Dvips configuration files are independent of the Kpathsea onfiguration file `texmf.cnf' (*note Config files: (kpathsea)Config files.). Dvips configuration files contents and searching are described fully in *Note Config files::. The simplest way to create a new configuration file is to copy and modify the file `dvipsk/contrib/config.proto', seasoning with options to your taste from *Note Config files::. Here is `config.proto' for your reading pleasure: % Prototype Dvips configuration file. % How to print, maybe with lp instead lpr, etc. o |lpr % Default resolution of this device, in dots per inch. D 600 % Metafont mode. (This is completely different from the -M command-line % option, which controls whether mktexpk is invoked.) Get % `ftp://ftp.tug.org/tex/modes.mf' for a list of mode names. This mode % and the D number above must agree, or mktexpk will get confused. M ljfour % Memory available. Download the three-line PostScript file: % %! Hey, we're PostScript % /Times-Roman findfont 30 scalefont setfont 144 432 moveto % vmstatus exch sub 40 string cvs show pop showpage % to determine this number. (It will be the only thing printed.) m 3500000 % Correct printer offset. You can use testpage.tex from the LaTeX % distribution to find these numbers. Print testpage.dvi more than once. O 0pt,0pt % Partially download Type 1 fonts by default. Only reason not to do % this is if you encounter bugs. (Please report them to % if you do.) j % Also look for fonts at these resolutions. R 300 600 % With a high resolution and a RISC cpu, better to compress the bitmaps. Z % Uncomment these if you have and want to use PostScript versions of the % fonts. %p +cmfonts.map %p +lafonts.map %p +cyrfonts.map %p +eufonts.map % You will also want definitions for alternative paper sizes -- A4, % legal, and such. Examples in `contrib/papersize.level2' and % `contrib/papersize.simple'. PostScript font installation ============================ To use PostScript fonts with TeX and Dvips, you need both metric files (`.tfm' and `.vf') and the outlines (`.pfa' or `.pfb'). *Note Font concepts::. To support the basic PostScript font set, the recommended (and simplest) approach is to retrieve `ftp://ftp.tug.org/tex/psfonts.tar.gz' and unpack it in your `$(fontdir)' directory (`/usr/local/share/texmf/fonts' by default). This archive contains metrics, outlines, and bitmaps (for previewing) for the 35 de facto standard fonts donated by URW and the additional high-quality freely available PostScript fonts donated by Adobe, Bitstream, and URW, including geometrically-created variants such as oblique and small caps. `CTAN:/fonts/psfonts' contains support for many additional fonts for which you must buy outlines (Adobe, Bigelow & Holmes, Monotype, Softkey, Y&Y). `psfonts.tar.gz' is a small extract from this directory. (For CTAN info, *note unixtex.ftp: (kpathsea)unixtex.ftp.; a copy is in the top-level file `INSTALL'.) If you have additional PostScript fonts, you can make them available to Dvips by (1) giving them with appropriate filenames; and (2) running Afm2tfm (*note Making a font available::.) to make TFM and VF metrics for TeX and Dvips to use. Also add them to `psfonts.map' if necessary (*note psfonts.map::.); it contains everything contained in `psfonts.tar.gz' and most fonts that come with Unix systems. Following are locations for vendor-supplied fonts. Please mail if you find fonts elsewhere on your system. DEC Ultrix /usr/lib/DPS/outline/decwin DEC Digital Unix /usr/lib/X11/fonts/Type1Adobe HP HP-UX 9, 10 /usr/lib/X11/fonts/type1.st/typefaces IBM AIX /usr/lpp/DPS/fonts/outlines /usr/lpp/X11/lib/X11/fonts/Type1 /usr/lpp/X11/lib/X11/fonts/Type1/DPS NeXT /NextLibrary/Fonts/outline SGI IRIX /usr/lib/DPS/outline/base /usr/lib/X11/fonts/Type1 Sun SunOS 4.x (NeWSprint only) newsprint_2.5/SUNWsteNP/reloc/$BASEDIR/ NeWSprint/small_openwin/lib/fonts /usr/openwin/lib/X11/fonts/Type1/outline Sun Solaris 2 /usr/openwin/lib/X11/fonts/Type1/outline VMS SYS$COMMON:[SYSFONT.XDPS.OUTLINE] The NeXT system supplies more fonts than any others, but there's a lot of overlap. Finally, if you have an Hewlett-Packard printer, you should be able to get Type 1 font files for the standard 35 fonts from HP, if the freely available URW Type 1's do not satisfy for whatever reason. The phone number for HP Printer Drivers is (in the United States) 303-339-7009. The driver set to ask for is Adobe Type Manager 2.51, and the disk set number is `MP210en3'. Mentioning anything other than Microsoft Windows when you ask for the driver set will likely lead to great confusion on the other end. Ghostscript installation ======================== Ghostscript is a PostScript interpreter freely available to end-users, written by Peter Deutsch. It can read the PostScript produced by Dvips and render it on your monitor, or for another device (e.g., an Epson printer) that does not support PostScript, or in PDF format. The latest version is available via `http://www.cs.wisc.edu/~ghost/index.html' and `ftp://ftp.cs.wisc.edu/pub/ghost/aladdin/'. A somewhat older version of Ghostscript is available under the GNU General Public License, free to everyone. You can get that from `ftp://prep.ai.mit.edu/pub/gnu/'. The program Ghostview, written by Tim Theisen, provides typical previewing capabilities (next page/previous page, magnification, etc.). It requires Ghostscript to run, and files in structured Postscript, specifically with `%%Page' comments (no `N' in `config.ps'). You can get Ghostview from the same places as Ghostscript. Diagnosing problems =================== You've gone through all the trouble of installing Dvips, carefully read all the instructions in this manual, and still can't get something to work. The following sections provide some helpful hints if you find yourself in such a situation. For details on effective bug reporting, common installation problems, and `mktexpk' problems, *note Bugs: (kpathsea)Bugs.. Debug options ------------- The `-d' flag to Dvips helps in tracking down certain errors. The parameter to this flag is an integer that tells what errors are currently being tracked. To track a certain class of debug messages, simply provide the appropriate number given below; if you wish to track multiple classes, sum the numbers of the classes you wish to track. To track all classes, you can use `-1'. Another useful value is `3650', which tracks everything having to do with file searching and opening. Some of these debugging options are actually provided by Kpathsea (*note Debugging: (kpathsea)Debugging.). The classes are: 1 specials 2 paths 4 fonts 8 pages 16 headers 32 font compression 64 files 128 config files 256 Partial Type 1 font encoding vectors 512 Partial Type 1 subr calls 1024 Kpathsea `stat' calls 2048 Kpathsea hash table lookups 4096 Kpathsea path element expansion 8192 Kpathsea path searches No output at all ---------------- If you are not getting any output at all, even from the simplest one-character file (for instance, `\ \bye'), then something is very wrong. Practically any file sent to a PostScript laser printer should generate some output, at the very least a page detailing what error occurred, if any. Talk to your system administrator about downloading a PostScript error handler. (Adobe distributes a good one called `ehandler.ps'.) It is possible, especially if you are using non-Adobe PostScript, that your PostScript interpreter is broken. Even then it should generate an error message. Dvips tries to work around as many bugs as possible in common non-Adobe PostScript interpreters, but doubtless it misses a few. PowerPage Revision 1, Interpreter Version 20001.001, on a Mitsubishi Shinko CHC-S446i color thermal dye sublimation printer is known to be unable to print with any but builtin fonts. If Dvips gives any strange error messages, or compilation on your machine generated a lot of warnings, perhaps the Dvips program itself is broken. Try using the debug options to determine where the error occurred (*note Debug options::.). It is possible your spooler is broken and is misinterpreting the structured comments. Try the `-N' flag to turn off structured comments and see what happens. Output too small or inverted ---------------------------- If some documents come out inverted or too small, probably your spooler is not supplying an end of job indicator at the end of each file. (This commonly happens on small machines that don't have spoolers.) You can force Dvips to do this with the `-F' flag (or `F' config file option), but this generates files with a terminating binary character (control-D). You can also try using the `-s' flag (or `s' config file option) to enclose the entire job in a save/restore pair. *Note Command-line options::, and *Note Config files::. Error messages from printer --------------------------- If your printer returns error messages, the error message gives very good information on what might be going wrong. One of the most common error messages is `bop undefined'. This is caused by old versions of Transcript and other spoolers that do not properly parse the setup section of the PostScript. To fix this, turn off structured comments with the `-N' option, but it'd be best to get your spooling software updated. Another error message is `VM exhausted'. Some printers indicate this error by locking up, others quietly reset. This is caused by Dvips thinking that the printer has more memory than it actually does, and then printing a complicated document. To fix this, try lowering the `m' parameter in the configuration file; use the debug option to make sure you adjust the correct file. Other errors may indicate you are trying to include graphics that don't nest properly in other PostScript documents, among other things. Try the PostScript file on a QMS PS-810 or other Adobe PostScript printer if you have one, or Ghostscript (*note Ghostscript installation::.); it might be a problem with the printer itself. Long documents fail to print ---------------------------- This is usually caused by incorrectly specifying the amount of memory the printer has in the configuration file; see the previous section. Including graphics fails ------------------------ The most common problem with including graphics is an incorrect bounding box (*note Bounding box::.). Complain to whoever wrote the software that generated the file if the bounding box is indeed incorrect. Another possible problem is that the figure you are trying to include does not nest properly; there are certain rules PostScript applications must follow when generating files to be included. The Dvips program includes work-arounds for such errors in Adobe Illustrator and other programs, but there are certainly applications that haven't been tested. One possible thing to try is the `-K' flag which strips the comments from an included figure. This might be necessary if the PostScript spooling software does not read the structured comments correctly. Use of this flag will break graphics from some applications, though, since some applications read the PostScript file from the input stream, looking for a particular comment. Any application which generates graphics output containing raw binary (not ASCII hex) will probably fail with Dvips. dvipsk_TexLive-2009-stripped/dpicheck.c0000644000175000017500000000274711372532227020026 0ustar uwabamiuwabami/* * dpicheck of dvips.c. Checks the dots per inch to make sure * it exists. The fonts which exist are DPI at the appropriate * magnifications. */ #include "dvips.h" /* The copyright notice in that file is included too! */ #include "protos.h" extern int actualdpi ; static integer existsizes[30] = { 0 , 99999999 } ; static int checkdpi ; /* * This routine adds some sizes to `existsizes'. */ void addsiz(int rhsize) { register integer *p ; long t, hsize ; hsize = rhsize ; for (p=existsizes; *p < hsize; p++) ; if (*p == hsize) return ; do { t = *p ; *p++ = hsize ; hsize = t ; } while (hsize) ; } void adddpi(int hsize) { long a, b, c ; int i ; addsiz(hsize) ; addsiz((int)((hsize * 116161L + 53020L) / 106040L)) ; a = hsize ; b = 0 ; c = 1 ; for (i=0; i<9; i++) { b = 6 * b + (a % 5) * c ; a = a + a / 5 ; c = c * 5 ; if (b > c) { b -= c ; a++ ; } if (b + b >= c) addsiz((int)(a+1)) ; else addsiz((int)a) ; } } /* * Finally, the routine that checks a size for match. */ halfword dpicheck(halfword dpi) { integer i ; integer margin = 1 + dpi / 500 ; if (! checkdpi) { adddpi(DPI) ; checkdpi = 1 ; } for (i=0; existsizes[i] < dpi; i++) ; if (existsizes[i]-dpi <= margin) return(existsizes[i]) ; else if (dpi-existsizes[i-1] <= margin) return(existsizes[i-1]) ; else return(dpi) ; } dvipsk_TexLive-2009-stripped/hps.lpro0000644000175000017500000001402311372532227017566 0ustar uwabamiuwabami%!PS-Adobe-2.0 Resource % % This is the set of procedures that are necessary for using dvips with the % -z flag to create PDF-ready PostScript from HyperTeX. % Written by Tanmoy Bhattacharya and Mark D. Doyle 11/94. % It is (C) Copyright 1994 by Tanmoy Bhattacharya, Mark D. Doyle % and the University of California. You may modify and use this program to % your heart's content. % % Version number info % 1 0 Probably first release % 1 1 Added external handler to let ghostview work % 1 2 Attempt at using weblink plugin (not checked) % % 2 0 Complete rewrite. % 2 1 skipped (because testing remotely: it is a debugging version) % 2 2 Hopefully correct. % 2 3 weblink with anchors corrected. % 2 4 bug fix: cvn for dest added % 2 5 bug fix: No point of error message if not on a distiller. % 2 6 bug fix: stupid {..} error. Check destination name to avoid bad names. % 2 2 tested under (Being tested :-) % unix distiller (old) % mac 2.1 % mac 2.0 % windows 2.0 % ghostscript %%BeginResource: procset hps.lpro 2 6 /HPSdict 20 dict dup begin /braindeaddistill 50 def /rfch % remove first charcter of string {dup length 1 sub 1 exch getinterval} bind def /splituri % string splituri dest uri/file true_if_uri {dup (#) search {exch pop} {() exch} ifelse dup (file:) anchorsearch {pop exch pop 3 -1 roll pop false} {pop 3 -1 roll exch pop true} ifelse} bind def /lookuptarget {exch rfch dup % drop the hashmark /TargetAnchors where {pop TargetAnchors dup 3 -1 roll known {exch get true} {pop (target unknown:)print == false} ifelse} {pop pop (target dictionary unknown\012)print false} ifelse} bind def /savecount 0 def /stackstopped % Like stopped, but clear to current mark on error { count counttomark sub /savecount exch store stopped count savecount sub 1 sub dup 0 gt {{exch pop} repeat} {pop} ifelse } bind def % PDF implementation limit for names is 127, see PDF specification, % version 1.6, appendix C "Implementation Limits, % table C.1 "Architectural limits", page 920. /tempstring 128 string def /targetvalidate {1 index dup length 127 gt exch tempstring cvs dup (/) search {pop pop pop exch pop true exch} {pop} ifelse token {pop length 0 ne} {true} ifelse or not} bind def /targetdump-hook where {pop} {/targetdump-hook {dup mark exch gsave initmat setmatrix {{ mark /Dest 4 2 roll targetvalidate {aload pop exch pop /Page 3 1 roll /View exch [ exch /FitH exch ] /DEST pdfmark} {cleartomark} ifelse} forall} stackstopped pop grestore} bind def } ifelse /baseurl {mark exch 1 dict dup 3 -1 roll /Base exch put /URI exch /DOCVIEW {pdfmark} stackstopped pop} bind def /externalhack systemdict /PDF known def /oldstyle true def /initmat matrix currentmatrix def /actiondict 2 dict dup /Subtype /URI put def /weblinkhandler { dup 3 1 roll mark 4 1 roll /Title 4 1 roll splituri 3 -1 roll dup length 0 gt {cvn /Dest exch 4 2 roll} {pop} ifelse {externalhack {/HTTPFile exch} {actiondict dup 3 -1 roll /URI exch put /Action exch} ifelse} {externalhack {/HTTPFile exch} {/File exch /Action /GoToR} ifelse } ifelse counttomark 2 sub -1 roll aload pop /Rect 4 1 roll /Border 3 1 roll /Color exch oldstyle {/LNK} {/Subtype /Link /ANN} ifelse gsave initmat setmatrix {pdfmark} stackstopped grestore} bind def /externalhandler where {pop} {/externalhandler { 2 copy {weblinkhandler} exec {/externalhack externalhack not store 2 copy {weblinkhandler} exec {/externalhack externalhack not store /oldstyle false store 2 copy {weblinkhandler} exec {(WARNING: external refs disabled\012)print /externalhandler {pop pop} bind store externalhandler} {pop pop} ifelse} {pop pop /externalhack externalhack not store} ifelse} {pop pop /externalhandler {weblinkhandler pop} bind store} ifelse} bind def} ifelse /pdfmnew {dup type /stringtype eq {externalhandler} { exch dup rfch exch 3 -1 roll lookuptarget {mark 4 1 roll /Title 4 1 roll aload pop exch pop /Page 3 1 roll /View exch [ exch /FitH exch ] 5 -1 roll aload pop /Rect 4 1 roll /Border 3 1 roll /Color exch /LNK gsave initmat setmatrix pdfmark grestore} {pop pop} ifelse} ifelse} bind def /pdfmold {dup type /stringtype eq {externalhandler} { exch dup rfch exch 3 -1 roll lookuptarget {mark 4 1 roll % put a mark below the source array and the array containing % the page % the rectangle array of the destination and the FitH parameter % and below the Title string /Title 4 1 roll % put /Title in front of Title string aload pop % put the array elements on the stack exch % exchange the FitH parameter and the Rect array pop % Get rid of the Rect array /Page 3 1 roll % put a /Page in front of the page number /View exch % put a /View below the FitH parameter [ exch /FitH exch ] % put in the /FitH 5 -1 roll aload pop pop 0 3 getinterval /Rect 3 1 roll /Border exch /LNK gsave initmat setmatrix pdfmark grestore} {pop pop} ifelse} ifelse} bind def /pdfm where {pop} {/pdfm /currentdistillerparams where {pop currentdistillerparams dup /CoreDistVersion known {/CoreDistVersion get} {0} ifelse dup braindeaddistill le {(WARNING: switching to old pdfm because version =)print == /pdfmold} {pop /pdfmnew} ifelse load } {/pdfmark where {pop {dup type /stringtype eq {externalhandler} {2 copy mark 3 1 roll {pdfmnew} stackstopped {2 copy mark 3 1 roll {pdfmold} stackstopped {(WARNING: pdfm disabled\012) print /pdfm {pop pop} store} {(WARNING: new pdfm failed, switching to old pdfm\012)print /pdfm /pdfmold load store} ifelse} {/pdfm /pdfmnew load store} ifelse pop pop}ifelse}} {{pop pop}} ifelse} ifelse bind def} ifelse end def %%EndResource %%EOF dvipsk_TexLive-2009-stripped/reencode/0000755000175000017500000000000011372532227017662 5ustar uwabamiuwabamidvipsk_TexLive-2009-stripped/reencode/texmital.enc0000644000175000017500000000440211372532227022200 0ustar uwabamiuwabami% TeX math italic encoding. % No ligatures or kerns. % /TeXMathItalicEncoding [ % now 256 chars follow % 0x0 /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon % 0x8 /Phi /Psi /Omega /alpha /beta /gamma /delta /epsilon1 % 0x10 /zeta /eta /theta /iota /kappa /lambda /mu /nu % 0x18 /xi /pi /rho /sigma /tau /upsilon /phi /chi % 0x20 /psi /omega /epsilon /theta1 /pi1 /rho1 /sigma1 /phi1 % 0x28 /arrowlefttophalf /arrowleftbothalf /arrowrighttophalf /arrowrightbothalf /arrowhookleft /arrowhookright /triangleright /triangleleft % 0x30 /zerooldstyle /oneoldstyle /twooldstyle /threeoldstyle /fouroldstyle /fiveoldstyle /sixoldstyle /sevenoldstyle % 0x38 /eightoldstyle /nineoldstyle /period /comma /less /slash /greater /star % 0x40 /partialdiff /A /B /C /D /E /F /G % 0x48 /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W % 0x58 /X /Y /Z /flat /natural /sharp /slurbelow /slurabove % 0x60 /lscript /a /b /c /d /e /f /g % 0x68 /h /i /j /k /l /m /n /o % 0x70 /p /q /r /s /t /u /v /w % 0x78 /x /y /z /dotlessi /dotlessj /weierstrass /vector /tie % Have to have 128 .notdef's now to fill things out. % /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ] def dvipsk_TexLive-2009-stripped/reencode/README0000644000175000017500000000127011372532227020542 0ustar uwabamiuwabamiThis directory contains files regarding a naming scheme for fonts to be used with TeX. Mail comments and bug reports to tex-fonts@tug.org. See NEWS for the version number and changes by release. fontname.texi is a Texinfo document describing the overall scheme. fontname.info is the info version. You can make fontname.dvi by running TeX on fontname.texi. The *.map files are the actual tables of abbreviations and font lists. They include directory names where appropriate. They are used by the MakeTeXPK distributed with the kpathsea drivers, web2c, etc. All except special.map are described in fontname.texi. The *.enc files are encoding files for use with Afm2tfm (comes with dvips(k)). dvipsk_TexLive-2009-stripped/reencode/texmsym.enc0000644000175000017500000000544111372532227022063 0ustar uwabamiuwabami% TeX math symbols encoding. % No ligatures or kerns. % /TeXMathSymbolEncoding [ % now 256 chars follow % 0x0 /minus /periodcentered /multiply /asteriskmath /divide /diamondmath /plusminus /minusplus % 0x8 /circleplus /circleminus /circlemultiply /circledivide /circledot /circlecopyrt /openbullet /bullet % 0x10 /equivasymptotic /equivalence /reflexsubset /reflexsuperset /lessequal /greaterequal /precedesequal /followsequal % 0x18 /similar /approxequal /propersubset /propersuperset /lessmuch /greatermuch /precedes /follows % 0x20 /arrowleft /arrowright /arrowup /arrowdown /arrowboth /arrownortheast /arrowsoutheast /similarequal % 0x28 /arrowdblleft /arrowdblright /arrowdblup /arrowdbldown /arrowdblboth /arrownorthwest /arrowsouthwest /proportional % 0x30 /prime /infinity /element /owner /triangle /triangleinv /negationslash /mapsto % 0x38 /universal /existential /logicalnot /emptyset /Rfractur /Ifractur /latticetop /perpendicular % 0x40 /aleph /A /B /C /D /E /F /G % 0x48 /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W % 0x58 /X /Y /Z /union /intersection /unionmulti /logicaland /logicalor % 0x60 /turnstileleft /turnstileright /floorleft /floorright /ceilingleft /ceilingright /braceleft /braceright % 0x68 /angbracketleft /angbracketright /bar /bardbl /arrowbothv /arrowdblbothv /backslash /wreathproduct % 0x70 /radical /coproduct /nabla /integral /unionsq /intersectionsq /subsetsqequal /supersetsqequal % 0x78 /section /dagger /daggerdbl /paragraph /club /diamond /heart /spade % Have to have 128 .notdef's now to fill things out. % /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ] def dvipsk_TexLive-2009-stripped/reencode/dvips.enc0000644000175000017500000000720311372532227021500 0ustar uwabamiuwabami% @@psencodingfile@{ % author = "T. Rokicki, K. Berry", % version = "2.0", % date = "22 June 1996", % filename = "dvips.enc", % email = "kb@@mail.tug.org", % address = "135 Center Hill Rd. // Plymouth, MA 02360", % codetable = "ISO/ASCII", % checksum = "75 515 3715", % docstring = "An encoding for PostScript fonts to be used with TeX." % @} % % This is almost the default encoding produced by the afm2tfm program % that comes with the dvips distribution, when it is applied to a % StandardEncoding PostScript font. The positions of the accented % characters (which afm2tfm assigned more or less randomly in the % previous set of fonts) have been held fixed. % % It is almost upward-compatible with TeX text. (The primary exceptions % are dotaccent and hungarumlaut.) Some of the ligatures are also in % different positions, but this is not important, since ligature % positions are defined in the TFM file, not by macros. % % The character positions were assigned in this order: % 1) non-composite characters in the afm2tfm encoding (except dotlessj % was included in its plain TeX position); % 2) available characters in the Cork (EC) encoding; % 3) remaining composite characters in the base encoding (starting at % position 130 decimal). We don't include all the other base % characters because that changes the height/depth/width tables in % the TFM files (because more characters mean more distinct values). % % We leave the initial positions open for the Greek letters in Times-Roman. % /DvipsEncoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /quotesingle /exclamdown /questiondown /dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /circumflex /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /tilde /dieresis /asciicircum /asciitilde /Ccedilla /Iacute /Icircumflex /atilde /edieresis /egrave /scaron /zcaron /Eth /ff /ffi /ffl /.notdef /.notdef /.notdef /.notdef /Scaron /.notdef /.notdef /.notdef /.notdef /.notdef /Ydieresis /.notdef /Zcaron /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /cent /sterling /fraction /yen /florin /section /currency /copyright /quotedblleft /guillemotleft /guilsinglleft /guilsinglright /fi /fl /degree /endash /dagger /daggerdbl /periodcentered /.notdef /paragraph /bullet /quotesinglbase /quotedblbase /quotedblright /guillemotright /ellipsis /perthousand /.notdef /.notdef /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /.notdef /dotaccent /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /hungarumlaut /ogonek /Idieresis /emdash /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /.notdef /.notdef /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /.notdef /agrave /aacute /acircumflex /ordfeminine /adieresis /aring /.notdef /ccedilla /Lslash /eacute /ecircumflex /ordmasculine /igrave /iacute /icircumflex /idieresis /.notdef /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /.notdef /lslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def dvipsk_TexLive-2009-stripped/reencode/treen.sh0000644000175000017500000000221211372532227021330 0ustar uwabamiuwabami#!/bin/csh # Tests font reencoding afm2tfm Times-Roman.afm -v ptmr0 rptmr0 afm2tfm Times-Roman.afm -P extex.enc -v ptmr1 rptmr1 afm2tfm Times-Roman.afm -T extex.enc -v ptmr2 rptmr2 afm2tfm Times-Roman.afm -t extex.enc -v ptmr3 rptmr3 afm2tfm Times-Roman.afm -T extex.enc -V ptmr4 rptmr4 # these three should all be the same cmp rptmr4.tfm rptmr2.tfm cmp rptmr4.tfm rptmr1.tfm # these two should be the same cmp rptmr0.tfm rptmr3.tfm afm2tfm Times-Roman.afm -T extex.enc -V ptmr4 rptmr2 vptovf ptmr0.vpl ptmr0.vf ptmr0.tfm vptovf ptmr1.vpl ptmr1.vf ptmr1.tfm vptovf ptmr2.vpl ptmr2.vf ptmr2.tfm vptovf ptmr3.vpl ptmr3.vf ptmr3.tfm vptovf ptmr4.vpl ptmr4.vf ptmr4.tfm tex testfont < z ; q o |=:|> emdash ; plus plus |=: exclam ; % LIGKERN slash slash =:| backslash ; q || =: Q ; || q =: Q ; dvipsk_TexLive-2009-stripped/reencode/dc.enc0000644000175000017500000000651111372532227020742 0ustar uwabamiuwabami% This is an old version of the Cork encoding, with no value but historical. % % These are the ligs and kerns in addition to those found in the % AFM file. (The only ligs in the Times-Roman.afm file are the % fi and fl ligatures.) % % LIGKERN space l =: lslash ; space L =: Lslash ; % LIGKERN question quoteleft =: questiondown ; exclam quoteleft =: exclamdown ; % LIGKERN hyphen hyphen =: endash ; endash hyphen =: emdash ; % LIGKERN quoteleft quoteleft =: quotedblleft ; % LIGKERN quoteright quoteright =: quotedblright ; % % We blow away kerns to and from spaces (TeX doesn't have a % space) and also remove any kerns from the numbers (although % the only kern pair that mentions a number in Times-Roman.afm % is one one.) % % LIGKERN space {} * ; * {} space ; zero {} * ; * {} zero ; % LIGKERN one {} * ; * {} one ; two {} * ; * {} two ; % LIGKERN three {} * ; * {} three ; four {} * ; * {} four ; % LIGKERN five {} * ; * {} five ; six {} * ; * {} six ; % LIGKERN seven {} * ; * {} seven ; eight {} * ; * {} eight ; % LIGKERN nine {} * ; * {} nine ; % LIGKERN comma comma =: quotedblbase ; less less =: guillemotleft ; % LIGKERN greater greater =: guillemotright ; % /DCEncoding [ % now 256 chars follow % 0x00 /grave /acute /circumflex /tilde /dieresis /hungarumlaut /ring /caron /breve /macron /dotaccent /cedilla /ogonek /quotesinglbase /guilsinglleft /guilsinglright % 0x10 /quotedblleft /quotedblright /quotedblbase /guillemotleft /guillemotright /endash /emdash /.notdef /zeroinferior /dotlessi /dotlessj /ff /fi /fl /ffi /ffl % 0x20 /.notdef /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash % 0x30 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question % 0x40 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore % 0x60 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o % 0x70 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /hyphen % 0x80 /Abreve /Aogonek /Cacute /Ccaron /Dcaron /Ecaron /Eogonek /Gbreve /Lacute /Lcaron /Lslash /Nacute /Ncaron /Ng /Ohungarumlaut /Racute % 0x90 /Rcaron /Sacute /Scaron /Scedilla /Tcaron /Tcedilla /Uhungarumlaut /Uring /Ldot /Zacute /Zcaron /Zdotaccent /IJ /Idotaccent /dbar /section % 0xA0 /abreve /aogonek /cacute /ccaron /dcaron /ecaron /eogonek /gbreve /lacute /lcaron /lslash /nacute /ncaron /ng /ohungarumlaut /racute % 0xB0 /rcaron /sacute /scaron /scedilla /tcaron /tcedilla /uhungarumlaut /uring /ldot /zacute /zcaron /zdotaccent /ij /exclamdown /questiondown /sterling % 0xC0 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis % 0xD0 /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /OE /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /SS % 0xE0 /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis % 0xF0 /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /oe /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /germandbls ] def dvipsk_TexLive-2009-stripped/reencode/8r.enc0000644000175000017500000001033211372532227020701 0ustar uwabamiuwabami% @@psencodingfile@{ % author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry", % version = "0.6", % date = "1 July 1998", % filename = "8r.enc", % email = "tex-fonts@@tug.org", % docstring = "Encoding for TrueType or Type 1 fonts % to be used with TeX." % @} % % Idea is to have all the characters normally included in Type 1 fonts % available for typesetting. This is effectively the characters in Adobe % Standard Encoding + ISO Latin 1 + extra characters from Lucida. % % Character code assignments were made as follows: % % (1) the Windows ANSI characters are almost all in their Windows ANSI % positions, because some Windows users cannot easily reencode the % fonts, and it makes no difference on other systems. The only Windows % ANSI characters not available are those that make no sense for % typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen % (173). quotesingle and grave are moved just because it's such an % irritation not having them in TeX positions. % % (2) Remaining characters are assigned arbitrarily to the lower part % of the range, avoiding 0, 10 and 13 in case we meet dumb software. % % (3) Y&Y Lucida Bright includes some extra text characters; in the % hopes that other PostScript fonts, perhaps created for public % consumption, will include them, they are included starting at 0x12. % % (4) Remaining positions left undefined are for use in (hopefully) % upward-compatible revisions, if someday more characters are generally % available. % % (5) hyphen appears twice for compatibility with both % ASCII and Windows. % /TeXBase1Encoding [ % 0x00 (encoded characters from Adobe Standard not in Windows 3.1) /.notdef /dotaccent /fi /fl /fraction /hungarumlaut /Lslash /lslash /ogonek /ring /.notdef /breve /minus /.notdef % These are the only two remaining unencoded characters, so may as % well include them. /Zcaron /zcaron % 0x10 /caron /dotlessi % (unusual TeX characters available in, e.g., Lucida Bright) /dotlessj /ff /ffi /ffl /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef % very contentious; it's so painful not having quoteleft and quoteright % at 96 and 145 that we move the things normally found there to here. /grave /quotesingle % 0x20 (ASCII begins) /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash % 0x30 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question % 0x40 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore % 0x60 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o % 0x70 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef % rubout; ASCII ends % 0x80 /.notdef /.notdef /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /circumflex /perthousand /Scaron /guilsinglleft /OE /.notdef /.notdef /.notdef % 0x90 /.notdef /.notdef /.notdef /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /scaron /guilsinglright /oe /.notdef /.notdef /Ydieresis % 0xA0 /.notdef % nobreakspace /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen % Y&Y (also at 45); Windows' softhyphen /registered /macron % 0xD0 /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown % 0xC0 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis % 0xD0 /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls % 0xE0 /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis % 0xF0 /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def dvipsk_TexLive-2009-stripped/reencode/extex.enc0000644000175000017500000000645211372532227021515 0ustar uwabamiuwabami% % This is the extended TeX encoding. % % These are the ligs and kerns in addition to those found in the % AFM file. (The only ligs in the Times-Roman.afm file are the % fi and fl ligatures.) % % LIGKERN space l =: lslash ; space L =: Lslash ; % LIGKERN question quoteleft =: questiondown ; exclam quoteleft =: exclamdown ; % LIGKERN hyphen hyphen =: endash ; endash hyphen =: emdash ; % LIGKERN quoteleft quoteleft =: quotedblleft ; % LIGKERN quoteright quoteright =: quotedblright ; % % We blow away kerns to and from spaces (TeX doesn't have a % space) and also remove any kerns from the numbers (although % the only kern pair that mentions a number in Times-Roman.afm % is one one.) % % LIGKERN space {} * ; * {} space ; zero {} * ; * {} zero ; % LIGKERN one {} * ; * {} one ; two {} * ; * {} two ; % LIGKERN three {} * ; * {} three ; four {} * ; * {} four ; % LIGKERN five {} * ; * {} five ; six {} * ; * {} six ; % LIGKERN seven {} * ; * {} seven ; eight {} * ; * {} eight ; % LIGKERN nine {} * ; * {} nine ; % LIGKERN comma comma =: quotedblbase ; less less =: guillemotleft ; % LIGKERN greater greater =: guillemotright ; % /ExtendedTeXEncoding [ % now 256 chars follow % 0x00 /grave /acute /circumflex /tilde /dieresis /hungarumlaut /ring /caron /breve /macron /dotaccent /cedilla /ogonek /quotesinglbase /guilsinglleft /guilsinglright % 0x10 /quotedblleft /quotedblright /quotedblbase /guillemotleft /guillemotright /endash /emdash /cwm /zeroinferior /dotlessi /dotlessj /ff /fi /fl /ffi /ffl % 0x20 /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash % 0x30 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question % 0x40 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore % 0x60 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o % 0x70 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /hyphen % 0x80 /Abreve /Aogonek /Cacute /Ccaron /Dcaron /Ecaron /Eogonek /Gbreve /Lacute /Lcaron /Lslash /Nacute /Ncaron /Eng /Ohungarumlaut /Racute % 0x90 /Rcaron /Sacute /Scaron /Scedilla /Tcaron /Tcedilla /Uhungarumlaut /Uring /Ydieresis /Zacute /Zcaron /Zdot /IJ /Idot /dstroke /paragraph % 0xA0 /abreve /aogonek /cacute /ccaron /dcaron /ecaron /eogonek /gbreve /lacute /lcaron /lslash /nacute /ncaron /eng /ohungarumlaut /racute % 0xB0 /rcaron /sacute /scaron /scedilla /tcaron /tcedilla /uhungarumlaut /uring /ydieresis /zacute /zcaron /zdot /ij /exclamdown /questiondown /sterling % 0xC0 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis % 0xD0 /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /OE /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /Germandbls % 0xE0 /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis % 0xF0 /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /oe /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /germandbls ] def dvipsk_TexLive-2009-stripped/reencode/EC.enc0000644000175000017500000000645711372532227020654 0ustar uwabamiuwabami% % This is the EC encoding. % % These are the ligs and kerns in addition to those found in the % AFM file. (The only ligs in the Times-Roman.afm file are the % fi and fl ligatures.) % % LIGKERN space l =: lslash ; space L =: Lslash ; % LIGKERN question quoteleft =: questiondown ; exclam quoteleft =: exclamdown ; % LIGKERN hyphen hyphen =: endash ; endash hyphen =: emdash ; % LIGKERN quoteleft quoteleft =: quotedblleft ; % LIGKERN quoteright quoteright =: quotedblright ; % % We blow away kerns to and from spaces (TeX doesn't have a % space) and also remove any kerns from the numbers (although % the only kern pair that mentions a number in Times-Roman.afm % is one one.) % % LIGKERN space {} * ; * {} space ; zero {} * ; * {} zero ; % LIGKERN one {} * ; * {} one ; two {} * ; * {} two ; % LIGKERN three {} * ; * {} three ; four {} * ; * {} four ; % LIGKERN five {} * ; * {} five ; six {} * ; * {} six ; % LIGKERN seven {} * ; * {} seven ; eight {} * ; * {} eight ; % LIGKERN nine {} * ; * {} nine ; % LIGKERN comma comma =: quotedblbase ; less less =: guillemotleft ; % LIGKERN greater greater =: guillemotright ; % /ECEncoding [ % now 256 chars follow % 0x00 /grave /acute /circumflex /tilde /dieresis /hungarumlaut /ring /caron /breve /macron /dotaccent /cedilla /ogonek /quotesinglbase /guilsinglleft /guilsinglright % 0x10 /quotedblleft /quotedblright /quotedblbase /guillemotleft /guillemotright /endash /emdash /cwm /zeroinferior /dotlessi /dotlessj /ff /fi /fl /ffi /ffl % 0x20 /visualspace /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash % 0x30 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question % 0x40 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore % 0x60 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o % 0x70 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /hyphen % 0x80 /Abreve /Aogonek /Cacute /Ccaron /Dcaron /Ecaron /Eogonek /Gbreve /Lacute /Lcaron /Lslash /Nacute /Ncaron /Ng /Ohungarumlaut /Racute % 0x90 /Rcaron /Sacute /Scaron /Scedilla /Tcaron /Tcedilla /Uhungarumlaut /Uring /Ydieresis /Zacute /Zcaron /Zdotaccent /IJ /Idotaccent /dbar /section % 0xA0 /abreve /aogonek /cacute /ccaron /dcaron /ecaron /eogonek /gbreve /lacute /lcaron /lslash /nacute /ncaron /ng /ohungarumlaut /racute % 0xB0 /rcaron /sacute /scaron /scedilla /tquoteright /tcedilla /uhungarumlaut /uring /ldot /zacute /zcaron /zdotaccent /ij /exclamdown /questiondown /sterling % 0xC0 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis % 0xD0 /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /OE /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /Germandbls % 0xE0 /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis % 0xF0 /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /oe /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /germandbls ] def dvipsk_TexLive-2009-stripped/reencode/asex.enc0000644000175000017500000001320411372532227021311 0ustar uwabamiuwabami% This is ASEX encoding. (file ASEX.enc) % % Adobe Standard Encoding Extended. % % Creator: Pierre A. MacKay mackay@cs.washington.edu % Creation Date: Thu Aug 31 08:56:22 PDT 1993 % % This is an input coding file for creation of a "raw font". % It can, for esample be used with Radical Eye Software's % afm2tfm. Use with the -p flag. This same encoding can also be % used with ps2pk to create a complete set of bitmapped % simplex characters. % % The {\em sole} purpose of this file is to ensure that all {\em simplex} % characters in the font are made available in the raw TFM. Therefore % there are no ligatures or any other refinements. The raw TFM % file contains no ligatures or kernings---nothing but character % metrics. We retain Adobe Standard encoding for all mapped % characters in the AFM file, and extend the list by adding % the unmapped simple characters into the empty code positions % from O 200 to O 240. It is assumed that the output coding used % for the TeX tfm will be different from this ( -t flag in afm2tfm ). % % The extended part of this encoding is consistent with the general % run of text fonts from Adobe, BitStream, DTC, Linotype, Monotype, % URW and probably others as well. For SuperFont characters, see below. % In a library of over 300 text fonts, I have found no variants. The only % variant in display fonts is the occasional absence of lowercase. % % Jan Michael Rynnings has pointed out that a few very carefully designed % fonts, e. g. Adobe Garamond and Adobe Caslon, may treat all the accented % characters as simplex glyphs (must make for a large pfa file), and that % this input encoding would not recognize such refinements. True---but % such fonts will be a tiny minority, and can be dealt with by % special encoding files. A couple of tests indicate that it makes % no perceptible difference whether you use composites formed from % the CC recipes in the AFM file or call the characters out directly % from the PFA file. There seems no reason, therefore, to fill the % raw font with characters that are clearly identified as composites % in the AFM file. % % Usage: % afm2tfm .afm -p ASEX.enc -t .enc -v % /ASEXEncoding [ % now 256 chars follow % % The following will replace the characters from 0 to 32 in the raw encoding % if you have access to a SuperFont. There is reason to hope that this % set will be as stable as the unmapped set in current text fonts % If you don't have a SuperFont, and have to create any of these as a % composite, precede the name with a dot, as is done here for % Scedilla and scedilla. The change in name keeps afm2tfm from thinking % that the character already exists when it comes to evaluate the output % (-t flag) encoding. % % 0x00 /Aogonek /Eogonek /Iogonek /Kafii9170 /Lafii9170 /Lcaron /Nafii9170 /Rafii9170 /Safii9170 /.Scedilla /Tafii9170 /Uogonek /.notdef /.notdef /.notdef /.notdef % 0x10 /aogonek /eogonek /iogonek /kafii9170 /lafii9170 /lcaron /nafii9170 /rafii9170 /safii9170 /.scedilla /tafii9170 /uogonek /.notdef /.notdef /.notdef /.notdef % 0x20 % Keep the space, for use as \boundarychar (Give it zero width in vpl) /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash % 0x30 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question % 0x40 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore % 0x60 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o % 0x70 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef % % This is the Extension to Adobe Standard Encoding % % In as many of the next 32 positions as necessary, include % all the unmapped simple (non-composite) characters. The % inclusion of Ccedilla and ccedilla is problematic. These are % composites in some schemes, simple in others. Best to % assume they are simplex. Characters are entered in alphabetical order % by name. If you need to create your own composite for Ccedilla % ccedilla or Eth, precede the name with a dot as indicated above. % % 0x80 /Ccedilla /Eth /Thorn /brokenbar /ccedilla /copyright /degree /divide /eth /logicalnot /minus /mu /multiply /onehalf /onequarter /onesuperior % 0x90 /plusminus /registered /thorn /threequarters /threesuperior /trademark /twosuperior /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef % % From here on the order is again Adobe Standard Encoding % % 0xA0 /.notdef /exclamdown /cent /sterling /fraction /yen /florin /section /currency /quotesingle /quotedblleft /guillemotleft /guilsinglleft /guilsinglright /fi /fl % 0xB0 /.notdef /endash /dagger /daggerdbl /periodcentered /.notdef /paragraph /bullet /quotesinglbase /quotedblbase /quotedblright /guillemotright /ellipsis /perthousand /.notdef /questiondown % 0xC0 /.notdef /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron % 0xD0 /emdash /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef % 0xE0 /.notdef /AE /.notdef /ordfeminine /.notdef /.notdef /.notdef /.notdef /Lslash /Oslash /OE /ordmasculine /.notdef /.notdef /.notdef /.notdef % 0xF0 /.notdef /ae /.notdef /.notdef /.notdef /dotlessi /.notdef /.notdef /lslash /oslash /oe /germandbls /.notdef /.notdef /.notdef /.notdef ] def dvipsk_TexLive-2009-stripped/reencode/clean.sh0000644000175000017500000000006711372532227021303 0ustar uwabamiuwabami#!/bin/csh rm -rf *~ *.tfm *.vpl *.vf *.afm testfont.* dvipsk_TexLive-2009-stripped/reencode/ad.enc0000644000175000017500000000505711372532227020744 0ustar uwabamiuwabami% Name is ad.enc. % v. 1.1. % lesenko@mx.ihep.su (Sergey Lesenko) % % This is compatible with the Adobe StandardEncoding, but has the % additional characters sometimes present. It's used as the base vector % for partial font downloading if no other encoding vector is found. /AdobeEncoding [ /Zcaron /zcaron /dotlessj /ff /ffi /ffl /trademark /Ydieresis /Scaron /scaron /brokenbar /copyright /logicalnot /registered /degree /plusminus /twosuperior /threesuperior /mu /onesuperior /onequarter /onehalf /threequarters /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef %% 040 /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash %% 060 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question %% 0100 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O %% 0120 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore %% 0140 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o %% 0160 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde %% /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /.notdef /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis %% /agrave /aacute /acircumflex /atilde /adieresis /aring /.notdef /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis %% /.notdef %% 0240 /.notdef /exclamdown /cent /sterling /fraction /yen /florin /section /currency /quotesingle /quotedblleft /guillemotleft /guilsinglleft /guilsinglright /fi /fl %% 0260 /.notdef /endash /dagger /daggerdbl /periodcentered /.notdef /paragraph /bullet /quotesinglbase /quotedblbase /quotedblright /guillemotright /ellipsis /perthousand /.notdef /questiondown /.notdef /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron %% 0320 /emdash /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn %% 0340 /.notdef /AE /.notdef /ordfeminine /eth /ntilde /ograve /oacute %% 0350 /Lslash /.notdef /OE /ordmasculine /ocircumflex /otilde /odieresis /divide %% 0360 /.notdef /ae /ugrave /uacute /ucircumflex /dotlessi /.notdef /.notdef %% 0370 /lslash /oslash /oe /germandbls /udieresis /yacute /thorn /ydieresis ] def dvipsk_TexLive-2009-stripped/reencode/xl2.enc0000644000175000017500000001073611372532227021065 0ustar uwabamiuwabami% Date: Thu, 25 May 1995 19:00:36 +0200 (MET DST) % From: Petr Sojka % % some of our (CSTUG- czech TeX Users Group) users want to support % 8bit font coding such that: % -- lower 7bit is exactly OT1 (but with differences imposed % by DEK -- e.g. layout of cmr is different from cmtt) % -- upper part is taken from ISO-Latin 2 (iso 8859-2), % but some of empty positions are filled with useful characters % usually available in type-1 font (permill sign etc.) /XL2encoding [ %%%%% '000 = "00 /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon %%%%% '010 = "08 /Phi /Psi /Omega /ff /fi /fl /ffi /ffl %%%%% '020 = "10 /dotlessi /dotlessj /grave /acute /caron /breve /macron /ring %%%%% '030 = "18 /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash %%%%% '040 = "20 /.notdef /exclam /quotedblright /numbersign /dollar /percent /ampersand /quoteright %%%%% '050 = "28 /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash %%%%% '060 = "30 /zero /one /two /three /four /five /six /seven %%%%% '070 = "38 /eight /nine /colon /semicolon /exclamdown /equal /questiondown /question %%%%% '100 = "40 /at /A /B /C /D /E /F /G %%%%% '110 = "48 /H /I /J /K /L /M /N /O %%%%% '120 = "50 /P /Q /R /S /T /U /V /W %%%%% '130 = "58 /X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent %%%%% '140 = "60 /quoteleft /a /b /c /d /e /f /g %%%%% '150 = "68 /h /i /j /k /l /m /n /o %%%%% '160 = "70 /p /q /r /s /t /u /v /w %%%%% '170 = "78 /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis %%%%% '200 = "80 /ellipsis /dagger /daggerdbl /bullet /sterling /paragraph /.notdef /.notdef %%%%% '210 = "88 /.notdef /.notdef /.notdef /.notdef /.notdef /perthousand /.notdef /.notdef %%%%% '220 = "90 /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef %%%%% '230 = "98 /Agrave /.notdef /.notdef /.notdef /hyphen /ogonek /guillemotleft /guillemotright %%%%% '240 = "A0 /.notdef /Aogonek /breve /Lslash /currency /Lcaron /Sacute /section %%%%% '250 = "A8 /dieresis /Scaron /Scedilla /Tcaron /Zacute /.notdef /Zcaron /Zdotaccent %%%%% '260 = "B0 /ring /aogonek /cedilla /lslash /acute /lcaron /sacute /caron %%%%% '270 = "B8 /agrave /scaron /scedilla /tcaron /zacute /hungarumlaut /zcaron /zdotaccent %%%%% '300 = "C0 /Racute /Aacute /Acircumflex /Abreve /Adieresis /Lacute /Cacute /Ccedilla %%%%% '310 = "C8 /Ccaron /Eacute /Eogonek /Edieresis /Ecaron /Iacute /Icircumflex /Dcaron %%%%% '320 = "D0 /Eth /Nacute /Ncaron /Oacute /Ocircumflex /Ohungarumlaut /Odieresis /multiply %%%%% '330 = "D8 /Rcaron /Uring /Uacute /Uhungarumlaut /Udieresis /Yacute /Togonek /germandbls %%%%% '340 = "E0 /racute /aacute /acircumflex /abreve /adieresis /lacute /cacute /ccedilla %%%%% '350 = "E8 /ccaron /eacute /eogonek /edieresis /ecaron /iacute /icircumflex /dcaron %%%%% '360 = "F0 /eth /nacute /ncaron /oacute /ocircumflex /ohungarumlaut /odieresis /divide %%%%% '370 = "F8 /rcaron /uring /uacute /uhungarumlaut /udieresis /yacute /quotedblbase /quotedblleft ] def % LIGKERN hyphen hyphen =: endash ; endash hyphen =: emdash ; % LIGKERN quoteleft quoteleft =: quotedblleft ; % LIGKERN quoteright quoteright =: quotedblright ; % LIGKERN exclamdown exclamdown =: guillemotleft ; % frenchdblquotes % LIGKERN questiondown questiondown =: guillemotright ; % csquoteleft % LIGKERN comma comma =: quotedblbase ; % LIGKERN space {} * ; * {} space ; zero {} * ; * {} zero ; % LIGKERN one {} * ; * {} one ; two {} * ; * {} two ; % LIGKERN three {} * ; * {} three ; four {} * ; * {} four ; % LIGKERN five {} * ; * {} five ; six {} * ; * {} six ; % LIGKERN seven {} * ; * {} seven ; eight {} * ; * {} eight ; % LIGKERN nine {} * ; * {} nine ; % LIGKERN question {} quoteleft ; exclam {} quoteleft ; dvipsk_TexLive-2009-stripped/prescan.c0000644000175000017500000002176611372532227017711 0ustar uwabamiuwabami/* * This is the main routine for the first (prescanning) pass. */ #include "dvips.h" /* The copyright notice in that file is included too! */ /* * These are all the external routines it calls: */ #include "protos.h" /* * These are the globals it accesses. */ #ifdef DEBUG extern integer debug_flag; #endif /* DEBUG */ extern fontdesctype *fonthead ; extern real conv ; extern real vconv ; extern real alpha ; extern integer firstpage, lastpage ; extern integer firstseq, lastseq ; extern integer maxsecsize ; extern Boolean notfirst, notlast ; extern Boolean evenpages, oddpages, pagelist ; extern integer fontmem ; extern integer pagecount ; extern integer pagenum ; extern integer maxpages ; extern sectiontype *sections ; extern FILE *dvifile ; extern integer num, den ; extern double mag ; extern int overridemag ; extern integer swmem ; extern int quiet ; extern int actualdpi ; extern int vactualdpi ; extern Boolean reverse ; extern int totalpages ; extern integer fsizetol ; extern char *oname ; extern Boolean pprescan ; extern Boolean abspage ; extern char preamblecomment[] ; /* * This routine handles the processing of the preamble in the dvi file. */ void readpreamble(void) { register int i ; char *p ; if (dvibyte()!=247) error("! Bad DVI file: first byte not preamble") ; if (dvibyte()!=2) error("! Bad DVI file: id byte not 2") ; num = signedquad() ; den = signedquad() ; if (overridemag > 0) (void)signedquad() ; else if (overridemag < 0) mag = (mag * signedquad()) / 1000.0 ; else mag = signedquad() ; conv = (real) num * DPI * mag / ( den * 254000000.0 ) ; vconv = (real) num * VDPI * mag / ( den * 254000000.0 ) ; alpha = (((real)den / 7227.0) / 0x100000) * (25400000.0 / (real) num) ; fsizetol = 1 + (integer)(DPI/(72270.0 * conv)) ; if (!pprescan) { for (i=dvibyte(),p=preamblecomment;i>0;i--,p++) *p=dvibyte() ; *p='\0' ; if (!quiet) { (void)fprintf(stderr, "'") ; #ifdef VMCMS /* IBM: VM/CMS */ for(p=preamblecomment;*p;p++) (void)putc(ascii2ebcdic[*p], stderr) ; #else #ifdef MVSXA /* IBM: MVS/XA */ for(p=preamblecomment;*p;p++) (void)putc(ascii2ebcdic[*p], stderr) ; #else for(p=preamblecomment;*p;p++) (void)putc(*p, stderr) ; #endif /* IBM: VM/CMS */ #endif (void)fprintf(stderr, "' -> %s\n", oname) ; } } else skipover(dvibyte()) ; } /* * Finally, here's our main prescan routine. */ static integer firstmatch = -1, lastmatch = -1 ; void prescanpages(void) { register int cmd ; short ret = 0 ; register integer thispageloc, thissecloc ; register fontdesctype *f ; register shalfword c ; register long thissectionmem = 0 ; integer mpagenum ; integer pageseq = 0 ; int ntfirst = notfirst ; readpreamble() ; /* * Now we look for the first page to process. If we get to the end of * the file before the page, we complain (fatally). * Incidentally, we don't use the DVI file's bop backpointer to skip * over pages at high speed, because we want to look to for special * header that might be in skipped pages. */ while (1) { cmd = skipnop() ; if (cmd==248) error("! End of document before first specified page") ; if (cmd!=139) error("! Bad DVI file: expected bop") ; thispageloc = ftell(dvifile) ; /* the location FOLLOWING the bop */ #ifdef DEBUG if (dd(D_PAGE)) #ifdef SHORTINT (void)fprintf(stderr,"bop at %ld\n", thispageloc) ; #else /* ~SHORTINT */ (void)fprintf(stderr,"bop at %d\n", (int)thispageloc) ; #endif /* ~SHORTINT */ #endif /* DEBUG */ pagenum = signedquad() ; pageseq++ ; mpagenum = abspage ? pageseq : pagenum ; if (mpagenum == firstpage && ntfirst) firstmatch++ ; if (mpagenum == lastpage && notlast) lastmatch++ ; if (ntfirst && mpagenum == firstpage && firstmatch == firstseq) ntfirst = 0 ; if (ntfirst || ((evenpages && (pagenum & 1)) || (oddpages && (pagenum & 1)==0) || (pagelist && !InPageList(pagenum)))) { skipover(40) ; skippage() ; } else { if (notlast && mpagenum == lastpage) lastmatch-- ; break ; } } /* * Here we scan for each of the sections. First we initialize some of * the variables we need. */ while (maxpages > 0 && cmd != 248) { for (f=fonthead; f; f=f->next) { f->psname = 0 ; if (f->loaded==1) for (c=255; c>=0; c--) f->chardesc[c].flags &= (STATUSFLAGS) ; } fontmem = swmem - OVERCOST ; if (fontmem <= 1000) error("! Too little VM in printer") ; /* The section begins at the bop command just before thispageloc (which may * be a page that was aborted because the previous section overflowed memory). */ pagecount = 0 ; (void)fseek(dvifile, (long)thispageloc, 0) ; pagenum = signedquad() ; skipover(40) ; thissecloc = thispageloc ; /* * Now we have the loop that actually scans the pages. The scanpage routine * returns 1 if the page scans okay; it returns 2 if the memory ran out * before any pages were completed (in which case we'll try to carry on * and hope for the best); it returns 0 if a page was aborted for lack * of memory. After each page, we mark the characters seen on that page * as seen for this section so that they will be downloaded. */ ret = 0 ; while (maxpages>0) { if (!(evenpages && (pagenum & 1)) && !(oddpages && (pagenum & 1)==0) && !(pagelist && !InPageList(pagenum))) { ret = scanpage() ; if (ret == 0) break ; pagecount++ ; maxpages-- ; } else skippage() ; thissectionmem = swmem - fontmem - OVERCOST ; mpagenum = abspage ? pageseq : pagenum ; pageseq++ ; if (mpagenum == lastpage && notlast) lastmatch++ ; if (notlast && mpagenum == lastpage && lastmatch == lastseq) maxpages = -1 ; /* we are done after this page. */ if (reverse) thissecloc = thispageloc ; for (f=fonthead; f; f=f->next) if (f->loaded==1) { if (f->psflag & THISPAGE) f->psflag = PREVPAGE ; for (c=255; c>=0; c--) if (f->chardesc[c].flags & THISPAGE) f->chardesc[c].flags = PREVPAGE | (f->chardesc[c].flags & (STATUSFLAGS)) ; } cmd=skipnop() ; if (cmd==248) break ; if (cmd!=139) error("! Bad DVI file: expected bop") ; thispageloc = ftell(dvifile) ; #ifdef DEBUG if (dd(D_PAGE)) #ifdef SHORTINT (void)fprintf(stderr,"bop at %ld\n", thispageloc) ; #else /* ~SHORTINT */ (void)fprintf(stderr,"bop at %d\n", (int)thispageloc) ; #endif /* ~SHORTINT */ #endif /* DEBUG */ pagenum = signedquad() ; skipover(40) ; if (ret==2 || (maxsecsize && pagecount >= maxsecsize)) break ; } /* * Now we have reached the end of a section for some reason. * If there are any pages, we save the pagecount, section location, * and continue. */ if (pagecount>0) { register int fc = 0 ; register sectiontype *sp ; register charusetype *cp ; totalpages += pagecount ; for (f=fonthead; f; f=f->next) if (f->loaded==1 && f->psname) fc++ ; sp = (sectiontype *)mymalloc((integer)(sizeof(sectiontype) + fc * sizeof(charusetype) + sizeof(fontdesctype *))) ; sp->bos = thissecloc ; if (reverse) { sp->next = sections ; sections = sp ; } else { register sectiontype *p ; sp->next = NULL ; if (sections == NULL) sections = sp ; else { for (p=sections; p->next != NULL; p = p->next) ; p->next = sp ; } } sp->numpages = pagecount ; #ifdef DEBUG if (dd(D_PAGE)) #ifdef SHORTINT (void)fprintf(stderr,"Have a section: %ld pages at %ld fontmem %ld\n", #else /* ~SHORTINT */ (void)fprintf(stderr,"Have a section: %d pages at %d fontmem %d\n", #endif /* ~SHORTINT */ (integer)pagecount, (integer)thissecloc, (integer)thissectionmem) ; #endif /* DEBUG */ cp = (charusetype *) (sp + 1) ; fc = 0 ; for (f=fonthead; f; f=f->next) if (f->loaded==1 && f->psname) { register halfword b, bit ; cp->psfused = (f->psflag & PREVPAGE) ; f->psflag = 0 ; cp->fd = f ; c = 0 ; for (b=0; b<16; b++) { cp->bitmap[b] = 0 ; for (bit=32768; bit!=0; bit>>=1) { if (f->chardesc[c].flags & PREVPAGE) cp->bitmap[b] |= bit ; c++ ; } } cp++ ; } cp->fd = NULL ; } } } dvipsk_TexLive-2009-stripped/afm2tfm.c0000644000175000017500000016743711372532227017620 0ustar uwabamiuwabami/* $Id: afm2tfm.c 13914 2009-06-23 09:46:14Z peter $ */ /* Public domain, originally written by Tom Rokicki. * This program converts AFM files to TeX TFM files, and optionally * to TeX VPL files that retain all kerning and ligature information. * Both files make the characters not normally encoded by TeX available * by character codes greater than 127. */ /* (Modified by Don Knuth from Tom Rokicki's pre-VPL version.) */ /* VM/CMS port by J. Hafner (hafner@almaden.ibm.com), based on * the port by Alessio Guglielmi (guglielmi@ipisnsib.bitnet) * and Marco Prevedelli (prevedelli@ipisnsva.bitnet). * This port is still in test state. No guarantees. * 11/3/92: more corrections to VM/CMS port. Now it looks correct * and will be supported by J. Hafner. * */ /* * More changes, primarily from Karl Berry, enough for a new version * number to 8.0; 1 December 1996. Note that this version computes * checksums differently (more intelligently). */ #ifdef KPATHSEA #include "config.h" #include #include #include #else /* ! KPATHSEA */ #include #include #include #if defined(SYSV) || defined(VMS) || defined(__THINK__) || defined(MSDOS) || defined(OS2) || defined(ATARIST) || defined(WIN32) #include #else #include #endif #include #ifdef ATARIST #include #endif #endif /* KPATHSEA */ /* JLH: added these to make the code easier to read and remove some ascii<->ebcdic dependencies */ #define ASCII_A 65 #define ASCII_Z 90 #define ASCII_a 97 #define ASCII_z 122 #define ASCII_0 48 #define ASCII_9 57 #ifdef VMCMS #define interesting lookstr /* for 8 character truncation conflicts */ #include "dvipscms.h" extern FILE *cmsfopen() ; extern char ebcdic2ascii[] ; extern char ascii2ebcdic[] ; #ifdef fopen #undef fopen #endif #define fopen cmsfopen #endif /* VMCMS */ #include "dvips.h" /* debug.h redefines fopen to my_real_fopen, but it's still a FILE * */ #ifdef fopen #undef fopen extern FILE *fopen (); #endif struct encoding { char *name ; char *vec[256] ; } ; struct encoding staticencoding = { "TeX text", {"Gamma", "Delta", "Theta", "Lambda", "Xi", "Pi", "Sigma", "Upsilon", "Phi", "Psi", "Omega", "arrowup", "arrowdown", "quotesingle", "exclamdown", "questiondown", "dotlessi", "dotlessj", "grave", "acute", "caron", "breve", "macron", "ring", "cedilla", "germandbls", "ae", "oe", "oslash", "AE", "OE", "Oslash", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "circumflex", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "tilde", "dieresis", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" } } ; /* * It's easier to put this in static storage and parse it as we go * than to build the structures ourselves. */ char *staticligkern[] = { "% LIGKERN space l =: lslash ; space L =: Lslash ;", "% LIGKERN question quoteleft =: questiondown ;", "% LIGKERN exclam quoteleft =: exclamdown ;", "% LIGKERN hyphen hyphen =: endash ; endash hyphen =: emdash ;", "% LIGKERN quoteleft quoteleft =: quotedblleft ;", "% LIGKERN quoteright quoteright =: quotedblright ;", "% LIGKERN space {} * ; * {} space ; zero {} * ; * {} zero ;", "% LIGKERN one {} * ; * {} one ; two {} * ; * {} two ;", "% LIGKERN three {} * ; * {} three ; four {} * ; * {} four ;", "% LIGKERN five {} * ; * {} five ; six {} * ; * {} six ;", "% LIGKERN seven {} * ; * {} seven ; eight {} * ; * {} eight ;", "% LIGKERN nine {} * ; * {} nine ;", /* Kern accented characters the same way as their base. */ "% LIGKERN Aacute <> A ; aacute <> a ;", "% LIGKERN Acircumflex <> A ; acircumflex <> a ;", "% LIGKERN Adieresis <> A ; adieresis <> a ;", "% LIGKERN Agrave <> A ; agrave <> a ;", "% LIGKERN Aring <> A ; aring <> a ;", "% LIGKERN Atilde <> A ; atilde <> a ;", "% LIGKERN Ccedilla <> C ; ccedilla <> c ;", "% LIGKERN Eacute <> E ; eacute <> e ;", "% LIGKERN Ecircumflex <> E ; ecircumflex <> e ;", "% LIGKERN Edieresis <> E ; edieresis <> e ;", "% LIGKERN Egrave <> E ; egrave <> e ;", "% LIGKERN Iacute <> I ; iacute <> i ;", "% LIGKERN Icircumflex <> I ; icircumflex <> i ;", "% LIGKERN Idieresis <> I ; idieresis <> i ;", "% LIGKERN Igrave <> I ; igrave <> i ;", "% LIGKERN Ntilde <> N ; ntilde <> n ;", "% LIGKERN Oacute <> O ; oacute <> o ;", "% LIGKERN Ocircumflex <> O ; ocircumflex <> o ;", "% LIGKERN Odieresis <> O ; odieresis <> o ;", "% LIGKERN Ograve <> O ; ograve <> o ;", "% LIGKERN Oslash <> O ; oslash <> o ;", "% LIGKERN Otilde <> O ; otilde <> o ;", "% LIGKERN Scaron <> S ; scaron <> s ;", "% LIGKERN Uacute <> U ; uacute <> u ;", "% LIGKERN Ucircumflex <> U ; ucircumflex <> u ;", "% LIGKERN Udieresis <> U ; udieresis <> u ;", "% LIGKERN Ugrave <> U ; ugrave <> u ;", "% LIGKERN Yacute <> Y ; yacute <> y ;", "% LIGKERN Ydieresis <> Y ; ydieresis <> y ;", "% LIGKERN Zcaron <> Z ; zcaron <> z ;", /* * These next are only included for deficient afm files that * have the lig characters but not the lig commands. */ "% LIGKERN f i =: fi ; f l =: fl ; f f =: ff ; ff i =: ffi ;", "% LIGKERN ff l =: ffl ;", 0 } ; /* * The above layout corresponds to TeX Typewriter Type and is compatible * with TeX Text because the position of ligatures is immaterial. */ struct encoding *outencoding = 0 ; struct encoding *inencoding = 0 ; char *outenname = NULL, *inenname = NULL;/* the file names for input and output encodings */ int boundarychar = -1 ; /* the boundary character */ int ignoreligkern ; /* do we look at ligkern info in the encoding? */ /* * This is what we store Adobe data in. */ struct adobeinfo { struct adobeinfo *next ; int adobenum, texnum, width ; char *adobename ; int llx, lly, urx, ury ; struct lig *ligs ; struct kern *kerns ; struct adobeptr *kern_equivs ; struct pcc *pccs ; int wptr, hptr, dptr, iptr ; } *adobechars, *adobeptrs[256], *texptrs[256], *uppercase[256], *lowercase[256] ; int nexttex[256] ; /* for characters encoded multiple times in output */ /* * These are the eight ligature ops, in VPL terms and in METAFONT terms. */ char *vplligops[] = { "LIG", "/LIG", "/LIG>", "LIG/", "LIG/>", "/LIG/", "/LIG/>", "/LIG/>>", 0 } ; char *encligops[] = { "=:", "|=:", "|=:>", "=:|", "=:|>", "|=:|", "|=:|>", "|=:|>>", 0 } ; struct lig { struct lig *next ; char *succ, *sub ; short op, boundleft ; } ; struct kern { struct kern *next ; char *succ ; int delta ; } ; struct adobeptr { struct adobeptr *next; struct adobeinfo *ch; }; struct pcc { struct pcc *next ; char * partname ; int xoffset, yoffset ; } ; FILE *afmin, *vplout, *tfmout ; char inname[200], outname[200] ; /* names of input and output files */ char tmpstr[200] ; /* a buffer for one string */ #define INBUFSIZE 1024 char buffer[INBUFSIZE+10]; /* input buffer (modified while parsing) */ char obuffer[INBUFSIZE+10] ; /* unmodified copy of input buffer */ char *param ; /* current position in input buffer */ char *fontname = "Unknown" ; char *codingscheme = "Unspecified" ; #ifdef VMCMS char *ebfontname ; char *ebcodingscheme ; #endif float italicangle = 0.0 ; char fixedpitch ; char makevpl ; char pedantic ; int xheight = 400 ; int fontspace ; int bc, ec ; long cksum ; float efactor = 1.0, slant = 0.0 ; float capheight = 0.8 ; char *efactorparam, *slantparam ; double newslant ; char titlebuf[500] ; static void error(register char *s) { (void)fprintf(stderr, "%s\n", s) ; if (obuffer[0]) { (void)fprintf(stderr, "%s\n", obuffer) ; while (param > buffer) { (void)fprintf(stderr, " ") ; param-- ; } (void)fprintf(stderr, "^\n") ; } if (*s == '!') exit(1) ; } static int transform(register int x, register int y) { register double acc ; acc = efactor * x + slant *y ; return (int)(acc>=0? floor(acc+0.5) : ceil(acc-0.5) ) ; } static int texlive_getline(void) { register char *p ; register int c ; param = buffer ; for (p=buffer; (c=getc(afmin)) != EOF;) { if (p - buffer >= INBUFSIZE) error("! input line too long; perhaps input file is malformed?") ; *p++ = c ; if (c == '\r') { c = getc(afmin) ; if (c != EOF) { if (c == '\n') { *p++ = c ; } else { ungetc(c, afmin) ; } } break ; } else if (c == '\n') { break ; } } *p = 0 ; (void)strcpy(obuffer, buffer) ; if (p == buffer && c == EOF) return(0) ; else return(1) ; } char *interesting[] = { "FontName", "ItalicAngle", "IsFixedPitch", "XHeight", "C", "KPX", "CC", "EncodingScheme", NULL} ; #define FontName (0) #define ItalicAngle (1) #define IsFixedPitch (2) #define XHeight (3) #define C (4) #define KPX (5) #define CC (6) #define EncodingScheme (7) #define NONE (-1) static int interest(char *s) { register char **p ; register int n ; for (p=interesting, n=0; *p; p++, n++) if (strcmp(s, *p)==0) return(n) ; return(NONE) ; } static char * mymalloc(unsigned long len) { register char *p ; int i ; #ifdef SMALLMALLOC if (len > 65500L) error("! can't allocate more than 64K!") ; #endif p = (char *) malloc((unsigned)len) ; if (p==NULL) error("! out of memory") ; for (i=0; i ' ') p++ ; if (*p != 0) *p++ = 0 ; q = newstring(param) ; while (*p && *p <= ' ') p++ ; param = p ; return(q) ; } static char * paramstring(void) { register char *p, *q ; p = param ; while (*p > ' ') p++ ; q = param ; if (*p != 0) *p++ = 0 ; while (*p && *p <= ' ') p++ ; param = p ; return(q) ; } static int paramnum(void) { register char *p ; int i ; p = paramstring() ; if (sscanf(p, "%d", &i) != 1) error("! integer expected") ; return(i) ; } static float paramfloat(void) { register char *p ; float i ; p = paramstring() ; if (sscanf(p, "%f", &i) != 1) error("! number expected") ; return(i) ; } static struct adobeinfo * newchar(void) { register struct adobeinfo *ai ; ai = (struct adobeinfo *)mymalloc((unsigned long)sizeof(struct adobeinfo)) ; ai->adobenum = -1 ; ai->texnum = -1 ; ai->width = -1 ; ai->adobename = NULL ; ai->llx = -1 ; ai->lly = -1 ; ai->urx = -1 ; ai->ury = -1 ; ai->ligs = NULL ; ai->kerns = NULL ; ai->kern_equivs = NULL ; ai->pccs = NULL ; ai->next = adobechars ; adobechars = ai ; return(ai) ; } static struct kern * newkern(void) { register struct kern *nk ; nk = (struct kern *)mymalloc((unsigned long)sizeof(struct kern)) ; nk->next = NULL ; nk->succ = NULL ; nk->delta = 0 ; return(nk) ; } static struct pcc * newpcc(void) { register struct pcc *np ; np = (struct pcc *)mymalloc((unsigned long)sizeof(struct pcc)) ; np->next = NULL ; np->partname = NULL ; np->xoffset = 0 ; np->yoffset = 0 ; return(np) ; } static struct lig * newlig(void) { register struct lig *nl ; nl = (struct lig *)mymalloc((unsigned long)sizeof(struct lig)) ; nl->next = NULL ; nl->succ = NULL ; nl->sub = NULL ; nl->op = 0 ; /* the default =: op */ nl->boundleft = 0 ; return(nl) ; } static void expect(char *s) { if (strcmp(paramstring(), s) != 0) { (void)fprintf(stderr, "%s expected: ", s) ; error("! syntax error") ; } } static void handlechar(void) { /* an input line beginning with C */ register struct adobeinfo *ai ; register struct lig *nl ; ai = newchar() ; ai->adobenum = paramnum() ; expect(";") ; expect("WX") ; ai->width = transform(paramnum(),0) ; if (ai->adobenum >= 0 && ai->adobenum < 256) { adobeptrs[ai->adobenum] = ai ; } expect(";") ; /* Ignore vertical metrics information */ if (*param == 'W' && *(param + 1) == 'Y') { expect("WY") ; (void)paramnum() ; expect(";") ; } expect("N") ; ai->adobename = paramnewstring() ; expect(";") ; expect("B") ; ai->llx = paramnum() ; ai->lly = paramnum() ; ai->llx = transform(ai->llx, ai->lly) ; ai->urx = paramnum() ; ai->ury = paramnum() ; ai->urx = transform(ai->urx, ai->ury) ; /* We need to avoid negative heights or depths. They break accents in math mode, among other things. */ if (ai->lly > 0) ai->lly = 0 ; if (ai->ury < 0) ai->ury = 0 ; expect(";") ; /* Now look for ligatures (which aren't present in fixedpitch fonts) */ while (*param == 'L' && !fixedpitch) { expect("L") ; nl = newlig() ; nl->succ = paramnewstring() ; nl->sub = paramnewstring() ; nl->next = ai->ligs ; ai->ligs = nl ; expect(";") ; } } static struct adobeinfo * findadobe(char *p) { register struct adobeinfo *ai ; for (ai=adobechars; ai; ai = ai->next) if (strcmp(p, ai->adobename)==0) return(ai) ; return(NULL) ; } /* * The following comment no longer applies; we rely on the LIGKERN * entries to kill space kerns. Also, the same applies to numbers. * * We ignore kerns before and after space characters, because (1) TeX * is using the space only for Polish ligatures, and (2) TeX's * boundarychar mechanisms are not oriented to kerns (they apply * to both spaces and punctuation) so we don't want to use them. */ static void handlekern(void) { /* an input line beginning with KPX */ register struct adobeinfo *ai ; register char *p ; register struct kern *nk ; p = paramstring() ; ai = findadobe(p) ; if (ai == NULL) error("kern char not found") ; else { nk = newkern() ; nk->succ = paramnewstring() ; nk->delta = transform(paramnum(),0) ; nk->next = ai->kerns ; ai->kerns = nk ; } } static void handleconstruct(void) { /* an input line beginning with CC */ register struct adobeinfo *ai ; register char *p ; register struct pcc *np ; register int n ; struct pcc *npp = NULL; p = paramstring() ; ai = findadobe(p) ; if (ai == NULL) error("! composite character name not found") ; n = paramnum() ; expect(";") ; while (n--) { if (strcmp(paramstring(),"PCC") != 0) return ; /* maybe I should expect("PCC") instead, but I'm playing it safe */ np = newpcc() ; np->partname = paramnewstring() ; if (findadobe(np->partname)==NULL) return ; np->xoffset = paramnum() ; np->yoffset = paramnum() ; np->xoffset = transform(np->xoffset, np->yoffset) ; if (npp) npp->next = np ; else ai->pccs = np ; npp = np ; expect(";") ; } } static struct encoding *readencoding(char *) ; #if 0 /* Not used */ static void makeaccentligs(void) { register struct adobeinfo *ai, *aci ; register char *p ; register struct lig *nl ; for (ai=adobechars; ai; ai=ai->next) { p = ai->adobename ; if (strlen(p)>2) if ((aci=findadobe(p+1)) && (aci->adobenum > 127)) { nl = newlig() ; nl->succ = mymalloc((unsigned long)2) ; *(nl->succ + 1) = 0 ; *(nl->succ) = *p ; nl->sub = ai->adobename ; nl->next = aci->ligs ; aci->ligs = nl ; } } } #endif static void readadobe(void) { struct adobeinfo *ai ; #ifdef VMCMS int i; #endif /* * We allocate a placeholder boundary char. */ ai = newchar() ; ai->adobenum = -1 ; ai->adobename = "||" ; /* boundary character name */ while (texlive_getline()) { switch(interest(paramstring())) { case FontName: fontname = paramnewstring() ; #ifdef VMCMS /* fontname comes in as ebcdic but we need it asciified for tfm file so we save it in ebfontname and change it in fontname */ ebfontname = newstring(fontname) ; i=0; while(fontname[i] != '\0') { fontname[i]=ebcdic2ascii[fontname[i]]; i++; }; #endif break ; case EncodingScheme: codingscheme = paramnewstring() ; #ifdef VMCMS /* for codingscheme, we do the same as we did for fontname */ ebcodingscheme = newstring(codingscheme) ; i=0; while(codingscheme[i] != '\0') { codingscheme[i]=ebcdic2ascii[codingscheme[i]]; i++; } #endif break ; case ItalicAngle: italicangle = paramfloat() ; break ; case IsFixedPitch: if (*param == 't' || *param == 'T') fixedpitch = 1 ; else fixedpitch = 0 ; break ; case XHeight: xheight = paramnum() ; break ; case C: handlechar() ; break ; case KPX: handlekern() ; break ; case CC: handleconstruct() ; break ; default: break ; } } fclose(afmin) ; afmin = 0 ; } /* * Re-encode the adobe font. Assumes that the header file will * also contain the appropriate instructions! */ static void handlereencoding(void) { if (inenname) { int i ; struct adobeinfo *ai ; char *p ; ignoreligkern = 1 ; inencoding = readencoding(inenname) ; for (i=0; i<256; i++) if (0 != (ai=adobeptrs[i])) { ai->adobenum = -1 ; adobeptrs[i] = NULL ; } for (i=0; i<256; i++) { p = inencoding->vec[i] ; if (p && *p && strcmp(p, ".notdef") != 0 && 0 != (ai = findadobe(p))) { ai->adobenum = i ; adobeptrs[i] = ai ; } } codingscheme = inencoding->name ; } ignoreligkern = 0 ; if (outenname) { outencoding = readencoding(outenname) ; } else { outencoding = readencoding((char *)0) ; } } /* * This routine reverses a list. We use it because we accumulate the * adobeinfo list in reverse order, but when we go to map the * characters, we would prefer to use the original ordering. It just * makes more sense. */ static struct adobeinfo * revlist (struct adobeinfo *p) { struct adobeinfo *q = 0, *t ; while (p) { t = p->next ; p->next = q ; q = p ; p = t ; } return q ; } static void assignchars(void) { register char **p ; register int i, j ; register struct adobeinfo *ai, *pai ; int nextfree = 128 ; struct pcc *pcp ; /* * First, we assign all those that match perfectly. */ for (i=0, p=outencoding->vec; i<256; i++, p++) if (*p && strcmp(*p, ".notdef") != 0 && (ai=findadobe(*p)) && (ai->adobenum >= 0 || ai->pccs != NULL)) { if (ai->texnum >= 0) nexttex[i] = ai->texnum ; /* linked list */ ai->texnum = i ; texptrs[i] = ai ; } if (pedantic) return ; /* * Next, we assign all the others, retaining the adobe positions, possibly * multiply assigning characters. Unless the output encoding was * precisely specified. */ for (ai=adobechars; ai; ai=ai->next) if (ai->adobenum >= 0 && ai->adobenum <256 && ai->texnum < 0 && texptrs[ai->adobenum] == 0) { ai->texnum = ai->adobenum ; texptrs[ai->adobenum] = ai ; } /* * Finally, we map all remaining characters into free locations beginning * with 128, if we know how to construct those characters. We need to * make sure the component pieces are mapped. */ adobechars = revlist(adobechars) ; for (ai=adobechars; ai; ai=ai->next) if (ai->texnum<0 && (ai->adobenum>=0 || ai->pccs != NULL)) { while (texptrs[nextfree]) { nextfree=(nextfree+1)&255 ; if (nextfree==128) goto finishup ; /* all slots full */ } ai->texnum = nextfree ; texptrs[nextfree] = ai ; } finishup: /* * We now check all of the composite characters. If any of the * components are not mapped, we unmap the composite character. */ for (i=0; i<256; i++) { ai = texptrs[i] ; if (ai && ai->pccs != NULL && ai->texnum >= 0) { for (pcp = ai->pccs; pcp; pcp = pcp->next) { pai = findadobe(pcp->partname) ; if (pai == NULL || pai->texnum < 0) { texptrs[ai->texnum] = 0 ; ai->texnum = -1 ; break ; } } } } /* * Now, if any of the characters are encoded multiple times, we want * ai->texnum to be the first one assigned, since that is most likely * to be the most important one. So we reverse the above lists. */ for (ai=adobechars; ai; ai=ai->next) if (ai->texnum >= 0 && ai->texnum < 256) { j = -1 ; while (nexttex[ai->texnum] >= 0) { i = nexttex[ai->texnum] ; nexttex[ai->texnum] = j ; j = ai->texnum ; ai->texnum = i ; } nexttex[ai->texnum] = j ; } } static void upmap(void) { /* Compute uppercase mapping, when making a small caps font */ register struct adobeinfo *ai, *Ai ; register char *p, *q ; register struct pcc *np, *nq ; int i ; char lwr[50] ; /* JLH: changed some lines below to be ascii<->ebcdic independent any reason we don't use 'isupper'?. Looks like we should use isupper to me --karl. */ for (Ai=adobechars; Ai; Ai=Ai->next) { p = Ai->adobename ; if (isupper (*p)) { q = lwr ; for (; *p; p++) *q++ = TOLOWER (*p); *q = '\0'; /* changed this too! */ if (0 != (ai=findadobe(lwr))) { for (i = ai->texnum; i >= 0; i = nexttex[i]) uppercase[i] = Ai ; for (i = Ai->texnum; i >= 0; i = nexttex[i]) lowercase[i] = ai ; } } } /* Note that, contrary to the normal true/false conventions, * uppercase[i] is NULL and lowercase[i] is non-NULL when i is the * ASCII code of an uppercase letter; and vice versa for lowercase letters */ if (0 != (ai=findadobe("germandbls"))) if (0 != (Ai=findadobe("S"))) { /* we also construct SS */ for (i=ai->texnum; i >= 0; i = nexttex[i]) uppercase[i] = ai ; ai->adobenum = -1 ; ai->width = Ai->width << 1 ; ai->llx = Ai->llx ; ai->lly = Ai->lly ; ai->urx = Ai->width + Ai->urx ; ai->ury = Ai->ury ; ai->kerns = Ai->kerns ; np = newpcc() ; np->partname = "S" ; nq = newpcc() ; nq->partname = "S" ; nq->xoffset = Ai->width ; np->next = nq ; ai->pccs = np ; } if ((ai=findadobe("dotlessi"))) for (i=ai->texnum; i >= 0; i = nexttex[i]) uppercase[i] = findadobe("I") ; if ((ai=findadobe("dotlessj"))) for (i=ai->texnum; i >= 0; i = nexttex[i]) uppercase[i] = findadobe("J") ; } /* The logic above seems to work well enough, but it leaves useless characters * like `fi' and `fl' in the font if they were present initially, * and it omits characters like `dotlessj' if they are absent initially */ /* Now we turn to computing the TFM file */ int lf, lh, nw, nh, nd, ni, nl, nk, ne, np ; static void write16(register short what) { (void)fputc(what >> 8, tfmout) ; (void)fputc(what & 255, tfmout) ; } static void writearr(register long *p, register int n) { while (n) { write16((short)(*p >> 16)) ; write16((short)(*p & 65535)) ; p++ ; n-- ; } } static void makebcpl(register long *p, register char *s, register int n) { register long t ; register long sc ; if (strlen(s) < n) n = strlen(s) ; t = ((long)n) << 24 ; sc = 16 ; while (n > 0) { t |= ((long)(*(unsigned char *)s++)) << sc ; sc -= 8 ; if (sc < 0) { *p++ = t ; t = 0 ; sc = 24 ; } n-- ; } *p++ = t ; } int source[257] ; int unsort[257] ; /* * Next we need a routine to reduce the number of distinct dimensions * in a TFM file. Given an array what[0]...what[oldn-1], we want to * group its elements into newn clusters, in such a way that the maximum * difference between elements of a cluster is as small as possible. * Furthermore, what[0]=0, and this value must remain in a cluster by * itself. Data such as `0 4 6 7 9' with newn=3 shows that an iterative * scheme in which 6 is first clustered with 7 will not work. So we * borrow a neat algorithm from METAFONT to find the true optimum. * Memory location what[oldn] is set to 0x7fffffffL for convenience. */ long nextd ; /* smallest value that will give a different mincover */ static int mincover(long *what, register long d) /* tells how many clusters result, given max difference d */ { register int m ; register long l ; register long *p ; nextd = 0x7fffffffL ; p = what+1 ; m = 1 ; while (*p<0x7fffffffL) { m++ ; l = *p ; while (*++p <= l+d) ; if (*p-l < nextd) nextd = *p-l ; } return (m) ; } static void remap(long * what, int oldn, int newn) { register int i, j ; register long d, l ; what[oldn] = 0x7fffffffL ; for (i=oldn-1; i>0; i--) { d = what[i] ; for (j=i; what[j+1]newn) d += d ; while (mincover(what,d)>newn) d = nextd ; i = 1 ; j = 0 ; while (i>31)) ^ ai->width ; /* cyclic left shift */ s1 &= 0xffffffff; /* in case we're on a 64-bit machine */ for (p=ai->adobename; *p; p++) #ifndef VMCMS s2 = (s2 * 3) + *p ; #else s2 = (s2 * 3) + ebcdic2ascii[*p] ; #endif } s1 = (s1 << 1) ^ s2 ; return s1 ; } /* * The next routine simply scales something. * Input is in 1000ths of an em. Output is in FIXFACTORths of 1000. */ #define FIXFACTOR (0x100000L) /* 2^{20}, the unit fixnum */ static long scale(long what) { return(((what / 1000) << 20) + (((what % 1000) << 20) + 500) / 1000) ; } long *header, *charinfo, *width, *height, *depth, *ligkern, *kern, *tparam, *italic ; long *tfmdata ; static void buildtfm(void) { register int i, j ; register struct adobeinfo *ai ; header = tfmdata ; cksum = checksum() ; header[0] = cksum ; header[1] = 0xa00000 ; /* 10pt design size */ makebcpl(header+2, codingscheme, 39) ; makebcpl(header+12, fontname, 19) ; lh = 17 ; charinfo = header + lh ; for (i=0; i<256 && adobeptrs[i]==NULL; i++) ; bc = i ; for (i=255; i>=0 && adobeptrs[i]==NULL; i--) ; ec = i; if (ec < bc) error("! no Adobe characters") ; width = charinfo + (ec - bc + 1) ; width[0] = 0 ; nw++ ; for (i=bc; i<=ec; i++) if (0 != (ai=adobeptrs[i])) { width[nw]=ai->width ; for (j=1; width[j]!=ai->width; j++) ; ai->wptr = j ; if (j==nw) nw++ ; } if (nw>256) error("! 256 chars with different widths") ; depth = width + nw ; depth[0] = 0 ; nd = 1 ; for (i=bc; i<=ec; i++) if (0 != (ai=adobeptrs[i])) { depth[nd] = -ai->lly ; for (j=0; depth[j]!=-ai->lly; j++) ; ai->dptr = j ; if (j==nd) nd++ ; } if (nd > 16) { remap(depth, nd, 16) ; nd = 16 ; for (i=bc; i<=ec; i++) if (0 != (ai=adobeptrs[i])) ai->dptr = unsort[ai->dptr] ; } height = depth + nd ; height[0] = 0 ; nh = 1 ; for (i=bc; i<=ec; i++) if (0 != (ai=adobeptrs[i])) { height[nh]=ai->ury ; for (j=0; height[j]!=ai->ury; j++) ; ai->hptr = j ; if (j==nh) nh++ ; } if (nh > 16) { remap(height, nh, 16) ; nh = 16 ; for (i=bc; i<=ec; i++) if (0 != (ai=adobeptrs[i])) ai->hptr = unsort[ai->hptr] ; } italic = height + nh ; italic[0] = 0 ; ni = 1 ; for (i=bc; i<=ec; i++) if (0 != (ai=adobeptrs[i])) { italic[ni] = ai->urx - ai->width ; if (italic[ni]<0) italic[ni] = 0 ; for (j=0; italic[j]!=italic[ni]; j++) ; ai->iptr = j ; if (j==ni) ni++ ; } if (ni > 64) { remap(italic, ni, 64) ; ni = 64 ; for (i=bc; i<=ec; i++) if (0 != (ai=adobeptrs[i])) ai->iptr = unsort[ai->iptr] ; } for (i=bc; i<=ec; i++) if (0 != (ai=adobeptrs[i])) charinfo[i-bc] = ((long)(ai->wptr)<<24) + ((long)(ai->hptr)<<20) + ((long)(ai->dptr)<<16) + ((long)(ai->iptr)<<10) ; ligkern = italic + ni ; nl = 0 ; /* ligatures and kerns omitted from raw Adobe font */ kern = ligkern + nl ; nk = 0 ; newslant = (double)slant - efactor * tan(italicangle*(3.1415926535/180.0)) ; tparam = kern + nk ; tparam[0] = (long)(FIXFACTOR * newslant + 0.5) ; tparam[1] = scale((long)fontspace) ; tparam[2] = (fixedpitch ? 0 : scale((long)(300*efactor+0.5))) ; tparam[3] = (fixedpitch ? 0 : scale((long)(100*efactor+0.5))) ; tparam[4] = scale((long)xheight) ; tparam[5] = scale((long)(1000*efactor+0.5)) ; np = 6 ; } static void writesarr(long *what, int len) { register long *p ; int i ; p = what ; i = len ; while (i) { *p = scale(*p) ; (void)scale(*p) ; /* need this kludge for some compilers */ p++ ; i-- ; } writearr(what, len) ; } static void writetfm(void) { lf = 6 + lh + (ec - bc + 1) + nw + nh + nd + ni + nl + nk + ne + np ; write16(lf) ; write16(lh) ; write16(bc) ; write16(ec) ; write16(nw) ; write16(nh) ; write16(nd) ; write16(ni) ; write16(nl) ; write16(nk) ; write16(ne) ; write16(np) ; writearr(header, lh) ; writearr(charinfo, ec-bc+1) ; writesarr(width, nw) ; writesarr(height, nh) ; writesarr(depth, nd) ; writesarr(italic, ni) ; writearr(ligkern, nl) ; writesarr(kern, nk) ; writearr(tparam, np) ; } /* OK, the TFM file is done! Now for our next trick, the VPL file. */ /* For TeX we want to compute a character height that works properly * with accents. The following list of accents doesn't need to be complete. */ /* * We only do this if the xheight has a reasonable value. * (>50) */ char *accents[] = { "acute", "tilde", "caron", "dieresis", NULL} ; static int texheight(register struct adobeinfo *ai) { register char **p; register struct adobeinfo *aci, *acci ; if (xheight <= 50 || *(ai->adobename + 1)) return (ai->ury) ; /* that was the simple case */ for (p=accents; *p; p++) /* otherwise we look for accented letters */ if (0 != (aci=findadobe(*p))) { strcpy(buffer,ai->adobename) ; strcat(buffer,*p) ; if (0 != (acci=findadobe(buffer))) return (acci->ury - aci->ury + xheight) ; } return (ai->ury) ; } /* modified tgr to eliminate varargs problems */ #define vout(s) fprintf(vplout, s) int level ; /* the depth of parenthesis nesting in VPL file being written */ static void vlevout() { register int l = level ; while (l--) vout(" ") ; } static void vlevnlout() { vout("\n") ; vlevout() ; } #define voutln(str) {fprintf(vplout,"%s\n",str);vlevout();} #define voutln2(f,s) {fprintf(vplout,f,s);vlevnlout();} #define voutln3(f,a,b) {fprintf(vplout,f,a,b);vlevnlout();} #define voutln4(f,a,b,c) {fprintf(vplout,f,a,b,c);vlevnlout();} static void vleft(void) { level++ ; vout("(") ; } static void vright(void) { level-- ; voutln(")") ; } int forceoctal = 0 ; char vcharbuf[6] ; static char * vchar(int c) { if (forceoctal == 0 && ISALNUM (c)) (void) sprintf(vcharbuf,"C %c", #ifndef VMCMS c) ; #else ascii2ebcdic[c]) ; #endif else (void) sprintf(vcharbuf,"O %o", (unsigned)c) ; return (vcharbuf) ; } char vnamebuf[100]; static char * vname(int c) { if (!forceoctal && ISALNUM (c)) { vnamebuf[0] = 0; } else if (c >= 0 && c < 256) { sprintf (vnamebuf, " (comment %s)", texptrs[c]->adobename); } return vnamebuf; } static void writevpl(void) { register int i, j, k ; register struct adobeinfo *ai ; register struct lig *nlig ; register struct kern *nkern ; register struct pcc *npcc ; struct adobeinfo *asucc, *asub, *api ; struct adobeptr *kern_eq; int xoff, yoff, ht ; char unlabeled ; voutln2("(VTITLE Created by %s)", titlebuf) ; voutln("(COMMENT Please edit that VTITLE if you edit this file)") ; (void)sprintf(obuffer, "TeX-%s%s%s%s", outname, (efactor==1.0? "" : "-E"), (slant==0.0? "" : "-S"), (makevpl==1? "" : "-CSC")) ; if (strlen(obuffer)>19) { /* too long, will retain first 9 and last 10 */ register char *p, *q ; for (p = &obuffer[9], q = &obuffer[strlen(obuffer)-10] ; p<&obuffer[19]; p++, q++) *p = *q ; obuffer[19] = '\0' ; } voutln2("(FAMILY %s)" , obuffer) ; { char tbuf[300] ; char *base_encoding = #ifndef VMCMS codingscheme ; #else ebcodingscheme ; #endif if (strcmp (outencoding->name, base_encoding) == 0) { sprintf(tbuf, "%s", outencoding->name); } else { sprintf(tbuf, "%s + %s", base_encoding, outencoding->name); } if (strlen(tbuf) > 39) { error("Coding scheme too long; shortening to 39 characters.") ; tbuf[39] = 0 ; } voutln2("(CODINGSCHEME %s)", tbuf) ; } voutln("(DESIGNSIZE R 10.0)") ; voutln("(DESIGNUNITS R 1000)") ; voutln("(COMMENT DESIGNSIZE (1 em) IS IN POINTS)") ; voutln("(COMMENT OTHER DIMENSIONS ARE MULTIPLES OF DESIGNSIZE/1000)") ; /* Let vptovf compute the checksum. */ /* voutln2("(CHECKSUM O %lo)",cksum ^ 0xffffffff) ; */ if (boundarychar >= 0) voutln2("(BOUNDARYCHAR O %lo)", (unsigned long)boundarychar) ; vleft() ; voutln("FONTDIMEN") ; if (newslant) voutln2("(SLANT R %f)", newslant) ; voutln2("(SPACE D %d)", fontspace) ; if (! fixedpitch) { voutln2("(STRETCH D %d)", transform(200,0)) ; voutln2("(SHRINK D %d)", transform(100,0)) ; } voutln2("(XHEIGHT D %d)", xheight) ; voutln2("(QUAD D %d)", transform(1000,0)) ; voutln2("(EXTRASPACE D %d)", fixedpitch ? fontspace : transform(111, 0)) ; vright() ; vleft() ; voutln("MAPFONT D 0"); voutln2("(FONTNAME %s)", outname) ; /* voutln2("(FONTCHECKSUM O %lo)", (unsigned long)cksum) ; */ vright() ; if (makevpl>1) { vleft() ; voutln("MAPFONT D 1"); voutln2("(FONTNAME %s)", outname) ; voutln2("(FONTAT D %d)", (int)(1000.0*capheight+0.5)) ; /* voutln2("(FONTCHECKSUM O %lo)", (unsigned long)cksum) ; */ vright() ; } for (i=0; i<256 && texptrs[i]==NULL; i++) ; bc = i ; for (i=255; i>=0 && texptrs[i]==NULL; i--) ; ec = i; vleft() ; voutln("LIGTABLE") ; ai = findadobe("||") ; unlabeled = 1 ; for (nlig=ai->ligs; nlig; nlig=nlig->next) if (0 != (asucc=findadobe(nlig->succ))) { if (0 != (asub=findadobe(nlig->sub))) if (asucc->texnum>=0) if (asub->texnum>=0) { if (unlabeled) { voutln("(LABEL BOUNDARYCHAR)") ; unlabeled = 0 ; } for (j = asucc->texnum; j >= 0; j = nexttex[j]) { voutln4("(%s %s O %o)", vplligops[nlig->op], vchar(j), (unsigned)asub->texnum) ; } } } if (! unlabeled) voutln("(STOP)") ; for (i=bc; i<=ec; i++) if ((ai=texptrs[i]) && ai->texnum == i) { unlabeled = 1 ; if (uppercase[i]==NULL) /* omit ligatures from smallcap lowercase */ for (nlig=ai->ligs; nlig; nlig=nlig->next) if (0 != (asucc=findadobe(nlig->succ))) if (0 != (asub=findadobe(nlig->sub))) if (asucc->texnum>=0) if (asub->texnum>=0) { if (unlabeled) { for (j = ai->texnum; j >= 0; j = nexttex[j]) voutln3("(LABEL %s)%s", vchar(j), vname(j)) ; unlabeled = 0 ; } for (j = asucc->texnum; j >= 0; j = nexttex[j]) { voutln4("(%s %s O %o)", vplligops[nlig->op], vchar(j), (unsigned)asub->texnum) ; if (nlig->boundleft) break ; } } for (nkern = (uppercase[i] ? uppercase[i]->kerns : ai->kerns); nkern; nkern=nkern->next) if (0 != (asucc=findadobe(nkern->succ))) for (j = asucc->texnum; j >= 0; j = nexttex[j]) { if (uppercase[j]==NULL) { if (unlabeled) { for (k = ai->texnum; k >= 0; k = nexttex[k]) voutln3("(LABEL %s)%s", vchar(k), vname(k)) ; unlabeled = 0 ; } /* If other characters have the same kerns as this one, output the label here. This makes the TFM file much smaller than if we output all the kerns again under a different label. */ for (kern_eq = ai->kern_equivs; kern_eq; kern_eq = kern_eq->next) { k = kern_eq->ch->texnum; if (k >= 0 && k < 256) voutln3("(LABEL %s)%s", vchar(k), vname(k)) ; } ai->kern_equivs = 0; /* Only output those labels once. */ if (uppercase[i]) { if (lowercase[j]) { for (k=lowercase[j]->texnum; k >= 0; k = nexttex[k]) voutln4("(KRN %s R %.1f)%s", vchar(k), capheight*nkern->delta, vname(k)) ; } else voutln4("(KRN %s R %.1f)%s", vchar(j), capheight*nkern->delta, vname(j)) ; } else { voutln4("(KRN %s R %d)%s", vchar(j), nkern->delta, vname(j)) ; if (lowercase[j]) for (k=lowercase[j]->texnum; k >= 0; k = nexttex[k]) voutln4("(KRN %s R %.1f)%s", vchar(k), capheight*nkern->delta, vname(k)) ; } } } if (! unlabeled) voutln("(STOP)") ; } vright() ; for (i=bc; i<=ec; i++) if (0 != (ai=texptrs[i])) { vleft() ; fprintf(vplout, "CHARACTER %s", vchar(i)) ; if (*vcharbuf=='C') { voutln("") ; } else voutln2(" (comment %s)", ai->adobename) ; if (uppercase[i]) { ai=uppercase[i] ; voutln2("(CHARWD R %.1f)", capheight * (ai->width)) ; if (0 != (ht=texheight(ai))) voutln2("(CHARHT R %.1f)", capheight * ht) ; if (ai->lly) voutln2("(CHARDP R %.1f)", -capheight * ai->lly) ; if (ai->urx > ai->width) voutln2("(CHARIC R %.1f)", capheight * (ai->urx - ai->width)) ; } else { voutln2("(CHARWD R %d)", ai->width) ; if (0 != (ht=texheight(ai))) voutln2("(CHARHT R %d)", ht) ; if (ai->lly) voutln2("(CHARDP R %d)", -ai->lly) ; if (ai->urx > ai->width) voutln2("(CHARIC R %d)", ai->urx - ai->width) ; } if (ai->adobenum != i || uppercase[i]) { vleft() ; voutln("MAP") ; if (uppercase[i]) voutln("(SELECTFONT D 1)") ; if (ai->pccs && ai->adobenum < 0) { xoff = 0 ; yoff = 0 ; for (npcc = ai->pccs; npcc; npcc=npcc->next) if (0 != (api=findadobe(npcc->partname))) if (api->texnum>=0) { if (npcc->xoffset != xoff) { if (uppercase[i]) { voutln2("(MOVERIGHT R %.1f)", capheight * (npcc->xoffset - xoff)) ; } else voutln2("(MOVERIGHT R %d)", npcc->xoffset - xoff) ; xoff = npcc->xoffset ; } if (npcc->yoffset != yoff) { if (uppercase[i]) { voutln2("(MOVEUP R %.1f)", capheight * (npcc->yoffset - yoff)) ; } else voutln2("(MOVEUP R %d)", npcc->yoffset - yoff) ; yoff = npcc->yoffset ; } voutln2("(SETCHAR O %o)", (unsigned)api->adobenum) ; xoff += texptrs[api->texnum]->width ; } } else voutln2("(SETCHAR O %o)", (unsigned)ai->adobenum) ; vright() ; } vright() ; } if (level) error("! I forgot to match the parentheses") ; } #ifdef KPATHSEA static void version(FILE *f) { extern KPSEDLL char *kpathsea_version_string; fputs ("afm2tfm(k) (dvips(k) 5.98) 8.1\n", f); fprintf (f, "%s\n", kpathsea_version_string); fputs ("Copyright 2009 Radical Eye Software.\n\ There is NO warranty. You may redistribute this software\n\ under the terms of the GNU General Public License\n\ and the Dvips copyright.\n\ For more information about these matters, see the files\n\ named COPYING and afm2tfm.c.\n\ Original author of afm2tfm: T. Rokicki.\n", f); } #define USAGE "\ Convert an Adobe font metric file to TeX font metric format.\n\ \n\ -c REAL use REAL for height of small caps made with -V [0.8]\n\ -e REAL widen (extend) characters by a factor of REAL\n\ -O use octal for all character codes in the vpl file\n\ -p ENCFILE read/download ENCFILE for the PostScript encoding\n\ -s REAL oblique (slant) characters by REAL, generally <<1\n\ -t ENCFILE read ENCFILE for the encoding of the vpl file\n\ -T ENCFILE equivalent to -p ENCFILE -t ENCFILE\n\ -u output only characters from encodings, nothing extra\n\ -v FILE[.vpl] make a VPL file for conversion to VF\n\ -V SCFILE[.vpl] like -v, but synthesize smallcaps as lowercase\n\ --help print this message and exit.\n\ --version print version number and exit.\n\ " static void usage(FILE *f) { extern KPSEDLL char *kpse_bug_address; fputs ("Usage: afm2tfm FILE[.afm] [OPTION]... [FILE[.tfm]]\n", f); fputs (USAGE, f); putc ('\n', f); fputs (kpse_bug_address, f); } #else /* ! KPATHSEA */ static void usage(FILE *f) { (void)fprintf(f, "afm2tfm 8.1, Copyright 1990-97 by Radical Eye Software\n") ; (void)fprintf(f, "Usage: afm2tfm foo[.afm] [-O] [-u] [-v|-V bar[.vpl]]\n") ; (void)fprintf(f, " [-e expansion] [-s slant] [-c capheight]\n") ; (void)fprintf(f, " [-p|-t|-T encodingfile] [foo[.tfm]]\n") ; } #endif #define CHECKARG3 if (argc < 4) { usage(stderr); exit(1); } static void openfiles(int argc, char **argv) { #ifndef KPATHSEA register int lastext ; #endif register int i ; char *p ; int arginc ; tfmout = (FILE *)NULL ; if (argc == 1) { usage(stdout) ; exit(0) ; } #if defined(MSDOS) || defined(OS2) || defined(ATARIST) /* Make VPL file identical to that created under Unix */ (void)sprintf(titlebuf, "afm2tfm %s", argv[1]) ; #else #ifdef VMCMS /* Make VPL file identical to that created under Unix */ (void)sprintf(titlebuf, "afm2tfm %s", argv[1]) ; #else (void)sprintf(titlebuf, "%s %s", argv[0], argv[1]) ; #endif #endif (void)strcpy(inname, argv[1]) ; #ifdef KPATHSEA if (find_suffix(inname) == NULL) (void)strcat(inname, ".afm") ; #else lastext = -1 ; for (i=0; inname[i]; i++) if (inname[i] == '.') lastext = i ; else if (inname[i] == '/' || inname[i] == ':') lastext = -1 ; if (lastext == -1) (void)strcat(inname, ".afm") ; #endif while (argc>2 && *argv[2]=='-') { arginc = 2 ; i = argv[2][1] ; if (i == '/') i = argv[2][2] - 32 ; /* /a ==> A for VMS */ switch (i) { case 'V': makevpl++ ; case 'v': makevpl++ ; CHECKARG3 (void)strcpy(outname, argv[3]) ; #ifdef KPATHSEA if (find_suffix(outname) == NULL) (void)strcat(outname, ".vpl") ; #else lastext = -1 ; for (i=0; outname[i]; i++) if (outname[i] == '.') lastext = i ; else if (outname[i] == '/' || outname[i] == ':') lastext = -1 ; if (lastext == -1) (void)strcat(outname, ".vpl") ; #endif #ifndef VMCMS #ifndef ATARIST if ((vplout=fopen(outname, WRITEBIN))==NULL) #else if ((vplout=fopen(outname, "w"))==NULL) #endif #else if ((vplout=fopen(outname, "w"))==NULL) #endif error("! can't open vpl output file") ; break ; case 'e': CHECKARG3 if (sscanf(argv[3], "%f", &efactor)==0 || efactor<0.01) error("! Bad extension factor") ; efactorparam = argv[3] ; break ; case 'c': CHECKARG3 if (sscanf(argv[3], "%f", &capheight)==0 || capheight<0.01) error("! Bad small caps height") ; break ; case 's': CHECKARG3 if (sscanf(argv[3], "%f", &slant)==0) error("! Bad slant parameter") ; slantparam = argv[3] ; break ; case 'P': case 'p': CHECKARG3 inenname = argv[3] ; break ; case 'T': CHECKARG3 inenname = outenname = argv[3] ; break ; case 't': CHECKARG3 outenname = argv[3] ; break ; case 'O': forceoctal = 1 ; arginc = 1 ; break ; case 'u': pedantic = 1 ; arginc = 1 ; break ; default: (void)fprintf(stderr, "Unknown option %s %s will be ignored.\n", argv[2], argv[3]) ; } for (i=0; i3 || (argc==3 && *argv[2]=='-')) { error("! need at most two non-option arguments") ; usage(stderr) ; } if (argc == 2) (void)strcpy(outname, inname) ; else (void)strcpy(outname, argv[2]) ; #ifdef KPATHSEA if ((p = find_suffix(outname)) != NULL) *(p-1) = 0; (void)strcat(outname, ".tfm") ; if (tfmout == NULL && (tfmout=fopen(outname, WRITEBIN))==NULL) error("! can't open tfm output file") ; /* * Now we strip off any directory information, so we only use the * base name in the vf file. */ if (p == NULL) p = find_suffix(outname); *(p-1) = 0; p = (char *)xbasename(outname) ; strcpy(tmpstr, p); /* be careful, p and outname are overlapping */ strcpy(outname, tmpstr); #else lastext = -1 ; for (i=0; outname[i]; i++) if (outname[i] == '.') lastext = i ; else if (outname[i] == '/' || outname[i] == ':' || outname[i] == '\\') lastext = -1 ; if (argc == 2) { outname[lastext] = 0 ; lastext = -1 ; } if (lastext == -1) { lastext = strlen(outname) ; (void)strcat(outname, ".tfm") ; } if (tfmout == NULL && (tfmout=fopen(outname, WRITEBIN))==NULL) error("! can't open tfm output file") ; outname[lastext] = 0 ; /* * Now we strip off any directory information, so we only use the * base name in the vf file. We accept any of /, :, or \ as directory * delimiters, so none of these are available for use inside the * base name; this shouldn't be a problem. */ for (i=0, lastext=0; outname[i]; i++) if (outname[i] == '/' || outname[i] == ':' || outname[i] == '\\') lastext = i + 1 ; if (lastext) strcpy(outname, outname + lastext) ; #endif } /* * Some routines to remove kerns that match certain patterns. */ static struct kern * rmkernmatch(struct kern *k, char *s) { struct kern *nkern ; while (k && strcmp(k->succ, s)==0) k = k->next ; if (k) { for (nkern = k; nkern; nkern = nkern->next) while (nkern->next && strcmp(nkern->next->succ, s)==0) nkern->next = nkern->next->next ; } return k ; } /* * Recursive to one level. */ static void rmkern(char *s1, char *s2, struct adobeinfo *ai) { if (ai == 0) { if (strcmp(s1, "*") == 0) { for (ai=adobechars; ai; ai = ai->next) rmkern(s1, s2, ai) ; return ; } else { ai = findadobe(s1) ; if (ai == 0) return ; } } if (strcmp(s2, "*")==0) ai->kerns = 0 ; /* drop them on the floor */ else ai->kerns = rmkernmatch(ai->kerns, s2) ; } /* Make the kerning for character S1 equivalent to that for S2. If either S1 or S2 do not exist, do nothing. If S1 already has kerning, do nothing. */ static void addkern(char *s1, char *s2) { struct adobeinfo *ai1 = findadobe (s1); struct adobeinfo *ai2 = findadobe (s2); if (ai1 && ai2 && !ai1->kerns) { /* Put the new one at the head of the list, since order is immaterial. */ struct adobeptr *ap = (struct adobeptr *) mymalloc((unsigned long)sizeof(struct adobeptr)); ap->next = ai2->kern_equivs; ap->ch = ai1; ai2->kern_equivs = ap; } } int sawligkern ; /* * Reads a ligkern line, if this is one. Assumes the first character * passed is `%'. */ static void checkligkern(char *s) { char *oparam = param ; char *mlist[5] ; int n ; s++ ; while (*s && *s <= ' ') s++ ; if (strncmp(s, "LIGKERN", 7)==0) { sawligkern = 1 ; s += 7 ; while (*s && *s <= ' ') s++ ; param = s ; while (*param) { for (n=0; n<5;) { if (*param == 0) break ; mlist[n] = paramstring() ; if (strcmp(mlist[n], ";") == 0) break ; n++ ; } if (n > 4) error("! too many parameters in lig kern data") ; if (n < 3) error("! too few parameters in lig kern data") ; if (n == 3 && strcmp(mlist[1], "{}") == 0) { /* rmkern command */ rmkern(mlist[0], mlist[2], (struct adobeinfo *)0) ; } else if (n == 3 && strcmp(mlist[1], "<>") == 0) { /* addkern */ addkern(mlist[0], mlist[2]) ; } else if (n == 3 && strcmp(mlist[0], "||") == 0 && strcmp(mlist[1], "=") == 0) { /* bc command */ struct adobeinfo *ai = findadobe("||") ; if (boundarychar != -1) error("! multiple boundary character commands?") ; if (sscanf(mlist[2], "%d", &n) != 1) error("! expected number assignment for boundary char") ; if (n < 0 || n > 255) error("! boundary character number must be 0..255") ; boundarychar = n ; if (ai == 0) error("! internal error: boundary char") ; ai->texnum = n ; /* prime the pump, so to speak, for lig/kerns */ } else if (n == 4) { int op = -1 ; struct adobeinfo *ai ; for (n=0; encligops[n]; n++) if (strcmp(mlist[2], encligops[n])==0) { op = n ; break ; } if (op < 0) error("! bad ligature op specified") ; if (0 != (ai = findadobe(mlist[0]))) { struct lig *lig ; if (findadobe(mlist[2])) /* remove coincident kerns */ rmkern(mlist[0], mlist[1], ai) ; if (strcmp(mlist[3], "||") == 0) error("! you can't lig to the boundary character!") ; if (! fixedpitch) { /* fixed pitch fonts get *0* ligs */ for (lig=ai->ligs; lig; lig = lig->next) if (strcmp(lig->succ, mlist[1]) == 0) break ; /* we'll re-use this structure */ if (lig == 0) { lig = newlig() ; lig->succ = newstring(mlist[1]) ; lig->next = ai->ligs ; ai->ligs = lig ; } lig->sub = newstring(mlist[3]) ; lig->op = op ; if (strcmp(mlist[1], "||")==0) { lig->boundleft = 1 ; if (strcmp(mlist[0], "||")==0) error("! you can't lig boundarychar boundarychar!") ; } else lig->boundleft = 0 ; } } } else error("! bad form in LIGKERN command") ; } } param = oparam ; } /* * Here we get a token from the AFM file. We parse just as much PostScript * as we expect to find in an encoding file. We allow commented lines and * names like 0, .notdef, _foo_. We do not allow //abc. */ char smbuffer[100] ; /* for tokens */ static char * gettoken(void) { char *p, *q ; while (1) { while (param == 0 || *param == 0) { if (texlive_getline() == 0) error("! premature end in encoding file") ; for (p=buffer; *p; p++) if (*p == '%') { if (ignoreligkern == 0) checkligkern(p) ; *p = 0 ; break ; } } while (*param && *param <= ' ') param++ ; if (*param) { if (*param == '[' || *param == ']' || *param == '{' || *param == '}') { smbuffer[0] = *param++ ; smbuffer[1] = 0 ; return smbuffer ; } else if (*param == '/' || *param == '-' || *param == '_' || *param == '.' || ('0' <= *param && *param <= '9') || ('a' <= *param && *param <= 'z') || ('A' <= *param && *param <= 'Z')) { smbuffer[0] = *param ; for (p=param+1, q=smbuffer+1; *p == '-' || *p == '_' || *p == '.' || ('0' <= *p && *p <= '9') || ('a' <= *p && *p <= 'z') || ('A' <= *p && *p <= 'Z'); p++, q++) *q = *p ; *q = 0 ; param = p ; return smbuffer ; } } } } static void getligkerndefaults(void) { int i ; for (i=0; staticligkern[i]; i++) { strcpy(buffer, staticligkern[i]) ; strcpy(obuffer, staticligkern[i]) ; param = buffer ; checkligkern(buffer) ; } } /* * This routine reads in an encoding file, given the name. It returns * the final total structure. It performs a number of consistency checks. */ static struct encoding * readencoding(char *enc) { char *p ; int i ; struct encoding *e = (struct encoding *)mymalloc((unsigned long)sizeof(struct encoding)) ; sawligkern = 0 ; if (afmin) error("! oops; internal afmin error") ; if (enc) { #ifdef KPATHSEA afmin = kpse_open_file(enc, kpse_enc_format); #else afmin = fopen(enc, "r") ; #endif (void)SET_BINARY(fileno(afmin)) ; param = 0 ; if (afmin == 0) #ifdef KPATHSEA FATAL1 ("couldn't open encoding file `%s'", enc) ; #else error("! couldn't open that encoding file") ; #endif p = gettoken() ; if (*p != '/' || p[1] == 0) error("! first token in encoding must be literal encoding name") ; e->name = newstring(p+1) ; p = gettoken() ; if (strcmp(p, "[")) error("! second token in encoding must be mark ([) token") ; for (i=0; i<256; i++) { p = gettoken() ; if (*p != '/' || p[1] == 0) error("! tokens 3 to 257 in encoding must be literal names") ; e->vec[i] = newstring(p+1) ; } p = gettoken() ; if (strcmp(p, "]")) error("! token 258 in encoding must be make-array (])") ; while (texlive_getline()) { for (p=buffer; *p; p++) if (*p == '%') { if (ignoreligkern == 0) checkligkern(p) ; *p = 0 ; break ; } } fclose(afmin) ; afmin = 0 ; if (ignoreligkern == 0 && sawligkern == 0) getligkerndefaults() ; } else { e = &staticencoding ; getligkerndefaults() ; } param = 0 ; return e ; } /* * This routine prints out the line that needs to be added to psfonts.map. */ static void conspsfonts(void) { #ifndef VMCMS (void)printf("%s %s", outname, fontname) ; #else /* VM/CMS: fontname is ascii, so we use ebfontname */ (void)printf("%s %s", outname, ebfontname) ; #endif if (slantparam || efactorparam || inenname) { (void)printf(" \"") ; if (slantparam) (void)printf(" %s SlantFont", slantparam) ; if (efactorparam) (void)printf(" %s ExtendFont", efactorparam) ; if (inenname) (void)printf(" %s ReEncodeFont", inencoding->name) ; (void)printf(" \"") ; if (inenname) (void)printf(" <%s", inenname) ; } (void)printf("\n") ; } #ifndef VMS int #endif main(int argc, char **argv) { int i ; #ifdef KPATHSEA kpse_set_program_name (argv[0], "afm2tfm"); if (argc == 1) { fputs ("afm2tfm: Need at least one file argument.\n", stderr); fputs ("Try `afm2tfm --help' for more information.\n", stderr); exit(1); } if (argc == 2) { if (strcmp (argv[1], "--help") == 0) { usage (stdout); exit (0); } else if (strcmp (argv[1], "--version") == 0) { version (stdout); exit (0); } } #endif /* KPATHSEA */ for (i=0; i<256; i++) nexttex[i] = -1 ; /* encoding chains have length 0 */ tfmdata = (long *)mymalloc((unsigned long)40000L) ; openfiles(argc, argv) ; readadobe() ; if (fontspace == 0) { struct adobeinfo *ai ; if (0 != (ai = findadobe("space"))) fontspace = ai->width ; else if (adobeptrs[32]) fontspace = adobeptrs[32]->width ; else fontspace = transform(500, 0) ; } handlereencoding() ; buildtfm() ; writetfm() ; conspsfonts() ; if (makevpl) { assignchars() ; if (makevpl>1) upmap() ; writevpl() ; } return 0 ; /*NOTREACHED*/ } dvipsk_TexLive-2009-stripped/color.c0000644000175000017500000001531511372532227017365 0ustar uwabamiuwabami/* * This is a set of routines for dvips that are used to process color * commands in the TeX file (passed by \special commands). This was * orignally written by J. Hafner, E. Blanz and M. Flickner of IBM * Research, Almaden Research Center. Contact hafner@almaden.ibm.com. * And then it was completely rewritten by Tomas Rokicki to: * * - Be easier on the memory allocator (malloc/free) * - Use less memory overall (by a great deal) and be faster * - Work with the -C, -a, and other options * - Be more adaptable to other drivers and previewers. * * The motivating idea: we want to be able to process 5,000 page * documents using lots of colors on each page on a 640K IBM PC * relatively quickly. */ #include "dvips.h" /* The copyright notice in that file is included too! */ #include /* * Externals we use. */ #include "protos.h" extern integer pagenum ; extern FILE *dvifile ; /* * Here we set some limits on some color stuff. */ #define COLORHASH (89) #define MAXCOLORLEN (120) /* maximum color length for background */ #define INITCOLORLEN (3000) /* initial stack size in chars */ /* * This is where we store the color information for a particular page. * If we free all of these, we free all of the allocated color * stuff; we do no allocations (but one) other than when we allocate * these. */ static struct colorpage { struct colorpage *next ; integer boploc ; /* we use the bop loc as a page indicator */ char *bg ; char colordat[2] ; } *colorhash[COLORHASH] ; static char *cstack, *csp, *cend, *bg ; /* * This routine sends a color command out. If the command is a * single `word' or starts with a double quote, we send it out * exactly as is (except for any double quote.) If the command * is a word followed by arguments, we send out the arguments and * then the word prefixed by "TeXcolor". */ void colorcmdout(char *s) { char *p ; char tempword[100] ; while (*s && *s <= ' ') s++ ; if (*s == '"') { cmdout(s+1) ; return ; } for (p=s; *p && *p > ' '; p++) ; for (; *p && *p <= ' '; p++) ; if (*p == 0) { cmdout(s) ; return ; } cmdout(p) ; strcpy(tempword, "TeXcolor") ; for (p=tempword + strlen(tempword); *s && *s > ' '; p++, s++) *p = *s ; *p = 0 ; cmdout(tempword) ; return ; } /* * For a new dvi file, call this. Frees all allocated memory. */ #define DEFAULTCOLOR "Black" void initcolor(void) { int i ; struct colorpage *p, *q ; for (i=0; inext ; free(p) ; } colorhash[i] = 0 ; } cstack = (char *)mymalloc(INITCOLORLEN) ; strcpy(cstack, "\n") ; strcat(cstack, DEFAULTCOLOR) ; csp = cstack + strlen(cstack) ; cend = cstack + INITCOLORLEN - 3 ; /* for conservativeness */ bg = 0 ; } /* * This takes a call from predospecial to set the background color for * the current page. It is saved in stackdepth and backed down the * stack during popcolors. */ void background(char *bkgrnd) { if (bkgrnd && *bkgrnd) { if (strlen(bkgrnd) > MAXCOLORLEN) error(" color name too long; ignored") ; else strcpy(bg, bkgrnd) ; } } /* * This routine puts a call from \special for color on the colorstack * and sets the color in the PostScript. */ void pushcolor(char *p, Boolean outtops) { while (strlen(p) + csp > cend) { int newlen = 3 * (cend - cstack) ; char *newcs = (char *)mymalloc(newlen) ; strcpy(newcs, cstack) ; csp = newcs + (csp - cstack) ; cend = newcs + newlen - 3 ; cstack = newcs ; } *csp++ = '\n' ; strcpy(csp, p) ; csp += strlen(p) ; if (outtops) { colorcmdout(p) ; } } /* * This routine removes a color from the colorstack and resets the color * in the PostScript to the previous color. */ void popcolor(Boolean outtops) { char *p = csp - 1 ; while (p >= cstack && *p != '\n') p-- ; if (p == cstack) return ; /* We don't pop the last color as that is global */ *p = 0 ; csp = p ; for (p--; p >= cstack && *p != '\n'; p--) ; p++ ; if ( outtops ) { colorcmdout(p) ; } } /* * This routine clears the colorstack, pushes a new color onto the stack * (this is now the root or global color). */ void resetcolorstack(char * p, int outtops) { char *q = csp - 1 ; while (q > cstack && *q != '\n') q-- ; if (q > cstack && outtops == 0) { #ifdef SHORTINT (void)fprintf(stderr, "You've mistakenly made a global color change ") ; (void)fprintf(stderr, "to %s within nested colors\n", p) ; (void)fprintf(stderr, "on page %ld. Will try to recover.\n", pagenum) ; #else /* ~SHORTINT */ (void)fprintf(stderr, "You've mistakenly made a global color change ") ; (void)fprintf(stderr, "to %s within nested colors\n", p) ; (void)fprintf(stderr, "on page %d. Will try to recover.\n", pagenum) ; #endif /* ~SHORTINT */ } csp = cstack ; *csp = 0 ; pushcolor(p, outtops) ; } /* * This routine is a bit magic. It looks up the page in the current * hash table. If the page is already entered in the hash table, then * it restores the color to what that page had, and sets the last * color. This will occur if this is not the first time that this * page has been encountered. * * If, on the other hand, this is the first time that the page has * been encountered, then it will create a new hash entry and copy the * current color information into it. Since we can only encounter a * new page after having just finished scanning the previous page, * this is safe. */ void bopcolor(int outtops) { integer pageloc = ftell(dvifile) ; int h = pageloc % COLORHASH ; struct colorpage *p = colorhash[h] ; while (p) { if (p->boploc == pageloc) break ; else p = p->next ; } if (p) { strcpy(cstack, p->colordat) ; csp = cstack + strlen(cstack) ; bg = p->bg ; if (outtops && strcmp(bg, "White")!=0 && bg[0]) { cmdout("gsave") ; colorcmdout(bg) ; cmdout("clippath fill grestore") ; } } else { p = (struct colorpage *)mymalloc((integer) (strlen(cstack) + sizeof(struct colorpage) + MAXCOLORLEN)) ; p->next = colorhash[h] ; p->boploc = pageloc ; strcpy(p->colordat, cstack) ; p->bg = p->colordat + strlen(cstack) + 1 ; if (bg) strcpy(p->bg, bg) ; else *(p->bg) = 0 ; bg = p->bg ; colorhash[h] = p ; } if (outtops) { char *pp = csp - 1 ; while (pp >= cstack && *pp != '\n') pp-- ; pp++ ; if (strcmp(pp, DEFAULTCOLOR)!=0) { colorcmdout(pp) ; } } } dvipsk_TexLive-2009-stripped/config.ps0000644000175000017500000003671211372532227017720 0ustar uwabamiuwabami% $Id: config.ps 15465 2009-09-26 18:30:44Z karl $ % config.ps - configuration file for dvips. % Tomas Rokicki, Thomas Esser, Karl Berry, et al., 1986ff, public domain. % Memory available. Download the three-line PostScript file: % %! Hey, we're PostScript % /Times-Roman findfont 30 scalefont setfont 144 432 moveto % vmstatus exch sub 40 string cvs show pop showpage % to determine this number. (It will be the only thing printed.) m 3500000 % Run securely. z2 disables both shell command execution in % `\special' and config files (via the `E' option) and opening of any % absolute filenames. z1, the default, forbids shell escapes but % allows absolute filenames. z0 allows both. The corresponding % command line options are -R0|-R1|-R2 z1 % How to print, maybe with lp instead lpr, etc. If commented-out, output % will go into a file by default. %o |lpr % Default resolution of this device, in dots per inch. D 600 X 600 Y 600 % Metafont mode. (This is completely different from the -M % command-line option, which controls whether mktexpk is invoked.) % See ../../metafont/misc/modes.mf for a list of mode names. This mode % and the D number above must agree, or mktexpk will get confused. M ljfour % Last resort bitmap sizes. R 300 600 % Correct printer offset. You can use testpage.tex from the LaTeX % distribution to find these numbers. O 0pt,0pt % Bitmap font compression. Results in more compact output files, but % sometimes causes trouble. So the default is disabled. Set Z1 to enable % this feature. Z0 % Partially download Type 1 fonts by default. Only reason not to do % this is if you encounter bugs. (Please report them to % @email{tex-k@tug.org} if you do.) j % This shows how to add your own map file. % Remove the comment and adjust the name: % p +myfonts.map % In the past, the a4size and letterSize definitions did not set the % paper size, but we want to set it if we can so that ps2pdf can work % properly. So, a4 and a4size, and letter and letterSize, are made % identical here, and we prefer the a4/letter names -- texconfig uses them. % % In the definitions below, if we have setpagedevice, use that. % Else if we have the a4 resp. letter operator, use that. % Else do nothing to set the page size. % % If you need to have no paper size stuff in the output at all, e.g., if % you are producing a multi-page document for further processing, use % -tnopaper (defined at end). (With a single-page document, you can use -E.) % % emacs-page @ a4 210mm 297mm @+ ! %%DocumentPaperSizes: a4 @+ %%BeginPaperSize: a4 @+ /setpagedevice where @+ { pop << /PageSize [595 842] >> setpagedevice } @+ { /a4 where { pop a4 } if } @+ ifelse @+ %%EndPaperSize @ letter 8.5in 11in @+ ! %%DocumentPaperSizes: Letter @+ %%BeginPaperSize: Letter @+ /setpagedevice where @+ { pop << /PageSize [612 792] >> setpagedevice } @+ { /letter where { pop letter } if } @+ ifelse @+ %%EndPaperSize @ a4size 210mm 297mm @+ ! %%DocumentPaperSizes: a4 @+ %%BeginPaperSize: a4 @+ /setpagedevice where @+ { pop << /PageSize [595 842] >> setpagedevice } @+ { /a4 where { pop a4 } if } @+ ifelse @+ %%EndPaperSize @ letterSize 8.5in 11in @+ ! %%DocumentPaperSizes: Letter @+ %%BeginPaperSize: Letter @+ /setpagedevice where @+ { pop << /PageSize [612 792] >> setpagedevice } @+ { /letter where { pop letter } if } @+ ifelse @+ %%EndPaperSize % The jacow paper size is the smaller of letter and a4 in both % dimensions, and can therefore hopefully be printed on either paper % size. As far as we know, Volker Schaa first used it for the JACOW % conference proceedings that he produced. @ jacow 210mm 11in @+ ! %%DocumentPaperSizes: jacow @+ %%BeginPaperSize: jacow @+ /setpagedevice where @+ { pop << /PageSize [595 792] >> setpagedevice } @+ if @+ %%EndPaperSize % The smallbook paper size has been used by the Free Software Foundation % to print manuals for many years, and is part of Texinfo. @ smallbook 7in 9.25in @+ ! %%DocumentPaperSizes: smallbook @+ %%BeginPaperSize: smallbook @+ /setpagedevice where @+ { pop << /PageSize [504 666] >> setpagedevice } @+ if @+ %%EndPaperSize @ halfexecutive 133mm 184mm @+ ! %%DocumentPaperSizes: halfexecutive @+ %%BeginPaperSize: halfexecutive @+ /setpagedevice where @+ { pop << /PageSize [378 522] >> setpagedevice } @+ if @+ %%EndPaperSize @ halfletter 140mm 216mm @+ ! %%DocumentPaperSizes: halfletter @+ %%BeginPaperSize: halfletter @+ /setpagedevice where @+ { pop << /PageSize [396 612] >> setpagedevice } @+ if @+ %%EndPaperSize @ statement 140mm 216mm @+ ! %%DocumentPaperSizes: statement @+ %%BeginPaperSize: statement @+ /setpagedevice where @+ { pop << /PageSize [396 612] >> setpagedevice } @+ if @+ %%EndPaperSize @ executive 184mm 267mm @+ ! %%DocumentPaperSizes: executive @+ %%BeginPaperSize: executive @+ /setpagedevice where @+ { pop << /PageSize [522 756] >> setpagedevice } @+ if @+ %%EndPaperSize % for powerdot @ screen 8.25in 11in @+ ! %%DocumentPaperSizes: Screen @+ %%BeginPaperSize: Screen @+ /setpagedevice where @+ { pop << /PageSize [594 792] >> setpagedevice } @+ if @+ %%EndPaperSize % a common size for printers (in north america). @ sixbynine 6in 9in @+ ! %%DocumentPaperSizes: SixByNine @+ %%BeginPaperSize: SixByNine @+ /setpagedevice where @+ { pop << /PageSize [432 648] >> setpagedevice } @+ if @+ %%EndPaperSize @ quarto 215mm 275mm @+ ! %%DocumentPaperSizes: quarto @+ %%BeginPaperSize: quarto @+ /setpagedevice where @+ { pop << /PageSize [610 780] >> setpagedevice } @+ if @+ %%EndPaperSize @ note 216mm 279mm @+ ! %%DocumentPaperSizes: note @+ %%BeginPaperSize: note @+ /setpagedevice where @+ { pop << /PageSize [612 792] >> setpagedevice } @+ if @+ %%EndPaperSize @ folio 216mm 330mm @+ ! %%DocumentPaperSizes: folio @+ %%BeginPaperSize: folio @+ /setpagedevice where @+ { pop << /PageSize [612 936] >> setpagedevice } @+ if @+ %%EndPaperSize @ legal 8.5in 14in @+ ! %%DocumentPaperSizes: Legal @+ %%BeginPaperSize: Legal @+ /setpagedevice where @+ { pop << /PageSize [612 1008] >> setpagedevice } @+ if @+ %%EndPaperSize @ 10x14 10in 14in @+ ! %%DocumentPaperSizes: 10x14 @+ %%BeginPaperSize: 10x14 @+ /setpagedevice where @+ { pop << /PageSize [720 1008] >> setpagedevice } @+ if @+ %%EndPaperSize @ ledger 17in 11in @+ ! %%DocumentPaperSizes: Ledger @+ %%BeginPaperSize: Ledger @+ /setpagedevice where @+ { pop << /PageSize [1224 792] >> setpagedevice } @+ if @+ %%EndPaperSize @ tabloid 11in 17in @+ ! %%DocumentPaperSizes: Tabloid @+ %%BeginPaperSize: Tabloid @+ /setpagedevice where @+ { pop << /PageSize [792 1224] >> setpagedevice } @+ if @+ %%EndPaperSize @ 11x17 11in 17in @+ ! %%DocumentPaperSizes: 11x17 @+ %%BeginPaperSize: 11x17 @+ /setpagedevice where @+ { pop << /PageSize [792 1224] >> setpagedevice } @+ if @+ %%EndPaperSize @ a0 841mm 1189mm @+ ! %%DocumentPaperSizes: a0 @+ %%BeginPaperSize: a0 @+ /setpagedevice where @+ { pop << /PageSize [2384 3370] >> setpagedevice } @+ { /a0 where { pop a0 } if } @+ ifelse @+ %%EndPaperSize @ a1 594mm 841mm @+ ! %%DocumentPaperSizes: a1 @+ %%BeginPaperSize: a1 @+ /setpagedevice where @+ { pop << /PageSize [1684 2384] >> setpagedevice } @+ { /a1 where { pop a1 } if } @+ ifelse @+ %%EndPaperSize @ a2 420mm 594mm @+ ! %%DocumentPaperSizes: a2 @+ %%BeginPaperSize: a2 @+ /setpagedevice where @+ { pop << /PageSize [1191 1684] >> setpagedevice } @+ { /a2 where { pop a2 } if } @+ ifelse @+ %%EndPaperSize @ a3 297mm 420mm @+ ! %%DocumentPaperSizes: a3 @+ %%BeginPaperSize: a3 @+ /setpagedevice where @+ { pop << /PageSize [842 1191] >> setpagedevice } @+ { /a3 where { pop a3 } if } @+ ifelse @+ %%EndPaperSize @ a5 148mm 210mm @+ ! %%DocumentPaperSizes: a5 @+ %%BeginPaperSize: a5 @+ /setpagedevice where @+ { pop << /PageSize [420 595] >> setpagedevice } @+ { /a5 where { pop a5 } if } @+ ifelse @+ %%EndPaperSize @ a6 105mm 148mm @+ ! %%DocumentPaperSizes: a6 @+ %%BeginPaperSize: a6 @+ /setpagedevice where @+ { pop << /PageSize [298 420] >> setpagedevice } @+ { /a6 where { pop a6 } if } @+ ifelse @+ %%EndPaperSize @ a7 74mm 105mm @+ ! %%DocumentPaperSizes: a7 @+ %%BeginPaperSize: a7 @+ /setpagedevice where @+ { pop << /PageSize [210 298] >> setpagedevice } @+ { /a7 where { pop a7 } if } @+ ifelse @+ %%EndPaperSize @ a8 52mm 74mm @+ ! %%DocumentPaperSizes: a8 @+ %%BeginPaperSize: a8 @+ /setpagedevice where @+ { pop << /PageSize [147 210] >> setpagedevice } @+ { /a8 where { pop a8 } if } @+ ifelse @+ %%EndPaperSize @ a9 37mm 52mm @+ ! %%DocumentPaperSizes: a9 @+ %%BeginPaperSize: a9 @+ /setpagedevice where @+ { pop << /PageSize [105 147] >> setpagedevice } @+ { /a9 where { pop a9 } if } @+ ifelse @+ %%EndPaperSize @ a10 26mm 37mm @+ ! %%DocumentPaperSizes: a10 @+ %%BeginPaperSize: a10 @+ /setpagedevice where @+ { pop << /PageSize [74 105] >> setpagedevice } @+ { /a10 where { pop a10 } if } @+ ifelse @+ %%EndPaperSize @ jisb0 1030mm 1456mm @+ ! %%DocumentPaperSizes: jisb0 @+ %%BeginPaperSize: jisb0 @+ /setpagedevice where @+ { pop << /PageSize [2920 4127] >> setpagedevice } @+ { /jisb0 where { pop jisb0 } if } @+ ifelse @+ %%EndPaperSize @ jisb1 728mm 1030mm @+ ! %%DocumentPaperSizes: jisb1 @+ %%BeginPaperSize: jisb1 @+ /setpagedevice where @+ { pop << /PageSize [2064 2920] >> setpagedevice } @+ { /jisb1 where { pop jisb1 } if } @+ ifelse @+ %%EndPaperSize @ jisb2 515mm 728mm @+ ! %%DocumentPaperSizes: jisb2 @+ %%BeginPaperSize: jisb2 @+ /setpagedevice where @+ { pop << /PageSize [1460 2064] >> setpagedevice } @+ { /jisb2 where { pop jisb2 } if } @+ ifelse @+ %%EndPaperSize @ jisb3 364mm 515mm @+ ! %%DocumentPaperSizes: jisb3 @+ %%BeginPaperSize: jisb3 @+ /setpagedevice where @+ { pop << /PageSize [1032 1460] >> setpagedevice } @+ { /jisb3 where { pop jisb3 } if } @+ ifelse @+ %%EndPaperSize @ jisb4 257mm 364mm @+ ! %%DocumentPaperSizes: jisb4 @+ %%BeginPaperSize: jisb4 @+ /setpagedevice where @+ { pop << /PageSize [729 1032] >> setpagedevice } @+ { /jisb4 where { pop jisb4 } if } @+ ifelse @+ %%EndPaperSize @ jisb5 182mm 257mm @+ ! %%DocumentPaperSizes: jisb5 @+ %%BeginPaperSize: jisb5 @+ /setpagedevice where @+ { pop << /PageSize [516 729] >> setpagedevice } @+ { /jisb5 where { pop jisb5 } if } @+ ifelse @+ %%EndPaperSize @ jisb6 128mm 182mm @+ ! %%DocumentPaperSizes: jisb6 @+ %%BeginPaperSize: jisb6 @+ /setpagedevice where @+ { pop << /PageSize [363 516] >> setpagedevice } @+ { /jisb6 where { pop jisb6 } if } @+ ifelse @+ %%EndPaperSize @ jisb7 91mm 128mm @+ ! %%DocumentPaperSizes: jisb7 @+ %%BeginPaperSize: jisb7 @+ /setpagedevice where @+ { pop << /PageSize [258 363] >> setpagedevice } @+ { /jisb7 where { pop jisb7 } if } @+ ifelse @+ %%EndPaperSize @ jisb8 64mm 91mm @+ ! %%DocumentPaperSizes: jisb8 @+ %%BeginPaperSize: jisb8 @+ /setpagedevice where @+ { pop << /PageSize [181 258] >> setpagedevice } @+ { /jisb8 where { pop jisb8 } if } @+ ifelse @+ %%EndPaperSize @ b0 1000mm 1414mm @+ ! %%DocumentPaperSizes: b0 @+ %%BeginPaperSize: b0 @+ /setpagedevice where @+ { pop << /PageSize [2835 4008] >> setpagedevice } @+ { /b0 where { pop b0 } if } @+ ifelse @+ %%EndPaperSize @ b1 707mm 1000mm @+ ! %%DocumentPaperSizes: b1 @+ %%BeginPaperSize: b1 @+ /setpagedevice where @+ { pop << /PageSize [2004 2835] >> setpagedevice } @+ { /b1 where { pop b1 } if } @+ ifelse @+ %%EndPaperSize @ b2 500mm 707mm @+ ! %%DocumentPaperSizes: b2 @+ %%BeginPaperSize: b2 @+ /setpagedevice where @+ { pop << /PageSize [1417 2004] >> setpagedevice } @+ { /b2 where { pop b2 } if } @+ ifelse @+ %%EndPaperSize @ b3 353mm 500mm @+ ! %%DocumentPaperSizes: b3 @+ %%BeginPaperSize: b3 @+ /setpagedevice where @+ { pop << /PageSize [1001 1417] >> setpagedevice } @+ { /b3 where { pop b3 } if } @+ ifelse @+ %%EndPaperSize @ b4 250mm 353mm @+ ! %%DocumentPaperSizes: b4 @+ %%BeginPaperSize: b4 @+ /setpagedevice where @+ { pop << /PageSize [709 1001] >> setpagedevice } @+ { /b4 where { pop b4 } if } @+ ifelse @+ %%EndPaperSize @ b5 176mm 250mm @+ ! %%DocumentPaperSizes: b5 @+ %%BeginPaperSize: b5 @+ /setpagedevice where @+ { pop << /PageSize [499 709] >> setpagedevice } @+ { /b5 where { pop b5 } if } @+ ifelse @+ %%EndPaperSize @ b6 125mm 176mm @+ ! %%DocumentPaperSizes: b6 @+ %%BeginPaperSize: b6 @+ /setpagedevice where @+ { pop << /PageSize [354 499] >> setpagedevice } @+ { /b6 where { pop b6 } if } @+ ifelse @+ %%EndPaperSize @ c5 162mm 229mm @+ ! %%DocumentPaperSizes: c5 @+ %%BeginPaperSize: c5 @+ /setpagedevice where @+ { pop << /PageSize [459 649] >> setpagedevice } @+ { /c5 where { pop c5 } if } @+ ifelse @+ %%EndPaperSize @ DL 110mm 220mm @+ ! %%DocumentPaperSizes: DL @+ %%BeginPaperSize: DL @+ /setpagedevice where @+ { pop << /PageSize [312 624] >> setpagedevice } @+ if @+ %%EndPaperSize @ Comm10 105mm 241mm @+ ! %%DocumentPaperSizes: Comm10 @+ %%BeginPaperSize: Comm10 @+ /setpagedevice where @+ { pop << /PageSize [297 684] >> setpagedevice } @+ if @+ %%EndPaperSize @ Monarch 98.4mm 190.5mm @+ ! %%DocumentPaperSizes: Monarch @+ %%BeginPaperSize: Monarch @+ /setpagedevice where @+ { pop << /PageSize [279 540] >> setpagedevice } @+ if @+ %%EndPaperSize @ archE 36in 48in @+ ! %%DocumentPaperSizes: archE @+ %%BeginPaperSize: archE @+ /setpagedevice where @+ { pop << /PageSize [2592 3456] >> setpagedevice } @+ if @+ %%EndPaperSize @ archD 24in 36in @+ ! %%DocumentPaperSizes: archD @+ %%BeginPaperSize: archD @+ /setpagedevice where @+ { pop << /PageSize [1728 2592] >> setpagedevice } @+ if @+ %%EndPaperSize @ archC 18in 24in @+ ! %%DocumentPaperSizes: archC @+ %%BeginPaperSize: archC @+ /setpagedevice where @+ { pop << /PageSize [1296 1728] >> setpagedevice } @+ if @+ %%EndPaperSize @ archB 12in 18in @+ ! %%DocumentPaperSizes: archB @+ %%BeginPaperSize: archB @+ /setpagedevice where @+ { pop << /PageSize [864 1296] >> setpagedevice } @+ if @+ %%EndPaperSize @ archA 9in 12in @+ ! %%DocumentPaperSizes: archA @+ %%BeginPaperSize: archA @+ /setpagedevice where @+ { pop << /PageSize [648 864] >> setpagedevice } @+ if @+ %%EndPaperSize @ flsa 216mm 330.2mm @+ ! %%DocumentPaperSizes: flsa @+ %%BeginPaperSize: flsa @+ /setpagedevice where @+ { pop << /PageSize [612 936] >> setpagedevice } @+ if @+ %%EndPaperSize @ flse 216mm 330.2mm @+ ! %%DocumentPaperSizes: flse @+ %%BeginPaperSize: flse @+ /setpagedevice where @+ { pop << /PageSize [612 936] >> setpagedevice } @+ if @+ %%EndPaperSize @ csheet 431.8mm 558.8mm @+ ! %%DocumentPaperSizes: csheet @+ %%BeginPaperSize: csheet @+ /setpagedevice where @+ { pop << /PageSize [1224 1584] >> setpagedevice } @+ if @+ %%EndPaperSize @ dsheet 558.8mm 863.6mm @+ ! %%DocumentPaperSizes: dsheet @+ %%BeginPaperSize: dsheet @+ /setpagedevice where @+ { pop << /PageSize [1584 2448] >> setpagedevice } @+ if @+ %%EndPaperSize @ esheet 863.6mm 1117.6mm @+ ! %%DocumentPaperSizes: esheet @+ %%BeginPaperSize: esheet @+ /setpagedevice where @+ { pop << /PageSize [2448 3168] >> setpagedevice } @+ if @+ %%EndPaperSize % use -t unknown with a \special{papersize=...} for a nonstandard page size. @ unknown 0in 0in @+ % dvips-unknown @+ statusdict /setpageparams known { hsize vsize 0 1 statusdict begin { @+ setpageparams } stopped end } { true } ifelse { statusdict /setpage known @+ { hsize vsize 1 statusdict begin { setpage } stopped pop end } if } if % use -t nopaper to get no paper size stuff in the output at all. % This should remain as the last thing in the file, because the first % 0in 0in entry is chosen when there is nothing better; ordinarily, we % want to that to be "unknown", so that the correct nonstandard paper % size is output, instead of just being omitted. % http://groups.google.com/group/fr.comp.text.tex/browse_thread/thread/1b08961cf9b8a5ab/6b1d0b32443905e3 % and mactex mailing list thread from 24 Sep 2009 11:36:26. @ nopaper 0in 0in @+ % dvips-nopaper dvipsk_TexLive-2009-stripped/config.h0000644000175000017500000000372311372532227017521 0ustar uwabamiuwabami/* config.h: master configuration file, included first by all compilable source files (not headers). This file is public domain. */ #ifndef CONFIG_H #define CONFIG_H /* The stuff from the path searching library. */ #include /* How to open files with fopen. */ #include /* How the filenames' parts are separated. */ #include /* Have to get the enum constants below, sigh. Still better than repeating the definitions everywhere we need them. */ #include #include /* For kpathsea, we don't have paths, we have formats. This is so we can do lazy evaluation of only the formats we need, instead of having to initialize everything in the world. */ #define figpath kpse_pict_format #define pictpath kpse_pict_format #define pkpath kpse_pk_format #define tfmpath kpse_tfm_format #define ovfpath kpse_ovf_format #define ofmpath kpse_ofm_format #define vfpath kpse_vf_format #define configpath kpse_dvips_config_format #define headerpath kpse_tex_ps_header_format #define type1 kpse_type1_format #define mappath kpse_fontmap_format #define encpath kpse_enc_format #if (defined (DOS) || defined (MSDOS)) && !defined (__DJGPP__) #undef DOS #undef MSDOS #define DOS #define MSDOS #endif /* dvips has a different name for this. */ #if SIZEOF_INT < 4 #define SHORTINT #endif #define READ FOPEN_R_MODE #define READBIN FOPEN_RBIN_MODE #define WRITEBIN FOPEN_WBIN_MODE /* Include various things by default. */ #ifndef NO_HPS #define HPS #endif #ifndef NO_TPIC #define TPIC #endif #ifndef NO_EMTEX #define EMTEX #endif /* Include debugging by default, too. */ #ifndef NO_DEBUG #undef DEBUG #define DEBUG /* To pass along to kpathsea. (Avoid changing debug.h.) */ #define D_STAT (1<<9) #define D_HASH (1<<10) #define D_EXPAND (1<<11) #define D_SEARCH (1<<12) #endif /* These are defined under NT, but we have variable names. */ #undef ERROR #undef NO_ERROR #endif /* not CONFIG_H */ dvipsk_TexLive-2009-stripped/color.lpro0000644000175000017500000001721211372532227020115 0ustar uwabamiuwabami%! %% color.lpro: this sets up color macros used by dvips and defines some %% default color parameters (if these are not already user %% defined by another header file). %% %% This was written by J. Hafner (hafner@almaden.ibm.com) and was last %% modified on 2/14/92. It was then rewritten by Tomas Rokicki to be %% smaller. Same license as dvips. %% %% The color names used here mostly come from the Crayola Crayon box of %% 64 colors, with some small additions and deletions. The names match %% those used in the color.[sty,tex] and black.[sty,tex] files. %% The actual color parameters were set using a Tektronix Phaser %% printer. Approximate PANTONE numbers are given for most colors. %% %% If any of these colors don't match the reditions given by your %% color device, then you can redefine them by adding another header file %% to predefine the colors in userdict. In this way you can easily %% customize these colors to every device by adding a header entry in the %% corresponding config.PRINTER file. %% %% This header file assumes that tex.pro is already loaded (e.g., B is %% defined in that header). %% TeXDict begin %% %% This defines the currentcmykcolor and setcmykcolor in terms of rbg %% if they are not defined in the current interpreter. %% /setcmykcolor where {pop} { /setcmykcolor { dup 10 eq {pop setrgbcolor} {1 sub 4 1 roll 3 { 3 index add neg dup 0 lt {pop 0} if 3 1 roll } repeat setrgbcolor pop } ifelse } B } ifelse /TeXcolorcmyk { setcmykcolor } def /TeXcolorrgb { setrgbcolor } def /TeXcolorgrey { setgray } def /TeXcolorgray { setgray } def /TeXcolorhsb { sethsbcolor } def /currentcmykcolor where {pop} { /currentcmykcolor { currentrgbcolor 10 % The 10 signals colors in rbg on stack } B } ifelse %% %% This is intended to set the color states by these defaults, only if %% they are not defined elsewhere, particularly in another header file. %% If defined in another header file, they must be defined in userdict to %% take effect. %% /DC { % define a color exch dup userdict exch known { pop pop } { X } ifelse } B %% GreenYellow Approximate PANTONE 388 /GreenYellow { 0.15 0 0.69 0 setcmykcolor } DC %% Yellow Approximate PANTONE YELLOW /Yellow { 0 0 1 0 setcmykcolor } DC %% Goldenrod Approximate PANTONE 109 /Goldenrod { 0 0.10 0.84 0 setcmykcolor } DC %% Dandelion Approximate PANTONE 123 /Dandelion { 0 0.29 0.84 0 setcmykcolor } DC %% Apricot Approximate PANTONE 1565 /Apricot { 0 0.32 0.52 0 setcmykcolor } DC %% Peach Approximate PANTONE 164 /Peach { 0 0.50 0.70 0 setcmykcolor } DC %% Melon Approximate PANTONE 177 /Melon { 0 0.46 0.50 0 setcmykcolor } DC %% YellowOrange Approximate PANTONE 130 /YellowOrange { 0 0.42 1 0 setcmykcolor } DC %% Orange Approximate PANTONE ORANGE-021 /Orange { 0 0.61 0.87 0 setcmykcolor } DC %% BurntOrange Approximate PANTONE 388 /BurntOrange { 0 0.51 1 0 setcmykcolor } DC %% Bittersweet Approximate PANTONE 167 /Bittersweet { 0 0.75 1 0.24 setcmykcolor } DC %% RedOrange Approximate PANTONE 179 /RedOrange { 0 0.77 0.87 0 setcmykcolor } DC %% Mahogany Approximate PANTONE 484 /Mahogany { 0 0.85 0.87 0.35 setcmykcolor } DC %% Maroon Approximate PANTONE 201 /Maroon { 0 0.87 0.68 0.32 setcmykcolor } DC %% BrickRed Approximate PANTONE 1805 /BrickRed { 0 0.89 0.94 0.28 setcmykcolor } DC %% Red VERY-Approx PANTONE RED /Red { 0 1 1 0 setcmykcolor } DC %% OrangeRed No PANTONE match /OrangeRed { 0 1 0.50 0 setcmykcolor } DC %% RubineRed Approximate PANTONE RUBINE-RED /RubineRed { 0 1 0.13 0 setcmykcolor } DC %% WildStrawberry Approximate PANTONE 206 /WildStrawberry { 0 0.96 0.39 0 setcmykcolor } DC %% Salmon Approximate PANTONE 183 /Salmon { 0 0.53 0.38 0 setcmykcolor } DC %% CarnationPink Approximate PANTONE 218 /CarnationPink { 0 0.63 0 0 setcmykcolor } DC %% Magenta Approximate PANTONE PROCESS-MAGENTA /Magenta { 0 1 0 0 setcmykcolor } DC %% VioletRed Approximate PANTONE 219 /VioletRed { 0 0.81 0 0 setcmykcolor } DC %% Rhodamine Approximate PANTONE RHODAMINE-RED /Rhodamine { 0 0.82 0 0 setcmykcolor } DC %% Mulberry Approximate PANTONE 241 /Mulberry { 0.34 0.90 0 0.02 setcmykcolor } DC %% RedViolet Approximate PANTONE 234 /RedViolet { 0.07 0.90 0 0.34 setcmykcolor } DC %% Fuchsia Approximate PANTONE 248 /Fuchsia { 0.47 0.91 0 0.08 setcmykcolor } DC %% Lavender Approximate PANTONE 223 /Lavender { 0 0.48 0 0 setcmykcolor } DC %% Thistle Approximate PANTONE 245 /Thistle { 0.12 0.59 0 0 setcmykcolor } DC %% Orchid Approximate PANTONE 252 /Orchid { 0.32 0.64 0 0 setcmykcolor } DC %% DarkOrchid No PANTONE match /DarkOrchid { 0.40 0.80 0.20 0 setcmykcolor } DC %% Purple Approximate PANTONE PURPLE /Purple { 0.45 0.86 0 0 setcmykcolor } DC %% Plum VERY-Approx PANTONE 518 /Plum { 0.50 1 0 0 setcmykcolor } DC %% Violet Approximate PANTONE VIOLET /Violet { 0.79 0.88 0 0 setcmykcolor } DC %% RoyalPurple Approximate PANTONE 267 /RoyalPurple { 0.75 0.90 0 0 setcmykcolor } DC %% BlueViolet Approximate PANTONE 2755 /BlueViolet { 0.86 0.91 0 0.04 setcmykcolor } DC %% Periwinkle Approximate PANTONE 2715 /Periwinkle { 0.57 0.55 0 0 setcmykcolor } DC %% CadetBlue Approximate PANTONE (534+535)/2 /CadetBlue { 0.62 0.57 0.23 0 setcmykcolor } DC %% CornflowerBlue Approximate PANTONE 292 /CornflowerBlue { 0.65 0.13 0 0 setcmykcolor } DC %% MidnightBlue Approximate PANTONE 302 /MidnightBlue { 0.98 0.13 0 0.43 setcmykcolor } DC %% NavyBlue Approximate PANTONE 293 /NavyBlue { 0.94 0.54 0 0 setcmykcolor } DC %% RoyalBlue No PANTONE match /RoyalBlue { 1 0.50 0 0 setcmykcolor } DC %% Blue Approximate PANTONE BLUE-072 /Blue { 1 1 0 0 setcmykcolor } DC %% Cerulean Approximate PANTONE 3005 /Cerulean { 0.94 0.11 0 0 setcmykcolor } DC %% Cyan Approximate PANTONE PROCESS-CYAN /Cyan { 1 0 0 0 setcmykcolor } DC %% ProcessBlue Approximate PANTONE PROCESS-BLUE /ProcessBlue { 0.96 0 0 0 setcmykcolor } DC %% SkyBlue Approximate PANTONE 2985 /SkyBlue { 0.62 0 0.12 0 setcmykcolor } DC %% Turquoise Approximate PANTONE (312+313)/2 /Turquoise { 0.85 0 0.20 0 setcmykcolor } DC %% TealBlue Approximate PANTONE 3145 /TealBlue { 0.86 0 0.34 0.02 setcmykcolor } DC %% Aquamarine Approximate PANTONE 3135 /Aquamarine { 0.82 0 0.30 0 setcmykcolor } DC %% BlueGreen Approximate PANTONE 320 /BlueGreen { 0.85 0 0.33 0 setcmykcolor } DC %% Emerald No PANTONE match /Emerald { 1 0 0.50 0 setcmykcolor } DC %% JungleGreen Approximate PANTONE 328 /JungleGreen { 0.99 0 0.52 0 setcmykcolor } DC %% SeaGreen Approximate PANTONE 3268 /SeaGreen { 0.69 0 0.50 0 setcmykcolor } DC %% Green VERY-Approx PANTONE GREEN /Green { 1 0 1 0 setcmykcolor } DC %% ForestGreen Approximate PANTONE 349 /ForestGreen { 0.91 0 0.88 0.12 setcmykcolor } DC %% PineGreen Approximate PANTONE 323 /PineGreen { 0.92 0 0.59 0.25 setcmykcolor } DC %% LimeGreen No PANTONE match /LimeGreen { 0.50 0 1 0 setcmykcolor } DC %% YellowGreen Approximate PANTONE 375 /YellowGreen { 0.44 0 0.74 0 setcmykcolor } DC %% SpringGreen Approximate PANTONE 381 /SpringGreen { 0.26 0 0.76 0 setcmykcolor } DC %% OliveGreen Approximate PANTONE 582 /OliveGreen { 0.64 0 0.95 0.40 setcmykcolor } DC %% RawSienna Approximate PANTONE 154 /RawSienna { 0 0.72 1 0.45 setcmykcolor } DC %% Sepia Approximate PANTONE 161 /Sepia { 0 0.83 1 0.70 setcmykcolor } DC %% Brown Approximate PANTONE 1615 /Brown { 0 0.81 1 0.60 setcmykcolor } DC %% Tan No PANTONE match /Tan { 0.14 0.42 0.56 0 setcmykcolor } DC %% Gray Approximate PANTONE COOL-GRAY-8 /Gray { 0 0 0 0.50 setcmykcolor } DC %% Black Approximate PANTONE PROCESS-BLACK /Black { 0 0 0 1 setcmykcolor } DC %% White No PANTONE match /White { 0 0 0 0 setcmykcolor } DC end dvipsk_TexLive-2009-stripped/dosection.c0000644000175000017500000001702311372532227020234 0ustar uwabamiuwabami/* * Code to output PostScript commands for one section of the document. */ #include "dvips.h" /* The copyright notice in that file is included too! */ /* * These are the external routines we call. */ #include "protos.h" /* * These are the external variables we access. */ extern shalfword linepos ; extern FILE *dvifile ; extern FILE *bitfile ; extern integer pagenum ; extern long bytesleft ; extern quarterword *raster ; extern int quiet ; extern Boolean reverse, multiplesects, disablecomments ; extern Boolean evenpages, oddpages, pagelist ; extern int actualdpi ; extern int vactualdpi ; extern int prettycolumn ; extern integer hpapersize, vpapersize ; extern integer pagecopies ; static int psfont ; extern double mag ; extern char *fulliname ; #ifdef HPS int pagecounter ; extern Boolean HPS_FLAG ; #endif /* * Now we have the main procedure. */ void dosection(sectiontype *s, int c) { charusetype *cu ; integer prevptr ; int np ; int k ; integer thispage = 0 ; char buf[104]; dopsfont(s) ; #ifdef HPS if (HPS_FLAG) pagecounter = 0; #endif if (multiplesects) { setup() ; } cmdout("TeXDict") ; cmdout("begin") ; numout(hpapersize) ; numout(vpapersize) ; doubleout(mag) ; numout((integer)DPI) ; numout((integer)VDPI) ; sprintf(buf, "(%.99s)", fulliname) ; cmdout(buf) ; cmdout("@start") ; if (multiplesects) cmdout("bos") ; /* * We insure raster is even-word aligned, because download might want that. */ if (bytesleft & 1) { bytesleft-- ; raster++ ; } cleanres() ; cu = (charusetype *) (s + 1) ; psfont = 1 ; while (cu->fd) { if (cu->psfused) cu->fd->psflag = EXISTS ; download(cu++, psfont++) ; } fonttableout() ; if (! multiplesects) { cmdout("end") ; setup() ; } for (cu=(charusetype *)(s+1); cu->fd; cu++) cu->fd->psflag = 0 ; while (c > 0) { c-- ; prevptr = s->bos ; if (! reverse) (void)fseek(dvifile, (long)prevptr, 0) ; np = s->numpages ; while (np-- != 0) { if (reverse) (void)fseek(dvifile, (long)prevptr, 0) ; pagenum = signedquad() ; if ((evenpages && (pagenum & 1)) || (oddpages && (pagenum & 1)==0) || (pagelist && !InPageList(pagenum))) { if (reverse) { skipover(36) ; prevptr = signedquad()+1 ; } else { skipover(40) ; skippage() ; skipnop() ; } ++np ; /* this page wasn't counted for s->numpages */ continue; } /* * We want to take the base 10 log of the number. It's probably * small, so we do it quick. */ if (! quiet) { int t = pagenum, i = 0 ; if (t < 0) { t = -t ; i++ ; } do { i++ ; t /= 10 ; } while (t > 0) ; if (pagecopies < 20) i += pagecopies - 1 ; if (i + prettycolumn > STDOUTSIZE) { fprintf(stderr, "\n") ; prettycolumn = 0 ; } prettycolumn += i + 1 ; #ifdef SHORTINT (void)fprintf(stderr, "[%ld", pagenum) ; #else /* ~SHORTINT */ (void)fprintf(stderr, "[%d", pagenum) ; #endif /* ~SHORTINT */ (void)fflush(stderr) ; } skipover(36) ; prevptr = signedquad()+1 ; for (k=0; k 1) thispage = ftell(dvifile) ; } else { (void)fseek(dvifile, (long)thispage, 0) ; if (prettycolumn + 1 > STDOUTSIZE) { (void)fprintf(stderr, "\n") ; prettycolumn = 0 ; } (void)fprintf(stderr, ".") ; (void)fflush(stderr) ; prettycolumn++ ; } dopage() ; } if (! quiet) { (void)fprintf(stderr, "] ") ; (void)fflush(stderr) ; prettycolumn += 2 ; } if (! reverse) (void)skipnop() ; } } if (! multiplesects && ! disablecomments) { newline() ; (void)fprintf(bitfile, "%%%%Trailer\n") ; } if (multiplesects) { if (! disablecomments) { newline() ; (void)fprintf(bitfile, "%%DVIPSSectionTrailer\n") ; } cmdout("eos") ; cmdout("end") ; } #ifdef HPS if (HPS_FLAG) cmdout("\nend") ; /* close off HPSDict */ #endif if (multiplesects && ! disablecomments) { newline() ; (void)fprintf(bitfile, "%%DVIPSEndSection\n") ; linepos = 0 ; } } /* * Handle a list of pages for dvips. Code based on dvi2ps 2.49, * maintained by Piet van Oostrum, piet@cs.ruu.nl. Collected and * modularized for inclusion in dvips by metcalf@lcs.mit.edu. */ #include #define MAXPAGE (1000000000) /* assume no pages out of this range */ struct p_list_str { struct p_list_str *next; /* next in a series of alternates */ integer ps_low, ps_high; /* allowed range */ } *ppages = 0; /* the list of allowed pages */ /*-->InPageList*/ /**********************************************************************/ /****************************** InPageList **************************/ /**********************************************************************/ /* Return true iff i is one of the desired output pages */ int InPageList(integer i) { register struct p_list_str *pl = ppages; while (pl) { if ( i >= pl -> ps_low && i <= pl -> ps_high) return 1; /* success */ pl = pl -> next; } return 0; } void InstallPL(integer pslow, integer pshigh) { register struct p_list_str *pl; pl = (struct p_list_str *)mymalloc((integer)(sizeof *pl)); pl -> next = ppages; pl -> ps_low = pslow; pl -> ps_high = pshigh; ppages = pl; } /* Parse a string representing a list of pages. Return 0 iff ok. As a side effect, the page selection(s) is (are) prepended to ppages. */ int ParsePages(register char *s) { register int c ; /* current character */ register integer n = 0, /* current numeric value */ innumber; /* true => gathering a number */ integer ps_low = 0, ps_high = 0 ; int range, /* true => saw a range indicator */ negative = 0; /* true => number being built is negative */ #define white(x) ((x) == ' ' || (x) == '\t' || (x) == ',') range = 0; innumber = 0; for (;;) { c = *s++; if ( !innumber && !range) {/* nothing special going on */ if (c == 0) return 0; if (white (c)) continue; } if (c == '-' && !innumber) { innumber++; negative++; n = 0; continue; } if ('0' <= c && c <= '9') { /* accumulate numeric value */ if (!innumber) { innumber++; negative = 0; n = c - '0'; continue; } n *= 10; n += negative ? '0' - c : c - '0'; continue; } if (c == '-' || c == ':') {/* here's a range */ if (range) return (-1); if (innumber) { /* have a lower bound */ ps_low = n; } else ps_low = -MAXPAGE; range++; innumber = 0; continue; } if (c == 0 || white (c)) {/* end of this range */ if (!innumber) { /* no upper bound */ ps_high = MAXPAGE; if (!range) /* no lower bound either */ ps_low = -MAXPAGE; } else { /* have an upper bound */ ps_high = n; if (!range) { /* no range => lower bound == upper */ ps_low = ps_high; } } InstallPL (ps_low, ps_high); if (c == 0) return 0; range = 0; innumber = 0; continue; } return (-1); } #undef white } dvipsk_TexLive-2009-stripped/writet1.c0000644000175000017500000015407511372532227017655 0ustar uwabamiuwabami/* $Id: writet1.c 14299 2009-07-17 16:08:25Z peter $ Copyright 1996-2005, 2009 Han The Thanh, 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 of the License, 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 . */ #ifdef pdfTeX /* writet1 used with pdfTeX */ #include "ptexlib.h" #define t1_log(s) tex_printf(s) #define t1_open() \ open_input(&t1_file, kpse_type1_format, FOPEN_RBIN_MODE) #define enc_open() \ open_input(&enc_file, kpse_enc_format, FOPEN_RBIN_MODE) #define external_enc() (fm_cur->encoding)->glyph_names #define full_file_name() (char*)nameoffile + 1 #define get_length1() t1_length1 = t1_offset() - t1_save_offset #define get_length2() t1_length2 = t1_offset() - t1_save_offset #define get_length3() t1_length3 = t1_offset() - t1_save_offset #define is_used_char(c) pdfcharmarked(tex_font, c) #define t1_putchar fb_putchar #define t1_offset fb_offset #define out_eexec_char t1_putchar #define save_offset() t1_save_offset = t1_offset() #define end_last_eexec_line() \ t1_eexec_encrypt = false #define t1_char(c) c #define embed_all_glyphs(tex_font) fm_cur->all_glyphs #define extra_charset() fm_cur->charset #define update_subset_tag() \ strncpy(fb_array + t1_fontname_offset, fm_cur->subset_tag, 6) integer t1_length1, t1_length2, t1_length3; static integer t1_save_offset; static integer t1_fontname_offset; extern char *fb_array; #else /* writet1 used with dvips */ #include "dvips.h" #include "protos.h" #include "ptexmac.h" #undef fm_extend #define fm_extend(f) 0 #undef fm_slant #define fm_slant(f) 0 #undef is_reencoded #define is_reencoded(f) (cur_enc_name != NULL) #undef is_subsetted #define is_subsetted(f) true #undef is_included #define is_included(f) true #undef set_cur_file_name #define set_cur_file_name(s) cur_file_name = s #define t1_open() \ ((t1_file = search(headerpath, cur_file_name, FOPEN_RBIN_MODE)) != NULL) #define enc_open() \ ((enc_file = search(encpath, cur_file_name, FOPEN_RBIN_MODE)) != NULL) #define external_enc() ext_glyph_names #define full_file_name() cur_file_name #define get_length1() #define get_length2() #define get_length3() #define is_used_char(c) (grid[c] == 1) #define out_eexec_char t1_outhex #define save_offset() #define end_last_eexec_line() \ hexline_length = HEXLINE_WIDTH; \ end_hexline(); \ t1_eexec_encrypt = false #define t1_log(s) #define t1_scan_only() #define t1_include() #define t1_putchar(c) fputc(c, bitfile) #define t1_scan_keys() #define embed_all_glyphs(tex_font) false #undef pdfmovechars #ifdef SHIFTLOWCHARS extern char errbuf[]; extern Boolean shiftlowchars; #define pdfmovechars shiftlowchars #define t1_char(c) T1Char(c) #else /* SHIFTLOWCHARS */ #define t1_char(c) c #define pdfmovechars 0 #endif /* SHIFTLOWCHARS */ #define extra_charset() dvips_extra_charset #define make_subset_tag(a, b) #define update_subset_tag() static char *dvips_extra_charset ; extern FILE *bitfile ; extern FILE *search(); static char *cur_file_name; static char *cur_enc_name; static unsigned char *grid; static char *ext_glyph_names[MAX_CHAR_CODE + 1]; static char print_buf[PRINTF_BUF_SIZE]; static int hexline_length; static char notdef[] = ".notdef"; static size_t last_ptr_index; #endif /* pdfTeX */ #include #define t1_getchar() getc(t1_file) #define t1_ungetchar(c) ungetc(c, t1_file) #define t1_eof() feof(t1_file) #define t1_close() xfclose(t1_file, cur_file_name) #define enc_getchar() getc(enc_file) #define enc_eof() feof(enc_file) #define enc_close() xfclose(enc_file, cur_file_name) #define valid_code(c) (c >= 0 && c <= MAX_CHAR_CODE) static const char *standard_glyph_names[MAX_CHAR_CODE + 1] = { notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", "currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", notdef, "endash", "dagger", "daggerdbl", "periodcentered", notdef, "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright", "ellipsis", "perthousand", notdef, "questiondown", notdef, "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", "dieresis", notdef, "ring", "cedilla", notdef, "hungarumlaut", "ogonek", "caron", "emdash", notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, notdef, "AE", notdef, "ordfeminine", notdef, notdef, notdef, notdef, "Lslash", "Oslash", "OE", "ordmasculine", notdef, notdef, notdef, notdef, notdef, "ae", notdef, notdef, notdef, "dotlessi", notdef, notdef, "lslash", "oslash", "oe", "germandbls", notdef, notdef, notdef, notdef }; static char charstringname[] = "/CharStrings"; char **t1_glyph_names; char *t1_builtin_glyph_names[MAX_CHAR_CODE + 1]; static boolean read_encoding_only; static int t1_encoding; #define T1_BUF_SIZE 0x10 #define ENC_BUF_SIZE 0x1000 #define ENC_STANDARD 0 #define ENC_BUILTIN 1 #define CS_HSTEM 1 #define CS_VSTEM 3 #define CS_VMOVETO 4 #define CS_RLINETO 5 #define CS_HLINETO 6 #define CS_VLINETO 7 #define CS_RRCURVETO 8 #define CS_CLOSEPATH 9 #define CS_CALLSUBR 10 #define CS_RETURN 11 #define CS_ESCAPE 12 #define CS_HSBW 13 #define CS_ENDCHAR 14 #define CS_RMOVETO 21 #define CS_HMOVETO 22 #define CS_VHCURVETO 30 #define CS_HVCURVETO 31 #define CS_1BYTE_MAX (CS_HVCURVETO + 1) #define CS_DOTSECTION CS_1BYTE_MAX + 0 #define CS_VSTEM3 CS_1BYTE_MAX + 1 #define CS_HSTEM3 CS_1BYTE_MAX + 2 #define CS_SEAC CS_1BYTE_MAX + 6 #define CS_SBW CS_1BYTE_MAX + 7 #define CS_DIV CS_1BYTE_MAX + 12 #define CS_CALLOTHERSUBR CS_1BYTE_MAX + 16 #define CS_POP CS_1BYTE_MAX + 17 #define CS_SETCURRENTPOINT CS_1BYTE_MAX + 33 #define CS_2BYTE_MAX (CS_SETCURRENTPOINT + 1) #define CS_MAX CS_2BYTE_MAX typedef unsigned char byte; typedef struct { byte nargs; /* number of arguments */ boolean bottom; /* take arguments from bottom of stack? */ boolean clear; /* clear stack? */ boolean valid; } cc_entry; /* CharString Command */ typedef struct { char *name; /* glyph name (or notdef for Subrs entry) */ byte *data; unsigned short len; /* length of the whole string */ unsigned short cslen; /* length of the encoded part of the string */ boolean used; boolean valid; } cs_entry; static unsigned short t1_dr, t1_er; static const unsigned short t1_c1 = 52845, t1_c2 = 22719; static unsigned short t1_cslen; static short t1_lenIV; static char enc_line[ENC_BUF_SIZE]; /* define t1_line_ptr, t1_line_array & t1_line_limit */ typedef char t1_line_entry; define_array(t1_line); /* define t1_buf_ptr, t1_buf_array & t1_buf_limit */ typedef char t1_buf_entry; define_array(t1_buf); static int cs_start; static cs_entry *cs_tab, *cs_ptr, *cs_notdef; static char *cs_dict_start, *cs_dict_end; static int cs_count, cs_size, cs_size_pos; static cs_entry *subr_tab; static char *subr_array_start, *subr_array_end; static int subr_max, subr_size, subr_size_pos; /* This list contains the begin/end tokens commonly used in the */ /* /Subrs array of a Type 1 font. */ static const char *cs_token_pairs_list[][2] = { {" RD", "NP"}, {" -|", "|"}, {" RD", "noaccess put"}, {" -|", "noaccess put"}, {NULL, NULL} }; static const char **cs_token_pair; static boolean t1_pfa, t1_cs, t1_scan, t1_eexec_encrypt, t1_synthetic; static int t1_in_eexec; /* 0 before eexec-encrypted, 1 during, 2 after */ static long t1_block_length; static int last_hexbyte; static FILE *t1_file; static FILE *enc_file; #define str_prefix(s1, s2) (strncmp(s1, s2, strlen(s2)) == 0) #define t1_prefix(s) str_prefix(t1_line_array, s) #define t1_buf_prefix(s) str_prefix(t1_buf_array, s) #define t1_suffix(s) str_suffix(t1_line_array, t1_line_ptr, s) #define t1_buf_suffix(s) str_suffix(t1_buf_array, t1_buf_ptr, s) #define t1_charstrings() strstr(t1_line_array, charstringname) #define t1_subrs() t1_prefix("/Subrs") #define t1_end_eexec() t1_suffix("mark currentfile closefile") #define t1_cleartomark() t1_prefix("cleartomark") #ifndef pdfTeX static void pdftex_fail(char *fmt,...) { va_list args; va_start(args, fmt); fputs("\nError: module writet1", stderr); if (cur_file_name) fprintf(stderr, " (file %s)", cur_file_name); fputs(": ", stderr); vsprintf(print_buf, fmt, args); fputs(print_buf, stderr); fputs("\n ==> Fatal error occurred, the output PS file is not finished!\n", stderr); va_end(args); exit(-1); } static void pdftex_warn(char *fmt,...) { va_list args; va_start(args, fmt); fputs("\nWarning: module writet1 of dvips", stderr); if (cur_file_name) fprintf(stderr, " (file %s)", cur_file_name); fputs(": ", stderr); vsprintf(print_buf, fmt, args); fputs(print_buf, stderr); fputs("\n", stderr); va_end(args); } #define HEXLINE_WIDTH 64 static void end_hexline(void) { if (hexline_length == HEXLINE_WIDTH) { fputs("\n", bitfile); hexline_length = 0; } } static void t1_outhex(byte b) { static char *hexdigits = "0123456789ABCDEF"; t1_putchar(hexdigits[b/16]); t1_putchar(hexdigits[b%16]); hexline_length += 2; end_hexline(); } #endif /* pdfTeX */ static void enc_getline(void) { char *p; int c; restart: if (enc_eof()) pdftex_fail("unexpected end of file"); p = enc_line; do { c = enc_getchar(); append_char_to_buf(c, p, enc_line, ENC_BUF_SIZE); } while (c != 10); append_eol(p, enc_line, ENC_BUF_SIZE); if (p - enc_line < 2 || *enc_line == '%') goto restart; } void load_enc(char *enc_name, char **glyph_names) { char buf[ENC_BUF_SIZE], *p, *r; int names_count; set_cur_file_name(enc_name); if (!enc_open()) { pdftex_warn("cannot open encoding file for reading"); cur_file_name = NULL; return; } t1_log("{"); t1_log(cur_file_name = full_file_name()); enc_getline(); if (*enc_line != '/' || (r = strchr(enc_line, '[')) == NULL) { remove_eol(r, enc_line); pdftex_fail("invalid encoding vector (a name or `[' missing): `%s'", enc_line); } names_count = 0; r++; /* skip '[' */ skip(r, ' '); for (;;) { while (*r == '/') { for (p = buf, r++; *r != ' ' && *r != 10 && *r != ']' && *r != '/'; *p++ = *r++); *p = 0; skip(r, ' '); if (names_count > MAX_CHAR_CODE) pdftex_fail("encoding vector contains more than %i names", (int)(MAX_CHAR_CODE + 1)); if (strcmp(buf, notdef) != 0) glyph_names[names_count] = xstrdup(buf); names_count++; } if (*r != 10 && *r != '%') { if (strncmp(r, "] def", strlen("] def")) == 0) goto done; else { remove_eol(r, enc_line); pdftex_fail("invalid encoding vector: a name or `] def' expected: `%s'", enc_line); } } enc_getline(); r = enc_line; } done: enc_close(); t1_log("}"); cur_file_name = NULL; } static void t1_check_pfa(void) { int c = t1_getchar(); if (c != 128) t1_pfa = true; else t1_pfa = false; t1_ungetchar(c); } static int t1_getbyte(void) { int c = t1_getchar(); if (t1_pfa) return c; if (t1_block_length == 0) { if (c != 128) pdftex_fail("invalid marker"); c = t1_getchar(); if (c == 3) { while (!t1_eof()) t1_getchar(); return EOF; } t1_block_length = t1_getchar() & 0xff; t1_block_length |= (t1_getchar() & 0xff) << 8; t1_block_length |= (t1_getchar() & 0xff) << 16; t1_block_length |= (t1_getchar() & 0xff) << 24; c = t1_getchar(); } t1_block_length--; return c; } static int hexval(int c) { if (c >= 'A' && c <= 'F') return c - 'A' + 10; else if (c >= 'a' && c <= 'f') return c - 'a' + 10; else if (c >= '0' && c <= '9') return c - '0'; else return -1; } static byte edecrypt(byte cipher) { byte plain; if (t1_pfa) { while (cipher == 10 || cipher == 13) cipher = t1_getbyte(); last_hexbyte = cipher = (hexval(cipher) << 4) + hexval(t1_getbyte()); } plain = (cipher^(t1_dr >> 8)); t1_dr = (cipher + t1_dr)*t1_c1 + t1_c2; return plain; } static byte cdecrypt(byte cipher, unsigned short *cr) { byte plain = (cipher^(*cr >> 8)); *cr = (cipher + *cr)*t1_c1 + t1_c2; return plain; } static byte eencrypt(byte plain) { byte cipher = (plain^(t1_er >> 8)); t1_er = (cipher + t1_er)*t1_c1 + t1_c2; return cipher; } static byte cencrypt(byte plain, unsigned short *cr) { byte cipher = (plain^(*cr >> 8)); *cr = (cipher + *cr)*t1_c1 + t1_c2; return cipher; } static char *eol(char *s) { char *p = strend(s); if (p - s > 1 && p[-1] != 10) { *p++ = 10; *p = 0; } return p; } static float t1_scan_num(char *p, char **r) { float f; skip(p, ' '); if (sscanf(p, "%g", &f) != 1) { remove_eol(p, t1_line_array); pdftex_fail("a number expected: `%s'", t1_line_array); } if (r != NULL) { for (; isdigit(*p) || *p == '.' || *p == 'e' || *p == 'E' || *p == '+' || *p == '-'; p++); *r = p; } return f; } static boolean str_suffix(const char *begin_buf, const char *end_buf, const char *s) { const char *s1 = end_buf - 1, *s2 = strend(s) - 1; if (*s1 == 10) s1--; while (s1 >= begin_buf && s2 >= s) { if (*s1-- != *s2--) return false; } return s2 < s; } static void t1_getline(void) { int c, l, eexec_scan; char *p; static const char eexec_str[] = "currentfile eexec"; static int eexec_len = 17; /* strlen(eexec_str) */ restart: if (t1_eof()) pdftex_fail("unexpected end of file"); t1_line_ptr = t1_line_array; alloc_array(t1_line, 1, T1_BUF_SIZE); t1_cslen = 0; eexec_scan = 0; c = t1_getbyte(); if (c == EOF) goto exit; while (!t1_eof()) { if (t1_in_eexec == 1) c = edecrypt(c); alloc_array(t1_line, 1, T1_BUF_SIZE); append_char_to_buf(c, t1_line_ptr, t1_line_array, t1_line_limit); if (t1_in_eexec == 0 && eexec_scan >= 0 && eexec_scan < eexec_len) { if (t1_line_array[eexec_scan] == eexec_str[eexec_scan]) eexec_scan++; else eexec_scan = -1; } if (c == 10 || (t1_pfa && eexec_scan == eexec_len && c == 32)) break; if (t1_cs && t1_cslen == 0 && (t1_line_ptr - t1_line_array > 4) && (t1_suffix(" RD ") || t1_suffix(" -| "))) { p = t1_line_ptr - 5; while (*p != ' ') p--; t1_cslen = l = t1_scan_num(p + 1, 0); cs_start = t1_line_ptr - t1_line_array; /* cs_start is an index now */ alloc_array(t1_line, l, T1_BUF_SIZE); while (l-- > 0) *t1_line_ptr++ = edecrypt(t1_getbyte()); } c = t1_getbyte(); } alloc_array(t1_line, 2, T1_BUF_SIZE); /* append_eol can append 2 chars */ append_eol(t1_line_ptr, t1_line_array, t1_line_limit); if (t1_line_ptr - t1_line_array < 2) goto restart; if (eexec_scan == eexec_len) t1_in_eexec = 1; exit: /* ensure that t1_buf_array has as much room as t1_line_array */ t1_buf_ptr = t1_buf_array; alloc_array(t1_buf, t1_line_limit, t1_line_limit); } static void t1_putline(void) { char *p = t1_line_array; if (t1_line_ptr - t1_line_array <= 1) return; if (t1_eexec_encrypt) { while (p < t1_line_ptr) out_eexec_char(eencrypt(*p++)); } else while (p < t1_line_ptr) t1_putchar(*p++); } static void t1_puts(const char *s) { if (s != t1_line_array) strcpy(t1_line_array, s); t1_line_ptr = strend(t1_line_array); t1_putline(); } static void t1_printf(const char *fmt,...) { va_list args; va_start(args, fmt); vsprintf(t1_line_array, fmt, args); t1_puts(t1_line_array); va_end(args); } static void t1_init_params(const char *open_name_prefix) { t1_log(open_name_prefix); t1_log(cur_file_name); t1_lenIV = 4; t1_dr = 55665; t1_er = 55665; t1_in_eexec = 0; t1_cs = false; t1_scan = true; t1_synthetic = false; t1_eexec_encrypt = false; t1_block_length = 0; t1_check_pfa(); } static void t1_close_font_file(const char *close_name_suffix) { t1_log(close_name_suffix); t1_close(); cur_file_name = NULL; } static void t1_check_block_len(boolean decrypt) { int l, c; if (t1_block_length == 0) return; c = t1_getbyte(); if (decrypt) c = edecrypt(c); l = t1_block_length; if (!(l == 0 && (c == 10 || c == 13))) { pdftex_warn("%i bytes more than expected were ignored", l + 1); while (l-- > 0) t1_getbyte(); } } static void t1_start_eexec(void) { int i; if (is_included(fm_cur)) { get_length1(); save_offset(); } if (!t1_pfa) t1_check_block_len(false); for (t1_line_ptr = t1_line_array, i = 0; i < 4; i++) { edecrypt(t1_getbyte()); *t1_line_ptr++ = 0; } t1_eexec_encrypt = true; if (is_included(fm_cur)) t1_putline(); /* to put the first four bytes */ } static void t1_stop_eexec(void) { int c; if (is_included(fm_cur)) { get_length2(); save_offset(); } end_last_eexec_line(); if (!t1_pfa) t1_check_block_len(true); else { c = edecrypt(t1_getbyte()); if (!(c == 10 || c == 13)) { if (last_hexbyte == 0) t1_puts("00"); else pdftex_warn("unexpected data after eexec"); } } t1_cs = false; t1_in_eexec = 2; } #ifdef pdfTeX static void t1_modify_fm(void) { /* * font matrix is given as six numbers a0..a5, which stands for the matrix * * a0 a1 0 * M = a2 a3 0 * a4 a5 1 * * ExtendFont is given as * * e 0 0 * E = 0 1 0 * 0 0 1 * * SlantFont is given as * * 1 0 0 * S = s 1 0 * 0 0 1 * * and the final transformation is * * e*a0 e*a1 0 * F = E.S.M = s*e*a0+a2 s*e*a1+a3 0 * a4 a5 1 */ float e, s, a[6], b[6]; int i, c; char *p, *q, *r; if ((p = strchr(t1_line_array, '[')) == 0) if ((p = strchr(t1_line_array, '{')) == 0) { remove_eol(p, t1_line_array); pdftex_fail("FontMatrix: an array expected: `%s'", t1_line_array); } c = *p++; /* save the character '[' resp. '{' */ strncpy(t1_buf_array, t1_line_array, (unsigned)(p - t1_line_array)); r = t1_buf_array + (p - t1_line_array); for (i = 0; i < 6; i++) { a[i] = t1_scan_num(p, &q); p = q; } if (fm_extend(fm_cur) != 0) e = fm_extend(fm_cur)*1E-3; else e = 1; s = fm_slant(fm_cur)*1E-3; b[0] = e*a[0]; b[1] = e*a[1]; b[2] = s*e*a[0] + a[2]; b[3] = s*e*a[1] + a[3]; b[4] = a[4]; b[5] = a[5]; for (i = 0; i < 6; i++) { sprintf(r, "%g ", b[i]); r = strend(r); } if (c == '[') { while (*p != ']' && *p != 0) p++; } else { while (*p != '}' && *p != 0) p++; } if (*p == 0) { remove_eol(p, t1_line_array); pdftex_fail("FontMatrix: cannot find the corresponding character to '%c': `%s'", c, t1_line_array); } strcpy(r, p); strcpy(t1_line_array, t1_buf_array); t1_line_ptr = eol(t1_line_array); } static void t1_modify_italic(void) { float a; char *p, *r; if (fm_slant(fm_cur) == 0) return; p = strchr(t1_line_array, ' '); strncpy(t1_buf_array, t1_line_array, (unsigned)(p - t1_line_array + 1)); a = t1_scan_num(p + 1, &r); a -= atan(fm_slant(fm_cur)*1E-3)*(180/M_PI); sprintf(t1_buf_array + (p - t1_line_array + 1), "%g", a); strcpy(strend(t1_buf_array), r); strcpy(t1_line_array, t1_buf_array); t1_line_ptr = eol(t1_line_array); font_keys[ITALIC_ANGLE_CODE].value = round(a); font_keys[ITALIC_ANGLE_CODE].valid = true; } static void t1_scan_keys(void) { int i, k; char *p, *q, *r; key_entry *key; if (fm_extend(fm_cur) != 0 || fm_slant(fm_cur) != 0) { if (t1_prefix("/FontMatrix")) { t1_modify_fm(); return; } if (t1_prefix("/ItalicAngle")) { t1_modify_italic(); return; } } if (t1_prefix("/FontType")) { p = t1_line_array + strlen("FontType") + 1; if ((i = t1_scan_num(p, 0)) != 1) pdftex_fail("Type%d fonts unsupported by pdfTeX", i); return; } for (key = font_keys; key - font_keys < MAX_KEY_CODE; key++) if (strncmp(t1_line_array + 1, key->t1name, strlen(key->t1name)) == 0) break; if (key - font_keys == MAX_KEY_CODE) return; key->valid = true; p = t1_line_array + strlen(key->t1name) + 1; skip(p, ' '); if ((k = key - font_keys) == FONTNAME_CODE) { if (*p != '/') { remove_eol(p, t1_line_array); pdftex_fail("a name expected: `%s'", t1_line_array); } r = ++p; /* skip the slash */ for (q = t1_buf_array; *p != ' ' && *p != 10; *q++ = *p++); *q = 0; if (fm_slant(fm_cur) != 0) { sprintf(q, "-Slant_%i", (int)fm_slant(fm_cur)); q = strend(q); } if (fm_extend(fm_cur) != 0) { sprintf(q, "-Extend_%i", (int)fm_extend(fm_cur)); } strncpy(fontname_buf, t1_buf_array, FONTNAME_BUF_SIZE); /* at this moment we cannot call make_subset_tag() yet, as the encoding * is not read; thus we mark the offset of the subset tag and write it * later */ if (is_included(fm_cur) && is_subsetted(fm_cur)) { t1_fontname_offset = t1_offset() + (r - t1_line_array); strcpy(t1_buf_array, p); sprintf(r, "ABCDEF+%s%s", fontname_buf, t1_buf_array); t1_line_ptr = eol(r); } return; } if ((k == STEMV_CODE || k == FONTBBOX1_CODE) && (*p == '[' || *p == '{')) p++; if (k == FONTBBOX1_CODE) { for (i = 0; i < 4; i++) { key[i].value = t1_scan_num(p, &r); p = r; } return; } key->value = t1_scan_num(p, 0); } #endif /* pdfTeX */ static void t1_scan_param(void) { static const char *lenIV = "/lenIV"; if (!t1_scan || *t1_line_array != '/') return; if (t1_prefix(lenIV)) { t1_lenIV = t1_scan_num(t1_line_array + strlen(lenIV), 0); if (t1_lenIV < 0) pdftex_fail("negative value of lenIV is not supported"); return; } t1_scan_keys(); } static void copy_glyph_names(char **glyph_names, int a, int b) { if (glyph_names[b] != notdef) { free(glyph_names[b]); glyph_names[b] = (char*) notdef; } if (glyph_names[a] != notdef) { glyph_names[b] = xstrdup(glyph_names[a]); } } static void t1_builtin_enc(void) { int i, a, b, c, counter = 0; char *r, *p; /* * At this moment "/Encoding" is the prefix of t1_line_array */ if (t1_suffix("def")) { /* predefined encoding */ sscanf(t1_line_array + strlen("/Encoding"), "%256s", t1_buf_array); if (strcmp(t1_buf_array, "StandardEncoding") == 0) { for (i = 0; i <= MAX_CHAR_CODE; i++) if (standard_glyph_names[i] == notdef) t1_builtin_glyph_names[i] = (char*) notdef; else t1_builtin_glyph_names[i] = xstrdup(standard_glyph_names[i]); t1_encoding = ENC_STANDARD; } else pdftex_fail("cannot subset font (unknown predefined encoding `%s')", t1_buf_array); return; } else t1_encoding = ENC_BUILTIN; /* * At this moment "/Encoding" is the prefix of t1_line_array, and the encoding is * not a predefined encoding * * We have two possible forms of Encoding vector. The first case is * * /Encoding [/a /b /c...] readonly def * * and the second case can look like * * /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for * dup 0 /x put * dup 1 /y put * ... * readonly def */ for (i = 0; i <= MAX_CHAR_CODE; i++) t1_builtin_glyph_names[i] = (char*) notdef; if (t1_prefix("/Encoding [") || t1_prefix("/Encoding[")) { /* the first case */ r = strchr(t1_line_array, '[') + 1; skip(r, ' '); for(;;) { while (*r == '/') { for (p = t1_buf_array, r++; *r != 32 && *r != 10 && *r != ']' && *r != '/'; *p++ = *r++); *p = 0; skip(r, ' '); if (counter > MAX_CHAR_CODE) pdftex_fail("encoding vector contains more than %i names", (int)(MAX_CHAR_CODE + 1)); if (strcmp(t1_buf_array, notdef) != 0) t1_builtin_glyph_names[counter] = xstrdup(t1_buf_array); counter++; } if (*r != 10 && *r != '%') { if (str_prefix(r, "] def") || str_prefix(r, "] readonly def")) break; else { remove_eol(r, t1_line_array); pdftex_fail("a name or `] def' or `] readonly def' expected: `%s'", t1_line_array); } } t1_getline(); r = t1_line_array; } } else { /* the second case */ p = strchr(t1_line_array, 10); for (;;) { if (*p == 10) { t1_getline(); p = t1_line_array; } /* check for `dup put' */ if (sscanf(p, "dup %i%256s put", &i, t1_buf_array) == 2 && *t1_buf_array == '/' && valid_code(i)) { if (strcmp(t1_buf_array + 1, notdef) != 0) t1_builtin_glyph_names[i] = xstrdup(t1_buf_array + 1); p = strstr(p, " put") + strlen(" put"); skip(p, ' '); } /* check for `dup dup exch get put' */ else if (sscanf(p, "dup dup %i exch %i get put", &b, &a) == 2 && valid_code(a) && valid_code(b)) { copy_glyph_names(t1_builtin_glyph_names, a, b); p = strstr(p, " get put") + strlen(" get put"); skip(p, ' '); } /* check for `dup dup getinterval exch putinterval' */ else if (sscanf(p, "dup dup %i %i getinterval %i exch putinterval", &a, &c, &b) == 3 && valid_code(a) && valid_code(b) && valid_code(c)) { for (i = 0; i < c; i++) copy_glyph_names(t1_builtin_glyph_names, a + i, b + i); p = strstr(p, " putinterval") + strlen(" putinterval"); skip(p, ' '); } /* check for `def' or `readonly def' */ else if ((p == t1_line_array || (p > t1_line_array && p[-1] == ' ')) && strcmp(p, "def\n") == 0) return; /* skip an unrecognizable word */ else { while (*p != ' ' && *p != 10) p++; skip(p, ' '); } } } } static void t1_check_end(void) { if (t1_eof()) return; t1_getline(); if (t1_prefix("{restore}")) t1_putline(); } #ifdef pdfTeX static boolean t1_open_fontfile(const char *open_name_prefix) { char *ex_ffname = NULL; ff_entry *ff; ff = check_ff_exist(fm_cur); if (ff->ff_path != NULL) t1_file = xfopen(cur_file_name = ff->ff_path, FOPEN_RBIN_MODE); else { set_cur_file_name(fm_cur->ff_name); pdftex_warn("cannot open Type 1 font file for reading"); return false; } t1_init_params(open_name_prefix); fontfile_found = true; return true; } static void t1_scan_only(void) { do { t1_getline(); t1_scan_param(); } while (t1_in_eexec == 0); t1_start_eexec(); do { t1_getline(); t1_scan_param(); } while (!(t1_charstrings() || t1_subrs())); } static void t1_include(void) { do { t1_getline(); t1_scan_param(); t1_putline(); } while (t1_in_eexec == 0); t1_start_eexec(); do { t1_getline(); t1_scan_param(); t1_putline(); } while (!(t1_charstrings() || t1_subrs())); t1_cs = true; do { t1_getline(); t1_putline(); } while (!t1_end_eexec()); t1_stop_eexec(); do { t1_getline(); t1_putline(); } while (!t1_cleartomark()); t1_check_end(); /* write "{restore}if" if found */ get_length3(); } #else /* not pdfTeX */ static boolean t1_open_fontfile(char *open_name_prefix) { if (!t1_open()) { (void)sprintf(errbuf, "! Couldn't find font file %s", cur_file_name); error(errbuf); } t1_init_params(open_name_prefix); return true; } #endif /* pdfTeX */ #define check_subr(subr) \ if (subr >= subr_size || subr < 0) \ pdftex_fail("Subrs array: entry index out of range (%i)", subr); static const char ** check_cs_token_pair(void) { const char **p = (const char**) cs_token_pairs_list; for (; p[0] != NULL; ++p) if (t1_buf_prefix(p[0]) && t1_buf_suffix(p[1])) return p; return NULL; } static void cs_store(boolean is_subr) { char *p; cs_entry *ptr; int subr; for (p = t1_line_array, t1_buf_ptr = t1_buf_array; *p != ' '; *t1_buf_ptr++ = *p++); *t1_buf_ptr = 0; if (is_subr) { subr = t1_scan_num(p + 1, 0); check_subr(subr); ptr = subr_tab + subr; } else { ptr = cs_ptr++; if (cs_ptr - cs_tab > cs_size) pdftex_fail("CharStrings dict: more entries than dict size (%i)", cs_size); if (strcmp(t1_buf_array + 1, notdef) == 0) /* skip the slash */ ptr->name = (char*) notdef; else ptr->name = xstrdup(t1_buf_array + 1); } /* copy " RD " + cs data to t1_buf_array */ memcpy(t1_buf_array, t1_line_array + cs_start - 4, (unsigned)(t1_cslen + 4)); /* copy the end of cs data to t1_buf_array */ for (p = t1_line_array + cs_start + t1_cslen, t1_buf_ptr = t1_buf_array + t1_cslen + 4; *p != 10; *t1_buf_ptr++ = *p++); *t1_buf_ptr++ = 10; if (is_subr && cs_token_pair == NULL) cs_token_pair = check_cs_token_pair(); ptr->len = t1_buf_ptr - t1_buf_array; ptr->cslen = t1_cslen; ptr->data = xtalloc(ptr->len, byte); memcpy(ptr->data, t1_buf_array, ptr->len); ptr->valid = true; } #define store_subr() cs_store(true) #define store_cs() cs_store(false) #define CC_STACK_SIZE 24 static integer cc_stack[CC_STACK_SIZE], *stack_ptr = cc_stack; static cc_entry cc_tab[CS_MAX]; static boolean is_cc_init = false; #define cc_pop(N) \ if (stack_ptr - cc_stack < (N)) \ stack_error(N); \ stack_ptr -= N #define stack_error(N) { \ pdftex_warn("CharString: invalid access (%i) to stack (%i entries)", \ N, stack_ptr - cc_stack); \ goto cs_error; \ } /* static integer cc_get(integer index) { if (index < 0) { if (stack_ptr + index < cc_stack ) stack_error(stack_ptr - cc_stack + index); return *(stack_ptr + index); } else { if (cc_stack + index >= stack_ptr) stack_error(index); return cc_stack[index]; } } */ #define cc_get(N) ((N) < 0 ? *(stack_ptr + (N)) : *(cc_stack + (N))) #define cc_push(V) *stack_ptr++ = V #define cc_clear() stack_ptr = cc_stack #define set_cc(N, B, A, C) \ cc_tab[N].nargs = A; \ cc_tab[N].bottom = B; \ cc_tab[N].clear = C; \ cc_tab[N].valid = true static void cc_init(void) { int i; if (is_cc_init) return; for (i = 0; i < CS_MAX; i++) cc_tab[i].valid = false; set_cc(CS_HSTEM, true, 2, true); set_cc(CS_VSTEM, true, 2, true); set_cc(CS_VMOVETO, true, 1, true); set_cc(CS_RLINETO, true, 2, true); set_cc(CS_HLINETO, true, 1, true); set_cc(CS_VLINETO, true, 1, true); set_cc(CS_RRCURVETO, true, 6, true); set_cc(CS_CLOSEPATH, false, 0, true); set_cc(CS_CALLSUBR, false, 1, false); set_cc(CS_RETURN, false, 0, false); /* set_cc(CS_ESCAPE, false, 0, false); */ set_cc(CS_HSBW, true, 2, true); set_cc(CS_ENDCHAR, false, 0, true); set_cc(CS_RMOVETO, true, 2, true); set_cc(CS_HMOVETO, true, 1, true); set_cc(CS_VHCURVETO, true, 4, true); set_cc(CS_HVCURVETO, true, 4, true); set_cc(CS_DOTSECTION, false, 0, true); set_cc(CS_VSTEM3, true, 6, true); set_cc(CS_HSTEM3, true, 6, true); set_cc(CS_SEAC, true, 5, true); set_cc(CS_SBW, true, 4, true); set_cc(CS_DIV, false, 2, false); set_cc(CS_CALLOTHERSUBR, false, 0, false); set_cc(CS_POP, false, 0, false); set_cc(CS_SETCURRENTPOINT, true, 2, true); is_cc_init = true; } #define cs_getchar() cdecrypt(*data++, &cr) #define mark_subr(n) cs_mark(0, n) #define mark_cs(s) cs_mark(s, 0) static void cs_warn(const char *cs_name, int subr, const char *fmt,...) { char buf[SMALL_BUF_SIZE]; va_list args; va_start(args, fmt); vsprintf(buf, fmt, args); va_end(args); if (cs_name == NULL) pdftex_warn("Subr (%i): %s", (int)subr, buf); else pdftex_warn("CharString (/%s): %s", cs_name, buf); } /* fix a return-less subr by appending CS_RETURN */ static void append_cs_return(cs_entry *ptr) { unsigned short cr; int i; byte *p, *q, *data, *new_data; assert(ptr != NULL && ptr->valid && ptr->used); /* decrypt the cs data to t1_buf_array, append CS_RETURN */ p = t1_buf_array; data = ptr->data + 4; cr = 4330; for (i = 0; i < ptr->cslen; i++) *p++ = cs_getchar(); *p = CS_RETURN; /* encrypt the new cs data to new_data */ new_data = xtalloc(ptr->len + 1, byte); memcpy(new_data, ptr->data, 4); p = new_data + 4; q = t1_buf_array; cr = 4330; for (i = 0; i < ptr->cslen + 1; i++) *p++ = cencrypt(*q++, &cr); memcpy(p, ptr->data + 4 + ptr->cslen, ptr->len - ptr->cslen - 4); /* update *ptr */ xfree(ptr->data); ptr->data = new_data; ptr->len++; ptr->cslen++; } static void cs_mark(const char *cs_name, int subr) { byte *data; int i, b, cs_len; int last_cmd = 0; integer a, a1, a2; unsigned short cr; static integer lastargOtherSubr3 = 3; /* the argument of last call to OtherSubrs[3] */ cs_entry *ptr; cc_entry *cc; if (cs_name == NULL) { check_subr(subr); ptr = subr_tab + subr; if (!ptr->valid) return; } else { if (cs_notdef != NULL && (cs_name == notdef || strcmp(cs_name, notdef) == 0)) ptr = cs_notdef; else { for (ptr = cs_tab; ptr < cs_ptr; ptr++) if (strcmp(ptr->name, cs_name) == 0) break; if (ptr == cs_ptr) { pdftex_warn("glyph `%s' undefined", cs_name); return; } if (ptr->name == notdef) cs_notdef = ptr; } } /* only marked CharString entries and invalid entries can be skipped; valid marked subrs must be parsed to keep the stack in sync */ if (!ptr->valid || (ptr->used && cs_name != NULL)) return; ptr->used = true; cr = 4330; cs_len = ptr->cslen; data = ptr->data + 4; for (i = 0; i < t1_lenIV; i++, cs_len--) cs_getchar(); while (cs_len > 0) { --cs_len; b = cs_getchar(); if (b >= 32) { if (b <= 246) a = b - 139; else if (b <= 250) { --cs_len; a = ((b - 247) << 8) + 108 + cs_getchar(); } else if (b <= 254) { --cs_len; a = -((b - 251) << 8) - 108 - cs_getchar(); } else { cs_len -= 4; a = (cs_getchar() & 0xff) << 24; a |= (cs_getchar() & 0xff) << 16; a |= (cs_getchar() & 0xff) << 8; a |= (cs_getchar() & 0xff) << 0; if (sizeof(integer) > 4 && (a & 0x80000000)) a |= ~0x7FFFFFFF; } cc_push(a); } else { if (b == CS_ESCAPE) { b = cs_getchar() + CS_1BYTE_MAX; cs_len--; } if (b >= CS_MAX) { cs_warn(cs_name, subr, "command value out of range: %i", (int)b); goto cs_error; } cc = cc_tab + b; if (!cc->valid) { cs_warn(cs_name, subr, "command not valid: %i", (int)b); goto cs_error; } if (cc->bottom) { if (stack_ptr - cc_stack < cc->nargs) cs_warn(cs_name, subr, "less arguments on stack (%i) than required (%i)", (int)(stack_ptr - cc_stack), (int)cc->nargs); else if (stack_ptr - cc_stack > cc->nargs) cs_warn(cs_name, subr, "more arguments on stack (%i) than required (%i)", (int)(stack_ptr - cc_stack), (int)cc->nargs); } last_cmd = b; switch (cc - cc_tab) { case CS_CALLSUBR: a1 = cc_get(-1); cc_pop(1); mark_subr(a1); if (!subr_tab[a1].valid) { cs_warn(cs_name, subr, "cannot call subr (%i)", (int)a1); goto cs_error; } break; case CS_DIV: cc_pop(2); cc_push(0); break; case CS_CALLOTHERSUBR: if (cc_get(-1) == 3) lastargOtherSubr3 = cc_get(-3); a1 = cc_get(-2) + 2; cc_pop(a1); break; case CS_POP: cc_push(lastargOtherSubr3); /* the only case when we care about the value being pushed onto stack is when POP follows CALLOTHERSUBR (changing hints by OtherSubrs[3]) */ break; case CS_SEAC: a1 = cc_get(3); a2 = cc_get(4); cc_clear(); mark_cs(standard_glyph_names[a1]); mark_cs(standard_glyph_names[a2]); break; default: if (cc->clear) cc_clear(); } } } if (cs_name == NULL && last_cmd != CS_RETURN) { pdftex_warn("last command in subr `%i' is not a RETURN; " "I will add it now but please consider fixing the font", (int) subr); append_cs_return(ptr); } return; cs_error: /* an error occured during parsing */ cc_clear(); ptr->valid = false; ptr->used = false; } static void t1_subset_ascii_part(void) { int i, j; t1_getline(); while (!t1_prefix("/Encoding")) { t1_scan_param(); t1_putline(); t1_getline(); } t1_builtin_enc(); if (is_reencoded(fm_cur)) t1_glyph_names = external_enc(); else t1_glyph_names = t1_builtin_glyph_names; if (is_included(fm_cur) && is_subsetted(fm_cur)) { make_subset_tag(fm_cur, t1_glyph_names); update_subset_tag(); } if (t1_encoding == ENC_STANDARD) t1_puts("/Encoding StandardEncoding def\n"); else { t1_puts("/Encoding 256 array\n0 1 255 {1 index exch /.notdef put} for\n"); for (i = 0, j = 0; i <= MAX_CHAR_CODE; i++) { if (is_used_char(i) && t1_glyph_names[i] != notdef) { j++; t1_printf("dup %i /%s put\n", (int)t1_char(i), t1_glyph_names[i]); } } /* We didn't mark anything for the Encoding array. */ /* We add "dup 0 /.notdef put" for compatibility */ /* with Acrobat 5.0. */ if (j == 0) t1_puts("dup 0 /.notdef put\n"); t1_puts("readonly def\n"); } do { t1_getline(); t1_scan_param(); if (!t1_prefix("/UniqueID")) /* ignore UniqueID for subsetted fonts */ t1_putline(); } while (t1_in_eexec == 0); } #define t1_subr_flush() t1_flush_cs(true) #define t1_cs_flush() t1_flush_cs(false) static void t1_flush_cs(boolean); static void cs_init(void) { cs_ptr = cs_tab = NULL; cs_dict_start = cs_dict_end = NULL; cs_count = cs_size = cs_size_pos = 0; cs_token_pair = NULL; subr_tab = NULL; subr_array_start = subr_array_end = NULL; subr_max = subr_size = subr_size_pos = 0; } static void init_cs_entry(cs_entry *cs) { cs->data = NULL; cs->name = NULL; cs->len = 0; cs->cslen = 0; cs->used = false; cs->valid = false; } static void t1_mark_glyphs(void); static void t1_read_subrs(void) { int i, s; cs_entry *ptr; t1_getline(); while (!(t1_charstrings() || t1_subrs())) { t1_scan_param(); t1_putline(); t1_getline(); } found: t1_cs = true; t1_scan = false; if (!t1_subrs()) return; subr_size_pos = strlen("/Subrs") + 1; /* subr_size_pos points to the number indicating dict size after "/Subrs" */ subr_size = t1_scan_num(t1_line_array + subr_size_pos, 0); if (subr_size == 0) { while (!t1_charstrings()) t1_getline(); return; } subr_tab = xtalloc(subr_size, cs_entry); for (ptr = subr_tab; ptr - subr_tab < subr_size; ptr++) init_cs_entry(ptr); subr_array_start = xstrdup(t1_line_array); t1_getline(); while (t1_cslen) { store_subr(); t1_getline(); } /* mark the first four entries without parsing */ for (i = 0; i < subr_size && i < 4; i++) subr_tab[i].used = true; /* the end of the Subrs array might have more than one line so we need to concatnate them to subr_array_end. Unfortunately some fonts don't have the Subrs array followed by the CharStrings dict immediately (synthetic fonts). If we cannot find CharStrings in next POST_SUBRS_SCAN lines then we will treat the font as synthetic and ignore everything until next Subrs is found */ #define POST_SUBRS_SCAN 5 s = 0; *t1_buf_array = 0; for (i = 0; i < POST_SUBRS_SCAN; i++) { if (t1_charstrings()) break; s += t1_line_ptr - t1_line_array; alloc_array(t1_buf, s, T1_BUF_SIZE); strcat(t1_buf_array, t1_line_array); t1_getline(); } subr_array_end = xstrdup(t1_buf_array); if (i == POST_SUBRS_SCAN) { /* CharStrings not found; suppose synthetic font */ for (ptr = subr_tab; ptr - subr_tab < subr_size; ptr++) if (ptr->valid) xfree(ptr->data); xfree(subr_tab); xfree(subr_array_start); xfree(subr_array_end); cs_init(); t1_cs = false; t1_synthetic = true; while (!(t1_charstrings() || t1_subrs())) t1_getline(); goto found; } } static void t1_flush_cs(boolean is_subr) { char *p; byte *r, *return_cs = NULL; cs_entry *tab, *end_tab, *ptr; char *start_line, *line_end; int count, size_pos; unsigned short cr, cs_len; if (is_subr) { start_line = subr_array_start; line_end = subr_array_end; size_pos = subr_size_pos; tab = subr_tab; count = subr_max + 1; end_tab = subr_tab + count; } else { start_line = cs_dict_start; line_end = cs_dict_end; size_pos = cs_size_pos; tab = cs_tab; end_tab = cs_ptr; count = cs_count; } t1_line_ptr = t1_line_array; for (p = start_line; p - start_line < size_pos;) *t1_line_ptr++ = *p++; while (isdigit(*p)) p++; sprintf(t1_line_ptr, "%u", count); strcat(t1_line_ptr, p); t1_line_ptr = eol(t1_line_array); t1_putline(); /* create return_cs to replace unsused subr's */ cs_len = 0; if (is_subr) { cr = 4330; /* at this point we have t1_lenIV >= 0; * a negative value would be caught in t1_scan_param() */ return_cs = xtalloc(t1_lenIV + 1, byte); for (cs_len = 0, r = return_cs; cs_len < t1_lenIV; cs_len++, r++) *r = cencrypt(0x00, &cr); *r = cencrypt(CS_RETURN, &cr); cs_len++; } for (ptr = tab; ptr < end_tab; ptr++) { if (ptr->used) { if (is_subr) sprintf(t1_line_array, "dup %lu %u", (unsigned long) (ptr - tab), ptr->cslen); else sprintf(t1_line_array, "/%s %u", ptr->name, ptr->cslen); p = strend(t1_line_array); memcpy(p, ptr->data, ptr->len); t1_line_ptr = p + ptr->len; t1_putline(); } else { /* replace unsused subr's by return_cs */ if (is_subr) { sprintf(t1_line_array, "dup %lu %u%s ", (unsigned long) (ptr - tab), cs_len, cs_token_pair[0]); p = strend(t1_line_array); memcpy(p, return_cs, cs_len); t1_line_ptr = p + cs_len; t1_putline(); sprintf(t1_line_array, " %s", cs_token_pair[1]); t1_line_ptr = eol(t1_line_array); t1_putline(); } } xfree(ptr->data); if (ptr->name != notdef) xfree(ptr->name); } sprintf(t1_line_array, "%s", line_end); t1_line_ptr = eol(t1_line_array); t1_putline(); if (is_subr) xfree(return_cs); xfree(tab); xfree(start_line); xfree(line_end); } static void t1_mark_glyphs(void) { int i; char *charset = extra_charset(); char *g, *s, *r; cs_entry *ptr; if (t1_synthetic || embed_all_glyphs(tex_font)) { /* mark everything */ if (cs_tab != NULL) for (ptr = cs_tab; ptr < cs_ptr; ptr++) if (ptr->valid) ptr->used = true; if (subr_tab != NULL) { for (ptr = subr_tab; ptr - subr_tab < subr_size; ptr++) if (ptr->valid) ptr->used = true; subr_max = subr_size - 1; } return; } mark_cs(notdef); for (i = 0; i <= MAX_CHAR_CODE; i++) if (is_used_char(i)) { if (t1_glyph_names[i] == notdef) pdftex_warn("character %i is mapped to %s", i, notdef); else mark_cs(t1_glyph_names[i]); } if (charset == NULL) goto set_subr_max; g = s = charset + 1; /* skip the first '/' */ r = strend(g); while (g < r) { while (*s != '/' && s < r) s++; *s = 0; /* terminate g by rewriting '/' to 0 */ mark_cs(g); g = s + 1; } set_subr_max: if (subr_tab != NULL) for (subr_max = -1, ptr = subr_tab; ptr - subr_tab < subr_size; ptr++) if (ptr->used && ptr - subr_tab > subr_max) subr_max = ptr - subr_tab; } static void t1_subset_charstrings(void) { cs_entry *ptr; cs_size_pos = strstr(t1_line_array, charstringname) + strlen(charstringname) - t1_line_array + 1; /* cs_size_pos points to the number indicating dict size after "/CharStrings" */ cs_size = t1_scan_num(t1_line_array + cs_size_pos, 0); cs_ptr = cs_tab = xtalloc(cs_size, cs_entry); for (ptr = cs_tab; ptr - cs_tab < cs_size; ptr++) init_cs_entry(ptr); cs_notdef = NULL; cs_dict_start = xstrdup(t1_line_array); t1_getline(); while (t1_cslen) { store_cs(); t1_getline(); } cs_dict_end = xstrdup(t1_line_array); t1_mark_glyphs(); if (subr_tab != NULL) { if (cs_token_pair == NULL) pdftex_fail("This Type 1 font uses mismatched subroutine begin/end token pairs."); t1_subr_flush(); } for (cs_count = 0, ptr = cs_tab; ptr < cs_ptr; ptr++) if (ptr->used) cs_count++; t1_cs_flush(); } static void t1_subset_end(void) { if (t1_synthetic) { /* copy to "dup /FontName get exch definefont pop" */ while (!strstr(t1_line_array, "definefont")) { t1_getline(); t1_putline(); } while (!t1_end_eexec()) t1_getline(); /* ignore the rest */ t1_putline(); /* write "mark currentfile closefile" */ } else while (!t1_end_eexec()) { /* copy to "mark currentfile closefile" */ t1_getline(); t1_putline(); } t1_stop_eexec(); while (!t1_cleartomark()) { t1_getline(); t1_putline(); } if (!t1_synthetic) /* don't check "{restore}if" for synthetic fonts */ t1_check_end(); /* write "{restore}if" if found */ get_length3(); } void writet1(void) { read_encoding_only = false; #ifdef pdfTeX t1_save_offset = 0; if (strcasecmp(strend(fm_fontfile(fm_cur)) - 4, ".otf") == 0) { if (!is_included(fm_cur) || is_subsetted(fm_cur)) pdftex_fail("OTF fonts must be included entirely"); writeotf(); is_otf_font = true; return; } #endif if (!is_included(fm_cur)) { /* scan parameters from font file */ if (!t1_open_fontfile("{")) return; t1_scan_only(); t1_close_font_file("}"); return; } if (!is_subsetted(fm_cur)) { /* include entire font */ if (!t1_open_fontfile("<<")) return; t1_include(); t1_close_font_file(">>"); return; } /* partial downloading */ if (!t1_open_fontfile("<")) return; t1_subset_ascii_part(); t1_start_eexec(); cc_init(); cs_init(); t1_read_subrs(); t1_subset_charstrings(); t1_subset_end(); t1_close_font_file(">"); } void t1_free(void) { xfree(t1_line_array); xfree(t1_buf_array); } #ifndef pdfTeX boolean t1_subset(char *fontfile, char *encfile, unsigned char *g) { int i; cur_enc_name = encfile; for (i = 0; i <= MAX_CHAR_CODE; i++) ext_glyph_names[i] = (char*) notdef; if (cur_enc_name != NULL) load_enc(cur_enc_name, ext_glyph_names); grid = g; cur_file_name = fontfile; hexline_length = 0; writet1(); for (i = 0; i <= MAX_CHAR_CODE; i++) if (ext_glyph_names[i] != notdef) free(ext_glyph_names[i]); return 1 ; /* note: there *is* no unsuccessful return */ } boolean t1_subset_2(char *fontfile, unsigned char *g, char *extraGlyphs) { int i; for (i = 0; i <= MAX_CHAR_CODE; i++) ext_glyph_names[i] = (char*) notdef; grid = g; cur_file_name = fontfile; hexline_length = 0; dvips_extra_charset = extraGlyphs ; writet1(); for (i = 0; i <= MAX_CHAR_CODE; i++) if (ext_glyph_names[i] != notdef) free(ext_glyph_names[i]); return 1 ; /* note: there *is* no unsuccessful return */ } #endif /* not pdfTeX */ dvipsk_TexLive-2009-stripped/dvips.test0000755000175000017500000000035411372532227020131 0ustar uwabamiuwabami#! /bin/sh rm -f mtest.ps ./dvips -D 300 $srcdir/testdata/dvipstst.xdv -o dvipstst.ps mv dvipstst.ps mtest.ps || exit 1 ./dvips -D 300 $srcdir/testdata/dvipstst.xdv -o || exit 1 diff $srcdir/testdata/dvipstst.xps dvipstst.ps exit 0 dvipsk_TexLive-2009-stripped/tex/0000755000175000017500000000000011372532227016676 5ustar uwabamiuwabamidvipsk_TexLive-2009-stripped/tex/blackdvi.tex0000644000175000017500000000566511372532227021213 0ustar uwabamiuwabami% This is BLACKDVI.STY and BLACKDVI.TEX in text format, as of March 5, % 1992, written by Jim Hafner, HAFNER@ALMADEN, or hafner@almaden.ibm.com. % This file turns all color commands defined by COLORDVI.STY or COLORDVI.TEX % into no-ops and so can be used to get B/W printing without having to % ferret out all the color macros. Modified by Tomas Rokicki to be a % bit smaller. Same license as dvips. % % 20 Aug. 1992: Revised by J. Hafner, by adding \globalColor as a no-op. % % For example, with FoilTeX, just use % \documentstyle[blackdvi]{foils} % in place of % \documentstyle[colordvi]{foils} % % This file can be used anywhere COLORDVI.STY or COLORDVI.TEX is used. In % particular, It can be used in any flavor of LaTeX (e.g. LaTeX, % FoilTeX, AMS-LaTeX) by adding the keyword "blackdvi" to the options in % the \documentstyle command (e.g., "\documentstyle[blackdvi]{foils}") or % \input in any flavor of TeX (e.g. Plain TeX, eplain, AMS-TeX or any of % the above LaTeX flavors) with the command "\input blackdvi". % % Here is the background command \def\background#1{}% % % This is used to define all the \newColor macros defined by \newColor % as no-ops. \def\newColor #1 {\expandafter\def\csname text#1\endcsname{}% \expandafter\def\csname #1\endcsname##1{##1}}% % % Here are the two macros used for user-definable colors \def\textColor#1{} \def\Color#1#2{#2} % % This is the macro that is used to protect certain regions of the % text from corruption by local color commands. See COLORDVI.STY for % more information. We make it a no-op in this style. \def\globalColor#1{#1} % % Here are the preset color names. This list should match the list % in . % \newColor GreenYellow \newColor Yellow \newColor Goldenrod \newColor Dandelion \newColor Apricot \newColor Peach \newColor Melon \newColor YellowOrange \newColor Orange \newColor BurntOrange \newColor Bittersweet \newColor RedOrange \newColor Mahogany \newColor Maroon \newColor BrickRed \newColor Red \newColor OrangeRed \newColor RubineRed \newColor WildStrawberry \newColor Salmon \newColor CarnationPink \newColor Magenta \newColor VioletRed \newColor Rhodamine \newColor Mulberry \newColor RedViolet \newColor Fuchsia \newColor Lavender \newColor Thistle \newColor Orchid \newColor DarkOrchid \newColor Purple \newColor Plum \newColor Violet \newColor RoyalPurple \newColor BlueViolet \newColor Periwinkle \newColor CadetBlue \newColor CornflowerBlue \newColor MidnightBlue \newColor NavyBlue \newColor RoyalBlue \newColor Blue \newColor Cerulean \newColor Cyan \newColor ProcessBlue \newColor SkyBlue \newColor Turquoise \newColor TealBlue \newColor Aquamarine \newColor BlueGreen \newColor Emerald \newColor JungleGreen \newColor SeaGreen \newColor Green \newColor ForestGreen \newColor PineGreen \newColor LimeGreen \newColor YellowGreen \newColor SpringGreen \newColor OliveGreen \newColor RawSienna \newColor Sepia \newColor Brown \newColor Tan \newColor Gray \newColor Black \newColor White dvipsk_TexLive-2009-stripped/tex/colordvi.tex0000644000175000017500000002020511372532227021240 0ustar uwabamiuwabami% This is COLORDVI.TEX and COLORDVI.STY in text format, as of % March 5, 1992, written by Jim Hafner, HAFNER@ALMADEN, or % hafner@almaden.ibm.com. Modified by Tomas Rokicki to be a % bit smaller and easier to add to. Same license as dvips. % % 20 Aug. 1992: Revised by J. Hafner, by adding \globalColor. % % This style file can be used to get color in TeX, LaTeX or more % importantly, FoilTeX as an optional style file. It is generic in % that the color parameters are determined by the driver's header files. % % It can be used with any driver which knows how to process the keywords % in the \special commands. Currently, only versions of dvips greater % than 5.478 (dvips is the DVI->PostScript driver by Tom Rokicki) and % TeXview on the NeXT interpret these specials. % % This file can be used in any flavor of LaTeX (e.g. LaTeX, FoilTeX, % AMS-LaTeX) by adding the keyword "colordvi" to the options in the % \documentstyle command (e.g., "\documentstyle[colordvi]{foils}") or \input % in any flavor of TeX (e.g. Plain TeX, eplain, AMS-TeX or any of the % above LaTeX flavors) with the command "\input colordvi". % % The actual parameters for each color are determined by the device % driver. % For "dvips", that is the header file color.pro prepended to the % output file by dvips. They can be overrriden by a user-supplied % header, called by either the -h option or the "h" flag in a printer % configuration file, or in the .dvipsrc (or its analogue on other % systems). % % Most of the color names and their matches were based on the % most recent (at time of writing) Crayola Crayon box of 64 colors. % % There are 68 predefined colors. At the end of this file is a % listing of the color names and their approximate PANTONE color % match. This is for reference purposes only. % % The first macro lets the user specify the background color for the % document. It sets the background color for the current page and all % succeeding pages, unless changed by another command of this type. To % change the background color back to the default, issue % \background{White} % \def\background#1{\special{background #1}} % % There are two types of text color commands. The first is in the form % \ColorName (note the uppercase for the color name). % % It is called a local color command since it takes one argument % enclosed in brackets. It writes the contents of its argument in the % selected color. This should be used for local or nested color % changes, since it restores the original color state when it completes. % The second type of color command is in the form % \textColorName % This uses the same naming convention as before. It is called a global % color command since it takes no arguments and simply sets the color at % this point. No previous color information is saved. IF YOU USE THIS % INTERNAL TO ANY LOCAL COLOR COMMAND, THE NESTING HISTORY IS LOST. % % This next definition is used in an invocation of a \textColorName % macro to save the global color value in local form via the \globalColor % macro. This new macro can then be used to protect certain regions of % the text, like item tags and headers and footers which can be % corrupted by local colors. In particular, item tags in lists can % incorrectly inherit the color from a local color command immediately % following it. The \subdef macro is invoked within the invocation of a % global color change. % \def\subdef#1{\gdef\globalColor##1{\special {color push #1}##1\special{color pop}}} % % Here are the global color changers, with color codes defined; % these are used to define the small region colors. % % This first is for user defined color. The argument #1 is for a "CMYK" % quadruple of intensity values between 0 and 1. (CMYK stands for Cyan, % Magenta, Yellow and Black.) E.g., \textColor{.2 .3 .4 .1} % \def\textColor#1{\subdef{cmyk #1}\special{color cmyk #1}} % % and a userdefinable local color command. \def\Color#1#2{\special{color push cmyk #1}#2\special{color pop}} % % \def\newColor #1 {\expandafter\def\csname #1\endcsname##1{\special {color push #1}##1\special{color pop}}% \expandafter\def\csname text#1\endcsname{\subdef{#1}% \special{color #1}}}% % % Here are the color names and their PANTONE match (approximately) % \newColor GreenYellow % GreenYellow Approximate PANTONE 388 \newColor Yellow % Yellow Approximate PANTONE YELLOW \newColor Goldenrod % Goldenrod Approximate PANTONE 109 \newColor Dandelion % Dandelion Approximate PANTONE 123 \newColor Apricot % Apricot Approximate PANTONE 1565 \newColor Peach % Peach Approximate PANTONE 164 \newColor Melon % Melon Approximate PANTONE 177 \newColor YellowOrange % YellowOrange Approximate PANTONE 130 \newColor Orange % Orange Approximate PANTONE ORANGE-021 \newColor BurntOrange % BurntOrange Approximate PANTONE 388 \newColor Bittersweet % Bittersweet Approximate PANTONE 167 \newColor RedOrange % RedOrange Approximate PANTONE 179 \newColor Mahogany % Mahogany Approximate PANTONE 484 \newColor Maroon % Maroon Approximate PANTONE 201 \newColor BrickRed % BrickRed Approximate PANTONE 1805 \newColor Red % Red VERY-Approx PANTONE RED \newColor OrangeRed % OrangeRed No PANTONE match \newColor RubineRed % RubineRed Approximate PANTONE RUBINE-RED \newColor WildStrawberry % WildStrawberry Approximate PANTONE 206 \newColor Salmon % Salmon Approximate PANTONE 183 \newColor CarnationPink % CarnationPink Approximate PANTONE 218 \newColor Magenta % Magenta Approximate PANTONE PROCESS-MAGENTA \newColor VioletRed % VioletRed Approximate PANTONE 219 \newColor Rhodamine % Rhodamine Approximate PANTONE RHODAMINE-RED \newColor Mulberry % Mulberry Approximate PANTONE 241 \newColor RedViolet % RedViolet Approximate PANTONE 234 \newColor Fuchsia % Fuchsia Approximate PANTONE 248 \newColor Lavender % Lavender Approximate PANTONE 223 \newColor Thistle % Thistle Approximate PANTONE 245 \newColor Orchid % Orchid Approximate PANTONE 252 \newColor DarkOrchid % DarkOrchid No PANTONE match \newColor Purple % Purple Approximate PANTONE PURPLE \newColor Plum % Plum VERY-Approx PANTONE 518 \newColor Violet % Violet Approximate PANTONE VIOLET \newColor RoyalPurple % RoyalPurple Approximate PANTONE 267 \newColor BlueViolet % BlueViolet Approximate PANTONE 2755 \newColor Periwinkle % Periwinkle Approximate PANTONE 2715 \newColor CadetBlue % CadetBlue Approximate PANTONE (534+535)/2 \newColor CornflowerBlue % CornflowerBlue Approximate PANTONE 292 \newColor MidnightBlue % MidnightBlue Approximate PANTONE 302 \newColor NavyBlue % NavyBlue Approximate PANTONE 293 \newColor RoyalBlue % RoyalBlue No PANTONE match \newColor Blue % Blue Approximate PANTONE BLUE-072 \newColor Cerulean % Cerulean Approximate PANTONE 3005 \newColor Cyan % Cyan Approximate PANTONE PROCESS-CYAN \newColor ProcessBlue % ProcessBlue Approximate PANTONE PROCESS-BLUE \newColor SkyBlue % SkyBlue Approximate PANTONE 2985 \newColor Turquoise % Turquoise Approximate PANTONE (312+313)/2 \newColor TealBlue % TealBlue Approximate PANTONE 3145 \newColor Aquamarine % Aquamarine Approximate PANTONE 3135 \newColor BlueGreen % BlueGreen Approximate PANTONE 320 \newColor Emerald % Emerald No PANTONE match \newColor JungleGreen % JungleGreen Approximate PANTONE 328 \newColor SeaGreen % SeaGreen Approximate PANTONE 3268 \newColor Green % Green VERY-Approx PANTONE GREEN \newColor ForestGreen % ForestGreen Approximate PANTONE 349 \newColor PineGreen % PineGreen Approximate PANTONE 323 \newColor LimeGreen % LimeGreen No PANTONE match \newColor YellowGreen % YellowGreen Approximate PANTONE 375 \newColor SpringGreen % SpringGreen Approximate PANTONE 381 \newColor OliveGreen % OliveGreen Approximate PANTONE 582 \newColor RawSienna % RawSienna Approximate PANTONE 154 \newColor Sepia % Sepia Approximate PANTONE 161 \newColor Brown % Brown Approximate PANTONE 1615 \newColor Tan % Tan No PANTONE match \newColor Gray % Gray Approximate PANTONE COOL-GRAY-8 \newColor Black % Black Approximate PANTONE PROCESS-BLACK \newColor White % White No PANTONE match % Now we make sure that we initialize the global color to Black \subdef{Black} dvipsk_TexLive-2009-stripped/tex/rotate.tex0000644000175000017500000000362011372532227020717 0ustar uwabamiuwabami% % These macros allow you to rotate or flip a \TeX\ box. Very useful for % sideways tables or upsidedown answers. % % To use, create a box containing the information you want to rotate. % (An hbox or vbox will do.) Now call \rotr\boxnum to rotate the % material and create a new box with the appropriate (flipped) dimensions. % \rotr rotates right, \rotl rotates left, \rotu turns upside down, and % \rotf flips. These boxes may contain other rotated boxes. % \newdimen\rotdimen \def\vspec#1{\special{ps:#1}}% passes #1 verbatim to the output \def\rotstart#1{\vspec{gsave currentpoint currentpoint translate #1 neg exch neg exch translate}}% #1 can be any origin-fixing transformation \def\rotfinish{\vspec{currentpoint grestore moveto}}% gets back in synch % % First, the rotation right. The reference point of the rotated box % is the lower right corner of the original box. % \def\rotr#1{\rotdimen=\ht#1\advance\rotdimen by\dp#1% \hbox to\rotdimen{\hskip\ht#1\vbox to\wd#1{\rotstart{90 rotate}% \box#1\vss}\hss}\rotfinish} % % Next, the rotation left. The reference point of the rotated box % is the upper left corner of the original box. % \def\rotl#1{\rotdimen=\ht#1\advance\rotdimen by\dp#1% \hbox to\rotdimen{\vbox to\wd#1{\vskip\wd#1\rotstart{270 rotate}% \box#1\vss}\hss}\rotfinish}% % % Upside down is simple. The reference point of the rotated box % is the upper right corner of the original box. (The box's height % should be the current font's xheight, \fontdimen5\font, % if you want that xheight to be at the baseline after rotation.) % \def\rotu#1{\rotdimen=\ht#1\advance\rotdimen by\dp#1% \hbox to\wd#1{\hskip\wd#1\vbox to\rotdimen{\vskip\rotdimen \rotstart{-1 dup scale}\box#1\vss}\hss}\rotfinish}% % % And flipped end for end is pretty ysae too. We retain the baseline. % \def\rotf#1{\hbox to\wd#1{\hskip\wd#1\rotstart{-1 1 scale}% \box#1\hss}\rotfinish}% dvipsk_TexLive-2009-stripped/tex/rotsample.tex0000644000175000017500000000200511372532227021423 0ustar uwabamiuwabami\input rotate \newbox\rotbox \newbox\rottwo % \font\big=cmr17 scaled\magstep4 This is a \setbox\rotbox=\hbox{simple}\rotl\rotbox\ test of \setbox\rotbox=\hbox{some}\rotu\rotbox\ rotation primitives that \setbox\rotbox=\hbox{\big work}\rotr\rotbox. Or maybe \setbox\rotbox=\hbox{\vrule height .2in width .2in}\rotl\rotbox\ not. \bigskip \centerline{\vbox{\offinterlineskip \def\tablerule{\noalign{\hrule}} \def\breather{height 2pt&&&&&&&&&&\cr} \def\allfive#1{\breather &\global\setbox\rottwo=\hbox{#1}\copy\rottwo&&% \setbox\rotbox=\copy\rottwo\rotl\rotbox&&% \setbox\rotbox=\copy\rottwo\rotu\rotbox&&% \setbox\rotbox=\copy\rottwo\rotr\rotbox&&% \rotf\rottwo&\cr \breather\tablerule} \offinterlineskip \halign{\vrule#&\hfil\ #\ \hfil&\vrule#&\hfil\ #\ \hfil&\vrule#&% \hfil\ #\ \hfil&\vrule#&\hfil\ #\ \hfil&\vrule#&\hfil\ #\ \hfil&\vrule#\cr \tablerule \breather &\strut Upside&&Leftside&&Downside&&Rightside&&Flipside&\cr \breather\tablerule \allfive{gnus} \allfive{$-b\pm\sqrt{b^2-4ac}\over2a$} \allfive{{\big A}}}}}% \bye dvipsk_TexLive-2009-stripped/unpack.c0000644000175000017500000001147311372532227017531 0ustar uwabamiuwabami/* * Unpacks the raster data from the packed buffer. This code was * translated from pktopx.web using an automatic translator, then * converted for this purpose. This little routine can be very useful * in other drivers as well. */ #include "dvips.h" /* The copyright notice in that file is included too! */ /* * external procedures */ #include "protos.h" /* * Some statics for use here. */ static halfword bitweight ; static halfword dynf ; static halfword gpower[17] = { 0 , 1 , 3 , 7 , 15 , 31 , 63 , 127 , 255 , 511 , 1023 , 2047 , 4095 , 8191 , 16383 , 32767 , 65535 } ; static long repeatcount ; static quarterword *p ; /* * We need procedures to get a nybble, bit, and packed word from the * packed data structure. */ shalfword getnyb(void) { if ( bitweight == 0 ) { bitweight = 16 ; return(*p++ & 15) ; } else { bitweight = 0 ; return(*p >> 4) ; } } Boolean getbit(void) { bitweight >>= 1 ; if ( bitweight == 0 ) { p++ ; bitweight = 128 ; } return(*p & bitweight) ; } long pkpackednum(void) { register halfword i; register long j ; i = getnyb () ; if ( i == 0 ) { do { j = getnyb () ; i++ ; } while ( j == 0 ) ; while ( i != 0 ) { j = j * 16 + ((long) getnyb ()) ; i-- ; } return ( j - 15 + ( 13 - dynf ) * 16 + dynf ) ; } else if ( i <= dynf ) return ( i ) ; else if ( i < 14 ) return ( ( i - dynf - 1 )*16 + getnyb() + dynf + 1 ) ; else { if (repeatcount != 0) error("! recursive repeat count in pk file") ; repeatcount = 1 ; if ( i == 14 ) repeatcount = pkpackednum () ; return ( pkpackednum() ) ; } } void flip(register char *s, register long howmany) { register char t ; while (howmany > 0) { t = *s ; *s = s[1] ; s[1] = t ; howmany-- ; s += 2 ; } } /* * And now we have our main routine. */ static halfword bftest = 1 ; long unpack(quarterword *pack, halfword *raster, halfword cwidth, halfword cheight, halfword cmd) { register integer i, j ; shalfword wordwidth ; register halfword word, wordweight ; shalfword rowsleft ; Boolean turnon ; shalfword hbit, ww ; long count ; halfword *oraster ; oraster = raster ; p = pack ; dynf = cmd / 16 ; turnon = cmd & 8 ; wordwidth = (cwidth + 15)/16 ; if ( dynf == 14 ) { bitweight = 256 ; for ( i = 1 ; i <= cheight ; i ++ ) { word = 0 ; wordweight = 32768 ; for ( j = 1 ; j <= cwidth ; j ++ ) { if ( getbit () ) word += wordweight ; wordweight >>= 1 ; if ( wordweight == 0 ) { *raster++ = word ; word = 0 ; wordweight = 32768 ; } } if ( wordweight != 32768 ) *raster++ = word ; } } else { rowsleft = cheight ; hbit = cwidth ; repeatcount = 0 ; ww = 16 ; word = 0 ; bitweight = 16 ; while ( rowsleft > 0 ) { count = pkpackednum() ; while ( count != 0 ) { if ( ( count <= ww ) && ( count < hbit ) ) { if ( turnon ) word += gpower [ ww ] - gpower [ ww - count ] ; hbit -= count ; ww -= count ; count = 0 ; } else if ( ( count >= hbit ) && ( hbit <= ww ) ) { if ( turnon ) word += gpower[ww] - gpower[ww-hbit] ; *raster++ = word ; for ( i = 1 ; i <= repeatcount ; i ++ ) { for ( j = 1 ; j <= wordwidth ; j ++ ) { *raster = *(raster - wordwidth) ; raster++ ; } } rowsleft -= repeatcount + 1 ; repeatcount = 0 ; word = 0 ; ww = 16 ; count -= hbit ; hbit = cwidth ; } else { if ( turnon ) word += gpower [ ww ] ; *raster++ = word ; word = 0 ; count -= ww ; hbit -= ww ; ww = 16 ; } } turnon = ! turnon ; } if ( ( rowsleft != 0 ) || ( (unsigned)hbit != cwidth ) ) error ( "! error while unpacking; more bits than required" ) ; } if (*(char *)&bftest) /* is the hardware LittleEndian? */ flip((char *)oraster, ((cwidth + 15) >> 4) * (long)cheight) ; return(p-pack) ; } dvipsk_TexLive-2009-stripped/paths.h0000644000175000017500000000465311372532227017376 0ustar uwabamiuwabami/* paths.h - public domain. * OUTPATH is where to send the output. If you want a .ps file to * be created by default, set this to "". If you want to automatically * invoke a pipe (as in lpr), make the first character an exclamation * point or a vertical bar, and the remainder the command line to * execute. */ #define OUTPATH "" /* (Actually OUTPATH will be overridden by an `o' line in config.ps.) */ /* * Names of config and prologue files: */ #if defined MSDOS || defined OS2 || defined(ATARIST) #define DVIPSRC "dvips.ini" #else #ifdef VMCMS /* IBM: VM/CMS */ #define DVIPSRC "dvips.profile" #else #ifdef MVSXA /* IBM: MVS/XA */ #define DVIPSRC "dvips.profile" #else /* not IBM */ #define DVIPSRC "$HOME/.dvipsrc" #endif #endif /* IBM: VM/CMS */ #endif #define HEADERFILE "tex.pro" #define CHEADERFILE "texc.pro" #define PSFONTHEADER "texps.pro" #define IFONTHEADER "finclude.pro" #define SPECIALHEADER "special.pro" #define COLORHEADER "color.pro" /* IBM: color */ #define CROPHEADER "crop.pro" #define PSMAPFILE "psfonts.map" #ifndef CONFIGFILE #define CONFIGFILE "config.ps" #endif #ifdef HPS #define HPSHEADER "hps.pro" #endif #ifndef KPATHSEA /* arguments to fopen */ #define READ "r" /* directories are separated in the path by PATHSEP */ /* DIRSEP is the char that separates directories from files */ #ifdef __THINK__ #define READBIN "rb" /* Macintosh OS will use binary mode */ #define PATHSEP ',' /* use same syntax as VMS */ #define DIRSEP ':' #else #if defined MSDOS || defined OS2 || defined(ATARIST) || defined(WIN32) #define READBIN "rb" /* MSDOS and OS/2 must use binary mode */ #define PATHSEP ';' #define DIRSEP '\\' #define DEVICESEP ':' #else #ifdef VMS #define READBIN "rb" /* VMS must use binary mode */ #define PATHSEP ',' #define DIRSEP ':' #else #ifdef VMCMS /* IBM: VM/CMS */ #define READBIN "rb" /* VMCMS must use binary mode */ #define PATHSEP ' ' #define DIRSEP ' ' #else #ifdef MVSXA /* IBM: MVS/XA */ #define READBIN "rb" /* MVSXA must use binary mode */ #define PATHSEP ':' #define DIRSEP '.' #else #define READBIN "r" /* UNIX doesn't care */ #define PATHSEP ':' #define DIRSEP '/' #endif /* IBM: VM/CMS */ #endif #endif #endif #endif extern void error() ; /* paths are all in the Makefile; by not supplying defaults, we force the installer to set them up. */ #endif /* ! KPATHSEA */ dvipsk_TexLive-2009-stripped/hps/0000755000175000017500000000000011372532227016670 5ustar uwabamiuwabamidvipsk_TexLive-2009-stripped/hps/README_HPS.txt0000644000175000017500000001602611372532227021105 0ustar uwabamiuwabamiREADME_HPS, version 0.3 last modified Wed Jul 19 11:34:52 MDT 1995 This is an alpha release of a hacked version of dvips v5.58 for converting HyperTeX into HyperPostScript that in turn can be run through the Adobe distiller to produce a PDF file with chapter and section numbers, references, equation numbers, etc. all links. This program is intended for use with the TeX and LaTex macros modified to create HyperTeX (see http://xxx.lanl.gov/hypertex/). With these macros, TeX and LaTex can be converted into HyperTeX without any additional work by the user. The linking information is stamped into the dvi file via a set of html: \special commands. Normally conversion to PostScript involves a loss of this information. This program preserves all of the information in the Hyperdvi file and makes it available to all PostScript interpreters, as well as the Adobe PDF distiller. In addition, the HyperPostScript produced will work with ordinary PostScript interpreters as well. The software itself is availabe at http://nqcd.lanl.gov/people/doyle/ or at ftp://gita.lanl.gov/people/doyle . INSTALLATION: To compile this program, just follow the usual instructions. Since this version stems from the latest version of dvips, you should install the up-to-date versions of config.* and the *.pro files. You can edit the Makefile to put these in some other place besides the usual one. Compiling with the -DHPS option (enabled by default in the Makefile) will produce the hacked version of dvips. Disabling this option will produce the version of dvips that you already know and love. I have made an effort to keep my changes to the dvips source code minimal. Most of the important stuff is in the source file hps.c. Almost all of the changes to the dvips source code are mandated by the need for putting information at the beginning of the PostScript file that isn't normally available until the entire dvi file has been completely processed. Thus, two temporary files are created when running the program to create HyperPostScript, head.tmp and body.tmp. One can freely delete these after running the program. The files modified from the 5.58 dvips distribution are: dvips.c, dvips.h, paths.h, dosection.c, dopage.c, dospecial.c, output.c, header.c, Makefile, and a very minor (irrelevant) change to afm2tfm.c. Files added are README_HPS.txt, CHANGES_HPS.txt, hps.c, and hps.lpro. Anyone interested in going all the way to PDF is encouraged to install PostScript versions of the TeX fonts on their system. The Adobe PDF readers are extremely slow when dealing with bitmapped fonts. There is, however, a bug in the Adobe distillers that requires a workaround for certain characters. See below for more info. Commercial versions of the fonts are available from BlueSky and public domain versions are available at ftp://ftp.shsu.edu/pub/tex/fonts/postscript/bakoma/ and ftp://ftp.shsu.edu/pub/tex/fonts/postscript/paradissa/ . MS-DOS/Windows user beware: The latest Adobe Type Manager doesn't like the BlueSky fonts. I haven't tried the public domain ones. (On a new and different PC I was able to get the Blue Sky fonts installed with ATM and it works fine. Your mileage may vary. July 19, 1995.) USAGE: After compiling with -DHPS, a user can invoke the Hyperdvi to HyperPostScript conversion with the -z flag. If the flag is omitted, dvips simply will revert back to the default behavior and skip over the html: \special commands. There appears to be a bug in the Adobe distillers. For optimization purposes the distillers drop trailing blanks (character code 32) from strings. Unfortunately, the PostScript fonts use this character code for certain characters (notably the Greek letter psi), and so these characters are dropped. This bug still appears in the 2.0 distiller. -----HACK ALERT----- One way around this is to change all the trailing blanks of strings to a character code that isn't in the font. The default behavior is to substitute a blank for a missing character, i.e. the distiller is fooled into substituting the right character. For instance, with the BlueSky fonts, one can globally replace " )" with "\200)" and get the desired result. With the public domain fonts, one will probably have to use a character code in the range 128 to 191 since these fonts duplicate the first 32 characters starting at 192 to avoid MS-DOS problems. Fortunately, a simple sed will accomplish the replacements. OTHER NOTES: The program is rather straightforward and operates by converting the dvi html: href \specials into pdfmark operators in the PostScript that specify the links. The html: name \specials are combined into a PostScript dictionary with all of the target information. The hps.pro header tries to gracefully handle various contingencies. If the resulting HyperPostScript file is handed off to an ordinary PostScript interpreter, the pdfm operators are automatically defined to pop the irrelevant information off the stack. On the other hand, if it is handed to a distiller, the PostScript program in the header tries to determine of what vintage the distiller is so that various enhancements of the pdfmark operator can be used or ignored (color, border dashing, etc.). Thus the resulting files can be distilled using either the latest PC versions or the older Unix versions. The hps.pro header was written by Tanmoy Bhattacharya (http://nqcd.lanl.gov/people/tanmoy/tanmoy.html) with some additions by me. Other PostScript interpreters are free to pick up the pdfm operators as well. For instance, Tanmoy has hacked Ghostview to pick up the links and make them active. This can be found at ftp://gita.lanl.gov/people/tanmoy/hypertex/ . THINGS TO DO: 1) More robust error checking and avoidance. 2) Escaping html correctly for external URL's. 3) More support for external URL's 4) More flexibility in the appearance of links on the page 5) Automatically get the papersize and margins correct (hardcoded at the moment). 6) Make C source more platform independent (which T. Rokicki has tried very hard to maintain). Code has only been tested on NeXT 3.3 (Motorola and HP) and Sun/SPARC (SunOS 4.1.4), and HP-UX 9.0.5. No effort has been made to make the code portable for MS-DOS, OS/2, VMS, or any other of the platforms that appear in the #ifdef statements. Code improvements for MS-DOS and OS/2 are forthcoming. DISCLAIMER: This software is made available without any implied warranties. See http://xxx.lanl.gov/disclaimer.html for a more complete disclaimer. COPYRIGHT: The HyperPostScript additions to dvips are Copyright (C) 1994, 1995 by Mark Doyle and the University of California. You may modify and use this program to your heart's content, so long as you send modifications to Mark Doyle and abide by the rest of the dvips copyrights. The hps.lpro file is Copyright (C) 1994, 1995 by Tanmoy Bhattacharya, Mark Doyle, and the University of California. You may modify and use it to your heart's content, so long as you send modifications to Tanmoy Bhattacharya or Mark Doyle and abide by the rest of the dvips copyrights. Mark Doyle doyle@mmm.lanl.gov http://nqcd.lanl.gov/people/doyle/ dvipsk_TexLive-2009-stripped/hps/CHANGES_HPS.txt0000644000175000017500000000253511372532227021220 0ustar uwabamiuwabamiHistory of changes to dvips source to include hypertex support last modified Tue Oct 31 10:26:45 MST 1995 Version 0.3c: 1) added a fixed version of hps.lpro (version 2.6 now). Version 0.3b: 1) corrected hps.c to handle line breaks in external links correctly. 2) added a fixed version of hps.lpro (version 2.4 now). Version 0.3a: 1) corrected the support for exteranl url's so that the 2.1 distiller can put in proper weblinks. (this just means a new hps.lpro by Tanmoy Bhattacharya.) 2) fixed a bug in dopage.c that prevented virtual fonts from working. Version 0.3: 1) added better support for external url's, notably support for breaking them across lines. 2) modified hps.pro to better handle external url's to maintain compatibility with Tanmoy Bhattacharya's hacked ghostview (hyperpostscript viewer). 3) Fixed bug so that newlines are now correctly added after %%BeginDocument line for included ps files. Version 0.2: 1) added support for hyperlinks that break across lines and pages. Your mileage may vary, but it seems to work fairly well. Version 0.1: 1) Added hps.c and hps.pro to dvips distribution and modified several source files to create hyperPostScript. Added -DHPS compilation option and -z flag to get this behavior. Otherwise everything should be identical to dvips5.58. Mark Doyle http://nqcd.lanl.gov/people/doyle/ doyle@mmm.lanl.gov dvipsk_TexLive-2009-stripped/INSTALLATION0000644000175000017500000002360511372532227017730 0ustar uwabamiuwabamiTHIS FILE IS WAY OUT OF DATE. Installation If dvips has not already been installed on your system, the following steps are all that is needed for installation of the program. After untaring, all installation files are found in this subdirectory. 1. Update Makefile---in particular, the paths. Everything concerning dvips can be adjusted in the Makefile. Make sure you set key parameters such as the default resolution, and make sure that the path given for packed pixel files is correct. 2. Check the file name definitions in mktexpk. If you don't have METAFONT installed, you cannot use mktexpk to automatically generate the fonts; you can, however, modify it to generate pk fonts from gf fonts if you don't have a full set of pk fonts but do have a set of gf fonts. If you don't have that, you should probably not install mktexpk at all; this will disable automatic font generation. 3. Check the configuration parameters in config.ps. You should also update the default resolution here (default is set to 400 - this is found in line 13). This file is the system-wide configuration file that will be automatically installed. If you are unsure how much memory your PostScript printer has, print the following file: %! Hey, we're PostScript /Times-Roman findfont 30 scalefont setfont 144 432 moveto vmstatus exch sub 40 string cvs show pop showpage Note that the number returned by this file is the total memory free; it is often a good idea to tell dvips that the printer has somewhat less memory. This is because many programs download permanent macros that can reduce the memory in the printer. In general, a memory size of about 300000 is plenty, since dvips can automatically split a document if required. It is unfortunate that PostScript printers with much less virtual memory still exist. Some systems or printers can dynamically increase the memory available to a PostScript interpreter; for these systems, a value of one million works well. 4. Run make ("make dvips"). Everything should compile smoothly. You may need to adjust the compiler options in the Makefile if something goes amiss. 5. Once everything is compiled, make install ("make install"). After this is done, you may want to create a configuration file for each PostScript printer at your site. 6. If the font caching is considered a security hole, make the `cache' directory be something like /tmp/pks, and cron a job to move the good pk files into the real directory. Or simply disable this feature by not installing mktexpk. 7. Don't forget to install the new vf files and tfm files. Note that the tfm files distributed with earlier (pre-5.471) versions of dvips, and all versions of other PostScript drivers, are different. Diagnosing Problems You've gone through all the trouble of installing dvips, carefully read all the instructions in this manual, and still can't get something to work. This is all too common, and is usually caused by some broken PostScript application out there. The following sections provide some helpful hints if you find yourself in such a situation. In all cases, you should attempt to find the smallest file that causes the problem. This will not only make debugging easier, it will also reduce the number of possible interactions among different parts of the system. Debug Options The -d flag to dvips is very useful for helping to track down certain errors. The parameter to this flag is an integer that tells what errors are currently being tracked. To track a certain class of debug messages, simply provide the appropriate number given below; if you wish to track multiple classes, sum the numbers of the classes you wish to track. The classes are: 1 specials 2 paths 4 fonts 8 pages 16 headers 32 font compression 64 files 128 memory No Output At All If you are not getting any output at all, even from the simplest one-character file (for instance, \ \bye), then something is very wrong. Practically any file sent to a PostScript laser printer should generate some output, at the very least a page detailing what error occurred, if any. Talk to your system administrator about downloading a PostScript error handler. (Adobe distributes a good one called ehandler.ps.) It is possible, especially if you are using non-Adobe PostScript, that your PostScript interpreter is broken. Even then it should generate an error message. I've tried to work around as many bugs as possible in common non-Adobe PostScript interpreters, but I'm sure I've missed a few. If dvips gives any strange error messages, or compilation on your machine generated a lot of warnings, perhaps the dvips program itself is broken. Carefully check the types in dvips.h and the declarations in the Makefile, and try using the debug options to determine where the error occurred. It is possible your spooler is broken and is misinterpreting the structured comments. Try the -N flag to turn off structured comments and see what happens. Output Too Small or Inverted If some documents come out inverted or too small, your spooler is not supplying an end of job indicator at the end of each file. (This happens a lot on small machines that don't have spoolers.) You can force dvips to do this with the -F flag, but note that this generates files with a binary character (control-D) in them. You can also try using the -s flag to enclose the entire job in a save/restore pair. Error Messages From Printer If your printer returns error messages, the error message gives very good information on what might be going wrong. One of the most common error messages is bop undefined. This is caused by old versions of Transcript and other spoolers that do not properly parse the setup section of the PostScript. To fix this, turn off structured comments with the -N option, but make sure you get your spooling software updated. Another error message is VM exhausted. (Some printers indicate this error by locking up; others quietly reset.) This is caused by telling dvips that the printer has more memory than it actually does, and then printing a complicated document. To fix this, try lowering the parameter to m in the configuration file; use the debug option to make sure you adjust the correct file. Other errors may indicate that the graphics you are trying to include don't nest properly in other PostScript documents, or any of a number of other possibilities. Try the output on a QMS PS-810 or other Adobe PostScript printer; it might be a problem with the printer itself. 400 DPI Is Used Instead Of 300 DPI This common error is caused by not editing the config.ps file to reflect the correct resolution for your site. You can use the debug flags (-d64) to see what files are actually being read. Long Documents Fail To Print This is usually caused by incorrectly specifying the amount of memory the printer has in config.ps; see the description above. Including Graphics Fails The reasons why graphics inclusions fail are too numerous to mention. The most common problem is an incorrect bounding box; read the section on bounding boxes and check your PostScript file. Complain very loudly to whoever wrote the software that generated the file if the bounding box is indeed incorrect. Another possible problem is that the figure you are trying to include does not nest properly; there are certain rules PostScript applications should follow when generating files to be included. The dvips program includes work-arounds for such errors in Adobe Illustrator and other programs, but there are certainly applications that haven't been tested. One possible thing to try is the -K flag, to strip the comments from an included figure. This might be necessary if the PostScript spooling software does not read the structuring comments correctly. Use of this flag will break graphics from some applications, though, since some applications read the PostScript file from the input stream looking for a particular comment. Any application which generates graphics output containing raw binary (not hex) will probably fail with dvips. Can't Find Font Files If dvips complains that it cannot find certain font files, it is possible that the paths haven't been set up correctly for your system. Use the debug flags to determine precisely what fonts are being looked for and make sure these match where the fonts are located on your system. Can't Generate Fonts This happens a lot if either mktexpk hasn't been properly edited and installed, or if the local installation of METAFONT isn't correct. If mktexpk isn't properly edited or isn't installed, an error such as mktexpk not found will be printed on the console. The fix is to talk to the person who installed dvips and have them fix this. If METAFONT isn't found when mktexpk is running, make sure it is installed on your system. The person who installed TeX should be able to install METAFONT easily. If METAFONT runs but generates fonts that are too large (and prints out the name of each character as well as just a character number), then your METAFONT base file probably hasn't been made properly. To make a proper plain.base, assuming the local mode definitions are contained in local.mf (on the NeXT, next.mf; on the Amiga, amiga.mf), type the following command (assuming csh under UNIX): localhost> inimf "plain; input local; dump" Now, copy the plain.base file from the current directory to where the base files are stored on your system. Note that a preloaded cmbase.base should never be used when creating fonts, and a program such as cmmf should never exist on the system. The macros defined in cmbase will break fonts that do not use cmbase; such fonts include the LaTeX fonts. Loading the cmbase macros when they are needed is done automatically and takes less than a second---an insignificant fraction of the total run time of METAFONT for a font, especially when the possibility of generating incorrect fonts is taken into account. If you create the LaTeX font {\tt circle10, for instance, with the cmbase macros loaded, the characters will have incorrect widths. dvipsk_TexLive-2009-stripped/dospecial.c0000644000175000017500000006244511372532227020220 0ustar uwabamiuwabami/* * This routine handles special commands; * predospecial() is for the prescan, dospecial() for the real thing. */ #include "dvips.h" /* The copyright notice in that file is included too! */ #ifdef KPATHSEA #include #include #else /* ! KPATHSEA */ #include #include #ifndef WIN32 extern int atoi(); extern int system(); #endif /* WIN32*/ #endif /* * These are the external routines called: */ /**/ #include "protos.h" /* IBM: color - end */ #ifdef HPS extern Boolean PAGEUS_INTERUPPTUS ; extern integer HREF_COUNT ; extern Boolean NEED_NEW_BOX ; extern Boolean HPS_FLAG ; #endif extern char errbuf[] ; extern shalfword linepos; extern Boolean usesspecial ; extern Boolean usescolor ; /* IBM: color */ extern int landscape ; extern char *paperfmt ; extern char *nextstring; extern char *maxstring; extern char *oname; extern FILE *bitfile; extern int quiet; extern fontdesctype *curfnt ; extern int actualdpi ; extern int vactualdpi ; extern integer hh, vv; extern int lastfont ; extern real conv ; extern real vconv ; extern integer hpapersize, vpapersize ; extern Boolean pprescan ; #ifndef KPATHSEA extern char *figpath ; #endif extern int prettycolumn ; extern Boolean disablecomments ; #ifdef DEBUG extern integer debug_flag; #endif static int specialerrors = 20 ; struct bangspecial { struct bangspecial *next ; char actualstuff[1] ; /* more space will actually be allocated */ } *bangspecials = NULL ; void specerror(char *s) { if (specialerrors > 0 #ifdef KPATHSEA && !kpse_tex_hush ("special") #endif ) { error(s) ; specialerrors-- ; } else if (specialerrors == 0 #ifdef KPATHSEA && !kpse_tex_hush ("special") #endif ) { error("more errors in special, being ignored . . .") ; error("(perhaps dvips doesn't support your macro package?)"); specialerrors-- ; } } static void outputstring(register char *p) { (void)putc('\n', bitfile) ; while(*p) { (void)putc(*p, bitfile) ; p++ ; } (void)putc('\n', bitfile) ; } static void trytobreakout(register char *p) { register int i ; register int instring = 0 ; int lastc = 0 ; i = 0 ; (void)putc('\n', bitfile) ; if(*p == '%') { while(*p) { (void)putc(*p, bitfile) ; p++ ; } (void)putc('\n', bitfile) ; return ; } while (*p) { if (i > 65 && *p == ' ' && instring == 0) { (void)putc('\n', bitfile) ; i = 0 ; } else { (void)putc(*p, bitfile) ; i++ ; } if (*p == '(' && lastc != '\\') instring = 1 ; else if (*p == ')' && lastc != '\\') instring = 0 ; lastc = *p ; p++ ; } (void)putc('\n', bitfile) ; } static void dobs(register struct bangspecial *q) { if (q) { dobs(q->next) ; trytobreakout(q->actualstuff) ; } } void outbangspecials(void) { if (bangspecials) { cmdout("TeXDict") ; cmdout("begin") ; cmdout("@defspecial\n") ; dobs(bangspecials) ; cmdout("\n@fedspecial") ; cmdout("end") ; } } /* We recommend that new specials be handled by the following general * (and extensible) scheme, in which the user specifies one or more * `key=value' pairs separated by spaces. * The known keys are given in KeyTab; they take values * of one of the following types: * * None: no value, just a keyword (in which case the = sign is omitted) * String: the value should be "' ' && *s!='=') s++ ; if (0 != (t = *s)) *s++ = 0 ; for(i=0; iscaledsize) * conv * 72 / DPI ; } break ; default: break ; } return (s) ; } /* * Now our routines. We get the number of bytes specified and place them * into the string buffer, and then parse it. Numerous conventions are * supported here for historical reasons. * * To support GNUplot's horribly long specials, we go ahead and malloc a * new string buffer if necessary. */ void predospecial(integer numbytes, Boolean scanning) { register char *p = nextstring ; register int i = 0 ; int j ; static int omega_specials = 0; if (nextstring + numbytes > maxstring) { p = nextstring = mymalloc(1000 + 2 * numbytes) ; maxstring = nextstring + 2 * numbytes + 700 ; } for (i=numbytes; i>0; i--) #ifdef VMCMS /* IBM: VM/CMS */ *p++ = ascii2ebcdic[(char)dvibyte()] ; #else #ifdef MVSXA /* IBM: MVS/XA */ *p++ = ascii2ebcdic[(char)dvibyte()] ; #else *p++ = (char)dvibyte() ; #endif /* IBM: VM/CMS */ #endif if (pprescan) return ; while (p[-1] <= ' ' && p > nextstring) p-- ; /* trim trailing blanks */ if (p==nextstring) return ; /* all blank is no-op */ *p = 0 ; p = nextstring ; while (*p <= ' ') p++ ; #ifdef DEBUG if (dd(D_SPECIAL)) (void)fprintf(stderr, "Preprocessing special: %s\n", p) ; #endif /* * We use strncmp() here to also pass things like landscape() * or landscape: or such. */ switch (*p) { case 'o': if (strncmp(p, "om:", 3)==0) { /* Omega specials ignored */ if (omega_specials==0) { fprintf(stderr, "Omega specials are currently ignored\n"); omega_specials++; } return; } break ; case 'l': if (strncmp(p, "landscape", 9)==0) { if (hpapersize || vpapersize) error( "both landscape and papersize specified: ignoring landscape") ; else landscape = 1 ; return ; } break ; case 'p': if (strncmp(p, "pos:", 4)==0) return ; /* positional specials */ if (strncmp(p, "papersize", 9)==0) { p += 9 ; while (*p == '=' || *p == ' ') p++ ; if (hpapersize == 0 || vpapersize == 0) { if (landscape) { error( "both landscape and papersize specified: ignoring landscape") ; landscape = 0 ; } handlepapersize(p, &hpapersize, &vpapersize) ; } return ; } break ; case 'x': if (strncmp(p, "xtex:", 5)==0) return ; break ; case 's': if (strncmp(p, "src:", 4)==0) return ; /* source specials */ break ; case 'h': if (strncmp(p, "header", 6)==0) { char *q, *r, *pre = NULL, *post = NULL ; p += 6 ; while ((*p <= ' ' || *p == '=' || *p == '(') && *p != 0) p++ ; if(*p == '{') { p++; while ((*p <= ' ' || *p == '=' || *p == '(') && *p != 0) p++; q = p ; while (*p != '}' && *p != 0) p++; r = p-1 ; while ((*r <= ' ' || *r == ')') && r >= q) r-- ; if (*p != 0) p++ ; r[1] = 0 ; /* q is the file name */ while ((*p <= ' ' || *p == '=' || *p == '(') && *p != 0) p++ ; if(strncmp(p, "pre", 3) == 0) { int bracecount = 1, numbytes = 0, j ; while(*p != '{' && *p != 0) p++ ; if (*p != 0) p++; for(r = p; *r != 0; r++) { if (*r == '{') bracecount++ ; else if (*r == '}') bracecount-- ; if (bracecount == 0) break ; numbytes++ ; } pre = (char *)malloc(numbytes+1); r = pre ; for (j=0; j < numbytes; j++) *r++ = *p++; *r = 0; if (*p != 0) p++; } while ((*p <= ' ' || *p == '=' || *p == '(') && *p != 0) p++ ; if(strncmp(p, "post", 4) == 0) { int bracecount = 1, numbytes = 0, j ; while(*p != '{' && *p != 0) p++ ; if (*p != 0) p++; for(r = p; *r != 0; r++) { if (*r == '{') bracecount++ ; else if (*r == '}') bracecount-- ; if (bracecount == 0) break ; numbytes++ ; } post = (char *)malloc(numbytes+1); r = post ; for (j=0; j < numbytes; j++) *r++ = *p++; *r = 0; } if (strlen(q) > 0) (void)add_header_general(q, pre, post) ; } else { q = p ; /* we will remove enclosing parentheses */ p = p + strlen(p) - 1 ; while ((*p <= ' ' || *p == ')') && p >= q) p-- ; p[1] = 0 ; if (p >= q) (void)add_header(q) ; } } break ; /* IBM: color - added section here for color header and color history */ /* using strncmp in this fashion isn't perfect; if later someone wants to introduce a verb like colorspace, well, just checking strcmp(p, "color", 5) will not do. But we leave it alone for the moment. --tgr */ case 'b': if (strncmp(p, "background", 10) == 0) { usescolor = 1 ; p += 10 ; while ( *p && *p <= ' ' ) p++ ; background(p) ; return ; } break ; case 'c': if (strncmp(p, "color", 5) == 0) { usescolor = 1 ; p += 5 ; while ( *p && *p <= ' ' ) p++ ; if (strncmp(p, "push", 4) == 0 ) { p += 4 ; while ( *p && *p <= ' ' ) p++ ; pushcolor(p, 0) ; } else if (strncmp(p, "pop", 3) == 0 ) { popcolor(0) ; } else { resetcolorstack(p,0) ; } } /* IBM: color - end changes */ break ; case '!': { register struct bangspecial *q ; p++ ; q = (struct bangspecial *)mymalloc((integer) (sizeof(struct bangspecial) + strlen(p))) ; (void)strcpy(q->actualstuff, p) ; q->next = bangspecials ; bangspecials = q ; usesspecial = 1 ; return ; } break ; default: #if 0 { /* Unknown special, must return */ return; } #endif break ; } usesspecial = 1 ; /* now the special prolog will be sent */ if (scanning && *p != '"' && (p=GetKeyVal(p, &j)) != NULL && j==0 && *ValStr != '`') /* Don't bother to scan compressed files. */ scanfontcomments(ValStr) ; } int maccess(char *s) { FILE *f = search(figpath, s, "r") ; if (f) (*close_file) (f) ; return (f != 0) ; } char *tasks[] = { 0, "iff2ps", "tek2ps" } ; static char psfile[511] ; void dospecial(integer numbytes) { register char *p = nextstring ; register int i = 0 ; int j, systemtype = 0 ; register char *q ; Boolean psfilewanted = 1 ; char *task = 0 ; char cmdbuf[111] ; #ifdef HPS if (HPS_FLAG && PAGEUS_INTERUPPTUS) { HREF_COUNT-- ; start_new_box() ; PAGEUS_INTERUPPTUS = 0 ; } if (HPS_FLAG && NEED_NEW_BOX) { vertical_in_hps(); NEED_NEW_BOX = 0; } #endif if (nextstring + numbytes > maxstring) error("! out of string space in dospecial") ; for (i=numbytes; i>0; i--) #ifdef VMCMS /* IBM: VM/CMS */ *p++ = ascii2ebcdic[(char)dvibyte()] ; #else #ifdef MVSXA /* IBM: MVS/XA */ *p++ = ascii2ebcdic[(char)dvibyte()] ; #else *p++ = (char)dvibyte() ; #endif /* IBM: VM/CMS */ #endif while (p[-1] <= ' ' && p > nextstring) p-- ; /* trim trailing blanks */ if (p==nextstring) return ; /* all blank is no-op */ *p = 0 ; p = nextstring ; while (*p <= ' ') p++ ; #ifdef DEBUG if (dd(D_SPECIAL)) (void)fprintf(stderr, "Processing special: %s\n", p) ; #endif switch (*p) { case 'o': if (strncmp(p, "om:", 3)==0) { /* Omega specials ignored */ return; } break ; case 'e': if (strncmp(p, "em:", 3)==0) { /* emTeX specials in emspecial.c */ emspecial(p); return; } break ; case 'p': if (strncmp(p, "pos:", 4)==0) return ; /* positional specials */ if (strncmp(p, "ps:", 3)==0) { psflush() ; /* now anything can happen. */ if (p[3]==':') { if (strncmp(p+4, "[nobreak]", 9) == 0) { hvpos() ; outputstring(&p[13]) ; } else if (strncmp(p+4, "[begin]", 7) == 0) { hvpos() ; trytobreakout(&p[11]) ; } else if (strncmp(p+4, "[end]", 5) == 0) trytobreakout(&p[9]); else trytobreakout(&p[4]); } else if (strncmp(p+3, " plotfile ", 10) == 0) { char *sfp ; hvpos() ; p += 13; /* * Fixed to allow popen input for plotfile * TJD 10/20/91 */ while (*p == ' ') p++; if (*p == '"') { p++; for (sfp = p; *sfp && *sfp != '"'; sfp++) ; } else { for (sfp = p; *sfp && *sfp != ' '; sfp++) ; } *sfp = '\0'; if (*p == '`') figcopyfile(p+1, 1); else figcopyfile (p, 0); /* End TJD changes */ } else { hvpos() ; trytobreakout(&p[3]); psflush() ; hvpos() ; } return; } if (strncmp(p, "papersize", 9) == 0) return ; #ifdef TPIC if (strncmp(p, "pn ", 3) == 0) {setPenSize(p+2); return;} if (strncmp(p, "pa ", 3) == 0) {addPath(p+2); return;} #endif break ; case 'l': if (strncmp(p, "landscape", 9)==0) return ; break ; case '!': return ; case 'h': if (strncmp(p, "header", 6)==0) return ; #ifdef HPS if (strncmp(p, "html:", 5)==0) { if (! HPS_FLAG) return; p += 5; while (isspace(*p)) p++; if (*p == '<') { char *sp = p; char *str; int ii=0;int len;int lower_len; while ((*p) && (*p != '>')) { ii++; p++; } str = (char *)mymalloc(ii+2); strncpy(str,sp+1,ii-1); str[ii-1] = 0;len=strlen(str); if(len>6) lower_len=6; else lower_len=len; for(ii=0;ii 0) { error(p) ; maxwarns-- ; } else if (maxwarns == 0) { error(". . . rest of warnings suppressed") ; maxwarns-- ; } return ; } #ifdef TPIC if (strcmp(p, "wh") == 0) {whitenLast(); return;} #endif break ; case 'b': if ( strncmp(p, "background", 10) == 0 ) return ; /* already handled in prescan */ #ifdef TPIC if (strcmp(p, "bk") == 0) {blackenLast(); return;} #endif break ; case 'c': if (strncmp(p, "color", 5) == 0) { p += 5 ; while ( *p && *p <= ' ' ) p++ ; if (strncmp(p, "push", 4) == 0 ) { p += 4 ; while ( *p && *p <= ' ' ) p++ ; pushcolor(p,1); } else if (strncmp(p, "pop", 3) == 0 ) { popcolor(1) ; } else { resetcolorstack(p,1) ; } return ; } /* IBM: color - end changes*/ break ; case 'f': #ifdef TPIC if (strcmp(p, "fp") == 0) {flushPath(0); return;} #endif break ; case 'i': #ifdef TPIC if (strcmp(p, "ip") == 0) {flushPath(1); return;} /* tpic 2.0 */ if (strncmp(p, "ia ", 3) == 0) {arc(p+2, 1); return;} /* tpic 2.0 */ #endif break ; case 'd': #ifdef TPIC if (strncmp(p, "da ", 3) == 0) {flushDashed(p+2, 0); return;} if (strncmp(p, "dt ", 3) == 0) {flushDashed(p+2, 1); return;} #endif break ; case 's': if (strncmp(p, "src:", 4) == 0) return; /* source specials */ #ifdef TPIC if (strcmp(p, "sp") == 0) {flushSpline(p+2); return;} /* tpic 2.0 */ if (strncmp(p, "sp ", 3) == 0) {flushSpline(p+3); return;} /* tpic 2.0 */ if (strcmp(p, "sh") == 0) {shadeLast(p+2); return;} /* tpic 2.0 */ if (strncmp(p, "sh ", 3) == 0) {shadeLast(p+3); return;} /* tpic 2.0 */ #endif break ; case 'a': #ifdef TPIC if (strncmp(p, "ar ", 3) == 0) {arc(p+2, 0); return;} /* tpic 2.0 */ #endif break ; case 't': #ifdef TPIC if (strncmp(p, "tx ", 3) == 0) {SetShade(p+3); return;} #endif break ; case '"': hvpos() ; cmdout("@beginspecial") ; cmdout("@setspecial") ; trytobreakout(p+1) ; cmdout("\n@endspecial") ; return ; break ; default: #if 0 { /* Unknown special, must return */ sprintf(errbuf,"Unrecognized special (first 10 chars: %.10s)", p); specerror(errbuf); return; } #endif break ; } /* At last we get to the key/value conventions */ psfile[0] = '\0'; hvpos(); cmdout("@beginspecial"); while( (p=GetKeyVal(p,&j)) != NULL ) switch (j) { case -1: /* for compatability with old conventions, we allow a file name * to be given without the 'psfile=' keyword */ if (!psfile[0] && maccess(KeyStr)==0) /* yes we can read it */ (void)strcpy(psfile,KeyStr) ; else { if (strlen(KeyStr) < 40) { sprintf(errbuf, "Unknown keyword (%s) in \\special will be ignored", KeyStr) ; } else { sprintf(errbuf, "Unknown keyword (%.40s...) in \\special will be ignored", KeyStr) ; } specerror(errbuf) ; } break ; case 0: case 1: case 2: /* psfile */ if (psfile[0]) { sprintf(errbuf, "More than one \\special %s given; %s ignored", "psfile", ValStr) ; specerror(errbuf) ; } else (void)strcpy(psfile,ValStr) ; task = tasks[j] ; break ; default: /* most keywords are output as PostScript procedure calls */ if (KeyTab[j].Type == Integer) numout((integer)ValInt); else if (KeyTab[j].Type == String) for (q=ValStr; *q; q++) scout(*q) ; else if (KeyTab[j].Type == None) ; else { /* Number or Dimension */ ValInt = (integer)(ValNum<0? ValNum-0.5 : ValNum+0.5) ; if (ValInt-ValNum < 0.001 && ValInt-ValNum > -0.001) numout((integer)ValInt) ; else { (void)sprintf(cmdbuf, "%f", ValNum) ; cmdout(cmdbuf) ; } } (void)sprintf(cmdbuf, "@%s", KeyStr); cmdout(cmdbuf) ; } cmdout("@setspecial"); if(psfile[0]) { if (task == 0) { systemtype = (psfile[0]=='`') ; figcopyfile(psfile+systemtype, systemtype); } else { fil2ps(task, psfile) ; } } else if (psfilewanted #ifdef KPATHSEA && !kpse_tex_hush ("special") #endif ) specerror("No \\special psfile was given; figure will be blank") ; cmdout("@endspecial"); } #ifdef KPATHSEA extern char *realnameoffile; #else extern char realnameoffile[] ; extern char *pictpath ; #endif void fil2ps(char *task, char *iname) { char cmd[400] ; FILE *f ; if (0 != (f=search(pictpath, iname, "r"))) { close_file(f) ; } else { fprintf(stderr, " couldn't open %s\n", iname) ; return ; } if (!quiet) { fprintf(stderr, " [%s", realnameoffile) ; fflush(stderr) ; } if (oname && oname[0] && oname[0] != '-') { putc(10, bitfile) ; close_file(bitfile) ; sprintf(cmd, "%s -f %s %s", task, realnameoffile, oname) ; system(cmd) ; if ((bitfile=fopen(oname, FOPEN_ABIN_MODE))==NULL) error_with_perror ("! couldn't reopen PostScript file", oname) ; linepos = 0 ; } else { sprintf(cmd, "%s -f %s", task, realnameoffile) ; system(cmd) ; } if (!quiet) fprintf(stderr, "]") ; } /* * Handles specials encountered during bounding box calculations. * Currently we only deal with psfile's or PSfiles and only those * that do not use rotations. */ static float rbbox[4] ; float * bbdospecial(int nbytes) { char *p = nextstring ; int i, j ; char seen[NKEYS] ; float valseen[NKEYS] ; if (nextstring + nbytes > maxstring) { p = nextstring = mymalloc(1000 + 2 * nbytes) ; maxstring = nextstring + 2 * nbytes + 700 ; } if (nextstring + nbytes > maxstring) error("! out of string space in bbdospecial") ; for (i=nbytes; i>0; i--) #ifdef VMCMS /* IBM: VM/CMS */ *p++ = ascii2ebcdic[(char)dvibyte()] ; #else #ifdef MVSXA /* IBM: MVS/XA */ *p++ = ascii2ebcdic[(char)dvibyte()] ; #else *p++ = (char)dvibyte() ; #endif /* IBM: VM/CMS */ #endif while (p[-1] <= ' ' && p > nextstring) p-- ; /* trim trailing blanks */ if (p==nextstring) return NULL ; /* all blank is no-op */ *p = 0 ; p = nextstring ; while (*p && *p <= ' ') p++ ; if (strncmp(p, "psfile", 6)==0 || strncmp(p, "PSfile", 6)==0) { float originx = 0, originy = 0, hscale = 1, vscale = 1, hsize = 0, vsize = 0 ; for (j=0; j= 0 && j < NKEYS && KeyTab[j].Type == Number) { seen[j]++ ; valseen[j] = ValNum ; } } /* * This code mimics what happens in @setspecial. */ if (seen[3]) hsize = valseen[3] ; if (seen[4]) vsize = valseen[4] ; if (seen[5]) originx = valseen[5] ; if (seen[6]) originy = valseen[6] ; if (seen[7]) hscale = valseen[7] / 100.0 ; if (seen[8]) vscale = valseen[8] / 100.0 ; if (seen[10] && seen[12]) hsize = valseen[12] - valseen[10] ; if (seen[11] && seen[13]) vsize = valseen[13] - valseen[11] ; if (seen[14] || seen[15]) { if (seen[14] && seen[15] == 0) { hscale = vscale = valseen[14] / (10.0 * hsize) ; } else if (seen[15] && seen[14] == 0) { hscale = vscale = valseen[15] / (10.0 * vsize) ; } else { hscale = valseen[14] / (10.0 * hsize) ; vscale = valseen[15] / (10.0 * vsize) ; } } /* at this point, the bounding box in PostScript units relative to the current dvi point is originx originy originx+hsize*hscale originy+vsize*vscale We'll let the bbox routine handle the remaining math. */ rbbox[0] = originx ; rbbox[1] = originy ; rbbox[2] = originx+hsize*hscale ; rbbox[3] = originy+vsize*vscale ; return rbbox ; } return 0 ; } dvipsk_TexLive-2009-stripped/Makefile.in0000644000175000017500000014311611372532227020151 0ustar uwabamiuwabami# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@ VPATH = @srcdir@ 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@ bin_PROGRAMS = afm2tfm$(EXEEXT) dvips$(EXEEXT) subdir = . DIST_COMMON = README $(am__configure_deps) $(dist_man1_MANS) \ $(dvips_TEXINFOS) $(srcdir)/../../build-aux/config.guess \ $(srcdir)/../../build-aux/config.sub \ $(srcdir)/../../build-aux/depcomp \ $(srcdir)/../../build-aux/install-sh \ $(srcdir)/../../build-aux/ltmain.sh \ $(srcdir)/../../build-aux/missing \ $(srcdir)/../../build-aux/mkinstalldirs \ $(srcdir)/../../build-aux/texinfo.tex $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/c-auto.in \ $(top_srcdir)/configure ../../build-aux/config.guess \ ../../build-aux/config.sub ../../build-aux/depcomp \ ../../build-aux/install-sh ../../build-aux/ltmain.sh \ ../../build-aux/missing ../../build-aux/mkinstalldirs \ ../../build-aux/texinfo.tex ../../build-aux/ylwrap AUTHORS \ ChangeLog INSTALL ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../../m4/kpse-common.m4 \ $(top_srcdir)/../../m4/kpse-kpathsea-flags.m4 \ $(top_srcdir)/../../m4/kpse-warnings.m4 \ $(top_srcdir)/../../m4/libtool.m4 \ $(top_srcdir)/../../m4/ltoptions.m4 \ $(top_srcdir)/../../m4/ltsugar.m4 \ $(top_srcdir)/../../m4/ltversion.m4 \ $(top_srcdir)/../../m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(SHELL) $(top_srcdir)/../../build-aux/mkinstalldirs CONFIG_HEADER = c-auto.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(infodir)" \ "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(prologdir)" PROGRAMS = $(bin_PROGRAMS) am_afm2tfm_OBJECTS = afm2tfm.$(OBJEXT) afm2tfm_OBJECTS = $(am_afm2tfm_OBJECTS) afm2tfm_LDADD = $(LDADD) am__DEPENDENCIES_1 = am_dvips_OBJECTS = bbox.$(OBJEXT) color.$(OBJEXT) dopage.$(OBJEXT) \ dosection.$(OBJEXT) dospecial.$(OBJEXT) download.$(OBJEXT) \ dpicheck.$(OBJEXT) drawPS.$(OBJEXT) dviinput.$(OBJEXT) \ dvips.$(OBJEXT) emspecial.$(OBJEXT) finclude.$(OBJEXT) \ fontdef.$(OBJEXT) header.$(OBJEXT) hps.$(OBJEXT) \ loadfont.$(OBJEXT) output.$(OBJEXT) papersiz.$(OBJEXT) \ pprescan.$(OBJEXT) prescan.$(OBJEXT) repack.$(OBJEXT) \ resident.$(OBJEXT) scalewidth.$(OBJEXT) scanpage.$(OBJEXT) \ search.$(OBJEXT) skippage.$(OBJEXT) t1part.$(OBJEXT) \ tfmload.$(OBJEXT) unpack.$(OBJEXT) virtualfont.$(OBJEXT) \ writet1.$(OBJEXT) dvips_OBJECTS = $(am_dvips_OBJECTS) dvips_LDADD = $(LDADD) DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/../../build-aux/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(afm2tfm_SOURCES) $(dvips_SOURCES) DIST_SOURCES = $(afm2tfm_SOURCES) $(dvips_SOURCES) INFO_DEPS = $(srcdir)/dvips.info TEXINFO_TEX = $(top_srcdir)/../../build-aux/texinfo.tex am__TEXINFO_TEX_DIR = $(top_srcdir)/../../build-aux DVIS = dvips.dvi PDFS = dvips.pdf PSS = dvips.ps HTMLS = dvips.html TEXINFOS = dvips.texi TEXI2DVI = texi2dvi TEXI2PDF = $(TEXI2DVI) --pdf --batch MAKEINFOHTML = $(MAKEINFO) --html AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) DVIPS = dvips RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive 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' man1dir = $(mandir)/man1 NROFF = nroff MANS = $(dist_man1_MANS) DATA = $(prolog_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir dist dist-all distcheck ETAGS = etags CTAGS = ctags am__tty_colors = \ red=; grn=; lgn=; blu=; std= DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ { test ! -d "$(distdir)" \ || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -fr "$(distdir)"; }; } am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ 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@ 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@ KPATHSEA_DEPEND = @KPATHSEA_DEPEND@ KPATHSEA_INCLUDES = @KPATHSEA_INCLUDES@ KPATHSEA_LIBS = @KPATHSEA_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ 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_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WARNING_CFLAGS = @WARNING_CFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ 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@ 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@ lt_ECHO = @lt_ECHO@ 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@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I ../../m4 SUBDIRS = squeeze INCLUDES = $(KPATHSEA_INCLUDES) AM_CPPFLAGS = -DUNIX -DKPATHSEA -DSHIFTLOWCHARS AM_CFLAGS = $(WARNING_CFLAGS) afm2tfm_SOURCES = afm2tfm.c afm2tfm_DEPENDENCIES = $(KPATHSEA_DEPEND) dvips_SOURCES = \ bbox.c \ color.c \ config.h \ debug.h \ dopage.c \ dosection.c \ dospecial.c \ download.c \ dpicheck.c \ drawPS.c \ dviinput.c \ dvips.c \ dvips.h \ emspecial.c \ finclude.c \ fontdef.c \ header.c \ hps.c \ loadfont.c \ output.c \ papersiz.c \ paths.h \ pprescan.c \ prescan.c \ protos.h \ ptexmac.h \ repack.c \ resident.c \ scalewidth.c \ scanpage.c \ search.c \ skippage.c \ t1part.c \ t1part.h \ tfmload.c \ unpack.c \ virtualfont.c \ writet1.c dvips_DEPENDENCIES = $(KPATHSEA_DEPEND) LDADD = $(KPATHSEA_LIBS) dist_man1_MANS = afm2tfm.1 dvips.1 info_TEXINFOS = dvips.texi dvips_TEXINFOS = contrib/config.proto dvips.help DISTCLEANFILES = $(DVIS) $(PSS) prolog_DATA = $(prologues) dist_prologues = \ color.lpro \ crop.lpro \ finclude.lpro \ hps.lpro \ special.lpro \ tex.lpro \ texps.lpro prologdir = ${prefix}/texmf/dvips/base prologues = $(dist_prologues:.lpro=.pro) texc.pro SUFFIXES = .pro .lpro EXTRA_DIST = $(dist_prologues) texc.script dvips.test pfbincl.test \ testdata/8r.enc testdata/ad.enc testdata/cmex10.pfb \ testdata/cmex10.tfm testdata/cmmi10.pfb testdata/cmmi10.tfm \ testdata/cmr10.pfb testdata/cmr10.tfm testdata/cmsy10.pfb \ testdata/cmsy10.tfm testdata/cmtt10.pfb testdata/cmtt10.tfm \ testdata/config.ps testdata/dvipstst.tex testdata/dvipstst.xdv \ testdata/dvipstst.xps testdata/pfbincl.eps \ testdata/pfbincl.tex testdata/pfbincl.xdv testdata/pfbincl.xps \ testdata/psfonts.map testdata/ptmbi.vf testdata/ptmbi8r.tfm \ testdata/ptmr.vf testdata/ptmr8r.tfm testdata/ptmri.vf \ testdata/ptmri8r.tfm testdata/special.pro testdata/texc.pro \ testdata/texps.pro INSTALLATION atari cmfonts.map config.ps \ contrib/PSTricks contrib/afm-extra contrib/colorsep.lpro \ contrib/configs contrib/crop.lpr contrib/latex209 \ contrib/volker contrib/whichinpath cyrfonts.map eufonts.map \ flib.c hps/CHANGES_HPS.txt hps/README_HPS.txt lafonts.map \ makefont.c mvs pc psfonts.map reencode tex vmcms vms CLEANFILES = $(prologues) texc.lpro dvipstst.ps missfont.log mtest.ps \ pfbincl.ps TESTS = dvips.test pfbincl.test TESTS_ENVIRONMENT = TEXMFCNF=$(srcdir)/../kpathsea \ TEXCONFIG=$(srcdir)/testdata TFMFONTS=$(srcdir)/testdata \ VFFONTS=$(srcdir)/testdata TEXFONTMAPS=$(srcdir)/testdata \ TEXPSHEADERS=$(srcdir)/testdata all: c-auto.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: .SUFFIXES: .pro .lpro .c .dvi .html .info .lo .o .obj .pdf .ps .texi am--refresh: @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): c-auto.h: stamp-h1 @if test ! -f $@; then \ rm -f stamp-h1; \ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ else :; fi stamp-h1: $(srcdir)/c-auto.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status c-auto.h $(srcdir)/c-auto.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f c-auto.h stamp-h1 install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list afm2tfm$(EXEEXT): $(afm2tfm_OBJECTS) $(afm2tfm_DEPENDENCIES) @rm -f afm2tfm$(EXEEXT) $(LINK) $(afm2tfm_OBJECTS) $(afm2tfm_LDADD) $(LIBS) dvips$(EXEEXT): $(dvips_OBJECTS) $(dvips_DEPENDENCIES) @rm -f dvips$(EXEEXT) $(LINK) $(dvips_OBJECTS) $(dvips_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/afm2tfm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bbox.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/color.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dopage.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dosection.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dospecial.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/download.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dpicheck.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drawPS.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dviinput.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dvips.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/emspecial.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/finclude.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fontdef.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/header.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hps.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loadfont.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/output.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/papersiz.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pprescan.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prescan.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/repack.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resident.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scalewidth.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scanpage.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/search.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/skippage.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t1part.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tfmload.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unpack.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/virtualfont.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writet1.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt .texi.info: 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: TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ $(TEXI2DVI) $< .texi.pdf: TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ $(TEXI2PDF) $< .texi.html: rm -rf $(@:.html=.htp) if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ -o $(@:.html=.htp) $<; \ then \ rm -rf $@; \ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \ else \ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \ exit 1; \ fi $(srcdir)/dvips.info: dvips.texi $(dvips_TEXINFOS) dvips.dvi: dvips.texi $(dvips_TEXINFOS) dvips.pdf: dvips.texi $(dvips_TEXINFOS) dvips.html: dvips.texi $(dvips_TEXINFOS) .dvi.ps: TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ $(DVIPS) -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)' && \ (install-info --version && \ install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; 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 dvips.aux dvips.cp dvips.cps dvips.fl dvips.fn dvips.ky dvips.log \ dvips.op dvips.pg dvips.tmp dvips.toc dvips.tp dvips.tps \ dvips.vr clean-aminfo: -test -z "dvips.dvi dvips.pdf dvips.ps dvips.html" \ || rm -rf dvips.dvi dvips.pdf dvips.ps dvips.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 install-man1: $(dist_man1_MANS) @$(NORMAL_INSTALL) test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)" @list='$(dist_man1_MANS)'; test -n "$(man1dir)" || exit 0; \ { for i in $$list; do echo "$$i"; done; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list='$(dist_man1_MANS)'; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ test -z "$$files" || { \ echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(man1dir)" && rm -f $$files; } install-prologDATA: $(prolog_DATA) @$(NORMAL_INSTALL) test -z "$(prologdir)" || $(MKDIR_P) "$(DESTDIR)$(prologdir)" @list='$(prolog_DATA)'; test -n "$(prologdir)" || list=; \ 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)$(prologdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(prologdir)" || exit $$?; \ done uninstall-prologDATA: @$(NORMAL_UNINSTALL) @list='$(prolog_DATA)'; test -n "$(prologdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(prologdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(prologdir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) c-auto.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) c-auto.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) c-auto.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) c-auto.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags check-TESTS: $(TESTS) @failed=0; all=0; xfail=0; xpass=0; skip=0; \ srcdir=$(srcdir); export srcdir; \ list=' $(TESTS) '; \ $(am__tty_colors); \ if test -n "$$list"; then \ for tst in $$list; do \ if test -f ./$$tst; then dir=./; \ elif test -f $$tst; then dir=; \ else dir="$(srcdir)/"; fi; \ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$tst[\ \ ]*) \ xpass=`expr $$xpass + 1`; \ failed=`expr $$failed + 1`; \ col=$$red; res=XPASS; \ ;; \ *) \ col=$$grn; res=PASS; \ ;; \ esac; \ elif test $$? -ne 77; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$tst[\ \ ]*) \ xfail=`expr $$xfail + 1`; \ col=$$lgn; res=XFAIL; \ ;; \ *) \ failed=`expr $$failed + 1`; \ col=$$red; res=FAIL; \ ;; \ esac; \ else \ skip=`expr $$skip + 1`; \ col=$$blu; res=SKIP; \ fi; \ echo "$${col}$$res$${std}: $$tst"; \ done; \ if test "$$all" -eq 1; then \ tests="test"; \ All=""; \ else \ tests="tests"; \ All="All "; \ fi; \ if test "$$failed" -eq 0; then \ if test "$$xfail" -eq 0; then \ banner="$$All$$all $$tests passed"; \ else \ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ fi; \ else \ if test "$$xpass" -eq 0; then \ banner="$$failed of $$all $$tests failed"; \ else \ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ fi; \ fi; \ dashes="$$banner"; \ skipped=""; \ if test "$$skip" -ne 0; then \ if test "$$skip" -eq 1; then \ skipped="($$skip test was not run)"; \ else \ skipped="($$skip tests were not run)"; \ fi; \ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$skipped"; \ fi; \ report=""; \ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ report="Please report to $(PACKAGE_BUGREPORT)"; \ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$report"; \ fi; \ dashes=`echo "$$dashes" | sed s/./=/g`; \ if test "$$failed" -eq 0; then \ echo "$$grn$$dashes"; \ else \ echo "$$red$$dashes"; \ fi; \ echo "$$banner"; \ test -z "$$skipped" || echo "$$skipped"; \ test -z "$$report" || echo "$$report"; \ echo "$$dashes$$std"; \ test "$$failed" -eq 0; \ else :; fi distdir: $(DISTFILES) @list='$(MANS)'; if test -n "$$list"; then \ list=`for p in $$list; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ if test -n "$$list" && \ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ echo " typically \`make maintainer-clean' will remove them" >&2; \ exit 1; \ else :; fi; \ else :; fi $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @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 @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-info dist-hook -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @$(am__cd) '$(distuninstallcheck_dir)' \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-recursive all-am: Makefile $(INFO_DEPS) $(PROGRAMS) $(MANS) $(DATA) c-auto.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(prologdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) 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) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) 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-recursive clean-am: clean-aminfo clean-binPROGRAMS clean-generic clean-libtool \ mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: $(DVIS) html: html-recursive html-am: $(HTMLS) info: info-recursive info-am: $(INFO_DEPS) install-data-am: install-info-am install-man install-prologDATA install-dvi: install-dvi-recursive install-dvi-am: $(DVIS) @$(NORMAL_INSTALL) test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)" @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ 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-binPROGRAMS install-html: install-html-recursive install-html-am: $(HTMLS) @$(NORMAL_INSTALL) test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)" @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \ for p in $$list; do \ if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \ $(am__strip_dir) \ if test -d "$$d$$p"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \ $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \ $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \ else \ list2="$$list2 $$d$$p"; \ 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-recursive install-info-am: $(INFO_DEPS) @$(NORMAL_INSTALL) test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)" @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ 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 (install-info --version && \ install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; 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-man1 install-pdf: install-pdf-recursive install-pdf-am: $(PDFS) @$(NORMAL_INSTALL) test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)" @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ 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: install-ps-recursive install-ps-am: $(PSS) @$(NORMAL_INSTALL) test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)" @list='$(PSS)'; test -n "$(psdir)" || list=; \ 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-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-aminfo mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: $(PDFS) ps: ps-recursive ps-am: $(PSS) uninstall-am: uninstall-binPROGRAMS uninstall-dvi-am uninstall-html-am \ uninstall-info-am uninstall-man uninstall-pdf-am \ uninstall-prologDATA uninstall-ps-am uninstall-man: uninstall-man1 .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check-am \ ctags-recursive install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-TESTS check-am clean \ clean-aminfo clean-binPROGRAMS clean-generic clean-libtool \ ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ dist-hook dist-info dist-lzma dist-shar dist-tarZ dist-xz \ dist-zip distcheck distclean distclean-compile \ distclean-generic distclean-hdr distclean-libtool \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-binPROGRAMS 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-man1 install-pdf install-pdf-am install-prologDATA \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-aminfo maintainer-clean-generic mostlyclean \ mostlyclean-aminfo mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am uninstall-binPROGRAMS uninstall-dvi-am \ uninstall-html-am uninstall-info-am uninstall-man \ uninstall-man1 uninstall-pdf-am uninstall-prologDATA \ uninstall-ps-am @KPATHSEA_RULE@ texc.lpro: texc.script tex.lpro $(SHELL) $(srcdir)/texc.script $(srcdir)/tex.lpro $@ # The `t[mp]-' business is so that we don't create an empty .pro file, # if running squeeze fails for some reason. A dependency on squeeze # fails here, so we include it below. .lpro.pro: squeeze/squeeze <$< >t-$@ && mv t-$@ $@ # When cross-compiling, EXEEXT for the build and hosts system may differ. # Thus we depend on the auxiliary file squeeze/stamp-squeeze. $(prologues): squeeze/stamp-squeeze squeeze/stamp-squeeze: cd squeeze && $(MAKE) $(AM_MAKEFLAGS) stamp-squeeze # in case of an SVN repository dist-hook: rm -rf `find $(distdir) -name .svn` # 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: dvipsk_TexLive-2009-stripped/eufonts.map0000644000175000017500000000077611372532227020272 0ustar uwabamiuwabamieuex10 euex10 instead of ) # define the c-compiler flag # add -D_POSIX_SOURCE if you are POSIX (also define SYSV) (only relevant # for subdir searching) # SYS = -DSYSV CFLAGS = $(DEFS) $(OPT) $(SYS) $(SECURE) $(EMTEX) $(DEFPFMT) LDFLAGS = SRC = dospecial.c dviinput.c fontdef.c loadfont.c dvips.c tfmload.c \ download.c prescan.c scanpage.c skippage.c output.c scalewidth.c \ dosection.c dopage.c resident.c search.c unpack.c drawps.c \ header.c makefont.c repack.c virtualfont.c dpicheck.c finclude.c \ pprescan.c papersiz.c flib.c color.c bbox.c emspecial.c OBJ = dospecial.o dviinput.o fontdef.o loadfont.o dvips.o tfmload.o \ download.o prescan.o scanpage.o skippage.o output.o scalewidth.o \ dosection.o dopage.o resident.o search.o unpack.o drawps.o \ header.o makefont.o repack.o virtualfont.o dpicheck.o finclude.o \ pprescan.o papersiz.o flib.o color.o bbox.o emspecial.o all : afm2tfm.ttp dvips.ttp tex.pro texps.pro texc.pro special.pro \ finclude.pro color.pro crop.pro .c.o: $(CC) $(CFLAGS) $< dvips.ttp : $(OBJ) ${LD} -O=dvips.ttp -C=dvips.lnk afm2tfm.ttp : afm2tfm.o $(LD) $(LDFLAGS) -O=afm2tfm.ttp $(LIBS) afm2tfm.o $(FLIBS) $(OBJ) : dvips.h debug.h flib.o resident.o dvips.o loadfont.o tfmload.o : paths.h squeeze.ttp : squeeze.o $(LD) $(LDFLAGS) -O=squeeze.ttp $(LIBS) squeeze.o $(FLIBS) dvipsk_TexLive-2009-stripped/ac/0000755000175000017500000000000011372532227016461 5ustar uwabamiuwabamidvipsk_TexLive-2009-stripped/ac/withenable.ac0000644000175000017500000000055611372532227021116 0ustar uwabamiuwabami## texk/dvipsk/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/dvipsk/ dnl dnl Copyright (C) 2009 Peter Breitenlohner dnl You may freely use, modify and/or distribute this file. dnl dnl extra_dirs = texk/dvipsk/squeeze dnl ## configure options and TL libraries required for dvipsk KPSE_ENABLE_PROG([dvipsk], [kpathsea]) dvipsk_TexLive-2009-stripped/special.lpro0000644000175000017500000002033311372532227020415 0ustar uwabamiuwabami% special.lpro - public domain. % header for the \special command % The structure of the PostScript produced by dvips for \special is: % @beginspecial % - any number of @hsize, @hoffset, @hscale, etc., commands % @setspecial % - the user's file of PostScript commands % @endspecial 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 0 N /rwiSeen false N /rhiSeen false N /letter {} N /note {} N /a4 {} N /legal {} N } B % % The following definition sets up the units that hscale/vscale are in. % For certain sites this might require change, but it is % recommended instead that any macro packages that require % hscale/vscale set the units appropriately via % % \special{! /@scaleunit 1 def } % % if global, or % % \special{" /@scaleunit 1 def } % % before each instance if multiple macro packages with % different requirements are being used. % /@scaleunit 100 N % s @hscale - set scale factor /@hscale {@scaleunit div /hsc X} B /@vscale {@scaleunit div /vsc X} B % d @hsize - specify a horizontal clipping dimension /@hsize {/hs X /CLIP 1 N} B /@vsize {/vs X /CLIP 1 N} B /@clip {/CLIP 2 N} B % d @hoffset - specify a shift for the figure /@hoffset {/ho X} B /@voffset {/vo X} B % a @angle - set rotation angle /@angle {/ang X} B % % Here we handle bounding box calculations, if necessary. % /@rwi { 10 div /rwi X /rwiSeen true N } B % rwi will be real width after scaling /@rhi { 10 div /rhi X /rhiSeen true N } B % rhi will be real height after scaling /@llx { /llx X } B /@lly { /lly X } B /@urx { /urx X } B /@ury { /ury X } B /magscale true def end % of SDict /@MacSetUp { userdict /md known % if md is defined { userdict /md get type /dicttype eq % and if it is a dictionary { userdict begin % expand it if necessary md length 10 add md maxlength ge {/md md dup length 20 add dict copy def}if end md begin % then redefine some stuff /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 % % The following procedure brings us back to PostScript size. It takes % into account the current global dvi magnification, so graphics % scale with the document. % /normalscale { Resolution 72 div VResolution 72 div neg scale magscale { DVImag dup scale } if 0 setgray } N % % We need the psfig macros. % % All software, documentation, and related files in this distribution of % psfig/tex are Copyright (c) 1987 Trevor J. Darrell % % Permission is granted for use and non-profit distribution of psfig/tex % providing that this notice be clearly maintained, but the right to % distribute any portion of psfig/tex for profit or as part of any commercial % product is specifically reserved for the author. % % % psfigTeX PostScript Prolog % $Header: /usr/local/src/TeX/Dvips-5.0.2/RCS/special.lpro,v 1.1 90/03/10 20:32:57 grunwald Exp $ % /psfts { S 65781.76 div N } N % x y bb-llx bb-lly bb-urx bb-ury startFig - /startTexFig { /psf$SavedState save N userdict maxlength dict begin /magscale true def normalscale currentpoint TR %set the current point as the user's origin /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 % scaling for x /psf$sy psf$y psf$ury psf$lly sub div N % scaling for y psf$sx psf$sy scale % scale by (sx,sy) psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR /showpage { } N /erasepage { } N /setpagedevice { pop } N /copypage { } N /p 3 def % necessary to get around a bug in Adobe Illustrator @MacSetUp } N % llx lly urx ury doclip - (args in figure coordinates) /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 - /endTexFig { end psf$SavedState restore } N % this will be invoked as the result of a \special command (for the % inclusion of PostScript graphics). The basic idea is to change all % scaling and graphics back to defaults, but to shift the origin % to the current position on the page. /@beginspecial % - @beginspecial - -- enter special mode { SDict begin /SpecialSave save N gsave normalscale currentpoint TR %set the current point as the user's origin @SpecialDefaults % setup default offsets, scales, sizes, and angle count /ocount X /dcount countdictstack N } N /@setspecial % to setup user specified offsets, scales, sizes (for clipping) { CLIP 1 eq { 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 rwiSeen { rwi urx llx sub div rhiSeen { rhi ury lly sub div } { dup } ifelse scale llx neg lly neg TR } { rhiSeen { rhi ury lly sub div dup scale llx neg lly neg TR } if } ifelse CLIP 2 eq { newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip } if /showpage {} N /erasepage {} N /setpagedevice { pop } N /copypage {} N newpath } N /@endspecial % - @endspecial - -- leave special mode { count ocount sub {pop} repeat countdictstack dcount sub {end} repeat grestore SpecialSave restore end } N /@defspecial { SDict begin } N /@fedspecial { end } B %%% macros for tpic /li % x y li - -- draw line to { lineto } B /rl % dx dy rl - -- draw relative line { rlineto } B /rc % x0 y0 x1 y1 y2 y2 rc -- draw bezier curve { rcurveto } B /np % np - -- start a new path and save currentpoint { /SaveX currentpoint /SaveY X N % remember current point 1 setlinecap newpath } N /st % st - -- draw the last path and restore currentpoint { stroke SaveX SaveY moveto % restore the current point } N /fil % fil -- fill the last path and restore currentpoint { fill SaveX SaveY moveto % restore the current point } N /ellipse % xc yc xrad yrad startAngle endAngle 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 of macros for tpic end % revert to previous dictionary dvipsk_TexLive-2009-stripped/scanpage.c0000644000175000017500000002364711372532227020037 0ustar uwabamiuwabami/* * This routine scans a page for font definitions and character usage. * It keeps an estimate of the memory remaining in the printer, and * returns false when that memory is exhausted, unless scanning the * first page. Otherwise it returns 1 if no problems were found, * or 2 if it thinks the first page of a section may overflow memory. */ #include "dvips.h" /* The copyright notice in that file is included too! */ /* * These are the external routines we need. */ #include "protos.h" extern integer firstboploc ; /* * And, of course, the globals it uses. */ #ifdef DEBUG extern integer debug_flag; #endif /* DEBUG */ extern fontdesctype *curfnt ; extern fontmaptype *ffont ; extern quarterword *curpos, *curlim ; extern integer fontmem ; extern integer pagecount ; extern integer pagenum ; extern Boolean compressed ; extern FILE *dvifile ; extern char errbuf[] ; extern frametype frames[] ; extern integer pagecost ; extern Boolean noomega ; /* * Charge pagecost for the cost of showing the character that *cd refers to * and charge fontmem for the cost of downloading the character if necessary. * A zero result indicates that we have run out of memory. * If the character is small (a small packet), we save 43 bytes (since we * use a single string instead of an array with integers in the PostScript.) */ Boolean prescanchar(chardesctype *cd) { register quarterword *cras ; register integer thischar ; if ((cd->flags & (PREVPAGE | THISPAGE)) == 0) { /* the character hasn't been used before in the current section */ cras = cd->packptr ; if (curfnt->resfont) { thischar = PSCHARCOST ; cd->flags |= THISPAGE ; } else if (cras != NULL) { thischar = CHARCOST ; if (cd->flags & BIGCHAR) thischar += 43 ; if (compressed) { if ((cd->flags & REPACKED) == 0) { repack(cd) ; cras = cd->packptr ; } if ((*cras & 4)) if ((*cras & 7) == 7) thischar += getlong(cras + 17) ; else thischar += getlong(cras + 9) ; else thischar += getlong(cras + 5) ; } else { if ((*cras & 4)) if ((*cras & 7) == 7) thischar += getlong(cras + 1) * ((getlong(cras + 5) + 7) >> 3) ; else thischar += (cras[3] * 256L + cras[4]) * ((cras[1] * 256L + cras[2] + 7) >> 3) ; else thischar += ((long)(cras[2] * ((cras[1] + 7) >> 3))) ; } cd->flags |= THISPAGE ; } else thischar = 0 ; fontmem -= thischar ; if (fontmem <= pagecost) { if (pagecount > 0) return(0) ; } } return(1) ; } /* * When a font is selected during the prescan, this routine makes sure that * the tfm or pk file is loaded and charges fontmem for the VM overhead in * creating the font. The result is true unless the section must be aborted * in order to keep this font from overflowing VM. */ Boolean preselectfont(fontdesctype *f) { curfnt = f ; if (curfnt->loaded == 0 || curfnt->loaded == 3) { if (!residentfont(curfnt)) if (!virtualfont(curfnt)) loadfont(curfnt) ; } if (curfnt->psname == 0) { if (curfnt->loaded < 2) { /* virtual font costs nothing (yet) */ if (curfnt->resfont) fontmem -= PSFONTCOST ; else { fontmem -= FONTCOST + curfnt->maxchars ; if (curfnt->loadeddpi != curfnt->dpi) fontmem -= 48 ; /* for the new font matrix */ } } curfnt->psname = 1 ; if (fontmem <= pagecost) { if (pagecount > 0) return(0) ; } } return(1) ; } /* * Now our scanpage routine. */ short scanpage(void) { register shalfword cmd ; register chardesctype *cd ; register fontmaptype *cfnt = 0 ; integer fnt ; integer mychar ; register frametype *frp = frames ; if (firstboploc == 0) firstboploc = ftell(dvifile) ; pagecost = 0 ; #ifdef DEBUG if (dd(D_PAGE)) #ifdef SHORTINT (void)fprintf(stderr,"Scanning page %ld\n", pagenum) ; #else /* ~SHORTINT */ (void)fprintf(stderr,"Scanning page %d\n", pagenum) ; #endif /* ~SHORTINT */ #endif /* DEBUG */ curfnt = NULL ; curpos = NULL ; bopcolor(0) ; /* IBM: color - put current colorstack to bopstackdepth */ while (1) { switch (cmd=dvibyte()) { case 130: case 131: case 135: case 136: case 139: case 247: case 248: case 249: case 250: case 251: case 252: case 253: case 254: case 255: /* unimplemented or illegal commands */ (void)sprintf(errbuf, "! DVI file contains unexpected command (%d)",cmd) ; error(errbuf) ; case 132: case 137: /* eight-byte commands setrule, putrule */ (void)dvibyte() ; (void)dvibyte() ; (void)dvibyte() ; (void)dvibyte() ; case 146: case 151: case 156: case 160: case 165: case 170: /* four-byte commands right4, w4, x4, down4, y4, z4 */ (void)dvibyte() ; case 145: case 150: case 155: case 159: case 164: case 169: /* three-byte commands right3, w3, x3, down3, y3, z3 */ (void)dvibyte() ; case 144: case 149: case 154: case 158: case 163: case 168: /* two-byte commands right2, w2, x2, down2, y2, z2 */ (void)dvibyte() ; case 143: case 148: case 153: case 157: case 162: case 167: /* one-byte commands right1, w1, x1, down1, y1, z1 */ (void)dvibyte() ; case 147: case 152: case 161: case 166: /* w0, x0, y0, z0 */ case 138: case 141: case 142: /* nop, push, pop */ break ; case 134: case 129: /* set2, put2 */ if (noomega) { (void)sprintf(errbuf, "! DVI file contains unexpected Omega command (%d)",cmd) ; error(errbuf) ; } mychar = dvibyte() ; mychar = (mychar << 8) + dvibyte() ; goto dochar ; case 133: case 128: cmd = dvibyte() ; /* set1 commands drops through */ default: /* these are commands 0 (setchar0) thru 127 (setchar 127) */ mychar = cmd ; dochar: /* * We are going to approximate that each string of consecutive characters * requires (length of string) bytes of PostScript VM. */ if (curfnt==NULL) error("! Bad DVI file: no font selected") ; if (mychar>=curfnt->maxchars) { (void)sprintf(errbuf,"! invalid char %d from font %s", mychar, curfnt->name) ; error(errbuf) ; } if (curfnt->loaded == 2) { /* scanning a virtual font character */ frp->curp = curpos ; frp->curl = curlim ; frp->ff = ffont ; frp->curf = curfnt ; if (++frp == &frames[MAXFRAME] ) error("! virtual recursion stack overflow") ; cd = curfnt->chardesc + mychar ; if (cd->packptr == 0) error("! a non-existent virtual character is being used; check vf/tfm files") ; curpos = cd->packptr + 2 ; curlim = curpos + (256*(long)(*cd->packptr)+(*(cd->packptr+1))) ; ffont = curfnt->localfonts ; if (ffont==NULL) curfnt = NULL ; else if (!preselectfont(ffont->desc)) goto outofmem ; } else { pagecost++ ; if (!prescanchar(curfnt->chardesc + mychar)) goto outofmem ; } break ; case 171: case 172: case 173: case 174: case 175: case 176: case 177: case 178: case 179: case 180: case 181: case 182: case 183: case 184: case 185: case 186: case 187: case 188: case 189: case 190: case 191: case 192: case 193: case 194: case 195: case 196: case 197: case 198: case 199: case 200: case 201: case 202: case 203: case 204: case 205: case 206: case 207: case 208: case 209: case 210: case 211: case 212: case 213: case 214: case 215: case 216: case 217: case 218: case 219: case 220: case 221: case 222: case 223: case 224: case 225: case 226: case 227: case 228: case 229: case 230: case 231: case 232: case 233: case 234: case 235: case 236: case 237: case 238: /* font selection commands */ if (cmd < 235) fnt = cmd - 171 ; /* fntnum0 thru fntnum63 */ else { fnt = dvibyte() ; /* fnt1 */ while (cmd-- > 235) fnt = (fnt << 8) + dvibyte() ; } for (cfnt=ffont; cfnt; cfnt = cfnt->next) if (cfnt->fontnum == fnt) goto fontfound ; printf("Font number %d not found\n", fnt) ; error("! no font selected") ; fontfound: curfnt = cfnt->desc ; if (!preselectfont(curfnt)) goto outofmem ; break ; case 239: predospecial((integer)dvibyte(), 1) ; break ; /* xxx1 */ case 240: predospecial((integer)twobytes(), 1) ; break ; /* xxx2 */ case 241: predospecial(threebytes(), 1) ; break ; /* xxx3 */ case 242: predospecial(signedquad(), 1) ; break ; /* xxx4 */ case 243: case 244: case 245: case 246: fontdef(cmd-242) ; break ; /* fntdef1 */ case 140: /* eop or end of virtual char */ if (curpos) { --frp ; curfnt = frp->curf ; ffont = frp->ff ; curlim = frp->curl ; curpos = frp->curp ; break ; } goto endofpage ; /* eop */ } } endofpage: if (fontmem > pagecost) return(1) ; if (pagecount > 0) { return(0) ; } /* IBM: color */ #ifdef SHORTINT (void)fprintf(stderr, "Page %ld may be too complex to print\n", pagenum) ; #else /* ~SHORTINT */ (void)fprintf(stderr, "Page %d may be too complex to print\n", pagenum) ; #endif /* ~SHORTINT */ /* * This case should be rare indeed. Even with only 200K of virtual memory, * at 11 bytes per char, you can have 18K characters on a page. */ return(2) ; outofmem: if (frp != frames) { curpos = frames->curp ; curlim = frames->curl ; ffont = frames->ff ; curfnt = frames->curf ; } return 0 ; } dvipsk_TexLive-2009-stripped/pprescan.c0000644000175000017500000002116311372532227020060 0ustar uwabamiuwabami/* * This is the main routine for the first (prescanning) pass. */ #include "dvips.h" /* The copyright notice in that file is included too! */ /* * These are all the external routines it calls: */ #include "protos.h" /* * These are the globals it accesses. */ #ifdef DEBUG extern integer debug_flag; #endif /* DEBUG */ extern fontdesctype *fonthead ; extern integer firstpage, lastpage ; extern integer firstseq, lastseq ; extern Boolean notfirst, notlast ; extern Boolean evenpages, oddpages, pagelist ; extern integer maxpages ; extern Boolean abspage ; extern FILE *dvifile ; extern fontdesctype *curfnt ; extern fontmaptype *ffont ; extern quarterword *curpos, *curlim ; extern integer pagenum ; extern char errbuf[] ; extern frametype frames[] ; extern Boolean noomega ; /* * We declare this to tell everyone we are prescanning early. */ Boolean pprescan ; /* * When a font is selected during the pre-prescan, this routine makes sure * that the tfm or vf (but not pk) file is loaded. */ static void ppreselectfont(fontdesctype *f) { int i ; curfnt = f ; if (curfnt->loaded == 0) { if (!residentfont(curfnt)) if (!virtualfont(curfnt)) { for (i=0; i<256; i++) curfnt->chardesc[i].flags = 0 ; curfnt->loaded = 3 ; /* we're scanning for sizes */ } } } /* * Now our scanpage routine. */ static void pscanpage(void) { register shalfword cmd ; register chardesctype *cd ; register fontmaptype *cfnt = 0 ; integer fnt ; integer mychar ; register frametype *frp = frames ; #ifdef DEBUG if (dd(D_PAGE)) #ifdef SHORTINT (void)fprintf(stderr,"PPrescanning page %ld\n", pagenum) ; #else /* ~SHORTINT */ (void)fprintf(stderr,"PPrescanning page %d\n", pagenum) ; #endif /* ~SHORTINT */ #endif /* DEBUG */ curfnt = NULL ; curpos = NULL ; bopcolor(0) ; while (1) { switch (cmd=dvibyte()) { case 130: case 131: case 135: case 136: case 139: case 247: case 248: case 249: case 250: case 251: case 252: case 253: case 254: case 255: /* unimplemented or illegal commands */ (void)sprintf(errbuf, "! DVI file contains unexpected command (%d)",cmd) ; error(errbuf) ; case 132: case 137: /* eight-byte commands setrule, putrule */ (void)dvibyte() ; (void)dvibyte() ; (void)dvibyte() ; (void)dvibyte() ; case 146: case 151: case 156: case 160: case 165: case 170: /* four-byte commands right4, w4, x4, down4, y4, z4 */ (void)dvibyte() ; case 145: case 150: case 155: case 159: case 164: case 169: /* three-byte commands right3, w3, x3, down3, y3, z3 */ (void)dvibyte() ; case 144: case 149: case 154: case 158: case 163: case 168: /* two-byte commands right2, w2, x2, down2, y2, z2 */ (void)dvibyte() ; case 143: case 148: case 153: case 157: case 162: case 167: /* one-byte commands right1, w1, x1, down1, y1, z1 */ (void)dvibyte() ; case 147: case 152: case 161: case 166: /* w0, x0, y0, z0 */ case 138: case 141: case 142: /* nop, push, pop */ break ; case 134: case 129: /* set2, put2 */ if (noomega) { (void)sprintf(errbuf, "! DVI file contains unexpected Omega command (%d)",cmd) ; error(errbuf) ; } mychar = dvibyte() ; mychar = (mychar << 8) + dvibyte() ; goto dochar ; case 133: case 128: cmd = dvibyte() ; /* set1, put1 commands drops through */ default: /* these are commands 0 (setchar0) thru 127 (setchar 127) */ mychar = cmd ; dochar: if (curfnt==NULL) error("! Bad DVI file: no font selected") ; if (mychar>=curfnt->maxchars) { (void)sprintf(errbuf,"! invalid char %d from font %s", mychar, curfnt->name) ; error(errbuf) ; } if (curfnt->loaded == 2) { /* scanning a virtual font character */ frp->curp = curpos ; frp->curl = curlim ; frp->ff = ffont ; frp->curf = curfnt ; if (++frp == &frames[MAXFRAME] ) error("! virtual recursion stack overflow") ; cd = curfnt->chardesc + mychar; if (cd->packptr == 0) error("! a non-existent virtual char is being used; check vf/tfm files") ; curpos = cd->packptr + 2 ; curlim = curpos + (256*(long)(*cd->packptr)+(*(cd->packptr+1))) ; ffont = curfnt->localfonts ; if (ffont==NULL) curfnt = NULL ; else ppreselectfont(ffont->desc) ; } else if (curfnt->loaded == 3) curfnt->chardesc[mychar].flags = EXISTS ; break ; case 171: case 172: case 173: case 174: case 175: case 176: case 177: case 178: case 179: case 180: case 181: case 182: case 183: case 184: case 185: case 186: case 187: case 188: case 189: case 190: case 191: case 192: case 193: case 194: case 195: case 196: case 197: case 198: case 199: case 200: case 201: case 202: case 203: case 204: case 205: case 206: case 207: case 208: case 209: case 210: case 211: case 212: case 213: case 214: case 215: case 216: case 217: case 218: case 219: case 220: case 221: case 222: case 223: case 224: case 225: case 226: case 227: case 228: case 229: case 230: case 231: case 232: case 233: case 234: case 235: case 236: case 237: case 238: /* font selection commands */ if (cmd < 235) fnt = cmd - 171 ; /* fntnum0 thru fntnum63 */ else { fnt = dvibyte() ; /* fnt1 */ while (cmd-- > 235) fnt = (fnt << 8) + dvibyte() ; } for (cfnt=ffont; cfnt; cfnt = cfnt->next) if (cfnt->fontnum == fnt) goto fontfound ; error("! no font selected") ; fontfound: curfnt = cfnt->desc ; ppreselectfont(curfnt) ; break ; case 239: predospecial((integer)dvibyte(), 1) ; break ; /* xxx1 */ case 240: predospecial((integer)twobytes(), 1) ; break ; /* xxx2 */ case 241: predospecial(threebytes(), 1) ; break ; /* xxx3 */ case 242: predospecial(signedquad(), 1) ; break ; /* xxx4 */ case 243: case 244: case 245: case 246: fontdef(cmd-242) ; break ; /* fntdef1 */ case 140: /* eop or end of virtual char */ if (curpos) { --frp ; curfnt = frp->curf ; ffont = frp->ff ; curlim = frp->curl ; curpos = frp->curp ; break ; } return ; } } } /* * Finally, here's our main pprescan routine. */ static integer firstmatch = -1, lastmatch = -1 ; void pprescanpages(void) { register int cmd ; integer lmaxpages = maxpages ; integer mpagenum ; integer pageseq = 0 ; int ntfirst = notfirst ; pprescan = 1 ; readpreamble() ; /* * Now we look for the first page to process. If we get to the end of * the file before the page, we complain (fatally). * Incidentally, we don't use the DVI file's bop backpointer to skip * over pages at high speed, because we want to look to for special * header that might be in skipped pages. */ while (1) { cmd = skipnop() ; if (cmd==248) error("! End of document before first specified page") ; if (cmd!=139) error("! Bad DVI file: expected bop") ; pagenum = signedquad() ; pageseq++ ; mpagenum = abspage ? pageseq : pagenum ; if (mpagenum == firstpage && ntfirst) firstmatch++ ; if (mpagenum == lastpage && notlast) lastmatch++ ; if (ntfirst && mpagenum == firstpage && firstmatch == firstseq) ntfirst = 0 ; if (ntfirst || ((evenpages && (pagenum & 1)) || (oddpages && (pagenum & 1)==0) || (pagelist && !InPageList(pagenum)))) { skipover(40) ; skippage() ; } else { if (notlast && mpagenum == lastpage) lastmatch-- ; break ; } } /* * Here we scan for each of the sections. First we initialize some of * the variables we need. We don't have to be as smart as before in * skipping pages. */ skipover(40) ; while (lmaxpages > 0) { if (!(evenpages && (pagenum & 1)) && !(oddpages && (pagenum & 1)==0) && !(pagelist && !InPageList(pagenum))) { pscanpage() ; lmaxpages-- ; } else skippage() ; mpagenum = abspage ? pageseq : pagenum ; if (mpagenum == lastpage && notlast) lastmatch++ ; if (notlast && mpagenum == lastpage && lastmatch == lastseq) lmaxpages = -1 ; /* we are done after this page. */ cmd=skipnop() ; if (cmd==248) break ; if (cmd!=139) error("! Bad DVI file: expected bop") ; pagenum = signedquad() ; skipover(40) ; pageseq++ ; } fseek(dvifile, 0L, 0) ; pprescan = 0 ; } dvipsk_TexLive-2009-stripped/dvips.10000644000175000017500000004106111372532227017307 0ustar uwabamiuwabami.TH DVIPS 1 "27 May 2004" .SH NAME dvips \- convert a TeX DVI file to PostScript .SH SYNOPSIS .B dvips [ .I options ] .IR file [\fB.dvi\fP] .SH DESCRIPTION THIS MAN PAGE IS OBSOLETE! See the Texinfo documentation instead. You can read it either in Emacs or with the standalone .B info program which comes with the GNU texinfo distribution as prep.ai.mit.edu:pub/gnu/texinfo*.tar.gz. .PP The program .B dvips takes a DVI file .IR file [\fB.dvi\fP] produced by TeX (or by some other processor such as GFtoDVI) and converts it to PostScript, normally sending the result directly to the (laser)printer. The DVI file may be specified without the .B .dvi extension. Fonts used may either be resident in the printer or defined as bitmaps in PK files, or a `virtual' combination of both. If the .B mktexpk program is installed, .B dvips will automatically invoke METAFONT to generate fonts that don't already exist. .PP For more information, see the Texinfo manual .IR dvips.texi , which should be installed somewhere on your system, hopefully accessible through the standard Info tree. .SH OPTIONS .TP .B -a Conserve memory by making three passes over the .dvi file instead of two and only loading those characters actually used. Generally only useful on machines with a very limited amount of memory, like some PCs. .TP .B -A Print only odd pages (TeX pages, not sequence pages). .TP .B -b num Generate .I num copies of each page, but duplicating the page body rather than using the .I #numcopies option. This can be useful in conjunction with a header file setting .I \ebop-hook to do color separations or other neat tricks. .TP .B -B Print only even pages (TeX pages, not sequence pages). .TP .B -c num Generate .I num copies of every page. Default is 1. (For collated copies, see the .I -C option below.) .TP .B -C num Create .I num copies, but collated (by replicating the data in the PostScript file). Slower than the .I -c option, but easier on the hands, and faster than resubmitting the same PostScript file multiple times. .TP .B -d num Set the debug flags. This is intended only for emergencies or for unusual fact-finding expeditions; it will work only if .B dvips has been compiled with the DEBUG option. If nonzero, prints additional information on standard error. The number is taken as a set of independent bits. The meaning of each bit follows. 1=specials; 2=paths; 4=fonts; 8=pages; 16=headers; 32=font compression; 64=files; 128=memory; 256=Kpathsea stat(2) calls; 512=Kpathsea hash table lookups; 1024=Kpathsea path element expansion; 2048=Kpathsea searches. To trace everything having to do with file searching and opening, use 3650 (2048 + 1024 + 512 + 64 + 2). To track all classes, you can use `-1' (output is extremely voluminous). .TP .B -D num Set the resolution in dpi (dots per inch) to .IR num . This affects the choice of bitmap fonts that are loaded and also the positioning of letters in resident PostScript fonts. Must be between 10 and 10000. This affects both the horizontal and vertical resolution. If a high resolution (something greater than 400 dpi, say) is selected, the .I -Z flag should probably also be used. .TP .B -e num Make sure that each character is placed at most this many pixels from its `true' resolution-independent position on the page. The default value of this parameter is resolution dependent. Allowing individual characters to `drift' from their correctly rounded positions by a few pixels, while regaining the true position at the beginning of each new word, improves the spacing of letters in words. .TP .B -E makes .B dvips attempt to generate an EPSF file with a tight bounding box. This only works on one-page files, and it only looks at marks made by characters and rules, not by any included graphics. In addition, it gets the glyph metrics from the .I tfm file, so characters that lie outside their enclosing .I tfm box may confuse it. In addition, the bounding box might be a bit too loose if the character glyph has significant left or right side bearings. Nonetheless, this option works well for creating small EPSF files for equations or tables or the like. (Note, of course, that .B dvips output is resolution dependent and thus does not make very good EPSF files, especially if the images are to be scaled; use these EPSF files with a great deal of care.) .TP .B -f Run as a filter. Read the .I .dvi file from standard input and write the PostScript to standard output. The standard input must be seekable, so it cannot be a pipe. If you must use a pipe, write a shell script that copies the pipe output to a temporary file and then points .B dvips at this file. This option also disables the automatic reading of the .I PRINTER environment variable, and turns off the automatic sending of control D if it was turned on with the .I -F option or in the configuration file; use .I -F after this option if you want both. .TP .B -F Causes Control-D (ASCII code 4) to be appended as the very last character of the PostScript file. This is useful when .B dvips is driving the printer directly instead of working through a spooler, as is common on extremely small systems. NOTE! DO NOT USE THIS OPTION! .TP .B -G Causes .B dvips to shift non-printing characters to higher-numbered positions. This may be useful sometimes. .TP .B -h name Prepend file .I name as an additional header file. (However, if the name is simply `-' suppress all header files from the output.) This header file gets added to the PostScript .IR userdict . .TP .B -i Make each section be a separate file. Under certain circumstances, .B dvips will split the document up into `sections' to be processed independently; this is most often done for memory reasons. Using this option tells .B dvips to place each section into a separate file; the new file names are created replacing the suffix of the supplied output file name by a three-digit sequence number. This option is most often used in conjunction with the .I -S option which sets the maximum section length in pages. For instance, some phototypesetters cannot print more than ten or so consecutive pages before running out of steam; these options can be used to automatically split a book into ten-page sections, each to its own file. .TP .B -j Download only needed characters from Type 1 fonts. This is the default in the current release. Some debugging flags trace this operation. You can also control partial downloading on a per-font basis, via the .B psfonts.map file. .TP .B -k Print crop marks. This option increases the paper size (which should be specified, either with a paper size special or with the .I -T option) by a half inch in each dimension. It translates each page by a quarter inch and draws cross-style crop marks. It is mostly useful with typesetters that can set the page size automatically. .TP .B -K This option causes comments in included PostScript graphics, font files, and headers to be removed. This is sometimes necessary to get around bugs in spoolers or PostScript post-processing programs. Specifically, the %%Page comments, when left in, often cause difficulties. Use of this flag can cause some included graphics to fail, since the PostScript header macros from some software packages read portions of the input stream line by line, searching for a particular comment. This option has been turned off by default because PostScript previewers and spoolers have been getting better. .TP .B -l num The last page printed will be the first one numbered .I num Default is the last page in the document. If the .I num is prefixed by an equals sign, then it (and any argument to the .I -p option) is treated as a sequence number, rather than a value to compare with .I \ecount0 values. Thus, using .I -l =9 will end with the ninth page of the document, no matter what the pages are actually numbered. .TP .B -m Specify manual feed for printer. .TP .B -mode mode Use .I mode as the Metafont device name for path searching and font generation. This overrides any value from configuration files. With the default paths, explicitly specifying the mode also makes the program assume the fonts are in a subdirectory named .IR mode . .TP .B -M Turns off the automatic font generation facility. If any fonts are missing, commands to generate the fonts are appended to the file .I missfont.log in the current directory; this file can then be executed and deleted to create the missing fonts. .TP .B -n num At most .I num pages will be printed. Default is 100000. .TP .B -N Turns off structured comments; this might be necessary on some systems that try to interpret PostScript comments in weird ways, or on some PostScript printers. Old versions of TranScript in particular cannot handle modern Encapsulated PostScript. .TP .B -noomega This will disable the use of Omega extensions when interpreting DVI files. By default, the additional opcodes .I 129 and .I 134 are recognized by dvips as Omega extensions and interpreted as requests to set 2-byte characters. The only drawback is that the virtual font array will (at least temporarily) require 65536 positions instead of the default 256 positions, i.e. the memory requirements of dvips will be slightly larger. If you find this unacceptable or encounter another problem with the Omega extensions, you can switch this extension off by using .B -noomega (but please do send a bug report if you find such problems - see the bug address in the .B AUTHORS section below). .TP .B -o name The output will be sent to file .I name If no file name is given (i.e., -o is last on the command line), the default name is .I file.ps where the .dvi file was called .IR file.dvi ; if this option isn't given, any default in the configuration file is used. If the first character of the supplied output file name is an exclamation mark, then the remainder will be used as an argument to .IR popen ; thus, specifying .I !lpr as the output file will automatically queue the file for printing. This option also disables the automatic reading of the .I PRINTER environment variable, and turns off the automatic sending of control D if it was turned on with the .I -F option or in the configuration file; use .I -F after this option if you want both. .TP .B -O offset Move the origin by a certain amount. The .I offset is a comma-separated pair of dimensions, such as .I .1in,-.3cm (in the same syntax used in the .I papersize special). The origin of the page is shifted from the default position (of one inch down, one inch to the right from the upper left corner of the paper) by this amount. .TP .B -p num The first page printed will be the first one numbered .IR num . Default is the first page in the document. If the .I num is prefixed by an equals sign, then it (and any argument to the .I -l option) is treated as a sequence number, rather than a value to compare with .I \ecount0 values. Thus, using .I -p =3 will start with the third page of the document, no matter what the pages are actually numbered. .TP .B -pp pagelist A comma-separated list of pages and ranges (a-b) may be given, which will be interpreted as .I \ecount0 values. Pages not specified will not be printed. Multiple .B -pp options may be specified or all pages and page ranges can be specified with one .B -pp option. .TP .B -P printername Sets up the output for the appropriate printer. This is implemented by reading in .I config.printername , which can then set the output pipe (as in, .I !lpr -Pprintername as well as the font paths and any other .I config.ps defaults for that printer only. Note that .I config.ps is read before .I config.printername In addition, another file called .I ~/.dvipsrc is searched for immediately after .IR config.ps ; this file is intended for user defaults. If no .I -P command is given, the environment variable .I PRINTER is checked. If that variable exists, and a corresponding configuration file exists, that configuration file is read in. .TP .B -q Run in quiet mode. Don't chatter about pages converted, etc.; report nothing but errors to standard error. .TP .B -r Stack pages in reverse order. Normally, page 1 will be printed first. .TP .B -R[0|1|2] Run securely. .BR -R2 disables both shell command execution in .I \especial'{} (via backticks .BR ` ) and config files (via the .I E option), and opening of any absolute filenames. .BR -R1 , the default, forbids shell escapes but allows absolute filenames. .BR -R0 allows both. The config file option is .I z .TP .B -s Causes the entire global output to be enclosed in a save/restore pair. This causes the file to not be truly conformant, and is thus not recommended, but is useful if you are driving the printer directly and don't care too much about the portability of the output. .TP .B -S num Set the maximum number of pages in each `section'. This option is most commonly used with the .I -i option; see that documentation above for more information. .TP .B -t papertype This sets the paper type to .IR papertype . The .I papertype should be defined in one of the configuration files, along with the appropriate code to select it. (Currently known types include .BR letter , .BR legal , .BR ledger , .BR a4 , .BR a3 ). You can also specify .BR -t " " landscape , which rotates a document by 90 degrees. To rotate a document whose size is not letter, you can use the .I -t option twice, once for the page size, and once for landscape. You should not use any .I -t option when the DVI file already contains a .I papersize special, as is done by some LaTeX packages, notably hyperref.sty. The upper left corner of each page in the .I .dvi file is placed one inch from the left and one inch from the top. Use of this option is highly dependent on the configuration file. Note that executing the .B letter or .B a4 or other PostScript operators cause the document to be nonconforming and can cause it not to print on certain printers, so the paper size should not execute such an operator if at all possible. .TP .B -T papersize Set the paper size to the given pair of dimensions. This option takes its arguments in the same style as .IR -O . It overrides any paper size special in the dvi file. .TP .B -u psmapfile Set .I psmapfile to be the file that dvips uses for looking up PostScript font aliases. If .I psmapfile begins with a .B + character, then the rest of the name is used as the name of the map file, and the map file is appended to the list of map files (instead of replacing the list). In either case, if .I psmapfile has no extension, then .B .map is added at the end. .TP .B -U Disable a PostScript virtual memory saving optimization that stores the character metric information in the same string that is used to store the bitmap information. This is only necessary when driving the Xerox 4045 PostScript interpreter. It is caused by a bug in that interpreter that results in `garbage' on the bottom of each character. Not recommended unless you must drive this printer. .TP .B -v Print the .B dvips version number and exit. .TP .B -V Download non-resident PostScript fonts as bitmaps. This requires use of `gsftopk' or `pstopk' or some other such program(s) in order to generate the required bitmap fonts; these programs are supplied with .BR dvips . .TP .B -x num Set the magnification ratio to .IR num /1000. Overrides the magnification specified in the .dvi file. Must be between 10 and 100000. Instead of an integer, .I num may be a real number for increased precision. .TP .B -X num Set the horizontal resolution in dots per inch to .IR num . .TP .B -y num Set the magnification ratio to .IR num /1000 times the magnification specified in the .dvi file. See .B -x above. .TP .B -Y num Set the vertical resolution in dots per inch to .IR num . .TP .B -z Pass .B html hyperdvi specials through to the output for eventual distillation into PDF. This is not enabled by default to avoid including the header files unnecessarily, and use of temporary files in creating the output. .TP .B -Z Causes bitmapped fonts to be compressed before they are downloaded, thereby reducing the size of the PostScript font-downloading information. Especially useful at high resolutions or when very large fonts are used. Will slow down printing somewhat, especially on early 68000-based PostScript printers. .SH "SEE ALSO" mf(1), afm2tfm(1), tex(1), latex(1), lpr(1), .IR dvips.texi . .SH ENVIRONMENT Dvipsk uses the same environment variables and algorithms for finding font files as TeX and its friends do. See the documentation for the Kpathsea library for details. (Repeating it here is too cumbersome.) .PP KPATHSEA_DEBUG: Trace Kpathsea lookups; set to -1 for complete tracing. .PP PRINTER: see above. .SH NOTES PostScript is a registered trademark of Adobe Systems Incorporated. .SH AUTHOR Tomas Rokicki ; extended to virtual fonts by Don Knuth. Path searching and configuration modifications by kb@mail.tug.org. dvipsk_TexLive-2009-stripped/flib.c0000644000175000017500000002620311372532227017161 0ustar uwabamiuwabami/* * Here's some code to handle font libraries. Not needed unless you are * running on a system that can't handle files well. Not endorsed by * Tomas Rokicki or Radical Eye Software; use at your own risk. */ #ifdef FONTLIB #include "dvips.h" /* The copyright notice in that file is included too! */ #include "paths.h" #include "protos.h" extern int debug_flag ; extern char errbuf[] ; extern char *flipath ; extern char *fliname ; extern FILE *pkfile ; /* * font library structures */ struct fli_entry { unsigned long offset; char *name; }; struct fli_size { unsigned long size; halfword entries; struct fli_entry *entry; }; struct fli_lib { char *name; halfword sizes; struct fli_size *size; struct fli_lib *next; }; struct fli_lib *firstlib = NULL; struct fli_centry { struct fli_lib *lib; FILE *fp; }; #define FLICSIZE 4 struct fli_centry *fli_cache[FLICSIZE]; Boolean flib = 0; /* non zero if reading a font library */ halfword pkdouble(void) { register halfword i ; i = pkbyte() ; i = i * 256 + pkbyte() ; return(i) ; } extern char name[] ; /* * fliload opens each font library, then reads in its * directory for later use. * fli_cache is initialized. */ void fliload(void) { int i ; halfword version1, version2; Boolean needext; char fontname[50]; char name[50] ; char *fli; unsigned long dpi; halfword len, numsizes, numfonts; halfword numflib = 0 ; struct fli_lib *lib=NULL, *next_lib=NULL; struct fli_size *size; struct fli_entry *entry; /* initialise fli cache */ for (i=0; ilib = (struct fli_lib *)NULL; fli_cache[i]->fp = (FILE *)NULL; } fli = fliname; while (*fli) { /* get next font library name from fliname */ needext=1; for (i=0; *fli && *fli!=PATHSEP; i++) if ( (name[i] = *fli++) == '.') needext=0; name[i] = '\0'; if (*fli) fli++; /* skip PATHSEP */ if (*name) { /* got fli name, now search for it */ if (needext) strcat(name,".fli"); if ( (pkfile=search(flipath,name,READBIN)) != (FILE *)NULL ) { /* for each font library */ for (i=0; i<4; i++) { fontname[i] = pkbyte(); /* read header */ } version1 = pkbyte(); version2 = pkbyte(); if (strncmp(fontname,"FLIB",4)!=0 || version1 != 2 || version2 != 0) badpk("incorrect font library format"); (void) pkdouble(); /* ignore directory length */ numsizes = pkdouble(); /* number of sizes */ numfonts = pkdouble(); /* number of fonts */ len = pkdouble(); /* length of comment */ for (i=0; inext = next_lib; lib = next_lib; size = (struct fli_size *) mymalloc((integer)numsizes * sizeof(struct fli_size)); entry = (struct fli_entry *) mymalloc((integer)numfonts * sizeof(struct fli_entry)); lib->name = newstring(name); lib->sizes = numsizes; lib->size = size; lib->next = (struct fli_lib *)NULL; for ( ;numsizes>0; numsizes--, size++) { /* for each font size in this library */ (void)pkdouble(); /* length of size entry - ignore */ numfonts = pkdouble(); /* number of fonts */ dpi = pkquad(); /* DPI (fixed point 16.16) */ #ifdef DEBUG if (dd(D_FONTS)) (void)fprintf(stderr,"Font library %s size %.5gdpi has %d font%s\n", name, dpi/65536.0, numfonts, numfonts!=1 ? "s" : ""); #endif /* DEBUG */ size->size = dpi ; size->entries = numfonts ; size->entry = entry ; for ( ;numfonts > 0; numfonts--, entry++) { /* read each entry */ (void)pkquad(); /* ignore length of font */ entry->offset = pkquad(); /* offset to font */ len = pkbyte(); /* length of name */ for (i=0; iname = newstring(fontname); } /* end for numfonts>0 */ } /* end for numsizes>0 */ if (numflib < FLICSIZE) { /* leave first few open */ fli_cache[numflib]->lib = lib; fli_cache[numflib]->fp = pkfile; } else (void)fclose(pkfile); numflib++; } /* end if opened library */ } /* end if (*name) */ } } /* * flisearch searches all the font libraries for a PK font. * returns FILE pointer positioned to PK font in font library * flisearch caches file pointers for 4 font libraries. */ FILE * flisearch(char *n, halfword dpi) { halfword dpi1, numsizes, numfonts; struct fli_lib *lib=NULL; struct fli_size *size; struct fli_entry *entry; struct fli_centry *centry; int i; Boolean found; if (firstlib == (struct fli_lib *)NULL) return((FILE *)NULL); /* return if no font libraries */ #ifdef DEBUG if (dd(D_FONTS)) { (void)fprintf(stderr,"Trying %s at %ddpi\nfli open:", n, dpi); for (i=0; ilib != (struct fli_lib *)NULL) (void)fprintf(stderr, " %s",(fli_cache[i]->lib)->name); (void)fprintf(stderr,"\n"); } #endif /* DEBUG */ for (lib = firstlib; lib != (struct fli_lib *)NULL; lib = lib->next ) { /* for each font library */ numsizes = lib->sizes ; size = lib->size ; #ifdef DEBUG if (dd(D_FONTS)) (void)fprintf(stderr," Searching %s\n", lib->name); #endif /* DEBUG */ for (; numsizes>0; numsizes--, size++) { /* for each font size in this library */ dpi1 = (halfword)((size->size+32768L)/65536) ; if ( dpi1 == dpi ) { /* if correct size then search for font */ #ifdef DEBUG if (dd(D_FONTS)) (void)fprintf(stderr, " Checking size %ddpi\n",dpi1); #endif /* DEBUG */ entry = size->entry ; for (numfonts=size->entries ;numfonts > 0; numfonts--, entry++) { if (strcmp(entry->name,n)==0) { /* if correct font name then look for it in cache */ found = 0; for (i=0; ilib == lib ) { /* found it, so move to front */ centry = fli_cache[i]; for (; i>0; i--) fli_cache[i] = fli_cache[i-1]; found=1; fli_cache[0] = centry; pkfile = fli_cache[0]->fp; /* font libary already open */ } } if (!found) { /* if not in cache then re-open it */ /* make space at front */ (void)fclose(fli_cache[FLICSIZE-1]->fp); centry = fli_cache[FLICSIZE-1]; for (i=FLICSIZE-1; i>0; i--) fli_cache[i] = fli_cache[i-1]; /* put this font library at front */ if ( (pkfile=search(flipath,lib->name,READBIN)) == (FILE *)NULL ) { sprintf(errbuf,"Can't reopen font library %s", lib->name); error(errbuf); return((FILE *)NULL); } fli_cache[0] = centry; fli_cache[0]->lib = lib; fli_cache[0]->fp = pkfile; } flib = 1 ; /* tell loadfont() not to close it */ /* then seek font within library */ (void)sprintf(name,"%s %s %ddpi",lib->name, n, dpi1) ; if ( fseek(pkfile,entry->offset,0) ) badpk("couldn't seek font"); /* make sure it is a PK font */ if (pkbyte()==247) /* pre byte */ if (pkbyte()==89) { /* id byte */ if ( fseek(pkfile,entry->offset,0) ) badpk("couldn't seek font"); return(pkfile); /* found it */ } sprintf(errbuf,"%s %s %ddpi isn't PK format, ignoring", lib->name, n, dpi1); error(errbuf); } /* end if name correct */ } /* end for numfonts>0 */ } else { /* if not correct size then skip */ #ifdef DEBUG if (dd(D_FONTS)) (void)fprintf(stderr, " Skipping size %ddpi\n", dpi1); #endif /* DEBUG */ } } /* end for numsizes>0 */ } return((FILE *)NULL); } /* parse the font library path, putting all directory names in path, * and all font library names in name. * Directory names have a trailing DIRSEP. */ char * fliparse(char *path, char *name) { char *p, *prevp ; /* pointers to path */ char *n, *prevn ; /* pointers to name */ char *s ; p = path ; n = name ; s = path ; while (*s) { prevp = p ; prevn = n ; while (*s && *s != PATHSEP) { /* copy till PATHSEP */ *p++ = *s; *n++ = *s; s++; } *n = '\0' ; if (*s) s++; /* skip PATHSEP */ if ( *prevn=='\0' || prevn[strlen(prevn)-1] == DIRSEP ) { n = prevn ; /* ignore name if it is dir */ if (*prevn) p--; /* backup over DIRSEP */ *p++ = PATHSEP; prevp = p ; } else { p = prevp ; /* ignore path if it is library name */ *n++ = PATHSEP; prevn = n ; } } *p = '\0' ; *n = '\0' ; if (n!=name && *--n==PATHSEP) *n = '\0'; /* remove trailing PATHSEP from name */ if (p!=path && *--p==PATHSEP) *p = '\0'; /* remove trailing PATHSEP from path */ return(path); } /* end fliparse */ #else /* * Some systems don't like .o files that compile to nothing, so we * provide a stub routine. */ void fliload() {} #endif dvipsk_TexLive-2009-stripped/tfmload.c0000644000175000017500000001335011372532227017672 0ustar uwabamiuwabami/* * Loads a tfm file. It marks the characters as undefined. */ #include "dvips.h" /* The copyright notice in that file is included too! */ #ifdef KPATHSEA #include #endif /* * These are the external routines it calls: */ #include "protos.h" /* * Here are the external variables we use: */ extern real conv ; extern real vconv ; extern real alpha ; #ifndef KPATHSEA extern char *tfmpath ; #endif extern char errbuf[] ; extern integer fsizetol ; extern Boolean noomega ; /* * Our static variables: */ FILE *tfmfile ; static char name[50] ; void badtfm(char *s) { (void)sprintf(errbuf,"! Bad TFM file %s: %s",name,s) ; error(errbuf); } /* * Tries to open a tfm file. Uses cmr10.tfm if unsuccessful, * and complains loudly about it. */ void tfmopen(register fontdesctype *fd) { register char *n; #ifdef KPATHSEA kpse_file_format_type d ; #else register char *d; #endif n = fd->name ; if (!noomega) { #ifdef KPATHSEA d = ofmpath; #else d = fd->area ; if (*d==0) d = ofmpath ; #endif #ifdef MVSXA /* IBM: MVS/XA */ (void)sprintf(name, "ofm(%s)", n) ; #else (void)sprintf(name, "%s.ofm", n) ; #endif if ((tfmfile=search(d, name, READBIN))!=NULL) return ; } #ifdef KPATHSEA d = tfmpath; #else d = fd->area ; if (*d==0) d = tfmpath ; #endif #ifdef MVSXA /* IBM: MVS/XA */ (void)sprintf(name, "tfm(%s)", n) ; #else (void)sprintf(name, "%s.tfm", n) ; #endif if ((tfmfile=search(d, name, READBIN))!=NULL) return ; (void)sprintf(errbuf, "Can't open font metric file %s%s", fd->area, name) ; error(errbuf) ; error("I will use cmr10.tfm instead, so expect bad output.") ; #ifdef MVSXA /* IBM: MVS/XA */ if ((tfmfile=search(d, "tfm(cmr10)", READBIN))!=NULL) #else if ((tfmfile=search(d, "cmr10.tfm", READBIN))!=NULL) #endif return ; error("! I can't find cmr10.tfm; please reinstall me with proper paths") ; } shalfword tfmbyte(void) { return(getc(tfmfile)) ; } halfword tfm16(void) { register halfword a ; a = tfmbyte () ; return ( a * 256 + tfmbyte () ) ; } integer tfm32(void) { register integer a ; a = tfm16 () ; if (a > 32767) a -= 65536 ; return ( a * 65536 + tfm16 () ) ; } int tfmload(register fontdesctype *curfnt) { register integer i, j ; register integer li, cd=0 ; integer scaledsize ; integer nw, hd ; integer bc, ec ; integer nco=0, ncw=0, npc=0, no_repeats = 0 ; integer *scaled ; integer *chardat ; int font_level ; integer pretend_no_chars ; int charcount = 0 ; tfmopen(curfnt) ; /* * Next, we read the font data from the tfm file, and store it in * our own arrays. */ li = tfm16() ; if (li!=0) { font_level = -1 ; hd = tfm16() ; bc = tfm16() ; ec = tfm16() ; nw = tfm16() ; li = tfm32() ; li = tfm32() ; li = tfm32() ; li = tfm16() ; if (hd<2 || bc>ec+1 || ec>255 || nw>256) badtfm("header") ; } else { /* In an .ofm file */ if (noomega) badtfm("length") ; font_level = tfm16(); li = tfm32() ; hd = tfm32() ; bc = tfm32() ; ec = tfm32() ; nw = tfm32() ; for (i=0; i<8; i++) li=tfm32(); if (font_level>1 || hd<2 || bc<0 || ec<0 || nw<0 || bc>ec+1 || ec>65535 || nw>65536) badtfm("header") ; if (font_level==1) { nco = tfm32() ; ncw = tfm32() ; npc = tfm32() ; for (i=0; i<12; i++) li=tfm32(); } } li = tfm32() ; check_checksum (li, curfnt->checksum, curfnt->name); li = (integer)(alpha * (real)tfm32()) ; if (li > curfnt->designsize + fsizetol || li < curfnt->designsize - fsizetol) { (void)sprintf(errbuf,"Design size mismatch in %s", name) ; error(errbuf) ; } pretend_no_chars=ec+1 ; if (pretend_no_chars<256) pretend_no_chars=256 ; else { curfnt->chardesc = (chardesctype *) xrealloc(curfnt->chardesc, sizeof(chardesctype)*pretend_no_chars) ; curfnt->maxchars = pretend_no_chars ; } for (i=2; i<((font_level==1)?nco-29:hd); i++) li = tfm32() ; chardat = (integer *) xmalloc(pretend_no_chars*sizeof(integer)) ; for (i=0; i0) { no_repeats-- ; } else if (font_level>=0) { cd = tfm16() ; li = tfm32() ; li = tfm16() ; if (font_level==1) { no_repeats = tfm16() ; for (j=0; j<(npc|1); j++) tfm16() ; ncw -= 3 + npc/2 ; } } else { cd = tfmbyte() ; li = tfm16() ; li = tfmbyte() ; } if (cd>=nw) badtfm("char info") ; if (cd) { chardat[i] = cd ; charcount++ ; } } if (font_level==1&&ncw!=0) { sprintf(errbuf, "Table size mismatch in %s", curfnt->name) ; error(errbuf) ; } scaledsize = curfnt->scaledsize ; scaled = (integer *) xmalloc(nw*sizeof(integer)) ; for (i=0; ichardesc[i].TFMwidth = li ; if (li >= 0) curfnt->chardesc[i].pixelwidth = ((integer)(conv*li+0.5)) ; else curfnt->chardesc[i].pixelwidth = -((integer)(conv*-li+0.5)) ; curfnt->chardesc[i].flags = (curfnt->resfont ? EXISTS : 0) ; curfnt->chardesc[i].flags2 = EXISTS ; } else curfnt->chardesc[i].flags = curfnt->chardesc[i].flags2 = 0 ; free(chardat) ; free(scaled) ; if (ec>=256) curfnt->codewidth = 2 ; /* XXX: 2byte-code can have ec<256 */ curfnt->loaded = 1 ; return charcount ; } dvipsk_TexLive-2009-stripped/download.c0000644000175000017500000003725411372532227020064 0ustar uwabamiuwabami/* * Code to download a font definition at the beginning of a section. * hacked by SPQR 8.95 to allow for non-partial downloading * */ #include "dvips.h" /* The copyright notice in that file is included too! */ #ifndef DOWNLOAD_USING_PDFTEX #define DOWNLOAD_USING_PDFTEX #endif #ifndef DOWNLOAD_USING_PDFTEX #include "t1part.h" #endif #define DVIPS /* * These are the external routines we call. */ #include "protos.h" /* * These are the external variables we access. */ extern char *nextstring, *infont ; extern FILE *bitfile ; extern fontdesctype *curfnt ; extern long bytesleft ; extern long mbytesleft ; extern quarterword *raster ; extern quarterword *mraster ; extern Boolean compressed ; extern Boolean partialdownload ; extern double mag ; extern int actualdpi ; static unsigned char dummyend[8] = { 252 } ; extern int prettycolumn ; extern int quiet ; extern Boolean disablecomments ; extern real conv ; /* * We have a routine that downloads an individual character. */ static int lastccout ; static void downchar(chardesctype *c, shalfword cc) { register long i, j ; register halfword cheight, cwidth ; register long k ; register quarterword *p ; register halfword cmd ; register shalfword xoff, yoff ; halfword wwidth = 0 ; register long len ; int smallchar ; p = c->packptr ; cmd = *p++ ; if (cmd & 4) { if ((cmd & 7) == 7) { cwidth = getlong(p) ; cheight = getlong(p + 4) ; xoff = getlong(p + 8) ; yoff = getlong(p + 12) ; p += 16 ; } else { cwidth = p[0] * 256 + p[1] ; cheight = p[2] * 256 + p[3] ; xoff = p[4] * 256 + p[5] ; /* N.B.: xoff, yoff are signed halfwords */ yoff = p[6] * 256 + p[7] ; p += 8 ; } } else { cwidth = *p++ ; cheight = *p++ ; xoff = *p++ ; yoff = *p++ ; if (xoff > 127) xoff -= 256 ; if (yoff > 127) yoff -= 256 ; } if (c->flags & BIGCHAR) smallchar = 0 ; else smallchar = 5 ; if (compressed) { len = getlong(p) ; p += 4 ; } else { wwidth = (cwidth + 15) / 16 ; i = 2 * cheight * (long)wwidth ; if (i <= 0) i = 2 ; i += smallchar ; if (mbytesleft < i) { if (mbytesleft >= RASTERCHUNK) (void) free((char *) mraster) ; if (RASTERCHUNK > i) { mraster = (quarterword *)mymalloc((integer)RASTERCHUNK) ; mbytesleft = RASTERCHUNK ; } else { k = i + i / 4 ; mraster = (quarterword *)mymalloc((integer)k) ; mbytesleft = k ; } } k = i; while (k > 0) mraster[--k] = 0 ; unpack(p, (halfword *)mraster, cwidth, cheight, cmd) ; p = mraster ; len = i - smallchar ; } if (cheight == 0 || cwidth == 0 || len == 0) { cwidth = 1 ; cheight = 1 ; wwidth = 1 ; len = 2 ; if (compressed) p = dummyend ; /* CMD(END); see repack.c */ else mraster[0] = 0 ; } if (smallchar) { p[len] = cwidth ; p[len + 1] = cheight ; p[len + 2] = xoff + 128 ; p[len + 3] = yoff + 128 ; p[len + 4] = c->pixelwidth ; } else /* * Now we actually send out the data. */ specialout('[') ; if (compressed) { specialout('<') ; mhexout(p, len + smallchar) ; specialout('>') ; } else { i = (cwidth + 7) / 8 ; if (i * cheight > 65520) { long bc = 0 ; specialout('<') ; for (j=0; j 65520) { specialout('>') ; specialout('<') ; bc = 0 ; } mhexout(p, i) ; bc += i ; p += 2*wwidth ; } specialout('>') ; } else { specialout('<') ; if (2 * wwidth == i) mhexout(p, ((long)cheight) * i + smallchar) ; else { for (j=0; j') ; } } if (smallchar == 0) { numout((integer)cwidth) ; numout((integer)cheight) ; numout((integer)xoff + 128) ; /* not all these casts needed. */ numout((integer)yoff + 128) ; numout((integer)(c->pixelwidth)) ; } if (lastccout + 1 == cc) { cmdout("I") ; } else { numout((integer)cc) ; cmdout("D") ; } lastccout = cc ; } /* * Output the literal name of the font change command with PostScript index n */ static char goodnames[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" ; void makepsname(register char *s, register int n) { n-- ; *s++ = 'F' + n / (sizeof(goodnames)-1) ; *s++ = goodnames[n % (sizeof(goodnames)-1)] ; *s++ = 0 ; } void lfontout(int n) { char buf[10]; char *b = buf ; *b++ = '/' ; makepsname(b, n) ; cmdout(buf); } /* * And the download procedure. */ void download(charusetype *p, int psfont) { register int b, i ; register halfword bit ; register chardesctype *c ; int cc, maxcc = -1, numcc ; double fontscale ; char name[10] ; lastccout = -5 ; name[0] = '/' ; makepsname(name + 1, psfont) ; curfnt = p->fd ; curfnt->psname = psfont ; if (curfnt->resfont) { struct resfont *rf = curfnt->resfont ; int non_empty=0; for (b=0; b<16; b++) if(p->bitmap[b] !=0) non_empty =1; if(non_empty==0 && curfnt->codewidth==1) return; cmdout(name) ; /* following code re-arranged - Rob Hutchings 1992Apr02 */ c = curfnt->chardesc + 255 ; cc = 255 ; numcc = 0 ; i = 0 ; for (b=15; b>=0; b--) { for (bit=1; bit; bit<<=1) { if (p->bitmap[b] & bit) { if (i > 0) { numout((integer)i) ; specialout('[') ; i = 0 ; } numout((integer)c->pixelwidth) ; c->flags |= EXISTS ; numcc++ ; } else { i++ ; c->flags &= ~EXISTS ; } c-- ; cc-- ; } } if (i > 0) { numout((integer)i) ; specialout('[') ; } specialout ('{') ; if (rf->specialinstructions) cmdout(rf->specialinstructions) ; specialout ('}') ; numout((integer)numcc) ; /* * This code has been bogus for a long time. The fix is * straightforward. The input, curfnt->scaledsize, is the * desired size of the font in dvi units. The output is the * fontscale, which is the height of the font in output units * which are simply pixels. Thus, all we need to do is multiply * by the default generic conv, which properly takes into * account magnification, num/den, output resolution, and so on. * Sorry this bug has been in here so long. -tgr */ fontscale = curfnt->scaledsize * conv ; (void)sprintf(nextstring, "%g", fontscale) ; cmdout(nextstring) ; (void)strcpy(nextstring, "/") ; (void)strcat(nextstring, rf->PSname) ; cmdout(nextstring) ; /* end of changed section - Rob */ cmdout("rf") ; rf->sent = 1 ; return ; } /* * Here we calculate the largest character actually used, and * send it as a parameter to df. */ cc = 0 ; numcc = 0 ; for (b=0; b<16; b++) { for (bit=32768; bit!=0; bit>>=1) { if (p->bitmap[b] & bit) { maxcc = cc ; numcc++ ; } cc++ ; } } if (numcc <= 0) return ; fontscale = ((double)(curfnt->scaledsize)) / 65536.0 ; fontscale *= (mag/1000.0) ; newline() ; fprintf(bitfile, "%%DVIPSBitmapFont: %s %s %g %d\n", name+1, curfnt->name, fontscale, numcc) ; cmdout(name) ; numout((integer)numcc) ; numout((integer)maxcc + 1) ; /* * If we need to scale the font, we say so by using dfs * instead of df, and we give it a scale factor. We also * scale the character widths; this is ugly, but scaling * fonts is ugly, and this is the best we can probably do. */ if (curfnt->dpi != curfnt->loadeddpi) { numout((integer)curfnt->dpi) ; numout((integer)curfnt->loadeddpi) ; if (curfnt->alreadyscaled == 0) { for (b=0, c=curfnt->chardesc; b<256; b++, c++) c->pixelwidth = (c->pixelwidth * (long)curfnt->dpi * 2 + curfnt->loadeddpi) / (2 * curfnt->loadeddpi) ; curfnt->alreadyscaled = 1 ; } cmdout("dfs") ; } else cmdout("df") ; c = curfnt->chardesc ; cc = 0 ; for (b=0; b<16; b++) { for (bit=32768; bit; bit>>=1) { if (p->bitmap[b] & bit) { downchar(c, cc) ; c->flags |= EXISTS ; } else c->flags &= ~EXISTS ; c++ ; cc++ ; } } cmdout("E") ; newline() ; fprintf(bitfile, "%%EndDVIPSBitmapFont\n") ; } /* * Magic code to deal with PostScript font partial downloading. * We track the encodings we've seen so far and keep them in these * structures. We rely on writet1 to load the encodings for us. */ static struct seenEncodings { struct seenEncodings *next ; char *name ; char **glyphs ; } *seenEncodings ; #define MAX_CHAR_CODE 256 /* * Load a new encoding and return the array of glyphs as a vector. * Linear search. */ static char **getEncoding(char *encoding) { struct seenEncodings *p = seenEncodings ; while (p != 0) if (strcmp(encoding, p->name) == 0) break ; else p = p->next ; if (p == 0) { int i ; p = (struct seenEncodings *)mymalloc(sizeof(struct seenEncodings)) ; p->next = seenEncodings ; seenEncodings = p ; p->name = xstrdup(encoding) ; p->glyphs = (char **)mymalloc((MAX_CHAR_CODE+1) * sizeof(char *)) ; for (i=0; iglyphs[i] = ".notdef" ; load_enc(encoding, p->glyphs) ; } return p->glyphs ; } /* * When partially downloading a type 1 font, sometimes the font uses * the built-in encoding (which we don't know at this point) so we want * to subset it by character code. Sometimes the font uses a different * encoding, so we want to subset it by glyph. These routines manage * accumulating all the glyph names for a particular font from all * the various uses into a single, slash-delimited string for writet1(). * * If no glyphs have been added, extraGlyphs is null. In all cases, * the memory allocated for this is in extraGlyphSpace. */ static char *extraGlyphs = 0 ; #ifdef DOWNLOAD_USING_PDFTEX static char *extraGlyphSpace = 0 ; static int extraGlyphSize = 0 ; static int glyphSizeUsed = 0 ; /* * We want to make sure we pass in null or "/" but never "". */ static void clearExtraGlyphList() { glyphSizeUsed = 0 ; extraGlyphs = 0 ; } /* * Add the glyph name; make sure it hasn't been added already. * We do this by adding it, so we can get the // around it, * and *then* see if it's already there and if it is un-add it. */ static void addGlyph(char *glyphName) { int len = strlen(glyphName) ; char *startOfAdd = 0 ; if (len + glyphSizeUsed + 3 > extraGlyphSize) { extraGlyphSize = 2 * (extraGlyphSize + len + 100) ; extraGlyphSpace = (char *) xrealloc(extraGlyphSpace, extraGlyphSize) ; } extraGlyphs = extraGlyphSpace ; if (glyphSizeUsed == 0) { startOfAdd = extraGlyphs + glyphSizeUsed ; extraGlyphs[glyphSizeUsed++] = '/' ; /* leading / */ } else { startOfAdd = extraGlyphs + glyphSizeUsed - 1 ; } strcpy(extraGlyphs + glyphSizeUsed, glyphName) ; glyphSizeUsed += len ; extraGlyphs[glyphSizeUsed++] = '/' ; /* trailing / */ extraGlyphs[glyphSizeUsed] = 0 ; if (strstr(extraGlyphs, startOfAdd) != startOfAdd) { /* already there! */ glyphSizeUsed = startOfAdd - extraGlyphs + 1 ; /* kill the second copy */ extraGlyphs[glyphSizeUsed] = 0 ; } } #endif /* * Download a PostScript font, using partial font downloading if * necessary. */ extern char *downloadedpsnames[]; extern int unused_top_of_psnames; static void downpsfont(charusetype *p, charusetype *all) { #ifdef DOWNLOAD_USING_PDFTEX static unsigned char grid[256]; #endif int GridCount ; register int b; register halfword bit ; register chardesctype *c ; struct resfont *rf ; int cc; extern char *realnameoffile ; int j; curfnt = p->fd ; rf = curfnt->resfont ; if (rf == 0 || rf->Fontfile == NULL) return ; for (; all->fd; all++) if (all->fd->resfont && strcmp(rf->PSname, all->fd->resfont->PSname) == 0) break ; if (all != p) return ; if (rf->sent == 2) /* sent as header, from a PS file */ return ; for (j=0; downloadedpsnames[j] && j < unused_top_of_psnames; j++) { if (strcmp (downloadedpsnames[j], rf->PSname) == 0) return; } if (all->fd == 0) error("! internal error in downpsfont") ; if (!partialdownload) { infont = all->fd->resfont->PSname ; copyfile(all->fd->resfont->Fontfile); infont = 0 ; return; } for (cc=0; cc<256; cc++) grid[cc] = 0 ; #ifdef DOWNLOAD_USING_PDFTEX clearExtraGlyphList() ; #endif for (; all->fd; all++) { if (all->fd->resfont == 0 || strcmp(rf->PSname, all->fd->resfont->PSname)) continue ; curfnt = all->fd ; #ifdef DOWNLOAD_USING_PDFTEX if (curfnt->resfont->Vectfile) { char **glyphs = getEncoding(curfnt->resfont->Vectfile) ; c = curfnt->chardesc + 255 ; cc = 255 ; for (b=15; b>=0; b--) { for (bit=1; bit; bit<<=1) { if (all->bitmap[b] & bit) { addGlyph(glyphs[cc]) ; } c-- ; cc-- ; } } } else { #endif c = curfnt->chardesc + 255 ; cc = 255 ; for (b=15; b>=0; b--) { for (bit=1; bit; bit<<=1) { if (all->bitmap[b] & bit) { grid[cc]=1; } c-- ; cc-- ; } } #ifdef DOWNLOAD_USING_PDFTEX } #endif } for (GridCount=0,cc=0; cc<256; cc++) { /* tmpgrid[cc]=grid[cc]; */ if(grid[cc] ==1) { GridCount++; } } if(GridCount!=0 || extraGlyphs) { newline() ; if (! disablecomments) (void)fprintf(bitfile, "%%%%BeginFont: %s\n", rf->PSname); #ifdef DOWNLOAD_USING_PDFTEX if (!t1_subset_2(rf->Fontfile, grid, extraGlyphs)) #else if(FontPart(bitfile, rf->Fontfile, rf->Vectfile) < 0) #endif exit(1); if (!quiet) { if (strlen(realnameoffile) + prettycolumn > STDOUTSIZE) { fprintf(stderr, "\n") ; prettycolumn = 0 ; } (void)fprintf(stderr, "<%s>", realnameoffile); prettycolumn += strlen(realnameoffile) + 2 ; } if (! disablecomments) (void)fprintf(bitfile, "%%%%EndFont \n"); } } void dopsfont(sectiontype *fs) { charusetype *cu ; cu = (charusetype *) (fs + 1) ; #ifdef DOWNLOAD_USING_PDFTEX while (cu->fd) { if (cu->psfused) cu->fd->psflag = EXISTS ; downpsfont(cu++, (charusetype *)(fs + 1)) ; } #else line = getmem(BUFSIZ); tmpline=line; while (cu->fd) { if (cu->psfused) cu->fd->psflag = EXISTS ; downpsfont(cu++, (charusetype *)(fs + 1)) ; } loadbase = ~FLG_LOAD_BASE; FirstCharB=UnDefineChars(FirstCharB); free(tmpline); #endif } dvipsk_TexLive-2009-stripped/mvs/0000755000175000017500000000000011372532227016703 5ustar uwabamiuwabamidvipsk_TexLive-2009-stripped/mvs/dvipsmvs.h0000644000175000017500000000625011372532227020732 0ustar uwabamiuwabami/* * These are changes needed for the MVS/XA version of dvips 5.497 * November20, 1992. * This was derived by Peter K. Schilling - DESY - from "dvipscms.h" * written by J. Hafner, E. Blanz and M. Flickner of IBM Research, * Almaden Research Center. * The changes to the rest of the code can be found by searching for * "MVSXA". */ extern char *malloc(); /* * Added ascii to ebcdic conversion table for MVSXA. * Only for the printable characters. This is used by DVIPS. */ char ascii2ebcdic[256] = { 0, 1, 2, 3, 53, 45, 46, 47, 22, 5, 37, 11, 12, 64, 14, 15, 16, 17, 18, 19, 60, 61, 50, 38, 24, 25, 63, 39,111,111,111,111, 64, 90,127,123, 91,108, 80,125, 77, 93, 92, 78,107, 96, 75, 97, 240,241,242,243,244,245,246,247, 248,249,122, 94, 76,126,110,111, 124,193,194,195,196,197,198,199, 200,201,209,210,211,212,213,214, 215,216,217,226,227,228,229,230, 231,232,233,173,224,189, 95,109, 121,129,130,131,132,133,134,135, 136,137,145,146,147,148,149,150, 151,152,153,162,163,164,165,166, 167,168,169,192, 79,208,161, 7, 128,129,130,131,132,133,134,135, 136,137,138,139,140,141,142,143, 144,145,146,147,148,149,150,151, 152,153,154,155,156,157,158,159, 160,161,162,163,164,165,166,167, 168,169,170,171,172,173,174,175, 176,177,178,179,180,181,182,183, 184,185,186,187,188,189,190,191, 192,193,194,195,196,197,198,199, 200,201,202,203,204,205,206,207, 208,209,210,211,212,213,214,215, 216,217,218,219,220,221,222,223, 224,225,226,227,228,229,230,231, 232,233,234,235,236,237,238,239, 240,241,242,243,244,245,246,247, 248,249,250,251,252,253,254,255 }; /* * Added ebcdic to ascii conversion table for MVSXA. * Only for the printable characters. This inverts the * table above and is used by AFM2TFM. */ char ebcdic2ascii[256] = { 0, 1, 2, 3, 4, 9, 6,127, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 8, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 10, 23, 27, 40, 41, 42, 43, 44, 5, 6, 7, 48, 49, 22, 51, 52, 4, 54, 55, 56, 57, 58, 59, 20, 21, 62, 26, 32, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 46, 60, 40, 43,124, 38, 81, 82, 83, 84, 85, 86, 87, 88, 89, 33, 36, 42, 41, 59, 94, 45, 47, 98, 99,100,101,102,103, 104,105,124, 44, 37, 95, 62, 63, 112,113,114,115,116,117,118,119, 120, 96, 58, 35, 64, 39, 61, 34, 128, 97, 98, 99,100,101,102,103, 104,105,138,123,140,141,142,143, 144,106,107,108,109,110,111,112, 113,114,154,125,156,157,158,159, 160,161,115,116,117,118,119,120, 121,122,170,171,172, 91,174,175, 176,177,178,179,180,181,182,183, 184,185,186,187,188, 93,190,191, 192, 65, 66, 67, 68, 69, 70, 71, 72, 73,202,203,204,205,206,207, 208, 74, 75, 76, 77, 78, 79, 80, 81, 82,218,219,220,221,222,223, 92,225, 83, 84, 85, 86, 87, 88, 89, 90,234,235,236,237,238,239, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,250,251,252,253,254,255 }; /* * access.c for MVSXA */ int access (path, amode) char *path; int amode; { return(1); } dvipsk_TexLive-2009-stripped/repack.c0000644000175000017500000003357611372532227017525 0ustar uwabamiuwabami/* * Compressed TeX fonts in PostScript. * By Radical Eye Software. * (Slight mods by Don Knuth in December 89.) */ #include "dvips.h" /* The copyright notice in that file is included too! */ #ifdef DEBUG extern integer debug_flag; #endif /* DEBUG */ /* Given a raster that has been unpacked from PK format, * we compress it by another scheme that is suitable for * a PostScript-oriented unpacking. We write instructions for * a little interpreter whose one-byte instructions have the form * 18*opcode+parameter. The interpreter forms each row based * on simple transformations to the previous row. */ #define MAXOUT (18) #define CMD(n) (MAXOUT*(n)) #define ADVXCHG1 CMD(0) #define ADVXCHG1END CMD(1) #define CHGX CMD(2)-1 #define CHGXEND CMD(3)-1 #define ADVXLSH CMD(4) #define ADVXLSHEND CMD(5) #define ADVXRSH CMD(6) #define ADVXRSHEND CMD(7) #define ADVX CMD(8)-1 #define REPX CMD(9)-1 #define SETX CMD(10)-1 #define CLRX CMD(11)-1 #define ADVXCHG2 CMD(12) #define ADVXCHG2END CMD(13) #define END CMD(14) #include "protos.h" static int rowlength = -1 ; static unsigned char *specdata ; static long tslen = 0 ; static unsigned char *tempstore, *tsp, *tsend ; void putlong(register char *a, long i) { a[0] = i >> 24 ; a[1] = i >> 16 ; a[2] = i >> 8 ; a[3] = i ; } long getlong(register unsigned char *a) { return ((((((a[0] << 8L) + a[1]) << 8L) + a[2]) << 8L) + a[3]) ; } /* First, a routine that appends one byte to the compressed output. */ #define addtse(n) {lcm=tsp-tempstore;addts(n);} /* mark END option position */ static void addts(register unsigned char what) { register unsigned char *p, *q ; if (tsp >= tsend) { if (tempstore == NULL) { tslen = 2020 ; tempstore = (unsigned char *)mymalloc((integer)tslen) ; tsp = tempstore ; } else { tslen = 2 * tslen ; tsp = (unsigned char *)mymalloc((integer)tslen) ; for (p=tempstore, q=tsp; p>1)|((a)&128))) )) #define lsh(a,b) ( ((a)==0) ? ((b)==1) : ( ((a)==255) ? ((b)==254) :\ ((b)==((((a)<<1)&255)|((a)&1))) )) #define DIFFERENT (1) #define LSHPOSSIB (2) #define RSHPOSSIB (4) #define BLKPOSSIB (8) #define WHTPOSSIB (16) #define ENDROW (32) #define NOPOSSIB(n) ((n&(LSHPOSSIB|RSHPOSSIB|BLKPOSSIB|WHTPOSSIB))==0) #define NOSHIFT(n) ((n&(LSHPOSSIB|RSHPOSSIB))==0) /* * Our input bytes are packed to the 16-bit word. On output, * they're packed to bytes. Thus, we may have to skip a byte at * the end of each row. */ void dochar(unsigned char *from, short width, short height) { register int i ; register unsigned char *f, *t, *d ; register unsigned char *e ; register int accum ; int j, k, kk ; int diffrow ; int repeatcount ; int lit, pos, cmd = 0 ; long lcm ; int widthc ; widthc = width + (width & 1) ; /* halfword correction */ lcm = -1 ; if (widthc > rowlength) { if (rowlength > 0) free((char *)specdata) ; rowlength = widthc + 30 ; specdata = (unsigned char *)mymalloc((integer)(rowlength + 15)) ; } for (i= -15, t=specdata; i<=widthc; i++, t++) *t = 0 ; repeatcount = 0 ; f = specdata + 2 ; for (j=0; j MAXOUT) { addts((unsigned char)(REPX+MAXOUT)) ; repeatcount -= MAXOUT ; } addts((unsigned char)(REPX+repeatcount)) ; repeatcount = 0 ; } pos = 0 ; for (i=0, d=specdata, f=t-width; i MAXOUT) { addts((unsigned char)(ADVX+MAXOUT)) ; pos += MAXOUT ; } if (0 != (k = (e - d))) { if (lit) { if (k > 2) { if (i > pos) { addts((unsigned char)(ADVX + i - pos)) ; pos = i ; } while (k > MAXOUT) { addts((unsigned char)(CHGX + MAXOUT)) ; for (kk=0; kk d) { if (*d & LSHPOSSIB) { if (i == pos+MAXOUT) { addts((unsigned char)(ADVX + MAXOUT)) ; pos = i ; } addtse((unsigned char)(ADVXLSH + i - pos)) ; } else if (*d & RSHPOSSIB) { if (i == pos+MAXOUT) { addts((unsigned char)(ADVX + MAXOUT)) ; pos = i ; } addtse((unsigned char)(ADVXRSH + i - pos)) ; } else if (*d & WHTPOSSIB) { /* i==pos */ addts((unsigned char)(CLRX + 1)) ; lcm = -1 ; } else if (*d & BLKPOSSIB) { /* i==pos */ addts((unsigned char)(SETX + 1)) ; lcm = -1 ; } else error("! bug") ; /* why wasn't lit true? */ d++ ; f++ ; i++ ; pos = i ; } /* end 'while e>d' */ } } /* end 'if e>d' */ if (accum > 0) { if (i > pos) { addts((unsigned char)(ADVX + i - pos)) ; pos = i ; } i += accum ; d += accum ; f += accum ; while (accum > MAXOUT) { addts((unsigned char)(cmd + MAXOUT)) ; accum -= MAXOUT ; pos += MAXOUT ; } lcm = -1 ; addts((unsigned char)(cmd + accum)) ; pos += accum ; } } /* end 'else DIFFERENT' */ } /* end 'for i' */ if (lcm != -1) { tempstore[lcm] += MAXOUT ; /* append END */ lcm = -1 ; } else { addts((unsigned char)(END)) ; } } /* end 'else rows different' */ #ifdef DEBUG if (d != specdata + width) error("! internal inconsistency in repack") ; #endif } /* end 'for j' */ if (repeatcount) { while (repeatcount > MAXOUT) { addts((unsigned char)(REPX+MAXOUT)) ; repeatcount -= MAXOUT ; } addts((unsigned char)(REPX+repeatcount)) ; repeatcount = 0 ; } } extern long bytesleft ; extern quarterword *raster ; long mbytesleft ; quarterword *mraster ; char * makecopy(register unsigned char *what, register long len, register unsigned char *p) { register unsigned char *q ; if (p == NULL) { if (len > MINCHUNK) p = (unsigned char *)mymalloc((integer)len) ; else { if (bytesleft < len) { raster = (quarterword *)mymalloc((integer)RASTERCHUNK) ; bytesleft = RASTERCHUNK ; } p = (unsigned char *)raster ; bytesleft -= len ; raster += len ; } } q = p ; while (len > 0) { *p++ = *what++ ; len -- ; } return ((char *)q) ; } /* Now the main routine, which is called when a character is used for the very first time. */ void repack(register chardesctype *cp) { register long i, j ; register unsigned char *p ; register int width, height ; register int wwidth ; char startbytes ; int smallchar ; p = cp->packptr ; if (p == NULL) error("! no raster?") ; tsp = tempstore ; tsend = tempstore + tslen ; addts(*p) ; /* copy the PK flag byte */ if (*p & 4) { if ((*p & 7) == 7) { startbytes = 17 ; width = getlong(p + 1) ; height = getlong(p + 5) ; for (i=0; i<12; i++) addts(*++p) ; } else { startbytes = 9 ; width = p[1] * 256 + p[2] ; height = p[3] * 256 + p[4] ; addts(*++p) ; addts(*++p) ; addts(*++p) ; addts(*++p) ; } } else { startbytes = 5 ; width = p[1] ; height = p[2] ; } addts(*++p) ; addts(*++p) ; addts(*++p) ; addts(*++p) ; p++ ; /* OK, p now points to beginning of the nibbles */ addts((unsigned char)0) ; addts((unsigned char)0) ; addts((unsigned char)0) ; addts((unsigned char)0) ; /* leave room to stick in a new length field */ wwidth = (width + 15) / 16 ; i = 2 * height * (long)wwidth ; if (i <= 0) i = 2 ; if ((cp->flags & BIGCHAR) == 0) smallchar = 5 ; else smallchar = 0 ; i += smallchar ; if (mbytesleft < i) { if (mbytesleft >= RASTERCHUNK) (void) free((char *) mraster) ; if (RASTERCHUNK > i) { mraster = (quarterword *)mymalloc((integer)RASTERCHUNK) ; mbytesleft = RASTERCHUNK ; } else { i += i / 4 ; mraster = (quarterword *)mymalloc((integer)(i + 3)) ; mbytesleft = i ; } } while (i > 0) mraster[--i] = 0 ; i = startbytes + unpack(p, (halfword *)mraster, (halfword)width, (halfword)height, *(cp->packptr)) ; dochar(mraster, (width + 7) >> 3, height) ; if (smallchar) { addts((unsigned char)0) ; addts((unsigned char)0) ; addts((unsigned char)0) ; addts((unsigned char)0) ; addts((unsigned char)0) ; } j = tsp - tempstore ; #ifdef DEBUG if (dd(D_COMPRESS)) (void)fprintf(stderr,"PK %ld bytes, unpacked %ld, compressed %ld\n", i-(long)startbytes, (long)((width+7L)/8)*height, j-(long)startbytes-4) ; #endif /* DEBUG */ if ( i < j ) { if (i > MINCHUNK) free(cp->packptr) ; cp->packptr = (unsigned char *)makecopy(tempstore, j, (unsigned char *)0) ; } else makecopy(tempstore, j, (unsigned char *)cp->packptr) ; putlong((char *)(cp->packptr+startbytes), j-startbytes-4-smallchar) ; cp->flags |= REPACKED ; } dvipsk_TexLive-2009-stripped/loadfont.c0000644000175000017500000003674411372532227020066 0ustar uwabamiuwabami/* * Here's the code to load a PK file into memory. * Individual bitmaps won't be unpacked until they prove to be needed. */ #include "dvips.h" /* The copyright notice in that file is included too! */ #ifdef OS2 #include #endif #ifdef KPATHSEA #include #include #include #include #ifndef MAXPATHLEN #define MAXPATHLEN (256) #endif #else #if defined(SYSV) || defined(VMS) || (defined(MSDOS) && !defined(__DJGPP__)) || defined(OS2) || defined(ATARIST) #define MAXPATHLEN (256) #else #include /* for MAXPATHLEN */ #endif #endif /* * These are the external routines we use. */ #include "protos.h" /* * These are the external variables we use. */ #ifdef DEBUG extern integer debug_flag; #endif /* DEBUG */ extern long bytesleft ; extern quarterword *raster ; extern real conv ; extern int actualdpi, vactualdpi ; extern real alpha ; #ifndef KPATHSEA extern char *pkpath ; #endif char errbuf[512] ; int lastresortsizes[40] ; extern integer fsizetol ; extern Boolean nosmallchars ; extern Boolean compressed ; extern Boolean dopprescan ; #ifdef FONTLIB extern Boolean flib ; #endif /* * Now we have some routines to get stuff from the PK file. * Subroutine pkbyte returns the next byte. */ FILE *pkfile ; char name[MAXPATHLEN] ; void badpk(char *s) { (void)sprintf(errbuf,"! Bad PK file %s: %s",name,s) ; error(errbuf); } shalfword pkbyte(void) { register shalfword i ; if ((i=getc(pkfile))==EOF) badpk("unexpected eof") ; return(i) ; } integer pkquad(void) { register integer i ; i = pkbyte() ; if (i > 127) i -= 256 ; i = i * 256 + pkbyte() ; i = i * 256 + pkbyte() ; i = i * 256 + pkbyte() ; return(i) ; } integer pktrio(void) { register integer i ; i = pkbyte() ; i = i * 256 + pkbyte() ; i = i * 256 + pkbyte() ; return(i) ; } /* * pkopen opens the pk file. This is system dependent. We work really * hard to open some sort of PK file. */ #ifdef VMCMS /* IBM: VM/CMS - we let DVIPS EXEC handle this after the DVIPS MODULE has finished to avoid complications with system calls. */ int dontmakefont = 0 ; #else #ifdef MVSXA /* IBM: MVS/XA - we let system administrator handle this on MVS/XA since some printers can't get to user fonts anyway */ int dontmakefont = 1 ; #else int dontmakefont = 0 ; /* if makefont fails once we won't try again */ #endif /* IBM: VM/CMS */ #endif void lectureuser(void) { static int userwarned = 0 ; if (! userwarned) { error("Such scaling will generate extremely poor output.") ; userwarned = 1 ; } } Boolean pkopen(register fontdesctype *fd) { register char *d, *n ; char *name_ret ; #ifdef KPATHSEA int dpi_ret ; #else int vdpi ; #endif d = fd->area ; n = fd->name ; #ifndef KPATHSEA if (*d==0) d = pkpath ; #endif #ifdef FONTLIB if (*(fd->area) == 0) { int del ; for (del=0; del<=RES_TOLERANCE(fd->dpi); del=del>0?-del:-del+1) { if ((pkfile=flisearch(n, fd->dpi + del)) != (FILE *)NULL ) return(1); } } #endif { #ifdef KPATHSEA char *this_name = concat (d, n); pkfile=pksearch(this_name, READBIN, fd->dpi, &name_ret, &dpi_ret); if (!pkfile || !FILESTRCASEEQ (this_name, name_ret)) { if (!pkfile) (void)sprintf(errbuf, "Font %s%s not found, characters will be left blank.", fd->area, n) ; else sprintf(errbuf, "Font %s%s not found, using %s instead.", fd->area, n, name_ret) ; dontmakefont = 1; error(errbuf) ; } else if (!kpse_bitmap_tolerance ((double) dpi_ret, (double) fd->dpi)) { fd->loadeddpi = dpi_ret ; fd->alreadyscaled = 0 ; (void)sprintf(errbuf, "Font %s at %d not found; scaling %d instead.", n, fd->dpi, dpi_ret) ; error(errbuf) ; lectureuser() ; } if (this_name != name_ret) free (this_name); return pkfile != NULL; } #else int del ; for (del=0; del<=RES_TOLERANCE(fd->dpi); del=del>0?-del:-del+1) { if (actualdpi == vactualdpi) { vdpi = 0 ; } else { vdpi = (2 * ((long)vactualdpi) * (fd->dpi + del) + actualdpi) / (2 * actualdpi) ; } #ifdef MVSXA (void)sprintf(name, "pk%d(%s)", fd->dpi + del, n) ; #else (void)sprintf(name, "%s.%dpk", n, fd->dpi + del) ; #endif if (0 != (pkfile=pksearch(d, name, READBIN, n, fd->dpi + del, vdpi))) return(1) ; } } if (d == pkpath) { if (actualdpi == vactualdpi) { vdpi = 0 ; } else { vdpi = (2 * ((long)vactualdpi) * fd->dpi + actualdpi) / (2 * actualdpi) ; } #ifdef MVSXA (void)sprintf(name, "pk%d(%s)", fd->dpi, n) ; #else (void)sprintf(name, "%s.%dpk", n, fd->dpi) ; #endif makefont(n, (int)fd->dpi, DPI) ; if (dontmakefont == 0 && (pkfile = pksearch(d, name, READBIN, n, fd->dpi, vdpi))) return(1) ; #ifndef MSDOS #ifdef OS2 if (_osmode == OS2_MODE) dontmakefont = 1; /* failed so don't try again under OS/2, but do try for MSDOS */ #else #ifndef ATARIST dontmakefont = 1 ; #endif #endif #endif } /* * If nothing above worked, then we get desparate. We attempt to * open the stupid font at one of a small set of predefined sizes, * and then use PostScript scaling to generate the correct size. * * We much prefer scaling up to scaling down, since scaling down * can omit character features, so we try the larger sizes first, * and then work down. */ { int i, j ; if (lastresortsizes[0] && fd->dpi < 30000) { for (i=0; lastresortsizes[i] < fd->dpi; i++) ; for (j = i-1; j >= 0; j--) { if (actualdpi == vactualdpi) { vdpi = 0 ; } else { vdpi = (2 * ((long)vactualdpi) * lastresortsizes[j] + actualdpi) / (2 * actualdpi) ; } #ifdef MVSXA (void)sprintf(name, "pk%d(%s)", lastresortsizes[j], n) ; #else (void)sprintf(name, "%s.%dpk", n, lastresortsizes[j]) ; #endif #ifdef FONTLIB if (0 != (pkfile=flisearch(n,(halfword)lastresortsizes[j])) || 0 != (pkfile=pksearch(d, name, READBIN, n, (halfword)lastresortsizes[j], vdpi))) { #else if (0 != (pkfile=pksearch(d, name, READBIN, n, (halfword)lastresortsizes[j], vdpi))) { #endif fd->loadeddpi = lastresortsizes[j] ; fd->alreadyscaled = 0 ; (void)sprintf(errbuf, "Font %s at %d dpi not found; scaling %d instead.", n, fd->dpi, lastresortsizes[j]) ; error(errbuf) ; lectureuser() ; return 1 ; } } for (j = i; lastresortsizes[j] < 30000; j++) { if (actualdpi == vactualdpi) { vdpi = 0 ; } else { vdpi = (2 * ((long)vactualdpi) * lastresortsizes[j] + actualdpi) / (2 * actualdpi) ; } (void)sprintf(name, "%s.%dpk", n, lastresortsizes[j]) ; #ifdef FONTLIB if (0 != (pkfile=flisearch(n, (halfword)lastresortsizes[j])) || 0 != (pkfile=pksearch(d, name, READBIN, n, (halfword)lastresortsizes[j], vdpi))) { #else if (0 != (pkfile=pksearch(d, name, READBIN, n, (halfword)lastresortsizes[j], vdpi))) { #endif fd->loadeddpi = lastresortsizes[j] ; fd->alreadyscaled = 0 ; (void)sprintf(errbuf, "Font %s at %d dpi not found; scaling %d instead.", name, fd->dpi, lastresortsizes[j]) ; error(errbuf) ; lectureuser() ; return 1 ; } } } } #ifdef MVSXA (void)sprintf(name, "%s.pk%d", n, fd->dpi) ; #else (void)sprintf(name, "%s.%dpk", n, fd->dpi) ; #endif (void)sprintf(errbuf, "Font %s%s not found, characters will be left blank.", fd->area, name) ; error(errbuf) ; return(0) ; #endif /* KPATHSEA */ } /* * Now our loadfont routine. We return an integer indicating the * highest character code in the font, so we know how much space * to reserve for the character. (It's returned in the font * structure, along with everything else.) */ void loadfont(register fontdesctype *curfnt) { register integer i ; register shalfword cmd ; register integer k ; register integer length = 0 ; register shalfword cc = 0 ; register integer scaledsize = curfnt->scaledsize ; register quarterword *tempr ; register chardesctype *cd = 0 ; int maxcc = 0 ; int munged = 0 ; extern int prettycolumn ; extern int quiet ; extern char *realnameoffile ; /* * We clear out some pointers: */ if (curfnt->loaded == 3) { for (i=0; i<256; i++) { curfnt->chardesc[i].TFMwidth = 0 ; curfnt->chardesc[i].packptr = NULL ; curfnt->chardesc[i].pixelwidth = 0 ; curfnt->chardesc[i].flags &= EXISTS ; curfnt->chardesc[i].flags2 = 0 ; } } else { for (i=0; i<256; i++) { curfnt->chardesc[i].TFMwidth = 0 ; curfnt->chardesc[i].packptr = NULL ; curfnt->chardesc[i].pixelwidth = 0 ; curfnt->chardesc[i].flags = 0 ; curfnt->chardesc[i].flags2 = 0 ; } } curfnt->maxchars = 256 ; /* just in case we return before the end */ if (!pkopen(curfnt)) { tfmload(curfnt) ; return ; } if (!quiet) { if (strlen(realnameoffile) + prettycolumn > STDOUTSIZE) { fprintf(stderr, "\n") ; prettycolumn = 0 ; } (void)fprintf(stderr, "<%s>", realnameoffile); prettycolumn += strlen(realnameoffile) + 2 ; } #ifdef DEBUG if (dd(D_FONTS)) (void)fprintf(stderr,"Loading pk font %s at %.1fpt\n", curfnt->name, (real)scaledsize/(alpha*0x100000)) ; #endif /* DEBUG */ if (pkbyte()!=247) badpk("expected pre") ; if (pkbyte()!=89) badpk("wrong id byte") ; for(i=pkbyte(); i>0; i--) (void)pkbyte() ; k = (integer)(alpha * (real)pkquad()) ; if (k > curfnt->designsize + fsizetol || k < curfnt->designsize - fsizetol) { (void)sprintf(errbuf,"Design size mismatch in font %s", curfnt->name) ; error(errbuf) ; } k = pkquad() ; if (k && curfnt->checksum) if (k!=curfnt->checksum) { (void)sprintf(errbuf,"Checksum mismatch in font %s", curfnt->name) ; error(errbuf) ; } k = pkquad() ; /* assume that hppp is correct in the PK file */ k = pkquad() ; /* assume that vppp is correct in the PK file */ /* * Now we get down to the serious business of reading character definitions. */ while ((cmd=pkbyte())!=245) { if (cmd < 240) { switch (cmd & 7) { case 0: case 1: case 2: case 3: length = (cmd & 7) * 256 + pkbyte() - 3 ; cc = pkbyte() ; cd = curfnt->chardesc+cc ; if (nosmallchars || curfnt->dpi != curfnt->loadeddpi) cd->flags |= BIGCHAR ; cd->TFMwidth = scalewidth(pktrio(), scaledsize) ; cd->pixelwidth = pkbyte() ; break ; case 4: case 5: case 6: length = (cmd & 3) * 65536L + pkbyte() * 256L ; length = length + pkbyte() - 4L ; cc = pkbyte() ; cd = curfnt->chardesc+cc ; cd->TFMwidth = scalewidth(pktrio(), scaledsize) ; cd->flags |= BIGCHAR ; i = pkbyte() ; cd->pixelwidth = i * 256 + pkbyte() ; break ; case 7: length = pkquad() - 11 ; cc = pkquad() ; if (cc<0 || cc>255) badpk("character code out of range") ; cd = curfnt->chardesc + cc ; cd->flags |= BIGCHAR ; cd->TFMwidth = scalewidth(pkquad(), scaledsize) ; cd->pixelwidth = (pkquad() + 32768) >> 16 ; k = pkquad() ; } if (cd->pixelwidth == 0 && cd->TFMwidth != 0) { if (cd->TFMwidth > 0) k = (integer)(cd->TFMwidth * conv + 0.5) ; else k = -(integer)(-cd->TFMwidth * conv + 0.5) ; if (k != 0) { cd->pixelwidth = k ; munged++ ; } } if (length <= 0) badpk("packet length too small") ; if (dopprescan && ((cd->flags & EXISTS) == 0)) { for (length--; length>0; length--) (void)pkbyte() ; } else { if (cc > maxcc) maxcc = cc ; if (bytesleft < length || (length > MINCHUNK && compressed)) { #ifdef DEBUG if (dd(D_MEM)) (void)fprintf(stderr, #ifdef SHORTINT "Allocating new raster memory (%ld req, %ld left)\n", length, bytesleft) ; #else "Allocating new raster memory (%d req, %d left)\n", (int)length, (int)bytesleft) ; #endif #endif /* DEBUG */ if (length > MINCHUNK) { tempr = (quarterword *)mymalloc((integer)length) ; } else { raster = (quarterword *)mymalloc((integer)RASTERCHUNK) ; tempr = raster ; bytesleft = RASTERCHUNK - length ; raster += length ; } } else { tempr = raster ; bytesleft -= length ; raster += length ; } cd->packptr = tempr ; *tempr++ = cmd ; for (length--; length>0; length--) *tempr++ = pkbyte() ; } cd->flags2 |= EXISTS ; } else { k = 0 ; switch (cmd) { case 243: k = pkbyte() ; if (k > 127) k -= 256 ; case 242: k = k * 256 + pkbyte() ; case 241: k = k * 256 + pkbyte() ; case 240: k = k * 256 + pkbyte() ; while (k-- > 0) i = pkbyte() ; break ; case 244: k = pkquad() ; break ; case 246: break ; default: badpk("! unexpected command") ; } } } #ifdef FONTLIB if (flib) flib = 0 ; else #endif (void)fclose(pkfile) ; curfnt->loaded = 1 ; curfnt->maxchars = maxcc + 1 ; if (munged > 0) { static int seen = 0 ; sprintf(errbuf, "Font %s at %d dpi has most likely been made improperly;", curfnt->name, curfnt->dpi) ; error(errbuf) ; if (seen) return ; seen = 1 ; sprintf(errbuf, "%d characters have 0 escapements but non-trivial TFM widths.", munged) ; error(errbuf) ; error( "I'm stumbling along as best I can, but I recommend regenerating") ; error( "these fonts; the problem is probably that they are non-CM fonts") ; error( "(such as circle10 or line10) created with a MF with the CM base") ; error("preloaded .") ; } } dvipsk_TexLive-2009-stripped/dvips.texi0000644000175000017500000053161611372532227020132 0ustar uwabamiuwabami\input texinfo @setfilename dvips.info @settitle Dvips: A DVI-to-PostScript translator @set version 5.98 @set month-year September 2009 @copying This manual documents Dvips version @value{version} (@value{month-year}), a program to translate a DVI file into PostScript. You may freely use, modify and/or distribute this file. @end copying @c Define a new index for filenames and options. @defcodeindex fl @defcodeindex op @c Put everything in one index (arbitrarily chosen to be the concept index). @syncodeindex fl cp @syncodeindex fn cp @syncodeindex ky cp @syncodeindex op cp @syncodeindex pg cp @syncodeindex vr cp @ifclear INSTALLONLY @dircategory TeX @direntry * DVI-to-Postscript: (dvips). Translating TeX DVI files to PostScript. * afm2tfm: (dvips)Invoking afm2tfm. Making Type 1 fonts available to TeX. * dvips: (dvips)Invoking Dvips. DVI-to-PostScript translator. @end direntry @titlepage @title Dvips: A DVI-to-PostScript Translator @subtitle for version @value{version} @subtitle @value{month-year} @author Tomas Rokicki @author @url{http://tug.org/dvips} @page @insertcopying @vskip 0pt plus 1filll @end titlepage @summarycontents @contents @ifnottex @node Top @top Dvips @insertcopying @menu * Why Dvips:: Why use Dvips? * Installation:: How to compile and install Dvips. * Invoking Dvips:: Command-line options, configuration files, etc. * Paper size and landscape:: Changing the paper dimensions. * Interaction with PostScript:: TeX meets Dvips meets PostScript. * PostScript fonts:: Installing and using PostScript fonts. * Color:: Using color with Dvips. * Index:: General index. @end menu @end ifnottex @node Why Dvips @chapter Why use Dvips? The Dvips program has a number of features that set it apart from other PostScript drivers for @TeX{}. This rather long section describes the advantages of using Dvips, and may be skipped if you are just interested in learning how to use the program. @xref{Installation}, for details of compilation and installation. The Dvips driver generates excellent, standard PostScript, that can be included in other documents as figures or printed through a variety of spoolers. The generated PostScript requires very little printer memory, so very complex documents with a lot of fonts can easily be printed even on PostScript printers without much memory, such as the original Apple LaserWriter. The PostScript output is also compact, requiring less disk space to store and making it feasible as a transfer format. Even those documents that are too complex to print in their entirety on a particular printer can be printed, since Dvips will automatically split such documents into pieces, reclaiming the printer memory between each piece. The Dvips program supports graphics in a natural way, allowing PostScript graphics to be included and automatically scaled and positioned in a variety of ways. Printers with any resolution are supported, even if they have different resolutions in the horizontal and vertical directions. High resolution output is supported for typesetters, including an option that compresses the bitmap fonts so that typesetter virtual memory is not exhausted. This option also significantly reduces the size of the PostScript file and decoding in the printer is very fast. Missing fonts can be automatically generated if Metafont exists on the system, or fonts can be converted from GF to PK format on demand. If a font cannot be generated, a scaled version of the same font at a different size can be used instead, although Dvips will complain loudly about the poor aesthetics of the resulting output. Users will appreciate features such as collated copies and support for @file{tpic}, @file{psfig}, @file{emtex}, and @file{METAPOST}; system administrators will love the support for multiple printers, each with their own configuration file, and the ability to pipe the output directly to a program such as @file{lpr}. Support for MS-DOS, OS/2, and VMS in addition to Unix is provided in the standard distribution, and porting to other systems is easy. One of the most important features is the support of virtual fonts, which add an entirely new level of flexibility to @TeX{}. Virtual fonts are used to give Dvips its excellent PostScript font support, handling all the font remapping in a natural, portable, elegant, and extensible way. Dvips even comes with its own Afm2tfm program that creates the necessary virtual fonts and @TeX{} font metric files automatically from the Adobe font metric files. Source is provided and freely distributable, so adding a site-specific feature is possible. Adding such features is made easier by the highly modular structure of the program. There is really no reason to use another driver, and the more people use Dvips, the less time will be spent fighting with PostScript and the more time will be available to create beautiful documents. So if you don't use Dvips on your system, get it today. @cindex Rokicki, Tomas Tom Rokicki wrote and maintains the original Dvips program. @end ifclear @c INSTALLONLY @node Installation @chapter Installation @cindex configuration, of Dvips @cindex compilation @cindex installation, of Dvips @ifset version (A copy of this chapter is in the distribution file @file{dvipsk/INSTALL}.) @end ifset Installing Dvips is mostly the same as installing any Kpathsea-using program. Therefore, for the basic steps involved, @pxref{Installation,,, kpathsea, Kpathsea}. (A copy is in the file @file{kpathsea/INSTALL}.) For solutions to common installation problems and information on how to report a bug, see the file @file{kpathsea/BUGS} (@pxref{Bugs,,, kpathsea, Kpathsea}). For solutions to Dvips-specific problems, @pxref{Debug options}. Also see the Dvips home page at @url{http://www.radicaleye.com/dvips}. Dvips does require some additional installation, detailed in the sections below. Also, to configure color devices, @pxref{Color device configuration}. @menu * config.ps installation:: Printer and site Dvips configuration. * PostScript font installation:: Many PostScript fonts are freely available. * Ghostscript installation:: A free PostScript interpreter. * Diagnosing problems:: Some common runtime difficulties. @end menu @node config.ps installation @section @file{config.ps} installation @flindex config.ps @r{installation} @cindex installation of @file{config.ps} @cindex printer configuration @cindex paper size, default @cindex configuration files, creating Dvips has its own configuration files: a file @file{config.ps} for sitewide defaults, and a file @file{config.@var{printer}} for each printer (output device). Since these are site-specific, @code{make install} does not create them; you must create them yourself. (These Dvips configuration files are independent of the Kpathsea configuration file @file{texmf.cnf} (@pxref{Config files,,,kpathsea, Kpathsea}). @flindex config.proto @cindex prototype printer configuration file @cindex printer configuration file, prototype @cindex configuration files, prototype Dvips configuration files contents and searching are described fully in @ref{Config files}. The simplest way to create a new configuration file is to copy and modify the file @file{dvipsk/contrib/config.proto}, seasoning with options to your taste from @ref{Config files}. Here is @file{config.proto} for your reading pleasure: @example @include contrib/config.proto @end example @node PostScript font installation @section PostScript font installation @cindex installation of PostScript fonts @cindex fonts, installation of PostScript @cindex PostScript fonts, installing To use PostScript fonts with @TeX{} and Dvips, you need both metric files (@file{.tfm} and @file{.vf}) and the outlines (@file{.pfa} or @file{.pfb}). @xref{Font concepts}. @cindex Adobe fonts @cindex Bigelow & Holmes fonts @cindex Lucida, installing @cindex Monotype fonts @cindex Softkey fonts To support the basic PostScript font set, the recommended (and simplest) approach is to install the files at @url{http://www.ctan.org/tex-archive/fonts/psfonts/lw35nfsx.zip}. This archive contains metrics, outlines, and bitmaps (for previewing) for the 35 de facto standard fonts donated by URW and the additional high-quality freely available PostScript fonts donated by Adobe, Bitstream, and URW, including geometrically-created variants such as oblique and small caps. @cindex Adobe fonts, installing @cindex Bitstream fonts, installing @cindex Monotype fonts, installing @cindex Softkey fonts, installing @cindex Y&Y fonts, installing @file{@var{CTAN:}/fonts/psfonts} contains support for many additional fonts for which you must buy outlines (Adobe, Bigelow & Holmes, Monotype, Softkey, Y&Y). (For CTAN info, @pxref{unixtex.ftp,,, kpathsea, Kpathsea}; a copy is in the top-level file @file{INSTALL}.) @cindex fonts, system PostScript @cindex PostScript fonts, on your system @flindex psfonts.map If you have additional PostScript fonts, you can make them available to Dvips by (1) giving them with appropriate filenames; and (2) running Afm2tfm (@pxref{Making a font available}) to make TFM and VF metrics for @TeX{} and Dvips to use. Also add them to @file{psfonts.map} if necessary (@pxref{psfonts.map}); it contains everything contained in @file{lw35nfsx.zip} and most fonts that come with Unix systems. Following are locations for vendor-supplied fonts. Please mail @email{tex-k@@tug.org} if you find fonts elsewhere on your system. @table @asis @item DEC Ultrix @t{/usr/lib/DPS/outline/decwin} @item DEC Digital Unix @t{/usr/lib/X11/fonts/Type1Adobe} @item HP HP-UX 9, 10 @t{/usr/lib/X11/fonts/type1.st/typefaces} @item IBM AIX @t{/usr/lpp/DPS/fonts/outlines}@* @t{/usr/lpp/X11/lib/X11/fonts/Type1}@* @t{/usr/lpp/X11/lib/X11/fonts/Type1/DPS} @item NeXT @t{/NextLibrary/Fonts/outline} @item SGI IRIX @t{/usr/lib/DPS/outline/base} @t{/usr/lib/X11/fonts/Type1} @item Sun SunOS 4.x (NeWSprint only)@* @t{newsprint_2.5/SUNWsteNP/reloc/$BASEDIR/}@* @t{ NeWSprint/small_openwin/lib/fonts}@* @t{/usr/openwin/lib/X11/fonts/Type1/outline} @item Sun Solaris 2 @t{/usr/openwin/lib/X11/fonts/Type1/outline} @item VMS @t{SYS$COMMON:[SYSFONT.XDPS.OUTLINE]} @end table @noindent The NeXT system supplies more fonts than any others, but there's a lot of overlap. @cindex HP printers and Type 1 fonts Finally, if you have an Hewlett-Packard printer, you should be able to get Type 1 font files for the standard 35 fonts from HP, if the freely available URW Type 1's do not satisfy for whatever reason. The phone number for HP Printer Drivers is (in the United States) 303-339-7009. The driver set to ask for is Adobe Type Manager 2.51, and the disk set number is @samp{MP210en3}. Mentioning anything other than Microsoft Windows when you ask for the driver set will likely lead to great confusion on the other end. @node Ghostscript installation @section Ghostscript installation @cindex Ghostscript installation @pindex gs @r{installation} @cindex Deutsch, Peter @cindex Epson printers @cindex previewing Dvips output @cindex PostScript previewers @cindex PDF files, making @cindex Aladdin Ghostscript Ghostscript is a PostScript interpreter freely available to end-users, written by Peter Deutsch. It can read the PostScript produced by Dvips and render it on your monitor, or for another device (e.g., an Epson printer) that does not support PostScript, or in PDF format. The latest version is available via @url{http://www.cs.wisc.edu/~ghost/index.html} and @url{ftp://ftp.cs.wisc.edu/pub/ghost/aladdin/}. @cindex GNU Ghostscript A somewhat older version of Ghostscript is available under the GNU General Public License, free to everyone. You can get that from @url{ftp://prep.ai.mit.edu/pub/gnu/}. @cindex Theisen, Tim @pindex ghostview @cindex Ghostview, and no @samp{N} @cindex EPS, and Ghostview @cindex standard PostScript, required by Ghostview @findex %%Page@r{, required by Ghostview} The program Ghostview, written by Tim Theisen, provides typical previewing capabilities (next page/previous page, magnification, etc.). It requires Ghostscript to run, and files in structured Postscript, specifically with @samp{%%Page} comments (no @samp{N} in @file{config.ps}). You can get Ghostview from the same places as Ghostscript. @node Diagnosing problems @section Diagnosing problems @cindex problems @cindex trouble @cindex debugging You've gone through all the trouble of installing Dvips, carefully read all the instructions in this manual, and still can't get something to work. The following sections provide some helpful hints if you find yourself in such a situation. For details on effective bug reporting, common installation problems, and @code{mktexpk} problems, @pxref{Bugs,,, kpathsea, Kpathsea}. A good first debugging operation is to set the environment variable @env{DVIPSDEBUG}, which will display any configuration and map files read by Dvips. This way you can be sure it's finding the files and settings you expect. @menu * Debug options:: Getting diagnostics. * No output:: No output at all. * Small or inverted:: Output too small or inverted. * Printer errors:: The printer sends back errors. * Long documents fail:: Long documents fail to print. * Including graphics fails:: Figures don't work. @end menu @node Debug options @subsection Debug options @cindex debugging options @cindex options, debugging The @samp{-d} flag to Dvips helps in tracking down certain errors. The parameter to this flag is an integer that tells what errors are currently being tracked. To track a certain class of debug messages, simply provide the appropriate number given below; if you wish to track multiple classes, sum the numbers of the classes you wish to track. To track all classes, you can use @code{-1}. Another useful value is @code{3650}, which tracks everything having to do with file searching and opening. You can also set the environment variable @env{KPATHSEA_DEBUG} to any of these values. Some of these debugging options are actually provided by Kpathsea (@pxref{Debugging, , , kpathsea, Kpathsea}). The classes are: @table @asis @item 1 specials @item 2 paths @item 4 fonts @item 8 pages @item 16 headers @item 32 font compression @item 64 files @item 128 config files @item 256 Partial Type 1 font encoding vectors @item 512 Partial Type 1 subr calls @item 1024 Kpathsea @code{stat} calls @item 2048 Kpathsea hash table lookups @item 4096 Kpathsea path element expansion @item 8192 Kpathsea path searches @end table @node No output @subsection No output at all @cindex output, none @cindex no output at all @cindex failure, to print at all If you are not getting any output at all, even from the simplest one-character file (for instance, @samp{\ \bye}), then something is very wrong. Practically any file sent to a PostScript laser printer should generate some output, at the very least a page detailing what error occurred, if any. Talk to your system administrator about downloading a PostScript error handler. (Adobe distributes a good one called @samp{ehandler.ps}.) @flindex ehandler.ps @cindex PowerPage PostScript implementation @cindex Shinko CHC-S446i printer @cindex Mitsubishi Shinko CHC-S446i printer It is possible, especially if you are using non-Adobe PostScript, that your PostScript interpreter is broken. Even then it should generate an error message. Dvips tries to work around as many bugs as possible in common non-Adobe PostScript interpreters, but doubtless it misses a few. PowerPage Revision 1, Interpreter Version 20001.001, on a Mitsubishi Shinko CHC-S446i color thermal dye sublimation printer is known to be unable to print with any but builtin fonts. If Dvips gives any strange error messages, or compilation on your machine generated a lot of warnings, perhaps the Dvips program itself is broken. Try using the debug options to determine where the error occurred (@pxref{Debug options}). It is possible your spooler is broken and is misinterpreting the structured comments. Try the @samp{-N} flag to turn off structured comments and see what happens. @node Small or inverted @subsection Output too small or inverted @cindex output, too small @cindex output, inverted @cindex inverted output @cindex too-small output @cindex save/restore, and inverted output If some documents come out inverted or too small, probably your spooler is not supplying an end of job indicator at the end of each file. (This commonly happens on small machines that don't have spoolers.) You can force Dvips to do this with the @samp{-F} flag (or @samp{F} config file option), but this generates files with a terminating binary character (control-D). You can also try using the @samp{-s} flag (or @samp{s} config file option) to enclose the entire job in a save/restore pair. @xref{Command-line options}, and @ref{Config files}. @node Printer errors @subsection Error messages from printer @cindex printer errors @cindex error messages from printer @cindex failure, and printer errors @cindex @t{bop undefined} error If your printer returns error messages, the error message gives very good information on what might be going wrong. One of the most common error messages is @samp{bop undefined}. This is caused by old versions of Transcript and other spoolers that do not properly parse the setup section of the PostScript. To fix this, turn off structured comments with the @samp{-N} option, but it'd be best to get your spooling software updated. @cindex VM exhausted @cindex printer memory exhausted @cindex memory of printer exhausted Another error message is @samp{VM exhausted}. Some printers indicate this error by locking up, others quietly reset. This is caused by Dvips thinking that the printer has more memory than it actually does, and then printing a complicated document. To fix this, try lowering the @samp{m} parameter in the configuration file; use the debug option to make sure you adjust the correct file. Other errors may indicate you are trying to include graphics that don't nest properly in other PostScript documents, among other things. Try the PostScript file on a QMS PS-810 or other Adobe PostScript printer if you have one, or Ghostscript (@pxref{Ghostscript installation}); it might be a problem with the printer itself. @node Long documents fail @subsection Long documents fail to print @cindex long documents not printing @cindex failure, of long documents This is usually caused by incorrectly specifying the amount of memory the printer has in the configuration file; see the previous section. @node Including graphics fails @subsection Including graphics fails @cindex including graphics fails @cindex graphics inclusion fails @cindex failure, to include graphics The most common problem with including graphics is an incorrect bounding box (@pxref{Bounding box}). Complain to whoever wrote the software that generated the file if the bounding box is indeed incorrect. @cindex Illustrator, workaround for Another possible problem is that the figure you are trying to include does not nest properly; there are certain rules PostScript applications must follow when generating files to be included. The Dvips program includes work-arounds for such errors in Adobe Illustrator and other programs, but there are certainly applications that haven't been tested. One possible thing to try is the @samp{-K} flag which strips the comments from an included figure. This might be necessary if the PostScript spooling software does not read the structured comments correctly. Use of this flag will break graphics from some applications, though, since some applications read the PostScript file from the input stream, looking for a particular comment. @cindex binary files, not supported Any application which generates graphics output containing raw binary (not ASCII hex) will probably fail with Dvips. @ifclear INSTALLONLY @node Invoking Dvips @chapter Invoking Dvips @cindex command-line options @cindex options, Dvips @cindex invoking Dvips Dvips reads a DVI file as output by (for example) @TeX{}, and converts it to PostScript, taking care of builtin or downloaded PostScript fonts, font reencoding, color, etc. These features are described in other chapters in this document. There many ways to control Dvips' behavior: configuration files, environment variables, and command-line options. @menu * Basic usage:: * Command-line options:: * Environment variables:: * Config files:: @end menu @node Basic usage @section Basic usage of Dvips To use Dvips at its simplest, simply type @example dvips foo @end example @noindent where @file{foo.dvi} is the output of @TeX{} that you want to print. If Dvips has been installed correctly, the document will probably roll out of your default printer. If you use fonts that have not been used on your system before, they may be automatically generated; this process can take a few minutes, so progress reports appear by default. The next time that document is printed, these fonts will have been saved in the proper directories, so printing will go much faster. (If Dvips tries to endlessly generate the same fonts over and over again, it hasn't been installed properly. @xref{Unable to generate fonts,,, kpathsea, Kpathsea}.) Many options are available (see the next section). For a brief summary of available options, just type @example dvips --help @end example @node Command-line options @section Command-line options Dvips has a plethora of command line options. Reading through this section will give a good idea of the capabilities of the driver. @menu * Option summary:: Quick listing, from Dvips --help. * Option details:: More information about each option. @end menu @node Option summary @subsection Option summary @cindex options, summary Here is a handy summary of the options; it is printed out when you run Dvips with no arguments or with the standard @samp{--help} option. @opindex --help @verbatiminclude dvips.help @node Option details @subsection Option details @cindex option, details of Many of the parameterless options listed here can be turned off by suffixing the option with a zero (@samp{0}); for instance, to turn off page reversal, use @samp{-r0}. Such options are marked with a trailing @samp{*}. @table @samp @item - @opindex - @cindex options, reading from standard input @cindex standard input, reading options from Read additional options from standard input after processing the command line. @item --help @opindex --help Print a usage message and exit. @item --version @opindex --version Print the version number and exit. @item -a* @opindex -a @cindex memory, conserving Conserve memory by making three passes over the DVI file instead of two and only loading those characters actually used. Generally only useful on machines with a very limited amount of memory, like some PCs. @item -A @opindex -A @cindex odd pages only Print only the odd pages. This option uses @TeX{} page numbers, not physical page numbers. @item -b @var{num} @opindex -b @var{num} @vindex /#copies @cindex copies, duplicated page bodies @cindex color separations Generate @var{num} copies of each page, but duplicating the page body rather than using the @samp{/#copies} PostScript variable. This can be useful in conjunction with a header file setting @samp{bop-hook} to do color separations or other neat tricks. @item -B @opindex -B @cindex even pages only @cindex double-sided printing Print only the even pages. This option uses @TeX{} page numbers, not physical page numbers. @item -c @var{num} @opindex -c @var{num} @vindex /#copies @cindex copies, uncollated @cindex uncollated copies Generate @var{num} consecutive copies of every page, i.e., the output is uncollated. This merely sets the builtin PostScript variable @samp{/#copies}. @item -C @var{num} @opindex -C @var{num} @cindex copies, collated @cindex collated copies Generate @var{num} copies, but collated (by replicating the data in the PostScript file). Slower than the @samp{-c} option, but easier on the hands, and faster than resubmitting the same PostScript file multiple times. @item -d @var{num} @opindex -d @var{num} @cindex debugging Set the debug flags, showing what Dvips (thinks it) is doing. This will work unless Dvips has been compiled without the @samp{DEBUG} option (not recommended). @xref{Debug options}, for the possible values of @var{num}. Use @samp{-d -1} as the first option for maximum output. @item -D @var{num} @opindex -D @var{num} @cindex resolution, setting Set both the horizontal and vertical resolution to @var{num}, given in dpi (dots per inch). This affects the choice of bitmap fonts that are loaded and also the positioning of letters in resident PostScript fonts. Must be between 10 and 10000. This affects both the horizontal and vertical resolution. If a high resolution (something greater than 400 dpi, say) is selected, the @samp{-Z} flag should probably also be used. If you are using fonts made with Metafont, such as Computer Modern, @file{mktexpk} needs to know about the value for @var{num} that you use or Metafont will fail. See the file @url{ftp://ftp.tug.org/tex/modes.mf} for a list of resolutions and mode names for most devices. @item -e @var{num} @opindex -e @var{num} @cindex maxdrift @cindex accuracy in positioning @cindex positioning accuracy Maximum drift in pixels of each character from its `true' resolution-independent position on the page. The default value of this parameter is resolution dependent (it is the number of entries in the list [100, 200, 300, 400, 500, 600, 800, 1000, 1200, 1600, 2000, 2400, 2800, 3200, @dots{}] that are less than or equal to the resolution in dots per inch). Allowing individual characters to `drift' from their correctly rounded positions by a few pixels, while regaining the true position at the beginning of each new word, improves the spacing of letters in words. @item -E* @opindex -E @cindex EPSF, generating @cindex tight bounding box, finding @cindex bounding box, finding tight Generate an EPSF file with a tight bounding box. This only looks at marks made by characters and rules, not by any included graphics. In addition, it gets the glyph metrics from the TFM file, so characters that print outside their enclosing TFM box may confuse it. In addition, the bounding box might be a bit too loose if the character glyph has significant left or right side bearings. Nonetheless, this option works well enough for creating small EPSF files for equations or tables or the like. (Of course, Dvips output, especially when using bitmap fonts, is resolution-dependent and thus does not make very good EPSF files, especially if the images are to be scaled; use these EPSF files with care.) For multiple page input files, also specify @samp{-i} to get each page as a separate EPSF file; otherwise, all the pages are overlaid in the single output file. @item -f* @opindex -f @cindex filter, running as a @cindex standard I/O @cindex pipes, not readable @vindex PRINTER@r{, avoided with @samp{-f}} Run as a filter. Read the DVI file from standard input and write the PostScript to standard output. The standard input must be seekable, so it cannot be a pipe. If your input must be a pipe, write a shell script that copies the pipe output to a temporary file and then points Dvips at this file. This option also disables the automatic reading of the @code{PRINTER} environment variable; use @samp{-P$PRINTER} after the @samp{-f} to read it anyway. It also turns off the automatic sending of control-D if it was turned on with the @samp{-F} option or in the configuration file; use @samp{-F} after the @samp{-f} to send it anyway. @item -F* @opindex -F @cindex EOF @cindex control-D @cindex printer, driving directly @cindex spooler, lacking Write control-D (ASCII code 4) as the very last character of the PostScript file. This is useful when Dvips is driving the printer directly instead of working through a spooler, as is common on personal systems. On systems shared by more than one person, this is not recommended. @item -G* @opindex -G @cindex low characters, shifting @cindex non-printing characters, shifting Shift non-printing characters (ASCII 0-32, 127) to higher-numbered positions. This was useful to work around bugs in old versions of Adobe's PDF reader. It's more likely to cause problems nowadays. @item -h @var{name} @opindex -h @var{name} @cindex header file, downloading @cindex userdict@r{, used for header files} Prepend @var{name} as an additional header file, or, if @var{name} is @samp{-}, suppress all header files. Any definitions in the header file get added to the PostScript @samp{userdict}. @item -i* @opindex -i @cindex sections output, in separate files @cindex multiple output files @cindex output files, multiple Make each section be a separate file; a @dfn{section} is a part of the document processed independently, most often created to avoid memory overflow. The filenames are created replacing the suffix of the supplied output file name by a three-digit sequence number. This option is most often used in conjunction with the @samp{-S} option which sets the maximum section length in pages; if @samp{-i} is specified and @samp{-S} is not, each page is output as a separate file. For instance, some phototypesetters cannot print more than ten or so consecutive pages before running out of steam; these options can be used to automatically split a book into ten-page sections, each to its own file. @item -j* @opindex -j @r{for partial font downloading} Download only needed characters from Type 1 fonts. This is the default in the current release. Some debugging flags trace this operation (@pxref{Debug options}). You can also control partial downloading on a per-font basis (@pxref{psfonts.map}). @item -k* @opindex -k @r{for cropmarks} @cindex cropmarks @flindex crop.pro Print crop marks. This option increases the paper size (which should be specified, either with a paper size special or with the @samp{-T} option) by a half inch in each dimension. It translates each page by a quarter inch and draws cross-style crop marks. It is mostly useful with typesetters that can set the page size automatically. This works by downloading @file{crop.pro}. @item -K* @opindex -K @cindex comments, removing included @findex %%Page@r{, removing} Remove comments in included PostScript graphics, font files, and headers; only necessary to get around bugs in spoolers or PostScript post-processing programs. Specifically, the @samp{%%Page} comments, when left in, often cause difficulties. Use of this flag can cause other graphics to fail, however, since the PostScript header macros from some software packages read portion the input stream line by line, searching for a particular comment. @item -l [=]@var{num} @opindex -l [=]@var{num} @cindex last page printed @cindex page, last printed @cindex physical page number, and @samp{-l} @cindex absolute page number, and @samp{-l} The last page printed will be the first one numbered @var{num}. Default is the last page in the document. If @var{num} is prefixed by an equals sign, then it (and the argument to the @samp{-p} option, if specified) is treated as a physical (absolute) page number, rather than a value to compare with the @TeX{} @samp{\count0} values stored in the DVI file. Thus, using @samp{-l =9} will end with the ninth page of the document, no matter what the pages are actually numbered. @item -m* @opindex -m @cindex manual feed Specify manual feed, if supported by the output device. @item -mode @var{mode} @opindex -mode @var{mode} @opindex -mode @cindex mode name, specifying @cindex Metafont mode, specifying Use @var{mode} as the Metafont device name for path searching and font generation. This overrides any value from configuration files. With the default paths, explicitly specifying the mode also makes the program assume the fonts are in a subdirectory named @var{mode}. @xref{TeX directory structure,, @TeX{} directory structure, kpathsea, Kpathsea}. If Metafont does not understand the @var{mode} name, see @ref{Unable to generate fonts,,, kpathsea, Kpathsea}. @item -M* @opindex -M @cindex font generation, avoiding @pindex mktexpk@r{, avoiding} @flindex missfont.log @comment this description repeated in kpathsea.texi Turns off automatic font generation (@file{mktexpk}). If @code{mktexpk}, the invocation is appended to a file @file{missfont.log} (by default) in the current directory. You can then execute the log file to create the missing files after fixing the problem. @vindex TEXMFOUTPUT @vindex MISSFONT_LOG If the current directory is not writable and the environment variable or configuration file value @samp{TEXMFOUTPUT} is set, its value is used. Otherwise, nothing is written. The name @samp{missfont.log} is overridden by the @samp{MISSFONT_LOG} environment variable or configuration file value. @item -n @var{num} @opindex -n @var{num} @cindex maximum pages printed @cindex pages, maximum printed Print at most @var{num} pages. Default is 100000. @item -N* @opindex -N @cindex structured comments @cindex TranScript @findex %%Page@r{, not generating} Turns off generation of structured comments such as @samp{%%Page}; this may be necessary on some systems that try to interpret PostScript comments in weird ways, or on some PostScript printers. Old versions of TranScript in particular cannot handle modern Encapsulated PostScript. Beware: This also disables page movement, etc., in PostScript viewers such as Ghostview. @item -noomega @opindex -noomega @cindex Omega extensions This will disable the use of Omega extensions when interpreting DVI files. By default, the additional opcodes @samp{129} and @samp{134} are recognized by Dvips as Omega extensions and interpreted as requests to set 2-byte characters. The only drawback is that the virtual font array will (at least temporarily) require 65536 positions instead of the default 256 positions, i.e., the memory requirements of Dvips will be slightly larger. If you find this unacceptable or encounter another problem with the Omega extensions, you can switch this extension off by using @samp{-noomega} (but please do send a bug report if you find such problems, @pxref{Bugs,,, kpathsea, Kpathsea}). @item -o @var{name} @opindex -o @var{name} @cindex output, redirecting @cindex standard output, output to Send output to the file @var{name}. If @samp{-o} is specified without @var{name} (i.e., it is the last thing on the command line), the default is @samp{@var{file}.ps} where the input DVI file was @samp{@var{file}.dvi}. If @samp{-o} isn't given at all, the configuration file default is used. @findex popen @r{for output} @kindex - @r{as output filename} @kindex ! @r{starting output filename} @kindex | @r{starting output filename} @cindex lpr spooler, MS-DOS emulation @cindex spooling to lpr on MS-DOS If @var{name} is @samp{-}, output goes to standard output. If the first character of @var{name} is @samp{!} or @samp{|}, then the remainder will be used as an argument to @code{popen}; thus, specifying @samp{|lpr} as the output file will automatically queue the file for printing as usual. (The MS-DOS version will print to the local printer device @file{PRN} when @var{name} is @samp{|lpr} and a program by that name cannot be found.) @samp{-o} disables the automatic reading of the @code{PRINTER} environment variable, and turns off the automatic sending of control-D. See the @samp{-f} option for how to override this. @item -O @var{x-offset},@var{y-offset} @opindex -O @var{x-offset},@var{y-offset} @cindex offset pages @cindex printer offset Move the origin by @var{x-offset},@var{y-offset}, a comma-separated pair of dimensions such as @samp{.1in,-.3cm} (@pxref{papersize special}). The origin of the page is shifted from the default position (of one inch down, one inch to the right from the upper left corner of the paper) by this amount. This is usually best specified in the printer-specific configuration file. @flindex testpage.tex This is useful for a printer that consistently offsets output pages by a certain amount. You can use the file @file{testpage.tex} to determine the correct value for your printer. Be sure to do several runs with the same @code{O} value---some printers vary widely from run to run. @findex bop-hook@r{, and offset pages} If your printer offsets every other page consistently, instead of every page, your best recourse is to use @samp{bop-hook} (@pxref{PostScript hooks}). @item -p [=]@var{num} @opindex -p [=]@var{num} @cindex first page printed @cindex page, first printed @cindex physical page number, and @samp{-p} @cindex absolute page number, and @samp{-p} The first page printed will be the first one numbered @var{num}. Default is the first page in the document. If @var{num} is prefixed by an equals sign, then it (and the argument to the @samp{-l} option, if specified) is treated as a physical (absolute) page number, rather than a value to compare with the @TeX{} @samp{\count0} values stored in the DVI file. Thus, using @samp{-p =3} will start with the third page of the document, no matter what the pages are actually numbered. @item -pp @var{first}-@var{last} @opindex -pp @var{first}-@var{last} @cindex page range @opindex -pp @var{range} Print pages @var{first} through @var{last}; equivalent to @samp{-p @var{first} -l @var{last}}, except that multiple @samp{-pp} options accumulate, unlike @samp{-p} and @samp{-l}. The @samp{-} separator can also be @samp{:}. @item -P @var{printer} @opindex -P @var{printer} @flindex config.ps Read the configuration file @file{config.@var{printer}} (@file{@var{printer}.cfg} on MS-DOS), which can set the output name (most likely @samp{o |lpr -P@var{printer}}), resolution, Metafont mode, and perhaps font paths and other printer-specific defaults. It works best to put sitewide defaults in the one master @samp{config.ps} file and only things that vary printer to printer in the @samp{config.@var{printer}} files; @samp{config.ps} is read before @samp{config.@var{printer}}. A configuration file for creating Adobe PDF files is provided in @samp{config.pdf} and can be loaded with @samp{-Ppdf}, it will try to include Type1 outline fonts into the PostScript file (@pxref{Hypertext caveats}). If no @samp{-P} or @samp{-o} is given, the environment variable @code{PRINTER} is checked. If that variable exists, and a corresponding @file{config.@var{printer}} (@file{@var{printer}.cfg} on MS-DOS) file exists, it is read. @xref{Configuration file searching}. @item -q* @opindex -q @cindex quiet operation @cindex silent operation @cindex warnings, suppressing Run quietly. Don't chatter about pages converted, etc.@: to standard output; report no warnings (only errors) to standard error. @item -r* @opindex -r @cindex reverse pagination Output pages in reverse order. By default, page 1 is output first. @item -R @opindex -R @cindex security @cindex shell command execution, disabling @cindex absolute filenames, disabling @cindex @file{..}-relative filenames Run securely. @samp{-R2} disables both shell command execution in @code{\special} (via @samp{`}, @pxref{Dynamic creation of graphics}) and config files (via the @samp{E} option, @pxref{Configuration file commands}) and opening of any absolute or @file{..}-relative filenames. @samp{-R1}, the default, forbids shell escapes but allows absolute filenames. @samp{-R0} allows both. @item -s* @opindex -s @cindex save/restore, generating global Enclose the output in a global save/restore pair. This causes the file to not be truly conformant, and is thus not recommended, but is useful if you are driving a deficient printer directly and thus don't care too much about the portability of the output to other environments. @item -S @var{num} @opindex -S @var{num} Set the maximum number of pages in each `section'. This option is most commonly used with the @samp{-i} option; see its description above for more information. @item -t @var{papertype} @opindex -t @var{papertype} @cindex paper type @cindex media @cindex letter papertype @cindex legal papertype @cindex ledger papertype @cindex a4 papertype @cindex a3 papertype @cindex landscape papertype @cindex papersize special, and no @samp{-t} Set the paper type to @var{papertype}, usually defined in one of the configuration files, along with the appropriate PostScript code to select it (@pxref{Config file paper sizes}). @itemize @minus{} @item You can also specify a @var{papertype} of @samp{landscape}, which rotates a document by 90 degrees. @item To rotate a document whose paper type is not the default, you can use the @samp{-t} option twice, once for the paper type, and once for @samp{landscape}. @item In general, you should not use any @samp{-t} option when using a @samp{papersize} special, which some @LaTeX{} packages (e.g., @samp{hyperref}) insert. @item One exception is when using a nonstandard paper size that is not already defined in @file{config.ps}; in this case, you need to specify @samp{-t@tie{}unknown}. @item Another exception is when producing multi-page files for further processing; use @samp{-t@tie{}nopaper} to omit any paper size information in the output. (If you just have a single page document, you can use @samp{-E} to get pure EPSF output.) @end itemize @item -T @var{hsize},@var{vsize} @opindex -T @var{hsize},@var{vsize} Set the paper size to (@var{hsize},@var{vsize}), a comma-separated pair of dimensions such as @samp{.1in,-.3cm} (@pxref{papersize special}). It overrides any paper size special in the DVI file. Be careful, as the paper size will stick to a predefined size if there is one close enough. To disable this behavior, use @samp{-tunknown}. @item -u @var{psmapfile} @opindex -u @var{psmapfile} @cindex PostScript font alias file @cindex resident fonts, different in different printers Set @var{psmapfile} to be the file that dvips uses for looking up PostScript font aliases. If @var{psmapfile} begins with a @samp{+} character, then the rest of the name is used as the name of the map file, and the map file is appended to the list of map files (instead of replacing the list). In either case, if the name has no extension, then @samp{.map} is added at the end. @item -U* @opindex -U @cindex Xerox 4045 Disable a PostScript virtual memory-saving optimization that stores the character metric information in the same string that is used to store the bitmap information. This is only necessary when driving the Xerox 4045 PostScript interpreter, which has a bug that puts garbage on the bottom of each character. Not recommended unless you must drive this printer. @item -v @opindex -v Print the dvips version number and exit. @item -V* @opindex -V Download non-resident PostScript fonts as bitmaps. This requires use @pindex mtpk @pindex gsftopk @pindex pstopk of @code{mtpk} or @code{gsftopk} or @code{pstopk} or some combination thereof to generate the required bitmap fonts; these programs are supplied with Dvips. The bitmap must be put into @file{psfonts.map} as the downloadable file for that font. This is useful only for those fonts for which you do not have real outlines, being downloaded to printers that have no resident fonts, i.e., very rarely. @item -x @var{num} @opindex -x @var{num} @cindex magnification, overriding DVI Set the magnification ratio to @math{@var{num}/1000}. Overrides the magnification specified in the DVI file. Must be between 10 and 100000. It is recommended that you use standard magstep values (1095, 1200, 1440, 1728, 2074, 2488, 2986, and so on) to help reduce the total number of PK files generated. @var{num} may be a real number, not an integer, for increased precision. @item -X @var{num} @opindex -X @var{num} @cindex resolution Set the horizontal resolution in dots per inch to @var{num}. @item -y @var{num} @cindex magnification, vertical Set the magnification ratio to @math{@var{num}/1000} times the magnification specified in the DVI file. See @samp{-x} above. @item -Y @var{num} @opindex -Y @var{num} Set the vertical resolution in dots per inch to @var{num.} @cindex resolution @item -z* @opindex -z @r{for recognizing hyperdvi} @cindex hyperdvi extensions, enabling @cindex distillation, and @samp{-z} @cindex PDF files, option for @findex html @r{specials, and @samp{-z}} Pass @samp{html} hyperdvi specials through to the output for eventual distillation into PDF. This is not enabled by default to avoid including the header files unnecessarily, and use of temporary files in creating the output. @xref{Hypertext}. @item -Z* @opindex -Z @r{for compressing bitmap fonts} @cindex compressing bitmap fonts Compress bitmap fonts in the output file, thereby reducing the size of what gets downloaded. Especially useful at high resolutions or when very large fonts are used. May slow down printing, especially on early 68000-based PostScript printers. Generally recommend today, and can be enabled in the configuration file (@pxref{Configuration file commands}). @end table @node Environment variables @section Environment variables @cindex environment variables Dvips looks for many environment variables, to define search paths and other things. The path variables are read as needed, after all configuration files are read, so they override values in the configuration files. (Except for @code{TEXCONFIG}, which defines where the configuration files themselves are found.) @xref{Path specifications,,, kpathsea, Kpathsea}, for details of interpretation of path and other environment variables common to all Kpathsea-using programs. Only the environment variables specific to Dvips are mentioned here. @vtable @code @item DVIPSDEBUG @vindex KPATHSEA_DEBUG Write the absolute path names of any configuration or map files to standard output, for debugging. This isn't done by default because these files are read even before the banner is printed. For voluminous additional debugging, set the environment variable @env{KPATHSEA_DEBUG} to @samp{-1} (@pxref{Debugging,,,kpathsea,Kpathsea}). (If @env{KPATHSEA_DEBUG} is set to any value, it automatically turns on @env{DVIPSDEBUG}.) @item DVIPSFONTS Default path to search for all fonts. Overrides all the font path config file options and other environment variables (@pxref{Supported file formats,,, kpathsea, Kpathsea}). @item DVIPSHEADERS Default path to search for PostScript header files. Overrides the @samp{H} config file option (@pxref{Configuration file commands}). @item DVIPSMAKEPK @pindex mktexpk@r{, changing name} Overrides @samp{mktexpk} as the name of the program to invoke to create missing PK fonts. You can change the arguments passed to the @code{mktexpk} program with the @code{MAKETEXPK} environment variable; @pxref{MakeTeX script arguments,,, kpathsea, Kpathsea}. @item DVIPSRC Specifies the name of the startup file (@pxref{Configuration file searching}) which is read after @file{config.ps} but before any printer-specific configuration files. @item DVIPSSIZES @cindex last-resort font scaling, with @code{DVIPSSIZES} Last-resort sizes for scaling of unfound fonts. Overrides the @samp{R} definition in config files (@pxref{Configuration file commands}). @item PRINTER Determine the default printer configuration file. (Dvips itself does not use @code{PRINTER} to determine the output destination in any way.) @item TEXCONFIG @cindex configuration file path Path to search for Dvips' @file{config.@var{printer}} configuration files, including the base @file{config.ps}. Using this single environment variable, you can override everything else. (The printer-specific configuration files are called @file{@var{printer}.cfg} on MS-DOS, but @file{config.ps} is called by that name on all platforms.) @item TEXPICTS Path to search for included graphics files. Overrides the @samp{S} config file option (@pxref{Configuration file commands}). If not set, @code{TEXINPUTS} is looked for. @xref{Supported file formats,,, kpathsea, Kpathsea}. @end vtable @node Config files @section Dvips configuration files @cindex configuration files This section describes in detail the Dvips-specific @file{config.*} device configuration files (called @file{*.cfg} on MS-DOS), which override the @file{texmf.cnf} configuration files generic to Kpathsea which Dvips also reads (@pxref{Config files,,, kpathsea, Kpathsea}). For information about installing these files, including a prototype file you can copy, @pxref{config.ps installation}. @menu * Configuration file searching:: Where config.* files are searched for. * Configuration file commands:: What can go in a config.* file. @end menu @node Configuration file searching @subsection Configuration file searching @cindex configuration file searching @cindex searching config files, order of The Dvips program loads many different configuration files, so that parameters can be set globally across the system, on a per-device basis, or individually by each user. @enumerate @item @flindex config.ps@r{, searched for} Dvips first reads (if it exists) @file{config.ps}; it is searched for along the path for Dvips configuration files, as described in @ref{Supported file formats,,, kpathsea, Kpathsea}. @item @flindex .dvipsrc@r{, searched for} A user-specific startup file is loaded, so individual users can override any options set in the global file. The environment variable @code{DVIPSRC}, if defined, is used as the specification of the startup file. If this variable is undefined, Dvips uses a platform-specific default name. On Unix Dvips looks for the default startup file under the name @file{$HOME/.dvipsrc}, which is in the user's home directory. On MS-DOS and MS-Windows, where users generally don't have their private directories, the startup file is called @file{dvips.ini} and it is searched for along the path for Dvips configuration files (as described in @ref{Supported file formats,,, kpathsea, Kpathsea}.); users are expected to set this path as they see fit for their taste. @item @opindex -P@var{printer}@r{, and config file searching} The command line is read and parsed: if the @samp{-P@var{device}} option is encountered, at that point @file{config.@var{device}} is loaded. Thus, the printer configuration file can override anything in the site-wide or user configuration file, and it can also override options in the command line up to the point that the @samp{-P} option was encountered. (On MS-DOS, the printer configuration files are called @file{@var{device}.cfg}, since DOS doesn't allow more than 3 characters after the dot in filenames.) @item @vindex PRINTER@r{, and config file searching} If no @samp{-P} option was specified, and also the @samp{-o} and @samp{-f} command line options were not used, Dvips checks the environment variable @code{PRINTER}. If it exists, then @file{config.@var{$PRINTER}} (@file{@var{$PRINTER}.cfg} on MS-DOS) is loaded (if it exists). @end enumerate Because the @file{.dvipsrc} file is read before the printer-specific configuration files, individual users cannot override settings in the latter. On the other hand, the @code{TEXCONFIG} path usually includes the current directory, and can in any case be set to anything, so the users can always define their own printer-specific configuration files to be found before the system's. A few command-line options are treated specially, in that they are not overridden by configuration files: @table @samp @item -D As well as setting the resolution, this unsets the mode, if the mode was previously set from a configuration file. If @file{config.$PRINTER} is read, however, any @samp{D} or @samp{M} lines from there will take effect. @item -mode This overrides any mode setting (@samp{M} line) in configuration files. @samp{-mode} does not affect the resolution. @item -o This overrides any output setting (@samp{o} line) in configuration files. @end table The purpose of these special cases is to (1) minimize the chance of having a mismatched mode and resolution (which @samp{mktexpk} cannot resolve), and (2) let command-line options override config files where possible. @node Configuration file commands @subsection Configuration file commands @cindex configuration file options @cindex Dvips configuration file options Most of the configuration file commands are similar to corresponding command line options, but there are a few exceptions. When they are the same, we omit the description here. As with command line options, many may be turned off by suffixing the letter with a zero (@samp{0}). @cindex comments, in configuration files @cindex continuation lines, not supported Within a configuration file, empty lines, and lines starting with a space, asterisk, equal sign, percent sign, or pound sign are ignored. There is no provision for continuation lines. @table @samp @item @@ @var{name hsize vsize} @opindex @@ @r{paper size config command} Define paper sizes. @xref{Config file paper sizes}. @item a* @opindex a @r{config command (memory conservation)} Memory conservation. Same as @samp{-a}, @pxref{Option details}. @item b @var{#copies} @opindex b @r{config command (#copies)} Multiple copies. Same as @samp{-b}, @pxref{Option details}. @item D @var{dpi} @opindex D @r{config command (dpi)} Output resolution. Same as @samp{-D}, @pxref{Option details}. @item e @var{num} @opindex e @r{config command (maxdrift)} Max drift. Same as @samp{-e}, @pxref{Option details}. @item E @var{command} @opindex E @r{config command (shell escape)} @findex system @r{in config file} @cindex datestamp, in output @cindex shell escape, in config file Executes the command listed with @code{system}(3); can be used to get the current date into a header file for inclusion, for instance. Possibly dangerous; this may be disabled, in which case a warning will be printed if the option is used (and warnings are not suppressed). @item f* @itemx F @opindex f @r{config command (filter)} @opindex F @r{config command (filter)} Run as a filter. Same as @samp{-f}, @pxref{Option details}. @item G* @opindex G @r{character shifting config command} Shift low-numbered characters; obsolete. Same as @samp{-G}, @pxref{Option details}. @item h @var{header} @opindex h @r{header downloading config command} Prepend @var{header} to output. Same as @samp{h-}, @pxref{Option details}. @item H @var{path} @opindex H @r{header path config command} @cindex header path, defining @vindex DVIPSHEADERS@r{, overrides} H Use @var{path} to search for PostScript header files. The environment variable @code{DVIPSHEADERS} overrides this. @item i @var{n} @opindex i @r{config command (pages/section)} Make multiple output files. Same as @samp{-i -S @var{n}}, @pxref{Option details}. @item j* @opindex j @r{config command (partial font downloading)} Partially download Type 1 fonts. Same as @samp{-j}, @pxref{Option details}. @item K* @opindex K @r{config command (comment-removal)} Remove comments from included PostScript files. Same as @samp{-K}, @pxref{Option details}. @item m @var{num} @opindex m @r{config command (available memory)} @cindex memory available @cindex printer memory Declare @var{num} as the memory available for fonts and strings in the printer. Default is 180000. This value must be accurate if memory conservation and document splitting is to work correctly. To determine this value, send the following file to the printer: @example %! Hey, we're PostScript /Times-Roman findfont 30 scalefont setfont 144 432 moveto vmstatus exch sub 40 string cvs show pop showpage @end example @noindent The number printed by this file is the total memory free; it is usually best to tell Dvips that the printer has slightly less memory, because many programs download permanent macros that can reduce the memory in the printer. Some systems or printers can dynamically increase the memory available to a PostScript interpreter, in which case this file might return a ridiculously low number; for example, the NeXT computer and Ghostscript. In these cases, a value of one million works fine. @item M @var{mode} @opindex M @r{config command (mf mode)} Metafont mode. Same as @samp{-mode}, @pxref{Option details}. @item N* @opindex N @r{EPS-disabling config command} Disable structured comments. Beware: This also turns off displaying page numbers or changing to specific pagenumbers in PostScript viewers. Same as @samp{-N}, @pxref{Option details}. @item o @var{name} @opindex o @r{config command (output file)} @cindex output file, setting Send output to @var{name}. Same as @samp{-o}, @pxref{Option details}. In the file @file{config.foo}, a setting like this is probably appropriate: @example o |lpr -Pfoo @end example The MS-DOS version will emulate spooling to @code{lpr} by printing to the local printer device @file{PRN} if it doesn't find an executable program by that name in the current directory or along the @code{PATH}. @item O @var{xoff},@var{yoff} @opindex O @r{config command (offset)} Origin offset. Same as @samp{-O}, @pxref{Option details}. @item p @r{[+]}@var{name} @opindex p @r{config command (font aliases)} @cindex PostScript font alias file @cindex resident fonts, different in different printers @kindex +@var{psmapfile} Examine @var{name} for PostScript font aliases. Default is @file{psfonts.map}. This option allows you to specify different resident fonts that different printers may have. If @var{name} starts with a @samp{+} character, then the rest of the name (after any leading spaces) is used as an additional map file; thus, it is possible to have local map files pointed to by local configuration files that append to the global map file. This can be used for font families. @item P @var{path} @opindex P @r{config command (PK path)} @vindex PKFONTS@r{, overrides} P @vindex TEXPKS@r{, overrides} P @vindex GLYPHFONTS@r{, overrides} P @vindex TEXFONTS@r{, overrides} P Use @var{path} to search for bitmap PK font files is @var{path}. The @code{PKFONTS}, @code{TEXPKS}, @code{GLYPHFONTS}, and @code{TEXFONTS} environment variables override this. @xref{Supported file formats,,, kpathsea, Kpathsea}. @item q* @itemx Q @opindex q @r{config command (quiet)} @opindex Q @r{config command (quiet)} Run quietly. Same as @samp{-q}, @pxref{Option details}. @item r* @opindex r @r{config command (page reversal)} Page reversal. Same as @samp{-r}, @pxref{Option details}. @item R @var{num1 num2 @dots{}} @opindex R @r{fallback resolution config command} @cindex fallback resolutions @cindex default resolutions @cindex last-resort scaling, with @code{R} Define the list of default resolutions for PK fonts. If a font size actually used in a document is not available and cannot be created, Dvips will scale the font found at the closest of these resolutions to the requested size, using PostScript scaling. The resulting output may be ugly, and thus a warning is issued. To turn this last-resort scaling off, use a line with just the @samp{R} and no numbers. The given numbers must be sorted in increasing order; any number smaller than the preceding one is ignored. This is because it is better to scale a font up than down; scaling down can obliterate small features in the character shape. @vindex DVIPSSIZES@r{, overrides} R @vindex TEXSIZES@r{, overrides} R The environment and config file values @samp{DVIPSSIZES} or @samp{TEXSIZES} override this configuration file setting. @vindex default_texsizes @r{Make variable} If no @samp{R} settings or environment variables are specified, a list compiled in during installation is used. This default list is defined by the Makefile variable @samp{default_texsizes}, defined in the file @file{make/paths.make}. @item s* @opindex s @r{config command (save/restore)} Output global save/restore. Same as @samp{-s}, @pxref{Option details}. @item S @var{path} @opindex S @r{config command (pict path)} @vindex TEXPICTS@r{, overrides} S @vindex TEXINPUTS@r{, overrides} S Use @var{path} to search for special illustrations (Encapsulated PostScript files or psfiles). The @code{TEXPICTS} and then @code{TEXINPUTS} environment variables override this. @item T @var{path} @opindex T @r{config command (TFM path)} @vindex TFMFONTS@r{, overrides} T @vindex TEXFONTS@r{, overrides} T Use @var{path} to search for TFM files. The @code{TFMFONTS} and then @code{TEXFONTS} environment variables overrides this. This path is used for resident fonts and fonts that can't otherwise be found. @item U* @opindex U @r{config command (Xerox 4045)} Work around bug in Xerox 4045 printer. Same as @samp{-U}, @pxref{Option details}. @item V @var{path} @opindex V @r{config command (vf path)} @cindex virtual font path @cindex device dependency, and virtual fonts Use @var{path} to search for virtual font files. This may be device-dependent if you use virtual fonts to simulate actual fonts on different devices. @item W @r{[@var{string}]} @opindex W @r{config command (warning)} @cindex warning messages, defining If @var{string} is supplied, write it to standard error after reading all the configuration files; with no @var{string}, cancel any previous @samp{W} message. This is useful in the default configuration file to remind users to specify a printer, for instance, or to notify users about special characteristics of a particular printer. @item X @var{num} @opindex X @r{config command (horizontal resolution)} Horizontal resolution. Same as @samp{-X} (@pxref{Option details}). @item Y @var{num} @opindex Y @r{config command (vertical resolution)} Vertical resolution. Same as @samp{-Y} (@pxref{Option details}). @item Z* @opindex Z @r{config command (compression)} Compress bitmap fonts. Same as @samp{-Z} (@pxref{Option details}). @item z* @opindex z @r{config command (secure mode)} Disables execution of system commands, like @samp{-R} (@pxref{Option details}). If @samp{-R} is specified on the command line, that takes precedence. @end table @node Paper size and landscape @chapter Paper size and landscape orientation @cindex paper size, general Most @TeX{} documents at a particular site are designed to use the local standard paper size (letter size in the United States, A4 in Europe). The Dvips program can be customized either sitewide or for a particular printer. @cindex landscape orientation, defined @cindex portrait orientation, defined But many documents are designed for other paper sizes. For instance, you may want to design a document that has the long edge of the paper horizontal. This can be useful when typesetting booklets, brochures, complex tables, or many other documents. This type of paper orientation is called @dfn{landscape} orientation (the default orientation is @dfn{portrait}). Alternatively, a document might be designed for ledger or A3 paper. Since the intended paper size in these cases is a document design decision, not a printing decision, such information should be given in the @TeX{} file and not on the Dvips command line. For this reason, Dvips supports a @samp{papersize} special. It is hoped that this special will become standard over time for @TeX{} previewers and other printer drivers. Some @LaTeX{} packages, e.g., @samp{hyperref.sty}, write a @samp{papersize} special into the DVI file. In this case, you need not and should not attempt to override it manually. @menu * papersize special:: Specifying the paper size in TeX. * Config file paper sizes:: Specifying printer- and site-specific sizes. * Paper trays:: Changing paper trays automatically. @end menu @node papersize special @section @samp{papersize} special @findex papersize @r{special} The format of the @samp{papersize} special is @example \special@{papersize=@var{width},@var{height}@} @end example @noindent @var{width} is the horizontal size of the page, and @var{height} is the vertical size. The dimensions supported are the same as for @TeX{}; namely, in (inches), cm (centimeters), mm (millimeters), pt (points), sp (scaled points), bp (big points, the same as the default PostScript unit), pc (picas), dd (didot points), and cc (ciceros). @findex landscape@r{, as @code{\special}} For a US letter size landscape document, the @code{papersize} would be: @example \special@{papersize=11in,8.5in@} @end example @noindent An alternate specification of @code{landscape}: @example \special@{landscape@} @end example @noindent This is supported for backward compatibility, but it is hoped that reventually the @code{papersize} comment will dominate. Of course, such a @code{\special} only informs Dvips of the desired paper size; you must also adjust @code{\hsize} and @code{\vsize} in your @TeX{} document typeset to those dimensions. @findex unknown@r{, paper format for @samp{-t}} When using the @code{papersize} special, you generally should not also specify @code{-t} on the command line (@pxref{Option details}). The exception is when using a nonstandard paper size that isn't predefined; in this case, use @code{-t@tie{}unknown}. The @code{papersize} special must occur somewhere on the first page of the document. Some packages, notably @samp{hyperref}, insert this special. @node Config file paper sizes @section Configuration file paper size command @cindex paper size configuration file command @cindex configuration file paper size command The @samp{@@} command in a configuration file sets the paper size defaults and options. The first @samp{@@} command defines the default paper size. It has three possible parameters: @example @@ @r{[}@var{name} @r{[}@var{hsize} @var{vsize}@r{]]} @end example If @samp{@@} is specified on a line by itself, with no parameters, it instructs Dvips to discard all previous paper size information (possibly from another configuration file). If three parameters are given, with the first parameter being a name and the second and third being a dimension (as in @samp{8.5in} or @samp{3.2cc}, just like in the @samp{papersize} special), then the option is interpreted as starting a new paper size description, where @var{name} is the name and @var{hsize} and @var{vsize} define the horizontal and vertical size of the sheet of paper, respectively. For example: @example @@ letterSize 8.5in 11in @end example If both @var{hsize} and @var{vsize} are zero (you must still specify units!)@: then any page size will match. If the @samp{@@} character is immediately followed by a @samp{+} sign, then the remainder of the line (after skipping any leading blanks) is treated as PostScript code to send to the printer, presumably to select that particular paper size: @example @@ letter 8.5in 11in @@+ %%BeginPaperSize: Letter @@+ letter @@+ %%EndPaperSize @end example After all that, if the first character of the line is an exclamation point, then the line is put in the initial comments section of the final output file; else, it is put in the setup section of the output file. For example: @example @@ legal 8.5in 14in @@+ ! %%DocumentPaperSizes: Legal @@+ %%BeginPaperSize: Legal @@+ legal @@+ %%EndPaperSize @end example When Dvips has a paper format name given on the command line, it looks for a match by the @var{name}; when it has a @samp{papersize} special, it looks for a match by dimensions. The best match found (from the paper size information in the configuration file) is used. The dimensions must match within 5bp. If nothing matches, a warning is printed and the first paper size with zero dimensions is used; this should be the @code{unknown} paper size definition mentioned below, resulting in the actual dimensions being used. Landscape mode for all paper sizes is automatically supported. If your printer has a command to set a special paper size, then give dimensions of @samp{0in 0in}; the PostScript code that sets the paper size can refer to the dimensions the user requested as @samp{hsize} and @samp{vsize}; these will be macros defined in the PostScript that return the requested size in default PostScript units. Also, some printers want @samp{BeginPaperSize} comments and paper size setting commands; others (such as the NeXT) want @samp{PaperSize} comments and they will handle setting the paper size. So paper size entries should typically specify both. @findex unknown@r{, paper format for @samp{-t}} When using a paper size that is not already defined in @file{config.ps}, you probably want to say @samp{-t@tie{}unknown} on the command line; the @code{unknown} paper size definition in @file{config.ps} has the requisite PostScript incantation to set the PostScript page size, as just described. @findex nopaper@r{, paper format for @samp{-t}} If you want no paper size information in the output at all, use @samp{-t@tie{}nopaper}. This is useful with multi-page output that will be processed further. If you just have a single page document, you can use @samp{-E} to get pure EPSF output. @flindex mkdvipspapers The Perl 5 script @file{contrib/configs/mkdvipspapers} in the distribution directory may help in determining appropriate paper size definitions. @flindex config.ps @r{paper sizes} @findex letter @r{paper size} @findex a4 @r{paper size} Notwithstanding the above, the default @code{letter} and @code{a4} paper size definitions in @file{config.ps} execute the @code{setpagedevice} operator if it exists (it was defined in PostScript Level@tie{}2), or the @samp{letter} or @samp{a4} operator if they exist (they are nonstandard and thus perhaps cause failures on certain (unknown) printers). Not executing any page size definition at all confuses PostScript conversion programs such as @command{ps2pdf}, so we want to execute one if we can. @findex letterSize @r{paper size} @findex A4size @r{paper size} The @code{letterSize} and @code{A4Size} paper size definitions are now synonyms for @code{letter} and @code{a4}. @node Paper trays @section Paper trays @cindex paper trays @cindex dual paper trays @cindex multiple paper trays @cindex HP4Si printer and paper trays @findex bop-hook Some printers, such as the Hewlett-Packard HP4si, have multiple paper trays. You can set up Dvips to take advantage of this using the @code{bop-hook} PostScript variable (@pxref{PostScript hooks}). @cindex letterhead tray For example, suppose you have an alternate tray stocked with letterhead paper; the usual tray has the usual paper. You have a document where you want the first page printed on letterhead, and the remaining pages on the usual paper. You can create a header file, say @file{firstletterhead.PS}, with the following (PostScript) code (@code{bop-hook} is passed the current physical page number, which starts at zero): @example /bop-hook @{ dup 0 eq @{ @var{alternatetray} @} @{ @var{normaltray} @} ifelse @} def @end example @noindent where @var{alternatetray} and @var{normaltray} are the appropriate commands to select the paper trays. On the 4SI, @var{alternatetray} is @samp{statusdict begin 1 setpapertray end} and @var{normaltray} is @samp{statusdict begin 0 setpapertray end}. Then, include the file with either @itemize @bullet @item the @samp{-h} command-line option (@pxref{Option details}); or @item the @samp{h} config file option (@pxref{Configuration file commands}); or @item @samp{\special@{header=@var{file}@}} in your @TeX{} document (@pxref{Including headers from TeX,, Including headers from @TeX{}}). @end itemize @node Interaction with PostScript @chapter Interaction with PostScript @cindex interaction with PostScript @cindex PostScript interaction Dvips supports inclusion of PostScript figure files (e.g., Encapsulated PostScript), downloading other header files (e.g., fonts), including literal PostScript code, and hypertext. @menu * PostScript figures:: Including an Encapsulated PostScript figure. * Header files:: Downloading extra definitions. * Literal PS:: Writing literal PostScript code. * Hypertext:: Producing HyperPostScript to make PDF. @end menu @node PostScript figures @section PostScript figures Scaling and including PostScript graphics is a breeze---if the PostScript file is correctly formed. Even if it is not, however, the file can usually be accommodated with just a little more work. @menu * Bounding box:: The %%BoundingBox EPS comment. * \includegraphics:: The LaTeX \includegraphics macro. * EPSF macros:: Including the file in TeX. * psfile special:: The basic special. * Dynamic creation of graphics:: Handling compressed or generated figures. * Fonts in figures:: The %*Font comment. @end menu @node Bounding box @subsection The bounding box comment @cindex bounding box, comment for The most important feature of a good PostScript file from the standpoint of including it in another document is an accurate bounding box comment. Every well-formed PostScript file has a comment describing where on the page the graphic is located, and how big that graphic is. @cindex big points @cindex PostScript units @cindex bounding box, defined This information is given as the lower left and upper right corners of the box just enclosing the graphic, and is thus referred to as the @dfn{bounding box}. These coordinates are given in the default PostScript units (there are precisely 72 PostScript units to the inch, like @TeX{} big points) with respect to the lower left corner of the sheet of paper. @findex %%BoundingBox To see if a PostScript file has a bounding box comment, just look at the first few lines of the file. PostScript files are standard ASCII, so you can use any text editor to do this. If within the first few dozen lines there is a line like @example %%BoundingBox: 25 50 400 300 @end example @noindent (with any reasonable numbers), chances are very good that the file is Encapsulated PostScript and will work easily with Dvips. If the file contains instead a line like @findex atend@r{, bounding box specification} @findex (atend)@r{, bounding box specification} @example %%BoundingBox: (atend) @end example @noindent the file is still probably Encapsulated PostScript, but the bounding box is given at the end of the file. Dvips needs it at the beginning. You can move it with that same text editor, or a simple script. (The bounding box is given in this way when the program that generated the PostScript couldn't know the size in advance, or was too lazy to compute it.) @pindex bbfig @cindex bounding box, determining If the document lacks a @samp{%%BoundingBox:} altogether, you can determine one in a couple of ways. One is to use the @samp{bbfig} program distributed with Dvips in the @file{contrib} directory. This can usually find the correct bounding box automatically; it works best with Ghostscript. @vindex 612 792 @r{bounding box size} If the comment looks like this: @example %%BoundingBox: 0 0 612 792 @end example @noindent the graphic claims to take up an entire sheet of paper. This is usually a symptom of a bug in the program that generated it. The other is to do it yourself: print the file. Now, take a ruler, and make the following measurements (in PostScript units, so measure in inches and multiply by 72): From the left edge of the paper to the leftmost mark on the paper is @var{llx}, the first number. From the bottom edge of the paper to the bottommost mark on the paper is @var{lly}, the second number. From the left edge of the paper to the rightmost mark on the paper is @var{urx}, the third number. The fourth and final number, @var{ury}, is the distance from the bottom of the page to the uppermost mark on the paper. Once you have the numbers, add a comment of the following form as the second line of the document. (The first line should already be a line starting with the two characters @samp{%!}; if it is not, the file probably isn't PostScript.) @example %%BoundingBox: @var{llx} @var{lly} @var{urx} @var{ury} @end example @noindent Or, if you don't want to modify the file, you can simply write these numbers down in a convenient place and give them in your @TeX{} document when you import the graphic, as described in the next section. If the document does not have such a bounding box, or if the bounding box is given at the end of the document, or the bounding box is wrong, please complain to the authors of the software package that generated the file. @node \includegraphics @subsection The \includegraphics macro for @LaTeX{} @cindex \includegraphics @LaTeX{} macro @cindex macros for epsf inclusion Once the figure file has a bounding box comment (see the previous section) you are ready to import the graphic into a La@TeX{} document. For @LaTeX{} 2e, you can use the epsf, graphics or graphicx packages, but the last is recommended---it has the most flexible syntax, and is briefly described here. Further information can be found in @file{grfguide} or @file{epslatex}, which should be included in your @LaTeX{} distribution in DVI, PDF, or other formats. (If you are still using La@TeX{} 2.09, use epsf.sty). Just put the following command into your preamble: @example \usepackage[dvips]@{graphicx@} @end example Depending on your system, a suitable driver setup may already be present, so that @LaTeX{} automatically produces DVI files suitable for Dvips. In this case you can leave out the @samp{[dvips]} parameter. Now, at the point you want to include a file @file{foo.eps}, enter a line such as: @example \includegraphics@{foo.eps@} @end example However, it is usually best to omit the file extension and only use @example \includegraphics@{foo@} @end example @noindent because then you can process the same LaTeX file with different @TeX{} engines or DVI converters if you also provide suitable graphics files for them, e.g., @file{foo.pdf} or @file{foo.png}. @cindex bounding box, supplying to @TeX{} The \includegraphics command has many options, specified in @samp{key=value} syntax, to allow you to resize, rotate or trim the included graphic---see @file{grfguide} or @file{epslatex}. If your file does not have a bounding box comment, you can supply the numbers as determined in the previous section, in the same order they would have been in a normal bounding box comment: @example \includegraphics[bb=100 100 500 500]@{foo.ps@} @end example @noindent Now, save your changes and run @LaTeX{} and Dvips; the output should have your graphic positioned at precisely the point you indicated, occupying the proper amount of space. PostScript graphics have their origin in the lower left corner. Therefore, in @TeX{}, a graphic will occupy a box that extends far above the line where it is put in, but has depth zero below it. Combining @samp{\includegraphics} with @samp{\parbox} commands or minipages can sometimes be confusing when this is not taken into account. @node EPSF macros @subsection Using the EPSF macros @cindex EPSF macros @cindex macros for epsf inclusion If you are using @LaTeX{} 2e, use the @samp{graphics} or @samp{graphicx} package. @xref{\includegraphics}. If you are using plain @TeX{} or La@TeX{} 2.09, you need @file{epsf.tex} (for plain @TeX{}) and @file{epsf.sty} (for La@TeX{}). For plain @TeX{}, add a line like this near the top of your input file: @flindex epsf.tex @example \input epsf @end example @noindent @flindex epsf.sty If you are using @LaTeX{} 2.09, add the @samp{epsf} style option, as in: @example \documentstyle[12pt,epsf]@{article@} @end example @noindent In any case, the above only needs to be done once, no matter how many figures you plan to include. Now, at the point you want to include a file, enter a line such as: @example \epsffile@{foo.eps@} @end example @findex \leavevmode @cindex bounding box, supplying to @TeX{} If you are using @LaTeX{}, you may need to add @code{\leavevmode} immediately before the @code{\epsffile} command to get certain environments to work correctly. If your file does not have a bounding box comment, you can supply the numbers as determined in the previous section, in the same order they would have been in a normal bounding box comment: @example \epsffile[100 100 500 500]@{foo.ps@} @end example @noindent Now, save your changes and run @TeX{} and Dvips; the output should have your graphic positioned at precisely the point you indicated, occupying the proper amount of space. @findex \epsffile @r{macro} @cindex figures, natural size The @code{\epsffile} macro typesets the figure as a @TeX{} @code{\vbox} at the point of the page that the command is executed. By default, the graphic will have its `natural' width (namely, the width of its bounding box). The @TeX{} box will have depth zero and its natural height. By default, the graphic will be scaled by any DVI magnification in effect, just as is everything else in your document. See the next section for more information on scaling. @vindex \epsfverbosetrue @cindex verbose EPSF processing If you want @TeX{} to report the size of the figure as a message on your terminal when it processes each figure, give the command: @example \epsfverbosetrue @end example @menu * EPSF scaling:: * EPSF clipping:: @end menu @node EPSF scaling @subsubsection EPSF scaling @cindex scaling of figures @cindex figures, scaling Usually, you will want to scale an EPSF figure to some size appropriate for your document, since its natural size is determined by the creator of the EPS file. The best way to do this is to assign the desired size to the @TeX{} @code{\epsfxsize} or @code{\epsfysize} variables, whichever is more convenient for you. That is, put @vindex \epsfxsize @example \epsfxsize=@var{dimen} @end example @noindent right before the call to @code{\epsffile}. Then the width of the @TeX{} box will be @var{dimen} and its height will be scaled proportionately. Similarly, you can set the vertical size with @vindex \epsfysize @example \epsfysize=@var{dimen} @end example @noindent in which case the height will be set and the width scaled proportionally. If you set both, both will be honored, but the aspect ratio of the included graphic may necessarily be distorted, i.e., its contents stretched in one direction or the other. @findex \epsfsize You can resize graphics in a more general way by redefining the @code{\epsfsize} macro. @code{\epsffile} calls this with two parameters: the natural horizontal and vertical sizes of the PostScript graphic. @code{\epsfsize} must expand to the desired horizontal size, that is, the width of the @code{\vbox}. Schematically: @example \def\epsfsize#1#2@{@var{body}@} @end example Some useful definitions of @var{body}: @table @samp @item \epsfxsize This definition (the default) enables the default features listed above, by setting @code{\epsfxsize} to the same value it had before the macro was called. @item #1 Force the natural size by returning the first parameter (the original width). @item 0pt A special case, equivalent to @samp{#1}. @item 0.5#1 Scale to half the natural size. @item \hsize Scale to the current @code{\hsize}. (In @LaTeX{}, use @code{\textwidth} instead of @code{\hsize}.) @item \ifnum#1>\hsize\hsize\else#1\fi If the natural width is greater than the current @code{\hsize}, scale to @code{\hsize}, otherwise use the natural width. @end table @cindex DVI magnification @cindex magnification, DVI @vindex \magnification For compatibility with other PostScript drivers, it is possible to turn off the default scaling of included figures by the DVI magnification with the following @TeX{} command: @vindex /magscale @example \special@{! /magscale false def@} @end example @noindent Use of this command is not recommended because it will make the @code{\epsffile} graphics the ``wrong'' size if global magnification is being used, and it will cause any PostScript graphics to appear improperly scaled and out of position if a DVI to DVI program is used to scale or otherwise modify the document. @findex bop-hook DVI magnification is not applied to any output from code you write in @samp{bop-hook} or its ilk (@pxref{PostScript hooks}), @node EPSF clipping @subsubsection EPSF clipping @cindex clipping of EPSF @cindex bounding box, inaccurate @cindex text in figures, chopped off @cindex lines in figures, wrong width By default, clipping is disabled for included EPSF images. This is because clipping to the bounding box dimensions often cuts off a small portion of the figure, due to slightly inaccurate bounding box arguments. The problem might be subtle; lines around the boundary of the image might be half their intended width, or the tops or bottoms of some text annotations might be sliced off. If you want to turn clipping on, just use the command @example \epsfclipon @end example @noindent and to turn clipping back off, use @example \epsfclipoff @end example @node psfile special @subsection @samp{psfile} special @findex psfile @r{special} The basic special for file inclusion is as follows: @example \special@{psfile=@var{filename}.ps @r{[}@var{key}=@var{value}@r{]} @dots{} @} @end example @noindent This downloads the PostScript file @file{@var{filename}.ps} such that the current point will be the origin of the PostScript coordinate system. The optional @var{key}@t{=}@var{value} assignments allow you to specify transformations on the PostScript. The possible @var{key}s are: @table @samp @item hoffset @opindex hoffset @r{(@samp{psfile} special option)} The horizontal offset (default 0). @item voffset @opindex voffset @r{(@samp{psfile} special option)} The vertical offset (default 0). @item hsize @opindex hsize @r{(@samp{psfile} special option)} The horizontal clipping size (default 612). @item vsize @opindex vsize @r{(@samp{psfile} special option)} The vertical clipping size (default 792). @item hscale @opindex hscale @r{(@samp{psfile} special option)} The horizontal scaling factor, as a percentage (default 100). @item vscale @opindex vscale @r{(@samp{psfile} special option)} The vertical scaling factor, as a percentage (default 100). @item angle @opindex angle @r{(@samp{psfile} special option)} The rotation, in degrees (default 0). @item clip @opindex clip @r{(@samp{psfile} special option)} Enable clipping to the bounding box (default disabled). @item llx, lly, urx, ury @opindex llx @r{(@samp{psfile} special option)} @opindex lly @r{(@samp{psfile} special option)} @opindex urx @r{(@samp{psfile} special option)} @opindex ury @r{(@samp{psfile} special option)} Bounding box of the included image, just as in a @code{%%BoundingBox} comment. Values are in big points, and may be fractional. @item rhi, rwi @opindex rhi @r{(@samp{psfile} special option)} @opindex rwi @r{(@samp{psfile} special option)} Desired width and height of the resulting figure in the output, in tenths of big points (720 to the inch); may be fractional. If both @code{rwi} and @code{rhi} are nonzero, the picture is scaled, possibly losing aspect ratio. If only one of @code{rwi} and @code{rhi} is nonzero, the picture is scaled, preserving aspect ratio. @end table The offsets and sizes are given in PostScript units (big points). Thus, for example: @example \special@{psfile=foo.ps hoffset=72 hscale=90 vscale=90@} @end example @noindent will shift the graphics produced by file @file{foo.ps} right by one inch and will draw it at 0.9 times normal size. Offsets are given relative to the point of the special command, and are unaffected by scaling or rotation. Rotation is counterclockwise about the origin. The order of operations is to rotate the figure, scale it, then offset it. For compatibility with older PostScript drivers, it is possible to change the units that @samp{hscale} and @samp{vscale} are given in. This can be done by redefining @samp{@@scaleunit} @vindex scaleunit in @samp{SDict} @vindex SDict by a @TeX{} command such as @example \special@{! /@@scaleunit 1 def@} @end example @noindent The @samp{@@scaleunit} variable, which is by default 100, is what @samp{hscale} and @samp{vscale} are divided by to yield an absolute scale factor. @node Dynamic creation of graphics @subsection Dynamic creation of PostScript graphics files @cindex dynamic creation of graphics @cindex compressed PostScript @cindex uncompressing PostScript PostScript is an excellent page description language---but it does tend to be rather verbose. Compressing PostScript graphics files can reduce them by factor of five or more. For this reason, if the name of an included PostScript file ends with @file{.Z} or @file{.gz}, Dvips automatically runs @samp{gzip -d}. For example: @example \epsffile[72 72 540 720]@{foo.ps.gz@} @end example @noindent Since the results of such a command are not accessible to @TeX{}, if you use this facility with the @file{epsf} macros, you need to supply the bounding box parameter yourself, as shown. More generally, if the filename parameter to one of the graphics inclusion techniques starts with a left quote (@samp{`}), the parameter is instead interpreted as a command to execute that will send the actual file to standard output. For example: @example \special@{psfile="`gnuplot foo"@} @end example @noindent @flindex gnuplot to include the file @file{foo}. Of course, the command to be executed can be anything, including using a file conversion utility such as @file{tek2ps} or whatever is appropriate. This feature can be disabled with the @samp{-R} command-line option or @samp{R} configuration option. @node Fonts in figures @subsection Fonts in figures @cindex figures and fonts @cindex fonts, in PostScript figures @findex %*Font You can use any font available to @TeX{} and Dvips within a graphics file by putting a @code{%*Font:} line in the leading commentary of the file. Schematically, this looks like: @example %*Font: @var{tfmname} @var{scaledbp} @var{designbp} @var{hex-start}:@var{hex-bitstring} @end example Here is the meaning of each of these elements: @table @var @item tfmname The @TeX{} TFM filename, e.g., @file{cmr10}. You can give the same @var{tfmname} on more than one @samp{%*Font} line; this is useful when the number of characters from the font used needs a longer @var{hex-bitstring} (see item below) than conveniently fits on one line. @item scaledbp The size at which you are using the font, in PostScript points (@TeX{} big points). 72@dmn{bp} = 72.27@dmn{pt} = 1@dmn{in}. @item designbp The designsize of the font, again in PostScript points. This should match the value in the TFM file @var{tfmname}. Thus, for @file{cmr10}, it should be @samp{9.96265}. @item hex-start The character code of the first character used from the font, specified as two ASCII hexadecimal characters, e.g., @samp{4b} or @samp{4B} for @samp{K}. @item hex-bitstring An arbitrary number of ASCII hexadecimal digits specifying which characters following (and including) @var{hex-start} are used. This is treated as a bitmap. For example, if your figure used the single letter @samp{K}, you would use @samp{4b:8} for @var{hex-start} and @var{hex-bitstring}. If it used @samp{KLMNP}, you would use @samp{4b:f4}. @end table MetaPost's output figures contain lines like this for bitmap fonts used in a MetaPost label (@pxref{MetaPost,,, web2c, Web2c}). @node Header files @section PostScript header files @cindex header files, defined @cindex PostScript header files @dfn{Header files} are bits of PostScript included in the output file; generally they provide support for special features, rather than producing any printed output themselves. You can explicitly request downloading header files if necessary for some figure, or to achieve some special effect. @vindex psheaderdir @flindex .pro @r{prologue files} @flindex .lpro @r{long prologue files} Dvips includes some headers on its own initiative, to implement features such as PostScript font reencoding, bitmap font downloading, handling of @code{\special}'s, and so on. These standard headers are the @file{.pro} files (for ``prologue'') in the installation directory @samp{$(psheaderdir)}; they are created from the @file{.lpro} (``long prologue'') files in the distribution by stripping comments, squeezing blank lines, etc., for maximum efficiency. If you want to peruse one of the standard header files, read the @file{.lpro} version. @vindex userdict@r{, and dictionary files} @cindex dictionary, @code{userdict} The PostScript dictionary stack will be at the @samp{userdict} level when header files are included. @menu * Including headers from TeX:: * Including headers from the command line:: * Headers and memory usage:: @end menu @node Including headers from TeX @subsection Including headers from @TeX{} @cindex including headers in @TeX{} @findex header=@var{file} \special @cindex @TeX{}, including headers in @cindex headers, including in @TeX{} In order to get a particular graphic file to work, a certain font or header file might need to be sent first. The Dvips program provides support for this with the @samp{header} @code{\special}. For instance, to ensure that @file{foo.ps} gets downloaded: @example \special@{header=foo.ps@} @end example @cindex fonts, as header files As another example, if you have some PostScript code that uses a PostScript font not built into your printer, you must download it to the printer. If the font isn't used elsewhere in the document, Dvips can't know you've used it, so you must include it in the same way, as in: @example \special@{header=putr.pfa@} @end example @noindent to include the font definition file for Adobe Utopia Roman. The @code{header} also special allows for specifying some additional code that should be inserted into the PostScript document before and after the file itself, as follows: @example \special@{header=@{foo.ps@} pre=@{pre code@} post=@{post code@}@} @end example @cindex before header, inserting code @cindex after header, inserting code @findex pre @r{code before headers} @findex post @r{code after headers} This will insert @code{pre code} just before @file{foo.ps} and @code{post code} just after. It is required to use the (balanced) braces in @emph{all} of the arguments, including the @code{header}, when using this extended syntax. This allows, for instance, dynamic headers, where some of the content depends on settings from the user in (La)@TeX{}. Another application is the inclusion of graphics inside the PostScript header, so that they can be reused throughout the document, as with logs. That avoids including the same graphic several times. This is implemented in the @file{graphics/graphicx-psmin} package. This extended syntax has one additional feature. When Dvips finds the extended syntax, it will also look in the installed @file{tex/} tree(s) for the header file (@file{foo.ps} in our example), and not only in the current directory and dvips tree as the original syntax does. This is because common graphics may well come with packages which are installed in the @file{tex/} tree. @node Including headers from the command line @subsection Including headers from the command line @cindex including headers from the command line @cindex command line, including headers from @cindex headers, including from the command line You can include headers when you run Dvips, as well as from your document (see the previous section). To do this, run Dvips with the option @samp{-P @var{header}}; this will read the file @file{config.@var{header}}, which in turn can specify a header file to be downloaded with the @samp{h} option. @xref{Configuration file commands}. These files are called @file{@var{header}.cfg} on MS-DOS. @cindex duplex printers @cindex simplex mode on duplex printers @cindex screen frequencies, setting You can arrange for the same file to serve as a @samp{-P} config file and the downloadable header file, by starting the lines of PostScript code with a space, leaving only the @samp{h} line and any comments starting in the first column. As an example, see @file{contrib/volker/config.*} (@file{contrib/volker/*.cfg} on MS-DOS). (These files also perform useful functions: controlling duplex/simplex mode on duplex printers, and setting various screen frequencies; @file{contrib/volker/README} explains further.) @node Headers and memory usage @subsection Headers and memory usage @cindex headers and memory usage @cindex memory usage, and headers @cindex sections of output file, and memory @cindex output file, sectioning of Dvips tries to avoid overflowing the printer's memory by splitting the output files into ``sections'' (see the @samp{-i} option in @ref{Option details}). Therefore, for all header files, Dvips debits the printer VM budget by some value. If the header file has, in its leading commentary a line of the form @findex VMusage @findex %%VMusage @example %%VMusage: @var{min} @var{max} @end example @noindent then @var{max} is used. If there is no @code{%%VMusage} line, then the size (in bytes) of the header file is used as an approximation. Illustrations (figure files) are also checked for @code{%%VMusage} line. @node Literal PS @section Literal PostScript @cindex literal PostScript, using @cindex PostScript code, literal You can include literal PostScript code in your document in several ways. @menu * " special:: To include inline PostScript code. * ps special:: Inline PostScript without save/restore. * PostScript hooks:: Specifying code to run in the PS interpreter. * Literal headers:: Literal PostScript for the whole document. * Literal examples:: Neat example. @end menu @node " special @subsection @code{"} special: Literal PostScript @findex " @r{special (literal PostScript)} For simple graphics, or just for experimentation, literal PostScript code can be included. Simply use a @code{\special} beginning with a double quote character @samp{"}; there is no matching closing @samp{"}. For instance, the following (simple) graphic: @iftex @tex \vskip\baselineskip \vbox to 100bp{\vss % a bp is the same as a PostScript unit \special{" newpath 0 0 moveto 100 100 lineto 394 0 lineto closepath gsave 0.8 setgray fill grestore stroke}} @end tex @end iftex @ifinfo [ picture of a grey triangle ] @end ifinfo @noindent was created by typing: @example \vbox to 100bp@{\vss % a bp is the same as a PostScript unit \special@{" newpath 0 0 moveto 100 100 lineto 394 0 lineto closepath gsave 0.8 setgray fill grestore stroke@}@} @end example You are responsible for leaving space for such literal graphics, as with the @code{\vbox} above. @node ps special @subsection @samp{ps} special @findex ps @r{special} @cindex save/restore, and specials Generally, Dvips encloses specials in a PostScript save/restore pair, guaranteeing that the special will have no effect on the rest of the document. The @samp{ps} special, however, allows you to insert literal PostScript instructions without this protective shield; you should understand what you're doing (and you shouldn't change the PostScript graphics state unless you are willing to take the consequences). This command can take many forms because it has had a torturous history; any of the following will work: @example \special@{ps:@var{text}@} \special@{ps::@var{text}@} \special@{ps::[begin]@var{text}@} \special@{ps::[end]@var{text}@} \special@{ps::[nobreak]@var{text}@} @end example @noindent (with longer forms taking precedence over shorter forms, when they are present). @samp{ps::} and @samp{ps::[end]} do no positioning, so they can be used to continue PostScript literals started with @samp{ps:} or @samp{ps::[begin]}. Literal PostScript instructions after @samp{ps::[nobreak]} are @emph{not} broken into lines. This feature may be used to include PostScript comments, for example. @findex plotfile@r{, @samp{ps} subspecial} In addition, the variant @example \special@{ps: plotfile @var{filename}@} @end example @noindent @flindex rotate.tex inserts the contents of @var{filename} verbatim into the output (except for omitting lines that begin with %). An example of the proper use of literal specials can be found in the file @file{rotate.tex}, which makes it easy to typeset text turned in multiples of 90 degrees. @node Literal headers @subsection Literal headers: @samp{!} @code{\special} @cindex literal headers @vindex SDict @r{dictionary} @findex ! @r{special (literal PS header)} @cindex dictionary, @code{SDict} You can download literal PostScript header code in your @TeX{} document, for use with (for example) literal graphics code that you include later. The text of a @code{\special} beginning with an @samp{!} is copied into the output file. A dictionary @code{SDict} will be current when this code is executed; Dvips arranges for @code{SDict} to be first on the dictionary stack when any PostScript graphic is included, whether literally (the @samp{"} special) or through macros (e.g., @file{epsf.tex}). For example: @example \special@{! /reset @{ 0 0 moveto@} def@} @end example @node PostScript hooks @subsection PostScript hooks @cindex PostScript hooks Besides including literal PostScript at a particular place in your document (as described in the previous section), you can also arrange to execute arbitrary PostScript code at particular times while the PostScript is printing. @findex bop-hook @findex eop-hook @findex start-hook @findex end-hook If any of the PostScript names @code{bop-hook}, @code{eop-hook}, @code{start-hook}, or @code{end-hook} are defined in @code{userdict}, they will be executed at the beginning of a page, end of a page, start of the document, and end of a document, respectively. @cindex draft copies @cindex dated output When these macros are executed, the default PostScript coordinate system and origin is in effect. Such macros can be defined in headers added by the @samp{-h} option or the @samp{header=} special, and might be useful for writing, for instance, `DRAFT' across the entire page, or, with the aid of a shell script, dating the document. These macros are executed outside of the save/restore context of the individual pages, so it is possible for them to accumulate information, but if a document must be divided into sections because of memory constraints, such added information will be lost across section breaks. @cindex physical page number, and @code{bop-hook} The single argument to @code{bop-hook} is the physical page number; the first page gets zero, the second one, etc. @code{bop-hook} must leave this number on the stack. None of the other hooks are passed arguments. As an example of what can be done, the following special will write a light grey `DRAFT' across each page in the document: @example \special@{!userdict begin /bop-hook@{gsave 200 30 translate 65 rotate /Times-Roman findfont 216 scalefont setfont 0 0 moveto 0.7 setgray (DRAFT) show grestore@}def end@} @end example @findex %%Page@r{, and multi-page information} Using @code{bop-hook} or @code{eop-hook} to preserve information across pages breaks compliance with the Adobe document structuring conventions, so if you use any such tricks, you may also want to use the @samp{-N} option to turn off structured comments (such as @samp{%%Page}). Otherwise, programs that read your file will assume its pages are independent. @node Literal examples @subsection Literal examples @cindex literal PostScript, examples @cindex examples of literal PostScript To finish off this section, the following examples of literal PostScript are presented without explanation: @example \def\rotninety@{\special@{ps:currentpoint currentpoint translate 90 rotate neg exch neg exch translate@}@}\font\huge=cmbx10 at 14.4truept \setbox0=\hbox to0pt@{\huge A\hss@}\vskip16truept\centerline@{\copy0 \special@{ps:gsave@}\rotninety\copy0\rotninety\copy0\rotninety \box0\special@{ps:grestore@}@}\vskip16truept @end example @iftex @tex \def\rotninety{\special{ps:currentpoint currentpoint translate 90 rotate neg exch neg exch translate}} \font\huge=cmbx10 at 14.4truept \setbox0=\hbox to0pt {\huge A\hss} \vskip16truept \centerline{\copy0\special{ps:gsave} \rotninety\copy0\rotninety\copy0\rotninety \box0\special{ps:grestore}} \vskip16truept @end tex @end iftex @ifinfo [ There are 4 @samp{A} characters, each rotated 90 degrees about a common center point ] @end ifinfo @example \vbox to 2truein@{\special@{ps:gsave 0.3 setgray@}\hrule height 2in width\hsize\vskip-2in\special@{ps:grestore@}\font\big=cminch\big \vss\special@{ps:gsave 1 setgray@}\vbox to 0pt@{\vskip2pt \line@{\hss\hskip4pt NEAT\hss@}\vss@}\special@{ps:0 setgray@}% \hbox@{\raise2pt\line@{\hss NEAT\hss@}\special@{ps:grestore@}@}\vss@} @end example @iftex @tex \smallskip \vbox to 2truein{\special{ps:gsave 0.3 setgray}\hrule height 2in width\hsize\vskip-2in\special{ps:grestore}\font\big=cminch\big \vss\special{ps:gsave 1 setgray}\vbox to 0pt{\vskip2pt \line{\hss\hskip4pt NEAT\hss}\vss}\special{ps:0 setgray}% \hbox{\raise2pt\line{\hss NEAT\hss}\special{ps:grestore}}\vss} @end tex @end iftex @ifinfo [ There is a big gray box with the word @samp{NEAT} inside in big letters ] @end ifinfo @findex \rotninety @findex gsave@r{/}grestore@r{, and literal PS} @findex save@r{/}restore@r{, and literal PS} Some caveats are in order, however. Make sure that each @code{gsave} is matched with a @code{grestore} on the same page. Do not use @code{save} and @code{restore}; they can interact with the PostScript generated by Dvips if care is not taken. Try to understand what the above macros are doing before writing your own. The @code{\rotninety} macro especially has a useful trick that appears again and again. @node Hypertext @section Hyper@TeX{}t @cindex hypertext support @opindex -z @findex html @r{specials} @findex pdfmark Dvips has support for producing hypertext PostScript documents. If you specify the @samp{-z} option, the @file{html:} specials described below will be converted into @samp{pdfmark} PostScript operators to specify links. Without @samp{-z}, @file{html:} specials are ignored. @cindex distiller, for PDF files @cindex PDF files, making The resulting PostScript can then be processed by a distiller program to make a PDF file. (It can still be handled by ordinary PostScript interpreters as well.) Various versions of both PC and Unix distillers are supported; Ghostscript includes limited distiller support (@pxref{Ghostscript installation}). Macros you can use in your @TeX{} document to insert the specials in the first place are available from @file{@var{CTAN:}/support/hypertex}. For CTAN info, @pxref{unixtex.ftp,,, kpathsea, Kpathsea}. @flindex @code{http://www.win.tue.nl/~dickie/idvi} @flindex @code{http://xxx.lanl.gov/hypertex} @cindex Doyle, Mark @cindex Bhattacharya, Tanmoy @cindex Java DVI reader @pindex idvi @r{Java DVI reader} @pindex dvihps@r{, hyperdvi to PostScript} This hypertext support (and original form of the documentation) was written by Mark Doyle and Tanmoy Bhattacharya as the @samp{dvihps} program. You can retrieve their software and additional documentation via the CTAN reference above. You may also be interested in the Java previewer IDVI, available at @url{http://www.win.tue.nl/~dickie/idvi}, and/or in @url{http://www.emrg.com/texpdf.html}, which describes the process of making PDF files from TeX files in more detail. Mail archives for the original project are at @url{http://math.albany.edu:8800/hm/ht/}. @menu * Hypertext caveats:: Font quality, missing character psi. * Hypertext specials:: The details on the specials. @end menu @node Hypertext caveats @subsection Hypertext caveats @cindex hypertext caveats @cindex Computer Modern in PostScript @cindex hypertext and bitmap fonts @cindex hypertext caveats @cindex embedding Type 1 fonts @cindex PDF files, font quality If you intend to go all the way to PDF, you may want to use the standard 35 PostScript fonts exclusively, since other fonts are embedded as bitmaps by default. The Adobe PDF readers are extremely slow when dealing with bitmap fonts and the results look terrible on the screen. Printouts will probably look fine, but may not take full advantage of a high-resolution printer. Alternatively, you can have your fonts embedded as Type 1 scalable outlines. The resulting PostScript files may be larger, but can be effectively rasterized at any resolution. They can also be converted to PDF files that can be used effectively at any screen or printer resolution. To get the TeX fonts embedded in the PostScript file as Type 1 fonts, add @samp{-Ppdf} to the dvips command line switches. The printout for a run should look something like this: @smallexample dvips report -Ppdf -o report.ps This is dvips(k) 5.86 Copyright 1999 Radical Eye Software (www.radicaleye.com) ' TeX output 2001.06.15:0837' -> report.ps . [1] [2] [3] [4] @end smallexample An entry like "" indicates success: dvips found the Computer Modern Roman 10 point font in a PostScript Font Binary file, translated it to an ASCII encoding, and embedded it. You can confirm this by examining the PostScript output file, looking for the section starting @code{%%BeginFont: CMR10} followed by an entry @code{/FontType 1 def}. The @samp{-Ppdf} option requires that the relevant outline (@file{.pfa} or @file{.pfb}) files be installed (@pxref{Font concepts}). For example, the @file{cmr10} file might be in @file{/usr/share/texmf/fonts/type1/bluesky/cm/cmr10.pfb}. Your TeX distribution may make those fonts available in a separate optional package (e.g., @code{tetex-extra} in Debian). Failing that, commercial versions of the Computer Modern fonts are available from Blue Sky; public domain versions - in particular, the lm fonts, and the cm-super fonts, are available from CTAN sites (for CTAN info, @pxref{unixtex.ftp,,, kpathsea, Kpathsea}). You can convert a PostScript file to PDF using @code{distill}, which comes with Adobe Acrobat, or @code{ps2pdf}, which comes with Ghostscript. The @code{ps2pdf} that comes with @code{Ghostscript} version 6.0 or earlier will not embed Type 1 fonts. Current recommendations are GNU Ghostscript 6.51 or Aladdin Ghostscript 7.0. You can check the fonts in a PDF file with Acrobat Reader by selecting the menu entries @samp{File|Document Info|Fonts}. @cindex psi character missing @cindex trailing spaces, dropped @cindex spaces, dropped trailing Also, the Adobe distillers prior to 2.1 drop trailing space characters (character code 32) from strings. Unfortunately, the PostScript fonts use this character code for characters other than space (notably the Greek letter psi in the @code{Symbol} font), and so these characters are dropped. This bug is fixed in version 2.1. If you can't upgrade, One workaround is to change all the trailing blanks in strings to a character code that isn't in the font. This works because the default behavior is to substitute a blank for a missing character, i.e., the distiller is fooled into substituting the right character. For instance, with the Blue Sky fonts, you can globally replace @samp{ )} with @samp{\200)} (with @code{sed}, for example) and get the desired result. With the public domain fonts, you will probably have to use a character code in the range 128 to 191 since these fonts duplicate the first 32 characters starting at 192 to avoid MS-DOS problems. For more information on the use of TeX to produce PDF files, see the article ``Creating quality Adobe PDF files from @TeX{} with DVIPS'' by Kendall Whitehouse of Adobe. Adobe seems not to offer the article any more, but copies are available elsewhere: @display @url{http://www.math.hawaii.edu/~ralph/MathOnWeb/TeXPDF.html} @url{http://www.utdallas.edu/~cantrell/online/543e.html} @end display You may also want to check ``Notes on converting (La)@TeX{} documents to robust PDF using Rokicki's dvips and Acrobat Distiller'' by Timothy P. Van Zandt:@* @url{http://www.emrg.com/texpdf.htmlhttp://zandtwerk.insead.fr/tex2pdf.html}. @node Hypertext specials @subsection Hypertext specials @cindex hypertext specials @cindex specials, hypertext @cindex Smith, Arthur Current support for the World Wide Web in the @TeX{} system does not involve modifying @TeX{} itself. We need only define some specials; Arthur Smith (@email{apsmith@@aps.org}), Tanmoy Bhattacharya, and Paul Ginsparg originally proposed and implemented the following: @example html: html: html: html: html: @end example Like all @TeX{} @code{\special}'s, these produce no visible output, and are uninterpreted by @TeX{} itself. They are instructions to DVI processors only. @cindex uniform resource locator @cindex extended URL @cindex URL, extended for @TeX{} @cindex Murphy, Tim Here, @var{xurl} is a standard WWW uniform resource locator (URL), possibly extended with a @samp{#@var{type}.@var{string}} construct, where @var{type} is @samp{page}, @samp{section}, @samp{equation}, @samp{reference} (for bibliographic references), @samp{figure}, @samp{table}, etc. For example, @smallexample \special@{html:@} @end smallexample @noindent is a link to equation (1.1) in an example document by Tim Murphy. @cindex URL, definition See the URL @url{http://www.w3.org/hypertext/WWW/Addressing/Addressing.html} for a precise description of base URL's. Descriptions of the @code{\special}'s: @ftable @samp @item href @cindex links, hypertext Creates links in your @TeX{} document. For example: @example \special@{html:@}\TeX\ Users Group\special@{html:@} @end example @noindent The user will be able to click on the text `@TeX{} Users Group' while running Xdvi and get to the TUG home page. (By the way, this is for illustration. In practice, you most likely want to use macros to insert the @code{\special} commands; reference above.) @item name @cindex Anderson, Laurie Defines URL targets in your @TeX{} documents, so links can be resolved. For example: @example \special@{html:@}Paradise\special@{html:@} is exactly where you are right now. @end example This will resolve an @samp{href="#paradise"}. You'll also have to change the catcode of @samp{#}, etc. It's usually easiest to use existing macro packages which take care of all the details, such as @file{hyperref} for @LaTeX{}. The @url{http://arxiv.org/hypertex/, HyperTeX FAQ} has more information. @item img @flindex mailcap @r{and hypertext} Links to an arbitrary external file. Interactively, a viewer is spawned to read the file according to the file extension and your @file{mailcap} file (see the Xdvi documentation). @item base Defines a base URL that is prepended to all the @code{name} targets. Typically unnecessary, as the name of the DVI file being read is used by default. @end ftable The @samp{img} and @samp{base} tags are not yet implemented in Dvips or the NeXTSTEP DVI viewer. @node PostScript fonts @chapter PostScript fonts @cindex PostScript fonts Dvips supports the use of PostScript fonts in @TeX{} documents. To use a PostScript font conveniently, you need to prepare a corresponding virtual font; the program Afm2tfm, supplied with Dvips, helps with that. All the necessary support for the standard 35 PostScript fonts (@samp{AvantGarde-Book} through @samp{ZapfDingbats}), plus other freely or commonly available PostScript fonts is available along with Dvips. To use these fonts, you need do nothing beyond what is mentioned in the installation procedure (@pxref{Installation}). This chapter is therefore relevant only if you are installing new PostScript fonts not supplied with Dvips. (Or if you're curious.) @menu * Font concepts:: Metrics, glyphs, virtual fonts, and encodings. * Making a font available:: Installing and using a PostScript font. * Invoking afm2tfm:: Creating TFM and AFM files for a virtual font. * psfonts.map:: Defining available PostScript fonts. @end menu @node Font concepts @section Font concepts @cindex font concepts The information needed to typeset using a particular font is contained in two files: a @dfn{metric file} that contains shape-independent information and a @dfn{glyph file} that contains the actual shapes of the font's characters. A @dfn{virtual font} is an optional additional file that can specify special ways to construct the characters. @TeX{} itself (or @LaTeX{}) look only at the metric file, but DVI drivers such as Dvips look at all three of these files. An @dfn{encoding file} defines the correspondence between the code numbers of the characters in a font and their descriptive names. Two encoding files used together can describe a reencoding that rearranges, i.e., renumbers, the characters of a font. @menu * Metric files:: Shape-independent font information. * Glyph files:: Character shapes. * Virtual fonts:: Constructing one font from others. * Encodings:: Character codes and character names. * PostScript typesetting:: How PostScript typesets a character. @end menu @node Metric files @subsection Metric files @cindex metric files A @dfn{metric file} describes properties of the font that are independent of what the characters actually look like. Aside from general information about the font itself, a metric file has two kinds of information: information about individual characters, organized by character code, and information about sequences of characters. The per-character information specifies the width, height, depth, and italic correction of each character in the font. Any might be zero. @cindex kerning, defined @cindex ligature, defined In addition to information on individual characters, the metric file specifies @dfn{kerning}, i.e., adding or removing space between particular character pairs. It further specifies @dfn{ligature} information: when a sequence of input characters should be typeset as a single (presumably different) ``ligature'' character. For example, it's traditional for the input @samp{fi} to be typeset as `fi', not as `@r{f}@r{i}' (with the dot of the `i' colliding with `f'). (In English, the only common ligatures are fi, fl, ff, ffi, and ffl.) Different typesetting systems use different metric file formats: @itemize @bullet @item @cindex afm files @flindex .afm @r{Adobe metric files} Each Postscript font has an @dfn{Adobe font metrics} (@samp{.afm}) file. These files are plain text, so you can inspect them easily. You can get AFM files for Adobe's fonts from @url{ftp://ftp.adobe.com/pub/adobe/Fonts/AFMs}. @item @cindex tfm files @flindex .tfm @r{@TeX{} font metric files} @TeX{} uses @dfn{@TeX{} font metrics} (@samp{.tfm}) files. When you say @samp{\font = @var{font}} in your @TeX{} document, @TeX{} reads a file named @samp{@var{font}.tfm}. (Well, except for the @file{texfonts.map} feature; @pxref{Fontmap,,, kpathsea, Kpathsea}). @TeX{} can then calculate the space occupied by characters from the font when typesetting. In addition, the DVI drivers you use to print or view the DVI file produced by @TeX{} may need to look at the TFM file. @cindex property list files @pindex tftopl @pindex pltotf @flindex .pl @r{property list files} TFM files are binary (and hence are typically much smaller than AFM files). You can use the @code{tftopl} program (@pxref{tftopl invocation,,, web2c, Web2c}) that comes with @TeX{} to transform a TFM file into a human-readable ``property list'' (@samp{.pl}) file. You can also edit a PL file and transform it back to a @TeX{}-readable TFM with the companion program @code{pltotf} (@pxref{pltotf invocation,,, web2c, Web2c}). Editing metrics by hand is not something you're likely to want to do often, but the capability is there. @item @cindex pfm files @flindex .pfm @r{printer font metric files} ATM and other typesetting systems use @dfn{printer font metric} (@samp{.pfm}) files. These are binary files. They are irrelevant in the @TeX{} world, and not freely available, so we will not discuss them further. @end itemize The Afm2tfm program distributed with Dvips converts an AFM file to a TFM file and performs other useful transformations as well. @xref{Invoking afm2tfm}. @node Glyph files @subsection Glyph files @cindex glyph files Although a metric file (see the previous section) contains information about the spatial and other properties of the character at position 75, say, it contains nothing about what the character at position 75 actually looks like. The glyphs---the actual shapes of the letterforms in a font---are defined by other files, which we call glyph files. @TeX{} itself only reads the TFM file for a font; it does not need to know character shapes. A @dfn{glyph file} is a file that defines the shapes of the characters in a font. The shapes can be defined either by outlines or by bitmaps. @cindex outline fonts @cindex arcs @cindex splines PostScript fonts are defined as @dfn{outline fonts}: Each character in the font is defined by giving the mathematical curves (lines, arcs, and splines) that define its contours. Different sizes of a character are generated by linearly scaling a single shape. For example, a 10-point `A' is simply half the size of a 20-point `A'. Nowadays, outline fonts usually also contain @dfn{hints}---additional information to improve the appearance of the font at small sizes or low resolutions. @cindex Type 1 fonts @cindex pfa files @cindex pfb files @flindex .pfa @r{printer font ascii files} @flindex .pfb @r{printer font binary files} Although various kinds of PostScript outline fonts exist, by far the most common, and the only one we will consider, is called @dfn{Type 1}. The glyph files for Postscript Type 1 fonts typically have names ending in @samp{.pfa} (``printer font ASCII'') or @samp{.pfb} (``printer font binary''). @cindex bitmap fonts @flindex .mf @r{Metafont source files} @cindex Metafont source files In contrast, glyph files for Computer Modern and the other standard @TeX{} fonts are @dfn{bitmap fonts}, generated from Metafont (@samp{.mf}) descriptions. The Metafont program distributed with @TeX{} generates bitmaps from these descriptions. @cindex pk files @flindex .@var{nnn}pk @r{packed font bitmaps} The glyph files for @TeX{} bitmap fonts are usually stored in @dfn{packed font} (PK) files. The names of these files end in @samp{.@var{nnn}pk}, where @var{nnn} is the resolution of the font in dots per inch. For example, @file{cmr10.600pk} contains the bitmaps for the @samp{cmr10} font at a resolution of 600@dmn{dpi}. (On DOS filesystems, it's more likely @file{dpi600\cmr10.pk}.) @cindex gf files @pindex gftopk Metafont actually outputs @dfn{generic font} (GF) files, e.g., @file{cmr10.600gf}, but the GF files are usually converted immediately to PK format (using the @code{gftopk} utility that comes with @TeX{}) since PK files are smaller and contain the same information. (The GF format is a historical artifact.) @node Virtual fonts @subsection Virtual fonts @cindex virtual fonts A @dfn{virtual font} is constructed by extracting characters from one or more existing fonts and rearranging them, or synthesizing new characters in various ways. The explanation in this manual is intended to suffice for understanding enough about virtual fonts to use them with Dvips. It isn't a reference manual on virtual fonts. For more information: The primary document on virtual fonts is Donald E. Knuth, @cite{TUGboat} 11(1), Apr.@: 1990, pp.@: 13--23, ``Virtual Fonts: More Fun for Grand Wizards'' (@file{@var{CTAN:}/info/virtual-fonts.knuth}; for CTAN info, @pxref{unixtex.ftp,,, kpathsea, Kpathsea}). (Don't be intimidated by the subtitle.) @cindex vf files @cindex vpl files A virtual font (@samp{.vf}) file specifies, for each character in the virtual font, a recipe for typesetting that character. A VF file, like a TFM file, is in a compressed binary format. The @code{vftovp} and @code{vptovf} programs convert a VF file to a human-readable VPL (virtual property list) format and back again. @xref{vftovp invocation,,, web2c, Web2c}, and @ref{vptovf invocation,,, web2c, Web2c}. @cindex base fonts In the case of a PostScript font @var{f} being used in a straightforward way, the recipe says: character @var{i} in the VF font is character @var{j} in font @var{f}. The font @var{f} is called a @dfn{base font}. For example, the VF file could remap the characters of the PostScript font to the positions where @TeX{} expects to find them. @xref{Encodings}. Since @TeX{} reads only TFM files, not VF's, each VF must have a corresponding TFM for use with @TeX{}. This corresponding TFM is created when you run @code{vptovf}. @cindex expansion, of virtual fonts @cindex virtual font expansion You can @dfn{expand} virtual fonts into their base fonts with DVIcopy (@pxref{dvicopy invocation,,, web2c, Web2c}). This is useful if you are using a DVI translator that doesn't understand vf's itself. @node Encodings @subsection Encodings @cindex encodings Every font, whatever its type, has an @dfn{encoding}, that specifies the correspondence between ``logical'' characters and character codes. For example, the ASCII encoding specifies that the character numbered 65 (decimal) is an uppercase `A'. The encoding does not specify what the character at that position looks like; there are lots of ways to draw an `A', and a glyph file (@pxref{Glyph files}) tells how. Nor does it specify how much space that character occupies; that information is in a metric file (@pxref{Metric files}). @cindex Computer Modern, encoding of @TeX{} implicitly assumes a particular encoding for the fonts you use with it. For example, the plain @TeX{} macro @code{\'}, which typesets an acute accent over the following letter, assumes the acute accent is at position 19 (decimal). This happens to be true of standard @TeX{} fonts such as Computer Modern, as you might expect, but it is not true of normal PostScript fonts. It's possible but painful to change all the macros that assume particular character positions. A better solution is to create a new font with the information for the acute accent at position 19, where @TeX{} expects it to be. @xref{Making a font available}. @cindex PostScript encoding @cindex encoding files @cindex encoding vectors, defined PostScript represents encodings as a sequence of 256 character names called an @dfn{encoding vector}. An @dfn{encoding file} (@samp{.enc}) gives such a vector, together with ligature and kerning information (with which we are not concerned at the moment). These encoding files are used by the Afm2tfm program. Encoding files are also downloaded to the PostScript interpreter in your printer if you use one of them in place of the default encoding vector for a particular PostScript font. @flindex dvips.enc @flindex 8r.enc @flindex texmext.enc @flindex texmital.enc @flindex texmsym.enc @flindex reencode/*.enc Examples of encodings: the @file{dvips.enc} encoding file that comes with Dvips in the @samp{reencode} directory is a good (but not perfect) approximation to the @TeX{} encoding for @TeX{}'s Computer Modern text fonts. This is the encoding of the fonts that originated with Dvips, such as @file{ptmr.tfm}. The distribution includes many other encoding files; for example, @file{8r.enc}, which is the base font for the current PostScript font distribution, and three corresponding to the @TeX{} mathematics fonts: @file{texmext.enc} for math extensions, @file{texmital.enc} for math italics, and @file{texmsym.enc} for math symbols. @node PostScript typesetting @subsection How PostScript typesets a character @cindex typesetting in PostScript @cindex character lookup procedure in PostScript The output of Dvips is a program in the PostScript language that instructs your (presumably PostScript-capable) printer how to typeset your document by transforming it into toner on paper. Your printer, in turn, contains a PostScript interpreter that carries out the instructions in this typesetting program. The program must include the definition of any PostScript fonts that you use in your document. Fonts built into your printer (probably the standard 35: @samp{Times-Roman}, @samp{ZapfDingbats}, @dots{}) are defined within the interpreter itself. Other fonts must be downloaded as pfa or pfb files (@pxref{Glyph files}) from your host (the computer on which you're running Dvips). You may be wondering exactly how a PostScript interpreter figures out what character to typeset, with this mass of metrics, glyphs, encodings, and other information. (If you're not wondering, skip this section @dots{}) @findex show @r{PostScript operator} The basic PostScript operator for imaging characters is @code{show}. Suppose you've asked @TeX{} to typeset an `S'. This will eventually wind up in the Dvips output as the equivalent of this PostScript operation: @example (S) show @end example @noindent Here is how PostScript typesets the `S': @enumerate @item @cindex ASCII character codes, used by PostScript PostScript interpreters use ASCII; therefore `S' is represented as the integer 83. (Any of the 256 possible characters representable in a standard 8-bit byte can be typeset.) @item @cindex current font, in PostScript @cindex dictionary, PostScript language A PostScript @dfn{dictionary} is a mapping of names to arbitrary values. A font, to the interpreter, is a dictionary which contains entries for certain names. (If these entries are missing, the interpreter refuses to do anything with that font.) PostScript has a notion of ``the current font''---whatever font is currently being typeset in. @item @cindex encoding vectors, in Type 1 fonts @findex Encoding @r{Type 1 dictionary} One of the mandatory entries in a font dictionary is @samp{Encoding}, which defines the encoding vector (@pxref{Encodings}) for that font. This vector of 256 names maps each possible input character to a name. @item The interpreter retrieves the entry at position 83 of the encoding vector. This value is a PostScript name: @code{/S}. @item @findex CharStrings @r{Type 1 dictionary} @cindex dictionary, @code{CharStrings} For Type 1 fonts (we're not going to discuss anything else), the interpreter now looks up @code{/S} as a key in a dictionary named @code{CharStrings}, another mandatory entry in a font dictionary. @item @cindex hints @cindex character definitions in PostScript The value of @code{S} in @code{CharStrings} is the equivalent of a series of standard PostScript commands like @samp{curveto}, @samp{lineto}, @samp{fill}, and so on. These commands are executed to draw the character. There can also be @dfn{hint information} that helps adapt the character to low-resolution rasters. (@xref{Glyph files}.) The commands are actually represented in a more compact way than standard PostScript source; see the Type 1 book for details. @end enumerate This method for typesetting characters is used in both Level 1 and Level 2 PostScript. See the PostScript reference manuals for more information. @node Making a font available @section Making a PostScript font available @cindex installing fonts @cindex fonts, installing To make a PostScript font available in a @TeX{} document, you need to install the font on your system and then define it within the document. Once you have installed the font, of course, it is available for any document thereafter and you don't need to reinstall it. You must have an AFM file for any font you install. Unless the font is built into your printer, you must also have a PFA or PFB file. In the following examples, we use the font @samp{Times-Roman} to illustrate the process. But you should use the prebuilt fonts for Times and the other standard fonts, rather than rebuilding them. The prebuilt fonts are made using a more complicated process than that described here, to make them work as well as possible with @TeX{}. So following the steps in this manual will not generate files identical to the distributed ones. @xref{PostScript font installation}, for pointers to the prebuilt fonts. Installation of a PostScript font proceeds in three steps. @xref{Font concepts}, for descriptions of the various files involved. @enumerate @item Run @code{afm2tfm} to create a TFM file for the original font, and the VPL form of the virtual font: @example afm2tfm Times-Roman -v ptmr rptmr @end example @item Run @code{vptovf} to generate a VF and TFM file for the virtual font from the VPL file: @example vptovf ptmr.vpl ptmr.vf ptmr.tfm @end example @item Insert an entry for the font in @file{psfonts.map} (@pxref{psfonts.map}): @example rptmr Times-Roman } signs, you can make the ligature scanning operation skip that many resulting characters before proceeding. This works just like in Metafont. For example, the `fi' ligature is specified with @w{@samp{f i =: fi ;}}. A more convoluted ligature is @samp{one one |=:|>> exclam ;} which separates a pair of adjacent @code{1}'s with an exclamation point, and then skips over two of the resulting characters before continuing searching for ligatures and kerns. You cannot give more @t{>}'s than @t{|}'s in an ligature operation, so there are a total of eight possibilities: @example =: |=: |=:> =:| =:|> |=:| |=:|> |=:|>> @end example The default set of ligatures and kerns built in to Afm2tfm is: @example % LIGKERN question quoteleft =: questiondown ; % LIGKERN exclam quoteleft =: exclamdown ; % LIGKERN hyphen hyphen =: endash ; endash hyphen =: emdash ; % LIGKERN quoteleft quoteleft =: quotedblleft ; % LIGKERN quoteright quoteright =: quotedblright ; % LIGKERN space @{@} * ; * @{@} space ; 0 @{@} * ; * @{@} 0 ; % LIGKERN 1 @{@} * ; * @{@} 1 ; 2 @{@} * ; * @{@} 2 ; 3 @{@} * ; * @{@} 3 ; % LIGKERN 4 @{@} * ; * @{@} 4 ; 5 @{@} * ; * @{@} 5 ; 6 @{@} * ; * @{@} 6 ; % LIGKERN 7 @{@} * ; * @{@} 7 ; 8 @{@} * ; * @{@} 8 ; 9 @{@} * ; * @{@} 9 ; @end example @node Special font effects @subsection Special font effects @cindex oblique fonts @cindex slanted fonts @cindex fonts, slanted Besides the reencodings described in the previous section, Afm2tfm can do other manipulations. (Again, it's best to use the prebuilt fonts rather than attempting to remake them.) @samp{-s @var{slant}} makes an obliqued variant, as in: @example afm2tfm Times-Roman -s .167 -v ptmro rptmro @end example @noindent This creates @file{ptmro.vpl} and @file{rptmro.tfm}. To use this font, put the line @findex SlantFont @example rptmro Times-Roman ".167 SlantFont" @end example @noindent @flindex psfonts.map into @file{psfonts.map}. Then @samp{rptmro} (our name for the obliqued Times) will act as if it were a resident font, although it is actually constructed from Times-Roman via the PostScript routine @code{SlantFont} (which will slant everything 1/6 to the right, in this case). @cindex expanded fonts @cindex fonts, expanded Similarly, you can get an expanded font with @example afm2tfm Times-Roman -e 1.2 -v ptmrre rptmrre @end example @noindent and by recording the pseudo-resident font @findex ExtendFont @example rptmrre Times-Roman "1.2 ExtendFont" @end example @noindent in @file{psfonts.map}. You can also create a small caps font with a command such as @cindex small caps fonts @cindex fonts, small caps @example afm2tfm Times-Roman -V ptmrc rptmrc @end example @noindent This will generate a set of pseudo-small caps mapped into the usual lowercase positions and scaled down to 0.8 of the normal cap dimensions. You can also specify the scaling as something other than the default 0.8: @example afm2tfm Times-Roman -c 0.7 -V ptmrc rptmrc @end example It is unfortunately not possible to increase the width of the small caps independently of the rest of the font. If you want a really professional looking set of small caps, you need to acquire a small caps font. @findex PaintType @cindex outline fonts @cindex fonts, outlined To change the @code{PaintType} in a font from filled (0) to outlined (2), you can add @code{"/PaintType 2 store"} to @file{psfonts.map}, as in the following: @example rphvrl Helvetica "/PaintType 2 store" @end example Afm2tfm writes to standard output the line you need to add to @file{psfonts.map} to use that font, assuming the font is resident in the printer; if the font is not resident, you must add the @samp{<@var{filename}} command to download the font. Each identical line only needs to be specified once in the @samp{psfonts.map} file, even though many different fonts (small caps variants, or ones with different output encodings) may be based on it. @node Afm2tfm options @subsection Afm2tfm options @cindex options, to Afm2tfm @cindex afm2tfm options Synopsis: @example afm2tfm [@var{option}]@dots{} @var{afmfile}[.afm] [@var{tfmfile}[.tfm]] @end example Afm2tfm reads @var{afmfile} and writes a corresponding (but raw) TFM file. If @var{tfmfile} is not supplied, the base name of the AFM file is extended with @samp{.tfm} to get the output filename. The simplest example: @example afm2tfm Times-Roman rptmr @end example @cindex accents, wrong @noindent The TFM file thus created is @dfn{raw} because it omits ligature and kern information, and does no character remapping; it simply contains the character information in the AFM file in TFM form, which is the form that @TeX{} understands. The characters have the same code in the TFM file as in the AFM file. For text fonts, this means printable ASCII characters will work ok, but little else, because standard PostScript fonts have a different encoding scheme than the one that plain @TeX{} expects (@pxref{Encodings}). Although both schemes agree for the printable ASCII characters, other characters such as ligatures and accents vary. Thus, in practice, it's almost always desirable to create a virtual font as well with the @samp{-v} or @samp{-V} option. @xref{Making a font available}. The command line options to Afm2tfm: @table @samp @item -c @var{ratio} @opindex -c @var{ratio} @cindex scaling small caps See @samp{-V}; overrides the default ratio of 0.8 for the scaling of small caps. @item -e @var{ratio} @opindex -e @var{ratio} @cindex expanded fonts @cindex condensed fonts Stretch characters horizontally by @var{ratio}; if less than 1.0, you get a condensed font. @item -O @opindex -O @cindex octal character codes Output all character codes in the @samp{vpl} file as octal numbers, not names; this is useful for symbol or other special-purpose fonts where character names such as @samp{A} have no meaning. @item -p @var{ps-enc} @opindex -p @var{ps-enc} Use @var{ps-enc} for the destination (PostScript) encoding of the font; @var{ps-enc} must be mentioned as a header file for the font in @samp{psfonts.map}. @xref{Changing PostScript encodings}. @item -s @var{slant} @opindex -s @var{slant} @cindex slanted fonts, making Slant characters to the right by @var{slant}. If @var{slant} is negative, the letters slope to the left (or they might be upright if you start with an italic font). @item -t @var{tex-enc} @opindex -t @var{tex-enc} Use @var{tex-enc} for the target (@TeX{}) encoding of the font. Ligature and kern information may also be specified in @var{file}. @var{file} is not mentioned in @file{psfonts.map}. @item -T @var{ps-tex-enc} @opindex -T @var{ps-tex-enc} Use @var{ps-tex-enc} for both the PostScript and target @TeX{} encodings of the font. Equivalent to @samp{-p @var{file} -t @var{file}}. @item -u @opindex -u Use only those characters specified in the @TeX{} encoding, and no others. By default, Afm2tfm tries to include all characters in the input font, even those not present in the @TeX{} encoding (it puts them into otherwise-unused positions, arbitrarily). @item -v @var{vpl-file} @opindex -v @var{vpl-file} Output a VPL (virtual property list) file, as well as a TFM file. @item -V @var{vpl-file} @opindex -V @var{vpl-file} Same as @samp{-v}, but the virtual font generated is a pseudo small caps font obtained by scaling uppercase letters by 0.8 to typeset lowercase. This font handles accented letters and retains proper kerning. @end table @node psfonts.map @section @file{psfonts.map}: PostScript font catalog @flindex psfonts.map @cindex non-resident fonts @cindex downloading PostScript fonts @cindex fonts, downloading The @file{psfonts.map} file associates a PostScript font with related files and constructs. Each line has the format: @example @var{filename} @var{PostScript-name} @var{options} @end example @kindex < @r{font downloading} For example, the line @example rpstrn StoneInformal This file is part of pdfTeX. pdfTeX 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 of the License, or (at your option) any later version. pdfTeX 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 pdfTeX; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA $Id: //depot/Build/source.development/TeX/texk/web2c/pdftexdir/ptexmac.h#18 $ */ #ifndef PDFTEXMAC #define PDFTEXMAC /* Not all systems define it. */ #ifndef M_PI #define M_PI 3.14159265358979323846 /* pi */ #define M_PI_2 1.5707963267948966192E0 /*Hex 2^ 0 * 1.921FB54442D18 */ #define M_PI_4 7.8539816339744830962E-1 /*Hex 2^-1 * 1.921FB54442D18 */ #endif #ifdef WIN32 // Why relying on gmalloc() ??? #define gmalloc(n) xmalloc(n) #define gfree(p) free(p) #define inline __inline #define srandom(n) srand(n) #define random() rand() #endif /* Pascal WEB macros */ #define maxinteger 0x7FFFFFFF #define maxdimen 0x3FFFFFFF #define objinfo(n) objtab[n].int0 #define pdfroom(n) do { \ if (pdfbufsize < n) \ pdftex_fail("PDF output buffer overflowed"); \ if (pdfptr + n > pdfbufsize) \ pdfflush(); \ } while (0) #define pdfout(c) do { \ if (pdfptr > pdfbufsize) \ pdfflush(); \ pdfbuf[pdfptr++] = c; \ } while (0) #define pdfoffset() (pdfgone + pdfptr) #define pdfinitfont(f) {tmpf = f; pdfcreatefontobj();} #define MAX_CHAR_CODE 255 #define PRINTF_BUF_SIZE 1024 #define MAX_CSTRING_LEN 1024 #define MAX_PSTRING_LEN 1024 #define SMALL_BUF_SIZE 256 #define SMALL_ARRAY_SIZE 256 #define FONTNAME_BUF_SIZE 128 /* a PDF name can be maximum 127 chars long */ #define check_buf(size, buf_size) \ if ((size) > (buf_size)) \ pdftex_fail("buffer overflow", (buf_size)) #define append_char_to_buf(c, p, buf, buf_size) do { \ if (c == 9) \ c = 32; \ if (c == 13 || c == EOF) \ c = 10; \ if (c != ' ' || (p > buf && p[-1] != 32)) { \ check_buf(p - buf + 1, (buf_size)); \ *p++ = c; \ } \ } while (0) #define append_eol(p, buf, buf_size) do { \ check_buf(p - buf + 2, (buf_size)); \ if (p - buf > 1 && p[-1] != 10) \ *p++ = 10; \ if (p - buf > 2 && p[-2] == 32) { \ p[-2] = 10; \ p--; \ } \ *p = 0; \ } while (0) #define remove_eol(p, buf) do { \ p = strend(buf) - 1; \ if (*p == 10) \ *p = 0; \ } while (0) #define skip(p, c) if (*p == c) p++ #define alloc_array(T, n, s) do { \ if (T##_array == NULL) { \ T##_limit = (s); \ if ((n) > T##_limit) \ T##_limit = (n); \ T##_array = xtalloc(T##_limit, T##_entry); \ T##_ptr = T##_array; \ } \ else if (T##_ptr - T##_array + (n) > T##_limit) { \ last_ptr_index = T##_ptr - T##_array; \ T##_limit *= 2; \ if (T##_ptr - T##_array + (n) > T##_limit) \ T##_limit = T##_ptr - T##_array + (n); \ xretalloc(T##_array, T##_limit, T##_entry); \ T##_ptr = T##_array + last_ptr_index; \ } \ } while (0) #define is_cfg_comment(c) \ (c == 10 || c == '*' || c == '#' || c == ';' || c == '%') #define define_array(T) \ T##_entry *T##_ptr, *T##_array = NULL; \ size_t T##_limit #define xfree(p) do { if (p != NULL) free(p); p = NULL; } while (0) #define strend(s) strchr(s, 0) #define xtalloc XTALLOC #define xretalloc XRETALLOC #define ASCENT_CODE 0 #define CAPHEIGHT_CODE 1 #define DESCENT_CODE 2 #define FONTNAME_CODE 3 #define ITALIC_ANGLE_CODE 4 #define STEMV_CODE 5 #define XHEIGHT_CODE 6 #define FONTBBOX1_CODE 7 #define FONTBBOX2_CODE 8 #define FONTBBOX3_CODE 9 #define FONTBBOX4_CODE 10 #define MAX_KEY_CODE (FONTBBOX1_CODE + 1) #define FONT_KEYS_NUM (FONTBBOX4_CODE + 1) #define F_INCLUDED 0x01 #define F_SUBSETTED 0x02 #define F_TRUETYPE 0x04 #define F_BASEFONT 0x08 #define set_included(fm) ((fm)->type |= F_INCLUDED) #define set_subsetted(fm) ((fm)->type |= F_SUBSETTED) #define set_truetype(fm) ((fm)->type |= F_TRUETYPE) #define set_basefont(fm) ((fm)->type |= F_BASEFONT) #define unset_included(fm) ((fm)->type &= ~F_INCLUDED) #define unset_subsetted(fm) ((fm)->type &= ~F_SUBSETTED) #define unset_truetype(fm) ((fm)->type &= ~F_TRUETYPE) #define unset_basefont(fm) ((fm)->type &= ~F_BASEFONT) #define unset_fontfile(fm) xfree((fm)->ff_name) #define is_included(fm) ((fm)->type & F_INCLUDED) #define is_subsetted(fm) ((fm)->type & F_SUBSETTED) #define is_truetype(fm) ((fm)->type & F_TRUETYPE) #define is_basefont(fm) ((fm)->type & F_BASEFONT) #define no_font_desc(fm) (is_basefont(fm) && !is_included(fm)) #define fm_slant(fm) (fm)->slant #define fm_extend(fm) (fm)->extend #define fm_fontfile(fm) (fm)->ff_name #define is_reencoded(fm) ((fm)->encoding != NULL) #define is_fontfile(fm) (fm_fontfile(fm) != NULL) #define is_t1fontfile(fm) (is_fontfile(fm) && !is_truetype(fm)) #define LINK_TFM 0x01 #define LINK_PS 0x02 #define set_tfmlink(fm) ((fm)->links |= LINK_TFM) #define set_pslink(fm) ((fm)->links |= LINK_PS) #define unset_tfmlink(fm) ((fm)->links &= ~LINK_TFM) #define unset_pslink(fm) ((fm)->links &= ~LINK_PS) #define has_tfmlink(fm) ((fm)->links & LINK_TFM) #define has_pslink(fm) ((fm)->links & LINK_PS) #define set_cur_file_name(s) \ cur_file_name = s; \ packfilename(maketexstring(cur_file_name), getnullstr(), getnullstr()) #endif /* PDFTEXMAC */ dvipsk_TexLive-2009-stripped/scalewidth.c0000644000175000017500000000223311372532227020371 0ustar uwabamiuwabami/* * Code to scale dimensions. Takes two thirty-two bit integers, multiplies * them, divides them by 2^20, and returns the thirty-two bit result. * The first integer, the width in FIXes, can lie between -2^24 and 2^24-1. * The second integer, the scale factor, can lie between 0 and 2^27-1. * * Here, unlike in TeX, we do the arithmetic exactly. Since the error * in the TeX arithmetic is parts per million, and since dvips makes no * layout decisions, this has no effect. (TeX stipulates that any * implementation of *TeX* needs to do the arithmetic exactly as * specified in TeX, but drivers need not.) * * Since this math is special, we put it in its own file. It is the only * place in the program where such accuracy is required. */ #include "dvips.h" /* The copyright notice in that file is included too! */ #include "protos.h" integer scalewidth(register integer a, register integer b) { register integer al, bl ; if (a < 0) return -scalewidth(-a, b) ; if (b < 0) return -scalewidth(a, -b) ; al = a & 32767 ; bl = b & 32767 ; a >>= 15 ; b >>= 15 ; return ( ((al*bl/32768) + a*bl+al*b)/32 + a*b*1024) ; } dvipsk_TexLive-2009-stripped/cyrfonts.map0000644000175000017500000000267011372532227020451 0ustar uwabamiuwabamicmcb10 cmcb10 and include a ChangeLog # entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[456]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) case ${UNAME_MACHINE} in pc98) echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:[3456]*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; EM64T | authenticamd | genuineintel) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-gnu else echo ${UNAME_MACHINE}-unknown-linux-gnueabi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-gnu exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo or32-unknown-linux-gnu exit ;; padre:Linux:*:*) echo sparc-unknown-linux-gnu exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in i386) eval $set_cc_for_build if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then UNAME_PROCESSOR="x86_64" fi fi ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: dvipsk_TexLive-2009-stripped/build-aux/install-sh0000775000175000017500000003253711401164145022001 0ustar uwabamiuwabami#!/bin/sh # install - install a program, script, or datafile scriptversion=2009-04-28.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then trap '(exit $?); exit' 1 2 13 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names starting with `-'. case $src in -*) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # Protect names starting with `-'. case $dst in -*) dst=./$dst;; esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writeable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; -*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test -z "$d" && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook '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: dvipsk_TexLive-2009-stripped/build-aux/README.TL0000664000175000017500000000066611401164145021171 0ustar uwabamiuwabamiCopyright (C) 2009 Peter Breitenlohner You may freely use, modify and/or distribute this file. This directory is the central repository for auxiliary files, mostly shell scripts, needed to build the TeX Live (TL) tree. They are used by all packages `owned' by the TL tree, i.e., maintained as part of TL. The file mkinstalldirs serves as master copy for the files used by the native build systems of some packages. dvipsk_TexLive-2009-stripped/build-aux/mkinstalldirs0000775000175000017500000000672211401164145022600 0ustar uwabamiuwabami#! /bin/sh # mkinstalldirs --- make directory hierarchy scriptversion=2009-04-28.21; # UTC # Original author: Noah Friedman # Created: 1993-05-16 # Public domain. # # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' IFS=" "" $nl" errstatus=0 dirmode= usage="\ Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... Create each directory DIR (with mode MODE, if specified), including all leading file name components. Report bugs to ." # process command line arguments while test $# -gt 0 ; do case $1 in -h | --help | --h*) # -h for help echo "$usage" exit $? ;; -m) # -m PERM arg shift test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } dirmode=$1 shift ;; --version) echo "$0 $scriptversion" exit $? ;; --) # stop option processing shift break ;; -*) # unknown option echo "$usage" 1>&2 exit 1 ;; *) # first non-opt arg break ;; esac done for file do if test -d "$file"; then shift else break fi done case $# in 0) exit 0 ;; esac # Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and # mkdir -p a/c at the same time, both will detect that a is missing, # one will create a, then the other will try to create a and die with # a "File exists" error. This is a problem when calling mkinstalldirs # from a parallel make. We use --version in the probe to restrict # ourselves to GNU mkdir, which is thread-safe. case $dirmode in '') if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then echo "mkdir -p -- $*" exec mkdir -p -- "$@" else # On NextStep and OpenStep, the `mkdir' command does not # recognize any option. It will interpret all options as # directories to create, and then abort because `.' already # exists. test -d ./-p && rmdir ./-p test -d ./--version && rmdir ./--version fi ;; *) if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && test ! -d ./--version; then echo "mkdir -m $dirmode -p -- $*" exec mkdir -m "$dirmode" -p -- "$@" else # Clean up after NextStep and OpenStep mkdir. for d in ./-m ./-p ./--version "./$dirmode"; do test -d $d && rmdir $d done fi ;; esac for file do case $file in /*) pathcomp=/ ;; *) pathcomp= ;; esac oIFS=$IFS IFS=/ set fnord $file shift IFS=$oIFS for d do test "x$d" = x && continue pathcomp=$pathcomp$d case $pathcomp in -*) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr else if test ! -z "$dirmode"; then echo "chmod $dirmode $pathcomp" lasterr= chmod "$dirmode" "$pathcomp" || lasterr=$? if test ! -z "$lasterr"; then errstatus=$lasterr fi fi fi fi pathcomp=$pathcomp/ done done exit $errstatus # 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: dvipsk_TexLive-2009-stripped/build-aux/texinfo.tex0000664000175000017500000107011111401164145022162 0ustar uwabamiuwabami% 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{2008-11-17.21} % % Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, % 2007, 2008 Free Software Foundation, Inc. % % 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 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 % 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 . % % 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.) % % 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). % The texinfo.tex in any given distribution could well be out % of date, so if that's what you're using, please check. % % Send bug reports to bug-texinfo@gnu.org. Please include including a % complete document in each bug report with which we can reproduce the % problem. Patches are, of course, greatly appreciated. % % To process a Texinfo manual with TeX, it's most reliable to use the % texi2dvi shell script that comes with the distribution. For a simple % manual foo.texi, however, you can get away with this: % tex foo.texi % texindex foo.?? % tex foo.texi % tex foo.texi % dvips foo.dvi -o # or whatever; this makes foo.ps. % The extra TeX runs get the cross-reference information correct. % Sometimes one run after texindex suffices, and sometimes you need more % than two; texi2dvi does it as many times as necessary. % % It is possible to adapt texinfo.tex for other languages, to some % extent. You can get the existing language-specific files from the % full Texinfo distribution. % % The GNU Texinfo home page is http://www.gnu.org/software/texinfo. \message{Loading texinfo [version \texinfoversion]:} % If in a .fmt file, print the version number % and turn on active characters that we couldn't do earlier because % they might have appeared in the input file name. \everyjob{\message{[Texinfo version \texinfoversion]}% \catcode`+=\active \catcode`\_=\active} \chardef\other=12 % We never want plain's \outer definition of \+ in Texinfo. % For @tex, we can use \tabalign. \let\+ = \relax % Save some plain tex macros whose names we will redefine. \let\ptexb=\b \let\ptexbullet=\bullet \let\ptexc=\c \let\ptexcomma=\, \let\ptexdot=\. \let\ptexdots=\dots \let\ptexend=\end \let\ptexequiv=\equiv \let\ptexexclam=\! \let\ptexfootnote=\footnote \let\ptexgtr=> \let\ptexhat=^ \let\ptexi=\i \let\ptexindent=\indent \let\ptexinsert=\insert \let\ptexlbrace=\{ \let\ptexless=< \let\ptexnewwrite\newwrite \let\ptexnoindent=\noindent \let\ptexplus=+ \let\ptexrbrace=\} \let\ptexslash=\/ \let\ptexstar=\* \let\ptext=\t \let\ptextop=\top {\catcode`\'=\active \global\let\ptexquoteright'}% Math-mode def from plain.tex. % If this character appears in an error message or help string, it % starts a new line in the output. \newlinechar = `^^J % Use TeX 3.0's \inputlineno to get the line number, for better error % messages, but if we're using an old version of TeX, don't do anything. % \ifx\inputlineno\thisisundefined \let\linenumber = \empty % Pre-3.0. \else \def\linenumber{l.\the\inputlineno:\space} \fi % 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\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\putwordInfo\undefined \gdef\putwordInfo{Info}\fi \ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi \ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi \ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi \ifx\putwordof\undefined \gdef\putwordof{of}\fi \ifx\putwordon\undefined \gdef\putwordon{on}\fi \ifx\putwordpage\undefined \gdef\putwordpage{page}\fi \ifx\putwordsection\undefined \gdef\putwordsection{section}\fi \ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi \ifx\putwordsee\undefined \gdef\putwordsee{see}\fi \ifx\putwordSee\undefined \gdef\putwordSee{See}\fi \ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi \ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi % \ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi \ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi \ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi \ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi \ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi \ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi \ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi \ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi \ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi \ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi \ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi \ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi % \ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi \ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi \ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi \ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi \ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi % 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\colonChar = `\: \chardef\commaChar = `\, \chardef\dashChar = `\- \chardef\dotChar = `\. \chardef\exclamChar= `\! \chardef\lquoteChar= `\` \chardef\questChar = `\? \chardef\rquoteChar= `\' \chardef\semiChar = `\; \chardef\underChar = `\_ % Ignore a token. % \def\gobble#1{} % The following is used inside several \edef's. \def\makecsname#1{\expandafter\noexpand\csname#1\endcsname} % Hyphenation fixes. \hyphenation{ Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script ap-pen-dix bit-map bit-maps data-base data-bases eshell fall-ing half-way long-est man-u-script man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces spell-ing spell-ings stand-alone strong-est time-stamp time-stamps which-ever white-space wide-spread wrap-around } % Margin to add to right of even pages, to left of odd pages. \newdimen\bindingoffset \newdimen\normaloffset \newdimen\pagewidth \newdimen\pageheight % For a final copy, take out the rectangles % 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 }% }% } % Sometimes it is convenient to have everything in the transcript file % and nothing on the terminal. We don't just call \tracingall here, % since that produces some useless output on the terminal. We also make % some effort to order the tracing commands to reduce output in the log % file; cf. trace.sty in LaTeX. % \def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% \def\loggingall{% \tracingstats2 \tracingpages1 \tracinglostchars2 % 2 gives us more in etex \tracingparagraphs1 \tracingoutput1 \tracingmacros2 \tracingrestores1 \showboxbreadth\maxdimen \showboxdepth\maxdimen \ifx\eTeXversion\undefined\else % etex gives us more logging \tracingscantokens1 \tracingifs1 \tracinggroups1 \tracingnesting2 \tracingassigns1 \fi \tracingcommands3 % 3 gives us more in etex \errorcontextlines16 }% % 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. % \def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount \removelastskip\penalty-50\smallskip\fi\fi} \def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount \removelastskip\penalty-100\medskip\fi\fi} \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 \let\cropmarks = \cropmarkstrue % % Dimensions to add cropmarks at corners. % Added by P. A. MacKay, 12 Nov. 1986 % \newdimen\outerhsize \newdimen\outervsize % set by the paper size routines \newdimen\cornerlong \cornerlong=1pc \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}} \newbox\headlinebox \newbox\footlinebox % \onepageout takes a vbox as an argument. Note that \pagecontents % does insertions, but you have to call it yourself. \def\onepageout#1{% \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi % \ifodd\pageno \advance\hoffset by \bindingoffset \else \advance\hoffset by -\bindingoffset\fi % % 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}% % {% % Have to do this stuff outside the \shipout because we want it to % take effect in \write's, yet the group defined by the \vbox ends % before the \shipout runs. % \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. % 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 % \ifcropmarks \vbox to \outervsize\bgroup \hsize = \outerhsize \vskip-\topandbottommargin \vtop to0pt{% \line{\ewtop\hfil\ewtop}% \nointerlineskip \line{% \vbox{\moveleft\cornerthick\nstop}% \hfill \vbox{\moveright\cornerthick\nstop}% }% \vss}% \vskip\topandbottommargin \line\bgroup \hfil % center the page within the outer (page) hsize. \ifodd\pageno\hskip\bindingoffset\fi \vbox\bgroup \fi % \unvbox\headlinebox \pagebody{#1}% \ifdim\ht\footlinebox > 0pt % Only leave this space if the footline is nonempty. % (We lessened \vsize for it in \oddfootingyyy.) % The \baselineskip=24pt in plain's \makefootline has no effect. \vskip 24pt \unvbox\footlinebox \fi % \ifcropmarks \egroup % end of \vbox\bgroup \hfil\egroup % end of (centering) \line\bgroup \vskip\topandbottommargin plus1fill minus1fill \boxmaxdepth = \cornerthick \vbox to0pt{\vss \line{% \vbox{\moveleft\cornerthick\nsbot}% \hfill \vbox{\moveright\cornerthick\nsbot}% }% \nointerlineskip \line{\ewbot\hfil\ewbot}% }% \egroup % \vbox from first cropmarks clause \fi }% end of \shipout\vbox }% end of group with \indexdummies \advancepageno \ifnum\outputpenalty>-20000 \else\dosupereject\fi } \newinsert\margin \dimen\margin=\maxdimen \def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}} {\catcode`\@ =11 \gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi % 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\relax \unvbox#1\relax \ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi \ifr@ggedbottom \kern-\dimen@ \vfil \fi} } % Here are the rules for the cropmarks. Note that they are % offset so that the space between them is truly \outerhsize or \outervsize % (P. A. MacKay, 12 November, 1986) % \def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong} \def\nstop{\vbox {\hrule height\cornerthick depth\cornerlong width\cornerthick}} \def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong} \def\nsbot{\vbox {\hrule height\cornerlong depth\cornerthick width\cornerthick}} % Parse an argument, then pass it to #1. The argument is the rest of % the input line (except we remove a trailing comment). #1 should be a % macro which expects an ordinary undelimited TeX argument. % \def\parsearg{\parseargusing{}} \def\parseargusing#1#2{% \def\argtorun{#2}% \begingroup \obeylines \spaceisspace #1% \parseargline\empty% Insert the \empty token, see \finishparsearg below. } {\obeylines % \gdef\parseargline#1^^M{% \endgroup % End of the group started in \parsearg. \argremovecomment #1\comment\ArgTerm% }% } % First remove any @comment, then any @c comment. \def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} \def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} % Each occurrence of `\^^M' or `\^^M' is replaced by a single space. % % \argremovec might leave us with trailing space, e.g., % @end itemize @c foo % This space token undergoes the same procedure and is eventually removed % by \finishparsearg. % \def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M} \def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M} \def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{% \def\temp{#3}% \ifx\temp\empty % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp: \let\temp\finishparsearg \else \let\temp\argcheckspaces \fi % Put the space token in: \temp#1 #3\ArgTerm } % 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 \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\argtorun\expandafter{#1}} % \parseargdef\foo{...} % is roughly equivalent to % \def\foo{\parsearg\Xfoo} % \def\Xfoo#1{...} % % Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my % favourite TeX trick. --kasal, 16nov03 \def\parseargdef#1{% \expandafter \doparseargdef \csname\string#1\endcsname #1% } \def\doparseargdef#1#2{% \def#2{\parsearg#1}% \def#1##1% } % Several utility definitions with active space: { \obeyspaces \gdef\obeyedspace{ } % Make each space character in the input produce a normal interword % space in the output. Don't allow a line break at this space, as this % is used only in environments like @example, where each line of input % should produce a line of output anyway. % \gdef\sepspaces{\obeyspaces\let =\tie} % If an index command is used in an @example environment, any spaces % therein should become regular spaces in the raw index file, not the % expansion of \tie (\leavevmode \penalty \@M \ ). \gdef\unsepspaces{\let =\space} } \def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} % Define the framework for environments in texinfo.tex. It's used like this: % % \envdef\foo{...} % \def\Efoo{...} % % It's the responsibility of \envdef to insert \begingroup before the % actual body; @end closes the group after calling \Efoo. \envdef also % defines \thisenv, so the current environment is known; @end checks % whether the environment name matches. The \checkenv macro can also be % 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 environments; they don't open a group. (The % implementation of @end takes care not to call \endgroup in this % special case.) % At run-time, environments start with this: \def\startenvironment#1{\begingroup\def\thisenv{#1}} % initialize \let\thisenv\empty % ... but they get defined via ``\envdef\foo{...}'': \long\def\envdef#1#2{\def#1{\startenvironment#1#2}} \def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}} % Check whether we're in the right environment: \def\checkenv#1{% \def\temp{#1}% \ifx\thisenv\temp \else \badenverr \fi } % Environment mismatch, #1 expected: \def\badenverr{% \errhelp = \EMsimple \errmessage{This command can appear only \inenvironment\temp, not \inenvironment\thisenv}% } \def\inenvironment#1{% \ifx#1\empty out of any environment% \else in environment \expandafter\string#1% \fi } % @end foo executes the definition of \Efoo. % But first, it executes a specialized version of \checkenv % \parseargdef\end{% \if 1\csname iscond.#1\endcsname \else % The general wording of \badenverr may not be ideal, but... --kasal, 06nov03 \expandafter\checkenv\csname#1\endcsname \csname E#1\endcsname \endgroup \fi } \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/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\, = \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 \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{\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 % since \penalty is valid in vertical mode, we'd end up putting the % penalty on the vertical list instead of in the new paragraph. {\catcode`@ = 11 % Avoid using \@M directly, because that causes trouble % if the definition is written into an index file. \global\let\tiepenalty = \@M \gdef\tie{\leavevmode\penalty\tiepenalty\ } } % @: forces normal size whitespace following. \def\:{\spacefactor=1000 } % @* forces a line break. \def\*{\hfil\break\hbox{}\ignorespaces} % @/ allows a line break. \let\/=\allowbreak % @. is an end-of-sentence period. \def\.{.\spacefactor=\endofsentencespacefactor\space} % @! is an end-of-sentence bang. \def\!{!\spacefactor=\endofsentencespacefactor\space} % @? is an end-of-sentence query. \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 % produce a whole line of output instead of starting the paragraph. \def\w#1{\leavevmode\hbox{#1}} % @group ... @end group forces ... to be all on one page, by enclosing % it in a TeX vbox. We use \vtop instead of \vbox to construct the box % to keep its height that of a normal line. According to the rules for % \topskip (p.114 of the TeXbook), the glue inserted is % max (\topskip - \ht (first item), 0). If that height is large, % therefore, no glue is inserted, and the space between the headline and % the text is small, which looks bad. % % Another complication is that the group might be very large. This can % cause the glue on the previous page to be unduly stretched, because it % does not have much material. In this case, it's better to add an % explicit \vfill so that the extra space is at the bottom. The % threshold for doing this is if the group is more than \vfilllimit % percent of a page (\vfilllimit can be changed inside of @tex). % \newbox\groupbox \def\vfilllimit{0.7} % \envdef\group{% \ifnum\catcode`\^^M=\active \else \errhelp = \groupinvalidhelp \errmessage{@group invalid in context where filling is enabled}% \fi \startsavinginserts % \setbox\groupbox = \vtop\bgroup % Do @comment since we are called inside an environment such as % @example, where each end-of-line in the input causes an % end-of-line in the output. We don't want the end-of-line after % the `@group' to put extra space in the output. Since @group % should appear on a line by itself (according to the Texinfo % manual), we don't worry about eating any user text. \comment } % % The \vtop produces a box with normal height and large depth; thus, TeX puts % \baselineskip glue before it, and (when the next line of text is done) % \lineskip glue after it. Thus, space below is not quite equal to space % above. But it's pretty close. \def\Egroup{% % To get correct interline space between the last line of the group % and the first line afterwards, we have to propagate \prevdepth. \endgraf % Not \par, as it may have been set to \lisppar. \global\dimen1 = \prevdepth \egroup % End the \vtop. % \dimen0 is the vertical size of the group's box. \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox % \dimen2 is how much space is left on the page (more or less). \dimen2 = \pageheight \advance\dimen2 by -\pagetotal % if the group doesn't fit on the current page, and it's a big big % group, force a page break. \ifdim \dimen0 > \dimen2 \ifdim \pagetotal < \vfilllimit\pageheight \page \fi \fi \box\groupbox \prevdepth = \dimen1 \checkinserts } % % TeX puts in an \escapechar (i.e., `@') at the beginning of the help % message, so this ends up printing `@group can only ...'. % \newhelp\groupinvalidhelp{% group can only be used in environments such as @example,^^J% where each line of input produces a line of output.} % @need space-in-mils % forces a page break if there is not space-in-mils remaining. \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. \par % % If the @need value is less than one line space, it's useless. \dimen0 = #1\mil \dimen2 = \ht\strutbox \advance\dimen2 by \dp\strutbox \ifdim\dimen0 > \dimen2 % % Do a \strut just to make the height of this box be normal, so the % normal leading is inserted relative to the preceding line. % And a page break here is fine. \vtop to #1\mil{\strut\vfil}% % % TeX does not even consider page breaks if a penalty added to the % main vertical list is 10000 or more. But in order to see if the % empty box we just added fits on the page, we must make it consider % page breaks. On the other hand, we don't want to actually break the % page after the empty box. So we use a penalty of 9999. % % There is an extremely small chance that TeX will actually break the % page at this \penalty, if there are no other feasible breakpoints in % sight. (If the user is using lots of big @group commands, which % almost-but-not-quite fill up a page, TeX will have a hard time doing % good page breaking, for example.) However, I could not construct an % example where a page broke at this \penalty; if it happens in a real % document, then we can reconsider our strategy. \penalty9999 % % Back up by the size of the box, whether we did a page break or not. \kern -#1\mil % % Do not allow a page break right after this kern. \nobreak \fi } % @br forces paragraph break (and is undocumented). \let\br = \par % @page forces the start of a new page. % \def\page{\par\vfill\supereject} % @exdent text.... % outputs text on separate line in roman font, starting at standard page margin % This records the amount of indent in the innermost environment. % That's how much \exdent should take out. \newskip\exdentamount % This defn is used inside fill environments such as @defun. \parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break} % This defn is used inside nofill environments such as @example. \parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount \leftline{\hskip\leftskip{\rm#1}}}} % @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'. % \newskip\inmarginspacing \inmarginspacing=1cm \def\strutdepth{\dp\strutbox} % \def\doinmargin#1#2{\strut\vadjust{% \nobreak \kern-\strutdepth \vtop to \strutdepth{% \baselineskip=\strutdepth \vss % if you have multiple lines of stuff to put here, you'll need to % make the vbox yourself of the appropriate size. \ifx#1l% \llap{\ignorespaces #2\hskip\inmarginspacing}% \else \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}% \fi \null }% }} \def\inleftmargin{\doinmargin l} \def\inrightmargin{\doinmargin r} % % @inmargin{TEXT [, RIGHT-TEXT]} % (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; % else use TEXT for both). % \def\inmargin#1{\parseinmargin #1,,\finish} \def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0 > 0pt \def\lefttext{#1}% have both texts \def\righttext{#2}% \else \def\lefttext{#1}% have only one text \def\righttext{#1}% \fi % \ifodd\pageno \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin \else \def\temp{\inleftmargin\lefttext}% \fi \temp } % @include FILE -- \input text of FILE. % \def\include{\parseargusing\filenamecatcodes\includezzz} \def\includezzz#1{% \pushthisfilestack \def\thisfile{#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. \edef\temp{\noexpand\input #1 }% % % This trickery is to read FILE outside of a group, in case it makes % definitions, etc. \expandafter }\temp \popthisfilestack } \def\filenamecatcodes{% \catcode`\\=\other \catcode`~=\other \catcode`^=\other \catcode`_=\other \catcode`|=\other \catcode`<=\other \catcode`>=\other \catcode`+=\other \catcode`-=\other \catcode`\`=\other \catcode`\'=\other } \def\pushthisfilestack{% \expandafter\pushthisfilestackX\popthisfilestack\StackTerm } \def\pushthisfilestackX{% \expandafter\pushthisfilestackY\thisfile\StackTerm } \def\pushthisfilestackY #1\StackTerm #2\StackTerm {% \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}% } \def\popthisfilestack{\errthisfilestackempty} \def\errthisfilestackempty{\errmessage{Internal error: the stack of filenames is empty.}} \def\thisfile{} % @center line % outputs that line, centered. % \parseargdef\center{% \ifhmode \let\next\centerH \else \let\next\centerV \fi \next{\hfil \ignorespaces#1\unskip \hfil}% } \def\centerH#1{% {% \hfil\break \advance\hsize by -\leftskip \advance\hsize by -\rightskip \line{#1}% \break }% } \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 % We'll use ems for NCHARS, close enough. % NCHARS can also be the word `asis' or `none'. % We cannot feasibly implement @paragraphindent asis, though. % \def\asisword{asis} % no translation, these are keywords \def\noneword{none} % \parseargdef\paragraphindent{% \def\temp{#1}% \ifx\temp\asisword \else \ifx\temp\noneword \defaultparindent = 0pt \else \defaultparindent = #1em \fi \fi \parindent = \defaultparindent } % @exampleindent NCHARS % We'll use ems for NCHARS like @paragraphindent. % It seems @exampleindent asis isn't necessary, but % I preserve it to make it similar to @paragraphindent. \parseargdef\exampleindent{% \def\temp{#1}% \ifx\temp\asisword \else \ifx\temp\noneword \lispnarrowing = 0pt \else \lispnarrowing = #1em \fi \fi } % @firstparagraphindent WORD % If WORD is `none', then suppress indentation of the first paragraph % after a section heading. If WORD is `insert', then do indent at such % paragraphs. % % The paragraph indentation is suppressed or not by calling % \suppressfirstparagraphindent, which the sectioning commands do. % We switch the definition of this back and forth according to WORD. % By default, we suppress indentation. % \def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent} \def\insertword{insert} % \parseargdef\firstparagraphindent{% \def\temp{#1}% \ifx\temp\noneword \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent \else\ifx\temp\insertword \let\suppressfirstparagraphindent = \relax \else \errhelp = \EMsimple \errmessage{Unknown @firstparagraphindent option `\temp'}% \fi\fi } % Here is how we actually suppress indentation. Redefine \everypar to % \kern backwards by \parindent, and then reset itself to empty. % % We also make \indent itself not actually do anything until the next % paragraph. % \gdef\dosuppressfirstparagraphindent{% \gdef\indent{% \restorefirstparagraphindent \indent }% \gdef\noindent{% \restorefirstparagraphindent \noindent }% \global\everypar = {% \kern -\parindent \restorefirstparagraphindent }% } \gdef\restorefirstparagraphindent{% \global \let \indent = \ptexindent \global \let \noindent = \ptexnoindent \global \everypar = {}% } % @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 \ 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 % 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 } } % 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 } % @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 % If working on a large document in chapters, it is convenient to % be able to disable indexing, cross-referencing, and contents, for test runs. % This is done with @novalidate (before @setfilename). % \newif\iflinks \linkstrue % by default we want the aux files. \let\novalidate = \linksfalse % @setfilename is done at the beginning of every texinfo file. % So open here the files we need to have open while reading the input. % This makes it possible to make a .fmt file for texinfo. \def\setfilename{% \fixbackslash % Turn off hack to swallow `\input texinfo'. \iflinks \tryauxfile % Open the new aux file. TeX will close it automatically at exit. \immediate\openout\auxfile=\jobname.aux \fi % \openindices needs to do some work in any case. \openindices \let\setfilename=\comment % Ignore extra @setfilename cmds. % % If texinfo.cnf is present on the system, read it. % Useful for site-wide @afourpaper, etc. \openin 1 texinfo.cnf \ifeof 1 \else \input texinfo.cnf \fi \closein 1 % \comment % Ignore the actual filename. } % Called from \setfilename. % \def\openindices{% \newindex{cp}% \newcodeindex{fn}% \newcodeindex{vr}% \newcodeindex{tp}% \newcodeindex{ky}% \newcodeindex{pg}% } % @bye. \outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} \message{pdf,} % adobe `portable' document format \newcount\tempnum \newcount\lnkcount \newtoks\filename \newcount\filenamelength \newcount\pgn \newtoks\toksA \newtoks\toksB \newtoks\toksC \newtoks\toksD \newbox\boxA \newcount\countA \newif\ifpdf \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 \else \ifx\pdfoutput\relax \else \ifcase\pdfoutput \else \pdftrue \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. % 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). % double active backslashes. % {\catcode`\@=0 \catcode`\\=\active @gdef@activebackslashdouble{% @catcode`@\=@active @let\=@doublebackslash} } % To handle parens, we must adopt a different approach, since parens are % not active characters. hyperref.dtx (which has the same problem as % us) handles it with this amazing macro to replace tokens, with minor % changes for Texinfo. It is included here under the GPL by permission % from the author, Heiko Oberdiek. % % #1 is the tokens to replace. % #2 is the replacement. % #3 is the control sequence with the string. % \def\HyPsdSubst#1#2#3{% \def\HyPsdReplace##1#1##2\END{% ##1% \ifx\\##2\\% \else #2% \HyReturnAfterFi{% \HyPsdReplace##2\END }% \fi }% \xdef#3{\expandafter\HyPsdReplace#3#1\END}% } \long\def\HyReturnAfterFi#1\fi{\fi#1} % #1 is a control sequence in which to do the replacements. \def\backslashparens#1{% \xdef#1{#1}% redefine it as its expansion; the definition is simply % \lastnode when called from \setref -> \pdfmkdest. \HyPsdSubst{(}{\realbackslash(}{#1}% \HyPsdSubst{)}{\realbackslash)}{#1}% } \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 % % Color manipulation macros based on pdfcolor.tex. \def\cmykDarkRed{0.28 1 1 0.35} \def\cmykBlack{0 0 0 1} % \def\pdfsetcolor#1{\pdfliteral{#1 k}} % 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{\cmykBlack} \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}\setbox0 = \hbox{\ignorespaces #2}% \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% % % pdftex (and the PDF format) support .png, .jpg, .pdf (among % others). Let's try in that order. \let\pdfimgext=\empty \begingroup \openin 1 #1.png \ifeof 1 \openin 1 #1.jpg \ifeof 1 \openin 1 #1.jpeg \ifeof 1 \openin 1 #1.JPG \ifeof 1 \openin 1 #1.pdf \ifeof 1 \openin 1 #1.PDF \ifeof 1 \errhelp = \nopdfimagehelp \errmessage{Could not find image file #1 for pdf}% \else \gdef\pdfimgext{PDF}% \fi \else \gdef\pdfimgext{pdf}% \fi \else \gdef\pdfimgext{JPG}% \fi \else \gdef\pdfimgext{jpeg}% \fi \else \gdef\pdfimgext{jpg}% \fi \else \gdef\pdfimgext{png}% \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 \ifdim \wd0 >0pt width \imagewidth \fi \ifdim \wd2 >0pt height \imageheight \fi \ifnum\pdftexversion<13 #1.\pdfimgext \else {#1.\pdfimgext}% \fi \ifnum\pdftexversion < 14 \else \pdfrefximage \pdflastximage \fi} % \def\pdfmkdest#1{{% % 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 \activebackslashdouble \makevalueexpandable \def\pdfdestname{#1}% \backslashparens\pdfdestname \safewhatsit{\pdfdest name{\pdfdestname} xyz}% }} % % used to mark target names; must be expandable. \def\pdfmkpgn#1{#1} % % by default, use a color that is dark enough to print on paper as % nearly black, but still distinguishable for online viewing. \def\urlcolor{\cmykDarkRed} \def\linkcolor{\cmykDarkRed} \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% \else \csname#1\endcsname \fi} \def\advancenumber#1{\tempnum=\expnumber{#1}\relax \advance\tempnum by 1 \expandafter\xdef\csname#1\endcsname{\the\tempnum}} % % #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 worth the trouble, since most documents are normally structured. \def\pdfoutlinedest{#3}% \ifx\pdfoutlinedest\empty \def\pdfoutlinedest{#4}% \else % Doubled backslashes in the name. {\activebackslashdouble \xdef\pdfoutlinedest{#3}% \backslashparens\pdfoutlinedest}% \fi % % Also double the backslashes in the display string. {\activebackslashdouble \xdef\pdfoutlinetext{#1}% \backslashparens\pdfoutlinetext}% % \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\numchapentry##1##2##3##4{% \def\thischapnum{##2}% \def\thissecnum{0}% \def\thissubsecnum{0}% }% \def\numsecentry##1##2##3##4{% \advancenumber{chap\thischapnum}% \def\thissecnum{##2}% \def\thissubsecnum{0}% }% \def\numsubsecentry##1##2##3##4{% \advancenumber{sec\thissecnum}% \def\thissubsecnum{##2}% }% \def\numsubsubsecentry##1##2##3##4{% \advancenumber{subsec\thissubsecnum}% }% \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. \def\appentry{\numchapentry}% \def\appsecentry{\numsecentry}% \def\appsubsecentry{\numsubsecentry}% \def\appsubsubsecentry{\numsubsubsecentry}% \def\unnchapentry{\numchapentry}% \def\unnsecentry{\numsecentry}% \def\unnsubsecentry{\numsubsecentry}% \def\unnsubsubsecentry{\numsubsubsecentry}% \readdatafile{toc}% % % Read toc second time, this time actually producing the outlines. % The `-' means take the \expnumber as the absolute number of % subentries, which we calculated on our first read of the .toc above. % % We use the node names as the destinations. \def\numchapentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}% \def\numsecentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}% \def\numsubsecentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}% \def\numsubsubsecentry##1##2##3##4{% count is always zero \dopdfoutline{##1}{}{##3}{##4}}% % % PDF outlines are displayed using system fonts, instead of % document fonts. Therefore we cannot use special characters, % since the encoding is unknown. For example, the eogonek from % 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. \indexnofonts \setupdatafile \catcode`\\=\active \otherbackslash \input \tocreadfilename \endgroup } % \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 \fi \nextsp} \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax} \ifnum\pdftexversion < 14 \let \startlink \pdfannotlink \else \let \startlink \pdfstartlink \fi % make a live url in pdf output. \def\pdfurl#1{% \begingroup % 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\setcolor{\urlcolor}% \startlink attr{/Border [0 0 0]}% user{/Subtype /Link /A << /S /URI /URI (#1) >>}% \endgroup} \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} \def\maketoks{% \expandafter\poptoks\the\toksA|ENDTOKS|\relax \ifx\first0\adn0 \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 \else \ifnum0=\countA\else\makelink\fi \ifx\first.\let\next=\done\else \let\next=\maketoks \addtokens{\toksB}{\the\toksD} \ifx\first,\addtokens{\toksB}{\space}\fi \fi \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \next} \def\makelink{\addtokens{\toksB}% {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} \def\pdflink#1{% \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}} \setcolor{\linkcolor}#1\endlink} \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} \else \let\pdfmkdest = \gobble \let\pdfurl = \gobble \let\endlink = \relax \let\setcolor = \gobble \let\pdfsetcolor = \gobble \let\pdfmakeoutlines = \relax \fi % \ifx\pdfoutput \message{fonts,} % Change the current font style to #1, remembering it in \curfontstyle. % For now, we do not accumulate font styles: @b{@i{foo}} prints foo in % italics, not bold italics. % \def\setfontstyle#1{% \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd. \csname ten#1\endcsname % change the current font } % Select #1 fonts with the current style. % \def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname} \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\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 \def\sf{\fam=\sffam \setfontstyle{sf}} \let\li = \sf % Sometimes we call it \li, not \sf. % 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 % used as factors; they just match (closely enough) what Knuth defined. % \def\lineskipfactor{.08333} \def\strutheightpercent{.70833} \def\strutdepthpercent {.29167} % % can get a sort of poor man's double spacing by redefining this. \def\baselinefactor{1} % \def\setleading#1{% \dimen0 = #1\relax \normalbaselineskip = \baselinefactor\dimen0 \normallineskip = \lineskipfactor\normalbaselineskip \normalbaselines \setbox\strutbox =\hbox{% \vrule width0pt height\strutheightpercent\baselineskip depth \strutdepthpercent \baselineskip }% } % 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\undefined \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 #2, adding on the % specified font prefix (normally `cm'). % #3 is the font's design size, #4 is a scale factor, #5 is the CMap % encoding (currently only OT1, OT1IT and OT1TT are allowed, pass % empty to omit). \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 % emacs-page 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 \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\bfshape{b} \def\bxshape{bx} \def\ttshape{tt} \def\ttbshape{tt} \def\ttslshape{sltt} \def\itshape{ti} \def\itbshape{bxti} \def\slshape{sl} \def\slbshape{bxsl} \def\sfshape{ss} \def\sfbshape{ss} \def\scshape{csc} \def\scbshape{csc} % Definitions for a main text size of 11pt. This is the default in % Texinfo. % \def\definetextfontsizexi{% % Text fonts (11.2pt, magstep1). \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}{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). \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 (and unnumbered) fonts (17.28pt). \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}{OT1} \font\chapi=cmmi12 scaled \magstep2 \font\chapsy=cmsy10 scaled \magstep3 \def\chapecsize{1728} % Section fonts (14.4pt). \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}{OT1} \font\seci=cmmi12 scaled \magstep1 \font\secsy=cmsy10 scaled \magstep2 \def\sececsize{1440} % Subsection fonts (13.15pt). \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}{OT1} \font\sseci=cmmi12 scaled \magstephalf \font\ssecsy=cmsy10 scaled 1315 \def\ssececsize{1200} % Reduced fonts for @acro in text (10pt). \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} % reset the current fonts \textfonts \rm } % end of 11pt text font size definitions % 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} % reduce space between paragraphs \divide\parskip by 2 % reset the current fonts \textfonts \rm } % end of 10pt text font size definitions % We provide the user-level command % @fonttextsize 10 % (or 11) to redefine the text font size. pt is assumed. % \def\xword{10} \def\xiword{11} % \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 % texinfo doesn't allow for producing subscripts and superscripts except % in the main text, we don't bother to reset \scriptfont and % \scriptscriptfont (which would also require loading a lot more fonts). % \def\resetmathfonts{% \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf \textfont\ttfam=\tentt \textfont\sffam=\tensf } % The font-changing commands redefine the meanings of \tenSTYLE, instead % of just \STYLE. We do this because \STYLE needs to also set the % current \fam for math mode. Our \STYLE (e.g., \rm) commands hardwire % \tenSTYLE to set the current font. % % Each font-changing command also sets the names \lsize (one size lower) % and \lllsize (three sizes lower). These relative commands are used in % the LaTeX logo and acronyms. % % This all needs generalizing, badly. % \def\textfonts{% \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl \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{% \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl \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\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 \def\curfontsize{chap}% \def\lsize{sec}\def\lllsize{text}% \resetmathfonts \setleading{19pt}} \def\secfonts{% \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl \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{% \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl \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 \def\reducedfonts{% \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl \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{% \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl \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{% \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl \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}} % Set the fonts to use with the @small... environments. \let\smallexamplefonts = \smallfonts % About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample % can fit this many characters: % 8.5x11=86 smallbook=72 a4=90 a5=69 % If we use \scriptfonts (8pt), then we can fit this many characters: % 8.5x11=90+ smallbook=80 a4=90+ a5=77 % For me, subjectively, the few extra characters that fit aren't worth % the additional smallness of 8pt. So I'm making the default 9pt. % % 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. % \definetextfontsizexi % Define these so they can be easily changed for other fonts. \def\angleleft{$\langle$} \def\angleright{$\rangle$} % Count depth in font-changes, for error checks \newcount\fontdepth \fontdepth=0 % 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} %% 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 % ttsl for book titles, do we? \def\cite#1{{\sl #1}\futurelet\next\smartitalicx} \let\i=\smartitalic \let\slanted=\smartslanted \def\var#1{{\setupmarkupstyle{var}\smartslanted{#1}}} \let\dfn=\smartslanted \let\emph=\smartitalic % @b, explicit bold. \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. % \def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation} \def\restorehyphenation{\hyphenchar\font = `- } % Set sfcode to normal for the chars that usually have another value. % Can't use plain's \frenchspacing because it uses the `\x notation, and % sometimes \x has an active definition that messes things up. % \catcode`@=11 \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 \def\t#1{% {\tt \rawbackslash \plainfrenchspacing #1}% \null } \def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}} \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}}}} \def\key #1{{\setupmarkupstyle{key}\nohyphenation \uppercase{#1}}\null} % 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 % @code is a modification of @t, % which makes spaces the same size as normal in the surrounding text. \def\tclose#1{% {% % Change normal interword space to be same as for the current font. \spaceskip = \fontdimen2\font % % Switch to typewriter. \tt % % But `\ ' produces the large typewriter interword space. \def\ {{\spaceskip = 0pt{} }}% % % Turn off hyphenation. \nohyphenation % \rawbackslash \plainfrenchspacing #1% }% \null } % 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 \global\let'=\rq \global\let`=\lq % default definitions % \global\def\code{\begingroup \setupmarkupstyle{code}% % The following should really be moved into \setupmarkupstyle handlers. \catcode\dashChar=\active \catcode\underChar=\active \ifallowcodebreaks \let-\codedash \let_\codeunder \else \let-\realdash \let_\realunder \fi \codex } } \def\realdash{-} \def\codedash{-\discretionary{}{}{}} \def\codeunder{% % this is all so @math{@code{var_name}+1} can work. In math mode, _ % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.) % will therefore expand the active definition of _, which is us % (inside @code that is), therefore an endless loop. \ifusingtt{\ifmmode \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_. \else\normalunderscore \fi \discretionary{}{}{}}% {\_}% } \def\codex #1{\tclose{#1}\endgroup} % An additional complication: the above will allow breaks after, e.g., % each of the four underscores in __typeof__. This is undesirable in % some manuals, especially if they don't have long identifiers in % general. @allowcodebreaks provides a way to control this. % \newif\ifallowcodebreaks \allowcodebreakstrue \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 @allowcodebreaks option `\txiarg'}% \fi\fi } % @kbd is like @code, except that if the argument is just one @key command, % then @kbd has no effect. % @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 option `\txiarg'}% \fi\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\setupmarkupstyle{kbd}\look}}\fi \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi} % For @indicateurl, @env, @command quotes seem unnecessary, so use \code. \let\indicateurl=\code \let\env=\code \let\command=\code % @clicksequence{File @click{} Open ...} \def\clicksequence#1{\begingroup #1\endgroup} % @clickstyle @arrow (by default) \parseargdef\clickstyle{\def\click{#1}} \def\click{\arrow} % @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 \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\ (\code{#1})% DVI: 2nd arg given, show both it and url \fi \else \code{#1}% only url given, so show it \fi \fi \endlink \endgroup} % @url synonym for @uref, since that's how everyone uses it. % \let\url=\uref % rms does not like angle brackets --karl, 17may97. % So now @email is just like @uref, unless we are pdf. % %\def\email#1{\angleleft{\tt #1}\angleright} \ifpdf \def\email#1{\doemail#1,,\finish} \def\doemail#1,#2,#3\finish{\begingroup \unsepspaces \pdfurl{mailto:#1}% \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi \endlink \endgroup} \else \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 } % 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{{\setupmarkupstyle{kbd}\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}% \def\temp{#2}% \ifx\temp\empty \else \space ({\unsepspaces \ignorespaces \temp \unskip})% \fi } % @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{% {\plainfrenchspacing #1}% \def\temp{#2}% \ifx\temp\empty \else \space ({\unsepspaces \ignorespaces \temp \unskip})% \fi } % @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 } % Hacks for glyphs from the EC fonts similar to \euro. We don't % use \let for the aliases, because sometimes we redefine the original % macro, and the alias should reflect the redefinition. \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} % \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}% \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 \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. % \def\registeredsymbol{% $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}% \hfil\crcr\Orb}}% }$% } % @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 \def\Orb{\mathhexbox20D} \fi % Quotes. \chardef\quotedblleft="5C \chardef\quotedblright=`\" \chardef\quoteleft=`\` \chardef\quoteright=`\' \message{page headings,} \newskip\titlepagetopglue \titlepagetopglue = 1.5in \newskip\titlepagebottomglue \titlepagebottomglue = 2pc % First the title page. Must do @settitle before @titlepage. \newif\ifseenauthor \newif\iffinishedtitlepage % Do an implicit @contents or @shortcontents after @end titlepage if the % user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage. % \newif\ifsetcontentsaftertitlepage \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue \newif\ifsetshortcontentsaftertitlepage \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue \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. \begingroup \parindent=0pt \textfonts % Leave some space at the very top of the page. \vglue\titlepagetopglue % No rule at page bottom unless we print one at the top with @title. \finishedtitlepagetrue % % Most title ``pages'' are actually two pages long, with space % at the top of the second. We don't want the ragged left on the second. \let\oldpage = \page \def\page{% \iffinishedtitlepage\else \finishtitlepage \fi \let\page = \oldpage \page \null }% } \def\Etitlepage{% \iffinishedtitlepage\else \finishtitlepage \fi % It is important to do the page break before ending the group, % because the headline and footline are only empty inside the group. % If we use the new definition of \page, we always get a blank page % after the title page, which we certainly don't want. \oldpage \endgroup % % Need this before the \...aftertitlepage checks so that if they are % in effect the toc pages will come out with page numbers. \HEADINGSon % % If they want short, they certainly want long too. \ifsetshortcontentsaftertitlepage \shortcontents \contents \global\let\shortcontents = \relax \global\let\contents = \relax \fi % \ifsetcontentsaftertitlepage \contents \global\let\contents = \relax \global\let\shortcontents = \relax \fi } \def\finishtitlepage{% \vskip4pt \hrule height 2pt width \hsize \vskip\titlepagebottomglue \finishedtitlepagetrue } %%% Macros to be used within @titlepage: \let\subtitlerm=\tenrm \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} \parseargdef\title{% \checkenv\titlepage \leftline{\titlefonts\rmisbold #1} % print a rule at the page bottom also. \finishedtitlepagefalse \vskip4pt \hrule height 4pt width \hsize \vskip4pt } \parseargdef\subtitle{% \checkenv\titlepage {\subtitlefont \rightline{#1}}% } % @author should come last, but may come many times. % It can also be used inside @quotation. % \parseargdef\author{% \def\temp{\quotation}% \ifx\thisenv\temp \def\quotationauthor{#1}% printed in \Equotation. \else \checkenv\titlepage \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi {\secfonts\rmisbold \leftline{#1}}% \fi } %%% Set up page headings and footings. \let\thispage=\folio \newtoks\evenheadline % headline on even pages \newtoks\oddheadline % headline on odd pages \newtoks\evenfootline % footline on even pages \newtoks\oddfootline % footline on odd pages % Now make TeX use those variables \headline={{\textfonts\rm \ifodd\pageno \the\oddheadline \else \the\evenheadline \fi}} \footline={{\textfonts\rm \ifodd\pageno \the\oddfootline \else \the\evenfootline \fi}\HEADINGShook} \let\HEADINGShook=\relax % Commands to set those variables. % For example, this is what @headings on does % @evenheading @thistitle|@thispage|@thischapter % @oddheading @thischapter|@thispage|@thistitle % @evenfooting @thisfile|| % @oddfooting ||@thisfile \def\evenheading{\parsearg\evenheadingxxx} \def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish} \def\evenheadingyyy #1\|#2\|#3\|#4\finish{% \global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} \def\oddheading{\parsearg\oddheadingxxx} \def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish} \def\oddheadingyyy #1\|#2\|#3\|#4\finish{% \global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} \parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}% \def\evenfooting{\parsearg\evenfootingxxx} \def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish} \def\evenfootingyyy #1\|#2\|#3\|#4\finish{% \global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} \def\oddfooting{\parsearg\oddfootingxxx} \def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish} \def\oddfootingyyy #1\|#2\|#3\|#4\finish{% \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% % % Leave some space for the footline. Hopefully ok to assume % @evenfooting will not be used by itself. \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. % @headings off turns them off. % @headings on same as @headings double, retained for compatibility. % @headings after turns on double-sided headings after this page. % @headings doubleafter turns on double-sided headings after this page. % @headings singleafter turns on single-sided headings after this page. % By default, they are off at the start of a document, % and turned `on' after @end titlepage. \def\headings #1 {\csname HEADINGS#1\endcsname} \def\HEADINGSoff{% \global\evenheadline={\hfil} \global\evenfootline={\hfil} \global\oddheadline={\hfil} \global\oddfootline={\hfil}} \HEADINGSoff % 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 % title on inside top of left hand pages, and page numbers on outside top % edge of all pages. \def\HEADINGSdouble{% \global\pageno=1 \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chapoddpage } \let\contentsalignmacro = \chappager % For single-sided printing, chapter title goes across top left of page, % page number on top right. \def\HEADINGSsingle{% \global\pageno=1 \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\thischapter\hfil\folio}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chappager } \def\HEADINGSon{\HEADINGSdouble} \def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} \let\HEADINGSdoubleafter=\HEADINGSafter \def\HEADINGSdoublex{% \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chapoddpage } \def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} \def\HEADINGSsinglex{% \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\thischapter\hfil\folio}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chappager } % Subroutines used in generating headings % 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 \def\today{% \number\day\space \ifcase\month \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec \fi \space\number\year} \fi % @settitle line... specifies the title of the document, for headings. % It generates no output of its own. \def\thistitle{\putwordNoTitle} \def\settitle{\parsearg{\gdef\thistitle}} \message{tables,} % Tables -- @table, @ftable, @vtable, @item(x). % default indentation of table text \newdimen\tableindent \tableindent=.8in % default indentation of @itemize and @enumerate text \newdimen\itemindent \itemindent=.3in % margin between end of table item and start of table text. \newdimen\itemmargin \itemmargin=.1in % used internally for \itemindent minus \itemmargin \newdimen\itemmax % Note @table, @ftable, and @vtable define @item, @itemx, etc., with % these defs. % They also define \itemindex % to index the item name in whatever manner is desired (perhaps none). \newif\ifitemxneedsnegativevskip \def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} \def\internalBitem{\smallbreak \parsearg\itemzzz} \def\internalBitemx{\itemxpar \parsearg\itemzzz} \def\itemzzz #1{\begingroup % \advance\hsize by -\rightskip \advance\hsize by -\tableindent \setbox0=\hbox{\itemindicate{#1}}% \itemindex{#1}% \nobreak % This prevents a break before @itemx. % % If the item text does not fit in the space we have, put it on a line % by itself, and do not allow a page break either before or after that % line. We do not start a paragraph here because then if the next % command is, e.g., @kindex, the whatsit would get put into the % horizontal list on a line by itself, resulting in extra blank space. \ifdim \wd0>\itemmax % % Make this a paragraph so we get the \parskip glue and wrapping, % but leave it ragged-right. \begingroup \advance\leftskip by-\tableindent \advance\hsize by\tableindent \advance\rightskip by0pt plus1fil \leavevmode\unhbox0\par \endgroup % % We're going to be starting a paragraph, but we don't want the % \parskip glue -- logically it's part of the @item we just started. \nobreak \vskip-\parskip % % Stop a page break at the \parskip glue coming up. However, if % what follows is an environment such as @example, there will be no % \parskip glue; then the negative vskip we just inserted would % 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 \else % The item text fits into the space. Start a paragraph, so that the % following text (if any) will end up on the same line. \noindent % Do this with kerns and \unhbox so that if there is a footnote in % the item text, it can migrate to the main vertical list and % eventually be printed. \nobreak\kern-\tableindent \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0 \unhbox0 \nobreak\kern\dimen0 \endgroup \itemxneedsnegativevskiptrue \fi } \def\item{\errmessage{@item while not in a list environment}} \def\itemx{\errmessage{@itemx while not in a list environment}} % @table, @ftable, @vtable. \envdef\table{% \let\itemindex\gobble \tablecheck{table}% } \envdef\ftable{% \def\itemindex ##1{\doind {fn}{\code{##1}}}% \tablecheck{ftable}% } \envdef\vtable{% \def\itemindex ##1{\doind {vr}{\code{##1}}}% \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}% \parsearg\tabley } \def\tabley#1{% {% \makevalueexpandable \edef\temp{\noexpand\tablez #1\space\space\space}% \expandafter }\temp \endtablez } \def\tablez #1 #2 #3 #4\endtablez{% \aboveenvbreak \ifnum 0#1>0 \advance \leftskip by #1\mil \fi \ifnum 0#2>0 \tableindent=#2\mil \fi \ifnum 0#3>0 \advance \rightskip by #3\mil \fi \itemmax=\tableindent \advance \itemmax by -\itemmargin \advance \leftskip by \tableindent \exdentamount=\tableindent \parindent = 0pt \parskip = \smallskipamount \ifdim \parskip=0pt \parskip=2pt \fi \let\item = \internalBitem \let\itemx = \internalBitemx } \def\Etable{\endgraf\afterenvbreak} \let\Eftable\Etable \let\Evtable\Etable \let\Eitemize\Etable \let\Eenumerate\Etable % This is the counter used by @enumerate, which is really @itemize \newcount \itemno \envdef\itemize{\parsearg\doitemize} \def\doitemize#1{% \aboveenvbreak \itemmax=\itemindent \advance\itemmax by -\itemmargin \advance\leftskip by \itemindent \exdentamount=\itemindent \parindent=0pt \parskip=\smallskipamount \ifdim\parskip=0pt \parskip=2pt \fi \def\itemcontents{#1}% % @itemize with no arg is equivalent to @itemize @bullet. \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi \let\item=\itemizeitem } % Definition of @item while inside @itemize and @enumerate. % \def\itemizeitem{% \advance\itemno by 1 % for enumerations {\let\par=\endgraf \smallbreak}% reasonable place to break {% % If the document has an @itemize directly after a section title, a % \nobreak will be last on the list, and \sectionheading will have % done a \vskip-\parskip. In that case, we don't want to zero % parskip, or the item text will crash with the heading. On the % other hand, when there is normal text preceding the item (as there % usually is), we do want to zero parskip, or there would be too much % space. In that case, we won't have a \nobreak before. At least % that's the theory. \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 } % \splitoff TOKENS\endmark defines \first to be the first token in % TOKENS, and \rest to be the remainder. % \def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}% % Allow an optional argument of an uppercase letter, lowercase letter, % or number, to specify the first label in the enumerated list. No % argument is the same as `1'. % \envparseargdef\enumerate{\enumeratey #1 \endenumeratey} \def\enumeratey #1 #2\endenumeratey{% % If we were given no argument, pretend we were given `1'. \def\thearg{#1}% \ifx\thearg\empty \def\thearg{1}\fi % % Detect if the argument is a single token. If so, it might be a % letter. Otherwise, the only valid thing it can be is a number. % (We will always have one token, because of the test we just made. % This is a good thing, since \splitoff doesn't work given nothing at % all -- the first parameter is undelimited.) \expandafter\splitoff\thearg\endmark \ifx\rest\empty % Only one token in the argument. It could still be anything. % A ``lowercase letter'' is one whose \lccode is nonzero. % An ``uppercase letter'' is one whose \lccode is both nonzero, and % not equal to itself. % Otherwise, we assume it's a number. % % We need the \relax at the end of the \ifnum lines to stop TeX from % continuing to look for a . % \ifnum\lccode\expandafter`\thearg=0\relax \numericenumerate % a number (we hope) \else % It's a letter. \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax \lowercaseenumerate % lowercase letter \else \uppercaseenumerate % uppercase letter \fi \fi \else % Multiple tokens in the argument. We hope it's a number. \numericenumerate \fi } % An @enumerate whose labels are integers. The starting integer is % given in \thearg. % \def\numericenumerate{% \itemno = \thearg \startenumeration{\the\itemno}% } % The starting (lowercase) letter is in \thearg. \def\lowercaseenumerate{% \itemno = \expandafter`\thearg \startenumeration{% % Be sure we're not beyond the end of the alphabet. \ifnum\itemno=0 \errmessage{No more lowercase letters in @enumerate; get a bigger alphabet}% \fi \char\lccode\itemno }% } % The starting (uppercase) letter is in \thearg. \def\uppercaseenumerate{% \itemno = \expandafter`\thearg \startenumeration{% % Be sure we're not beyond the end of the alphabet. \ifnum\itemno=0 \errmessage{No more uppercase letters in @enumerate; get a bigger alphabet} \fi \char\uccode\itemno }% } % Call \doitemize, adding a period to the first argument and supplying the % common last two arguments. Also subtract one from the initial value in % \itemno, since @item increments \itemno. % \def\startenumeration#1{% \advance\itemno by -1 \doitemize{#1.}\flushcr } % @alphaenumerate and @capsenumerate are abbreviations for giving an arg % to @enumerate. % \def\alphaenumerate{\enumerate{a}} \def\capsenumerate{\enumerate{A}} \def\Ealphaenumerate{\Eenumerate} \def\Ecapsenumerate{\Eenumerate} % @multitable macros % Amy Hendrickson, 8/18/94, 3/6/96 % % @multitable ... @end multitable will make as many columns as desired. % Contents of each column will wrap at width given in preamble. Width % can be specified either with sample text given in a template line, % or in percent of \hsize, the current width of text on page. % Table can continue over pages but will only break between lines. % To make preamble: % % Either define widths of columns in terms of percent of \hsize: % @multitable @columnfractions .25 .3 .45 % @item ... % % Numbers following @columnfractions are the percent of the total % current hsize to be used for each column. You may use as many % columns as desired. % Or use a template: % @multitable {Column 1 template} {Column 2 template} {Column 3 template} % @item ... % using the widest term desired in each column. % Each new table line starts with @item, each subsequent new column % starts with @tab. Empty columns may be produced by supplying @tab's % with nothing between them for as many times as empty columns are needed, % ie, @tab@tab@tab will produce two empty columns. % @item, @tab do not need to be on their own lines, but it will not hurt % if they are. % Sample multitable: % @multitable {Column 1 template} {Column 2 template} {Column 3 template} % @item first col stuff @tab second col stuff @tab third col % @item % first col stuff % @tab % second col stuff % @tab % third col % @item first col stuff @tab second col stuff % @tab Many paragraphs of text may be used in any column. % % They will wrap at the width determined by the template. % @item@tab@tab This will be in third column. % @end multitable % Default dimensions may be reset by user. % @multitableparskip is vertical space between paragraphs in table. % @multitableparindent is paragraph indent in table. % @multitablecolmargin is horizontal space to be left between columns. % @multitablelinespace is space to leave between table items, baseline % to baseline. % 0pt means it depends on current normal line spacing. % \newskip\multitableparskip \newskip\multitableparindent \newdimen\multitablecolspace \newskip\multitablelinespace \multitableparskip=0pt \multitableparindent=6pt \multitablecolspace=12pt \multitablelinespace=0pt % Macros used to set up halign preamble: % \let\endsetuptable\relax \def\xendsetuptable{\endsetuptable} \let\columnfractions\relax \def\xcolumnfractions{\columnfractions} \newif\ifsetpercent % #1 is the @columnfraction, usually a decimal number like .5, but might % be just 1. We just use it, whatever it is. % \def\pickupwholefraction#1 {% \global\advance\colcount by 1 \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}% \setuptable } \newcount\colcount \def\setuptable#1{% \def\firstarg{#1}% \ifx\firstarg\xendsetuptable \let\go = \relax \else \ifx\firstarg\xcolumnfractions \global\setpercenttrue \else \ifsetpercent \let\go\pickupwholefraction \else \global\advance\colcount by 1 \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a % separator; typically that is always in the input, anyway. \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% \fi \fi \ifx\go\pickupwholefraction % Put the argument back for the \pickupwholefraction call, so % we'll always have a period there to be parsed. \def\go{\pickupwholefraction#1}% \else \let\go = \setuptable \fi% \fi \go } % multitable-only commands. % % @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}% % % 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. % --karl, nathan@acm.org, 20apr99. \def\tab{\checkenv\multitable &\the\everytab}% % @multitable ... @end multitable definitions: % \newtoks\everytab % insert after every tab. % \envdef\multitable{% \vskip\parskip \startsavinginserts % % @item within a multitable starts a normal row. % We use \def instead of \let so that if one of the multitable entries % contains an @itemize, we don't choke on the \item (seen as \crcr aka % \endtemplate) expanding \doitemize. \def\item{\crcr}% % \tolerance=9500 \hbadness=9500 \setmultitablespacing \parskip=\multitableparskip \parindent=\multitableparindent \overfullrule=0pt \global\colcount=0 % \everycr = {% \noalign{% \global\everytab={}% \global\colcount=0 % Reset the column counter. % Check for saved footnotes, etc. \checkinserts % Keeps underfull box messages off when table breaks over pages. %\filbreak % Maybe so, but it also creates really weird page breaks when the % table breaks over pages. Wouldn't \vfil be better? Wait until the % problem manifests itself, so it can be fixed for real --karl. }% }% % \parsearg\domultitable } \def\domultitable#1{% % To parse everything between @multitable and @item: \setuptable#1 \endsetuptable % % This preamble sets up a generic column definition, which will % be used as many times as user calls for columns. % \vtop will set a single line and will also let text wrap and % continue for many paragraphs if desired. \halign\bgroup &% \global\advance\colcount by 1 \multistrut \vtop{% % Use the current \colcount to find the correct column width: \hsize=\expandafter\csname col\the\colcount\endcsname % % In order to keep entries from bumping into each other % we will add a \leftskip of \multitablecolspace to all columns after % the first one. % % If a template has been used, we will add \multitablecolspace % to the width of each template entry. % % If the user has set preamble in terms of percent of \hsize we will % use that dimension as the width of the column, and the \leftskip % will keep entries from bumping into each other. Table will start at % left margin and final column will justify at right margin. % % Make sure we don't inherit \rightskip from the outer environment. \rightskip=0pt \ifnum\colcount=1 % The first column will be indented with the surrounding text. \advance\hsize by\leftskip \else \ifsetpercent \else % If user has not set preamble in terms of percent of \hsize % we will advance \hsize by \multitablecolspace. \advance\hsize by \multitablecolspace \fi % In either case we will make \leftskip=\multitablecolspace: \leftskip=\multitablecolspace \fi % Ignoring space at the beginning and end avoids an occasional spurious % blank line, when TeX decides to break the line at the space before the % box from the multistrut, so the strut ends up on a line by itself. % For example: % @multitable @columnfractions .11 .89 % @item @code{#} % @tab Legal holiday which is valid in major parts of the whole country. % Is automatically provided with highlighting sequences respectively % marking characters. \noindent\ignorespaces##\unskip\multistrut }\cr } \def\Emultitable{% \crcr \egroup % end the \halign \global\setpercentfalse } \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 \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. \fi% \ifdim\multitableparskip=0pt \global\multitableparskip=\multitablelinespace \global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller %% than skip between lines in the table. \fi} \message{conditionals,} % @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext, % @ifnotxml always succeed. They currently do nothing; we don't % attempt to check whether the conditionals are properly nested. But we % have to remember that they are conditionals, so that @end doesn't % attempt to close an environment group. % \def\makecond#1{% \expandafter\let\csname #1\endcsname = \relax \expandafter\let\csname iscond.#1\endcsname = 1 } \makecond{iftex} \makecond{ifnotdocbook} \makecond{ifnothtml} \makecond{ifnotinfo} \makecond{ifnotplaintext} \makecond{ifnotxml} % Ignore @ignore, @ifhtml, @ifinfo, and the like. % \def\direntry{\doignore{direntry}} \def\documentdescription{\doignore{documentdescription}} \def\docbook{\doignore{docbook}} \def\html{\doignore{html}} \def\ifdocbook{\doignore{ifdocbook}} \def\ifhtml{\doignore{ifhtml}} \def\ifinfo{\doignore{ifinfo}} \def\ifnottex{\doignore{ifnottex}} \def\ifplaintext{\doignore{ifplaintext}} \def\ifxml{\doignore{ifxml}} \def\ignore{\doignore{ignore}} \def\menu{\doignore{menu}} \def\xml{\doignore{xml}} % Ignore text until a line `@end #1', keeping track of nested conditionals. % % A count to remember the depth of nesting. \newcount\doignorecount \def\doignore#1{\begingroup % Scan in ``verbatim'' mode: \obeylines \catcode`\@ = \other \catcode`\{ = \other \catcode`\} = \other % % Make sure that spaces turn into tokens that match what \doignoretext wants. \spaceisspace % % Count number of #1's that we've seen. \doignorecount = 0 % % Swallow text until we reach the matching `@end #1'. \dodoignore{#1}% } { \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source. \obeylines % % \gdef\dodoignore#1{% % #1 contains the command name as a string, e.g., `ifinfo'. % % 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. \doignoretext ^^M% }% } \def\doignoreyyy#1{% \def\temp{#1}% \ifx\temp\empty % Nothing found. \let\next\doignoretextzzz \else % Found a nested condition, ... \advance\doignorecount by 1 \let\next\doignoretextyyy % ..., look for another. % If we're here, #1 ends with ^^M\ifinfo (for example). \fi \next #1% the token \_STOP_ is present just after this macro. } % We have to swallow the remaining "\_STOP_". % \def\doignoretextzzz#1{% \ifnum\doignorecount = 0 % We have just found the outermost @end. \let\next\enddoignore \else % Still inside a nested condition. \advance\doignorecount by -1 \let\next\doignoretext % Look for the next @end. \fi \next } % Finish off ignored text. { \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. % @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. % % Since we want to separate VAR from REST-OF-LINE (which might be % empty), we can't just use \parsearg; we have to insert a space of our % own to delimit the rest of the line, and then take it out again if we % didn't need it. % We rely on the fact that \parsearg sets \catcode`\ =10. % \parseargdef\set{\setyyy#1 \endsetyyy} \def\setyyy#1 #2\endsetyyy{% {% \makevalueexpandable \def\temp{#2}% \edef\next{\gdef\makecsname{SET#1}}% \ifx\temp\empty \next{}% \else \setzzz#2\endsetzzz \fi }% } % Remove the trailing space \setxxx inserted. \def\setzzz#1 \endsetzzz{\next{#1}} % @clear VAR clears (i.e., unsets) the variable VAR. % \parseargdef\clear{% {% \makevalueexpandable \global\expandafter\let\csname SET#1\endcsname=\relax }% } % @value{foo} gets the text saved in variable foo. \def\value{\begingroup\makevalueexpandable\valuexxx} \def\valuexxx#1{\expandablevalue{#1}\endgroup} { \catcode`\- = \active \catcode`\_ = \active % \gdef\makevalueexpandable{% \let\value = \expandablevalue % We don't want these characters active, ... \catcode`\-=\other \catcode`\_=\other % ..., 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 } } % We have this subroutine so that we can handle at least some @value's % properly in indexes (we call \makevalueexpandable in \indexdummies). % The command has to be fully expandable (if the variable is set), since % the result winds up in the index file. This means that if the % variable's value contains other Texinfo commands, it's almost certain % it will fail (although perhaps we could fix that with sufficient work % to do a one-level expansion on the result, instead of complete). % \def\expandablevalue#1{% \expandafter\ifx\csname SET#1\endcsname\relax {[No value for ``#1'']}% \message{Variable `#1', used in @value, is not set.}% \else \csname SET#1\endcsname \fi } % @ifset VAR ... @end ifset reads the `...' iff VAR has been defined % with @set. % % To get special treatment of `@end ifset,' call \makeond and the redefine. % \makecond{ifset} \def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}} \def\doifset#1#2{% {% \makevalueexpandable \let\next=\empty \expandafter\ifx\csname SET#2\endcsname\relax #1% If not set, redefine \next. \fi \expandafter }\next } \def\ifsetfail{\doignore{ifset}} % @ifclear VAR ... @end ifclear reads 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 % above code: if the variable is not set, do nothing, if it is set, % then redefine \next to \ifclearfail. % \makecond{ifclear} \def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}} \def\ifclearfail{\doignore{ifclear}} % @dircategory CATEGORY -- specify a category of the dir file % which this file should belong to. Ignore this in TeX. \let\dircategory=\comment % @defininfoenclose. \let\definfoenclose=\comment \message{indexing,} % Index generation facilities % Define \newwrite to be identical to plain tex's \newwrite % 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 % \fooindex ...rest of line... puts an entry in the index foo. % It also defines \fooindfile to be the number of the output channel for % the file that accumulates this index. The file's extension is foo. % The name of an index should be no more than 2 characters long % for the sake of vms. % \def\newindex#1{% \iflinks \expandafter\newwrite \csname#1indfile\endcsname \openout \csname#1indfile\endcsname \jobname.#1 % Open the file \fi \expandafter\xdef\csname#1index\endcsname{% % Define @#1index \noexpand\doindex{#1}} } % @defindex foo == \newindex{foo} % \def\defindex{\parsearg\newindex} % Define @defcodeindex, like @defindex except put all entries in @code. % \def\defcodeindex{\parsearg\newcodeindex} % \def\newcodeindex#1{% \iflinks \expandafter\newwrite \csname#1indfile\endcsname \openout \csname#1indfile\endcsname \jobname.#1 \fi \expandafter\xdef\csname#1index\endcsname{% \noexpand\docodeindex{#1}}% } % @synindex foo bar makes index foo feed into index bar. % Do this instead of @defindex foo if you don't want it as a separate index. % % @syncodeindex foo bar similar, but put all entries made for index foo % inside @code. % \def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} \def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} % #1 is \doindex or \docodeindex, #2 the index getting redefined (foo), % #3 the target index (bar). \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 \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 \fi % redefine \fooindfile: \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname \expandafter\let\csname#2indfile\endcsname=\temp % redefine \fooindex: \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}% } % Define \doindex, the driver for all \fooindex macros. % Argument #1 is generated by the calling \fooindex macro, % and it is "foo", the name of the index. % \doindex just uses \parsearg; it calls \doind for the actual work. % This is because \doind is more useful to call from other macros. % There is also \dosubind {index}{topic}{subtopic} % which makes an entry in a two-level index such as the operation index. \def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer} \def\singleindexer #1{\doind{\indexname}{#1}} % like the previous two, but they put @code around the argument. \def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer} \def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} % Take care of Texinfo commands that can appear in an index entry. % Since there are some commands we want to expand, and others we don't, % 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 % % 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 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\@{@@}% \def\ {@ }% \let\{ = \lbraceatcmd \let\} = \rbraceatcmd % % Do the redefinitions. \commondummies \otherbackslash } % Called from \indexdummies and \atdummies. % \def\commondummies{% % % \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\_% % % 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 % % 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 % % Assorted special characters. \definedummyword\bullet \definedummyword\comma \definedummyword\copyright \definedummyword\registeredsymbol \definedummyword\dots \definedummyword\enddots \definedummyword\equiv \definedummyword\error \definedummyword\euro \definedummyword\guillemetleft \definedummyword\guillemetright \definedummyword\guilsinglleft \definedummyword\guilsinglright \definedummyword\expansion \definedummyword\minus \definedummyword\ogonek \definedummyword\pounds \definedummyword\point \definedummyword\print \definedummyword\quotedblbase \definedummyword\quotedblleft \definedummyword\quotedblright \definedummyword\quoteleft \definedummyword\quoteright \definedummyword\quotesinglbase \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 } % \commondummiesnofonts: common to \commondummies and \indexnofonts. % \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\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\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 % by, and when constructing control sequence names. It eliminates all % control sequences and just writes whatever the best ASCII sort string % would be for a given command (usually its argument). % \def\indexnofonts{% % Accent commands should become @asis. \def\definedummyaccent##1{\let##1\asis}% % We can just ignore other control letters. \def\definedummyletter##1{\let##1\empty}% % Hopefully, all control words can become @asis. \let\definedummyword\definedummyaccent % \commondummiesnofonts % % Don't no-op \tt, since it isn't a user-level command % and is used in the definitions of the active chars like <, >, |, etc. % Likewise with the other plain tex font commands. %\let\tt=\asis % \def\ { }% \def\@{@}% % how to handle braces? \def\_{\normalunderscore}% % % Non-English letters. \def\AA{AA}% \def\AE{AE}% \def\L{L}% \def\OE{OE}% \def\O{O}% \def\aa{aa}% \def\ae{ae}% \def\l{l}% \def\oe{oe}% \def\o{o}% \def\ss{ss}% \def\exclamdown{!}% \def\questiondown{?}% \def\ordf{a}% \def\ordm{o}% % \def\LaTeX{LaTeX}% \def\TeX{TeX}% % % Assorted special characters. % (The following {} will end up in the sort string, but that's ok.) \def\bullet{bullet}% \def\comma{,}% \def\copyright{copyright}% \def\registeredsymbol{R}% \def\dots{...}% \def\enddots{...}% \def\equiv{==}% \def\error{error}% \def\euro{euro}% \def\guillemetleft{<<}% \def\guillemetright{>>}% \def\guilsinglleft{<}% \def\guilsinglright{>}% \def\expansion{==>}% \def\minus{-}% \def\pounds{pounds}% \def\point{.}% \def\print{-|}% \def\quotedblbase{"}% \def\quotedblleft{"}% \def\quotedblright{"}% \def\quoteleft{`}% \def\quoteright{'}% \def\quotesinglbase{,}% \def\result{=>}% \def\textdegree{degrees}% % % 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 } \let\indexbackslash=0 %overridden during \printindex. \let\SETmarginindex=\relax % put index entries in margin (undocumented)? % Most index entries go through here, but \dosubind is the general case. % #1 is the index name, #2 is the entry text. \def\doind#1#2{\dosubind{#1}{#2}{}} % Workhorse for all \fooindexes. % #1 is name of index, #2 is stuff to put there, #3 is subentry -- % empty if called from \doind, as we usually are (the main exception % is with most defuns, which call us directly). % \def\dosubind#1#2#3{% \iflinks {% % Store the main index entry text (including the third arg). \toks0 = {#2}% % If third arg is present, precede it with a space. \def\thirdarg{#3}% \ifx\thirdarg\empty \else \toks0 = \expandafter{\the\toks0 \space #3}% \fi % \edef\writeto{\csname#1indfile\endcsname}% % \safewhatsit\dosubindwrite }% \fi } % Write the entry in \toks0 to the index file: % \def\dosubindwrite{% % Put the index entry in the margin if desired. \ifx\SETmarginindex\relax\else \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}% \fi % % Remember, we are within a group. \indexdummies % Must do this here, since \bf, etc expand at this stage \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now % so it will be output as is; and it will print as backslash. % % Process the index entry with all font commands turned off, to % get the string to sort by. {\indexnofonts \edef\temp{\the\toks0}% need full expansion \xdef\indexsorttmp{\temp}% }% % % Set up the complete index entry, with both the sort key and % the original text, including any font commands. We write % three arguments to \entry to the .?? file (four in the % subentry case), texindex reduces to two when writing the .??s % sorted result. \edef\temp{% \write\writeto{% \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}% }% \temp } % 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 or \pdfdest will make \lastskip zero. The result is that % sequences like this: % @end defun % @tindex whatever % @defun ... % will have extra space inserted, because the \medbreak in the % start of the @defun won't see the skip inserted by the @end of % the previous defun. % % But don't do any of this if we're not in vertical mode. We % don't want to do a \vskip and prematurely end a paragraph. % % Avoid page breaks due to these extra skips, too. % % But wait, there is a catch there: % We'll have to check whether \lastskip is zero skip. \ifdim is not % sufficient for this purpose, as it ignores stretch and shrink parts % of the skip. The only way seems to be to check the textual % representation of the skip. % % The following is almost like \def\zeroskipmacro{0.0pt} except that % the ``p'' and ``t'' characters have catcode \other, not 11 (letter). % \edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname} % \newskip\whatsitskip \newcount\whatsitpenalty % % ..., ready, GO: % \def\safewhatsit#1{% \ifhmode #1% \else % \lastskip and \lastpenalty cannot both be nonzero simultaneously. \whatsitskip = \lastskip \edef\lastskipmacro{\the\lastskip}% \whatsitpenalty = \lastpenalty % % If \lastskip is nonzero, that means the last item was a % skip. And since a skip is discardable, that means this % -\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-\whatsitskip \fi % #1% % \ifx\lastskipmacro\zeroskipmacro % If \lastskip was zero, perhaps the last item was a penalty, and % perhaps it was >=10000, e.g., a \nobreak. In that case, we want % 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\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\whatsitskip \fi \fi } % The index entry written in the file actually looks like % \entry {sortstring}{page}{topic} % or % \entry {sortstring}{page}{topic}{subtopic} % The texindex program reads in these files and writes files % containing these kinds of lines: % \initial {c} % before the first topic whose initial is c % \entry {topic}{pagelist} % for a topic that is used without subtopics % \primary {topic} % for the beginning of a topic that is used with subtopics % \secondary {subtopic}{pagelist} % for each subtopic. % Define the user-accessible indexing commands % @findex, @vindex, @kindex, @cindex. \def\findex {\fnindex} \def\kindex {\kyindex} \def\cindex {\cpindex} \def\vindex {\vrindex} \def\tindex {\tpindex} \def\pindex {\pgindex} \def\cindexsub {\begingroup\obeylines\cindexsub} {\obeylines % \gdef\cindexsub "#1" #2^^M{\endgroup % \dosubind{cp}{#2}{#1}}} % Define the macros used in formatting output of the sorted index material. % @printindex causes a particular index (the ??s file) to get printed. % It does not print any chapter heading (usually an @unnumbered). % \parseargdef\printindex{\begingroup \dobreak \chapheadingskip{10000}% % \smallfonts \rm \tolerance = 9500 \plainfrenchspacing \everypar = {}% don't want the \kern\-parindent from indentation suppression. % % See if the index file exists and is nonempty. % Change catcode of @ here so that if the index file contains % \initial {@} % as its first line, TeX doesn't complain about mismatched braces % (because it thinks @} is a control sequence). \catcode`\@ = 11 \openin 1 \jobname.#1s \ifeof 1 % \enddoublecolumns gets confused if there is no text in the index, % and it loses the chapter title and the aux file entries for the % index. The easiest way to prevent this problem is to make sure % there is some text. \putwordIndexNonexistent \else % % If the index file exists but is empty, then \openin leaves \ifeof % false. We have to make TeX try to read something from the file, so % it can discover if there is anything in it. \read 1 to \temp \ifeof 1 \putwordIndexIsEmpty \else % Index files are almost Texinfo source, but we use \ as the escape % character. It would be better to use @, but that's too big a change % to make right now. \def\indexbackslash{\backslashcurfont}% \catcode`\\ = 0 \escapechar = `\\ \begindoublecolumns \input \jobname.#1s \enddoublecolumns \fi \fi \closein 1 \endgroup} % These macros are used by the sorted index file itself. % Change them to control the appearance of the index. \def\initial#1{{% % Some minor font changes for the special characters. \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt % % Remove any glue we may have, we'll be inserting our own. \removelastskip % % We like breaks before the index initials, so insert a bonus. \nobreak \vskip 0pt plus 3\baselineskip \penalty 0 \vskip 0pt plus -3\baselineskip % % Typeset the initial. Making this add up to a whole number of % baselineskips increases the chance of the dots lining up from column % to column. It still won't often be perfect, because of the stretch % we need before each entry, but it's better. % % No shrink because it confuses \balancecolumns. \vskip 1.67\baselineskip plus .5\baselineskip \leftline{\secbf #1}% % Do our best not to break after the initial. \nobreak \vskip .33\baselineskip plus .1\baselineskip }} % \entry typesets a paragraph consisting of the text (#1), dot leaders, and % then page number (#2) flushed to the right margin. It is used for index % and table of contents entries. The paragraph is indented by \leftskip. % % A straightforward implementation would start like this: % \def\entry#1#2{... % 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{% \begingroup % % Start a new paragraph if necessary, so our assignments below can't % affect previous text. \par % % Do not fill out the last line with white space. \parfillskip = 0in % % No extra space above this paragraph. \parskip = 0in % % Do not prefer a separate line ending with a hyphen to fewer lines. \finalhyphendemerits = 0 % % \hangindent is only relevant when the entry text and page number % don't both fit on one line. In that case, bob suggests starting the % dots pretty far over on the line. Unfortunately, a large % indentation looks wrong when the entry text itself is broken across % lines. So we use a small indentation and put up with long leaders. % % \hangafter is reset to 1 (which is the value we want) at the start % of each paragraph, so we need not do anything with that. \hangindent = 2em % % When the entry text needs to be broken, just fill out the first line % with blank space. \rightskip = 0pt plus1fil % % A bit of stretch before each entry for the benefit of balancing % columns. \vskip 0pt plus1pt % % Swallow the left brace of the text (first parameter): \afterassignment\doentry \let\temp = } \def\doentry{% \bgroup % Instead of the swallowed brace. \noindent \aftergroup\finishentry % And now comes the text of the entry. } \def\finishentry#1{% % #1 is the page number. % % 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. \setbox\boxA = \hbox{#1}% \ifdim\wd\boxA = 0pt \ % \else % % If we must, put the page number on a line of its own, and fill out % this line with blank space. (The \hfil is overwhelmed with the % fill leaders glue in \indexdotfill if the page number does fit.) \hfil\penalty50 \null\nobreak\indexdotfill % Have leaders before the page number. % % The `\ ' here is removed by the implicit \unskip that TeX does as % part of (the primitive) \par. Without it, a spurious underfull % \hbox ensues. \ifpdf \pdfgettoks#1.% \ \the\toksA \else \ #1% \fi \fi \par \endgroup } % Like plain.tex's \dotfill, except uses up at least 1 em. \def\indexdotfill{\cleaders \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill} \def\primary #1{\line{#1\hfil}} \newskip\secondaryindent \secondaryindent=0.5cm \def\secondary#1#2{{% \parfillskip=0in \parskip=0in \hangindent=1in \hangafter=1 \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill \ifpdf \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. \else #2 \fi \par }} % Define two-column mode, which we use to typeset indexes. % Adapted from the TeXbook, page 416, which is to say, % the manmac.tex format used to print the TeXbook itself. \catcode`\@=11 \newbox\partialpage \newdimen\doublecolumnhsize \def\begindoublecolumns{\begingroup % ended by \enddoublecolumns % Grab any single-column material above us. \output = {% % % Here is a possibility not foreseen in manmac: if we accumulate a % whole lot of material, we might end up calling this \output % routine twice in a row (see the doublecol-lose test, which is % essentially a couple of indexes with @setchapternewpage off). In % that case we just ship out what is in \partialpage with the normal % output routine. Generally, \partialpage will be empty when this % runs and this will be a no-op. See the indexspread.tex test case. \ifvoid\partialpage \else \onepageout{\pagecontents\partialpage}% \fi % \global\setbox\partialpage = \vbox{% % Unvbox the main output page. \unvbox\PAGE \kern-\topskip \kern\baselineskip }% }% \eject % run that output routine to set \partialpage % % Use the double-column output routine for subsequent pages. \output = {\doublecolumnout}% % % Change the page size parameters. We could do this once outside this % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 % format, but then we repeat the same computation. Repeating a couple % of assignments once per index is clearly meaningless for the % execution time, so we may as well do it in one place. % % First we halve the line length, less a little for the gutter between % the columns. We compute the gutter based on the line length, so it % changes automatically with the paper format. The magic constant % below is chosen so that the gutter has the same value (well, +-<1pt) % as it did when we hard-coded it. % % We put the result in a separate register, \doublecolumhsize, so we % can restore it in \pagesofar, after \hsize itself has (potentially) % been clobbered. % \doublecolumnhsize = \hsize \advance\doublecolumnhsize by -.04154\hsize \divide\doublecolumnhsize by 2 \hsize = \doublecolumnhsize % % Double the \vsize as well. (We don't need a separate register here, % since nobody clobbers \vsize.) \vsize = 2\vsize } % The double-column output routine for all double-column pages except % the last. % \def\doublecolumnout{% \splittopskip=\topskip \splitmaxdepth=\maxdepth % Get the available space for the double columns -- the normal % (undoubled) page height minus any material left over from the % previous page. \dimen@ = \vsize \divide\dimen@ by 2 \advance\dimen@ by -\ht\partialpage % % box0 will be the left-hand column, box2 the right. \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ \onepageout\pagesofar \unvbox255 \penalty\outputpenalty } % % Re-output the contents of the output page -- any previous material, % followed by the two boxes we just split, in box0 and box2. \def\pagesofar{% \unvbox\partialpage % \hsize = \doublecolumnhsize \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}% } % % 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. \balancecolumns % % If we end up splitting too much material for the current page, % though, there will be another page break right after this \output % invocation ends. Having called \balancecolumns once, we do not % want to call it again. Therefore, reset \output to its normal % definition right away. (We hope \balancecolumns will never be % called on to balance too much material, but if it is, this makes % the output somewhat more palatable.) \global\output = {\onepageout{\pagecontents\PAGE}}% }% \eject \endgroup % started in \begindoublecolumns % % \pagegoal was set to the doubled \vsize above, since we restarted % the current page. We're now back to normal single-column % typesetting, so reset \pagegoal to the normal \vsize (after the % \endgroup where \vsize got restored). \pagegoal = \vsize } % % Called at the end of the double column material. \def\balancecolumns{% \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120. \dimen@ = \ht0 \advance\dimen@ by \topskip \advance\dimen@ by-\baselineskip \divide\dimen@ by 2 % target to split to %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}% \splittopskip = \topskip % Loop until we get a decent breakpoint. {% \vbadness = 10000 \loop \global\setbox3 = \copy0 \global\setbox1 = \vsplit3 to \dimen@ \ifdim\ht3>\dimen@ \global\advance\dimen@ by 1pt \repeat }% %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}% \setbox0=\vbox to\dimen@{\unvbox1}% \setbox2=\vbox to\dimen@{\unvbox3}% % \pagesofar } \catcode`\@ = \other \message{sectioning,} % Chapters, sections, etc. % \unnumberedno is an oxymoron, of course. 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 % chapters, we're in trouble anyway, I'm sure.) \newcount\unnumberedno \unnumberedno = 10000 \newcount\chapno \newcount\secno \secno=0 \newcount\subsecno \subsecno=0 \newcount\subsubsecno \subsubsecno=0 % This counter is funny since it counts through charcodes of letters A, B, ... \newcount\appendixno \appendixno = `\@ % % \def\appendixletter{\char\the\appendixno} % We do the following ugly conditional instead of the above simple % construct for the sake of pdftex, which needs the actual % letter in the expansion, not just typeset. % \def\appendixletter{% \ifnum\appendixno=`A A% \else\ifnum\appendixno=`B B% \else\ifnum\appendixno=`C C% \else\ifnum\appendixno=`D D% \else\ifnum\appendixno=`E E% \else\ifnum\appendixno=`F F% \else\ifnum\appendixno=`G G% \else\ifnum\appendixno=`H H% \else\ifnum\appendixno=`I I% \else\ifnum\appendixno=`J J% \else\ifnum\appendixno=`K K% \else\ifnum\appendixno=`L L% \else\ifnum\appendixno=`M M% \else\ifnum\appendixno=`N N% \else\ifnum\appendixno=`O O% \else\ifnum\appendixno=`P P% \else\ifnum\appendixno=`Q Q% \else\ifnum\appendixno=`R R% \else\ifnum\appendixno=`S S% \else\ifnum\appendixno=`T T% \else\ifnum\appendixno=`U U% \else\ifnum\appendixno=`V V% \else\ifnum\appendixno=`W W% \else\ifnum\appendixno=`X X% \else\ifnum\appendixno=`Y Y% \else\ifnum\appendixno=`Z Z% % The \the is necessary, despite appearances, because \appendixletter is % expanded while writing the .toc file. \char\appendixno is not % expandable, thus it is written literally, thus all appendixes come out % with the same letter (or @) in the toc without it. \else\char\the\appendixno \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 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 % @raisesections: treat @section as chapter, @subsection as section, etc. \def\raisesections{\global\advance\secbase by -1} \let\up=\raisesections % original BFox name % @lowersections: treat @chapter as section, @section as subsection, etc. \def\lowersections{\global\advance\secbase by 1} \let\down=\lowersections % original BFox name % we only have subsub. \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 % % Trace whether the current chapter is an appendix or not: % \chapheadtype is "N" or "A", unnumbered chapters are ignored. \def\chapheadtype{N} % Choose a heading macro % #1 is heading type % #2 is heading level % #3 is text for heading \def\genhead#1#2#3{% % Compute the abs. sec. level: \absseclevel=#2 \advance\absseclevel by \secbase % Make sure \absseclevel doesn't fall outside the range: \ifnum \absseclevel < 0 \absseclevel = 0 \else \ifnum \absseclevel > 3 \absseclevel = 3 \fi \fi % The heading type: \def\headtype{#1}% \if \headtype U% \ifnum \absseclevel < \unmlevel \chardef\unmlevel = \absseclevel \fi \else % Check for appendix sections: \ifnum \absseclevel = 0 \edef\chapheadtype{\headtype}% \else \if \headtype A\if \chapheadtype N% \errmessage{@appendix... within a non-appendix chapter}% \fi\fi \fi % Check for numbered within unnumbered: \ifnum \absseclevel > \unmlevel \def\headtype{U}% \else \chardef\unmlevel = 3 \fi \fi % Now print the heading: \if \headtype U% \ifcase\absseclevel \unnumberedzzz{#3}% \or \unnumberedseczzz{#3}% \or \unnumberedsubseczzz{#3}% \or \unnumberedsubsubseczzz{#3}% \fi \else \if \headtype A% \ifcase\absseclevel \appendixzzz{#3}% \or \appendixsectionzzz{#3}% \or \appendixsubseczzz{#3}% \or \appendixsubsubseczzz{#3}% \fi \else \ifcase\absseclevel \chapterzzz{#3}% \or \seczzz{#3}% \or \numberedsubseczzz{#3}% \or \numberedsubsubseczzz{#3}% \fi \fi \fi \suppressfirstparagraphindent } % an interface: \def\numhead{\genhead N} \def\apphead{\genhead A} \def\unnmhead{\genhead U} % @chapter, @appendix, @unnumbered. Increment top-level counter, reset % all lower-level sectioning counters to zero. % % Also set \chaplevelprefix, which we prepend to @float sequence numbers % (e.g., figures), q.v. By default (before any chapter), that is empty. \let\chaplevelprefix = \empty % \outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz \def\chapterzzz#1{% % section resetting is \global in case the chapter is in a group, such % as an @include file. \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\chapno by 1 % % Used for \float. \gdef\chaplevelprefix{\the\chapno.}% \resetallfloatnos % \message{\putwordChapter\space \the\chapno}% % % Write the actual heading. \chapmacro{#1}{Ynumbered}{\the\chapno}% % % So @section and the like are numbered underneath this chapter. \global\let\section = \numberedsec \global\let\subsection = \numberedsubsec \global\let\subsubsection = \numberedsubsubsec } \outer\parseargdef\appendix{\apphead0{#1}} % normally apphead0 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}% % \chapmacro{#1}{Yappendix}{\appendixletter}% % \global\let\section = \appendixsec \global\let\subsection = \appendixsubsec \global\let\subsubsection = \appendixsubsubsec } \outer\parseargdef\unnumbered{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz \def\unnumberedzzz#1{% \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\unnumberedno by 1 % % Since an unnumbered has no number, no prefix for figures. \global\let\chaplevelprefix = \empty \resetallfloatnos % % This used to be simply \message{#1}, but TeX fully expands the % argument to \message. Therefore, if #1 contained @-commands, TeX % expanded them. For example, in `@unnumbered The @cite{Book}', TeX % expanded @cite (which turns out to cause errors because \cite is meant % to be executed, not expanded). % % Anyway, we don't want the fully-expanded definition of @cite to appear % as a result of the \message, we just want `@cite' itself. We use % \the to achieve this: TeX expands \the only once, % simply yielding the contents of . (We also do this for % the toc entries.) \toks0 = {#1}% \message{(\the\toks0)}% % \chapmacro{#1}{Ynothing}{\the\unnumberedno}% % \global\let\section = \unnumberedsec \global\let\subsection = \unnumberedsubsec \global\let\subsubsection = \unnumberedsubsubsec } % @centerchap is like @unnumbered, but the heading is centered. \outer\parseargdef\centerchap{% % Well, we could do the following in a group, but that would break % an assumption that \chapmacro is called at the outermost level. % Thus we are safer this way: --kasal, 24feb04 \let\centerparametersmaybe = \centerparameters \unnmhead0{#1}% \let\centerparametersmaybe = \relax } % @top is like @unnumbered. \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 \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 \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 \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 \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 \def\unnumberedsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Ynothing}% {\the\unnumberedno.\the\secno.\the\subsecno}% } % Subsubsections. \outer\parseargdef\numberedsubsubsec{\numhead3{#1}} % normally numberedsubsubseczzz \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 \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 \def\unnumberedsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Ynothing}% {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}% } % These macros control what the section commands do, according % to what kind of chapter we are in (ordinary, appendix, or unnumbered). % Define them by default for a numbered chapter. \let\section = \numberedsec \let\subsection = \numberedsubsec \let\subsubsection = \numberedsubsubsec % 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 } \def\chapheading{\chapbreak \parsearg\chapheadingzzz} \def\chapheadingzzz#1{% {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 \parindent=0pt\raggedright \rmisbold #1\hfill}}% \bigskip \par\penalty 200\relax \suppressfirstparagraphindent } % @heading, @subheading, @subsubheading. \parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{} \suppressfirstparagraphindent} \parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{} \suppressfirstparagraphindent} \parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{} \suppressfirstparagraphindent} % These macros generate a chapter, section, etc. heading only % (including whitespace, linebreaking, etc. around it), % given all the information in convenient, parsed form. %%% 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 \def\chapbreak{\dobreak \chapheadingskip {-4000}} \def\chappager{\par\vfill\supereject} % 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 \evenheadline={\hfil}\evenfootline={\hfil}% \oddheadline={\hfil}\oddfootline={\hfil}% \hbox to 0pt{}% \chappager \endgroup \fi } \def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} \def\CHAPPAGoff{% \global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chapbreak \global\let\pagealignmacro=\chappager} \def\CHAPPAGon{% \global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chappager \global\let\pagealignmacro=\chappager \global\def\HEADINGSon{\HEADINGSsingle}} \def\CHAPPAGodd{% \global\let\contentsalignmacro = \chapoddpage \global\let\pchapsepmacro=\chapoddpage \global\let\pagealignmacro=\chapoddpage \global\def\HEADINGSon{\HEADINGSdouble}} \CHAPPAGon % Chapter opening. % % #1 is the text, #2 is the section type (Ynumbered, Ynothing, % Yappendix, Yomitfromtoc), #3 the chapter number. % % To test against our argument. \def\Ynothingkeyword{Ynothing} \def\Yomitfromtockeyword{Yomitfromtoc} \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}% \gdef\noexpand\thischapter{\putwordAppendix{} \noexpand\thischapternum: \noexpand\thischaptername}% }% \else \toks0={#1}% \xdef\lastchapterdefs{% \gdef\noexpand\thischaptername{\the\toks0}% \gdef\noexpand\thischapternum{\the\chapno}% \gdef\noexpand\thischapter{\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 \rmisbold % % 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\lastsection{#1}% % % Only insert the separating space if we have a chapter/appendix % number, and don't print the unnumbered ``number''. \ifx\temptype\Ynothingkeyword \setbox0 = \hbox{}% \def\toctype{unnchap}% \else\ifx\temptype\Yomitfromtockeyword \setbox0 = \hbox{}% contents like unnumbered, but no toc entry \def\toctype{omit}% \else\ifx\temptype\Yappendixkeyword \setbox0 = \hbox{\putwordAppendix{} #3\enspace}% \def\toctype{app}% \else \setbox0 = \hbox{#3\enspace}% \def\toctype{numchap}% \fi\fi\fi % % Write the toc entry for this chapter. Must come before the % \donoderef, because we include the current node name in the toc % entry, and \donoderef resets it to empty. \writetocentry{\toctype}{#1}{#3}% % % For pdftex, we have to write out the node definition (aka, make % the pdfdest) after any page break, but before the actual text has % been typeset. If the destination for the pdf outline is after the % text, then jumping from the outline may wind up with the text not % being visible, for instance under high magnification. \donoderef{#2}% % % Typeset the actual heading. \nobreak % Avoid page breaks at the interline glue. \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright \hangindent=\wd0 \centerparametersmaybe \unhbox0 #1\par}% }% \nobreak\bigskip % no page break after a chapter title \nobreak } % @centerchap -- centered and unnumbered. \let\centerparametersmaybe = \relax \def\centerparameters{% \advance\rightskip by 3\rightskip \leftskip = \rightskip \parfillskip = 0pt } % I don't think this chapter style is supported any more, so I'm not % updating it with the new noderef stuff. We'll see. --karl, 11aug03. % \def\setchapterstyle #1 {\csname CHAPF#1\endcsname} % \def\unnchfopen #1{% \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 \parindent=0pt\raggedright \rmisbold #1\hfill}}\bigskip \par\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 {\rmisbold #1}\hfill}}\bigskip \par\nobreak } \def\CHAPFopen{% \global\let\chapmacro=\chfopen \global\let\centerchapmacro=\centerchfopen} % Section titles. These macros combine the section number parts and % call the generic \sectionheading to do the printing. % \newskip\secheadingskip \def\secheadingbreak{\dobreak \secheadingskip{-1000}} % Subsection titles. \newskip\subsecheadingskip \def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}} % Subsubsection titles. \def\subsubsecheadingskip{\subsecheadingskip} \def\subsubsecheadingbreak{\subsecheadingbreak} % Print any size, any type, section title. % % #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is % the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the % section number. % \def\seckeyword{sec} % \def\sectionheading#1#2#3#4{% {% % Switch to the right set of fonts. \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}% \gdef\noexpand\thissection{\putwordSection{} \noexpand\thissectionnum: \noexpand\thissectionname}% }% \fi \else \ifx\sectionlevel\seckeyword \toks0={#1}% \xdef\lastsectiondefs{% \gdef\noexpand\thissectionname{\the\toks0}% \gdef\noexpand\thissectionnum{#4}% \gdef\noexpand\thissection{\putwordSection{} \noexpand\thissectionnum: \noexpand\thissectionname}% }% \fi \fi\fi\fi % % Output the mark. Pass it through \safewhatsit, to take care of % the preceding space. \safewhatsit\domark % % Insert space above the heading. \csname #2headingbreak\endcsname % % 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\lastsection{#1}% \else\ifx\temptype\Yomitfromtockeyword % for @headings -- no section number, don't include in toc, % 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\lastsection{#1}% \else \setbox0 = \hbox{#4\enspace}% \def\toctype{num}% \gdef\lastsection{#1}% \fi\fi\fi % % 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 \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 \hangindent=\wd0 % zero if no section number \unhbox0 #1}% }% % Add extra space after the heading -- half of whatever came above it. % Don't allow stretch, though. \kern .5 \csname #2headingskip\endcsname % % Do not let the kern be a potential breakpoint, as it would be if it % was followed by glue. \nobreak % % 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.) \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 \penalty 10001 } \message{toc,} % Table of contents. \newwrite\tocfile % Write an entry to the toc file, opening it if necessary. % Called from @chapter, etc. % % Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno} % We append the current node name (if any) and page number as additional % arguments for the \{chap,sec,...}entry macros which will eventually % read this. The node name is used in the pdf outlines as the % destination to jump to. % % We open the .toc file for writing here instead of at @setfilename (or % any other fixed time) so that @contents can be anywhere in the document. % But if #1 is `omit', then we don't do anything. This is used for the % table of contents chapter openings themselves. % \newif\iftocfileopened \def\omitkeyword{omit}% % \def\writetocentry#1#2#3{% \edef\writetoctype{#1}% \ifx\writetoctype\omitkeyword \else \iftocfileopened\else \immediate\openout\tocfile = \jobname.toc \global\tocfileopenedtrue \fi % \iflinks {\atdummies \edef\temp{% \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}% \temp }% \fi \fi % % Tell \shipout to create a pdf destination on each page, if we're % writing pdf. These are used in the table of contents. We can't % just write one on every page because the title pages are numbered % 1 and 2 (the page numbers aren't printed), and so are the first % two pages of the document. Thus, we'd have two destinations named % `1', and two named `2'. \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 % Prepare to read what we've written to \tocfile. % \def\startcontents#1{% % If @setchapternewpage on, and @headings double, the contents should % start on an odd page, unlike chapters. Thus, we maintain % \contentsalignmacro in parallel with \pagealignmacro. % From: Torbjorn Granlund \contentsalignmacro \immediate\closeout\tocfile % % Don't need to put `Contents' or `Short Contents' in the headline. % It is abundantly clear what they are. \chapmacro{#1}{Yomitfromtoc}{}% % \savepageno = \pageno \begingroup % Set up to handle contents files properly. \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 \tocreadfilename\space \ifeof 1 \else \readtocfile \fi \vfill \eject \contentsalignmacro % in case @setchapternewpage odd is in effect \ifeof 1 \else \pdfmakeoutlines \fi \closein 1 \endgroup \lastnegativepageno = \pageno \global\pageno = \savepageno } % And just the chapters. \def\summarycontents{% \startcontents{\putwordShortTOC}% % \let\numchapentry = \shortchapentry \let\appentry = \shortchapentry \let\unnchapentry = \shortunnchapentry % We want a true roman here for the page numbers. \secfonts \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl \let\tt=\shortconttt \rm \hyphenpenalty = 10000 \advance\baselineskip by 1pt % Open it up a little. \def\numsecentry##1##2##3##4{} \let\appsecentry = \numsecentry \let\unnsecentry = \numsecentry \let\numsubsecentry = \numsecentry \let\appsubsecentry = \numsecentry \let\unnsubsecentry = \numsecentry \let\numsubsubsecentry = \numsecentry \let\appsubsubsecentry = \numsecentry \let\unnsubsubsecentry = \numsecentry \openin 1 \tocreadfilename\space \ifeof 1 \else \readtocfile \fi \closein 1 \vfill \eject \contentsalignmacro % in case @setchapternewpage odd is in effect \endgroup \lastnegativepageno = \pageno \global\pageno = \savepageno } \let\shortcontents = \summarycontents % Typeset the label for a chapter or appendix for the short contents. % The arg is, e.g., `A' for an appendix, or `3' for a chapter. % \def\shortchaplabel#1{% % This space should be enough, since a single number is .5em, and the % widest letter (M) is 1em, at least in the Computer Modern fonts. % But use \hss just in case. % (This space doesn't include the extra space that gets added after % the label; that gets put in by \shortchapentry above.) % % We'd like to right-justify chapter numbers, but that looks strange % with appendix letters. And right-justifying numbers and % left-justifying letters looks strange when there is less than 10 % chapters. Have to read the whole toc once to know how many chapters % there are before deciding ... \hbox to 1em{#1\hss}% } % These macros generate individual entries in the table of contents. % The first argument is the chapter or section name. % The last argument is the page number. % The arguments in between are the chapter number, section number, ... % Chapters, in the main contents. \def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}} % % Chapters, in the short toc. % See comments in \dochapentry re vbox and related settings. \def\shortchapentry#1#2#3#4{% \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}% } % Appendices, in the main contents. % Need the word Appendix, and a fixed-size box. % \def\appendixbox#1{% % We use M since it's probably the widest letter. \setbox0 = \hbox{\putwordAppendix{} M}% \hbox to \wd0{\putwordAppendix{} #1\hss}} % \def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}} % Unnumbered chapters. \def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}} \def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}} % Sections. \def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}} \let\appsecentry=\numsecentry \def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}} % Subsections. \def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}} \let\appsubsecentry=\numsubsecentry \def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}} % And subsubsections. \def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}} \let\appsubsubsecentry=\numsubsubsecentry \def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}} % This parameter controls the indentation of the various levels. % Same as \defaultparindent. \newdimen\tocindent \tocindent = 15pt % Now for the actual typesetting. In all these, #1 is the text and #2 is the % page number. % % If the toc has to be broken over pages, we want it to be at chapters % if at all possible; hence the \penalty. \def\dochapentry#1#2{% \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip \begingroup \chapentryfonts \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup \nobreak\vskip .25\baselineskip plus.1\baselineskip } \def\dosecentry#1#2{\begingroup \secentryfonts \leftskip=\tocindent \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} \def\dosubsecentry#1#2{\begingroup \subsecentryfonts \leftskip=2\tocindent \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} \def\dosubsubsecentry#1#2{\begingroup \subsubsecentryfonts \leftskip=3\tocindent \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} % We use the same \entry macro as for the index entries. \let\tocentry = \entry % Space between chapter (or whatever) number and the title. \def\labelspace{\hskip1em \relax} \def\dopageno#1{{\rm #1}} \def\doshortpageno#1{{\rm #1}} \def\chapentryfonts{\secfonts \rm} \def\secentryfonts{\textfonts} \def\subsecentryfonts{\textfonts} \def\subsubsecentryfonts{\textfonts} \message{environments,} % @foo ... @end foo. % 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} \gdef\markupsetnoligaturesquoteleft{\let`\noligaturesquoteleft} } \let\markupsetuplqcode \markupsetcodequoteleft \let\markupsetuprqcode \markupsetcodequoteright \let\markupsetuplqexample \markupsetcodequoteleft \let\markupsetuprqexample \markupsetcodequoteright \let\markupsetuplqverb \markupsetcodequoteleft \let\markupsetuprqverb \markupsetcodequoteright \let\markupsetuplqverbatim \markupsetcodequoteleft \let\markupsetuprqverbatim \markupsetcodequoteright \let\markupsetuplqsamp \markupsetnoligaturesquoteleft \let\markupsetuplqkbd \markupsetnoligaturesquoteleft % Allow an option to not replace quotes with a regular directed right % quote/apostrophe (char 0x27), but instead use 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 } % [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font. \def\noligaturesquoteleft{\relax\lq} % @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 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. % One exception: @ is still an escape character, so that @end tex works. % But \@ or @@ will get a plain tex @ 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 \catcode `\%=14 \catcode `\+=\other \catcode `\"=\other \catcode `\|=\other \catcode `\<=\other \catcode `\>=\other \catcode`\`=\other \catcode`\'=\other \escapechar=`\\ % \let\b=\ptexb \let\bullet=\ptexbullet \let\c=\ptexc \let\,=\ptexcomma \let\.=\ptexdot \let\dots=\ptexdots \let\equiv=\ptexequiv \let\!=\ptexexclam \let\i=\ptexi \let\indent=\ptexindent \let\noindent=\ptexnoindent \let\{=\ptexlbrace \let\+=\tabalign \let\}=\ptexrbrace \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}% \def\@{@}% } % There is no need to define \Etex. % Define @lisp ... @end lisp. % @lisp environment forms a group so it can rebind things, % including the definition of @end lisp (which normally is erroneous). % Amount to narrow the margins by for @lisp. \newskip\lispnarrowing \lispnarrowing=0.4in % This is the definition that ^^M gets inside @lisp, @example, and other % such environments. \null is better than a space, since it doesn't % have any width. \def\lisppar{\null\endgraf} % This space is always present above and below environments. \newskip\envskipamount \envskipamount = 0pt % Make spacing and below environment symmetrical. We use \parskip here % to help in doing that, since in @example-like environments \parskip % is reset to zero; thus the \afterenvbreak inserts no space -- but the % start of the next paragraph will insert \parskip. % \def\aboveenvbreak{{% % =10000 instead of <10000 because of a special case in \itemzzz and % \sectionheading, q.v. \ifnum \lastpenalty=10000 \else \advance\envskipamount by \parskip \endgraf \ifdim\lastskip<\envskipamount \removelastskip % it's not a good place to break if the last penalty was \nobreak % or better ... \ifnum\lastpenalty<10000 \penalty-50 \fi \vskip\envskipamount \fi \fi }} \let\afterenvbreak = \aboveenvbreak % \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 % environment contents. \font\circle=lcircle10 \newdimen\circthick \newdimen\cartouter\newdimen\cartinner \newskip\normbskip\newskip\normpskip\newskip\normlskip \circthick=\fontdimen8\circle % \def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth \def\ctr{{\hskip 6pt\circle\char'010}} \def\cbl{{\circle\char'012\hskip -6pt}} \def\cbr{{\hskip 6pt\circle\char'011}} \def\carttop{\hbox to \cartouter{\hskip\lskip \ctl\leaders\hrule height\circthick\hfil\ctr \hskip\rskip}} \def\cartbot{\hbox to \cartouter{\hskip\lskip \cbl\leaders\hrule height\circthick\hfil\cbr \hskip\rskip}} % \newskip\lskip\newskip\rskip \envdef\cartouche{% \ifhmode\par\fi % can't be in the midst of a paragraph. \startsavinginserts \lskip=\leftskip \rskip=\rightskip \leftskip=0pt\rightskip=0pt % we want these *outside*. \cartinner=\hsize \advance\cartinner by-\lskip \advance\cartinner by-\rskip \cartouter=\hsize \advance\cartouter by 18.4pt % allow for 3pt kerns on either % side, and for 6pt waste from % each corner char, and rule thickness \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip % Flag to tell @lisp, etc., not to narrow margin. \let\nonarrowing = t% \vbox\bgroup \baselineskip=0pt\parskip=0pt\lineskip=0pt \carttop \hbox\bgroup \hskip\lskip \vrule\kern3pt \vbox\bgroup \kern3pt \hsize=\cartinner \baselineskip=\normbskip \lineskip=\normlskip \parskip=\normpskip \vskip -\parskip \comment % For explanation, see the end of \def\group. } \def\Ecartouche{% \ifhmode\par\fi \kern3pt \egroup \kern3pt\vrule \hskip\rskip \egroup \cartbot \egroup \checkinserts } % This macro is called at the beginning of all the @example variants, % inside a group. \def\nonfillstart{% \aboveenvbreak \hfuzz = 12pt % Don't be fussy \sepspaces % Make spaces be word-separators rather than space tokens. \let\par = \lisppar % don't ignore blank lines \obeylines % each line of input is a line of output \parskip = 0pt \parindent = 0pt \emergencystretch = 0pt % don't try to avoid overfull boxes \ifx\nonarrowing\relax \advance \leftskip by \lispnarrowing \exdentamount=\lispnarrowing \else \let\nonarrowing = \relax \fi \let\exdent=\nofillexdent } % 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: % @example, @display, @format, @lisp % \def\smallword{small} \def\nosmallword{nosmall} \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} \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} } % @lisp: indented, narrowed, typewriter font; @example: same as @lisp. % % @smallexample and @smalllisp: use smaller fonts. % Originally contributed by Pavel@xerox. % \maketwodispenvs {lisp}{example}{% \nonfillstart \tt\setupmarkupstyle{example}% \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. \gobble % eat return } % @display/@smalldisplay: same as @lisp except keep current font. % \makedispenv {display}{% \nonfillstart \gobble } % @format/@smallformat: same as @display except don't narrow margins. % \makedispenv{format}{% \let\nonarrowing = t% \nonfillstart \gobble } % @flushleft: same as @format, but doesn't obey \SETdispenvsize. \envdef\flushleft{% \let\nonarrowing = t% \nonfillstart \gobble } \let\Eflushleft = \afterenvbreak % @flushright. % \envdef\flushright{% \let\nonarrowing = t% \nonfillstart \advance\leftskip by 0pt plus 1fill \gobble } \let\Eflushright = \afterenvbreak % @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. % \def\quotationstart{% {\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 \advance\rightskip by \lispnarrowing \exdentamount = \lispnarrowing \else \let\nonarrowing = \relax \fi \parsearg\quotationlabel } \envdef\quotation{% \setnormaldispenv \quotationstart } \envdef\smallquotation{% \setsmalldispenv \quotationstart } \let\Esmallquotation = \Equotation % We have retained a nonzero parskip for the environment, since we're % doing normal filling. % \def\Equotation{% \par \ifx\quotationauthor\undefined\else % indent a bit. \leftline{\kern 2\leftskip \sl ---\quotationauthor}% \fi {\parskip=0pt \afterenvbreak}% } % If we're given an argument, typeset it in bold with a colon after. \def\quotationlabel#1{% \def\temp{#1}% \ifx\temp\empty \else {\bf #1: }% \fi } % LaTeX-like @verbatim...@end verbatim and @verb{...} % If we want to allow any as delimiter, % we need the curly braces so that makeinfo sees the @verb command, eg: % `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org % % [Knuth]: Donald Ervin Knuth, 1996. The TeXbook. % % [Knuth] p.344; only we need to do the other characters Texinfo sets % active too. Otherwise, they get lost as the first character on a % verbatim line. \def\dospecials{% \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} % % Setup for the @verb command. % % Eight spaces for a tab \begingroup \catcode`\^^I=\active \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }} \endgroup % \def\setupverb{% \tt % easiest (and conventionally used) font for verbatim \def\par{\leavevmode\endgraf}% \setupmarkupstyle{verb}% \tabeightspaces % Respect line breaks, % print special symbols as themselves, and % make each space count % must do in this order: \obeylines \uncatcodespecials \sepspaces } % Setup for the @verbatim environment % % Real tab expansion \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount % \def\starttabbox{\setbox0=\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 }% } \endgroup % start the verbatim environment. \def\setupverbatim{% \let\nonarrowing = t% \nonfillstart % Easiest (and conventionally used) font for verbatim \tt \def\par{\leavevmode\egroup\box0\endgraf}% \tabexpand \setupmarkupstyle{verbatim}% % Respect line breaks, % print special symbols as themselves, and % make each space count % must do in this order: \obeylines \uncatcodespecials \sepspaces \everypar{\starttabbox}% } % Do the @verb magic: verbatim text is quoted by unique % delimiter characters. Before first delimiter expect a % right brace, after last delimiter expect closing brace: % % \def\doverb'{'#1'}'{#1} % % [Knuth] p. 382; only eat outer {} \begingroup \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next] \endgroup % \def\verb{\begingroup\setupverb\doverb} % % % Do the @verbatim magic: define the macro \doverbatim so that % the (first) argument ends when '@end verbatim' is reached, ie: % % \def\doverbatim#1@end verbatim{#1} % % For Texinfo it's a lot easier than for LaTeX, % because texinfo's \verbatim doesn't stop at '\end{verbatim}': % we need not redefine '\', '{' and '}'. % % Inspired by LaTeX's verbatim command set [latex.ltx] % \begingroup \catcode`\ =\active \obeylines % % ignore everything up to the first ^^M, that's the newline at the end % of the @verbatim input line itself. Otherwise we get an extra blank % line in the output. \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}% % We really want {...\end verbatim} in the body of the macro, but % without the active space; thus we have to use \xdef and \gobble. \endgroup % \envdef\verbatim{% \setupverbatim\doverbatim } \let\Everbatim = \afterenvbreak % @verbatiminclude FILE - insert text of file in verbatim environment. % \def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude} % \def\doverbatiminclude#1{% {% \makevalueexpandable \setupverbatim \indexnofonts % Allow `@@' and other weird things in file names. \input #1 \afterenvbreak }% } % @copying ... @end copying. % Save the text away for @insertcopying later. % % We save the uninterpreted tokens, rather than creating a box. % Saving the text in a box would be much easier, but then all the % typesetting commands (@smallbook, font changes, etc.) have to be done % beforehand -- and a) we want @copying to be done first in the source % file; b) letting users define the frontmatter in as flexible order as % possible is very desirable. % \def\copying{\checkenv{}\begingroup\scanargctxt\docopying} \def\docopying#1@end copying{\endgroup\def\copyingtext{#1}} % \def\insertcopying{% \begingroup \parindent = 0pt % paragraph indentation looks wrong on title page \scanexp\copyingtext \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 \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. % % As a minor 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. \medskip % preceded by discardable penalty, so not a breakpoint \fi % \parindent=0in \advance\leftskip by \defbodyindent \exdentamount=\defbodyindent } \def\dodefunx#1{% % First, check whether we are in the right environment: \checkenv#1% % % 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 \else \defunpenalty=10002 \fi % % And now, it's time to reuse the body of the original defun: \expandafter\gobbledefun#1% } \def\gobbledefun#1\startdefun{} % \printdefunline \deffnheader{text} % \def\printdefunline#1#2{% \begingroup % call \deffnheader: #1#2 \endheader % common ending: \interlinepenalty = 10000 \advance\rightskip by 0pt plus 1fil \endgraf \nobreak\vskip -\parskip \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 \endgroup } \def\Edefun{\endgraf\medbreak} % \makedefun{deffn} creates \deffn, \deffnx and \Edeffn; % the only thing remaining is to define \deffnheader. % \def\makedefun#1{% \expandafter\let\csname E#1\endcsname = \Edefun \edef\temp{\noexpand\domakedefun \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}% \temp } % \domakedefun \deffn \deffnx \deffnheader % % Define \deffn and \deffnx, without parameters. % \deffnheader has to be defined explicitly. % \def\domakedefun#1#2#3{% \envdef#1{% \startdefun \parseargusing\activeparens{\printdefunline#3}% }% \def#2{\dodefunx#1}% \def#3% } %%% Untyped functions: % @deffn category name args \makedefun{deffn}{\deffngeneral{}} % @deffn category class name args \makedefun{defop}#1 {\defopon{#1\ \putwordon}} % \defopon {category on}class name args \def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } % \deffngeneral {subind}category name args % \def\deffngeneral#1#2 #3 #4\endheader{% % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}. \dosubind{fn}{\code{#3}}{#1}% \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}% } %%% Typed functions: % @deftypefn category type name args \makedefun{deftypefn}{\deftypefngeneral{}} % @deftypeop category class type name args \makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}} % \deftypeopon {category on}class type name args \def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } % \deftypefngeneral {subind}category type name args % \def\deftypefngeneral#1#2 #3 #4 #5\endheader{% \dosubind{fn}{\code{#4}}{#1}% \defname{#2}{#3}{#4}\defunargs{#5\unskip}% } %%% Typed variables: % @deftypevr category type var args \makedefun{deftypevr}{\deftypecvgeneral{}} % @deftypecv category class type var args \makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}} % \deftypecvof {category of}class type var args \def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} } % \deftypecvgeneral {subind}category type var args % \def\deftypecvgeneral#1#2 #3 #4 #5\endheader{% \dosubind{vr}{\code{#4}}{#1}% \defname{#2}{#3}{#4}\defunargs{#5\unskip}% } %%% Untyped variables: % @defvr category var args \makedefun{defvr}#1 {\deftypevrheader{#1} {} } % @defcv category class var args \makedefun{defcv}#1 {\defcvof{#1\ \putwordof}} % \defcvof {category of}class var args \def\defcvof#1#2 {\deftypecvof{#1}#2 {} } %%% Type: % @deftp category name args \makedefun{deftp}#1 #2 #3\endheader{% \doind{tp}{\code{#2}}% \defname{#1}{}{#2}\defunargs{#3\unskip}% } % Remaining @defun-like shortcuts: \makedefun{defun}{\deffnheader{\putwordDeffunc} } \makedefun{defmac}{\deffnheader{\putwordDefmac} } \makedefun{defspec}{\deffnheader{\putwordDefspec} } \makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} } \makedefun{defvar}{\defvrheader{\putwordDefvar} } \makedefun{defopt}{\defvrheader{\putwordDefopt} } \makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} } \makedefun{defmethod}{\defopon\putwordMethodon} \makedefun{deftypemethod}{\deftypeopon\putwordMethodon} \makedefun{defivar}{\defcvof\putwordInstanceVariableof} \makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof} % \defname, which formats the name of the @def (not the args). % #1 is the category, such as "Function". % #2 is the return type, if any. % #3 is the function name. % % We are followed by (but not passed) the arguments, if any. % \def\defname#1#2#3{% % 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 % 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. % 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 % 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. \noindent \hbox to 0pt{% \hfil\box0 \kern-\hsize % \hsize has to be shortened this way: \kern\leftskip % Intentionally do not respect \rightskip, since we need the space. }% % % Allow all lines to be underfull without complaint: \tolerance=10000 \hbadness=10000 \exdentamount=\defbodyindent {% % defun fonts. We use typewriter by default (used to be bold) because: % . we're printing identifiers, they should be in tt in principle. % . in languages with many accents, such as Czech or French, it's % common to leave accents off identifiers. The result looks ok in % tt, but exceedingly strange in rm. % . we don't want -- and --- to be treated as ligatures. % . 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 #3% output function name }% {\rm\enskip}% hskip 0.5 em of \tenrm % \boldbrax % arguments will be output next, if any. } % Print arguments in slanted roman (not ttsl), inconsistently with using % tt for the name. This is because literal text is sometimes needed in % the argument list (groff manual), and ttsl and tt are not very % distinguishable. Prevent hyphenation at `-' chars. % \def\defunargs#1{% % use sl by default (not ttsl), % tt for the names. \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. \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}% #1% \sl\hyphenchar\font=45 } % We want ()&[] to print specially on the defun line. % \def\activeparens{% \catcode`\(=\active \catcode`\)=\active \catcode`\[=\active \catcode`\]=\active \catcode`\&=\active } % Make control sequences which act like normal parenthesis chars. \let\lparen = ( \let\rparen = ) % Be sure that we always have a definition for `(', etc. For example, % if the fn name has parens in it, \boldbrax will not be in effect yet, % so TeX would otherwise complain about undefined control sequence. { \activeparens \global\let(=\lparen \global\let)=\rparen \global\let[=\lbrack \global\let]=\rbrack \global\let& = \& \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} \gdef\magicamp{\let&=\amprm} } \newcount\parencount % If we encounter &foo, then turn on ()-hacking afterwards \newif\ifampseen \def\amprm#1 {\ampseentrue{\bf\ }} \def\parenfont{% \ifampseen % At the first level, print parens in roman, % otherwise use the default font. \ifnum \parencount=1 \rm \fi \else % The \sf parens (in \boldbrax) actually are a little bolder than % the contained text. This is especially needed for [ and ] . \sf \fi } \def\infirstlevel#1{% \ifampseen \ifnum\parencount=1 #1% \fi \fi } \def\bfafterword#1 {#1 \bf} \def\opnr{% \global\advance\parencount by 1 {\parenfont(}% \infirstlevel \bfafterword } \def\clnr{% {\parenfont)}% \infirstlevel \sl \global\advance\parencount by -1 } \newcount\brackcount \def\lbrb{% \global\advance\brackcount by 1 {\bf[}% } \def\rbrb{% {\bf]}% \global\advance\brackcount by -1 } \def\checkparencounts{% \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{% \message{Warning: unbalanced parentheses in @def...}% \global\parencount=0 } \def\badbrackcount{% \message{Warning: unbalanced square brackets in @def...}% \global\brackcount=0 } \message{macros,} % @macro. % 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 \newwrite\macscribble \def\scantokens#1{% \toks0={#1}% \immediate\openout\macscribble=\jobname.tmp \immediate\write\macscribble{\the\toks0}% \immediate\closeout\macscribble \input \jobname.tmp } \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\scanexp#1{% \edef\temp{\noexpand\scanmacro{#1}}% \temp } \newcount\paramno % Count of parameters \newtoks\macname % Macro name \newif\ifrecursive % Is it recursive? % 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 \csname#2\endcsname } % Trim leading and trailing spaces off a string. % Concepts from aro-bend problem 15 (see CTAN). {\catcode`\@=11 \gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }} \gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@} \gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @} \def\unbrace#1{#1} \unbrace{\gdef\trim@@@ #1 } #2@{#1} } % Trim a single trailing ^^M off a string. {\catcode`\^^M=\other \catcode`\Q=3% \gdef\eatcr #1{\eatcra #1Q^^MQ}% \gdef\eatcra#1^^MQ{\eatcrb#1Q}% \gdef\eatcrb#1Q#2Q{#1}% } % 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 \. % 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 % body, and then making it the \newlinechar in \scanmacro. \def\scanctxt{% \catcode`\"=\other \catcode`\+=\other \catcode`\<=\other \catcode`\>=\other \catcode`\@=\other \catcode`\^=\other \catcode`\_=\other \catcode`\|=\other \catcode`\~=\other \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi } \def\scanargctxt{% \scanctxt \catcode`\\=\other \catcode`\^^M=\other } \def\macrobodyctxt{% \scanctxt \catcode`\{=\other \catcode`\}=\other \catcode`\^^M=\other \usembodybackslash } \def\macroargctxt{% \scanctxt \catcode`\\=\other } % \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\macro{\recursivefalse\parsearg\macroxxx} \def\rmacro{\recursivetrue\parsearg\macroxxx} \def\macroxxx#1{% \getargs{#1}% now \macname is the macname and \argl the arglist \ifx\argl\empty % no arguments \paramno=0% \else \expandafter\parsemargdef \argl;% \fi \if1\csname ismacro.\the\macname\endcsname \message{Warning: redefining \the\macname}% \else \expandafter\ifx\csname \the\macname\endcsname \relax \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% \addtomacrolist{\the\macname}% \fi \begingroup \macrobodyctxt \ifrecursive \expandafter\parsermacbody \else \expandafter\parsemacbody \fi} \parseargdef\unmacro{% \if1\csname ismacro.#1\endcsname \global\cslet{#1}{macsave.#1}% \global\expandafter\let \csname ismacro.#1\endcsname=0% % Remove the macro name from \macrolist: \begingroup \expandafter\let\csname#1\endcsname \relax \let\definedummyword\unmacrodo \xdef\macrolist{\macrolist}% \endgroup \else \errmessage{Macro #1 not defined}% \fi } % Called by \do from \dounmacro on each macro. The idea is to omit any % macro definitions that have been changed to \relax. % \def\unmacrodo#1{% \ifx #1\relax % remove this \else \noexpand\definedummyword \noexpand#1% \fi } % This makes use of the obscure feature that if the last token of a % is #, then the preceding argument is delimited by % 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\getmacargs#1{\def\argl{#1}} % 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. % 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 % 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,;,} \def\parsemargdefxxx#1,{% \if#1;\let\next=\relax \else \let\next=\parsemargdefxxx \advance\paramno by 1% \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname {\xeatspaces{\hash\the\paramno}}% \edef\paramlist{\paramlist\hash\the\paramno,}% \fi\next} % These two commands read recursive and nonrecursive macro bodies. % (They're different since rec and nonrec macros end differently.) \long\def\parsemacbody#1@end macro% {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% \long\def\parsermacbody#1@end rmacro% {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% % This defines the macro itself. There are six cases: recursive and % nonrecursive macros of zero, one, 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 \ifcase\paramno % 0 \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\scanmacro{\temp}}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \noexpand\braceorline \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}}% \fi \else \ifcase\paramno % 0 \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\norecurse{\the\macname}% \noexpand\scanmacro{\temp}\egroup}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \noexpand\braceorline \expandafter\noexpand\csname\the\macname xxx\endcsname}% \expandafter\xdef\csname\the\macname xxx\endcsname##1{% \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}% \fi \fi} \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\macnamexxx=#1\futurelet\nchar\braceorlinexxx} \def\braceorlinexxx{% \ifx\nchar\bgroup\else \expandafter\parsearg \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. \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 } \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{}}, node \samp{\ignorespaces#1{}}} % @node's only job in TeX is to define \lastnode, which is used in % cross-references. The @node line might or might not have commas, and % might or might not have spaces before the first comma, like: % @node foo , bar , ... % We don't want such trailing spaces in the node name. % \parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse} % % also remove a trailing comma, in case of something like this: % @node Help-Cross, , , Cross-refs \def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse} \def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}} \let\nwnode=\node \let\lastnode=\empty % Write a cross-reference definition for the current node. #1 is the % type (Ynumbered, Yappendix, Ynothing). % \def\donoderef#1{% \ifx\lastnode\empty\else \setref{\lastnode}{#1}% \global\let\lastnode=\empty \fi } % @anchor{NAME} -- define xref target at arbitrary point. % \newcount\savesfregister % \def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} \def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} \def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} % \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 \lastsection, % or the anchor name. % 2) NAME-snt - section number and type, passed as the SNT arg, or % empty for anchors. % 3) NAME-pg - the page number. % % This is called from \donoderef, \anchor, and \dofloat. In the case of % floats, there is an additional part, which is not written here: % 4) NAME-lof - the text as it should appear in a @listoffloats. % \def\setref#1#2{% \pdfmkdest{#1}% \iflinks {% \atdummies % preserve commands, but don't expand them \edef\writexrdef##1##2{% \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef ##1}{##2}}% these are parameters of \writexrdef }% \toks0 = \expandafter{\lastsection}% \immediate \writexrdef{title}{\the\toks0 }% \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc. \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, during \shipout }% \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 % manual. All but the node name can be omitted. % \def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]} \def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]} \def\ref#1{\xrefX[#1,,,,,,,]} \def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup \unsepspaces \def\printedmanual{\ignorespaces #5}% \def\printedrefname{\ignorespaces #3}% \setbox1=\hbox{\printedmanual\unskip}% \setbox0=\hbox{\printedrefname\unskip}% \ifdim \wd0 = 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. \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. \def\printedrefname{\ignorespaces #1}% \else \ifhavexrefs % We know the real title if we have the xref values. \def\printedrefname{\refx{#1-title}{}}% \else % Otherwise just copy the Info node name. \def\printedrefname{\ignorespaces #1}% \fi% \fi \fi \fi % % Make link in pdf output. \ifpdf {\indexnofonts \turnoffactive % This expands tokens, so do it after making catcode changes, so _ % etc. don't get their TeX definitions. \getfilename{#4}% % % See comments at \activebackslashdouble. {\activebackslashdouble \xdef\pdfxrefdest{#1}% \backslashparens\pdfxrefdest}% % \leavevmode \startlink attr{/Border [0 0 0]}% \ifnum\filenamelength>0 goto file{\the\filename.pdf} name{\pdfxrefdest}% \else goto name{\pdfmkpgn{\pdfxrefdest}}% \fi }% \setcolor{\linkcolor}% \fi % % Float references are printed completely differently: "Figure 1.2" % instead of "[somenode], p.3". We distinguish them by the % LABEL-title being set to a magic string. {% % Have to otherify everything special to allow the \csname to % include an _ in the xref name, etc. \indexnofonts \turnoffactive \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}{}% \else \printedrefname \fi % % if the user also gave the printed manual name (fifth arg), append % "in MANUALNAME". \ifdim \wd1 > 0pt \space \putwordin{} \cite{\printedmanual}% \fi \else % node/anchor (non-float) references. % % 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 % _ (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 % 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. \xrefprintnodename\printedrefname % % But we always want a comma and a space: ,\space % % output the `page 3'. \turnoffactive \putwordpage\tie\refx{#1-pg}{}% \fi \fi \endlink \endgroup} % 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 % one that Bob is working on :). % \def\xrefprintnodename#1{[#1]} % Things referred to by \setref. % \def\Ynothing{} \def\Yomitfromtoc{} \def\Ynumbered{% \ifnum\secno=0 \putwordChapter@tie \the\chapno \else \ifnum\subsecno=0 \putwordSection@tie \the\chapno.\the\secno \else \ifnum\subsubsecno=0 \putwordSection@tie \the\chapno.\the\secno.\the\subsecno \else \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno \fi\fi\fi } \def\Yappendix{% \ifnum\secno=0 \putwordAppendix@tie @char\the\appendixno{}% \else \ifnum\subsecno=0 \putwordSection@tie @char\the\appendixno.\the\secno \else \ifnum\subsubsecno=0 \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno \else \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno \fi\fi\fi } % Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME. % If its value is nonempty, SUFFIX is output afterward. % \def\refx#1#2{% {% \indexnofonts \otherbackslash \expandafter\global\expandafter\let\expandafter\thisrefX \csname XR#1\endcsname }% \ifx\thisrefX\relax % If not defined, say something at least. \angleleft un\-de\-fined\angleright \iflinks \ifhavexrefs \message{\linenumber Undefined cross reference `#1'.}% \else \ifwarnedxrefs\else \global\warnedxrefstrue \message{Cross reference values unknown; you must run TeX again.}% \fi \fi \fi \else % It's defined, so just use it. \thisrefX \fi #2% Output the suffix in any case. } % This is the macro invoked by entries in the aux file. Usually it's % just a \def (we prepend XR to the control sequence name to avoid % collisions). But if this is a float type, we have more work to do. % \def\xrdef#1#2{% {% 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\safexrefname\endcsname % it was a float, and we have the (safe) float type in \iffloattype. \expandafter\let\expandafter\floatlist \csname floatlist\iffloattype\endcsname % % Is this the first time we've seen this float type? \expandafter\ifx\floatlist\relax \toks0 = {\do}% yes, so just \do \else % had it before, so preserve previous elements in list. \toks0 = \expandafter{\floatlist\do}% \fi % % Remember this xref in the control sequence \floatlistFLOATTYPE, % for later use in \listoffloats. \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0 {\safexrefname}}% \fi } % Read the last existing aux file, if any. No error if none exists. % \def\tryauxfile{% \openin 1 \jobname.aux \ifeof 1 \else \readdatafile{aux}% \global\havexrefstrue \fi \closein 1 } \def\setupdatafile{% \catcode`\^^@=\other \catcode`\^^A=\other \catcode`\^^B=\other \catcode`\^^C=\other \catcode`\^^D=\other \catcode`\^^E=\other \catcode`\^^F=\other \catcode`\^^G=\other \catcode`\^^H=\other \catcode`\^^K=\other \catcode`\^^L=\other \catcode`\^^N=\other \catcode`\^^P=\other \catcode`\^^Q=\other \catcode`\^^R=\other \catcode`\^^S=\other \catcode`\^^T=\other \catcode`\^^U=\other \catcode`\^^V=\other \catcode`\^^W=\other \catcode`\^^X=\other \catcode`\^^Z=\other \catcode`\^^[=\other \catcode`\^^\=\other \catcode`\^^]=\other \catcode`\^^^=\other \catcode`\^^_=\other % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc. % in xref tags, i.e., node names. But since ^^e4 notation isn't % supported in the main text, it doesn't seem desirable. Furthermore, % that is not enough: for node names that actually contain a ^ % character, we would end up writing a line like this: 'xrdef {'hat % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first % argument, and \hat is not an expandable control sequence. It could % all be worked out, but why? Either we support ^^ or we don't. % % The other change necessary for this was to define \auxhat: % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter % and then to call \auxhat in \setq. % \catcode`\^=\other % % Special characters. Should be turned off anyway, but... \catcode`\~=\other \catcode`\[=\other \catcode`\]=\other \catcode`\"=\other \catcode`\_=\other \catcode`\|=\other \catcode`\<=\other \catcode`\>=\other \catcode`\$=\other \catcode`\#=\other \catcode`\&=\other \catcode`\%=\other \catcode`+=\other % avoid \+ for paranoia even though we've turned it off % % This is to support \ in node names and titles, since the \ % characters end up in a \csname. It's easier than % leaving it active and making its active definition an actual \ % character. What I don't understand is why it works in the *value* % of the xrdef. Seems like it should be a catcode12 \, and that % should not typeset properly. But it works, so I'm moving on for % now. --karl, 15jan04. \catcode`\\=\other % % Make the characters 128-255 be printing characters. {% \count1=128 \def\loop{% \catcode\count1=\other \advance\count1 by 1 \ifnum \count1<256 \loop \fi }% }% % % @ is our escape character in .aux files, and we need braces. \catcode`\{=1 \catcode`\}=2 \catcode`\@=0 } \def\readdatafile#1{% \begingroup \setupdatafile \input\jobname.#1 \endgroup} \message{insertions,} % including footnotes. \newcount \footnoteno % The trailing space in the following definition for supereject is % vital for proper filling; pages come out unaligned when you do a % pagealignmacro call if that space before the closing brace is % removed. (Generally, numeric constants should always be followed by a % space to prevent strange expansion errors.) \def\supereject{\par\penalty -20000\footnoteno =0 } % @footnotestyle is meaningful for info output only. \let\footnotestyle=\comment {\catcode `\@=11 % % Auto-number footnotes. Otherwise like plain. \gdef\footnote{% \let\indent=\ptexindent \let\noindent=\ptexnoindent \global\advance\footnoteno by \@ne \edef\thisfootno{$^{\the\footnoteno}$}% % % In case the footnote comes at the end of a sentence, preserve the % extra spacing after we do the footnote number. \let\@sf\empty \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi % % Remove inadvertent blank space before typesetting the footnote number. \unskip \thisfootno\@sf \dofootnote }% % Don't bother with the trickery in plain.tex to not require the % footnote text as a parameter. Our footnotes don't need to be so general. % % Oh yes, they do; otherwise, @ifset (and anything else that uses % \parseargline) fails inside footnotes because the tokens are fixed when % the footnote is read. --karl, 16nov96. % \gdef\dofootnote{% \insert\footins\bgroup % We want to typeset this text as a normal paragraph, even if the % footnote reference occurs in (for example) a display environment. % So reset some parameters. \hsize=\pagewidth \interlinepenalty\interfootnotelinepenalty \splittopskip\ht\strutbox % top baseline for broken footnotes \splitmaxdepth\dp\strutbox \floatingpenalty\@MM \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip \parindent\defaultparindent % \smallfonts \rm % % Because we use hanging indentation in footnotes, a @noindent appears % to exdent this text, so make it be a no-op. makeinfo does not use % hanging indentation so @noindent can still be needed within footnote % text after an @example or the like (not that this is good style). \let\noindent = \relax % % Hang the footnote text off the number. Use \everypar in case the % footnote extends for more than one paragraph. \everypar = {\hang}% \textindent{\thisfootno}% % % Don't crash into the line above the footnote text. Since this % expands into a box, it must come within the paragraph, lest it % provide a place where TeX can split the footnote. \footstrut \futurelet\next\fo@t } }%end \catcode `\@=11 % 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. % 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. % Replace the \insert primitive by a cheating macro. % Deeper inside, just make sure that the saved insertions are not spilled % out prematurely. % \def\startsavinginserts{% \ifx \insert\ptexinsert \let\insert\saveinsert \else \let\checkinserts\relax \fi } % This \insert replacement works for both \insert\footins{foo} and % \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}. % \def\saveinsert#1{% \edef\next{\noexpand\savetobox \makeSAVEname#1}% \afterassignment\next % swallow the left brace \let\temp = } \def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}} \def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1} \def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi} \def\placesaveins#1{% \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname {\box#1}% } % eat @SAVE -- beware, all of them have catcode \other: { \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials % ;-) \gdef\gobblesave @SAVE{} } % initialization: \def\newsaveins #1{% \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}% \next } \def\newsaveinsX #1{% \csname newbox\endcsname #1% \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts \checksaveins #1}% } % initialize: \let\checkinserts\empty \newsaveins\footins \newsaveins\margin % @image. We use the macros from epsf.tex to support this. % If epsf.tex is not installed and @image is used, we complain. % % Check for and read epsf.tex up front. If we read it only at @image % time, we might be inside a group, and then its definitions would get % undone and the next image would fail. \openin 1 = epsf.tex \ifeof 1 \else % Do not bother showing banner with epsf.tex v2.7k (available in % doc/epsf.tex and on ctan). \def\epsfannounce{\toks0 = }% \input epsf.tex \fi \closein 1 % % We will only complain once about lack of epsf.tex. \newif\ifwarnednoepsf \newhelp\noepsfhelp{epsf.tex must be installed for images to work. It is also included in the Texinfo distribution, or you can get it from ftp://tug.org/tex/epsf.tex.} % \def\image#1{% \ifx\epsfbox\undefined \ifwarnednoepsf \else \errhelp = \noepsfhelp \errmessage{epsf.tex not found, images will be ignored}% \global\warnednoepsftrue \fi \else \imagexxx #1,,,,,\finish \fi } % % Arguments to @image: % #1 is (mandatory) image filename; we tack on .eps extension. % #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. \newif\ifimagevmode \def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup \catcode`\^^M = 5 % in case we're inside an example \normalturnoffactive % allow _ et al. in names % If the image is by itself, center it. \ifvmode \imagevmodetrue \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 \fi % % Leave vertical mode so that indentation from an enclosing % environment such as @quotation is respected. On the other hand, if % it's at the top level, we don't want the normal paragraph indentation. \noindent % % Output the image. \ifpdf \dopdfimage{#1}{#2}{#3}% \else % \epsfbox itself resets \epsf?size at each figure. \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi \epsfbox{#1.eps}% \fi % \ifimagevmode \medskip \fi % space after the standalone image \endgroup} % @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables, % etc. We don't actually implement floating yet, we always include the % float "here". But it seemed the best name for the future. % \envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish} % There may be a space before second and/or third parameter; delete it. \def\eatcommaspace#1, {#1,} % #1 is the optional FLOATTYPE, the text label for this float, typically % "Figure", "Table", "Example", etc. Can't contain commas. If omitted, % this float will not be numbered and cannot be referred to. % % #2 is the optional xref label. Also must be present for the float to % be referable. % % #3 is the optional positioning argument; for now, it is ignored. It % will somehow specify the positions allowed to float to (here, top, bottom). % % We keep a separate counter for each FLOATTYPE, which we reset at each % chapter-level command. \let\resetallfloatnos=\empty % \def\dofloat#1,#2,#3,#4\finish{% \let\thiscaption=\empty \let\thisshortcaption=\empty % % don't lose footnotes inside @float. % % BEWARE: when the floats start float, we have to issue warning whenever an % insert appears inside a float which could possibly float. --kasal, 26may04 % \startsavinginserts % % We can't be used inside a paragraph. \par % \vtop\bgroup \def\floattype{#1}% \def\floatlabel{#2}% \def\floatloc{#3}% we do nothing with this yet. % \ifx\floattype\empty \let\safefloattype=\empty \else {% % the floattype might have accents or other special characters, % but we need to use it in a control sequence name. \indexnofonts \turnoffactive \xdef\safefloattype{\floattype}% }% \fi % % If label is given but no type, we handle that as the empty type. \ifx\floatlabel\empty \else % We want each FLOATTYPE to be numbered separately (Figure 1, % Table 1, Figure 2, ...). (And if no label, no number.) % \expandafter\getfloatno\csname\safefloattype floatno\endcsname \global\advance\floatno by 1 % {% % 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\lastsection{\floatmagic=\safefloattype}% \setref{\floatlabel}{Yfloat}% }% \fi % % start with \parskip glue, I guess. \vskip\parskip % % Don't suppress indentation if a float happens to start a section. \restorefirstparagraphindent } % we have these possibilities: % @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap % @float Foo,lbl & no caption: Foo 1.1 % @float Foo & @caption{Cap}: Foo: Cap % @float Foo & no caption: Foo % @float ,lbl & Caption{Cap}: 1.1: Cap % @float ,lbl & no caption: 1.1 % @float & @caption{Cap}: Cap % @float & no caption: % \def\Efloat{% \let\floatident = \empty % % In all cases, if we have a float type, it comes first. \ifx\floattype\empty \else \def\floatident{\floattype}\fi % % If we have an xref label, the number comes next. \ifx\floatlabel\empty \else \ifx\floattype\empty \else % if also had float type, need tie first. \appendtomacro\floatident{\tie}% \fi % the number. \appendtomacro\floatident{\chaplevelprefix\the\floatno}% \fi % % Start the printed caption with what we've constructed in % \floatident, but keep it separate; we need \floatident again. \let\captionline = \floatident % \ifx\thiscaption\empty \else \ifx\floatident\empty \else \appendtomacro\captionline{: }% had ident, so need a colon between \fi % % caption text. \appendtomacro\captionline{\scanexp\thiscaption}% \fi % % If we have anything to print, print it, with space before. % Eventually this needs to become an \insert. \ifx\captionline\empty \else \vskip.5\parskip \captionline % % Space below caption. \vskip\parskip \fi % % If have an xref label, write the list of floats info. Do this % after the caption, to avoid chance of it being a breakpoint. \ifx\floatlabel\empty \else % Write the text that goes in the lof to the aux file as % \floatlabel-lof. Besides \floatident, we include the short % caption if specified, else the full caption if specified, else nothing. {% \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. \scanexp{% \xdef\noexpand\gtemp{% \ifx\thisshortcaption\empty \thiscaption \else \thisshortcaption \fi }% }% \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident \ifx\gtemp\empty \else : \gtemp \fi}}% }% \fi \egroup % end of \vtop % % place the captured inserts % % 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 } % Append the tokens #2 to the definition of macro #1, not expanding either. % \def\appendtomacro#1#2{% \expandafter\def\expandafter#1\expandafter{#1#2}% } % @caption, @shortcaption % \def\caption{\docaption\thiscaption} \def\shortcaption{\docaption\thisshortcaption} \def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption} \def\defcaption#1#2{\egroup \def#1{#2}} % The parameter is the control sequence identifying the counter we are % going to use. Create it if it doesn't exist and assign it to \floatno. \def\getfloatno#1{% \ifx#1\relax % Haven't seen this figure type before. \csname newcount\endcsname #1% % % Remember to reset this floatno at the next chap. \expandafter\gdef\expandafter\resetallfloatnos \expandafter{\resetallfloatnos #1=0 }% \fi \let\floatno#1% } % \setref calls this to get the XREFLABEL-snt value. We want an @xref % to the FLOATLABEL to expand to "Figure 3.1". We call \setref when we % first read the @float command. % \def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}% % Magic string used for the XREFLABEL-title value, so \xrefX can % distinguish floats from other xref types. \def\floatmagic{!!float!!} % #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 % \lastsection value which we \setref above. % \def\iffloat#1{\expandafter\doiffloat#1==\finish} % % #1 is (maybe) the \floatmagic string. If so, #2 will be the % (safe) float type for this float. We set \iffloattype to #2. % \def\doiffloat#1=#2=#3\finish{% \def\temp{#1}% \def\iffloattype{#2}% \ifx\temp\floatmagic } % @listoffloats FLOATTYPE - print a list of floats like a table of contents. % \parseargdef\listoffloats{% \def\floattype{#1}% floattype {% % the floattype might have accents or other special characters, % but we need to use it in a control sequence name. \indexnofonts \turnoffactive \xdef\safefloattype{\floattype}% }% % % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE. \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax \ifhavexrefs % if the user said @listoffloats foo but never @float foo. \message{\linenumber No `\safefloattype' floats to list.}% \fi \else \begingroup \leftskip=\tocindent % indent these entries like a toc \let\do=\listoffloatsdo \csname floatlist\safefloattype\endcsname \endgroup \fi } % This is called on each entry in a list of floats. We're passed the % xref label, in the form LABEL-title, which is how we save it in the % aux file. We strip off the -title and look up \XRLABEL-lof, which % has the text we're supposed to typeset here. % % Figures without xref labels will not be included in the list (since % they won't appear in the aux file). % \def\listoffloatsdo#1{\listoffloatsdoentry#1\finish} \def\listoffloatsdoentry#1-title\finish{{% % Can't fully expand XR#1-lof because it can contain anything. Just % pass the control sequence. On the other hand, XR#1-pg is just the % page number, and we want to fully expand that so we can get a link % in pdf output. \toksA = \expandafter{\csname XR#1-lof\endcsname}% % % use the same \entry macro we use to generate the TOC and index. \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}% \writeentry }} \message{localization,} % For single-language documents, @documentlanguage is usually given very % early, just after @documentencoding. Single argument is the language % (de) or locale (de_DE) abbreviation. % { \catcode`\_ = \active \globaldefs=1 \parseargdef\documentlanguage{\begingroup \let_=\normalunderscore % normal _ character for filenames \tex % read txi-??.tex file in plain TeX. % Read the file by the name they passed if it exists. \openin 1 txi-#1.tex \ifeof 1 \documentlanguagetrywithoutunderscore{#1_\finish}% \else \globaldefs = 1 % everything in the txi-LL files needs to persist \input txi-#1.tex \fi \closein 1 \endgroup % end raw TeX \endgroup} } % % If they passed de_DE, and txi-de_DE.tex doesn't exist, % try txi-de.tex. % \def\documentlanguagetrywithoutunderscore#1_#2\finish{% \openin 1 txi-#1.tex \ifeof 1 \errhelp = \nolanghelp \errmessage{Cannot read language file txi-#1.tex}% \else \input txi-#1.tex \fi \closein 1 } % \newhelp\nolanghelp{The given language definition file cannot be found or 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 } % 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 } % @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{~} \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{\guilletright} \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{\missingcharmsg{LATIN CAPITAL LETTER ETH}} \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{\missingcharmsg{LATIN CAPITAL LETTER THORN}} \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{\missingcharmsg{LATIN SMALL LETTER ETH}} \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{\missingcharmsg{LATIN SMALL LETTER THORN}} \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{~} \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{\missingcharmsg{LATIN CAPITAL LETTER D WITH STROKE}} \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{\'\i} \gdef^^ee{\^\i} \gdef^^ef{\v d} % \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER D WITH STROKE}} \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{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{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{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{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 \secheadingskip = 12pt plus 3pt minus 2pt \subsecheadingskip = 9pt plus 2pt minus 2pt % Prevent underfull vbox error messages. \vbadness = 10000 % Don't be so finicky about underfull hboxes, either. \hbadness = 2000 % Following George Bush, get rid of widows and orphans. \widowpenalty=10000 \clubpenalty=10000 % Use TeX 3.0's \emergencystretch to help line breaking, but if we're % using an old version of TeX, don't do anything. We want the amount of % stretch added to depend on the line length, hence the dependence on % \hsize. We call this whenever the paper size is set. % \def\setemergencystretch{% \ifx\emergencystretch\thisisundefined % Allow us to assign to \emergencystretch anyway. \def\emergencystretch{\dimen0}% \else \emergencystretch = .15\hsize \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. % % We also call \setleading{\textleading}, so the caller should define % \textleading. The caller should also set \parskip. % \def\internalpagesizes#1#2#3#4#5#6#7#8{% \voffset = #3\relax \topskip = #6\relax \splittopskip = \topskip % \vsize = #1\relax \advance\vsize by \topskip \outervsize = \vsize \advance\outervsize by 2\topandbottommargin \pageheight = \vsize % \hsize = #2\relax \outerhsize = \hsize \advance\outerhsize by 0.5in \pagewidth = \hsize % \normaloffset = #4\relax \bindingoffset = #5\relax % \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} % \parindent = \defaultparindent \setemergencystretch } % @letterpaper (the default). \def\letterpaper{{\globaldefs = 1 \parskip = 3pt plus 2pt minus 1pt \textleading = 13.2pt % % If page is nothing but text, make it come out even. \internalpagesizes{607.2pt}{6in}% that's 46 lines {\voffset}{.25in}% {\bindingoffset}{36pt}% {11in}{8.5in}% }} % Use @smallbook to reset parameters for 7x9.25 trim size. \def\smallbook{{\globaldefs = 1 \parskip = 2pt plus 1pt \textleading = 12pt % \internalpagesizes{7.5in}{5in}% {-.2in}{0in}% {\bindingoffset}{16pt}% {9.25in}{7in}% % \lispnarrowing = 0.3in \tolerance = 700 \hfuzz = 1pt \contentsrightmargin = 0pt \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 \textleading = 13.2pt % % Double-side printing via postscript on Laserjet 4050 % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm. % To change the settings for a different printer or situation, adjust % \normaloffset until the front-side and back-side texts align. Then % do the same for \bindingoffset. You can set these for testing in % your texinfo source file like this: % @tex % \global\normaloffset = -6mm % \global\bindingoffset = 10mm % @end tex \internalpagesizes{673.2pt}{160mm}% that's 51 lines {\voffset}{\hoffset}% {\bindingoffset}{44pt}% {297mm}{210mm}% % \tolerance = 700 \hfuzz = 1pt \contentsrightmargin = 0pt \defbodyindent = 5mm }} % Use @afivepaper to print on European A5 paper. % From romildo@urano.iceb.ufop.br, 2 July 2000. % He also recommends making @example and @lisp be small. \def\afivepaper{{\globaldefs = 1 \parskip = 2pt plus 1pt minus 0.1pt \textleading = 12.5pt % \internalpagesizes{160mm}{120mm}% {\voffset}{\hoffset}% {\bindingoffset}{8pt}% {210mm}{148mm}% % \lispnarrowing = 0.2in \tolerance = 800 \hfuzz = 1.2pt \contentsrightmargin = 0pt \defbodyindent = 2mm \tableindent = 12mm }} % A specific text layout, 24x15cm overall, intended for A4 paper. \def\afourlatex{{\globaldefs = 1 \afourpaper \internalpagesizes{237mm}{150mm}% {\voffset}{4.6mm}% {\bindingoffset}{7mm}% {297mm}{210mm}% % % Must explicitly reset to 0 because we call \afourpaper. \globaldefs = 0 }} % Use @afourwide to print on A4 paper in landscape format. \def\afourwide{{\globaldefs = 1 \afourpaper \internalpagesizes{241mm}{165mm}% {\voffset}{-2.95mm}% {\bindingoffset}{7mm}% {297mm}{210mm}% \globaldefs = 0 }} % @pagesizes TEXTHEIGHT[,TEXTWIDTH] % Perhaps we should allow setting the margins, \topskip, \parskip, % and/or leading, also. Or perhaps we should compute them somehow. % \parseargdef\pagesizes{\pagesizesyyy #1,,\finish} \def\pagesizesyyy#1,#2,#3\finish{{% \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi \globaldefs = 1 % \parskip = 3pt plus 2pt minus 1pt \setleading{\textleading}% % \dimen0 = #1\relax \advance\dimen0 by \voffset % \dimen2 = \hsize \advance\dimen2 by \normaloffset % \internalpagesizes{#1}{\hsize}% {\voffset}{\normaloffset}% {\bindingoffset}{44pt}% {\dimen0}{\dimen2}% }} % Set default to letter. % \letterpaper \message{and turning on texinfo input format.} % 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 % 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, % where something hairier probably needs to be done. % % #1 is what to print if we are indeed using \tt; #2 is what to print % otherwise. 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, we can check that font parameter. % \def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi} % Same as above, but check for italic font. Actually this also catches % non-italic slanted fonts since it is impossible to distinguish them from % italic fonts. But since this is only used by $ and it uses \sl anyway % this is not a problem. \def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} % Turn off all special characters except @ % (and those which the user can use as if they were ordinary). % Most of these we simply print from the \tt font, but for some, we can % use math or other variants that look better in normal text. \catcode`\"=\active \def\activedoublequote{{\tt\char34}} \let"=\activedoublequote \catcode`\~=\active \def~{{\tt\char126}} \chardef\hat=`\^ \catcode`\^=\active \def^{{\tt \hat}} \catcode`\_=\active \def_{\ifusingtt\normalunderscore\_} \let\realunder=_ % Subroutine for the previous macro. \def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em } \catcode`\|=\active \def|{{\tt\char124}} \chardef \less=`\< \catcode`\<=\active \def<{{\tt \less}} \chardef \gtr=`\> \catcode`\>=\active \def>{{\tt \gtr}} \catcode`\+=\active \def+{{\tt \char 43}} \catcode`\$=\active \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix % If a .fmt file is being used, characters that might appear in a file % name cannot be active until we have parsed the command line. % So turn them off again, and have \everyjob (or @setfilename) turn them on. % \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, % as in \char`\\. \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 @def@normalbackslash{{@tt@backslashcurfont}} % 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. @gdef@rawbackslash{@let\=@backslashcurfont} @gdef@otherbackslash{@let\=@realbackslash} % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of % the literal character `\'. % @def@normalturnoffactive{% @let\=@normalbackslash @let"=@normaldoublequote @let~=@normaltilde @let^=@normalcaret @let_=@normalunderscore @let|=@normalverticalbar @let<=@normalless @let>=@normalgreater @let+=@normalplus @let$=@normaldollar %$ font-lock fix @markupsetuplqdefault @markupsetuprqdefault @unsepspaces } % Make _ and + \other characters, temporarily. % This is canceled by @fixbackslash. @otherifyactive % If a .fmt file is being used, we don't want the `\input texinfo' to show up. % That is what \eatinput is for; after that, the `\' should revert to printing % a backslash. % @gdef@eatinput input texinfo{@fixbackslash} @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 % that, assuming it is called before the first `\' could plausibly occur. % Also turn back on active characters that might appear in the input % file name, in case not using a pre-dumped format. % @gdef@fixbackslash{% @ifx\@eatinput @let\ = @normalbackslash @fi @catcode`+=@active @catcode`@_=@active } % 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 @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) @c page-delimiter: "^\\\\message" @c time-stamp-start: "def\\\\texinfoversion{" @c time-stamp-format: "%:y-%02m-%02d.%02H" @c time-stamp-end: "}" @c End: @c vim:sw=2: @ignore arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115 @end ignore dvipsk_TexLive-2009-stripped/build-aux/ylwrap0000775000175000017500000001407411401164145021235 0ustar uwabamiuwabami#! /bin/sh # ylwrap - wrapper for lex/yacc invocations. scriptversion=2007-11-22.22 # Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005, # 2007 Free Software Foundation, Inc. # # Written by Tom Tromey . # # 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, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. # 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 or send patches to # . case "$1" in '') echo "$0: No files given. Try \`$0 --help' for more information." 1>&2 exit 1 ;; --basedir) basedir=$2 shift 2 ;; -h|--h*) cat <<\EOF Usage: ylwrap [--help|--version] INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]... Wrapper for lex/yacc invocations, renaming files as desired. INPUT is the input file OUTPUT is one file PROG generates DESIRED is the file we actually want instead of OUTPUT PROGRAM is program to run ARGS are passed to PROG Any number of OUTPUT,DESIRED pairs may be used. Report bugs to . EOF exit $? ;; -v|--v*) echo "ylwrap $scriptversion" exit $? ;; esac # The input. input="$1" shift case "$input" in [\\/]* | ?:[\\/]*) # Absolute path; do nothing. ;; *) # Relative path. Make it absolute. input="`pwd`/$input" ;; esac pairlist= while test "$#" -ne 0; do if test "$1" = "--"; then shift break fi pairlist="$pairlist $1" shift done # The program to run. prog="$1" shift # Make any relative path in $prog absolute. case "$prog" in [\\/]* | ?:[\\/]*) ;; *[\\/]*) prog="`pwd`/$prog" ;; esac # FIXME: add hostname here for parallel makes that run commands on # other machines. But that might take us over the 14-char limit. dirname=ylwrap$$ trap "cd '`pwd`'; rm -rf $dirname > /dev/null 2>&1" 1 2 3 15 mkdir $dirname || exit 1 cd $dirname case $# in 0) "$prog" "$input" ;; *) "$prog" "$@" "$input" ;; esac ret=$? if test $ret -eq 0; then set X $pairlist shift first=yes # Since DOS filename conventions don't allow two dots, # the DOS version of Bison writes out y_tab.c instead of y.tab.c # and y_tab.h instead of y.tab.h. Test to see if this is the case. y_tab_nodot="no" if test -f y_tab.c || test -f y_tab.h; then y_tab_nodot="yes" fi # The directory holding the input. input_dir=`echo "$input" | sed -e 's,\([\\/]\)[^\\/]*$,\1,'` # Quote $INPUT_DIR so we can use it in a regexp. # FIXME: really we should care about more than `.' and `\'. input_rx=`echo "$input_dir" | sed 's,\\\\,\\\\\\\\,g;s,\\.,\\\\.,g'` while test "$#" -ne 0; do from="$1" # Handle y_tab.c and y_tab.h output by DOS if test $y_tab_nodot = "yes"; then if test $from = "y.tab.c"; then from="y_tab.c" else if test $from = "y.tab.h"; then from="y_tab.h" fi fi fi if test -f "$from"; then # If $2 is an absolute path name, then just use that, # otherwise prepend `../'. case "$2" in [\\/]* | ?:[\\/]*) target="$2";; *) target="../$2";; esac # We do not want to overwrite a header file if it hasn't # changed. This avoid useless recompilations. However the # parser itself (the first file) should always be updated, # because it is the destination of the .y.c rule in the # Makefile. Divert the output of all other files to a temporary # file so we can compare them to existing versions. if test $first = no; then realtarget="$target" target="tmp-`echo $target | sed s/.*[\\/]//g`" fi # Edit out `#line' or `#' directives. # # We don't want the resulting debug information to point at # an absolute srcdir; it is better for it to just mention the # .y file with no path. # # We want to use the real output file name, not yy.lex.c for # instance. # # We want the include guards to be adjusted too. FROM=`echo "$from" | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'` TARGET=`echo "$2" | sed \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'` sed -e "/^#/!b" -e "s,$input_rx,," -e "s,$from,$2," \ -e "s,$FROM,$TARGET," "$from" >"$target" || ret=$? # Check whether header files must be updated. if test $first = no; then if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then echo "$2" is unchanged rm -f "$target" else echo updating "$2" mv -f "$target" "$realtarget" fi fi else # A missing file is only an error for the first file. This # is a blatant hack to let us support using "yacc -d". If -d # is not specified, we don't want an error when the header # file is "missing". if test $first = yes; then ret=1 fi fi shift shift first=no done else ret=$? fi # Remove the directory. cd .. rm -rf $dirname exit $ret # 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-end: "$" # End: dvipsk_TexLive-2009-stripped/build-aux/depcomp0000775000175000017500000004426711401164145021355 0ustar uwabamiuwabami#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2009-04-28.21; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free # Software Foundation, Inc. # 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 . # 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. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by `PROGRAMS ARGS'. object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputing dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u="sed s,\\\\\\\\,/,g" depmode=msvisualcpp fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler understands `-MD -MF file'. However on # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add `dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # With Tru64 cc, shared objects can also be used to make a # static library. This mechanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # generates 2 separate objects for the 2 libraries. These two # compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 tmpdepfile2=$dir$base.o.d # libtool 1.5 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.o.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # 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: dvipsk_TexLive-2009-stripped/build-aux/missing0000775000175000017500000002623311401164145021370 0ustar uwabamiuwabami#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2009-04-28.21; # UTC # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, # 2008, 2009 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # 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 . # 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. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' sed_minuso='s/.* -o \([^ ]*\).*/\1/p' # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case $1 in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' autom4te touch the output file, or create a stub one automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and \`g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # normalize program name to check for. program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). This is about non-GNU programs, so use $1 not # $program. case $1 in lex*|yacc*) # Not GNU programs, they don't have --version. ;; tar*) if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then exit 1 fi ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case $program in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case $f in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te*) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison*|yacc*) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.h fi ;; esac fi if test ! -f y.tab.h; then echo >y.tab.h fi if test ! -f y.tab.c; then echo 'main() { return 0; }' >y.tab.c fi ;; lex*|flex*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if test ! -f lex.yy.c; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit $? fi ;; makeinfo*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n ' /^@setfilename/{ s/.* \([^ ]*\) *$/\1/ p q }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi # If the file does not exist, the user really needs makeinfo; # let's fail without touching anything. test -f $file || exit 1 touch $file ;; tar*) shift # We have already tried tar in the generic part. # Look for gnutar/gtar before invocation to avoid ugly error # messages. if (gnutar --version > /dev/null 2>&1); then gnutar "$@" && exit 0 fi if (gtar --version > /dev/null 2>&1); then gtar "$@" && exit 0 fi firstarg="$1" if shift; then case $firstarg in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" "$@" && exit 0 ;; esac case $firstarg in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" "$@" && exit 0 ;; esac fi echo 1>&2 "\ WARNING: I can't seem to be able to run \`tar' with the given arguments. You may want to install GNU tar or Free paxutils, or check the command line arguments." exit 1 ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 # Local variables: # 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: dvipsk_TexLive-2009-stripped/build-aux/ltmain.sh0000775000175000017500000073310411401164145021616 0ustar uwabamiuwabami# Generated from ltmain.m4sh. # ltmain.sh (GNU libtool) 2.2.6 # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool 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 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, # or obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Usage: $progname [OPTION]... [MODE-ARG]... # # Provide generalized library-building support services. # # --config show all configuration variables # --debug enable verbose shell tracing # -n, --dry-run display commands without modifying any files # --features display basic configuration information and exit # --mode=MODE use operation mode MODE # --preserve-dup-deps don't remove duplicate dependency libraries # --quiet, --silent don't print informational messages # --tag=TAG use configuration variables from tag TAG # -v, --verbose print informational messages (default) # --version print version information # -h, --help print short or long help message # # MODE must be one of the following: # # clean remove files from the build directory # compile compile a source file into a libtool object # execute automatically set library path, then run a program # finish complete the installation of libtool libraries # install install libraries or executables # link create a library or an executable # uninstall remove libraries from an installed directory # # MODE-ARGS vary depending on the MODE. # Try `$progname --help --mode=MODE' for a more detailed description of MODE. # # When reporting a bug, please describe a test case to reproduce it and # include the following information: # # host-triplet: $host # shell: $SHELL # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) # $progname: (GNU libtool) 2.2.6 # automake: $automake_version # autoconf: $autoconf_version # # Report bugs to . PROGRAM=ltmain.sh PACKAGE=libtool VERSION=2.2.6 TIMESTAMP="" package_revision=1.3012 # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # NLS nuisances: We save the old values to restore during execute mode. # Only set LANG and LC_ALL to C if already set. # These must not be set unconditionally because not all systems understand # e.g. LANG=C (notably SCO). lt_user_locale= lt_safe_locale= for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${$lt_var+set}\" = set; then save_$lt_var=\$$lt_var $lt_var=C export $lt_var lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" fi" done $lt_unset CDPATH : ${CP="cp -f"} : ${ECHO="echo"} : ${EGREP="/usr/bin/grep -E"} : ${FGREP="/usr/bin/grep -F"} : ${GREP="/usr/bin/grep"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SED="/opt/local/bin/gsed"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} : ${Xsed="$SED -e 1s/^X//"} # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. exit_status=$EXIT_SUCCESS # Make sure IFS has a sensible default lt_nl=' ' IFS=" $lt_nl" dirname="s,/[^/]*$,," basename="s,^.*/,," # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` } # Generated shell functions inserted here. # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" # The name of this program: # In the unlikely event $progname began with a '-', it would play havoc with # func_echo (imagine progname=-n), so we prepend ./ in that case: func_dirname_and_basename "$progpath" progname=$func_basename_result case $progname in -*) progname=./$progname ;; esac # Make sure we have an absolute path for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=$func_dirname_result progdir=`cd "$progdir" && pwd` progpath="$progdir/$progname" ;; *) save_IFS="$IFS" IFS=: for progdir in $PATH; do IFS="$save_IFS" test -x "$progdir/$progname" && break done IFS="$save_IFS" test -n "$progdir" || progdir=`pwd` progpath="$progdir/$progname" ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed="${SED}"' -e 1s/^X//' sed_quote_subst='s/\([`"$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Re-`\' parameter expansions in output of double_quote_subst that were # `\'-ed in input to the same. If an odd number of `\' preceded a '$' # in input to double_quote_subst, that '$' was protected from expansion. # Since each input `\' is now two `\'s, look for any number of runs of # four `\'s followed by two `\'s and then a '$'. `\' that '$'. bs='\\' bs2='\\\\' bs4='\\\\\\\\' dollar='\$' sed_double_backslash="\ s/$bs4/&\\ /g s/^$bs2$dollar/$bs&/ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g s/\n//g" # Standard options: opt_dry_run=false opt_help=false opt_quiet=false opt_verbose=false opt_warning=: # func_echo arg... # Echo program name prefixed message, along with the current mode # name if it has been set yet. func_echo () { $ECHO "$progname${mode+: }$mode: $*" } # func_verbose arg... # Echo program name prefixed message in verbose mode only. func_verbose () { $opt_verbose && func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_error arg... # Echo program name prefixed message to standard error. func_error () { $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 } # func_warning arg... # Echo program name prefixed warning message to standard error. func_warning () { $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 # bash bug again: : } # func_fatal_error arg... # Echo program name prefixed message to standard error, and exit. func_fatal_error () { func_error ${1+"$@"} exit $EXIT_FAILURE } # func_fatal_help arg... # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { func_error ${1+"$@"} func_fatal_error "$help" } help="Try \`$progname --help' for more information." ## default # func_grep expression filename # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $GREP "$1" "$2" >/dev/null 2>&1 } # func_mkdir_p directory-path # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { my_directory_path="$1" my_dir_list= if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then # Protect directory names starting with `-' case $my_directory_path in -*) my_directory_path="./$my_directory_path" ;; esac # While some portion of DIR does not yet exist... while test ! -d "$my_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. my_dir_list="$my_directory_path:$my_dir_list" # If the last portion added has no slash in it, the list is done case $my_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` done my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` save_mkdir_p_IFS="$IFS"; IFS=':' for my_dir in $my_dir_list; do IFS="$save_mkdir_p_IFS" # mkdir can fail with a `File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$my_dir" 2>/dev/null || : done IFS="$save_mkdir_p_IFS" # Bail out if we (or some other process) failed to create a directory. test -d "$my_directory_path" || \ func_fatal_error "Failed to create \`$1'" fi } # func_mktempdir [string] # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, STRING is the basename for that directory. func_mktempdir () { my_template="${TMPDIR-/tmp}/${1-$progname}" if test "$opt_dry_run" = ":"; then # Return a directory name, but don't create it in dry-run mode my_tmpdir="${my_template}-$$" else # If mktemp works, use that first and foremost my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` if test ! -d "$my_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race my_tmpdir="${my_template}-${RANDOM-0}$$" save_mktempdir_umask=`umask` umask 0077 $MKDIR "$my_tmpdir" umask $save_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$my_tmpdir" || \ func_fatal_error "cannot create temporary directory \`$my_tmpdir'" fi $ECHO "X$my_tmpdir" | $Xsed } # func_quote_for_eval arg # Aesthetically quote ARG to be evaled later. # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT # is double-quoted, suitable for a subsequent eval, whereas # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters # which are still active within double quotes backslashified. func_quote_for_eval () { case $1 in *[\\\`\"\$]*) func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; *) func_quote_for_eval_unquoted_result="$1" ;; esac case $func_quote_for_eval_unquoted_result in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and and variable # expansion for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" ;; *) func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" esac } # func_quote_for_expand arg # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { case $1 in *[\\\`\"]*) my_arg=`$ECHO "X$1" | $Xsed \ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; *) my_arg="$1" ;; esac case $my_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") my_arg="\"$my_arg\"" ;; esac func_quote_for_expand_result="$my_arg" } # func_show_eval cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$my_cmd" my_status=$? if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_show_eval_locale cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$lt_user_locale $my_cmd" my_status=$? eval "$lt_safe_locale" if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_version # Echo version message to standard output and exit. func_version () { $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { s/^# // s/^# *$// s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ p }' < "$progpath" exit $? } # func_usage # Echo short help message to standard output and exit. func_usage () { $SED -n '/^# Usage:/,/# -h/ { s/^# // s/^# *$// s/\$progname/'$progname'/ p }' < "$progpath" $ECHO $ECHO "run \`$progname --help | more' for full usage" exit $? } # func_help # Echo long help message to standard output and exit. func_help () { $SED -n '/^# Usage:/,/# Report bugs to/ { s/^# // s/^# *$// s*\$progname*'$progname'* s*\$host*'"$host"'* s*\$SHELL*'"$SHELL"'* s*\$LTCC*'"$LTCC"'* s*\$LTCFLAGS*'"$LTCFLAGS"'* s*\$LD*'"$LD"'* s/\$with_gnu_ld/'"$with_gnu_ld"'/ s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ p }' < "$progpath" exit $? } # func_missing_arg argname # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { func_error "missing argument for $1" exit_cmd=exit } exit_cmd=: # Check that we have a working $ECHO. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then # Yippee, $ECHO works! : else # Restart under the correct shell, and then maybe $ECHO will work. exec $SHELL "$progpath" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # Parse options once, thoroughly. This comes as soon as possible in # the script to make things like `libtool --version' happen quickly. { # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Parse non-mode specific arguments: while test "$#" -gt 0; do opt="$1" shift case $opt in --config) func_config ;; --debug) preserve_args="$preserve_args $opt" func_echo "enabling shell trace mode" opt_debug='set -x' $opt_debug ;; -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break execute_dlfiles="$execute_dlfiles $1" shift ;; --dry-run | -n) opt_dry_run=: ;; --features) func_features ;; --finish) mode="finish" ;; --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break case $1 in # Valid mode arguments: clean) ;; compile) ;; execute) ;; finish) ;; install) ;; link) ;; relink) ;; uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $opt" exit_cmd=exit break ;; esac mode="$1" shift ;; --preserve-dup-deps) opt_duplicate_deps=: ;; --quiet|--silent) preserve_args="$preserve_args $opt" opt_silent=: ;; --verbose| -v) preserve_args="$preserve_args $opt" opt_silent=false ;; --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break preserve_args="$preserve_args $opt $1" func_enable_tag "$1" # tagname is set here shift ;; # Separate optargs to long options: -dlopen=*|--mode=*|--tag=*) func_opt_split "$opt" set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} shift ;; -\?|-h) func_usage ;; --help) opt_help=: ;; --version) func_version ;; -*) func_fatal_help "unrecognized option \`$opt'" ;; *) nonopt="$opt" break ;; esac done case $host in *cygwin* | *mingw* | *pw32* | *cegcc*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_duplicate_deps ;; esac # Having warned about all mis-specified options, bail out if # anything was wrong. $exit_cmd $EXIT_FAILURE } # func_check_version_match # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } ## ----------- ## ## Main. ## ## ----------- ## $opt_help || { # Sanity checks first: func_check_version_match if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then func_fatal_configuration "not configured to build any kind of library" fi test -z "$mode" && func_fatal_error "error: you must specify a MODE." # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$execute_dlfiles" && test "$mode" != execute; then func_error "unrecognized option \`-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$progname --help --mode=$mode' for more information." } # func_lalib_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null \ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_unsafe_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if `file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case "$lalib_p_line" in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test "$lalib_p" = yes } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { func_lalib_p "$1" } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_ltwrapper_scriptname_result="" if func_ltwrapper_executable_p "$1"; then func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" fi } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $opt_debug save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$save_ifs eval cmd=\"$cmd\" func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # `FILE.' does not work on cygwin managed mounts. func_source () { $opt_debug case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $opt_debug if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_quote_for_eval "$arg" CC_quoted="$CC_quoted $func_quote_for_eval_result" done case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_quote_for_eval "$arg" CC_quoted="$CC_quoted $func_quote_for_eval_result" done case "$@ " in " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with \`--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=${1} if test "$build_libtool_libs" = yes; then write_lobj=\'${2}\' else write_lobj=none fi if test "$build_old_libs" = yes; then write_oldobj=\'${3}\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T <?"'"'"' &()|`$[]' \ && func_warning "libobj name \`$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname="$func_basename_result" xdir="$func_dirname_result" lobj=${xdir}$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi removelist="$removelist $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist removelist="$removelist $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 if test -n "$fix_srcfile_path"; then eval srcfile=\"$fix_srcfile_path\" fi func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir command="$command -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test "$suppress_opt" = yes; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; then command="$command -o $obj" fi # Suppress compiler output if we already did a PIC compilation. command="$command$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test "$need_locks" != no; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test "$mode" = compile && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to building PIC objects only -prefer-non-pic try to building non-PIC objects only -shared do not build a \`.o' file suitable for static linking -static only build a \`.o' file suitable for static linking COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode \`$mode'" ;; esac $ECHO $ECHO "Try \`$progname --help' for more information about other modes." exit $? } # Now that we've collected a possible --mode arg, show help if necessary $opt_help && func_mode_help # func_mode_execute arg... func_mode_execute () { $opt_debug # The first argument is the command name. cmd="$nonopt" test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $execute_dlfiles; do test -f "$file" \ || func_fatal_help "\`$file' is not a file" dir= case $file in *.la) # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "\`$file' was not linked with \`-export-dynamic'" continue fi func_dirname "$file" "" "." dir="$func_dirname_result" if test -f "$dir/$objdir/$dlname"; then dir="$dir/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir="$func_dirname_result" ;; *) func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -*) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file="$progdir/$program" elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). func_quote_for_eval "$file" args="$args $func_quote_for_eval_result" done if test "X$opt_dry_run" = Xfalse; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" $ECHO "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS fi } test "$mode" = execute && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $opt_debug libdirs="$nonopt" admincmds= if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for dir do libdirs="$libdirs $dir" done for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || admincmds="$admincmds $cmds" fi done fi # Exit here if they wanted silent mode. $opt_silent && exit $EXIT_SUCCESS $ECHO "X----------------------------------------------------------------------" | $Xsed $ECHO "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done $ECHO $ECHO "If you ever happen to want to link against installed libraries" $ECHO "in a given directory, LIBDIR, you must either use libtool, and" $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" $ECHO "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" $ECHO " during execution" fi if test -n "$runpath_var"; then $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" $ECHO " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi $ECHO $ECHO "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" $ECHO "pages." ;; *) $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac $ECHO "X----------------------------------------------------------------------" | $Xsed exit $EXIT_SUCCESS } test "$mode" = finish && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $opt_debug # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. $ECHO "X$nonopt" | $GREP shtool >/dev/null; then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" install_prog="$install_prog$func_quote_for_eval_result" # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= for arg do if test -n "$dest"; then files="$files $dest" dest=$arg continue fi case $arg in -d) isdir=yes ;; -f) case " $install_prog " in *[\\\ /]cp\ *) ;; *) prev=$arg ;; esac ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" install_prog="$install_prog $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the \`$prev' option requires an argument" if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else func_dirname_and_basename "$dest" "" "." destdir="$func_dirname_result" destname="$func_basename_result" # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "\`$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "\`$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. staticlibs="$staticlibs $file" ;; *.la) # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) current_libdirs="$current_libdirs $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) future_libdirs="$future_libdirs $libdir" ;; esac fi func_dirname "$file" "/" "" dir="$func_dirname_result" dir="$dir$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` fi func_warning "relinking \`$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname="$1" shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme="$stripme" case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme="" ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try `ln -sf' first, because the `ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib="$destdir/$realname" func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name="$func_basename_result" instname="$dir/$name"i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest="$destfile" destfile= ;; *) func_fatal_help "cannot copy a libtool object to \`$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script \`$wrapper'" finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then func_warning "\`$lib' has not been installed in \`$libdir'" finalize=no fi done relink_command= func_source "$wrapper" outputname= if test "$fast_install" = no && test -n "$relink_command"; then $opt_dry_run || { if test "$finalize" = yes; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file="$func_basename_result" outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` $opt_silent || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink \`$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file="$outputname" else func_warning "cannot relink \`$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name="$func_basename_result" # Set up the ranlib parameters. oldlib="$destdir/$name" func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run \`$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test "$mode" = install && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $opt_debug my_outputname="$1" my_originator="$2" my_pic_p="${3-no}" my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms="${my_outputname}S.c" else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${my_outputname}.nm" func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then func_verbose "generating symbol list for \`$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` for progfile in $progfiles; do func_verbose "extracting global C symbols from \`$progfile'" $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$outputname.exp" $opt_dry_run || { $RM $export_symbols eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from \`$dlprefile'" func_basename "$dlprefile" name="$func_basename_result" $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" } done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" fi $ECHO >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; " case $host in *cygwin* | *mingw* | *cegcc* ) $ECHO >> "$output_objdir/$my_dlsyms" "\ /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */" lt_dlsym_const= ;; *osf5*) echo >> "$output_objdir/$my_dlsyms" "\ /* This system does not cope well with relocations in const data */" lt_dlsym_const= ;; *) lt_dlsym_const=const ;; esac $ECHO >> "$output_objdir/$my_dlsyms" "\ extern $lt_dlsym_const lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[]; $lt_dlsym_const lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = {\ { \"$my_originator\", (void *) 0 }," case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac $ECHO >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) if test "X$my_pic_p" != Xno; then pic_flag_for_symtable=" $pic_flag" fi ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) symtab_cflags="$symtab_cflags $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' # Transform the symbol file into the correct name. symfileobj="$output_objdir/${my_outputname}S.$objext" case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for \`$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` fi } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. func_win32_libid () { $opt_debug win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then win32_nmres=`eval $NM -f posix -A $1 | $SED -n -e ' 1,100{ / I /{ s,.*,import, p q } }'` case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_extract_an_archive dir oldlib func_extract_an_archive () { $opt_debug f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $opt_debug my_gentop="$1"; shift my_oldlibs=${1+"$@"} my_oldobjs="" my_xlib="" my_xabs="" my_xdir="" for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib="$func_basename_result" my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir="$my_gentop/$my_xlib_u" func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` darwin_base_archive=`basename "$darwin_archive"` darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches ; do func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" func_extract_an_archive "`pwd`" "${darwin_base_archive}" cd "$darwin_curdir" $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` done func_extract_archives_result="$my_oldobjs" } # func_emit_wrapper_part1 [arg=no] # # Emit the first part of a libtool wrapper script on stdout. # For more information, see the description associated with # func_emit_wrapper(), below. func_emit_wrapper_part1 () { func_emit_wrapper_part1_arg1=no if test -n "$1" ; then func_emit_wrapper_part1_arg1=$1 fi $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='${SED} -e 1s/^X//' sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then ECHO=\"$qecho\" file=\"\$0\" # Make sure echo works. if test \"X\$1\" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then # Yippee, \$ECHO works! : else # Restart under the correct shell, and then maybe \$ECHO will work. exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} fi fi\ " $ECHO "\ # Find the directory that this script lives in. thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` done " } # end: func_emit_wrapper_part1 # func_emit_wrapper_part2 [arg=no] # # Emit the second part of a libtool wrapper script on stdout. # For more information, see the description associated with # func_emit_wrapper(), below. func_emit_wrapper_part2 () { func_emit_wrapper_part2_arg1=no if test -n "$1" ; then func_emit_wrapper_part2_arg1=$1 fi $ECHO "\ # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` export $shlibpath_var " fi # fixup the dll searchpath if we need to. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 fi else # The program doesn't exist. \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # end: func_emit_wrapper_part2 # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory in which it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=no if test -n "$1" ; then func_emit_wrapper_arg1=$1 fi # split this up so that func_emit_cwrapperexe_src # can call each part independently. func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" } # func_to_host_path arg # # Convert paths to host format when used with build tools. # Intended for use with "native" mingw (where libtool itself # is running under the msys shell), or in the following cross- # build environments: # $build $host # mingw (msys) mingw [e.g. native] # cygwin mingw # *nix + wine mingw # where wine is equipped with the `winepath' executable. # In the native mingw case, the (msys) shell automatically # converts paths for any non-msys applications it launches, # but that facility isn't available from inside the cwrapper. # Similar accommodations are necessary for $host mingw and # $build cygwin. Calling this function does no harm for other # $host/$build combinations not listed above. # # ARG is the path (on $build) that should be converted to # the proper representation for $host. The result is stored # in $func_to_host_path_result. func_to_host_path () { func_to_host_path_result="$1" if test -n "$1" ; then case $host in *mingw* ) lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' case $build in *mingw* ) # actually, msys # awkward: cmd appends spaces to result lt_sed_strip_trailing_spaces="s/[ ]*\$//" func_to_host_path_tmp1=`( cmd //c echo "$1" |\ $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ $SED -e "$lt_sed_naive_backslashify"` ;; *cygwin* ) func_to_host_path_tmp1=`cygpath -w "$1"` func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ $SED -e "$lt_sed_naive_backslashify"` ;; * ) # Unfortunately, winepath does not exit with a non-zero # error code, so we are forced to check the contents of # stdout. On the other hand, if the command is not # found, the shell will set an exit code of 127 and print # *an error message* to stdout. So we must check for both # error code of zero AND non-empty stdout, which explains # the odd construction: func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ $SED -e "$lt_sed_naive_backslashify"` else # Allow warning below. func_to_host_path_result="" fi ;; esac if test -z "$func_to_host_path_result" ; then func_error "Could not determine host path corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_path_result="$1" fi ;; esac fi } # end: func_to_host_path # func_to_host_pathlist arg # # Convert pathlists to host format when used with build tools. # See func_to_host_path(), above. This function supports the # following $build/$host combinations (but does no harm for # combinations not listed here): # $build $host # mingw (msys) mingw [e.g. native] # cygwin mingw # *nix + wine mingw # # Path separators are also converted from $build format to # $host format. If ARG begins or ends with a path separator # character, it is preserved (but converted to $host format) # on output. # # ARG is a pathlist (on $build) that should be converted to # the proper representation on $host. The result is stored # in $func_to_host_pathlist_result. func_to_host_pathlist () { func_to_host_pathlist_result="$1" if test -n "$1" ; then case $host in *mingw* ) lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_to_host_pathlist_tmp2="$1" # Once set for this call, this variable should not be # reassigned. It is used in tha fallback case. func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ $SED -e 's|^:*||' -e 's|:*$||'` case $build in *mingw* ) # Actually, msys. # Awkward: cmd appends spaces to result. lt_sed_strip_trailing_spaces="s/[ ]*\$//" func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ $SED -e "$lt_sed_naive_backslashify"` ;; *cygwin* ) func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ $SED -e "$lt_sed_naive_backslashify"` ;; * ) # unfortunately, winepath doesn't convert pathlists func_to_host_pathlist_result="" func_to_host_pathlist_oldIFS=$IFS IFS=: for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do IFS=$func_to_host_pathlist_oldIFS if test -n "$func_to_host_pathlist_f" ; then func_to_host_path "$func_to_host_pathlist_f" if test -n "$func_to_host_path_result" ; then if test -z "$func_to_host_pathlist_result" ; then func_to_host_pathlist_result="$func_to_host_path_result" else func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" fi fi fi IFS=: done IFS=$func_to_host_pathlist_oldIFS ;; esac if test -z "$func_to_host_pathlist_result" ; then func_error "Could not determine the host path(s) corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This may break if $1 contains DOS-style drive # specifications. The fix is not to complicate the expression # below, but for the user to provide a working wine installation # with winepath so that path translation in the cross-to-mingw # case works properly. lt_replace_pathsep_nix_to_dos="s|:|;|g" func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ $SED -e "$lt_replace_pathsep_nix_to_dos"` fi # Now, add the leading and trailing path separators back case "$1" in :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" ;; esac case "$1" in *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" ;; esac ;; esac fi } # end: func_to_host_pathlist # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include # define setmode _setmode #else # include # include # ifdef __CYGWIN__ # include # define HAVE_SETENV # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif # endif #endif #include #include #include #include #include #include #include #include #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif #ifdef _MSC_VER # define S_IXUSR _S_IEXEC # define stat _stat # ifndef _INTPTR_T_DEFINED # define intptr_t int # endif #endif #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifdef __CYGWIN__ # define FOPEN_WB "wb" #endif #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) #undef LTWRAPPER_DEBUGPRINTF #if defined DEBUGWRAPPER # define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args static void ltwrapper_debugprintf (const char *fmt, ...) { va_list args; va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } #else # define LTWRAPPER_DEBUGPRINTF(args) #endif const char *program_name = NULL; void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_fatal (const char *message, ...); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_opt_process_env_set (const char *arg); void lt_opt_process_env_prepend (const char *arg); void lt_opt_process_env_append (const char *arg); int lt_split_name_value (const char *arg, char** name, char** value); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); static const char *script_text_part1 = EOF func_emit_wrapper_part1 yes | $SED -e 's/\([\\"]\)/\\\1/g' \ -e 's/^/ "/' -e 's/$/\\n"/' echo ";" cat <"))); for (i = 0; i < newargc; i++) { LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : ""))); } EOF case $host_os in mingw*) cat <<"EOF" /* execv doesn't actually work on mingw as expected on unix */ rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); if (rval == -1) { /* failed to start process */ LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); return 127; } return rval; EOF ;; *) cat <<"EOF" execv (lt_argv_zero, newargz); return rval; /* =127, but avoids unused variable warning */ EOF ;; esac cat <<"EOF" } void * xmalloc (size_t num) { void *p = (void *) malloc (num); if (!p) lt_fatal ("Memory exhausted"); return p; } char * xstrdup (const char *string) { return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL; } const char * base_name (const char *name) { const char *base; #if defined (HAVE_DOS_BASED_FILE_SYSTEM) /* Skip over the disk name in MSDOS pathnames. */ if (isalpha ((unsigned char) name[0]) && name[1] == ':') name += 2; #endif for (base = name; *name; name++) if (IS_DIR_SEPARATOR (*name)) base = name + 1; return base; } int check_executable (const char *path) { struct stat st; LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!")); if ((!path) || (!*path)) return 0; if ((stat (path, &st) >= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!")); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; int tmp_len; char *concat_name; LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined (HAVE_DOS_BASED_FILE_SYSTEM) } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = q - p; p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal ("getcwd failed"); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal ("getcwd failed"); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", tmp_pathspec)); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { char *errstr = strerror (errno); lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal ("Could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (strcmp (str, pat) == 0) *str = '\0'; } return str; } static void lt_error_core (int exit_status, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s: %s: ", program_name, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, "FATAL", message, ap); va_end (ap); } void lt_setenv (const char *name, const char *value) { LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", (name ? name : ""), (value ? value : ""))); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else int len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { int orig_value_len = strlen (orig_value); int add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } int lt_split_name_value (const char *arg, char** name, char** value) { const char *p; int len; if (!arg || !*arg) return 1; p = strchr (arg, (int)'='); if (!p) return 1; *value = xstrdup (++p); len = strlen (arg) - strlen (*value); *name = XMALLOC (char, len); strncpy (*name, arg, len-1); (*name)[len - 1] = '\0'; return 0; } void lt_opt_process_env_set (const char *arg) { char *name = NULL; char *value = NULL; if (lt_split_name_value (arg, &name, &value) != 0) { XFREE (name); XFREE (value); lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); } lt_setenv (name, value); XFREE (name); XFREE (value); } void lt_opt_process_env_prepend (const char *arg) { char *name = NULL; char *value = NULL; char *new_value = NULL; if (lt_split_name_value (arg, &name, &value) != 0) { XFREE (name); XFREE (value); lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); } new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); XFREE (name); XFREE (value); } void lt_opt_process_env_append (const char *arg) { char *name = NULL; char *value = NULL; char *new_value = NULL; if (lt_split_name_value (arg, &name, &value) != 0) { XFREE (name); XFREE (value); lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); } new_value = lt_extend_str (getenv (name), value, 1); lt_setenv (name, new_value); XFREE (new_value); XFREE (name); XFREE (value); } void lt_update_exe_path (const char *name, const char *value) { LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", (name ? name : ""), (value ? value : ""))); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ int len = strlen (new_value); while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[len-1] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", (name ? name : ""), (value ? value : ""))); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF } # end: func_emit_cwrapperexe_src # func_mode_link arg... func_mode_link () { $opt_debug case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=no prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module="${wl}-single_module" func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" else dlprefiles="$dlprefiles $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" test -f "$arg" \ || func_fatal_error "symbol file \`$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) deplibs="$deplibs $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # moreargs="$moreargs $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file \`$arg' does not exist" fi arg=$save_arg prev= continue ;; precious_regex) precious_files_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) rpath="$rpath $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) xrpath="$xrpath $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds="$arg" prev= continue ;; weak) weak_libs="$weak_libs $arg" prev= continue ;; xcclinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) compiler_flags="$compiler_flags $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "\`-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname '-L' '' "$arg" dir=$func_stripname_result if test -z "$dir"; then if test "$#" -gt 0; then func_fatal_error "require no space between \`-L' and \`$1'" else func_fatal_error "need path for \`-L' option" fi fi # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of \`$dir'" dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "*) ;; *) deplibs="$deplibs -L$dir" lib_search_path="$lib_search_path $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) dllsearchpath="$dllsearchpath:$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) dllsearchpath="$dllsearchpath:$testbindir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework deplibs="$deplibs System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test "X$arg" = "X-lc" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test "X$arg" = "X-lc" && continue ;; esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi deplibs="$deplibs $arg" continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot) compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; esac continue ;; -multi_module) single_module="${wl}-multi_module" continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "\`-no-install' is ignored for $host" func_warning "assuming \`-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" arg="$arg $wl$func_quote_for_eval_result" compiler_flags="$compiler_flags $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" arg="$arg $wl$func_quote_for_eval_result" compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" linker_flags="$linker_flags $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; # -64, -mips[0-9] enable 64-bit mode on the SGI compiler # -r[0-9][0-9]* specifies the processor on the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler # +DA*, +DD* enable 64-bit mode on the HP compiler # -q* pass through compiler args for the IBM compiler # -m*, -t[45]*, -txscale* pass through architecture-specific # compiler args for GCC # -F/path gives path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC # @file GCC response files -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" func_append compile_command " $arg" func_append finalize_command " $arg" compiler_flags="$compiler_flags $arg" continue ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; *.$objext) # A standard object. objs="$objs $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. deplibs="$deplibs $arg" old_deplibs="$old_deplibs $arg" continue ;; *.la) # A libtool-controlled library. if test "$prev" = dlfiles; then # This library was specified with -dlopen. dlfiles="$dlfiles $arg" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. dlprefiles="$dlprefiles $arg" prev= else deplibs="$deplibs $arg" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the \`$prevarg' option requires an argument" if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname="$func_basename_result" libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" func_dirname "$output" "/" "" output_objdir="$func_dirname_result$objdir" # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_duplicate_deps ; then case "$libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi libs="$libs $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; esac pre_post_deps="$pre_post_deps $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test "$linkmode,$pass" = "lib,link"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs="$tmp_deplibs" fi if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi if test "$linkmode,$pass" = "lib,dlpreopen"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= case $lib in *.la) func_source "$lib" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` case " $weak_libs " in *" $deplib_base "*) ;; *) deplibs="$deplibs $deplib" ;; esac done done libs="$dlprefiles" fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else compiler_flags="$compiler_flags $deplib" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; esac fi fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then func_warning "\`-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test "$linkmode" = lib; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then if test "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no func_dirname "$lib" "" "." ladir="$func_dirname_result" lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l *.ltframework) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" newlib_search_path="$newlib_search_path $func_stripname_result" ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" newlib_search_path="$newlib_search_path $func_stripname_result" ;; *) func_warning "\`-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then func_stripname '-R' '' "$deplib" dir=$func_stripname_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) lib="$deplib" ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=no case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi ;; pass_all) valid_a_lib=yes ;; esac if test "$valid_a_lib" != yes; then $ECHO $ECHO "*** Warning: Trying to link with static lib archive $deplib." $ECHO "*** I have the capability to make that library automatically link in when" $ECHO "*** you link to this library. But I can only do this if you have a" $ECHO "*** shared version of the library, which you do not appear to have" $ECHO "*** because the file extensions .$libext of this argument makes me believe" $ECHO "*** that it is just a static archive that I should not use here." else $ECHO $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi ;; esac continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. newdlprefiles="$newdlprefiles $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else newdlfiles="$newdlfiles $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" fi # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "\`$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir="$func_dirname_result" dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && dlfiles="$dlfiles $dlopen" test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # It is a libtool convenience library, so add in its objects. convenience="$convenience $ladir/$objdir/$old_library" old_convenience="$old_convenience $ladir/$objdir/$old_library" elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_duplicate_deps ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done continue fi # $pass = conv # Get the name of the library we link against. linklib= for l in $old_library $library_names; do linklib="$l" done if test -z "$linklib"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then func_fatal_error "cannot -dlopen a convenience library: \`$lib'" fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. dlprefiles="$dlprefiles $lib $dependency_libs" else newdlfiles="$newdlfiles $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of \`$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir="$ladir" fi ;; esac func_basename "$lib" laname="$func_basename_result" # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library \`$lib' was moved." dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$libdir" absdir="$libdir" fi test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir="$ladir" absdir="$abs_ladir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir" && test "$linkmode" = prog; then func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" fi # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then newdlprefiles="$newdlprefiles $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then newdlprefiles="$newdlprefiles $dir/$dlname" else newdlprefiles="$newdlprefiles $dir/$linklib" fi fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then newlib_search_path="$newlib_search_path $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" newlib_search_path="$newlib_search_path $func_stripname_result" ;; esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_duplicate_deps ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { { test "$prefer_static_libs" = no || test "$prefer_static_libs,$installed" = "built,yes"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then # Make sure the rpath contains only unique directories. case "$temp_rpath:" in *"$absdir:"*) ;; *) temp_rpath="$temp_rpath$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test "$use_static_libs" = built && test "$installed" = yes; then use_static_libs=no fi if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc*) # No point in relinking DLLs because paths are not encoded notinst_deplibs="$notinst_deplibs $lib" need_relink=no ;; *) if test "$installed" = no; then notinst_deplibs="$notinst_deplibs $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule="" for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule="$dlpremoduletest" break fi done if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then $ECHO if test "$linkmode" = prog; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname="$1" shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc*) func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" func_basename "$soroot" soname="$func_basename_result" func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from \`$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for \`$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; *-*-sysv4*uw2*) add_dir="-L$dir" ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we can not # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null ; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library" ; then $ECHO $ECHO "*** And there doesn't seem to be a static archive available" $ECHO "*** The link will probably fail, sorry" else add="$dir/$old_library" fi elif test -n "$old_library"; then add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$dir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && test "$hardcode_minus_L" != yes && test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. $ECHO $ECHO "*** Warning: This system can not link to static lib archive $lib." $ECHO "*** I have the capability to make that library automatically link in when" $ECHO "*** you link to this library. But I can only do this if you have a" $ECHO "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then $ECHO "*** But as you try to build a module library, libtool will still create " $ECHO "*** a static module, that should work as long as the dlopening application" $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then $ECHO $ECHO "*** However, this would only work if libtool was able to extract symbol" $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" $ECHO "*** not find such a program. So, this module is probably useless." $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) xrpath="$xrpath $temp_xrpath";; esac;; *) temp_deplibs="$temp_deplibs $libdir";; esac done dependency_libs="$temp_deplibs" fi newlib_search_path="$newlib_search_path $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" if $opt_duplicate_deps ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do case $deplib in -L*) path="$deplib" ;; *.la) func_dirname "$deplib" "" "." dir="$func_dirname_result" # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of \`$dir'" absdir="$dir" fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl" ; then depdepl="$absdir/$objdir/$depdepl" darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" path= fi fi ;; *) path="-L$absdir/$objdir" ;; esac else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "\`$deplib' seems to be moved" path="-L$absdir" fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test "$pass" = link; then if test "$linkmode" = "prog"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) lib_search_path="$lib_search_path $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) tmp_libs="$tmp_libs $deplib" ;; esac ;; *) tmp_libs="$tmp_libs $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then tmp_libs="$tmp_libs $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" fi if test "$linkmode" = prog || test "$linkmode" = lib; then dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "\`-R' is ignored for archives" test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "\`-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "\`-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" objs="$objs$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test "$module" = no && \ func_fatal_help "libtool library \`$output' must begin with \`lib'" if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" else $ECHO $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" libobjs="$libobjs $objs" fi fi test "$dlself" != no && \ func_warning "\`-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test "$#" -gt 1 && \ func_warning "ignoring multiple \`-rpath's for a libtool library" install_libdir="$1" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "\`-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 shift IFS="$save_ifs" test -n "$7" && \ func_fatal_help "too many parameters to \`-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$1" number_minor="$2" number_revision="$3" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in darwin|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_minor" lt_irix_increment=no ;; esac ;; no) current="$1" revision="$2" age="$3" ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT \`$current' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION \`$revision' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE \`$age' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE \`$age' is greater than the current interface number \`$current'" func_fatal_error "\`$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current" ;; irix | nonstopux) if test "X$lt_irix_increment" = "Xno"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring:${iface}.0" done # Make executables depend on our current version. verstring="$verstring:${current}.0" ;; qnx) major=".$current" versuffix=".$current" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; *) func_fatal_configuration "unknown library version type \`$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then func_warning "undefined symbols not allowed in $host shared libraries" build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi func_generate_dlsyms "$libname" "$libname" "yes" libobjs="$libobjs $symfileobj" test "X$libobjs" = "X " && libobjs= if test "$mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi removelist="$removelist $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then oldlibs="$oldlibs $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do temp_xrpath="$temp_xrpath -R$libdir" case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) dlfiles="$dlfiles $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) dlprefiles="$dlprefiles $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework deplibs="$deplibs System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then deplibs="$deplibs -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $ECHO $ECHO "*** Warning: linker path does not have real file for library $a_deplib." $ECHO "*** I have the capability to make that library automatically link in when" $ECHO "*** you link to this library. But I can only do this if you have a" $ECHO "*** shared version of the library, which you do not appear to have" $ECHO "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) newdeplibs="$newdeplibs $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $ECHO $ECHO "*** Warning: linker path does not have real file for library $a_deplib." $ECHO "*** I have the capability to make that library automatically link in when" $ECHO "*** you link to this library. But I can only do this if you have a" $ECHO "*** shared version of the library, which you do not appear to have" $ECHO "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` done fi if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | $GREP . >/dev/null; then $ECHO if test "X$deplibs_check_method" = "Xnone"; then $ECHO "*** Warning: inter-library dependencies are not supported in this platform." else $ECHO "*** Warning: inter-library dependencies are not known to be supported." fi $ECHO "*** All declared inter-library dependencies are being dropped." droppeddeps=yes fi ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then $ECHO $ECHO "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" $ECHO "*** a static module, that should work as long as the dlopening" $ECHO "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then $ECHO $ECHO "*** However, this would only work if libtool was able to extract symbol" $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" $ECHO "*** not find such a program. So, this module is probably useless." $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else $ECHO "*** The inter-library dependencies that have been dropped here will be" $ECHO "*** automatically added whenever a program is linked with this library" $ECHO "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then $ECHO $ECHO "*** Since this library must not contain undefined symbols," $ECHO "*** because either the platform does not support them or" $ECHO "*** it was explicitly requested with -no-undefined," $ECHO "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) new_libs="$new_libs -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$new_libs $deplib" ;; esac ;; *) new_libs="$new_libs $deplib" ;; esac done deplibs="$new_libs" # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" dep_rpath="$dep_rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" if test -n "$hardcode_libdir_flag_spec_ld"; then eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" else eval dep_rpath=\"$hardcode_libdir_flag_spec\" fi fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname="$1" shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" linknames= for link do linknames="$linknames $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols="$output_objdir/$libname.uexp" delfiles="$delfiles $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile if test "x`$SED 1q $export_symbols`" != xEXPORTS; then # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols="$export_symbols" export_symbols= always_export_symbols=yes fi fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" func_len " $cmd" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then func_show_eval "$cmd" 'exit $?' skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS="$save_ifs" if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' fi if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) tmp_deplibs="$tmp_deplibs $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test "$compiler_needs_object" = yes && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $convenience libobjs="$libobjs $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" linker_flags="$linker_flags $flag" fi # Make a backup of the uninstalled library when relinking if test "$mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output output_la=`$ECHO "X$output" | $Xsed -e "$basename"` # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then output=${output_objdir}/${output_la}.lnkscript func_verbose "creating GNU ld script: $output" $ECHO 'INPUT (' > $output for obj in $save_libobjs do $ECHO "$obj" >> $output done $ECHO ')' >> $output delfiles="$delfiles $output" elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then output=${output_objdir}/${output_la}.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test "$compiler_needs_object" = yes; then firstobj="$1 " shift fi for obj do $ECHO "$obj" >> $output done delfiles="$delfiles $output" output=$firstobj\"$file_list_spec$output\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-${k}.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test "X$objlist" = X || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. eval concat_cmds=\"$reload_cmds $objlist $last_robj\" else # All subsequent reloadable object files will link in # the last one created. eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-${k}.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-${k}.$objext objlist=$obj func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" if test -n "$last_robj"; then eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" fi delfiles="$delfiles $output" else output= fi if ${skipped_export-false}; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi fi test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi if ${skipped_export-false}; then if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi fi libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $dlprefiles libobjs="$libobjs $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "\`-R' is ignored for objects" test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for objects" test -n "$release" && \ func_warning "\`-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object \`$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec and hope we can get by with # turning comma into space.. wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` else gentop="$output_objdir/${obj}x" generated="$generated $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # Create the old-style object. reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for programs" test -n "$release" && \ func_warning "\`-release' is ignored for programs" test "$preload" = yes \ && test "$dlopen_support" = unknown \ && test "$dlopen_self" = unknown \ && test "$dlopen_self_static" = unknown && \ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test "$tagname" = CXX ; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) compile_command="$compile_command ${wl}-bind_at_load" finalize_command="$finalize_command ${wl}-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) new_libs="$new_libs -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$new_libs $deplib" ;; esac ;; *) new_libs="$new_libs $deplib" ;; esac done compile_deplibs="$new_libs" compile_command="$compile_command $compile_deplibs" finalize_command="$finalize_command $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) dllsearchpath="$dllsearchpath:$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) dllsearchpath="$dllsearchpath:$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" "no" # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=yes case $host in *cygwin* | *mingw* ) if test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; *cegcc) # Disable wrappers for cegcc, we are cross compiling anyway. wrappers_required=no ;; *) if test "$need_relink" = no || test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; esac if test "$wrappers_required" = no; then # Replace the output file specification. compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' # Delete the generated files. if test -f "$output_objdir/${outputname}S.${objext}"; then func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' fi exit $exit_status fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do rpath="$rpath$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" func_warning "this platform does not like uninstalled shared libraries" func_warning "\`$output' will be relinked during installation" else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` fi # Quote $ECHO for shipping. if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then case $progpath in [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; esac qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` else qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource="$output_path/$objdir/lt-$output_name.c" cwrapper="$output_path/$output_name.exe" $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host" ; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save $symfileobj" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" if test "$preload" = yes && test -f "$symfileobj"; then oldobjs="$oldobjs $symfileobj" fi fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $addlibs oldobjs="$oldobjs $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $dlprefiles oldobjs="$oldobjs $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else $ECHO "copying selected object files to avoid basename conflicts..." gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase="$func_basename_result" case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" oldobjs="$oldobjs $gentop/$newobj" ;; *) oldobjs="$oldobjs $obj" ;; esac done fi eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" newdependency_libs="$newdependency_libs $libdir/$name" ;; *) newdependency_libs="$newdependency_libs $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" newdlfiles="$newdlfiles $libdir/$name" ;; *) newdlfiles="$newdlfiles $lib" ;; esac done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" newdlprefiles="$newdlprefiles $libdir/$name" ;; esac done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlfiles="$newdlfiles $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlprefiles="$newdlprefiles $abs" done dlprefiles="$newdlprefiles" fi $RM $output # place dlname in correct position for cygwin tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that can not go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } { test "$mode" = link || test "$mode" = relink; } && func_mode_link ${1+"$@"} # func_mode_uninstall arg... func_mode_uninstall () { $opt_debug RM="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) RM="$RM $arg"; rmforce=yes ;; -*) RM="$RM $arg" ;; *) files="$files $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= origobjdir="$objdir" for file in $files; do func_dirname "$file" "" "." dir="$func_dirname_result" if test "X$dir" = X.; then objdir="$origobjdir" else objdir="$dir/$origobjdir" fi func_basename "$file" name="$func_basename_result" test "$mode" = uninstall && objdir="$dir" # Remember objdir for removal later, being careful to avoid duplicates if test "$mode" = clean; then case " $rmdirs " in *" $objdir "*) ;; *) rmdirs="$rmdirs $objdir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do rmfiles="$rmfiles $objdir/$n" done test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" case "$mode" in clean) case " $library_names " in # " " in the beginning catches empty $dlname *" $dlname "*) ;; *) rmfiles="$rmfiles $objdir/$dlname" ;; esac test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test "$pic_object" != none; then rmfiles="$rmfiles $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test "$non_pic_object" != none; then rmfiles="$rmfiles $dir/$non_pic_object" fi fi ;; *) if test "$mode" = clean ; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe rmfiles="$rmfiles $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result rmfiles="$rmfiles $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then rmfiles="$rmfiles $objdir/lt-$name" fi if test "X$noexename" != "X$name" ; then rmfiles="$rmfiles $objdir/lt-${noexename}.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done objdir="$origobjdir" # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } { test "$mode" = uninstall || test "$mode" = clean; } && func_mode_uninstall ${1+"$@"} test -z "$mode" && { help="$generic_help" func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode \`$mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: # vi:sw=2 dvipsk_TexLive-2009-stripped/build-aux/config.sub0000775000175000017500000010303611401164145021751 0ustar uwabamiuwabami#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 # Free Software Foundation, Inc. timestamp='2009-10-07' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This 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 of the License, 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, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # 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. # Please send patches to . Submit a context # diff and a properly formatted GNU ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nios | nios2 \ | ns16k | ns32k \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | v850 | v850e \ | we32k \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12 | picochip) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze) basic_machine=microblaze-xilinx ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; tile*) basic_machine=tile-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: dvipsk_TexLive-2009-stripped/finclude.lpro0000644000175000017500000000073711372532227020574 0ustar uwabamiuwabami%! % finclude.lpro - public domain. % Define tfm-name to be a dictionary of included fonts indexed by size: % /tfm-name scaled-size1 /font-select1 ... scsize_k /fselect_k k fstore - /fstore { dup dict exch {dup 4 2 roll put} repeat def } bind def /fshow % (text to show) tfm_name scaled-size fshow - { gsave 72 TeXDict /Resolution get div -72 TeXDict /VResolution get div scale 1 DVImag div dup scale get cvx exec show grestore }bind def dvipsk_TexLive-2009-stripped/dvips.h0000644000175000017500000002517211372532227017403 0ustar uwabamiuwabami/* $Id: dvips.h 13914 2009-06-23 09:46:14Z peter $ * This is dvips, a freely redistributable PostScript driver * for dvi files. It is (C) Copyright 1986-2008 by Tomas Rokicki. * You may freely use, modify and/or distribute this program or any * portion thereof. */ /* This file is the header for dvips's global data structures. */ #define CREATIONDATE #define BANNER \ "This is dvips(k) 5.98 Copyright 2009 Radical Eye Software" #define BANNER2 "(www.radicaleye.com)" #ifdef KPATHSEA #include "config.h" #include "debug.h" #endif /* Please don't turn debugging off! */ #ifndef DEBUG #define DEBUG #endif #ifndef KPATHSEA #include #if defined(SYSV) || defined(VMS) || defined(__THINK__) || defined(MSDOS) || defined(OS2) || defined(ATARIST) || defined(WIN32) #include #else #include #endif #endif #if defined(lint) && defined(sun) extern char *sprintf() ; #endif #include "paths.h" #include "debug.h" #ifdef VMS #include "[.vms]vms.h" #endif /* VMS */ #include /* * Is your malloc big? */ #if defined(MSDOS) && !defined(__EMX__) && !defined(DJGPP) #define SMALLMALLOC #endif #if defined(OS2) && defined(_MSC_VER) #define SMALLMALLOC #endif /* * Constants, used to increase or decrease the capacity of this program. * * Strings are now more dynamically allocated, so STRINGSIZE is not the * strict limit it once was. However, it still sets the maximum size * of a string that can be handled in specials, so it should not be * set too small. */ #define STRINGSIZE (200000) /* maximum total chars in strings in program */ #define RASTERCHUNK (8192) /* size of chunk of raster */ #define MINCHUNK (240) /* minimum size char to get own raster */ #define STACKSIZE (350) /* maximum stack size for dvi files */ #define MAXFRAME (10) /* maximum depth of virtual font recursion */ #define MAXFONTHD (100) /* number of unique names of included fonts */ #define STDOUTSIZE (75) /* width of a standard output line */ #define DOWNLOADEDPSSIZE (1000) /* max number of downloaded fonts to check */ /* * Other constants, which define printer-dependent stuff. */ #define SWMEM (180000) /* available virtual memory in PostScript printer */ #define DPI (actualdpi) /* dots per inch */ #define VDPI (vactualdpi) /* dots per inch */ #define RES_TOLERANCE(dpi) ((int)(1+dpi/500)) /* error in file name resolution versus desired */ #define FONTCOST (298) /* overhead cost of each sw font */ #define PSFONTCOST (1100) /* overhead cost for PostScript fonts */ #define PSCHARCOST (20) /* overhead cost for PostScript font chars */ #define DNFONTCOST (35000) /* overhead cost for downloaded PS font */ #define CHARCOST (15) /* overhead cost for each character */ #define OVERCOST (30000) /* cost of overhead */ #define DICTITEMCOST (20) /* cost per key, value in dictionary */ #define NAMECOST (40) /* overhead cost of each new name */ /* * Type declarations. integer must be a 32-bit signed; shalfword must * be a sixteen-bit signed; halfword must be a sixteen-bit unsigned; * quarterword must be an eight-bit unsigned. */ #if (defined(MSDOS) && !defined(DJGPP)) || (defined(OS2) && defined(_MSC_VER)) || defined(ATARIST) typedef long integer; #else typedef int integer; #endif #ifndef KPATHSEA typedef char boolean; #endif typedef double real; typedef short shalfword ; typedef unsigned short halfword ; typedef unsigned char quarterword ; #ifdef WIN32 #define Boolean boolean #else #ifndef __THINK__ typedef short Boolean ; #endif #endif /* * If the machine has a default integer size of 16 bits, and 32-bit * integers must be manipulated with %ld, set the macro SHORTINT. */ #ifdef XENIX #define SHORTINT #else #undef SHORTINT #endif #if defined(MSDOS) && !defined(__EMX__) && !defined(DJGPP) || defined(ATARIST) #define SHORTINT #endif #if defined(OS2) && defined(_MSC_VER) #define SHORTINT #endif /* * This is the structure definition for resident fonts. We use * a small and simple hash table to handle these. We don't need * a big hash table. */ #define RESHASHPRIME (73) struct resfont { struct resfont *next ; char *Keyname, *PSname, *TeXname, *Fontfile, *Vectfile; char *specialinstructions ; char *downloadheader ; /* possibly multiple files */ quarterword sent ; } ; /* * A chardesc describes an individual character. Before the fonts are * downloaded, the flags indicate that the character has already been used * with the following meanings: */ typedef struct tcd { integer TFMwidth ; quarterword *packptr ; shalfword pixelwidth ; quarterword flags, flags2 ; } chardesctype ; #define EXISTS (1) #define PREVPAGE (2) #define THISPAGE (4) #define TOOBIG (8) /* not used at the moment */ #define REPACKED (16) #define BIGCHAR (32) #define STATUSFLAGS (EXISTS|REPACKED|BIGCHAR) /* * The new field flags2 above is now an immutable field (once a font is * loaded); for now it only indicates whether a character EXISTS or not. * This fixes a problem with -G. */ /* * A fontdesc describes a font. The name, area, and scalename are located in * the string pool. The nextsize pointer is used to link fonts that are used * in included psfiles and differ only in scaledsize. Such fonts also have * a non-NULL scalename that gives the scaledsize as found in the included * file. The psflag indicates that the font has been used in an included * psfile. It can be 0, PREVPAGE, THISPAGE, or EXISTS. */ typedef struct tfd { integer checksum, scaledsize, designsize, thinspace ; halfword dpi, loadeddpi ; halfword alreadyscaled ; halfword psname ; halfword loaded ; quarterword psflag; quarterword codewidth ; integer maxchars ; char *name, *area ; struct resfont *resfont ; struct tft *localfonts ; struct tfd *next ; struct tfd *nextsize; char *scalename; chardesctype *chardesc ; } fontdesctype ; /* A fontmap associates a fontdesc with a font number. */ typedef struct tft { integer fontnum ; fontdesctype *desc ; struct tft *next ; } fontmaptype ; /* Virtual fonts require a `macro' capability that is implemented by * using a stack of `frames'. */ typedef struct { quarterword *curp, *curl ; fontdesctype *curf ; fontmaptype *ff ; } frametype ; /* * The next type holds the font usage information in a 256-bit table; * there's a 1 for each character that was used in a section. */ typedef struct { fontdesctype *fd ; halfword psfused ; halfword bitmap[16] ; } charusetype ; /* Next we want to record the relevant data for a section. A section is * a largest portion of the document whose font usage does not overflow * the capacity of the printer. (If a single page does overflow the * capacity all by itself, it is made into its own section and a warning * message is printed; the page is still printed.) * * The sections are in a linked list, built during the prescan phase and * processed in proper order (so that pages stack correctly on output) during * the second phase. */ typedef struct t { integer bos ; struct t *next ; halfword numpages ; } sectiontype ; /* * Sections are actually represented not by sectiontype but by a more * complex data structure of variable size, having the following layout: * sectiontype sect ; * charusetype charuse[numfonts] ; * fontdesctype *sentinel = NULL ; * (Here numfonts is the number of bitmap fonts currently defined.) * Since we can't declare this or take a sizeof it, we build it and * manipulate it ourselves (see the end of the prescan routine). */ /* * This is how we build up headers and other lists. */ struct header_list { struct header_list *next ; char *Hname ; char *precode ; char *postcode ; char name[1] ; } ; /* * Some machines define putlong in their library. * We get around this here. */ #define putlong was_putlong /* * Information on available paper sizes is stored here. */ struct papsiz { struct papsiz *next ; integer xsize, ysize ; char *name ; char *specdat ; } ; #ifdef MVSXA /* IBM: MVS/XA */ /* this is where we fix problems with conflicts for truncation of long names (we might only do this if LONGNAME not set but ...) */ # define pprescanpages pprscnpgs /* confict with pprescan */ # define flushDashedPath flshDshdPth /* conflict with flushDash */ # define PageList PgList /* re-definition conflict with pagelist */ /* adding ascii2ebcdic conversion table to extern */ extern char ascii2ebcdic[] ; #endif /* IBM: MVS/XA */ #ifdef VMCMS /* IBM: VM/CMS */ /* this is where we fix problems with conflicts for truncation of long names (we might only do this if LONGNAME not set but ...) */ # define pprescanpages pprscnpgs /* confict with pprescan */ # define flushDashedPath flshDshdPth /* conflict with flushDash */ /* adding ascii2ebcdic conversion table to extern */ extern char ascii2ebcdic[] ; /* redefining fopen for VMCMS, see DVIPSCMS.C */ extern FILE *cmsfopen() ; # ifdef fopen # undef fopen # endif # define fopen cmsfopen #define downloadpspk dnldpspk #endif /* IBM: VM/CMS */ /* * Remove namespace conflict with standard library on Macintosh */ #ifdef __THINK__ #define newstring newpoolstring #endif #ifndef VOID #define VOID void #endif #define USE_PCLOSE (801) #define USE_FCLOSE (802) /* Things that KPATHSEA knows, and are useful even without it. */ #if !defined(KPATHSEA) #if defined(MSDOS) || defined(OS2) || defined(WIN32) #define FOPEN_ABIN_MODE "ab" #define FOPEN_RBIN_MODE "rb" #else #define FOPEN_ABIN_MODE "a" #define FOPEN_RBIN_MODE "r" #endif #if (defined MSDOS || defined OS2 || defined WIN32) #define WRITEBIN "wb" #else #ifdef VMCMS #define WRITEBIN "wb, lrecl=1024, recfm=f" #else #define WRITEBIN "w" #endif #endif #if defined(WIN32) #define STDC_HEADERS #include #include #define O_BINARY _O_BINARY #define popen _popen #define pclose _pclose #define register #define SET_BINARY(fd) _setmode((fd), _O_BINARY) #else /* !WIN32 */ #define SET_BINARY(fd) #endif #if defined(DEVICESEP) #define IS_DEVICE_SEP(c) ((c) == DEVICESEP) #else #define IS_DEVICE_SEP(c) 0 #endif #define STREQ(s1, s2) (((s1) != NULL) && ((s2) != NULL) && !strcmp((s1), (s2))) #if defined(MSDOS) || defined(OS2) || defined(WIN32) #define NAME_BEGINS_WITH_DEVICE(name) (*(name) && IS_DEVICE_SEP((name)[1])) #define IS_DIR_SEP(c) ((c) == '/' || (c) == '\\') #define FILESTRCASEEQ(s1, s2) (strcasecmp (s1, s2) == 0) #else #define NAME_BEGINS_WITH_DEVICE(name) 0 #define IS_DIR_SEP(c) ((c) == DIRSEP) #define FILESTRCASEEQ STREQ #endif #define TOLOWER(c) tolower(c) #define ISALNUM(c) isalnum(c) #define ISXDIGIT(c) (isascii (c) && isxdigit(c)) #endif dvipsk_TexLive-2009-stripped/ChangeLog0000644000175000017500000020373411372532227017661 0ustar uwabamiuwabami2009-09-26 Karl Berry * config/config.ps (unknown): move to before nopaper; else nonstandard paper sizes, e.g., with the geometry package, end up unrecognized. 2009-07-17 Peter Breitenlohner * writet1.c (t1_flush_cs): cast ptr diff to unsigned long for printing. NB: sizeof(ptr)==sizeof(long) for both 32Bit and 64Bit systems. 2009-07-16 Peter Breitenlohner * squeeze/squeeze.c (__CYGWIN__): #include and for isatty and setmode. 2009-06-22 Peter Breitenlohner * Makefile.am (AM_CFLAGS): enable compiler warnings. * Use ANSI C function definitions and prototypes instead of P[1-9][CH] macros, declare some functions as static. * config.h, writet1.c: no need to #include . * writet1.c: #include , not . * dpicheck.c: #include "protos.h". * t1part.c (Reeverse, KillUnique): declare as static. * writet1.c: #include "protos.h". (append_cs_return): remove unused variable 'i'. (t1_flush_cs): avoid uninitialized warning. * protos.h: add prototypes for writet1(), t1_free(), and t1_subset() from writet1.c. * Avoid inconsistent arg1 in KPATHSEA version of pksearch (was unused but different in prototype, declaration, and call). * loadfont.c: remove arg1 of pksearch. * protos.h: use prototype for pksearch as defined in search.c. * search.c: #include "protos.h", remove prototype for newstring. (pksearch): remove unused arg1. 2009-06-22 Peter Breitenlohner * Makefile.am (AM_CPPFLAGS): remove -DNeedFunctionPrototypes. * config.h, dvips.h: always use ANSI C function definitions. 2009-06-12 Francois Charette * afm2tfm.c: rename getline to texlive_getline. 2009-06-01 Karl Berry * Update version numbers to 5.98. 2009-05-30 Peter Breitenlohner * texc.script: use correct invocation of sed. 2009-05-28 Peter Breitenlohner Adapt to TL2009 build system. 2009-05-28 Peter Breitenlohner * testdata/*: recover old test data and add missing pieces. * texc.script: use sed instead of ed (which may be missing). 2009-05-24 Karl Berry * dvips.texi (Configuration file commands): document -G, including its obsolesence. * Master/texmf/dvips/tetex/config.pdf: remove the G setting, now actively problematic. Report from Uwe Siart, 04 May 2009 09:27:27. 2009-05-08 Karl Berry * resident.c (getpsinfo): avoid accessing unallocated downbuf[-1]. * dvips.c (main): do not check iname[-1] if there is no iname. Reports from Akira. Also prettify some related error messages. 2009-04-04 Karl Berry * writet1.c (append_cs_return): new fn. (cs_mark): check for missing return in subr. (t1_flush_cs): repair missing return. (t1_scan_param): check for negative lenIV. These changes from Thanh, following more investigation by Melissa, ChoF, and Thanh. 2009-03-24 Karl Berry * writet1.c (t1_flush_cs): t1_lenIV >= 0, not t1_lenIV > 0, to fix subset problems on Macs. Found by Melissa O'Neill. Reported on ntg-pdftex@ntg.nl and pdftex@tug.org, 21 March, 2009 13:45:12. 2009-02-16 Karl Berry * dvips.texi (Config file paper sizes): document. * config.ps (nopaper): new paper size to put no paper size commands in the output, e.g., for multi-page EPS. Report from John Bowman for Asymptote. 2008-11-02 Karl Berry * dvips.texi (psfonts.map): apparently {somefile.pfb} was never used to report partial downloading; also mention vf's a bit more. 2008-09-24 Karl Berry * hps.c, hps.lpro: Mark (doyle/aps/org) does not want to be notified of changes any longer (or for the past decade or so :). 2008-09-22 Karl Berry * hps.c (do_html): get scale factors right. (hoff, voff): remove, hh and vv are already calculated by using hoff and voff in dopage.c. From Akira. Report from John Frampton through tex-eplain; using -O made -z fail. 2008-09-20 Karl Berry * papersiz.c (myatol): do not require a leading zero, to match the doc. From Akira. Report from John Frampton through tex-eplain. 2008-07-10 Karl Berry * dvips.h (BANNER): 5.97, 2008. * dvips.c (main): use BANNER. * afm2tfm.c: 5.97. * dvips.texi (version): 5.97. 2008-05-07 David M. Jones * output.c (copyfile_general): pass through binary characters such as CTRL-D inside %%BeginFont, else embedded pfb's can get mangled. tex-live mail 5 May 2008 13:11:10, tex-k mail 5 May 2008 14:08:04. 2008-05-01 Karl Berry * squeeze.c [O_BINARY]: conditionalize calls to SET_BINARY. 2008-04-30 Karl Berry * squeeze.c (SET_BINARY) [O_BINARY]: conditionalize #define. Cast call to specialout. (From Akira.) 2008-04-29 Karl Berry * Makefile.in (install-data): do not cd $(srcdir) in any rule, that fails when the install program is specified by a relative path. * squeeze.c: avoid all old-system conditionals, linking with kpathsea, etc. 2008-04-28 Karl Berry * dvips.h: id. * squeeze.c [!KPATHSEA]: conditionalize #undef fopen, and add decl with return type. * afm2tfm.c: semi-prototype fopen if it got #undef'd. Bug report from vvv, 27 Apr 2008 13:43:37. 2008-02-29 Peter Breitenlohner * acconfig.h: removed. 2008-02-17 Karl Berry * config.ps (smallbook): new paper size for Texinfo. 2008-01-31 Peter Breitenlohner Convert from autoconf-2.13 to autoconf-2.59+: * Makefile.in: Add @configure_input@ line. * aclocal.m4 (new): Generated (aclocal -I ../m4). * configure: Regenerated (autoconf). 2007-12-23 Karl Berry * dvips.c (helparr): Start options with -, include url. 2007-12-02 Karl Berry * skippage.c (skippage): do not test for noomega here; we aren't actually parsing the DVI operations, so argument bytes can erroneously cause complaints. Report on tex-live from W. Fleischer, 27 Nov 2007 17:43:47. 2007-10-24 Karl Berry * config.ps (unknown): duplicated entry, remove one. 2007-10-22 Karl Berry * hps.c (stamp_external, stamp_hps): protext against long strings. From Bastien Roucaries via Norbert, 21 Oct 2007 13:22:19, Debian bug 447081. 2007-10-12 Karl Berry * resident.c (i): declare as int, in case tfmload() returns 65536 for an ofm font. From Akira, 11 Oct 2007 11:39:52. 2007-09-24 Karl Berry * dvips.texi (psfile special): document llx/lly/urx/ury, based on a description from Tom R. 2007-08-28 Karl Berry * dvips.h: clarify license (again). 2007-06-13 Karl Berry * config.ps: use integral mm values (from Akira). 2007-06-10 Karl Berry * dospecial.c: implement ps::nobreak for Scott (Pakin); we need to break by default because pstricks is written to assume that, and we can't ask Herbert to rewrite thousands of lines of code. 2007-05-31 Karl Berry * hps.c (finish_hps): remove head.tmp and body.tmp unless we are debugging. Report from Dan Luecking, 25 May 2007 13:00:17, fix from Akira. 2007-05-09 Karl Berry * dvips.c, finclude.c: cleanups of my patching from Akira. 2007-05-06 Karl Berry * finclude.c, dvips.c: keep track of last-unused psname (Akira). * dvips.c (DEFRES): move down. * dvips.c (--help): just mention Tom R. 2007-05-05 Karl Berry * dvips.h (DOWNLOADEDPSSIZE): new constant. * dvips.c (downloadedpsname): new global array. * finclude.c: set it up as we download. * download.c: use it to avoid downloading fonts as both header and font. (From Akira.) 2007-05-04 Karl Berry * dvips.h (BANNER): change to 5.96dev to distinguish from the release. * header.c (add_name, add_header): cast result of add_header_general to int and return it. From Akira. 2007-03-23 Karl Berry * dvips.texi: document it. * dvips.c, loadfont.c, resident.c: also report map files and config files, if the envvar DVIPSDEBUG is set. From Akira. 2007-03-20 Karl Berry * download.c, output.c, emspecial.c: report full pathnames, to help debugging and for consistency with TeX. From Akira. 2007-03-19 Karl Berry * config.ps (screen): add this, 8.25x11, for powerdot. (From Akira.) 2006-12-09 Karl Berry * dvips.texi (Config file paper sizes): best match now. (From Akira.) 2006-12-07 Karl Berry * Changes made and accumulated by Akira: (1) security problem -R0 : shell escape and absolute path are allowed -R1 : shell escape is forbidden and absolute path is allowed (default) -R2 : shell escape and absolute path are forbidden (2) line breaking problem in ps: special (Scott Pakin). (3) Heiko's change of hps.lpro. (4) paper size problem: * Is the dimension close enough for a match? We use a quarter inch * as a match; this is 65536*72.27/4 or 1,184,072 scaled points. ---> * Is the dimension close enough for a match? We use 5bp * as a match; this is 65536*72.27*5/72 or 328909 scaled points. and dvips now finds the best match rather than the first match. 2006-12-06 Karl Berry * output.c (copyfile_general): add removingBytes=0, to avoid omitting the line after %%EndData or %%EndBinary with -K1. tex-k mail from t s, 29 Nov 2006 21:11:14. 2006-12-05 Karl Berry * dvips.h (BANNER): bump version to 5.96 for 2006, why not. 2006-07-06 Karl Berry * dvips.texi: mention -tunknown to avoid floating to predefined paper size. From Vincent Fourmond, tex-k mail, 25apr06. 2006-06-02 Karl Berry * dvips.texi: typo 2004-05-10 Karl Berry From Matthew Swift , via Debian bug 181065: * config.ps: improve comments. * output.c (open_output) [DJGPP]: do not disable writing to a pipe when secure; we don't do that in the non-DJGPP case. * dvips.texi (Option details): -R does not disable output to a pipe. (Configuration file commands): typo in `o' doc. WARNING: THIS CHANGELOG IS WAY OUT OF DATE. 2001-06-02 Sebastian Rahtz * resident.c: added option to config file ('z') to have the same effect as -R (secure mode) Mon Jan 10 21:39:20 CET 2000 * from pdftex distribution: improved partial font downloading ported back * .notdef related fixes for afm2tfm Sun Apr 11 09:03:29 CEST 1999 * output.c: (from Tom Rokicki) Faster inclusion of DOS EPSF files. Use byte counter to avoid calling ftell(). Wed Apr 7 01:07:41 CEST 1999 * Makefile.in: added -DSHIFTLOWCHARS to compiler flags * output.c: corrected T1Char function for SHIFTLOWCHARS Mon Mar 9 10:31:44 1998 Sebastian Rahtz * clean reencoding/asex.enc; small fix to copyright year (from Thomas Esser) Fri Mar 6 10:56:28 1998 Sebastian Rahtz * dvips.h (BANNER): changed to 5.78, as per Tom. also afm2tfm.c and dvips.c * tex.lpro: (from Tom Rokicki) Richard Sites of Adobe found a bug in dvips that causes dvips-generated output, when piped through Distiller, to fail. The problem is that dvips uses names in its encoding array that are `illegal' according to distiller. I've encouraged him to patch up distiller to `do the right thing', but I need to fix dvips too. The patch I've come up with is to change, in tex.lpro, 0 1 255 {IE S 1 string dup 0 3 index put cvn put} for to 2 string 0 1 255 { IE S dup 360 add 36 4 index cvrs cvn put } for pop Tue Mar 3 10:15:37 1998 Sebastian Rahtz * afm2tfm.c: Tom Browder . To fix the case where the afm file has a -1 for the CC encoding position Wed Feb 25 10:52:19 1998 Sebastian Rahtz * patches to add facility to shift characters below 32 to higher positions, if possible, activated by -G. By default, this is not activated, needs -DSHIFTLOWCHARS in the Makefile, as I am not sure about it, but the conditional code is there to study for those who want to experiment Tue Feb 24 11:56:52 1998 Sebastian Rahtz * Makefile.in: clean up check target to be self-contained Mon Feb 23 10:11:57 1998 Sebastian Rahtz * resident.c: changed parsing of "<<" so that the font is passed through to be treated as a font, not a procset. it will still be partially downloaded, though. Tue Feb 17 10:17:40 1998 Sebastian Rahtz * dvips.c: logic of #ifdef Omega was reversed for help message, corrected Mon Feb 16 12:33:30 1998 Sebastian Rahtz * afm2tfm.c: fixes for explicit extension by Thomas Esser: Several things did not work as expected: - removing the suffix by putting \0 at the position found by find_suffix(outname) does not work, as find_suffix returns the position *after* the last dot - memmove(outname, p, strlen(p)) (where p = basename(outname)) should be memmove(outname, p, strlen(p)+1), but I think that we should just use two strcpy calls since memmove is not available on every platform. Mon Feb 9 10:56:25 1998 Sebastian Rahtz * put data files for "make check" into testdata/, to avoid them being zapped by "make extraclean" * patch to dvips.texi from Thomas Esser Mon Feb 2 11:32:32 1998 Sebastian Rahtz * small fix in make check target of Makefile.in Tue Jan 27 14:32:25 1998 Sebastian Rahtz * configure etc: new configure.in, c-auto.in, Makefile.in from Olaf Weber Tue Jan 27 13:49:11 1998 Sebastian Rahtz * ChangeLog: changes to "check" target (explicit -D 300). regenerated .xps file. Mon Jan 19 20:45:15 1998 Sebastian Rahtz * renamed contrib/volker config.* files to *.cfg, and to shorter names (screen to scr) for DOS 8+3 naming * added .tfm and .vf files for make check to directory; changed permissions of dvips.texi Sat Jan 17 15:08:57 1998 Sebastian Rahtz * assorted patches from Peter Breitenlohner, Olaf Weber, Fabrice Popineau etc. Hope it all still works. Fri Jan 16 21:28:44 1998 Sebastian Rahtz * dvips.c: patch from John Plaice for odvips, to flag odvips as program name Thu Jan 1 10:59:29 1998 Sebastian Rahtz * provided prebuilt dvipstst.xdv and dvipstst.xps to allow check target to work. Wed Aug 27 20:18:20 1997 Peter Breitenlohner * stamp-auto: Remove this file, should be in build tree, not in source tree. * configure.in: Make `configure' rebuild the `stamp-auto' file. Sun Aug 24 18:04:14 1997 Peter Breitenlohner * Makefile.in: Allow `make check' when $(srcdir) is not `.'. Fri Mar 07 12:10:46 1997 Fabrice POPINEAU * config.h: introduce prototyping when __STDC__ is defined. * dvips.h: defines a PROTO() macro according to __STDC__. * dvips.h: getenv() is declared here. * dvips.c: * emspecial.c: * output.c: * resident.c: use the PROTO() declaration. * resident.c: bad_config was called whitout argument. * squeeze.c: exit() declaration. Thu Feb 6 17:34:06 1997 Karl Berry * Version 5.66a. Sat Feb 1 17:15:39 1997 Karl Berry * t1part.c: Changes to avoid compiler warnings. From Tom. * Makefile.in (program_files): dvipstst.dvi should be included for make check. From: Joern Clausen . Sun Jan 19 12:47:37 1997 Karl Berry * Makefile.in (version): Now 5.66a. * dvips.texi: Update version number. * download, finclude.c, output.c: Update for new version. Fri Jan 17 10:06:25 1997 Karl Berry * Makefile.in (version): Now 5.64a. * finclude.c, t1part.[ch], resident.c, output.c, download.c, dopage.c: Update for dvips 5.64. * afm2tfm.c (writevpl): No vname in CHARACTER property. (version): Now 8.1. Tue Jan 14 14:50:27 1997 Karl Berry * hps.c (PAGESIZE): #undef. Mon Jan 13 14:25:07 1997 Karl Berry * dvips.h (BANNER): Add www.radicaleye.com per Tom. Sun Jan 12 10:57:34 1997 Karl Berry * texps.lpro: Change /setfont line to use cvx instead of load. Fix from Tom, reported by poortom@apmisc.ibm.co.jp for the QMS 1725. Sun Jan 5 12:05:54 1997 Karl Berry * Makefile.in: Remove special case for t1part.c, and add it to objects. We compile it normally now. * bbox.c, dospecial.c, drawPS.c, dvips.c, dvips.h, tex/epsf.tex, search.c, virtualfont.c, tex.lpro, finclude.c afm2tfm.c: Updates for dvips 5.62. Mon Dec 9 17:24:58 1996 Karl Berry * t1part.c (CHAR) [WIN32]: #define as CHARACTER to work around typedef. Sat Dec 7 17:21:37 1996 Karl Berry * dospecial.c (system): Don't bother to declare, it returns an int. * afm2tfm.c, dvips.c, emspecial.c, output.c, resident.c: Various WIN32 changes from Fabrice. Tue Dec 3 01:25:28 1996 Ulrik Vieth * afm2tfm.c: Fix version message. Mon Dec 9 01:29:41 1996 Ulrik Vieth * afm2tfm.c: Reformat usage message slightly for consistency. Issue "Try --help" message if called with no args. Tue Dec 3 01:25:28 1996 Ulrik Vieth * afm2tfm.c: Fix version message. Thu Nov 28 09:33:13 1996 Karl Berry * resident.c: Pass explicit error strings to bad_config. * dvips.h (INT_FORMAT) [SHORTINT]: Define as %ld or %d. * t1part.c (ScanChars): Cast label[counter].select, which is a char, to int, for the sake of machines where char is unsigned by default, such as the RS/6000. Wed Nov 27 10:06:27 1996 Karl Berry * Makefile.in (program_files): Don't bother to include dvipstst.dvi. Fri Nov 15 16:22:42 1996 Karl Berry * Makefile.in (install-exec): Use INSTALL_LIBTOOL_PROG for binaries. Sun Nov 10 16:29:31 1996 Karl Berry * t1part.c (PartialPFB): Return value from fread is an int, not a pointer, so don't compare to NULL. Thu Nov 7 14:53:08 1996 Karl Berry * papersiz.c (myatodim, myatol): If error, give the erroneous string. Sun Oct 27 16:20:58 1996 Karl Berry * Makefile.in (check): Don't run TeX. (program_files): Distribute dvipstst.dvi. * resident.c (c_lineno): Remove invalid second declaration. * t1part.c (PartialPFA): Cast UniRealloc result to avoid warning from SunOS cc. (UniRealloc) [KPATHSEA_TYPES_H]: Define as xrealloc, not just realloc. Sun Oct 20 11:25:27 1996 Karl Berry * Makefile.in (install-data): mkdirchain dvips_plain_macrodir. (post-dist): Link in tex. *.tex: Move to tex/ subdirectory. Fri Oct 18 14:51:03 1996 Karl Berry From: Marek Rouchal . These changes finish implementing multiple epsf output files. * bbox.c (findbb): Pass in bop location. * dvips.c: for -i, default section size to one page. Change call to initprinter. * output.c (epsftest): Change call to findbb. (initprinter): Take sectiontype as parameter instead of page count. Mon Oct 14 11:25:13 1996 Karl Berry * Changes for NT from Fabrice POPINEAU . * hps.c: Rename Rectangle to dvipsRectangle. * dvips.h (ERROR, NO_ERROR): #undef. * paths.h (DVIPSRC) [WIN32]: Define as dvips.ini * output.c: WIN32 conditionals a la MSDOS. Sun Oct 13 13:40:26 1996 Karl Berry * dvips.c (main), * output.c (epsftest): Remove condition that document be a single page for -E. Suggested by: Marek Rouchal . * bbox.c, dosection.c, download.c, drawPS.c, dvips.c, finclude.c, fontdef.c, prescan.c, resident.c, virtualfont.c: Keep mag as a real instead of an integer. From: "Melissa O'Neill" . Tue Oct 8 16:47:13 1996 Karl Berry * Makefile.in (version_files): Add dvips.c. Sat Oct 5 17:00:53 1996 Karl Berry * dvips.c (main), * afm2tfm.c (version): Change to the new standard GNU format. * Makefile.in (install-data): Call install-info. * dvips.texi: Use @url, @email, and @dircategory/@direntry. Sat Sep 7 16:01:38 1996 Karl Berry * dvips.c (help): Include bug reporting address. * afm2tfm.c (usage): Likewise. Fri Sep 6 19:05:23 1996 Karl Berry * output.c, dospecial: Call output_with_perror for PostScript output file open failure. * dvips.c (error_with_perror): New routine. Fri Aug 23 16:57:39 1996 Karl Berry * dvips.c (main): Better bad first/last page errors. Sun Aug 4 15:56:50 1996 Karl Berry * dospecial.c: Updates from d.love, PAGEUS_INTERUPPTUS is now page_interrupt, etc. * hps.c: Use mymalloc instead of malloc where we don't check the return value. * dvips.c (main): Also print kpathsea_version_string if --version. Fri Jul 26 15:47:20 1996 Karl Berry * Makefile.in: Remove co.make. Thu Jul 11 19:17:52 1996 Karl Berry * resident.c: Include variable.h. Mon Jun 10 11:00:35 1996 Karl Berry * hps.c: Update again from Dave, the last patch got corrupted. Fri Jun 7 18:46:46 1996 K. Berry * Makefile.in (afm2tfm, $(program)): Use $(kpathsea_link). (squeeze): Include $(XLOADLIBES). Sat Jun 1 14:36:39 1996 Karl Berry * resident.c (getdefaults): Use envvar/config value DVIPSRC if set. Thu May 16 22:41:15 1996 Dave Love * texc.lpro: Update to dvihps 0.4 (mostly robuster anchors?). * dopage.c, hps.c: Likewise. Wed May 1 16:37:00 1996 Karl Berry * paths.h (DVIPSRC): Prepend $HOME/, so we only search for .dvips in the user's home directory. (Original dvips behavior, unwittingly changed, just noted by Michel Goossens.) Fri Apr 26 13:36:25 1996 Karl Berry * Makefile.in (install-data): Install the plain macro files in $(dvips_plain_macrodir), and avoid $(CP_R). From: Pierre Asselin . Sun Apr 21 16:32:43 1996 Karl Berry * dvips.c (main): Do not pass in !dontmakefont to kpse_init_prog. In 'M' command line case, call the new kpse_set_enabled fn. Fri Mar 8 14:39:03 1996 Karl Berry * hps.c: qoutes -> quotes. * dospecial.c: Don't complain about unknown specials if TEX_HUSH. Thu Mar 7 11:15:34 1996 Karl Berry * dvips.c (check_checksum): New routine. * bbox.c, loadfont.c, tfmload.c, virtualfont.c: Call it. * t1part.c (perror): Remove spurious #define, and change return's to exit's after calling perror. New copyright notice from Sergey. Sun Mar 3 12:26:01 1996 Karl Berry * t1part.c: New version (1.59) from Sergey, fixing the problem with lbma. Wed Feb 28 15:19:30 1996 Karl Berry * dvips.texi: Document the new MISSFONT_LOG variable. * Installed following update from Dave Love: Tue Jan 23 13:55:52 1996 D.J.G.Love * hps.c (PAGESIZE): Don't hardcode. Mon Jan 22 19:34:38 1996 Dave Love * dopage.c: Update to dvihps 0.3c. * dospecial.c: Likewise. * hps.c: Likewise. * hps.lpro: Likewise. Tue Feb 27 17:06:42 1996 Karl Berry * afm2tfm.c (main): Need to call kpse_set_progname now that we are using the afm search path. * resident.c (addentry): Oops, another mistake in the partial download merge. Sun Feb 18 15:59:18 1996 Karl Berry * afm2tfm.c: Search for AFM file along new AFM path. * hps.c: Use mymalloc, not plain malloc. And replace dup_str with the existing xstrdup. Thu Feb 15 13:56:07 1996 Karl Berry * dvips.c (main): Set kpse_make_tex_discard_errors = quiet. Sat Feb 10 14:03:12 1996 Karl Berry * afm2tfm.c (assignchars): Avoid creating texnum's > 255, since we can't handle it. Happens with an AFM line like: C 256 ; WX 402 ; N c256 ; B 4 0 402 630 ; Also, don't try to output kern equivalences for unencoded characters. From: "Dr Peter J. Braam" . Fri Feb 9 15:28:03 1996 Karl Berry * afm2tfm.c (usage): Include kpathsea_version_string in output. Recognize --version and --help. * tex.lpro: I had fixed texc.lpro, but that's not a source file. * hps.c (PAGESIZE): Compute dynamically. From: Dave Love . Sat Feb 3 15:44:19 1996 Karl Berry * Makefile.in (DEFS): Moved to common.make. Fri Dec 29 17:17:14 1995 Karl Berry * Makefile.in: misc.make is now clean.make. Tue Dec 26 17:18:39 1995 Karl Berry * dvips.c (initialize): Initialize dontmakefont to !MAKE_TEX_PK_BY_DEFAULT. Wed Dec 20 15:38:31 1995 Karl Berry * Makefile.in (INSTALL): Use -D INSTALLONLY, rather than sed. Manual changes to match. Wed Dec 13 14:29:11 1995 Karl Berry * dvips.c (DEFRES): Change to 600. * afm2tfm.c: Do oslash <> o and Oslash <> O. From: "Young U. Ryu" . Sun Dec 10 16:41:05 1995 Karl Berry * dospecial.c (specerror): Hint that they're using an unsupported macro package, most likely. Fri Dec 1 16:08:52 1995 Karl Berry * test.tex: Rename to dvipstst.tex for clarity and include in distribution. From: Joern Clausen . Thu Nov 16 13:32:50 1995 Karl Berry * search.c: Avoid popen on the Amiga. * dvips.h (close_file): Make function declaration extern for the Amiga. From Andreas Scherer. Tue Nov 14 14:07:17 1995 Karl Berry * loadfont.c (pkopen): If font was substituted, don't say chars will be left blank (they won't). * resident.c (getdefaults): For R case, use line as a string, changing whitespaces to colons, instead of doing numbers here. Mon Nov 13 17:22:20 1995 Karl Berry * dvips.c: Set kpathsea debugging bits even if -d is not first. Sat Nov 11 16:01:24 1995 Karl Berry * texc.lpro: Add `Color LaserWriter 12/600 PS' to the list of products that need the alternate rule definition. * loadfont.c, dvips.c, virtualfont.c: Remove remaining MEM debugs as too voluminous and not useful enough. * debug.h (D_CONFIG): Reuse the D_MEM bit. * resident.c (getdefaults): Output debugging info if requested. Sun Oct 22 16:57:56 1995 Karl Berry * Makefile.in (squeeze): Use LIBS instead of LOADLIBES. Sun Sep 24 13:49:43 1995 Karl Berry * dvips.c (mymalloc): Test a local variable for debug output, instead of DD_MEM. Fri Sep 22 13:43:38 1995 Karl Berry * dvips.c: If invalid option given, say what it was, and don't try to list all the valid ones. * dvips.c (case o): make -o - output to stdout. Thu Sep 14 14:49:53 1995 Karl Berry * config.ps: The default paper size cannot use setpagedevice. From te. Sat Sep 9 13:12:24 1995 Karl Berry * drawPS.c: Merge hyperdvi changes. From: Dave Love . * config.h: Define TPIC and EMTEX by default. * Makefile.in (DEFS): Instead of in DEFS. Sat Sep 2 11:37:40 1995 Karl Berry * tex.lpro: Oops, missing if in the new code. * epsf.tex: Don't do \new... if we've already been read. * config.ps: Update from Yves. Wed Aug 23 11:55:59 1995 Karl Berry * config.h (headerpath): This is now kpse_ps_header_format, since xdvi uses it, too. * search.c (search): Try assigning to name and realnameoffile, instead of copying. * tfmload.c (name): Remove this static. * loadfont.c (name): Declare as a pointer, instead of a fixed-size array. Sat Aug 12 13:42:22 1995 Karl Berry * tex.lpro: Check for LaserWriter 16/600 as well as Display and NeXT when setting RMat. From Tom R., reported by Rik Faith. Fri Aug 11 14:42:14 1995 Karl Berry * resident.c (N): If we're doing -E, don't disable them. Thu Aug 10 13:28:37 1995 Karl Berry * header.c, dvips.c (lastheadermem): Remove this global. It's no longer used. From: "Christopher J. Duncan" * dvips.texi: Many updates. Tue Aug 8 19:25:18 1995 Karl Berry * Makefile.in (post-dist): Include a README in reencode, update for new fontname organization, don't include adobe file or fonts. (install-data): Don't install fonts. Mon Aug 7 17:46:43 1995 Karl Berry * dvips.c: Rearrange help message. Mon May 29 15:56:43 1995 Karl Berry * Makefile.in (install-data): Use $(srcdir)/{tex,fonts}; from zoo. (But, we probably won't have inputs or fonts by release time anyway.) Mon Apr 17 10:02:30 1995 Karl Berry * Makefile.in (squeeze, afm2tfm, $(program)): Use link_command. Mon Mar 20 11:07:32 1995 Karl Berry * output.c: Print the > after reading the file, not before. Fri Mar 3 14:49:16 1995 Karl Berry * afm2tfm.c (checksum): Use cyclic left shift, so we're not just using the last four characters. From Piet. (vname): New routine to better document the ligtable in the vpl. (writevpl): If the base encoding is the same as the output encoding, only output it once. Also, don't output checksums; let vptovf and vftovp do that. (addkern): New routine. (checkligkern): If <>, make one character's kerning (Zcaron) be the same as another's (Z). (staticligkern): Define the default kerning equivalents. Fri Feb 24 14:03:02 1995 Karl Berry * dvips.c (main): Don't give `W' output if -q(uiet). * config.ps (N): Don't define this by default. Fri Feb 10 15:39:50 1995 Karl Berry * dvips.c: Doc fix. * Makefile.in (texc.lpro): Use $(srcdir)/tex.lpro. From Andreas. Sun Jan 8 12:13:48 1995 Karl Berry * Version 5.58f. Sun Jan 1 14:16:52 1995 Karl Berry * Makefile.in (DEFS): Include -DEMTEX by default. Suggested by Joachim. Sat Dec 31 17:33:14 1994 Karl Berry * Makefile.in: Don't include tmptk.make any more. (install-exec): Don't depend on install-MakeTeXPK, either. Mon Dec 26 07:58:37 1994 Karl Berry * dvips.c (main): Don't set mfmode to / here, do it in kpse_init_prog. Sat Dec 24 15:20:50 1994 Karl Berry * emspecial.c (TRUE, FALSE) [TRUE]: Make definitions conditional. From Joachim Schrod . Wed Dec 14 15:16:53 1994 Karl Berry * Version 5.58e. Mon Dec 12 07:11:14 1994 Karl Berry * MakeTeXPK.in (pattern): Give right name in error message. From nickc@cs.st-andrews.ac.uk. Mon Dec 5 15:32:48 1994 Karl Berry * MakeTeXPK.in: Use $SAVEPWD instead of $PWD, for bash's sake. From bas@phys.uva.nl (Bas de Bakker). Sun Dec 4 16:34:59 1994 Karl Berry * dospecial.c (predospecial): Avoid scanning compressed files for font comments. From Peter Whaite . Sun Nov 27 11:39:42 1994 Karl Berry * output.c: Remove unmatched ( in output.c. From Philippe Charnier . * Makefile.in (install-data): Test for nonexistence of config.ps and psfonts.map before grepping in them, to avoid spurious error or unnecessary redirection. * config.h (MFMODE): Don't bother with this. * dvips.c (main): If mfmode is not set, set it to /, not a compile-time default. Fri Nov 25 11:05:58 1994 Karl Berry * resident.c (getdefaults): Don't set oname in case 'o' if the cmdline already did. * dvips.c (oname_option): New global. (main): Set if. * dvips.c, resident.c: Make config.$PRINTER mode value override config.ps. From heiko@lotte.sax.de and Michael C. Grant (independently). * MakeTeXPK.in: Restore the umask 0. Requested by Yves.Arrouye@imag.fr and others. * texc.script: Don't pass single - arg to ed; Linux loses. From heiko@lotte.sax.de (Heiko Schlittermann). Tue Nov 15 16:20:48 1994 Karl Berry * Makefile.in (targets.make): This is split up now. Sun Nov 6 16:10:33 1994 Karl Berry * configure.in: Run autoupdate. Sun Oct 30 16:17:22 1994 Karl Berry * Makefile.in (post-dist): Remove texc.lpro. From interran@uluru.Stanford.EDU. Tue Oct 25 17:47:48 1994 Karl Berry * Version 5.58c. Sun Oct 23 17:41:24 1994 Karl Berry * config.h (MFMODE) [!MFMODE]: Define to be "cx". * dvips.c (mfmode): Initalize to MFMODE, new option -mode to set it. * resident.c (getdefaults): For case M, only get the new mode if it wasn't specified on the command line. Tue Oct 18 07:15:42 1994 Karl Berry * MakeTeXPK.in: Reformat the MakeTeXPK.site line so Autoconf will substitute for both occurrences. (Actually, I think was my bug in make/targets.make for not doing global sed substitutions.) Sun Oct 16 20:42:47 1994 Karl Berry * dvips.texi: Distinguish somewhat more clearly between dvips and Dvipsk. * dospecial.c (dospecial): In " case, there was never supposed to *be* a closing quote in the \special, so go back to the original. Fri Oct 14 10:32:38 1994 Karl Berry * Version 5.58b. Tue Oct 11 15:28:44 1994 Karl Berry * Makefile.in (install-exec): mkdirchain $(fontdir), for the sake of MakeTeXPK. * dospecial.c (dospecial): In "..." case, don't send closing quote. Sun Oct 9 16:57:25 1994 Karl Berry * MakeTeXPK.in: Source $psheaderdir/MakeTeXPK.site if it exists. Also, add pk/ into the default destination path if we have map files. Thu Oct 6 14:36:41 1994 Karl Berry * dvips.c: Don't call help () twice for -?, and support --help and --version. Sun Oct 2 16:42:25 1994 Karl Berry * resident.c (SET_CLIENT_PATH): New macro; strdup path values from the config file. (getdefaults): Call it. * psfonts.map: Add more obliques for the standard fonts. From te@informatik.uni-hannover.de. * search.c (secure) [SECURE]: Put this back. From hank@automat.uni-essen.de. Sat Oct 1 20:25:42 1994 Karl Berry * MakeTeXPK.in: Make egrep pattern search for the base font, not just $NAME. Sat Sep 24 16:53:36 1994 Karl Berry * dvips.c (o and f cases): Do not set noenv. This makes dvips always read the config files. Thu Sep 22 15:35:22 1994 Karl Berry * dvips.c: Remove `got a new papersize' messages. * resident.c (getpsinfo): Allow multiple spec's a la download's. Mon Sep 19 11:55:13 1994 Karl Berry (karl@cs.umb.edu) * Makefile.in (post-dist): Just link to the fontname dvips directory, since it has all the encoding files. Mon Sep 12 11:04:46 1994 Karl Berry (karl@cs.umb.edu) * Version 5.58a. * dospecial.c: Remove my warning stuff; Tom did it his way. Sun Sep 11 14:49:31 1994 Karl Berry (karl@cs.umb.edu) * Update for dvips 558. * Makefile.in (psconfigfile): Remove this variable, and just use config.ps; we would never install anything else anyway. (uninstall-data): Install psfonts.map and config.ps if they didn't exist. Sat Sep 10 13:45:28 1994 Karl Berry (karl@cs.umb.edu) * MakeTeXPK.in (ps_to_pk case): Only parse psfonts.map if we are ps2pk. * dvips.texi: Fix overfull boxes. * Makefile.in (post-dist-*): Include .aux/.cps in distribution. Wed Sep 7 12:04:36 1994 Karl Berry (karl@cs.umb.edu) * Version 5.55b. * afm2tfm.c (assignchars): Forget the outenname stuff; I just noticed -u (pedantic). Sun Sep 4 07:19:05 1994 Karl Berry (karl@cs.umb.edu) * loadfont.c: Include c-pathmx.h. Sat Sep 3 13:03:55 1994 Karl Berry (karl@cs.umb.edu) * Makefile.in (install-data): Install the .enc files. (uninstall-data): And uninstall them. Fri Sep 2 11:55:34 1994 Karl Berry (karl@cs.umb.edu) * Makefile.in (default): New target. (makeargs): No need for this. * psfonts.map: Include entries for *0, to accomodate the !@#$% latex2e. Tue Aug 30 14:21:42 1994 Karl Berry (karl@cs.umb.edu) * dospecial.c (dospecial, GetKeyVal): Add case for warning. * dvips.texi (Special Font Effects): Mention outlined fonts. * bbox.c (floor): Do not declare this. * Makefile.in (distclean): Don't need this. Mon Aug 29 16:53:48 1994 Karl Berry (karl@cs.umb.edu) * configure.in (AC_OUTPUT): No more fonts/Makefile. * Makefile.in (install-data): Use CP_R. Thu Aug 25 14:19:18 1994 Karl Berry (karl@cs.umb.edu) * config.h (D_SEARCH): New debug bit. * dvips.c (dvips): Set it. * dvips.texi: Document it. Tue Aug 23 14:21:06 1994 Karl Berry (karl@cs.umb.edu) * afm2tfm.c (assignchars): Don't add additional characters if an explicit output encoding was specified. * MakeTeXPK.in: Remove ;landscape hacks. Sun Aug 21 10:58:11 1994 Karl Berry (karl@cs.umb.edu) * Makefile.in (mtp_destroot): Toss this. (MakeTeXPK): Substitute fontdir instead. Sat Aug 20 16:13:28 1994 Karl Berry (karl@cs.umb.edu) * MakeTeXPK.in (DESTDIR): Deal with ;landscape in the mode. Fri Aug 19 13:42:22 1994 Karl Berry (karl@cs.umb.edu) * MakeTeXPK.in: Consistently use mf instead of $mf. (MODE): If `default', guess, so users can specify a destdir with no mode. Tue Aug 16 09:28:35 1994 Karl Berry (karl@cs.umb.edu) * Makefile.in (sauterdir): Change to .../src. (MakeTeXPK): Substitute for it. * MakeTeXPK.in: Don't echo the args; let kpathsea do it. Sat Aug 13 17:14:54 1994 Karl Berry (karl@cs.umb.edu) * Makefile.in: Use $@ where possible. Fri Aug 12 10:54:19 1994 Karl Berry (karl@cs.umb.edu) * dopage.c (floor): Do not declare. Tue Aug 9 13:53:12 1994 Karl Berry (karl@cs.umb.edu) * dvips.c (-D): Set mfmode to the empty string. * MakeTeXPK.in: Don't bother trying at +-1 now. * fontdef.c (newfontdesc): kpse_magstep_fix the dpi calculation. Sun Aug 7 19:34:57 1994 Karl Berry (karl@cs.umb.edu) * loadfont.c (pkopen): Free the filename if necessary. Tue Aug 2 15:02:59 1994 Karl Berry (karl@cs.umb.edu) * config.h, dvips.c (D_DB_BUILD): Replace with D_HASH. Sun Jul 31 14:49:22 1994 Karl Berry (karl@cs.umb.edu) * special.lpro (startTexFig): Set magscale to true. From Tom. * MakeTeXPK.in (pointsize): Improve sed expression to extract this. From jsacco@ssl.com. Fri Jul 29 12:01:50 1994 Karl Berry (karl@cs.umb.edu) * Makefile.in: Use ac_include. (install-{exec,data}): Different strategy for ensuring always-true exit status. Thu Jul 28 15:38:04 1994 Karl Berry (karl@cs.umb.edu) * Makefile.in (install-exec): Check for MakeTeXPK in $(scriptdir), not $(bindir). From john@minster.york.ac.uk. Fri Jul 15 11:46:20 1994 Karl Berry (karl@cs.umb.edu) * virtualfont.c (vfopen): Don't append .vf here, kpathsea does it. * tfmload.c (tfmopen): Likewise. * dvips.c (main): Call kpse_set_progname first. Tue Jul 5 14:01:33 1994 Karl Berry (karl@cs.umb.edu) * MakeTeXPK.in (DVIPSHEADERS): Set this, and export it for gsftopk. Fri Jun 24 17:09:19 1994 Karl Berry (karl@cs.umb.edu) * config.h (D_*): Add defns to pass to kpathsea. (*path): Define as the kpse enum constants. * most files: Remove extern char * decls of path variables. * search.c: Pass in the format, not the path. * resident.c (checkenv): #if 0 out. Thu Jun 23 16:56:50 1994 Karl Berry (karl@cs.umb.edu) * loadfont.c (pkopen): Don't set the ..._ENABLED bit; kpathsea does that now. * paths.h (*_ENVS): Move these to kpathsea. * dvips.c (tfmpath, pkpath, etc.): Delete these; they're in the kpathsea structure now. Tue Jun 14 12:41:48 1994 Karl Berry (karl@cs.umb.edu) * Makefile.in (depend_encies): Remove. Mon Jun 13 10:09:09 1994 Karl Berry (karl@cs.umb.edu) * loadfont.c (pkopen): Don't call kpse_set_maketex_mag here, let kpathsea do it. Also don't set MAKETEX_DPI, it's not used. Sat May 28 19:08:50 1994 Karl Berry (karl@cs.umb.edu) * PSfonts: Rename to fonts, for consistency with dviljk. * Makefile.in: Change the cd's. Thu May 26 16:29:54 1994 Karl Berry (karl@cs.umb.edu) * loadfont.c (name): Make size be PATH_MAX. * search.c (search, pksearch): Set name. * virtualfont.c (name): Replace definition with extern. * virtualfont.c (virtualfont) [DEBUG]: Print memory stats if D_MEM, not D_FONTS. * loadfont.c (loadfont): Likewise. * resident.c (getpsinfo): Ignore whitespace after a <. Tue May 24 13:14:08 1994 Karl Berry (karl@cs.umb.edu) * resident.c (checkenv): Always set MAKETEX_BASE_DPI, for the sake of missfont.log, even if dontmakefont. Thu Apr 28 12:14:50 1994 Karl Berry (karl@cs.umb.edu) * output.c (cleanprinter): Call perror if file writing failed. Thu Apr 21 13:24:58 1994 Karl Berry (karl@ra.cs.umb.edu) * config.h (SHORTINT): Define if SIZEOF_INT < 4. Sun Apr 17 16:13:16 1994 Karl Berry (karl@ra.cs.umb.edu) * debug.h (fopen): Do not define this; we'll use kpathsea's fopen debugging support now. * dvips.c (main): 'd' flag calls KPSE_DEBUG_SET (KPSE_DEBUG_FOPEN). * Makefile.in (texc.lpro): Use $(SHELL) to run texc.script. (top_srcdir): Define this for configure to substitute. Tue Apr 5 11:51:32 1994 Karl Berry (karl@cs.umb.edu) * MakeTeXPK.in (sauterdir): Substitute for this value. Various other Sauter fixes from barthel@uaimzm.Mathematik.Uni-Mainz.DE. * Makefile.in (sauterdir): Make it a variable. Sun Apr 3 10:21:41 1994 Karl Berry (karl@cs.umb.edu) * Version 5.55a. Fri Apr 1 11:52:42 1994 Karl Berry (karl@cs.umb.edu) * resident.c (checkenv): Allow envvars {DVIPS,TEX}SIZES to override the R config file line. * Update for dvips 5.55. Thu Mar 24 10:43:03 1994 Karl Berry (karl@cs.umb.edu) * search.c (search): must_exist is false for VF files. Tue Mar 15 07:21:04 1994 Karl Berry (karl@cs.umb.edu) * Makefile.in (distclean): Remove PSfonts/Makefile. From John I. Fri Mar 11 14:51:04 1994 Karl Berry (karl@cs.umb.edu) * MakeTeXPK.in: Echo `gsftopk failed' to stderr, not stdout. Thu Mar 3 08:51:50 1994 Karl Berry (karl@cs.umb.edu) * Version 5.528a. Thu Feb 24 16:19:55 1994 Karl Berry (karl@cs.umb.edu) * Makefile.in (installargs): Pass fontdir and ps_fontdir. Tue Feb 22 11:41:13 1994 Karl Berry (karl@cs.umb.edu) * Makefile.in (c-auto.h.in): Include SMART_PUTENV. Mon Feb 21 16:47:21 1994 Karl Berry (karl@cs.umb.edu) * MakeTeXPK.in: Default to appending the mode, and allow an extra arg to specify the destination directory. From neal. * dvips.c (newoutname): | means pipe. * afm2tfm.c: Remove declarations of exit. * loadfont.c (pkopen): Cast args to kpse_bitmap_tolerance for the sake of non-ANSI compilers. Sun Feb 13 11:32:48 1994 Karl Berry (karl@cs.umb.edu) * Update for dvips 5.528. Wed Feb 2 09:06:20 1994 Karl Berry (karl@cs.umb.edu) * Version 5.526b. * loadfont.c (pkopen): Don't complain if the two dpi's can tolerate each other. * dvips.c (helparr): Mention -pp. * dvips.1: Change char92 to \. From karney@theory.pppl.gov. Tue Feb 1 11:31:30 1994 Karl Berry (karl@cs.umb.edu) * Makefile.in (install-data): Add || true to the install_fonts, so Ultrix make doesn't quit prematurely. * Makefile.in (c-auto.h.in): New target. Sat Jan 22 14:25:02 1994 Karl Berry (karl@cs.umb.edu) * Version 5.526a. * loadfont.c (pkopen): Set dontmakefont=1 at the first failure. Thu Jan 20 14:17:04 1994 Karl Berry (karl@cs.umb.edu) * search.c (search) [SECURE]: Don't allow reading of an absolute_p file. From maj@cl.cam.ac.uk. Sun Jan 16 14:55:08 1994 Karl Berry (karl@cs.umb.edu) * Makefile.in (mtp_destdir): Change to $(fontdir)/pk. Fri Jan 14 15:27:17 1994 Karl Berry (karl@cs.umb.edu) * Update for dvips 5.523. * MakeTeXPK (MODE): Remove guess for lview monitor, that no one in the world uses but me. Sat Dec 18 12:49:10 1993 Karl Berry (karl@cs.umb.edu) * dvips.texi (Config File Options): Enumerate the envvars that override the P path. (From worsch@ira.uka.de.) Thu Dec 16 12:32:21 1993 Karl Berry (karl@cs.umb.edu) * MakeTeXPK.in: Say where gsftopk can be ftp'd. Fri Dec 10 15:29:34 1993 Karl Berry (karl@cs.umb.edu) * finclude.c (scanvm): Remove declaration of atol, as it causes trouble with glibc. From kayvan@satyr.sylvan.com. Thu Dec 9 09:44:34 1993 Karl Berry (karl@cs.umb.edu) * MakeTeXPK.in: Add gsftopk stuff, guess ljfour for 600 dpi, allow user envvars to override, other cleanups. gsftopk stuff from R.Kooijman@et.tudelft.nl. Tue Dec 7 14:01:30 1993 Karl Berry (karl@cs.umb.edu) * loadfont.c (pkopen): Call kpse_set_maketex_mag instead of find_mag_str. * Makefile.in (objects): Remove makefont.o. * dvips.texi (Installation): Mention that MakeTeXPK's interface is different in dvipsk. * dvips.c (main): Make -v print the version number and exit. Sat Nov 27 14:55:28 1993 Karl Berry (karl@cs.umb.edu) * resident.c (INIT_PATH): Use the current value for the default, also. Change calls. * resident.c (getdefaults): Improve error message. (getpath): Expand a default value here; change callers to pass compile-time default, instead of previous value. Sun Nov 21 15:34:21 1993 Karl Berry (karl@cs.umb.edu) * resident.c (checkenv) [DEBUG]: Correct #endif placement. From pnoma@wk.estec.esa.nl. Sun Nov 14 11:56:19 1993 Karl Berry (karl@cs.umb.edu) * Makefile.in (mtp_destdir): texfontdir has been renamed. Fri Nov 12 19:42:21 1993 Karl Berry (karl@cs.umb.edu) * MakeTeXPK.in: Document the final echo in no uncertain terms. Thu Nov 11 10:58:41 1993 Karl Berry (karl@cs.umb.edu) * MakeTeXPK.in (pointsize): Don't assume the fontname starts with `cm'. Sat Nov 6 07:15:17 1993 Karl Berry (karl@cs.umb.edu) * MakeTeXPK.in: test $d should have been test -d. Wed Nov 3 14:43:05 1993 Karl Berry (karl@cs.umb.edu) * Version 5.521a. Fri Oct 29 13:24:01 1993 Karl Berry (karl@cs.umb.edu) * Makefile.in (program_rm): Take out paths.h. Tue Oct 26 11:38:35 1993 Karl Berry (karl@cs.umb.edu) * drawPS.c (arc): Consistently check for nonsquare aspect ratios. From Ulf.Niemeyer@fernuni-hagen.de. Sun Oct 24 19:26:37 1993 Karl Berry (karl@cs.umb.edu) * resident.c (checkenv): Let TEXCONFIG override the config path, as it's supposed to. Sat Oct 23 14:51:37 1993 Karl Berry (karl@cs.umb.edu) * MakeTeXPK.in: Check for the GF file being at +1 or -1 of the dpi we were asked for. Apparently the DC fonts are generated this way. Fri Oct 22 13:09:29 1993 Karl Berry (karl@cs.umb.edu) * resident.c (checkenv): Set kpse_override_path to pkpath, so a config file value will be found. * emspecial.c, dospecial.c (atoi): Do not declare here, as it conflicts with the Linux system decl. * dvips.texi (Install): Be more precise about when config.ps and MakeTeXPK are overwritten. From gv@me.umn.edu. * paths.h.in: Move paths to kpathsea/paths.h.in, and rename to paths.h. * Makefile.in (paths.h): Remove this dependency. * Makefile.in ($(kpathsea)): Depend on files in kpathsea_srcdir. (install-exec): MakeTeXPK is not in srcdir anymore. (install-data): The prologues aren't in srcdir. The info files might be in either place. From simon@lia.di.epfl.ch. Tue Oct 19 12:07:25 1993 Karl Berry (karl@cs.umb.edu) * MACHINES: New entries from simon. Sat Oct 9 07:06:26 1993 Karl Berry (karl@cs.umb.edu) * Makefile.in (MakeTeXPK): Make executable. * Makefile.in (distclean): MakeTeXPK removed at mostlyclean now. Thu Oct 7 09:58:48 1993 Karl Berry (karl@cs.umb.edu) * MakeTeXPK.in: Missing ", and don't assume sauterdir exists. Wed Oct 6 08:50:06 1993 Karl Berry (karl@cs.umb.edu) * Version 5.519b. Sat Oct 2 17:30:45 1993 Karl Berry (karl@cs.umb.edu) * Makefile.in (install-*): Don't reassign PATH, just invoke mkdirchain explicitly. * Makefile.in (dvips_makeargs): Delete, since now unused. Fri Oct 1 07:09:29 1993 Karl Berry (karl@cs.umb.edu) * MakeTeXPK.in: Don't try to put the MF command into a variable; quoting rules are too confused. Wed Sep 29 15:21:49 1993 (karl@terminus.cs.umb.edu) * Version 5.519a. Tue Sep 28 13:23:45 1993 Karl Berry (karl@cs.umb.edu) * resident.c (print_path): Don't compare char to NULL. * resident.c (lastresortsizes): Declare as an unsigned array. * loadfont.c (pkopen): ifdef out the dead code. Sat Sep 25 11:33:21 1993 Karl Berry (karl@cs.umb.edu) * Makefile.in (mtp_destdir): New variable. (MakeTeXPK): New target. * MakeTeXPK.in: New file. * resident.c (getdefaults): Set envvar MAKETEX_MODE in M case. Fri Sep 24 11:47:55 1993 Karl Berry (karl@cs.umb.edu) * resident.c (checkenv): Initialize kpse_fallback_font. Thu Sep 23 17:53:48 1993 Karl Berry (karl@cs.umb.edu) * resident.c (checkenv): Check for DVIPSFONTS. * dvips.texi (Environment variables): Document it. Sun Aug 29 11:45:52 1993 Karl Berry (karl@cs.umb.edu) * resident.c: No leading spaces before #'s. * Makefile.in (install-*): Use $(PATH) instead of $$PATH. * config.h (DEBUG) [NO_DEBUG]: Define this. Fri Aug 27 10:27:34 1993 Karl Berry (karl@cs.umb.edu) * paths.h.in (DVIPS_{HEADER,PICT}_ENVS): New defines. * resident.c (getpath): Make a copy. (getdefaults): Go back to calling getpath. (checkenv): Change kpse_init_path calls to pass default. * dvips.c (*path): Initialize to default paths. * dvips.c (tfmpath, pkpath, vfpath, figpath, headerpath): All strings now, not string *'s. * tfmload.c (tfmpath): Likewise. Wed Aug 25 14:35:30 1993 Karl Berry (karl@cs.umb.edu) * Update for dvips 5.519. Sun Aug 22 19:13:42 1993 Karl Berry (karl@cs.umb.edu) * Makefile.in (install-data): Install the fonts last. * Makefile.in (install-*): mkdirchain is in the top level. Tue Aug 10 10:34:30 1993 Karl Berry (karl@cs.umb.edu) * Makefile.in: Remove reference to -DFONTLIB. (objects): Remove flib.o. Fri Aug 6 09:04:45 1993 Karl Berry (karl@cs.umb.edu) * resident.c (checkenv): Look for DVIPSHEADERS. Thu Aug 5 09:03:31 1993 Karl Berry (karl@cs.umb.edu) * Version 5.518a. * Makefile.in (default_config_path): Add ~. Wed Aug 4 13:50:36 1993 Karl Berry (karl@cs.umb.edu) * MakeTeXPK: Announce that we're running. * Makefile.in: Major surgery to conform to new scheme. Sat Jul 31 11:36:15 1993 Karl Berry (karl@cs.umb.edu) * configure.in: Remove AC_PREFIX. Tue Jul 27 15:00:44 1993 Karl Berry (karl@cs.umb.edu) * Update for dvips 5.518. Sun Jul 25 10:43:45 1993 Karl Berry (karl@cs.umb.edu) * Makefile.in (install*): Add $(srcdir) to PATH for mkdirchain, not . Wed Jul 21 19:46:22 1993 Karl Berry (karl@cs.umb.edu) * Makefile.in (configclean): New target. Sun Jul 11 16:20:41 1993 Karl Berry (karl@cs.umb.edu) * MakeTeXPK: Output the filename we generate to stdout, if we succeed. Tue Jul 6 08:40:25 1993 Karl Berry (karl@cs.umb.edu) * MakeTeXPK: Send all output to stderr. Mon Jul 5 09:32:30 1993 Karl Berry (karl@cs.umb.edu) * Makefile.in: Various configuration changes from xdvik. * paths.h.in (DEFAULT_{TFM,PK,VF}_PATH): Remove. Fri Jul 2 12:00:05 1993 Karl Berry (karl@cs.umb.edu) * configure.in: sinclude common.ac. Tue May 25 10:09:02 1993 Karl Berry (karl@cs.umb.edu) * configure.in (AC_HAVE_HEADERS): Test for `pwd.h'. Sat May 22 11:21:34 1993 Karl Berry (karl@cs.umb.edu) * Makefile.in (dist): Run gzip -9. Fri May 21 10:14:25 1993 Karl Berry (karl@cs.umb.edu) * resident.c: Change #if DEBUG to #ifdef. Thu May 20 11:48:28 1993 Karl Berry (karl@cs.umb.edu) * psfonts.map: Add URW fonts. Tue May 18 13:58:55 1993 Karl Berry (karl@cs.umb.edu) * Makefile.in (install-*): mkdirchain on install dirs, and put mkdirchain in the dist. Sun May 16 17:47:26 1993 Karl Berry (karl@cs.umb.edu) * dvips.texi: Do paragraph indentation from command. * Makefile.in (MAKEINFO_FLAGS): New variable. Mon May 10 07:13:29 1993 Karl Berry (karl@cs.umb.edu) * Version 5.516a. Sun May 9 10:35:58 1993 Karl Berry (karl@cs.umb.edu) * Makefile.in (extraclean): add *.i and *.s. Sat May 8 13:11:16 1993 Karl Berry (karl@cs.umb.edu) * Makefile.in (dist): Rewrite for kpathsea. * .c, config.h: Use instead of "foo.h". Tue May 4 14:56:57 1993 Karl Berry (karl@cs.umb.edu) * Makefile.in (info, dvi): New targets. Sat May 1 16:21:41 1993 Karl Berry (karl@cs.umb.edu) * Update for dvips 5.516, and kpathsea library. Fri Apr 23 16:46:29 1993 Karl Berry (karl@cs.umb.edu) * configure.in (AC_CONST): Add this. Tue Apr 20 06:58:31 1993 Karl Berry (karl@cs.umb.edu) * pathshare from web2c. Sun Apr 11 18:57:39 1993 Karl Berry (karl@cs.umb.edu) * Version 5.515b. Sat Apr 10 14:58:56 1993 Karl Berry (karl@cs.umb.edu) * config.h (UNIX_ST_NLINK): Define unless on foreign OS. * Makefile.in (uninstall*): New targets. * Makefile.in (scriptdir): New variable. (install): Install MakeTeXPK there. * configure.in: Do AC_XENIR_DIR after AC_DIR_HEADER. Mon Mar 29 08:28:22 1993 Karl Berry (karl@cs.umb.edu) * Version 5.515a. * Makefile.in (default_tfm_path): Put . first. Sun Mar 28 16:43:50 1993 Karl Berry (karl@cs.umb.edu) * Update for dvips 5.515. Mon Mar 22 06:12:25 1993 Karl Berry (karl@cs.umb.edu) * Version 5.12c. Sun Mar 14 14:51:03 1993 Karl Berry (karl@cs.umb.edu) * MakeTeXPK (MFINPUTS): Append a colon to be sure and get the system default path. Sat Mar 13 11:04:26 1993 Karl Berry (karl@cs.umb.edu) * Makefile.in (CPPFLAGS): Add @DEFS@, for -DHAVE_CONFIG_H. Mon Mar 8 06:27:11 1993 Karl Berry (karl@cs.umb.edu) * Version 5.12b. Mon Mar 1 06:26:28 1993 Karl Berry (karl@cs.umb.edu) * Version 5.512a. Sun Feb 28 12:03:16 1993 Karl Berry (karl@cs.umb.edu) * Makefile.in (dist): Get lucida.sty. Thu Feb 25 14:02:02 1993 Karl Berry (karl@cs.umb.edu) * MakeTeXPK (MFINPUTS): Include the old cwd before changing to TEMPDIR. Tue Feb 23 16:51:38 1993 Karl Berry (karl@cs.umb.edu) * Makefile.in (dist): Copy info files to my local info directory. Mon Feb 22 06:19:46 1993 Karl Berry (karl@cs.umb.edu) * Version 5.499c. Wed Feb 17 06:45:29 1993 Karl Berry (karl@cs.umb.edu) * Makefile.in (INSTALL): Use tr instead of grep to remove the Info control characters. Sun Feb 14 17:11:10 1993 Karl Berry (karl@cs.umb.edu) * Makefile.in (install): Split into install-exec and install-data. Fri Feb 12 08:34:45 1993 Karl Berry (karl@cs.umb.edu) * dvips.1: Don't refer to dvips.tex. Tue Feb 9 20:27:50 1993 Karl Berry (karl@cs.umb.edu) * MakeTeXPK: Create DESTDIR if it doesn't exist. Sun Feb 7 10:01:25 1993 Karl Berry (karl@cs.umb.edu) * Version 5.499b. * Makefile.in (install): dir is a shell variable, not a make variable; fix logic for original MakeTeXPK, etc. Tue Feb 2 11:41:10 1993 Karl Berry (karl@cs.umb.edu) * Makefile.in (install): Don't install over a modified MakeTeXPK, config.ps, or psfonts.map. * Version 5.499a. Sun Jan 31 07:08:44 1993 Karl Berry (karl@cs.umb.edu) * Makefile.in (install): Allow install_subdirs to be empty. Fri Jan 29 17:38:04 1993 Karl Berry (karl@cs.umb.edu) * Makefile.in (CPPFLAGS): Don't bother with `-I.'. Wed Jan 20 07:53:36 1993 Karl Berry (karl@cs.umb.edu) * config.h (FATAL*): Now in lib.h. * Version 5.497c. Mon Jan 18 08:19:57 1993 Karl Berry (karl@cs.umb.edu) * PSfonts: Merge PStfms and PSvfs. Sat Jan 9 15:21:30 1993 Karl Berry (karl@cs.umb.edu) * Makefile.in (configure, config.status): cd $(srcdir) first. Sun Jan 3 19:43:20 1993 Karl Berry (karl@cs.umb.edu) * config.h: Move some includes to c-std.h. Fri Jan 1 13:57:24 1993 Karl Berry (karl@cs.umb.edu) * configure.in, c-auto.h.in, c-memstr.h, dirio.h: Changes for new Autoconf. Wed Dec 23 06:57:20 1992 Karl Berry (karl@cs.umb.edu) * Version 5.497b. Thu Dec 17 07:13:35 1992 Karl Berry (karl@cs.umb.edu) * dvips.c (main) [DEBUG]: Missing part of fprintf. * resident.c (checkenv) [DEBUG]: Had figpath instead of pkpath. Mon Dec 14 07:27:39 1992 Karl Berry (karl@cs.umb.edu) * Version 5.497a. Fri Dec 11 15:23:58 1992 Karl Berry (karl@cs.umb.edu) * afm2tfm.c, dospecial.c, emspecial.c, finclude.c: Change ctype references to use uppercase macros. Thu Dec 10 10:36:13 1992 Karl Berry (karl@cs.umb.edu) * GNUmakefile.in (GNUmakefile): Add $(srcdir) to dependency, and use $(SHELL) instead of sh. (config.status): Use $(SHELL). Tue Dec 8 07:19:52 1992 Karl Berry (karl@cs.umb.edu) * Makefile.in (.texi.info): Add `-o $@'. Sat Dec 5 18:50:09 1992 Karl Berry (karl@cs.umb.edu) * Update for version 5.497. Sun Nov 29 17:25:52 1992 Karl Berry (karl@cs.umb.edu) * finclude.c (atof) [!STDC_HEADERS]: Make declaration conditional. Sun Nov 22 11:11:24 1992 Karl Berry (karl@cs.umb.edu) * Makefile.in (install): Test for non-null install_subdirs. Sat Oct 31 07:56:41 1992 Karl Berry (karl@cs.umb.edu) * encodings/texm{sym,ital,ext}.enc: New files. * dvips.texi: Remove the `eg$ ' from examples. Wed Oct 28 07:43:50 1992 Karl Berry (karl@cs.umb.edu) * Version 5.495b. Tue Oct 27 06:07:20 1992 Karl Berry (karl@cs.umb.edu) * Makefile.in (.lpro.pro): Depend on squeeze; also, use a temp file to avoid creating empty files. * Makefile.in (checkenv) [DEBUG]: Conditionalize use of D_PATH. * Makefile.in (.texi.info): New suffix rule, to avoid use of $< in normal rules. * Makefile.in (distclean): Remove */Makefile. Sat Oct 24 11:48:14 1992 Karl Berry (karl@ds3.cs.umb.edu) * Makefile.in (install): Quote $(install_subdirs), in case it's been set to empty. * Makefile.in (texfontdir): New variable. (install): mkdir it and the ps subdirectories. Sat Oct 17 16:39:02 1992 Karl Berry (karl@cs.umb.edu) * Makefile.in (install_subdirs, subdirs): New variables. (install): make install in $(install_subdirs). (dist): Dist $(subdirs). (installargs): Make arguments to pass to subdirs. (ps{tfm,vf}dir): New target directories. * configure.in (AC_OUTPUT): Create Makefiles in the install subdirs. * Makefile.in (paths.h): Don't depend on Makefile and Makefile.in -- they change too often for other reasons than paths. * Makefile.in (check): New target. * Makefile.in (objects): Include `emspecial.o'. * Update for dvips 5.495. Thu Oct 15 08:34:33 1992 Karl Berry (karl@cs.umb.edu) * configure: Ran Autoconf 1.2. Sat Oct 10 12:20:02 1992 Karl Berry (karl@cs.umb.edu) * Makefile.in (dist): Don't copy any subdirs. * README: Document what we've changed and what we haven't. Wed Sep 23 07:51:13 1992 Karl Berry (karl@cs.umb.edu) * Version 5.493c. Sun Sep 20 12:52:24 1992 Karl Berry (karl@cs.umb.edu) * Makefile.in (config.status): use sh to run configure --no-create. * Makefile.in (realclean): OK, don't remove configure. Thu Sep 17 07:40:27 1992 Karl Berry (karl@hayley) * Version 5.493b. Mon Sep 14 17:59:53 1992 Karl Berry (karl@hayley) * Makefile.in (config.status): new target. (Makefile): depend on config.status. Thu Sep 10 08:57:33 1992 Karl Berry (karl@hayley) * Makefile.in (dist): include COPYING*. * Makefile.in (realclean): remove configure. * MakeTeXPK: run gftopk ./, in case an old version of gftopk is installed. Wed Sep 9 06:26:30 1992 Karl Berry (karl@hayley) * Version 5.493a. Tue Sep 8 16:51:25 1992 Karl Berry (karl@hayley) * c-auto.h.in (_MINIX, _{ALL,POSIX,POSIX_1}_SOURCE): add #undef's for configure to define. * configure.in: test for more Unix variants. Fri Sep 4 17:27:52 1992 Karl Berry (karl@hayley) * Makefile.in (extraclean): new target. * Update to version 5.493. Thu Aug 27 08:57:06 1992 Karl Berry (karl@hayley) * configure: regenerated from Autoconf 1.1. Tue Aug 11 07:00:15 1992 Karl Berry (karl@hayley) * Version 5.490s. * Makefile.in (dist): copy MakeTeXPK. Fri Jul 31 19:14:15 1992 Karl Berry (karl@hayley) * Makefile.in (dist): include our aclocal.m4. Wed Jul 29 08:52:01 1992 Karl Berry (karl@hayley) * Version 5.490r (ran pathshare). Fri Jul 24 06:49:56 1992 Karl Berry (karl@hayley) * Version 5.490q. Wed Jul 22 09:10:03 1992 Karl Berry (karl@hayley) * configure.in: update for Autoconf 1.0. Tue Jul 21 08:52:21 1992 Karl Berry (karl@hayley) * resident.c (print_path): new function. (checkenv): call it, if we are debugging paths. * resident.c (checkenv): don't reset envvars if they are already set. (getdefaults): pass the user envvars when setting values from the config files, so they will override. Thu Jul 16 06:56:31 1992 Karl Berry (karl@hayley) * Version 5.490p. Sun Jul 12 06:20:11 1992 Karl Berry (karl@hayley) * Makefile.in (dist): forgot to include the config files. Sat Jul 11 11:52:48 1992 Karl Berry (karl@hayley) * Makefile.in (dist): copy texinfo.tex and `adobe' from their original directory, instead of using the versions here. Fri Jul 10 06:52:51 1992 Karl Berry (karl@hayley) * Version 5.490o. Thu Jul 2 15:25:00 1992 Karl Berry (karl@hayley) * Makefile.in (CPPFLAGS): new variable. (.c.o): use it. (CFLAGS): define as -g. (cdebug): remove. (LDFLAGS): use CFLAGS instead of cdebug. * Run Autoconf 0.119. Wed Jul 1 07:48:33 1992 Karl Berry (karl@hayley) * Version 5.490n. Sat Jun 27 11:03:09 1992 Karl Berry (karl@hayley) * Makefile.in (paths.h): depend on Makefile.in and Makefile. Thu Jun 25 09:57:54 1992 Karl Berry (karl@hayley) * All these $(srcdir) changes from or inspired by zoo@cygnus.com. * Makefile.in (paths.h): use $(srcdir) for paths.h.in. Wed Jun 24 11:57:21 1992 Karl Berry (karl@hayley) * structures.h (BANNER): name this program kdvips. * Makefile.in (distdir): ditto for the directory. * Makefile.in (CCFLAGS): new variable to replace $(CFLAGS). (.c.o): new implicit rule to use it. (.lpro.pro): use $< instead of $*.lpro, since I guess it's marginally more portable. (texc.lpro, install): use $(srcdir). (Makefile): new target. * Makefile (install): mkdir more of the top level directories. * Makefile (dist): distribute the config* files (except config.status). * README: say that %-specifiers don't work. Tue Jun 23 08:50:06 1992 Karl Berry (karl@hayley) * Version 5.490m. Fri Jun 19 09:26:14 1992 Karl Berry (karl@hayley) * psfonts.map: update for new (old by now, actually) change in the way ExtendFont and SlantFont work. Tue Jun 16 06:13:31 1992 Karl Berry (karl@hayley) * Version 5.490l. Sat Jun 13 07:13:07 1992 Karl Berry (karl@hayley) * loadfont.c (pkopen): fix remaining sprintf-with-too-many-%'s. Thu Jun 11 08:45:25 1992 Karl Berry (karl@hayley) * Makefile.in (.NOEXPORT): new target, since Autoconf doesn't add it automatically any more. Wed Jun 10 06:34:24 1992 Karl Berry (karl@hayley) * Version 5.490k. Fri Jun 5 07:58:45 1992 Karl Berry (karl@hayley) * squeeze.c, afm2tfm.c (main): `return 0' instead of `exit (0)'. (From Paul Eggert) Also declare as `int'. * Makefile (install): `black.tex' is now `blackdvi.tex', etc. Thu Jun 4 08:25:51 1992 Karl Berry (karl@hayley) * main.c (main): `return 0' instead of `exit (0)'. (From Paul Eggert) * Update for dvips 5.490. * configure.in (AC_HEADER_FILE): rename to AC_CONFIG_HEADER, for Autoconf 0.115. Wed Jun 3 08:19:53 1992 Karl Berry (karl@hayley) * Version 5.487l. Fri May 29 11:28:16 1992 Karl Berry (karl@hayley) * Below changes from Paul Eggert. * dvips.c (main): declare as returning an int. * dvips.c (exit): do not declare. * resident.c (pagecopies) [DEBUG]: declare unconditionally. * resident.c (exit): do not declare. * unpack.c (flip): don't use a variable `howmany', since Sun has a macro called that. * config.h (FATAL): don't assume an ANSI cpp. dvipsk_TexLive-2009-stripped/t1part.h0000644000175000017500000000531511372532227017466 0ustar uwabamiuwabami/*t1part.h from t1part.c version 1.59 beta (c)1994, 1996 by Sergey Lesenko lesenko@desert.ihep.su * * It is distributed with no warranty of any kind. * You may modify and use this program. It can be included * in any distribution, commercial or otherwise, so long as * copyright notice be preserved on all copies. */ #ifdef KPATHSEA #include #else /* not KPATHSEA */ #include #include #include #include #include #endif /* not KPATHSEA */ #define DVIPS /* #define DOS #define BORLANDC */ #ifdef DEBUG extern int debug_flag; #define D_VIEW_VECTOR (1<<8) #define D_CALL_SUBR (1<<9) #endif #ifdef DVIPS extern FILE *search(); #ifndef KPATHSEA extern char *headerpath ; #endif /* not KPATHSEA */ #define psfopen(A,B) search(headerpath,A,B) #else #define psfopen(A,B) fopen(A,B) #endif #ifdef KPATHSEA #define OPEN_READ_BINARY FOPEN_RBIN_MODE #else #if defined(DOS) || defined(WIN32) #define OPEN_READ_BINARY "rb" #else #define OPEN_READ_BINARY "r" #endif #endif /* not KPATHSEA */ #ifdef DOS typedef unsigned char ub1; typedef unsigned long ub4; #else typedef unsigned char ub1; typedef unsigned long int ub4; #endif #ifdef BORLANDC typedef unsigned char typetemp; #define _HUGE huge #else typedef unsigned char typetemp; #define _HUGE #endif #ifdef BORLANDC #include #define UniRealloc farrealloc #define UniFree farfree #else #ifdef KPATHSEA #define UniRealloc xrealloc #define UniFree free #else #define UniRealloc realloc #define UniFree free #endif /* not KPATHSEA */ #endif #include "protos.h" #if 0 struct Char * AddChar (); void AddStr(); void BinEDeCrypt (); int DeCodeStr(); int DefTypeFont(); unsigned char CDeCrypt(); void CorrectGrid(); int CharEncoding (); void CheckChoosing(); int ChooseChar(); int ChooseVect(); int EndOfEncoding(); void ErrorOfScan (); int FindCharW(); void FindEncoding (); int FindKeyWord (); int FontPart (); void HexEDeCrypt (); void *getmem (); int GetNum (); int GetToken (); int GetWord (); int GetZeroLine (); unsigned char *itoasp (); void LastLook (); ub4 little4 (); void OutASCII (); void OutHEX (); void OutStr(); void NameOfProgram (); int PartialPFA (); int PartialPFB (); void PrintChar (); int PassString (); int PassToken (); void Reverse(); int ScanBinary (); void ScanChars (); void ScanSubrs (); void SubstNum (); void ViewReturnCall(); struct Char * UnDefineChars (); void UnDefineCharsW(); void UnDefineStr(); int WorkVect(); #endif #define NUM_LABEL 1024 #define BASE_MEM 16384 #define ADD_MEM 16384 #define FLG_LOAD_BASE (1) extern unsigned char grid[]; extern unsigned char *line, *tmpline ; extern int loadbase ; extern struct Char *FirstCharB; dvipsk_TexLive-2009-stripped/m4/0000775000175000017500000000000011401164110016401 5ustar uwabamiuwabamidvipsk_TexLive-2009-stripped/m4/kpse-libpng-flags.m40000664000175000017500000000227011401164110022151 0ustar uwabamiuwabami# Public macros for the TeX Live (TL) tree. # Copyright (C) 2009 Peter Breitenlohner # # This file is free software; the copyright holder # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 0 # KPSE_LIBPNG_FLAGS # ----------------- # Provide the configure options '--with-system-libpng' (if in the TL tree), # '--with-libpng-includes', and '--with-libpng-libdir'. # # Set the make variables LIBPNG_INCLUDES and LIBPNG_LIBS to the CPPFLAGS and # LIBS required for the `-lpng' library in libs/libpng/ of the TL tree. AC_DEFUN([KPSE_LIBPNG_FLAGS], [AC_REQUIRE([KPSE_ZLIB_FLAGS])[]dnl _KPSE_LIB_FLAGS([libpng], [png], [], [-IBLD/libs/libpng], [BLD/libs/libpng/libpng.a], [], [], [${top_builddir}/../../libs/libpng/png.h ${top_builddir}/../../libs/libpng/pngconf.h])[]dnl ]) # KPSE_LIBPNG_FLAGS # KPSE_LIBPNG_OPTIONS([WITH-SYSTEM]) # ---------------------------------- AC_DEFUN([KPSE_LIBPNG_OPTIONS], [_KPSE_LIB_OPTIONS([libpng], [$1])]) # KPSE_LIBPNG_SYSTEM_FLAGS # ------------------------ AC_DEFUN([KPSE_LIBPNG_SYSTEM_FLAGS], [_KPSE_LIB_FLAGS_SYSTEM([libpng], [png])]) dvipsk_TexLive-2009-stripped/m4/cho-kpse.m40000664000175000017500000000420311401164110020353 0ustar uwabamiuwabami# Public macros for the TeX Live (TL) tree. # Copyright (C) 1998 - 2008 Jin-Hwan Cho # Copyright (C) 2008 - 2009 Peter Breitenlohner # # This file is free software; the copyright holders # give unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # CHO_CHECK_KPSE_SUPPORT(PACKAGE-NAME) # ------------------------------------ # Check for required file formats and xbasename. # We need tex-ps_header, type1, vf, ofm, ovf, and truetype; # of these truetype was introduced last (Dec 1997). AC_DEFUN([CHO_CHECK_KPSE_SUPPORT], [KPSE_CHECK_KPSE_FORMAT([truetype], , [KPSE_MSG_ERROR([$1], [Required file formats not found in Kpathsea header files. This version of $1 requires that kpathsea and its headers be available. If you are sure they are installed and in a standard place, maybe you need a newer version of kpathsea? You also might try setting the environment variable CPPFLAGS (or CFLAGS) with -I pointing to the directory containing the file "kpathsea/kpathsea.h" ])]) KPSE_CHECK_XBASENAME([], [KPSE_MSG_ERROR([$1], [This version of $1 requires xbasename in libkpathsea.])]) ]) # CHO_CHECK_KPSE_SUPPORT # CHO_CHECK_KPSE_TDS_VERSION # -------------------------- # Check for TDS version 1.1 support. # We need cmap, enc, opentype, and sfd formats (Dec 2003). AC_DEFUN([CHO_CHECK_KPSE_TDS_VERSION], [KPSE_CHECK_KPSE_FORMAT([opentype], [tds_version_11=yes AC_DEFINE([__TDS_VERSION__], [0x200406L], [Define as 0x200406L if your libkpathsea supports enc formats, or as 0x200302L otherwise.])], [tds_version_11=no AC_DEFINE([__TDS_VERSION__], [0x200302L])]) AC_MSG_CHECKING([whether libkpathsea supports TDS version 1.1 installation]) AC_MSG_RESULT([$tds_version_11]) AM_CONDITIONAL([TDS_VERSION_11], [test "x$tds_version_11" = xyes]) ]) # CHO_CHECK_KPSE_TDS_VERSION dvipsk_TexLive-2009-stripped/m4/kpse-pkgs.m40000664000175000017500000000556311401164110020560 0ustar uwabamiuwabami# Private macros for the TeX Live (TL) tree. # Copyright (C) 2009 Peter Breitenlohner # # This file is free software; the copyright holder # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 0 ## ------------------------------ ## ## Define lists of sub-packages. ## ## ------------------------------ ## # Hopefully these lists are defined here and nowhere else. # Note: directories in these lists need not exist. # KPSE_LIBS_PKGS() # ---------------- # Define the list of library sub-packages, i.e., subdirs 'libs/*'. # Each library must precede required other libraries (if any). AC_DEFUN([KPSE_LIBS_PKGS], [m4_define([kpse_libs_pkgs], [ icu teckit graphite xpdf gd freetype2 freetype t1lib obsdcompat libpng zlib ])]) # KPSE_LIBS_PKGS # KPSE_ALL_SYSTEM_FLAGS() # ----------------------- # Generate flags for all potential system libraries available, # only used at top-level. AC_DEFUN([KPSE_ALL_SYSTEM_FLAGS], [AC_REQUIRE([KPSE_LIBS_PREPARE])[]dnl AC_REQUIRE([KPSE_ZLIB_SYSTEM_FLAGS])[]dnl AC_REQUIRE([KPSE_LIBPNG_SYSTEM_FLAGS])[]dnl AC_REQUIRE([KPSE_T1LIB_SYSTEM_FLAGS])[]dnl AC_REQUIRE([KPSE_FREETYPE_SYSTEM_FLAGS])[]dnl AC_REQUIRE([KPSE_FREETYPE2_SYSTEM_FLAGS])[]dnl AC_REQUIRE([KPSE_GD_SYSTEM_FLAGS])[]dnl AC_REQUIRE([KPSE_XPDF_SYSTEM_FLAGS])[]dnl AC_REQUIRE([KPSE_GRAPHITE_SYSTEM_FLAGS])[]dnl AC_REQUIRE([KPSE_TECKIT_SYSTEM_FLAGS])[]dnl AC_REQUIRE([KPSE_KPATHSEA_SYSTEM_FLAGS])[]dnl ]) # KPSE_ALL_SYSTEM_FLAGS # KPSE_UTILS_PKGS() # ----------------- # Define the list of utility sub-packages, i.e., subdirs 'utils/*'. AC_DEFUN([KPSE_UTILS_PKGS], [m4_define([kpse_utils_pkgs], [ dialog pdfopen ps2eps psutils t1utils tpic2pdftex vlna xindy ])]) # KPSE_UTILS_PKGS # KPSE_TEXK_PKGS() # ---------------- # Define the list of TeXk sub-packages, i.e., subdirs 'texk/*', # excluding 'texk/kpathsea'. AC_DEFUN([KPSE_TEXK_PKGS], [m4_define([kpse_texk_pkgs], [ web2c afm2pl bibtex8 cjkutils detex devnag dtl dvi2tty dvidvi dviljk dvipdfmx dvipng dvipos dvipsk gsftopk lacheck lcdf-typetools makeindexk musixflx ps2pkm seetexk tex4htk ttf2pk ttfdump xdv2pdf xdvik xdvipdfmx tetex texlive ])]) # KPSE_TEXK_PKGS ## ------------------------------- ## ## Loop over one of these lists. ## ## ------------------------------- ## # KPSE_FOR_PKGS(LIST, ACTION) # --------------------------- # Run the shell code ACTION for each element Kpse_Pkg in kpse_LIST_pkgs, # with Kpse_pkg a sanitized version of Kpse_Pkg for shell variables and # Kpse_PKG a sanitized (upper case) version for make variables. AC_DEFUN([KPSE_FOR_PKGS], [AC_REQUIRE([KPSE_LIBS_PKGS])AC_REQUIRE([KPSE_UTILS_PKGS])AC_REQUIRE([KPSE_TEXK_PKGS])[]dnl AC_FOREACH([Kpse_Pkg], kpse_$1_pkgs, [m4_pushdef([Kpse_pkg], AS_TR_SH(Kpse_Pkg))[]dnl m4_pushdef([Kpse_PKG], AS_TR_CPP(Kpse_Pkg))[]dnl $2 m4_popdef([Kpse_pkg])m4_popdef([Kpse_PKG])[]dnl ])]) # KPSE_FOR_PKGS dvipsk_TexLive-2009-stripped/m4/README0000664000175000017500000000271111401164110017262 0ustar uwabamiuwabamiCopyright (C) 2009 Peter Breitenlohner You may freely use, modify and/or distribute this file. This directory is the central repository for Autoconf macros needed to build the TeX Live (TL) tree. (1) Public macros such as libtool.m4 used to build the libraries and programs in the TL subdirectories libs/*/, utils/*/, and texk/*/ that are owned by the TL tree, i.e., either not maintained independently or with a proxy Makefile.am using an (almost) unmodified source tree and bypassing the original build system. Note: the files libtool.m4 and ../build-aux/ltmain.sh must match. (2) `Public' macros for the TL build system and for the TL libraries in the subdirectories libs/*/ and texk/kpathsea/, used to configure programs and other libraries requiring these TL libraries. The macros are designed with the aim that programs maintained independently can be built as part of the TL tree or without TL (using installed versions of the required libraries), ideally using the same unmodified sources. (3) `Private' macros for the TL infrastructure, only used in directories owned by the TL tree. kpse-pkgs.m4: defines lists of subdirectories libs/Lib/, utils/Util/, and tex/Prog/ with libraries and programs that can be built as part of the TL tree. kpse-setup.m4: macros that walk through these lists to provide configure options. They depend on configure fragments */*/ac/withenable.ac defining the dependencies between these libraries and programs. dvipsk_TexLive-2009-stripped/m4/cho-libs.m40000664000175000017500000001051111401164110020341 0ustar uwabamiuwabami# Public macros for the TeX Live (TL) tree. # Copyright (C) 1998 - 2008 Jin-Hwan Cho # Copyright (C) 2008 - 2009 Peter Breitenlohner # # This file is free software; the copyright holders # give unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # CHO_CHECK_ZLIB # -------------- # Check for zlib AC_DEFUN([CHO_CHECK_ZLIB], [AC_CACHE_CHECK([for zlib header files and library], [cho_cv_have_zlib], [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[z_stream p;]])], [cho_cv_have_zlib=yes], [cho_cv_have_zlib=no])]) AS_IF([test "x$cho_cv_have_zlib" = xyes], [AC_CHECK_FUNCS([compress], [AC_DEFINE([HAVE_ZLIB], 1, [Define if you have zlib and its headers.]) AC_CHECK_FUNCS([compress2], [AC_DEFINE([HAVE_ZLIB_COMPRESS2], 1, [Define if your zlib has the compress2 function.])])])]) ])# CHO_CHECK_ZLIB # CHO_CHECK_LIBPNG # ---------------- # Check for libpng AC_DEFUN([CHO_CHECK_LIBPNG], [AC_CACHE_CHECK([for libpng header files and library], [cho_cv_have_png], [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[png_infop p;]])], [cho_cv_have_png=yes], [cho_cv_have_png=no])]) AS_IF([test "x$cho_cv_have_png" = xyes], [AC_CHECK_FUNCS([png_get_image_width], [AC_DEFINE([HAVE_LIBPNG], 1, [Define if you have libpng and its headers.])])]) ])# CHO_CHECK_LIBPNG # CHO_CHECK_LIBPAPER # ------------------ # Check for libpaper AC_DEFUN([CHO_CHECK_LIBPAPER], [_cppflags=$CPPFLAGS _ldflags=$LDFLAGS AC_ARG_WITH([paper], [AS_HELP_STRING([--with-paper=DIR], [use paper include/library files from DIR])], [if test -d "$withval"; then CPPFLAGS="$CPPFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib" fi]) AC_MSG_CHECKING([for paper header files]) AC_TRY_COMPILE( [#include ], [struct paper *p;], [AC_MSG_RESULT(yes) AC_SEARCH_LIBS([paperpswidth], [paper], [AC_DEFINE(HAVE_LIBPAPER, 1, [Define if you have libpaper])])], [CPPFLAGS=$_cppflags LDDFLAGS=$_ldflags AC_MSG_RESULT(no)]) ])# CHO_CHECK_LIBPAPER # CHO_CHECK_LIBFONTCONFIG # ----------------------- # Check for libfontconfig AC_DEFUN([CHO_CHECK_LIBFONTCONFIG], [AC_CACHE_CHECK([for fontconfig header files and library], [cho_cv_have_fontconfig], [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[FcObjectSet *os;]])], [cho_cv_have_fontconfig=yes], [cho_cv_have_fontconfig=no])]) AS_IF([test "x$cho_cv_have_fontconfig" = xyes], [AC_CHECK_FUNCS([FcInit], [AC_DEFINE([HAVE_LIBFONTCONFIG], 1, [Define if you have libfontconfig and its headers.])])]) ])# CHO_CHECK_LIBFONTCONFIG # CHO_CHECK_LIBFREETYPE(PACKAGE-NAME) # ----------------------------------- # Check for libfreetype, fail with error if not found AC_DEFUN([CHO_CHECK_LIBFREETYPE], [AC_CACHE_CHECK([for freetype2 header files and library], [cho_cv_have_freetype], [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include #include FT_FREETYPE_H]], [[FT_Face face;]])], [cho_cv_have_freetype=yes], [cho_cv_have_freetype=no])]) AS_IF([test "x$cho_cv_have_freetype" = xyes], [AC_CHECK_FUNCS([FT_Init_FreeType], [AC_DEFINE([HAVE_LIBFREETYPE], 1, [Define if you have libfreetype and its headers.])])], [KPSE_MSG_ERROR([$1], [This version of $1 requires that FreeType2 and its headers be available. You can use the --with-freetype2-includes and/or --with-freetype2-libdir options to indicate the location of the installed freetype2 library and headers.])]) ])# CHO_CHECK_LIBFREETYPE dvipsk_TexLive-2009-stripped/m4/libtool.m40000664000175000017500000077317611401164110020334 0ustar uwabamiuwabami# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file 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. m4_define([_LT_COPYING], [dnl # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool 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 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ]) # serial 56 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_CC_BASENAME(CC) # ------------------- # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. m4_defun([_LT_CC_BASENAME], [for cc_temp in $1""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl _LT_PROG_ECHO_BACKSLASH case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from `configure', and `config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # `config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain="$ac_aux_dir/ltmain.sh" ])# _LT_PROG_LTMAIN ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the `libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to `config.status' so that its # declaration there will have the same value as in `configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "X$" | $Xsed -e "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags="_LT_TAGS"dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the `libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into `config.status', and then the shell code to quote escape them in # for loops in `config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Fix-up fallback echo if it was mangled by the above quoting rules. case \$lt_ECHO in *'\\\[$]0 --fallback-echo"')dnl " lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\` ;; esac _LT_OUTPUT_LIBTOOL_INIT ]) # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) cat >"$CONFIG_LT" <<_LTEOF #! $SHELL # Generated by $as_me. # Run this file to recreate a libtool stub with the current configuration. lt_cl_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ \`$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2008 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test $[#] != 0 do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try \`$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try \`$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. if test "$no_create" != yes; then lt_cl_success=: test "$silent" = yes && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) fi ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # _LT_COPYING _LT_LIBTOOL_TAGS # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) _LT_PROG_XSI_SHELLFNS sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[[012]]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES # -------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(whole_archive_flag_spec, $1)='' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=echo _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" m4_if([$1], [CXX], [ if test "$lt_cv_apple_cc_single_mod" != "yes"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX # ----------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl AC_LINK_IFELSE(AC_LANG_PROGRAM,[ lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], [AC_DIVERT_PUSH(NOTICE)]) $1 AC_DIVERT_POP ])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Add some code to the start of the generated configure script which # will find an echo command which doesn't interpret backslashes. m4_defun([_LT_PROG_ECHO_BACKSLASH], [_LT_SHELL_INIT([ # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$lt_ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` ;; esac ECHO=${lt_ECHO-echo} if test "X[$]1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X[$]1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then # Yippee, $ECHO works! : else # Restart under the correct shell. exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} fi if test "X[$]1" = X--fallback-echo; then # used as fallback echo shift cat <<_LT_EOF [$]* _LT_EOF exit 0 fi # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test -z "$lt_ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if { echo_test_string=`eval $cmd`; } 2>/dev/null && { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null then break fi done fi if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$ECHO" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. ECHO='print -r' elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} else # Try using printf. ECHO='printf %s\n' if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL ECHO="$CONFIG_SHELL [$]0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$CONFIG_SHELL [$]0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "[$]0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} else # Oops. We lost completely, so just stick with echo. ECHO=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. lt_ECHO=$ECHO if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" fi AC_SUBST(lt_ECHO) ]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that does not interpret backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" ])# _LT_ENABLE_LOCK # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [AC_CHECK_TOOL(AR, ar, false) test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1]) AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test x"[$]$2" = xyes; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ = "XX$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line __oline__ "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links="nottested" if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", [Define to the sub-directory in which libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existent directories. if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` else lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[[4-9]]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[123]]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[[3-9]]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([], [sys_lib_dlsearch_path_spec], [2], [Run-time system search path for libraries]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program which can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program which can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux* | k*bsd*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method == "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi]) if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :) AC_SUBST([DUMPBIN]) if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ const struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= AC_MSG_CHECKING([for $compiler option to produce PIC]) m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC*) # IBM XL 8.0 on PPC _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl*) # IBM XL C 8.0/Fortran 10.1 on PPC _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag= tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; freebsd1*) _LT_TAGVAR(ld_shlibs, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" AC_LINK_IFELSE(int foo(void) {}, _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' ) LDFLAGS="$save_LDFLAGS" else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_MSG_CHECKING([whether -lc should be explicitly linked in]) $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then _LT_TAGVAR(archive_cmds_need_lc, $1)=no else _LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)]) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], [[If ld is used when linking, flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting ${shlibpath_var} if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [fix_srcfile_path], [1], [Fix the shell variable $srcfile for the compiler]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report which library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC="$lt_save_CC" ])# _LT_LANG_C_CONFIG # _LT_PROG_CXX # ------------ # Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++ # compiler, we have our own version here. m4_defun([_LT_PROG_CXX], [ pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes]) AC_PROG_CXX if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi popdef([AC_MSG_ERROR]) ])# _LT_PROG_CXX dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([_LT_PROG_CXX], []) # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [AC_REQUIRE([_LT_PROG_CXX])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared # libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd[[12]]*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; gnu*) ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 will use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; xl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd2*) # C++ shared libraries are fairly broken _LT_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=echo else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(GCC, $1)="$GXX" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ]) dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue else prev= fi if test "$pre_test_object_deps_done" = no; then case $p in -L* | -R*) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)="${prev}${p}" else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" fi fi ;; *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)="$p" else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)="$p" else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_PROG_F77 # ------------ # Since AC_PROG_F77 is broken, in that it returns the empty string # if there is no fortran compiler, we have our own version here. m4_defun([_LT_PROG_F77], [ pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes]) AC_PROG_F77 if test -z "$F77" || test "X$F77" = "Xno"; then _lt_disable_F77=yes fi popdef([AC_MSG_ERROR]) ])# _LT_PROG_F77 dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([_LT_PROG_F77], []) # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_REQUIRE([_LT_PROG_F77])dnl AC_LANG_PUSH(Fortran 77) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_F77" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC CC=${F77-"f77"} compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$G77" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC="$lt_save_CC" fi # test "$_lt_disable_F77" != yes AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_PROG_FC # ----------- # Since AC_PROG_FC is broken, in that it returns the empty string # if there is no fortran compiler, we have our own version here. m4_defun([_LT_PROG_FC], [ pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes]) AC_PROG_FC if test -z "$FC" || test "X$FC" = "Xno"; then _lt_disable_FC=yes fi popdef([AC_MSG_ERROR]) ])# _LT_PROG_FC dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([_LT_PROG_FC], []) # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_REQUIRE([_LT_PROG_FC])dnl AC_LANG_PUSH(Fortran) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_FC" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC CC=${FC-"f95"} compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC="$lt_save_CC" fi # test "$_lt_disable_FC" != yes AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC="$lt_save_CC" ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC GCC= CC=${RC-"windres"} compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC="$lt_save_CC" ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [AC_MSG_CHECKING([whether the shell understands some XSI constructs]) # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes AC_MSG_RESULT([$xsi_shell]) _LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) AC_MSG_CHECKING([whether the shell understands "+="]) lt_shell_append=no ( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes AC_MSG_RESULT([$lt_shell_append]) _LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PROG_XSI_SHELLFNS # --------------------- # Bourne and XSI compatible variants of some useful shell functions. m4_defun([_LT_PROG_XSI_SHELLFNS], [case $xsi_shell in yes) cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac } # func_basename file func_basename () { func_basename_result="${1##*/}" } # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}" } # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). func_stripname () { # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"} } # func_opt_split func_opt_split () { func_opt_split_opt=${1%%=*} func_opt_split_arg=${1#*=} } # func_lo2o object func_lo2o () { case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac } # func_xform libobj-or-source func_xform () { func_xform_result=${1%.*}.lo } # func_arith arithmetic-term... func_arith () { func_arith_result=$(( $[*] )) } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=${#1} } _LT_EOF ;; *) # Bourne compatible functions. cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_basename file func_basename () { func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` } dnl func_dirname_and_basename dnl A portable version of this function is already defined in general.m4sh dnl so there is no need for it here. # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; esac } # sed scripts: my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q' my_sed_long_arg='1s/^-[[^=]]*=//' # func_opt_split func_opt_split () { func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` } # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` } # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'` } # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "$[@]"` } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len` } _LT_EOF esac case $lt_shell_append in yes) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$[1]+=\$[2]" } _LT_EOF ;; *) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$[1]=\$$[1]\$[2]" } _LT_EOF ;; esac ]) dvipsk_TexLive-2009-stripped/m4/kpse-options.m40000664000175000017500000000204211401164110021274 0ustar uwabamiuwabami# Public macros for the TeX Live (TL) tree. # Copyright (C) 2009 Peter Breitenlohner # # This file is free software; the copyright holder # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 0 # KPSE_OPTIONS # ------------ # Provide configure options used by the higher level TL directories # as well as by packages maintained independently. AC_DEFUN([KPSE_OPTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])[]dnl AC_ARG_ENABLE([multiplatform], AS_HELP_STRING([--enable-multiplatform], [put executables into bin/PLATFORM and libraries into lib/PLATFORM]))[]dnl if test "x$enable_multiplatform" = xyes; then if test "x$bindir" = 'x${exec_prefix}/bin'; then bindir="$bindir/$host" ac_configure_args="$ac_configure_args '--bindir=$bindir'" fi if test "x$libdir" = 'x${exec_prefix}/lib'; then libdir="$libdir/$host" ac_configure_args="$ac_configure_args '--libdir=$libdir'" fi fi ]) # KPSE_OPTIONS dvipsk_TexLive-2009-stripped/m4/kpse-t1lib-flags.m40000664000175000017500000000212311401164110021706 0ustar uwabamiuwabami# Public macros for the TeX Live (TL) tree. # Copyright (C) 2009 Peter Breitenlohner # # This file is free software; the copyright holder # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 0 # KPSE_T1LIB_FLAGS # ---------------- # Provide the configure options '--with-system-t1lib' (if in the TL tree), # '--with-t1lib-includes', and '--with-t1lib-libdir'. # # Set the make variables T1LIB_INCLUDES and T1LIB_LIBS to the CPPFLAGS and # LIBS required for the `-lt1' library in libs/t1lib/ of the TL tree. AC_DEFUN([KPSE_T1LIB_FLAGS], [_KPSE_LIB_FLAGS([t1lib], [t1], [], [-IBLD/libs/t1lib], [BLD/libs/t1lib/libt1.a], [], [], [${top_builddir}/../../libs/t1lib/t1lib.h])[]dnl ]) # KPSE_T1LIB_FLAGS # KPSE_T1LIB_OPTIONS([WITH-SYSTEM]) # --------------------------------- AC_DEFUN([KPSE_T1LIB_OPTIONS], [_KPSE_LIB_OPTIONS([t1lib], [$1])]) # KPSE_T1LIB_SYSTEM_FLAGS # ----------------------- AC_DEFUN([KPSE_T1LIB_SYSTEM_FLAGS], [_KPSE_LIB_FLAGS_SYSTEM([t1lib], [t1])]) dvipsk_TexLive-2009-stripped/m4/kpse-icu-flags.m40000664000175000017500000000165511401164110021464 0ustar uwabamiuwabami# Public macros for the TeX Live (TL) tree. # Copyright (C) 2009 Peter Breitenlohner # # This file is free software; the copyright holder # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 0 # KPSE_ICU_FLAGS # -------------- # Set the make variables ICU_INCLUDES and ICU_LIBS to # the CPPFLAGS and LIBS required for the icu-xetex libraries in # libs/icu/ of the TL tree. AC_DEFUN([KPSE_ICU_FLAGS], [_KPSE_LIB_FLAGS([icu], [sicuxxx], [tree], [-IBLD/libs/icu/icu-build/common -ISRC/libs/icu/icu-xetex/common -ISRC/libs/icu/icu-xetex/layout], [BLD/libs/icu/icu-build/lib/libsicuuc.a BLD/libs/icu/icu-build/lib/libsicule.a BLD/libs/icu/icu-build/lib/libsicudata.a], [], [], [${top_builddir}/../../libs/icu/icu-build/common/unicode/platform.h])[]dnl ]) # KPSE_ICU_FLAGS dvipsk_TexLive-2009-stripped/m4/kpse-cross.m40000664000175000017500000000322411401164110020735 0ustar uwabamiuwabami# Private macros for the kpathsea library. # Copyright (C) 1995 - 2009 Karl Berry # # This file is free software; the copyright holder # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # KPSE_CROSS_PATH_PROG(RESULT, CROSS_PROG, NORMAL_PROG) # ----------------------------------------------------- # Find a program when cross-compiling, or use a default when not. # RESULT = variable which records the outcome # CROSS_PROG = program to look for when cross-compiling # NORMAL_PROG = program to use when not cross-compiling # Example: KPSE_CROSS_PATH_PROG([TANGLE], [tangle], [./tangle]) sets # 'TANGLE' to the program 'tangle' found in PATH when cross-compiling, # and to './tangle' if not. AC_DEFUN([KPSE_CROSS_PATH_PROG], [if test "x$cross_compiling" = xyes; then AC_PATH_PROG([$1], [$2]) if test -z "${$1}"; then AC_MSG_ERROR([$2 was not found but is required when cross-compiling. Install $2 or set \$$1 to the full pathname.]) fi else $1=$3 fi ]) # KPSE_CROSS_PATH_PROG # KPSE_CROSS_BUILD_VAR(STEM, PROG) # -------------------------------- # Set BUILD$1 to $2 when cross-compiling, to $($1) if not. # Example: KPSE_CROSS_BUILD_VAR([CC], [cc]) sets 'BUILDCC' to 'cc' # if cross-compiling, and to '$(CC)' if not. AC_DEFUN([KPSE_CROSS_BUILD_VAR], [if test "x$cross_compiling" = xyes; then if test -z "${BUILD$1}"; then BUILD$1='$2' fi AC_MSG_RESULT([setting \$BUILD$1 to ${BUILD$1}]) else if test -n "${BUILD$1}"; then AC_MSG_WARN([\$BUILD$1 set but not cross-compiling.]) fi BUILD$1='$($1)' fi AC_SUBST([BUILD$1]) ]) # KPSE_CROSS_BUILD_VAR dvipsk_TexLive-2009-stripped/m4/kpse-fontconfig-flags.m40000664000175000017500000000477011401164110023041 0ustar uwabamiuwabami# Public macros for the TeX Live (TL) tree. # Copyright (C) 2009 Peter Breitenlohner # # This file is free software; the copyright holder # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 0 # KPSE_FONTCONFIG_FLAGS # --------------------- # Provide the configure option '--with-fontconfig' and check for # installed fontconfig headers and library. # Check or set the cache variables kpse_cv_have_fontconfig, # kpse_cv_fontconfig_includes, and kpse_cv_fontconfig_libs. # If found set the Make variables FONTCONFIG_INCLUDES and FONTCONFIG_LIBS # to the CPPFLAGS and LIBS required for the installed '-lfontconfig' # library and define HAVE_LIBFONTCONFIG. AC_DEFUN([KPSE_FONTCONFIG_FLAGS], [AC_REQUIRE([_KPSE_CHECK_PKG_CONFIG])[]dnl AC_ARG_WITH([fontconfig-includes], AS_HELP_STRING([--with-fontconfig-includes=DIR], [fontconfig headers installed in DIR]))[]dnl AC_ARG_WITH([fontconfig-libdir], AS_HELP_STRING([--with-fontconfig-libdir=DIR], [fontconfig library installed in DIR]))[]dnl AC_CACHE_CHECK([for installed fontconfig headers and library], [kpse_cv_have_fontconfig], [kpse_save_CPPFLAGS=$CPPFLAGS kpse_save_LIBS=$LIBS kpse_cv_fontconfig_includes= kpse_cv_fontconfig_libs='-lfontconfig' if test "x$with_fontconfig_includes:$with_fontconfig_libdir" != x:; then if test "x$with_fontconfig_includes" != x; then kpse_cv_fontconfig_includes="-I$with_fontconfig_includes" fi if test "x$with_fontconfig_libdir" != x; then kpse_cv_fontconfig_libs="-L$with_fontconfig_libdir $kpse_cv_fontconfig_libs" fi elif $PKG_CONFIG fontconfig; then kpse_cv_fontconfig_includes=`$PKG_CONFIG fontconfig --cflags` kpse_cv_fontconfig_libs=`$PKG_CONFIG fontconfig --libs` fi CPPFLAGS="$kpse_cv_fontconfig_includes $CPPFLAGS" LIBS="$kpse_cv_fontconfig_libs $LIBS" AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[FcObjectSet *os; FcInit();]])], [kpse_cv_have_fontconfig=yes], [kpse_cv_have_fontconfig=no]) CPPFLAGS=$kpse_save_CPPFLAGS LIBS=$kpse_save_LIBS]) if test "x$kpse_cv_have_fontconfig" = xyes; then FONTCONFIG_INCLUDES=$kpse_cv_fontconfig_includes FONTCONFIG_LIBS=$kpse_cv_fontconfig_libs AC_DEFINE([HAVE_LIBFONTCONFIG], 1, [Define if you have libfontconfig.]) fi AC_SUBST([FONTCONFIG_INCLUDES]) AC_SUBST([FONTCONFIG_LIBS]) ]) # KPSE_FONTCONFIG_FLAGS dvipsk_TexLive-2009-stripped/m4/kpse-socket-libs.m40000664000175000017500000000206211401164110022022 0ustar uwabamiuwabami# Public macros for the TeX Live (TL) tree. # Copyright (C) 1997 Karl Berry # Copyright (C) 2009 Peter Breitenlohner # with help from Taco Hoekwater # # This file is free software; the copyright holders # give unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 0 # KPSE_CHECK_SOCKET_LIBS # ---------------------- # Set ac_cv_search_connect as AC_SEARCH_LIBS([connect], [LIB...]) # would do. # -lsocket is needed on Solaris, at least. Maybe -lnsl on SCO, too? # See AC_PATH_XTRA. # For WIN32 systems we need -lwsock32 but AC_SEARCH_LIBS would fail. AC_DEFUN([KPSE_CHECK_SOCKET_LIBS], [AC_REQUIRE([KPSE_CHECK_WIN32]) AS_IF([test "x$kpse_cv_have_win32" = xno], [kpse_save_LIBS=$LIBS AC_SEARCH_LIBS([connect], [socket nsl]) LIBS=$kpse_save_LIBS], [AC_CHECK_LIB([wsock32], [main], [ac_cv_search_connect=-lwsock32], [ac_cv_search_connect=no])]) ]) # KPSE_CHECK_SOCKET_LIBS dvipsk_TexLive-2009-stripped/m4/lt~obsolete.m40000664000175000017500000001311311401164110021214 0ustar uwabamiuwabami# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file 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. # serial 4 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) dvipsk_TexLive-2009-stripped/m4/kpse-zlib-flags.m40000664000175000017500000000214011401164110021632 0ustar uwabamiuwabami# Public macros for the TeX Live (TL) tree. # Copyright (C) 2009 Peter Breitenlohner # # This file is free software; the copyright holder # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 0 # KPSE_ZLIB_FLAGS # --------------- # Provide the configure options '--with-system-zlib' (if in the TL tree), # '--with-zlib-includes', and '--with-zlib-libdir'. # # Set the make variables ZLIB_INCLUDES and ZLIB_LIBS to the CPPFLAGS and # LIBS required for the `-lz' library in libs/zlib/ of the TL tree. AC_DEFUN([KPSE_ZLIB_FLAGS], [_KPSE_LIB_FLAGS([zlib], [z], [], [-IBLD/libs/zlib], [BLD/libs/zlib/libz.a], [], [], [${top_builddir}/../../libs/zlib/zlib.h ${top_builddir}/../../libs/zlib/zconf.h])[]dnl ]) # KPSE_ZLIB_FLAGS # KPSE_ZLIB_OPTIONS([WITH-SYSTEM]) # -------------------------------- AC_DEFUN([KPSE_ZLIB_OPTIONS], [_KPSE_LIB_OPTIONS([zlib], [$1])]) # KPSE_ZLIB_SYSTEM_FLAGS # ---------------------- AC_DEFUN([KPSE_ZLIB_SYSTEM_FLAGS], [_KPSE_LIB_FLAGS_SYSTEM([zlib], [z])]) dvipsk_TexLive-2009-stripped/m4/kpse-graphite-flags.m40000664000175000017500000000225311401164110022502 0ustar uwabamiuwabami# Public macros for the TeX Live (TL) tree. # Copyright (C) 2009 Peter Breitenlohner # # This file is free software; the copyright holder # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 0 # KPSE_GRAPHITE_FLAGS # ------------------- # Provide the configure options '--with-system-graphite' (if in the TL tree), # '--with-graphite-includes', and '--with-graphite-libdir'. # # Set the make variables GRAPHITE_INCLUDES and GRAPHITE_LIBS to the CPPFLAGS # and LIBS required for the `-lgraphite' library in libs/graphite/ of the TL tree. AC_DEFUN([KPSE_GRAPHITE_FLAGS], [AC_REQUIRE([KPSE_ZLIB_FLAGS])[]dnl _KPSE_LIB_FLAGS([graphite], [graphite], [], [-ISRC/libs/graphite/include], [BLD/libs/graphite/libgraphite.a], [], [], [])[]dnl ]) # KPSE_GRAPHITE_FLAGS # KPSE_GRAPHITE_OPTIONS([WITH-SYSTEM]) # ------------------------------------ AC_DEFUN([KPSE_GRAPHITE_OPTIONS], [_KPSE_LIB_OPTIONS([graphite], [$1])]) # KPSE_GRAPHITE_SYSTEM_FLAGS # -------------------------- AC_DEFUN([KPSE_GRAPHITE_SYSTEM_FLAGS], [_KPSE_LIB_FLAGS_SYSTEM([graphite], [graphite])]) dvipsk_TexLive-2009-stripped/m4/kpse-teckit-flags.m40000664000175000017500000000220711401164110022161 0ustar uwabamiuwabami# Public macros for the TeX Live (TL) tree. # Copyright (C) 2009 Peter Breitenlohner # # This file is free software; the copyright holder # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 0 # KPSE_TECKIT_FLAGS # ----------------- # Provide the configure options '--with-system-teckit' (if in the TL tree), # '--with-teckit-includes', and '--with-teckit-libdir'. # # Set the make variables TECKIT_INCLUDES and TECKIT_LIBS to the CPPFLAGS and # LIBS required for the `-lTECkit' library in libs/teckit/ of the TL tree. AC_DEFUN([KPSE_TECKIT_FLAGS], [AC_REQUIRE([KPSE_ZLIB_FLAGS])[]dnl _KPSE_LIB_FLAGS([teckit], [TECkit], [], [-ISRC/libs/teckit/source/Public-headers], [BLD/libs/teckit/libTECkit.a], [], [], [])[]dnl ]) # KPSE_TECKIT_FLAGS # KPSE_TECKIT_OPTIONS([WITH-SYSTEM]) # ---------------------------------- AC_DEFUN([KPSE_TECKIT_OPTIONS], [_KPSE_LIB_OPTIONS([teckit], [$1])]) # KPSE_TECKIT_SYSTEM_FLAGS # ------------------------ AC_DEFUN([KPSE_TECKIT_SYSTEM_FLAGS], [_KPSE_LIB_FLAGS_SYSTEM([teckit], [TECkit])]) dvipsk_TexLive-2009-stripped/m4/ltsugar.m40000664000175000017500000001042411401164110020325 0ustar uwabamiuwabami# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file 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. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59 which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) dvipsk_TexLive-2009-stripped/m4/kpse-freetype-flags.m40000664000175000017500000000225611401164110022525 0ustar uwabamiuwabami# Public macros for the TeX Live (TL) tree. # Copyright (C) 2009 Peter Breitenlohner # # This file is free software; the copyright holder # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 0 # KPSE_FREETYPE_FLAGS # ------------------- # Provide the configure options '--with-system-freetype' (if in the TL tree), # '--with-freetype-includes', and '--with-freetype-libdir'. # # Set the make variables FREETYPE_INCLUDES and FREETYPE_LIBS to the CPPFLAGS and # LIBS required for the `-lttf' library in libs/freetype/ of the TL tree. AC_DEFUN([KPSE_FREETYPE_FLAGS], [_KPSE_LIB_FLAGS([freetype], [ttf], [], [-IBLD/libs/freetype/freetype], [BLD/libs/freetype/libttf.a], [], [], [${top_builddir}/../../libs/freetype/freetype/freetype.h])[]dnl ]) # KPSE_FREETYPE_FLAGS # KPSE_FREETYPE_OPTIONS([WITH-SYSTEM]) # ------------------------------------ AC_DEFUN([KPSE_FREETYPE_OPTIONS], [_KPSE_LIB_OPTIONS([freetype], [$1])]) # KPSE_FREETYPE_SYSTEM_FLAGS # -------------------------- AC_DEFUN([KPSE_FREETYPE_SYSTEM_FLAGS], [_KPSE_LIB_FLAGS_SYSTEM([freetype], [ttf])]) dvipsk_TexLive-2009-stripped/m4/kpse-xpdf-flags.m40000664000175000017500000000324611401164110021643 0ustar uwabamiuwabami# Public macros for the TeX Live (TL) tree. # Copyright (C) 2009 Peter Breitenlohner # # This file is free software; the copyright holder # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 0 # KPSE_XPDF_FLAGS # --------------- # Set the make variables XPDF_INCLUDES and XPDF_LIBS to the CPPFLAGS and # LIBS required for the `-lxpdf' library in libs/xpdf/ of the TL tree. AC_DEFUN([KPSE_XPDF_FLAGS], [_KPSE_LIB_FLAGS([xpdf], [xpdf], [], [-DPDF_PARSER_ONLY -IBLD/libs/xpdf -IBLD/libs/xpdf/goo -IBLD/libs/xpdf/xpdf], [BLD/libs/xpdf/libxpdf.a], [], [], [${top_builddir}/../../libs/xpdf/xpdf/Stream.h])[]dnl ]) # KPSE_XPDF_FLAGS # KPSE_XPDF_OPTIONS([WITH-SYSTEM]) # -------------------------------- AC_DEFUN([KPSE_XPDF_OPTIONS], [m4_ifval([$1], [AC_ARG_WITH([system-xpdf], AS_HELP_STRING([--with-system-xpdf], [use installed poppler headers and library instead of xpdf (requires pkg-config)]))])[]dnl ]) # KPSE_XPDF_OPTIONS # KPSE_XPDF_SYSTEM_FLAGS # ---------------------- AC_DEFUN([KPSE_XPDF_SYSTEM_FLAGS], [AC_REQUIRE([_KPSE_CHECK_PKG_CONFIG])[]dnl if $PKG_CONFIG poppler --atleast-version=0.10; then POPPLER_VERSION='-DPOPPLER_VERSION=\"'`$PKG_CONFIG poppler --modversion`'\"' XPDF_INCLUDES="$POPPLER_VERSION `$PKG_CONFIG poppler --cflags`" XPDF_LIBS=`$PKG_CONFIG poppler --libs` elif test "x$need_xpdf:$with_system_xpdf" = 'xyes:yes'; then AC_MSG_ERROR([did not find poppler-0.10 or better]) fi ]) # KPSE_XPDF_SYSTEM_FLAGS dvipsk_TexLive-2009-stripped/m4/kpse-setup.m40000664000175000017500000001706511401164110020754 0ustar uwabamiuwabami# Private macros for the TeX Live (TL) tree. # Copyright (C) 2009 Peter Breitenlohner # # This file is free software; the copyright holder # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 0 # KPSE_SETUP(TOP-LEVEL) # --------------------- # Initialize path prefix kpse_TL to top-level TeX Live (TL) directory. # Sinclude all withenable.ac files providing: # configure options --with-system-LIB, --with-LIB-includes, and --with-LIB-libdir # for libraries # configure option --disable-PKG or --enable-PKG for programs # additional program specific configure options (if any) # library dependencies for programs and libraries AC_DEFUN([KPSE_SETUP], [AC_REQUIRE([_KPSE_MSG_WARN_PREPARE])[]dnl m4_define([kpse_TL], [$1])[]dnl m4_define([kpse_indent_26], [28])[]dnl AC_ARG_ENABLE([all-pkgs], AS_HELP_STRING([--disable-all-pkgs], [do not build packages unless explicitly enabled]))[]dnl test "x$enable_all_pkgs" = xno || enable_all_pkgs=yes AC_ARG_ENABLE([native-texlive-build], AS_HELP_STRING([--disable-native-texlive-build], [do not build for the TeX Live binary distribution]))[]dnl AS_CASE([$enable_native_texlive_build], [yes | no], [:], [enable_native_texlive_build=yes ac_configure_args="$ac_configure_args '--enable-native-texlive-build'"]) if test "x$enable_native_texlive_build" = xyes; then AS_CASE([$enable_multiplatform], [yes | no], [:], [enable_multiplatform=yes ac_configure_args="$ac_configure_args '--enable-multiplatform'"]) AS_CASE([$enable_cxx_runtime_hack], [yes | no], [:], [enable_cxx_runtime_hack=yes ac_configure_args="$ac_configure_args '--enable-cxx-runtime-hack'"]) fi AS_CASE([$enable_shared], [no], [:], [yes ], [AS_IF([test "x$enable_native_texlive_build" = xyes], [AC_MSG_ERROR([you can not use a shared Kpathsea library for a native TeX Live build])])], [enable_shared=no ac_configure_args="$ac_configure_args '--disable-shared'"]) dnl Automatically pass this option to all subdirectories. AS_CASE([$enable_texlive_build], [yes], [:], [no], [AC_MSG_ERROR([you can not configure the TeX Live tree with `--disable-texlive-build'])], [enable_texlive_build=yes ac_configure_args="$ac_configure_args '--enable-texlive-build'"]) KPSE_OPTIONS KPSE_ENABLE_CXX_HACK KPSE_LIBS_PREPARE KPSE_WEB2C_PREPARE AS_CASE([$with_x], [yes | no], [:], [with_x=yes AC_MSG_NOTICE([Assuming `--with-x']) ac_configure_args="$ac_configure_args '--with-x'"]) KPSE_FOR_PKGS([utils], [m4_sinclude(kpse_TL[utils/]Kpse_Pkg[/ac/withenable.ac])]) KPSE_FOR_PKGS([texk], [m4_sinclude(kpse_TL[texk/]Kpse_Pkg[/ac/withenable.ac])]) m4_sinclude(kpse_TL[texk/kpathsea/ac/withenable.ac]) KPSE_FOR_PKGS([libs], [m4_sinclude(kpse_TL[libs/]Kpse_Pkg[/ac/withenable.ac])]) ]) # KPSE_SETUP # KPSE_ENABLE_PROG(PROG, REQUIRED-LIBS, OPTIONS, [COMMENT]) # --------------------------------------------------------- # Provide the configure option --enable-PROG if the option `disable' is # specified, or -disable-PROG otherwise. # Define the list of libraries required from the TL tree (if any). # Options: # disable - do not build by default AC_DEFUN([KPSE_ENABLE_PROG], [m4_pushdef([Kpse_enable], m4_if(m4_index([ $3 ], [ disable ]), [-1], [yes], [no]))[]dnl AC_ARG_ENABLE([$1], AS_HELP_STRING([[--]m4_if(Kpse_enable, [yes], [dis], [en])[able-$1]], m4_if(Kpse_enable, [yes], [do not ])[build the $1 ]m4_ifval([$4], [($4) ])[package]))[]dnl case $enable_[]AS_TR_SH($1) in #( yes|no);; #( *) enable_[]AS_TR_SH($1)=m4_if(Kpse_enable, [yes], [$enable_all_pkgs], [no]) AC_MSG_NOTICE([Assuming `--enable-$1=$enable_]AS_TR_SH($1)[']) ac_configure_args="$ac_configure_args '--enable-$1=$enable_[]AS_TR_SH($1)'";; esac m4_popdef([Kpse_enable])[]dnl m4_ifval([$2], [ test "x$enable_[]AS_TR_SH($1)" = xno || { AC_FOREACH([Kpse_Lib], [$2], [ need_[]AS_TR_SH(Kpse_Lib)=yes ])} ])[]dnl m4_ifval ]) # KPSE_ENABLE_PROG # KPSE_WITH_LIB(LIB, REQUIRED-LIBS, OPTIONS) # --------------------------------------------------------- # Unless the option `tree' is specified, provide the configure options # --with-system-LIB, --with-LIB-includes, and --with-LIB-libdir. # Define the list of libraries required from the TL tree (if any). # Options: # tree - only use library from the TL tree # # At the top-level we build a (reversed) list of potential system libraries. AC_DEFUN([KPSE_WITH_LIB], [m4_if(m4_index([ $3 ], [ tree ]), [-1], [KPSE_]AS_TR_CPP([$1])[_OPTIONS([with-system])[]dnl if test "x$with_system_[]AS_TR_SH($1)" = x; then if test -f $srcdir/kpse_TL[]m4_if([$1], [kpathsea], [texk], [libs])/$1/configure; then AC_MSG_NOTICE([Assuming `$1' headers and library from TL tree]) with_system_[]AS_TR_SH($1)=no else AC_MSG_NOTICE([Assuming installed `$1' headers and library]) with_system_[]AS_TR_SH($1)=yes fi ac_configure_args="$ac_configure_args '--with-system-$1=$with_system_[]AS_TR_SH($1)'" m4_ifset([kpse_TL], [], dnl top level only [elif test "x$with_system_[]AS_TR_SH($1)" = xyes; then AC_MSG_NOTICE([Using installed `$1' headers and library]) else AC_MSG_NOTICE([Using `$1' headers and library from TL tree]) if test "x$with_system_[]AS_TR_SH($1)" != xno; then with_system_[]AS_TR_SH($1)=no ac_configure_args="$ac_configure_args '--without-system-$1'" fi m4_define([kpse_syslib_pkgs], [$1]m4_ifval([kpse_syslib_pkgs], [ _m4_defn([kpse_syslib_pkgs])]))[]dnl ])[]dnl m4_ifset fi m4_ifval([$2], [if test "x$with_system_[]AS_TR_SH($1)" = xyes; then AC_FOREACH([Kpse_Lib], [$2], [ if test "x$with_system_[]AS_TR_SH(Kpse_Lib)" = x; then AC_MSG_NOTICE([ -> installed `AS_TR_SH(Kpse_Lib)' headers and library]) with_system_[]AS_TR_SH(Kpse_Lib)=yes ac_configure_args="$ac_configure_args '--with-system-Kpse_Lib'" elif test "x$with_system_[]AS_TR_SH(Kpse_Lib)" != xyes; then AC_MSG_ERROR([Sorry, `--with-system-$1' requires `--with-system-Kpse_Lib']) fi ])fi ])[]dnl m4_ifval ])[]dnl m4_if m4_ifval([$2], [ test "x$need_[]AS_TR_SH($1)" = xyes && { AC_FOREACH([Kpse_Lib], [$2], [ need_[]AS_TR_SH(Kpse_Lib)=yes ])} ])[]dnl m4_ifval ]) # KPSE_WITH_LIB # Initialize the list of potential system libraries. m4_define([kpse_syslib_pkgs], []) # KPSE_CHECK_LIB(LIB, REQUIRED-FUNCTION..., REQUIRED-HEADER...) # ------------------------------------------------------------- # When the user requests to use an installed version of a required library, # check that the flags derived from --with-LIB-includes and --with-LIB-libdir # provide the required functions and headers. AC_DEFUN([KPSE_CHECK_LIB], [if test "x$need_[]AS_TR_SH($1):$with_system_[]AS_TR_SH($1)" = 'xyes:yes'; then AC_MSG_NOTICE([checking requested system `$1' library...]) CPPFLAGS="$AS_TR_CPP($1)_INCLUDES $CPPFLAGS" LIBS="$AS_TR_CPP($1)_LIBS $LIBS" AC_CHECK_FUNCS([$2], , [syslib_status=no]) AC_CHECK_HEADERS([$3], , [syslib_status=no]) syslib_used=yes fi ]) # KPSE_CHECK_LIB # KPSE_CHECK_LIBXX(LIB, REQUIRED-FUNCTION..., REQUIRED-HEADER...) # ------------------------------------------------------------- # As above, but for C++. AC_DEFUN([KPSE_CHECK_LIBXX], [AC_REQUIRE([AC_PROG_CXX])[]dnl AC_LANG_PUSH([C++])[]dnl KPSE_CHECK_LIB($@)[]dnl AC_LANG_POP([C++])[]dnl ]) # KPSE_CHECK_LIBXX dvipsk_TexLive-2009-stripped/m4/ltoptions.m40000664000175000017500000002724211401164110020705 0ustar uwabamiuwabami# Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file 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. # serial 6 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option `$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl `shared' nor `disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT options. ## ## --------------------------------- ## # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [0], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the `shared' and # `disable-shared' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the `static' and # `disable-static' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the `fast-install' # and `disable-fast-install' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the `pic-only' and `no-pic' # LT_INIT options. # MODE is either `yes' or `no'. If omitted, it defaults to `both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [pic_mode="$withval"], [pic_mode=default]) test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) dvipsk_TexLive-2009-stripped/m4/kpse-obsdcompat-flags.m40000664000175000017500000000150311401164110023027 0ustar uwabamiuwabami# Public macros for the TeX Live (TL) tree. # Copyright (C) 2009 Peter Breitenlohner # # This file is free software; the copyright holder # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 0 # KPSE_OBSDCOMPAT_FLAGS # --------------------- # Set the make variables OBSDCOMPAT_INCLUDES and OBSDCOMPAT_LIBS to # the CPPFLAGS and LIBS required for the `-lobsdcompat' library in # libs/obsdcompat/ of the TL tree. AC_DEFUN([KPSE_OBSDCOMPAT_FLAGS], [_KPSE_LIB_FLAGS([obsdcompat], [openbsd-compat], [tree], [-IBLD/libs/obsdcompat -ISRC/libs/obsdcompat], [BLD/libs/obsdcompat/libopenbsd-compat.a], [], [], [${top_srcdir}/../../libs/obsdcompat/*.[ch]])[]dnl ]) # KPSE_OBSDCOMPAT_FLAGS dvipsk_TexLive-2009-stripped/m4/kpse-gd-flags.m40000664000175000017500000000213111401164110021264 0ustar uwabamiuwabami# Public macros for the TeX Live (TL) tree. # Copyright (C) 2009 Peter Breitenlohner # # This file is free software; the copyright holder # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 0 # KPSE_GD_FLAGS # ------------- # Provide the configure options '--with-system-gd' (if in the TL tree), # '--with-gd-includes', and '--with-gd-libdir'. # # Set the make variables GD_INCLUDES and GD_LIBS to the CPPFLAGS and # LIBS required for the `-lgd' library in libs/gd/ of the TL tree. AC_DEFUN([KPSE_GD_FLAGS], [AC_REQUIRE([KPSE_LIBPNG_FLAGS])[]dnl AC_REQUIRE([KPSE_FREETYPE2_FLAGS])[]dnl _KPSE_LIB_FLAGS([gd], [gd], [], [-IBLD/libs/gd], [BLD/libs/gd/libgd.a], [], [], [${top_builddir}/../../libs/gd/gd.h])[]dnl ]) # KPSE_GD_FLAGS # KPSE_GD_OPTIONS([WITH-SYSTEM]) # ------------------------------ AC_DEFUN([KPSE_GD_OPTIONS], [_KPSE_LIB_OPTIONS([gd], [$1])]) # KPSE_GD_SYSTEM_FLAGS # -------------------- AC_DEFUN([KPSE_GD_SYSTEM_FLAGS], [_KPSE_LIB_FLAGS_SYSTEM([gd], [gd])]) dvipsk_TexLive-2009-stripped/m4/kpse-asm.m40000664000175000017500000000240611401164110020365 0ustar uwabamiuwabami# Private macro for the TeX Live (TL) tree. # Copyright (C) 1996 - 2009 Peter Breitenlohner # # This file is free software; the copyright holder # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # KPSE_ASM_UNDERSCORE # ------------------- # Check if gcc asm for i386 needs external symbols with an underscore. AC_DEFUN([KPSE_ASM_UNDERSCORE], [AC_CACHE_CHECK([whether gcc asm needs underscore], [pb_cv_asm_underscore], [ # Some versions of GCC asm for i386 need an underscore prepended to # external symbols. Figure out if this is so. AC_LINK_IFELSE([AC_LANG_PROGRAM([[ extern char val ; extern void sub () ; #if defined (__i386__) && defined (__GNUC__) asm(" .align 4\n" ".globl sub\n" "sub:\n" " movb \$][1,val\n" " ret\n"); #else void sub () { val = 1; } #endif /* assembler */ char val ;]], [[sub (); return 0;]])], [pb_cv_asm_underscore=no], [pb_cv_asm_underscore=yes])]) if test "x$pb_cv_asm_underscore" = xyes; then AC_DEFINE([ASM_NEEDS_UNDERSCORE], 1, [web2c: Define if gcc asm needs _ on external symbols.]) fi ]) # KPSE_ASM_UNDERSCORE dvipsk_TexLive-2009-stripped/m4/kpse-win32.m40000664000175000017500000000210011401164110020536 0ustar uwabamiuwabami# Public macros for the TeX Live (TL) tree. # Copyright (C) 2009 Peter Breitenlohner # # This file is free software; the copyright holder # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 0 # KPSE_CHECK_WIN32 # ---------------- # Check for WIN32 and distinguish between MINGW32 and native. AC_DEFUN([KPSE_CHECK_WIN32], [AC_CACHE_CHECK([for native WIN32 or MINGW32], [kpse_cv_have_win32], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#ifndef WIN32 choke me #endif]], [[]])], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#ifndef __MINGW32__ choke me #endif]], [[]])], [kpse_cv_have_win32=mingw32], [kpse_cv_have_win32=native])], [kpse_cv_have_win32=no])]) ]) # KPSE_CHECK_WIN32 dvipsk_TexLive-2009-stripped/m4/ltversion.m40000664000175000017500000000127511401164110020675 0ustar uwabamiuwabami# ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file 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. # Generated from ltversion.in. # serial 3012 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.2.6]) m4_define([LT_PACKAGE_REVISION], [1.3012]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.2.6' macro_revision='1.3012' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) dvipsk_TexLive-2009-stripped/m4/kpse-lex.m40000664000175000017500000000141011401164110020367 0ustar uwabamiuwabami# Private macros for the kpathsea library. # Copyright (C) 2003 - 2009 Karl Berry # # This file is free software; the copyright holder # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # KPSE_PROG_LEX() # --------------- # Like AC_PROG_LEX, with the flag '-l' for flex. AC_DEFUN([KPSE_PROG_LEX], [AC_PROG_LEX # Work around a problem with Flex Version 2.5.31 which needs -l flag. # Since all recent versions of flex support -l, don't check for the # specific version, but check that at least "--version" is supported. # We also want to catch LEX=/some/where/flex, so: case $LEX in *flex) $LEX --version >/dev/null 2>&1 && LEX="$LEX -l" ;; esac ]) # KPSE_PROG_LEX dvipsk_TexLive-2009-stripped/m4/kpse-cxx-hack.m40000664000175000017500000000632311401164110021315 0ustar uwabamiuwabami# Public macros for the TeX Live (TL) tree. # Copyright (C) 2002 Olaf Weber # Copyright (C) 2009 Peter Breitenlohner # # This file is free software; the copyright holders # give unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 0 # KPSE_ENABLE_CXX_HACK # -------------------- # Provide the configure option '--enable-cxx-runtime-hack'. AC_DEFUN([KPSE_ENABLE_CXX_HACK], [AC_ARG_ENABLE([cxx-runtime-hack], AS_HELP_STRING([--enable-cxx-runtime-hack], [link C++ runtime statically], [29]))[]dnl ]) # KPSE_ENABLE_CXX_HACK # KPSE_CXX_HACK() # --------------- # Try statically linking C++ runtime library (g++ only) # and define CXX_HACK_LIBS with required flags. # Since Libtool reshuffles the argument list, we define CXXLD # as wrapper script appending these flags to g++ as invoked # by Libtool when linking progams (but not shared libraries). # AC_DEFUN([KPSE_CXX_HACK], [AC_REQUIRE([AC_PROG_CXX])[]dnl AC_REQUIRE([AC_CANONICAL_HOST])[]dnl AC_REQUIRE([KPSE_ENABLE_CXX_HACK])[]dnl if test "x$GXX:$enable_cxx_runtime_hack" = xyes:yes; then _KPSE_CXX_HACK fi if test "x$kpse_cv_cxx_hack" = xok; then CXXLD='$(top_builddir)/CXXLD.sh' CXX_HACK_DEPS=$CXXLD CXX_HACK_LIBS=$kpse_cv_cxx_flags cxxld_sh="#! ${CONFIG_SHELL-/bin/sh} # CXXLD.sh. Generated by configure. set -- $CXX \"\$[]@\" $CXX_HACK_LIBS echo \"\$[]0:\" \"\$[]@\" exec \"\$[]@\"" AC_CONFIG_FILES([CXXLD.sh:README], [echo "$cxxld_sh" >CXXLD.sh; chmod +x CXXLD.sh], [cxxld_sh='$cxxld_sh']) else CXXLD='$(CXX)' fi AC_SUBST([CXXLD]) AC_SUBST([CXX_HACK_DEPS]) AC_SUBST([CXX_HACK_LIBS]) ]) # KPSE_CXX_HACK # _KPSE_CXX_HACK() # ---------------- # internal subroutine m4_define([_KPSE_CXX_HACK], [ AC_LANG_PUSH([C++]) AC_CHECK_HEADERS([iostream]) AC_CACHE_CHECK([for statically linking C++ runtime library], [kpse_cv_cxx_hack], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([[#ifdef HAVE_IOSTREAM #include using namespace std; #else #include #endif]], [[cout <<"worksok\n";]])]) case $host in *cygwin*) flags_try0='-static -static-libgcc'; flags_try1='-lstdc++'; flags_try2=$flags_try1;; *) flags_try0='-nodefaultlibs -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic -lm' flags_try1='-lgcc_eh -lgcc -lc -lgcc_eh -lgcc' flags_try2='-lgcc -lc -lgcc';; esac kpse_save_LIBS=$LIBS cpp_link_hack=false for flags in "$flags_try1" "$flags_try2"; do LIBS="$kpse_save_LIBS $flags_try0 $flags" AC_LINK_IFELSE([], [AS_IF([test "x$cross_compiling" = xyes], [cpp_link_hack=true; break], [AS_CASE([`(./conftest$ac_exeext; exit) 2>/dev/null`], [worksok], [cpp_link_hack=true; break])])]) done LIBS=$kpse_save_LIBS if $cpp_link_hack; then kpse_cv_cxx_hack=ok kpse_cv_cxx_flags="$flags_try0 $flags" else kpse_cv_cxx_hack="not supported" fi]) if test "x$kpse_cv_cxx_hack" = xok; then AC_MSG_NOTICE([using $kpse_cv_cxx_flags]) fi AC_LANG_POP([C++]) ]) # _KPSE_CXX_HACK dvipsk_TexLive-2009-stripped/m4/kpse-web2c.m40000664000175000017500000000626211401164110020613 0ustar uwabamiuwabami# Private macros for the TeX Live (TL) tree. # Copyright (C) 2009 Peter Breitenlohner # # This file is free software; the copyright holder # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 0 # KPSE_WEB2C_PREPARE # ------------------ # AC_DEFUN'ed so it can enforce inclusion of this file. AC_DEFUN([KPSE_WEB2C_PREPARE], []) # KPSE_WITH_MKTEX(PROG, YES-OR-NO, TEXT, STEM) # -------------------------------------------- # Provide configure options --enable-mktex*-default and normalize result. m4_define([KPSE_WITH_MKTEX], [AC_ARG_ENABLE([$1-default], AS_HELP_STRING([--]m4_if($2, [yes], [dis], [en])[able-$1-default], m4_if($2, [yes], [do not ])[run $1 if $3 missing], kpse_indent_26+2))[]dnl AS_CASE([$enable_$1_default], [yes|no], , [enable_$1_default=$2])[]dnl ]) # KPSE_WITH_MKTEX # KPSE_MKTEX_DEFINE(PROG, YES-OR-NO, TEXT, STEM) # ---------------------------------------------- # Defines for enable-mktex*-default m4_define([KPSE_MKTEX_DEFINE], [AS_IF([test "x$enable_$1_default" = xyes], [AC_DEFINE([MAKE_$4_BY_DEFAULT], 1, [Define to 1 if you want to run $1 if $3 is missing, and to 0 if you don't])], [AC_DEFINE([MAKE_$4_BY_DEFAULT], 0)])[]dnl ]) # KPSE_MKTEX_DEFINE # KPSE_WITH_XTEX(PROG, BUILD-OR-NO, SYNC-OR-NO, TEXT, REQUIRED-LIBS) # ------------------------------------------------------------------ # Provide configure options --enable-*tex and normalize result. m4_define([KPSE_WITH_XTEX], [AC_ARG_ENABLE([$1], AS_HELP_STRING([--]m4_if($2, [yes], [dis], [en])[able-$1], m4_if($2, [yes], [do not ])[compile and install $4], kpse_indent_26+2))[]dnl AS_CASE([$enable_$1], [yes|no], , [enable_$1=$2])[]dnl m4_ifval([$5], [ test "x$enable_web2c:$enable_$1" = xyes:yes && { AC_FOREACH([Kpse_Lib], [$5], [ need_[]AS_TR_SH(Kpse_Lib)=yes ])} ])[]dnl m4_ifval ]) # KPSE_WITH_XTEX # KPSE_XTEX_COND(PROG, BUILD-OR-NO, SYNC-OR-NO, TEXT, REQUIRED-LIBS) # ------------------------------------------------------------------ # Conditionals for --with-*tex m4_define([KPSE_XTEX_COND], [AM_CONDITIONAL(AS_TR_CPP($1), [test "x$enable_$1" = xyes])[]dnl AM_CONDITIONAL(AS_TR_CPP($1)[_SYNCTEX], m4_if([$3], [yes], [true], [false]))[]dnl ]) # KPSE_XTEX_COND # KPSE_WITH_MFWIN(WINDOW, DEFINE, TEXT) # ------------------------------------- # Provide configure options --enable-*win. m4_define([KPSE_WITH_MFWIN], [AC_ARG_ENABLE([$1win], AS_HELP_STRING([--enable-$1win], [include $3 window support], kpse_indent_26+2))[]dnl ]) # KPSE_WITH_MFWIN # KPSE_MFWIN_DEFINE(WINDOW, DEFINE, TEXT) # --------------------------------------- # Defines for enable-*win m4_define([KPSE_MFWIN_DEFINE], [AS_IF([test "x$enable_$1win" = xyes], [AC_DEFINE([$2WIN], , [metafont: Define to include $3 window support.])])[]dnl ]) # KPSE_MFWIN_DEFINE dvipsk_TexLive-2009-stripped/m4/kpse-macos-framework.m40000664000175000017500000000214311401164110022700 0ustar uwabamiuwabami# Public macros for the TeX Live (TL) tree. # Copyright (C) 2005 - 2008 Jonathan Kew <...@...> # Copyright (C) 2009 Peter Breitenlohner # # This file is free software; the copyright holders # give unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 0 # KPSE_CHECK_FRAMEWORK(FRAMEWORK, BODY) # ------------------------------------- # Check for mthe Mac OS X framework FRAMEWORK (using BODY) and if found, # set kpse_cv_have_FRAMEWORK to yes and define HAVE_FRAMEWORK. AC_DEFUN([KPSE_CHECK_FRAMEWORK], [AC_CACHE_CHECK([for Mac OS X $1 framework], [kpse_cv_have_$1], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <$1/$1.h>]], [[$2]])], [kpse_cv_have_$1=yes], [kpse_cv_have_$1=no])]) AS_IF([test "x$kpse_cv_have_$1" = xyes], [AC_DEFINE([HAVE_]AS_TR_CPP([$1]), 1, [Define to 1 if you have the Mac OS X $1 framework.])])[]dnl ]) # KPSE_CHECK_FRAMEWORK dvipsk_TexLive-2009-stripped/m4/kpse-common.m40000664000175000017500000002640111401164110021076 0ustar uwabamiuwabami# Public macros for the TeX Live (TL) tree. # Copyright (C) 1995 - 2009 Karl Berry # Copyright (C) 2009 Peter Breitenlohner # # This file is free software; the copyright holders # give unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 0 # KPSE_LIBS_PREPARE # ----------------- # Enforce inclusion of this file. AC_DEFUN([KPSE_LIBS_PREPARE], []) # _KPSE_INIT() # ------------ # Initialize infrastructure for libraries and programs in the TL tree. # If in the TL tree, define kpse_TL as relative path to the TL root. AC_DEFUN([_KPSE_INIT], [## $0: Initialize TL infrastructure m4_syscmd([test -f ../../texk/kpathsea/doc/kpathsea.texi])[]dnl m4_if(m4_sysval, [0], [m4_define([kpse_TL], [../../])])[]dnl m4_ifdef([kpse_TL], [kpse_BLD=`(cd "./kpse_TL()." && pwd)` kpse_SRC=`(cd "$srcdir/kpse_TL()." && pwd)` ])[]dnl ]) # _KPSE_INIT # KPSE_INIT() # ----------- # Initialize, if not automatically done so via KPSE_*_FLAGS AC_DEFUN([KPSE_INIT], [AC_REQUIRE([_KPSE_INIT])]) # _KPSE_USE_LIBTOOL() # ------------------- AC_DEFUN([_KPSE_USE_LIBTOOL], [## $0: Generate a libtool script for use in configure tests AC_PROVIDE_IFELSE([LT_INIT], , [m4_fatal([$0: requires libtool])])[]dnl LT_OUTPUT m4_append([AC_LANG(C)], [ac_link="./libtool --mode=link --tag=CC $ac_link" ])[]dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [m4_append([AC_LANG(C++)], [ac_link="./libtool --mode=link --tag=CXX $ac_link" ])])[]dnl AC_LANG(_AC_LANG)[]dnl ]) # _KPSE_USE_LIBTOOL # _KPSE_LIB_FLAGS(LIBDIR, LIBNAME, OPTIONS, # TL-INCLUDES, TL-LIBS, TL-EXTRA, # [REBUILD-SRC-DEPENDENCIES], # [REBUILD-BLD-DEPENDENCIES]) # ----------------------------------------------- # Provide the configure options '--with-system-LIBDIR' (if in the TL tree), # '--with-LIBDIR-includes', and '--with-LIBDIR-libdir'. # Options: # lt - this is a Libtool library # tree - only use library from the TL tree # # Set the make variables LIBDIR_INCLUDES and LIBDIR_LIBS to the CPPFLAGS and # LIBS required for the library in the directory libs/LIBDIR/ of the TL tree. # # If an installed (system) version of the library has been selected or is # implied, then execute KPSE_LIBDIR_SYSTEM_FLAGS to set the two variables. # # Otherwise, set LIBDIR_INCLUDES based on the value of TL_INCLUDES and # LIBDIR_LIBS based on the value of TL_LIBS; the optional shell code # TL-EXTRA may modifiy these values. # If OPTIONS specifies a Libtool library, then arrange that future configure # test use Libtool. # Furthermore, set LIBDIR_DEPEND and LIBDIR_RULE to values suitable as # dependency and (multiline) Make rule to rebuild the library (assuming that # '${top_srcdir}/../../' and '${top_builddir}/../../' point to the root of # the TL tree). AC_DEFUN([_KPSE_LIB_FLAGS], [AC_REQUIRE([_KPSE_INIT])[]dnl ## $0: Setup $1 (-l$2) flags m4_ifdef([kpse_TL], [_KPSE_LIB_FLAGS_TL($@)], [_KPSE_LIB_FLAGS_STANDALONE($@)])[]dnl AC_SUBST(AS_TR_CPP($1)[_INCLUDES])[]dnl AC_SUBST(AS_TR_CPP($1)[_LIBS])[]dnl AC_SUBST(AS_TR_CPP($1)[_DEPEND])[]dnl AC_SUBST(AS_TR_CPP($1)[_RULE])[]dnl m4_provide_if([AM_INIT_AUTOMAKE], [_AM_SUBST_NOTMAKE(AS_TR_CPP($1)[_RULE])])[]dnl ]) # _KPSE_LIB_FLAGS # _KPSE_LIB_FLAGS_TL(LIBDIR, LIBNAME, OPTIONS, # TL-INCLUDES, TL-LIBS, TL-EXTRA, # [REBUILD-SRC-DEPENDENCIES], # [REBUILD-BLD-DEPENDENCIES]) # -------------------------------------------------- # Internal subroutine for use of _KPSE_LIB_FLAGS inside the TL tree. m4_define([_KPSE_LIB_FLAGS_TL], [m4_if(m4_index([ $3 ], [ lt ]), [-1], , [AC_REQUIRE([_KPSE_USE_LIBTOOL])])[]dnl m4_if m4_if(m4_index([ $3 ], [ tree ]), [-1], [KPSE_]AS_TR_CPP([$1])[_OPTIONS([with-system])[]dnl if test "x$with_system_[]AS_TR_SH($1)" = xyes; then AS_TR_CPP([kpse-$1-system-flags])[]dnl else ])[]dnl m4_if AS_TR_CPP($1)[_INCLUDES=`echo '$4' | sed \ -e "s,SRC/,$kpse_SRC/,g" \ -e "s,BLD/,$kpse_BLD/,g"`] AS_TR_CPP($1)[_LIBS=`echo '$5' | sed \ -e "s,BLD/,$kpse_BLD/,g"` $6] m4_if([$1], [kpathsea], [AS_TR_CPP($1)[_DEPEND=`echo '$5' | sed \ -e 's,BLD/texk/,${top_builddir}/../,g'`] AS_TR_CPP($1)[_RULE='# Rebuild lib$2 $(]AS_TR_CPP($1)[_DEPEND):]m4_ifval([$7], [[ $7]])m4_ifval([$8], [[ $8 cd ${top_builddir}/../$1 && $(MAKE) $(AM_MAKEFLAGS) $8:]])[ cd ${top_builddir}/../$1 && $(MAKE) $(AM_MAKEFLAGS)']], [AS_TR_CPP($1)[_DEPEND=`echo '$5' | sed \ -e 's,BLD/,${top_builddir}/../../,g'`] AS_TR_CPP($1)[_RULE='# Rebuild lib$2 $(]AS_TR_CPP($1)[_DEPEND):]m4_ifval([$7], [[ $7]])m4_ifval([$8], [[ $8 cd ${top_builddir}/../../libs/$1 && $(MAKE) $(AM_MAKEFLAGS) $8:]])[ cd ${top_builddir}/../../libs/$1 && $(MAKE) $(AM_MAKEFLAGS)']]) m4_if(m4_index([ $3 ], [ tree ]), [-1], [fi ])[]dnl m4_if ]) # _KPSE_LIB_FLAGS_TL # _KPSE_LIB_FLAGS_STANDALONE(LIBDIR, LIBNAME, OPTIONS) # ---------------------------------------------------- # Internal subroutine for standalone use of _KPSE_LIB_FLAGS. m4_define([_KPSE_LIB_FLAGS_STANDALONE], [m4_if(m4_index([ $3 ], [ tree ]), [-1], [KPSE_]AS_TR_CPP([$1])[_OPTIONS([])]dnl [KPSE_]AS_TR_CPP([$1])[_SYSTEM_FLAGS], [m4_fatal([$0: not in TL tree])])[]dnl m4_if ]) # _KPSE_LIB_FLAGS_STANDALONE # _KPSE_LIB_OPTIONS(LIBDIR, [WITH-SYSTEM]) # ---------------------------------------- # Internal subroutine: default configure options for system library, # including '--with-system-LIBDIR' if WITH-SYSTEM is nonempty. m4_define([_KPSE_LIB_OPTIONS], [m4_ifval([$2], [AC_ARG_WITH([system-$1], AS_HELP_STRING([--with-system-$1], [use installed $1 headers and library]))])[]dnl AC_ARG_WITH([$1-includes], AS_HELP_STRING([--with-$1-includes=DIR], [$1 headers installed in DIR]))[]dnl AC_ARG_WITH([$1-libdir], AS_HELP_STRING([--with-$1-libdir=DIR], [$1 library installed in DIR]))[]dnl ]) # _KPSE_LIB_OPTIONS # _KPSE_LIB_FLAGS_SYSTEM(LIBDIR, LIBNAME) # --------------------------------------- # Internal subroutine: default flags for system library. m4_define([_KPSE_LIB_FLAGS_SYSTEM], [if test "x$with_[]AS_TR_SH($1)_includes" != x && test "x$with_[]AS_TR_SH($1)_includes" != xyes; then AS_TR_CPP($1)_INCLUDES="-I$with_[]AS_TR_SH($1)_includes" fi AS_TR_CPP($1)_LIBS="-l$2" if test "x$with_[]AS_TR_SH($1)_libdir" != x && test "x$with_[]AS_TR_SH($1)_libdir" != xyes; then AS_TR_CPP($1)_LIBS="-L$with_[]AS_TR_SH($1)_libdir $AS_TR_CPP($1)_LIBS" fi ]) # _KPSE_LIB_FLAGS_SYSTEM # KPSE_SAVE_FLAGS # --------------- # Save values of CPPFLAGS and LIBS. AC_DEFUN([KPSE_SAVE_FLAGS], [kpse_save_CPPFLAGS=$CPPFLAGS kpse_save_LIBS=$LIBS ]) # KPSE_SAVE_FLAGS # KPSE_RESTORE_FLAGS # ------------------ # Restore values of CPPFLAGS and LIBS. AC_DEFUN([KPSE_RESTORE_FLAGS], [AC_REQUIRE([KPSE_SAVE_FLAGS])[]dnl CPPFLAGS=$kpse_save_CPPFLAGS LIBS=$kpse_save_LIBS ]) # KPSE_RESTORE_FLAGS # KPSE_ADD_FLAGS(LIBDIR) # ---------------------- # Add flags for LIBDIR to values of CPPFLAGS and LIBS. AC_DEFUN([KPSE_ADD_FLAGS], [AC_REQUIRE([KPSE_SAVE_FLAGS])[]dnl CPPFLAGS="$CPPFLAGS $[]AS_TR_CPP($1)_INCLUDES" LIBS="$[]AS_TR_CPP($1)_LIBS $LIBS" ]) # KPSE_ADD_FLAGS # KPSE_COMMON(PACKAGE-NAME, [MORE-AUTOMAKE-OPTIONS]) # -------------------------------------------------- # Common Autoconf code for all programs using libkpathsea. # Originally written by Karl Berry as texk/kpathsea/common.ac. # # Initializtion of Automake and Libtool, some common tests. AC_DEFUN([KPSE_COMMON], [dnl Remember PACKAGE-NAME as Kpse_Package (for future messages) m4_define([Kpse_Package], [$1]) dnl AM_INIT_AUTOMAKE([foreign dist-bzip2]m4_ifval([$2], [ $2])) AM_MAINTAINER_MODE dnl LT_PREREQ([2.2.6]) LT_INIT dnl AC_SYS_LARGEFILE AC_FUNC_FSEEKO dnl AC_HEADER_DIRENT AC_HEADER_STDC AC_FUNC_CLOSEDIR_VOID AC_CHECK_HEADERS([assert.h float.h limits.h memory.h pwd.h stdlib.h \ string.h strings.h sys/param.h unistd.h]) dnl dnl Replacement functions that may be required on ancient broken system. AC_CHECK_FUNCS([putenv strcasecmp strtol strstr]) dnl dnl More common functions AC_CHECK_FUNCS([bcmp bcopy bzero getcwd getwd index memcmp memcpy rindex strchr strrchr]) dnl AC_C_CONST AC_C_INLINE dnl dnl Check whether struct stat provides high-res time. AC_CHECK_MEMBERS([struct stat.st_mtim]) dnl dnl Check whether prototypes work. AC_CACHE_CHECK([whether the compiler accepts prototypes], [kb_cv_c_prototypes], [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[extern void foo(int i,...);]])], [kb_cv_c_prototypes=yes], [kb_cv_c_prototypes=no])]) if test "x$kb_cv_c_prototypes" = xno; then AC_MSG_ERROR([Sorry, your compiler does not understand prototypes.]) fi dnl dnl This is a GNU libc invention. AC_CACHE_CHECK([whether program_invocation_name is predefined], [kb_cv_var_program_inv_name], [AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[extern char *program_invocation_name; program_invocation_name = "love";]])], [kb_cv_var_program_inv_name=yes], [kb_cv_var_program_inv_name=no])]) if test "$kb_cv_var_program_inv_name" = yes; then AC_DEFINE([HAVE_PROGRAM_INVOCATION_NAME], 1, [Define to 1 if you are using GNU libc or otherwise have global variables `program_invocation_name' and `program_invocation_short_name'.]) fi dnl dnl Enable flags for compiler warnings KPSE_COMPILER_WARNINGS ]) # KPSE_COMMON # KPSE_MSG_ERROR(PACKAGE, ERROR, [EXIT-STATUS = 1]) # ------------------------------------------------- # Same as AC_MSG_ERROR(ERROR, EXIT-STATUS), except when building this # package PACKAGE has been disabled. # # The new (2009) TL build system requires all directories to be configured # for the benefit of 'dist*' Make targets. When building PACKAGE has been # disabled, configuring that package must not fail because building required # libraries from the TL tree has been disabled as a consequence. AC_DEFUN([KPSE_MSG_ERROR], [AS_IF([test "x$enable_build" = xno], [AC_MSG_WARN([building $1 has been disabled and would fail because $2])], [AC_MSG_ERROR([$2], m4_default([$3], 1))]) ]) # KPSE_MSG_ERROR # KPSE_MSG_WARN(PROBLEM) # ---------------------- # Same as AC_MSG_WARN, but terminate if `--disable-missing' was given. AC_DEFUN([KPSE_MSG_WARN], [AC_REQUIRE([_KPSE_MSG_WARN_PREPARE])[]dnl AC_MSG_WARN([$1]) AS_IF([test "x$enable_missing" = xno], [AC_MSG_ERROR([terminating.])]) ]) # KPSE_MSG_WARN # _KPSE_MSG_WARN_PREPARE # ---------------------- # Internal subroutine. AC_DEFUN([_KPSE_MSG_WARN_PREPARE], [AC_ARG_ENABLE([missing], AS_HELP_STRING([--disable-missing], [terminate if a requested program or feature must be disabled, e.g., due to missing libraries]))[]dnl ]) # _KPSE_MSG_WARN_PREPARE # _KPSE_CHECK_PKG_CONFIG # ---------------------- # Check for pkg-config AC_DEFUN([_KPSE_CHECK_PKG_CONFIG], [AC_REQUIRE([AC_CANONICAL_HOST])[]dnl AC_CHECK_TOOL([PKG_CONFIG], [pkg-config], [false])[]dnl ]) # _KPSE_CHECK_PKG_CONFIG dvipsk_TexLive-2009-stripped/m4/kpse-freetype2-flags.m40000664000175000017500000000416011401164110022603 0ustar uwabamiuwabami# Public macros for the TeX Live (TL) tree. # Copyright (C) 2009 Peter Breitenlohner # # This file is free software; the copyright holder # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 0 # KPSE_FREETYPE2_FLAGS # -------------------- # Provide the configure options '--with-system-freetype2' (if in the TL tree). # # Set the make variables FREETYPE2_INCLUDES and FREETYPE2_LIBS to the CPPFLAGS and # LIBS required for the `-lfreetype' library in libs/freetype2/ of the TL tree. AC_DEFUN([KPSE_FREETYPE2_FLAGS], [AC_REQUIRE([KPSE_ZLIB_FLAGS])[]dnl AC_REQUIRE([_KPSE_CHECK_FT2_CONFIG])[]dnl _KPSE_LIB_FLAGS([freetype2], [freetype], [], [BLD/libs/freetype2], [BLD/libs/freetype2/libfreetype.a], [FREETYPE2_LIBS=`cat $FREETYPE2_INCLUDES/ft-libs` FREETYPE2_INCLUDES=`cat $FREETYPE2_INCLUDES/ft-includes`], [], [${top_builddir}/../../libs/freetype2/ft2build.h])[]dnl ]) # KPSE_FREETYPE2_FLAGS # KPSE_FREETYPE2_OPTIONS([WITH-SYSTEM]) # ------------------------------------- AC_DEFUN([KPSE_FREETYPE2_OPTIONS], [m4_ifval([$1], [AC_ARG_WITH([system-freetype2], AS_HELP_STRING([--with-system-freetype2], [use installed freetype2 headers and library (requires freetype-config)]))])[]dnl ]) # KPSE_FREETYPE2_OPTIONS # KPSE_FREETYPE2_SYSTEM_FLAGS # --------------------------- AC_DEFUN([KPSE_FREETYPE2_SYSTEM_FLAGS], [AC_REQUIRE([_KPSE_CHECK_FT2_CONFIG])[]dnl if $FT2_CONFIG --ftversion >/dev/null 2>&1; then FREETYPE2_INCLUDES=`$FT2_CONFIG --cflags` FREETYPE2_LIBS=`$FT2_CONFIG --libs` elif test "x$need_freetype2:$with_system_freetype2" = 'xyes:yes'; then AC_MSG_ERROR([did not find freetype-config required for system freetype2 library]) fi ]) # KPSE_FREETYPE2_SYSTEM_FLAGS # _KPSE_CHECK_FT2_CONFIG # ---------------------- # Check for freetype-config AC_DEFUN([_KPSE_CHECK_FT2_CONFIG], [AC_REQUIRE([AC_CANONICAL_HOST])[]dnl AC_CHECK_TOOL([FT2_CONFIG], [freetype-config], [false])[]dnl ]) # _KPSE_CHECK_FT2_CONFIG dvipsk_TexLive-2009-stripped/m4/kpse-kpathsea-flags.m40000664000175000017500000000441011401164110022474 0ustar uwabamiuwabami# Public macros for the TeX Live (TL) tree. # Copyright (C) 2009 Peter Breitenlohner # # This file is free software; the copyright holder # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 0 # KPSE_KPATHSEA_FLAGS # ------------------- # Provide the configure options '--with-system-kpathsea' (if in the TL tree), # '--with-kpathsea-includes', and '--with-kpathsea-libdir'. # # Set the make variables KPATHSEA_INCLUDES and KPATHSEA_LIBS to the CPPFLAGS and # LIBS required for the `-lkpathsea' library in texk/kpathsea/ of the TL tree. AC_DEFUN([KPSE_KPATHSEA_FLAGS], [_KPSE_LIB_FLAGS([kpathsea], [kpathsea], [lt], [-IBLD/texk -ISRC/texk], [BLD/texk/kpathsea/libkpathsea.la], [], [${top_srcdir}/../kpathsea/*.[ch]], [${top_builddir}/../kpathsea/paths.h])[]dnl ]) # KPSE_KPATHSEA_FLAGS # KPSE_KPATHSEA_OPTIONS([WITH-SYSTEM]) # ------------------------------------ AC_DEFUN([KPSE_KPATHSEA_OPTIONS], [_KPSE_LIB_OPTIONS([kpathsea], [$1])]) # KPSE_KPATHSEA_SYSTEM_FLAGS # -------------------------- AC_DEFUN([KPSE_KPATHSEA_SYSTEM_FLAGS], [_KPSE_LIB_FLAGS_SYSTEM([kpathsea], [kpathsea])]) # KPSE_CHECK_KPSE_FORMAT(FORMAT, # [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # ---------------------------------------------------------------- # Check whether kpathsea declares the kpse_FORMAT_format. AC_DEFUN([KPSE_CHECK_KPSE_FORMAT], [AC_CACHE_CHECK([whether kpathsea declares the kpse_$1_format], [kpse_cv_have_$1_format], [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[kpse_$1_format]])], [kpse_cv_have_$1_format=yes], [kpse_cv_have_$1_format=no])]) AS_IF([test "x$kpse_cv_have_$1_format" = xyes], [$2], [$3])[]dnl ]) # KPSE_CHECK_KPSE_FORMAT # KPSE_CHECK_XBASENAME([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # -------------------------------------------------------------- # Check whether kpathsea declares xbasename(). AC_DEFUN([KPSE_CHECK_XBASENAME], [AC_CHECK_DECL([xbasename], [$1], [$2], [[#include ]]) ]) # KPSE_CHECK_XBASENAME dvipsk_TexLive-2009-stripped/m4/maw-time.m40000664000175000017500000000246411401164110020371 0ustar uwabamiuwabami# Public macros for the TeX Live (TL) tree. # Copyright (C) 1998 - 2008 Mark A. Wicks # Kettering University # Copyright (C) 2008 - 2009 Peter Breitenlohner # # This file is free software; the copyright holders # give unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # MAW_EXT_TIMEZONE # ---------------- AC_DEFUN([MAW_EXT_TIMEZONE], [AC_CACHE_CHECK([whether time.h defines timezone as an external variable], [maw_cv_ext_timezone], [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[-timezone;]])], [maw_cv_ext_timezone=yes], [maw_cv_ext_timezone=no])]) AS_IF([test "x$maw_cv_ext_timezone" = xyes], [AC_DEFINE([HAVE_TIMEZONE], 1, [Define if has timezone as an external variable.])]) ])# MAW_EXT_TIMEZONE # MAW_TM_HAS_TM_GMTOFF # -------------------- AC_DEFUN([MAW_TM_HAS_TM_GMTOFF], [AC_CHECK_MEMBER([struct tm.tm_gmtoff], [AC_DEFINE([HAVE_TM_GMTOFF], 1, [Define if struct tm has tm_gmtoff as a member.])], , [[#include ]]) ])# MAW_TM_HAS_TM_GMTOFF dvipsk_TexLive-2009-stripped/m4/kpse-warnings.m40000664000175000017500000001144611401164110021441 0ustar uwabamiuwabami# Public macros for the TeX Live (TL) tree. # Copyright (C) 2009 Peter Breitenlohner # # This file is free software; the copyright holders # give unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 0 # KPSE_COMPILER_WARNINGS # ---------------------- # Set up compiler warnings for C and C++. # This macro determines and substitutes WARNING_CFLAGS for the C compiler # and, if applicable, WARNING_CXXFLAGS for the C++ compiler. To activate # them a Makefile.am must use them, e.g., in AM_CFLAGS or AM_CXXFLAGS. AC_DEFUN([KPSE_COMPILER_WARNINGS], [AC_REQUIRE([_KPSE_COMPILER_WARNINGS_OPTION])[]dnl KPSE_WARNING_CFLAGS dnl arrange that AC_PROG_CXX uses _KPSE_WARNING_CXXFLAGS. AC_PROVIDE_IFELSE([AC_PROG_CXX], [_KPSE_WARNING_CXXFLAGS], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_KPSE_WARNING_CXXFLAGS])]) ]) # KPSE_COMPILER_WARNINGS KPSE_WARNING_CFLAGS # ----------------- # Determine and substitute WARNING_CFLAGS for C compiler. AC_DEFUN([KPSE_WARNING_CFLAGS], [AC_REQUIRE([_KPSE_COMPILER_WARNINGS_OPTION])[]dnl AC_REQUIRE([AC_PROG_CC])[]dnl AC_CACHE_CHECK([what warning flags to pass to the C compiler], [kpse_cv_warning_cflags], [dnl if test "x$enable_compiler_warnings" = xno; then kpse_cv_warning_cflags= elif test "x$GCC" = xyes; then kpse_cv_warning_cflags="-Wall -Wunused" AS_CASE([`$CC -dumpversion`], [3.4.* | 4.*], [kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wdeclaration-after-statement"]) AS_CASE([`$CC -dumpversion`], [3.@<:@234@:>@.* | 4.*], [kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wno-unknown-pragmas"]) if test "x$enable_compiler_warnings" != xmin; then kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wmissing-prototypes -Wmissing-declarations" if test "x$enable_compiler_warnings" != xyes; then kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wimplicit -Wparentheses -Wreturn-type" kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wswitch -Wtrigraphs -Wshadow -Wpointer-arith" kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wcast-qual -Wcast-align -Wwrite-strings" AS_CASE([`$CC -dumpversion`], [3.4.* | 4.*], [kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wold-style-definition"]) fi fi else : # FIXME: warning flags for non-gcc compilers fi]) WARNING_CFLAGS=$kpse_cv_warning_cflags AC_SUBST([WARNING_CFLAGS]) ]) # KPSE_WARNING_CFLAGS # KPSE_WARNING_CXXFLAGS # --------------------- # Determine and substitute WARNING_CXXFLAGS for C++ compiler. AC_DEFUN([KPSE_WARNING_CXXFLAGS], [AC_REQUIRE([_KPSE_COMPILER_WARNINGS_OPTION])[]dnl AC_REQUIRE([AC_PROG_CXX])[]dnl _KPSE_WARNING_CXXFLAGS ]) # KPSE_WARNING_CXXFLAGS # _KPSE_COMPILER_WARNINGS_OPTION # ------------------------------ # Internal subroutine. # Provide configure option `--enable-compiler-warnings=[no|min|yes|max]' # to enable various degrees of compiler warnings. AC_DEFUN([_KPSE_COMPILER_WARNINGS_OPTION], [AC_ARG_ENABLE([compiler-warnings], AS_HELP_STRING([--enable-compiler-warnings=@<:@no|min|yes|max@:>@], [Turn on compiler warnings @<:@default: yes if maintainer-mode, min otherwise@:>@]))[]dnl AS_CASE([$enable_compiler_warnings], [no | min | yes | max], [], [AS_IF([test "x$enable_maintainer_mode" = xyes], [enable_compiler_warnings=yes], [enable_compiler_warnings=min])]) ]) # _KPSE_COMPILER_WARNINGS_OPTION # _KPSE_WARNING_CXXFLAGS # ---------------------- # Internal subroutine. # Determine and substitute WARNING_CXXFLAGS for C++ compiler. m4_define([_KPSE_WARNING_CXXFLAGS], [AC_CACHE_CHECK([what warning flags to pass to the C++ compiler], [kpse_cv_warning_cxxflags], [dnl if test "x$enable_compiler_warnings" = xno; then kpse_cv_warning_cxxflags= elif test "x$GXX" = xyes; then kpse_cv_warning_cxxflags="-Wall -Wunused" AS_CASE([`$CXX -dumpversion`], [3.@<:@234@:>@.* | 4.*], [kpse_cv_warning_cxxflags="$kpse_cv_warning_cxxflags -Wno-unknown-pragmas"]) if test "x$enable_compiler_warnings" != xmin; then if test "x$enable_compiler_warnings" != xyes; then kpse_cv_warning_cxxflags="$kpse_cv_warning_cxxflags -Wimplicit -Wparentheses -Wreturn-type" kpse_cv_warning_cxxflags="$kpse_cv_warning_cxxflags -Wswitch -Wtrigraphs -Wshadow -Wpointer-arith" kpse_cv_warning_cxxflags="$kpse_cv_warning_cxxflags -Wcast-qual -Wcast-align -Wwrite-strings" fi fi else : # FIXME: warning flags for non-g++ compilers fi]) WARNING_CXXFLAGS=$kpse_cv_warning_cxxflags AC_SUBST([WARNING_CXXFLAGS]) m4_define([_KPSE_WARNING_CXXFLAGS], [])[]dnl ]) # _KPSE_WARNING_CXXFLAGS