diff options
Diffstat (limited to '')
135 files changed, 18326 insertions, 13751 deletions
diff --git a/doc/FAQ/Makefile b/doc/FAQ/Makefile deleted file mode 100644 index 4ddee5e6f1..0000000000 --- a/doc/FAQ/Makefile +++ /dev/null @@ -1,117 +0,0 @@ -# -# COPYRIGHT (c) 1988-1999. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. -# -# $Id$ -# - -PROJECT=FAQ - -include ../Make.config - -all: html info ps pdf - -dirs: - $(make-dirs) - -COMMON_FILES=../common/cpright.texi ../common/setup.texi - -GENERATED_FILES= \ - basic.texi tools.texi concepts.texi bsp.texi debug.texi freesw.texi \ - embeddedinfo.texi hwdebugaids.texi projects.texi endoftime.texi - -FILES=$(PROJECT).texi $(GENERATED_FILES) - -INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*) - -info: dirs $(PROJECT) - #cp $(wildcard $(PROJECT) $(PROJECT)-*) $(INFO_INSTALL) - # cp $(PROJECT) $(INFO_INSTALL) - -$(PROJECT): $(FILES) - $(MAKEINFO) $(PROJECT).texi - -dvi: dirs $(PROJECT).dvi -ps: dirs $(PROJECT).ps -pdf: dirs $(PROJECT).pdf - -$(PROJECT).pdf: $(FILES) - $(TEXI2PDF) $(PROJECT).texi - cp $(PROJECT).pdf $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).ps: $(PROJECT).dvi - dvips -o $(PROJECT).ps $(PROJECT).dvi - cp $(PROJECT).ps $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).dvi: $(FILES) - $(TEXI2DVI) $(PROJECT).texi - cp $(PROJECT).dvi $(WWW_INSTALL)/$(PROJECT) - -html: dirs $(FILES) - -mkdir -p $(WWW_INSTALL)/$(PROJECT) - $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \ - $(PROJECT).texi - -clean: - rm -f *.o $(PROG) *.txt core $(PROJECT).pdf - rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f $(PROJECT) $(PROJECT)-* $(GENERATED_FILES) - rm -f *.fixed _* - - -# -# Process Automatically Generated Files -# - -basic.texi: basic.t Makefile - $(BMENU) -c -p "Top" \ - -u "Top" \ - -n "" ${*}.t - -tools.texi: tools.t Makefile - $(BMENU) -c -p "Top" \ - -u "Top" \ - -n "" ${*}.t - -concepts.texi: concepts.t Makefile - $(BMENU) -c -p "" \ - -u "Top" \ - -n "" ${*}.t - -bsp.texi: bsp.t Makefile - $(BMENU) -c -p "" \ - -u "Top" \ - -n "" ${*}.t - -debug.texi: debug.t Makefile - $(BMENU) -c -p "" \ - -u "Top" \ - -n "" ${*}.t - -freesw.texi: freesw.t Makefile - $(BMENU) -c -p "" \ - -u "Top" \ - -n "" ${*}.t - -embeddedinfo.texi: embeddedinfo.t Makefile - $(BMENU) -c -p "" \ - -u "Top" \ - -n "" ${*}.t - -hwdebugaids.texi: hwdebugaids.t Makefile - $(BMENU) -c -p "" \ - -u "Top" \ - -n "" ${*}.t - -projects.texi: projects.t Makefile - $(BMENU) -c -p "" \ - -u "Top" \ - -n "" ${*}.t - - -endoftime.texi: endoftime.t Makefile - $(BMENU) -c -p "" \ - -u "Top" \ - -n "" ${*}.t - diff --git a/doc/FAQ/Makefile.am b/doc/FAQ/Makefile.am new file mode 100644 index 0000000000..5aefbf236a --- /dev/null +++ b/doc/FAQ/Makefile.am @@ -0,0 +1,81 @@ +# +# COPYRIGHT (c) 1988-1999. +# On-Line Applications Research Corporation (OAR). +# All rights reserved. +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign + +PROJECT=FAQ + +include $(top_srcdir)/project.am + +COMMON_FILES=$(top_srcdir)/common/cpright.texi $(top_builddir)/common/setup.texi + +GENERATED_FILES= \ + basic.texi tools.texi concepts.texi bsp.texi debug.texi freesw.texi \ + embeddedinfo.texi hwdebugaids.texi projects.texi endoftime.texi + +FILES= + +info_TEXINFOS = FAQ.texi +FAQ_TEXINFOS = $(FILES) $(COMMON_FILES) $(GENERATED_FILES) + +# +# Process Automatically Generated Files +# + +basic.texi: basic.t + $(BMENU) -c -p "Top" \ + -u "Top" \ + -n "" $< + +tools.texi: tools.t + $(BMENU) -c -p "Top" \ + -u "Top" \ + -n "" $< + +concepts.texi: concepts.t + $(BMENU) -c -p "" \ + -u "Top" \ + -n "" $< + +bsp.texi: bsp.t + $(BMENU) -c -p "" \ + -u "Top" \ + -n "" $< + +debug.texi: debug.t + $(BMENU) -c -p "" \ + -u "Top" \ + -n "" $< + +freesw.texi: freesw.t + $(BMENU) -c -p "" \ + -u "Top" \ + -n "" $< + +embeddedinfo.texi: embeddedinfo.t + $(BMENU) -c -p "" \ + -u "Top" \ + -n "" $< + +hwdebugaids.texi: hwdebugaids.t + $(BMENU) -c -p "" \ + -u "Top" \ + -n "" $< + +projects.texi: projects.t + $(BMENU) -c -p "" \ + -u "Top" \ + -n "" $< + + +endoftime.texi: endoftime.t + $(BMENU) -c -p "" \ + -u "Top" \ + -n "" $< + +EXTRA_DIST = entry *.t diff --git a/doc/Make.config b/doc/Make.config deleted file mode 100644 index 1b6d54068b..0000000000 --- a/doc/Make.config +++ /dev/null @@ -1,64 +0,0 @@ -# -# Build information which may change -# -# $Id$ -# - -RTEMS_VERSION=4.5-beta2 -#DOC_INSTALL_BASE=/usr1/rtems/tmp/rtemsdoc-$(RTEMS_VERSION) -DOC_INSTALL_BASE=/home/httpd/html/rtems/rtemsdoc-$(RTEMS_VERSION) -# DOC_INSTALL_BASE=/home/httpd/html/rtems/doc/rtems - -SRCDIR=/usr1/rtems/4.5-work/rtems-doc - -BMENU=$(SRCDIR)/tools/bmenu/bmenu -PDL2TEXI=$(SRCDIR)/tools/pdl2texi/pdl2texi - -SRC2HTML=$(SRCDIR)/tools/src2html/src2html -#TEXI2DVI=$(SRCDIR)/tools/texi2www/texi2dvi -TEXI2DVI=texi2dvi -TEXI2PDF=texi2pdf -TEXI2WWW=$(SRCDIR)/tools/texi2www/texi2www -MAKEINFO=makeinfo -INFO=info -XDVI=xdvi -s 4 -GHOSTVIEW=ghostview -magstep -1 - -# Account for tree organization which restricts visibility -#ifeq ($(DISTRIBUTION_LEVEL),public) -RLEVEL= -WWW_INSTALL=$(DOC_INSTALL_BASE)/html -INFO_INSTALL=$(DOC_INSTALL_BASE)/info -INDEX_FILE=../$(RLEVEL)index.html -#else -#RLEVEL=../ -#WWW_INSTALL=$(DOC_INSTALL_BASE)/html/$(DISTRIBUTION_LEVEL) -#INFO_INSTALL=$(DOC_INSTALL_BASE)/info/$(DISTRIBUTION_LEVEL) -#INDEX_FILE=../$(RLEVEL)rtems_full.html -#endif - -#TEXI2WWW_ARGS=-dirfile $(WWW_INSTALL)/index.html \ -# -header $(WWW_INSTALL)/rtems_header.html \ -# -footer $(WWW_INSTALL)/rtems_footer.html -TEXI2WWW_ARGS=-dirfile $(INDEX_FILE) \ - -header $(WWW_INSTALL)/$(RLEVEL)rtems_header.html \ - -footer $(WWW_INSTALL)/$(RLEVEL)rtems_footer.html \ - -icons $(RLEVEL).. - - -define make-dirs - @ if [ ! -d $(WWW_INSTALL) ] ; then \ - mkdir -p $(WWW_INSTALL); \ - fi - @ if [ ! -d $(INFO_INSTALL) ] ; then \ - mkdir -p $(INFO_INSTALL); \ - fi - @ - cp $(SRCDIR)/oaronly.jpg $(WWW_INSTALL) - @ - sed -e 's/RTEMS_VERSION/$(RTEMS_VERSION)/' \ - <$(SRCDIR)/rtems_footer.html >$(DOC_INSTALL_BASE)/html/rtems_footer.html - @ - cp $(SRCDIR)/HELP.html $(DOC_INSTALL_BASE)/html - @ - cp $(SRCDIR)/common/*.gif $(DOC_INSTALL_BASE)/html - @ - cp $(SRCDIR)/tools/texi2www/*.gif $(DOC_INSTALL_BASE)/html - @ - cp $(SRCDIR)/common/*.jpg $(DOC_INSTALL_BASE)/html -endef - diff --git a/doc/Makefile b/doc/Makefile deleted file mode 100644 index 39ca6a35f4..0000000000 --- a/doc/Makefile +++ /dev/null @@ -1,57 +0,0 @@ -# -# $Id$ -# - -include Make.config - -BASEDIR=$(shell pwd) - -all: env info html ps pdf -# find $(WWW_INSTALL) -type f | xargs -e chmod 444 -# find $(WWW_INSTALL) -type d | xargs -e chmod 555 - -env: tools dirs headers - -dirs: - $(make-dirs) - -headers: - sed -e 's/RTEMS_VERSION/$(RTEMS_VERSION)/' \ - <$(SRCDIR)/index.html >$(WWW_INSTALL)/index.html - sed -e 's/RTEMS_VERSION/$(RTEMS_VERSION)/' \ - <$(SRCDIR)/rtems_support.html >$(WWW_INSTALL)/rtems_support.html - sed -e 's/RTEMS_VERSION/$(RTEMS_VERSION)/' \ - <$(SRCDIR)/rtems_header.html >$(WWW_INSTALL)/rtems_header.html - sed -e 's/RTEMS_VERSION/$(RTEMS_VERSION)/' \ - <$(SRCDIR)/rtems_footer.html >$(WWW_INSTALL)/rtems_footer.html - cp common/*.gif $(WWW_INSTALL) - cp BAD.html $(WWW_INSTALL) - -info: env - ./do_docs $(BASEDIR) info - -html: env - ./do_docs $(BASEDIR) html - -dvi: dirs env - ./do_docs $(BASEDIR) dvi - -ps: dirs env - ./do_docs $(BASEDIR) ps - -pdf: dirs env - ./do_docs $(BASEDIR) pdf - -clean: - ./do_docs $(BASEDIR) clean - cd tools/bmenu ; gmake clean - cd tools/pdl2texi ; gmake clean - cd tools/src2html ; gmake clean - - -.PHONY: tools - -tools: - cd tools/bmenu ; gmake - cd tools/pdl2texi ; gmake - cd tools/src2html ; gmake diff --git a/doc/Makefile.am b/doc/Makefile.am new file mode 100644 index 0000000000..af6790ff4b --- /dev/null +++ b/doc/Makefile.am @@ -0,0 +1,45 @@ +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign 1.4 + +# NOTE: The order of the directories is essential +SUBDIRS = \ +tools \ +common \ +images \ +FAQ \ +started \ +user \ +bsp_howto \ +porting \ +develenv \ +posix_users \ +posix1003.1 \ +filesystem \ +itron3.0 \ +networking \ +ada_user \ +started_ada \ +rtems_gdb \ +rgdb_specs \ +new_chapters \ +relnotes \ +supplements \ +gnu_docs \ +src2html + +if USE_HTML +html_DATA = index.html HELP.html BAD.html +endif + +AUTOMAKE_FILES = project.am + +noinst_SCRIPTS = bootstrap + +EXTRA_DIST = \ +$(AUTOMAKE_FILES) \ +HELP.html BAD.html \ +texinfo/texinfo.tex \ +$(noinst_SCRIPTS) diff --git a/doc/VERSION b/doc/VERSION deleted file mode 100644 index 824201fb48..0000000000 --- a/doc/VERSION +++ /dev/null @@ -1,5 +0,0 @@ -# -# $Id$ -# - -RTEMS Version 19991117 diff --git a/doc/ada_user/Makefile b/doc/ada_user/Makefile deleted file mode 100644 index fedd0ea011..0000000000 --- a/doc/ada_user/Makefile +++ /dev/null @@ -1,73 +0,0 @@ -# -# COPYRIGHT (c) 1988-1999. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. -# -# $Id$ -# - -PROJECT=ada_user - -include ../Make.config - -all: html info ps pdf - -COMMON_FILES=../common/cpright.texi ../user/bsp.texi ../user/clock.texi \ - ../user/concepts.texi ../user/conf.texi ../user/dirstat.texi \ - ../user/dpmem.texi ../user/event.texi \ - ../user/fatal.texi ../user/glossary.texi ../user/init.texi \ - ../user/intr.texi ../user/io.texi ../user/mp.texi ../user/msg.texi \ - ../user/overview.texi ../user/part.texi ../user/preface.texi \ - ../user/region.texi ../user/rtmon.texi ../user/schedule.texi \ - ../user/sem.texi ../user/signal.texi ../user/task.texi \ - ../user/timer.texi ../user/userext.texi -FILES= ada_user.texi example.texi $(COMMON_FILES) - -LINKFILES=../user/rtemspie.eps ../user/rtemspie.pdf \ - ../user/states.eps ../user/states.pdf - -dirs: links - $(make-dirs) - -links: - cp $(LINKFILES) . - -INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*) - -info: dirs $(PROJECT) - cp $(shell ls -1 $(PROJECT) $(PROJECT)-* 2>/dev/null) $(INFO_INSTALL) - -$(PROJECT): $(FILES) - $(MAKEINFO) $(PROJECT).texi - -dvi: dirs $(PROJECT).dvi -ps: dirs $(PROJECT).ps -pdf: dirs $(PROJECT).pdf - -$(PROJECT).pdf: $(FILES) - $(TEXI2PDF) $(PROJECT).texi - cp $(PROJECT).pdf $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).ps: dirs $(PROJECT).dvi - dvips -o $(PROJECT).ps $(PROJECT).dvi - cp $(PROJECT).ps $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).dvi: $(FILES) - $(TEXI2DVI) $(PROJECT).texi - cp $(PROJECT).dvi $(WWW_INSTALL)/$(PROJECT) - -html: dirs $(FILES) - -mkdir -p $(WWW_INSTALL)/$(PROJECT) - cp ../user/rtemsarc.gif ../user/rtemspie.gif ../user/states.gif \ - $(WWW_INSTALL)/$(PROJECT) - $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \ - $(PROJECT).texi - -# This is one of the few document directories without its own eps and pdf -# files. Thus it can safely remove *.pdf and *.eps. -clean: - rm -f *.o $(PROG) *.txt core *.html *.pdf *.eps - rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f $(PROJECT) $(PROJECT)-* _* - rm -f *.cps *.cpss *.fns *.jkys *.pgs *.tps *.vrs - diff --git a/doc/ada_user/Makefile.am b/doc/ada_user/Makefile.am new file mode 100644 index 0000000000..5548c9d193 --- /dev/null +++ b/doc/ada_user/Makefile.am @@ -0,0 +1,52 @@ +# +# COPYRIGHT (c) 1988-1999. +# On-Line Applications Research Corporation (OAR). +# All rights reserved. +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign + +PROJECT=ada_user + +include $(top_srcdir)/project.am + +COMMON_FILES= $(top_srcdir)/common/cpright.texi \ + $(top_srcdir)/user/bsp.texi $(top_srcdir)/user/clock.texi \ + $(top_srcdir)/user/concepts.texi $(top_srcdir)/user/conf.texi \ + $(top_srcdir)/user/dirstat.texi \ + $(top_srcdir)/user/dpmem.texi $(top_srcdir)/user/event.texi \ + $(top_srcdir)/user/fatal.texi $(top_srcdir)/user/glossary.texi $(top_srcdir)/user/init.texi \ + $(top_srcdir)/user/intr.texi $(top_srcdir)/user/io.texi $(top_srcdir)/user/mp.texi $(top_srcdir)/user/msg.texi \ + $(top_srcdir)/user/overview.texi $(top_srcdir)/user/part.texi $(top_srcdir)/user/preface.texi \ + $(top_srcdir)/user/region.texi $(top_srcdir)/user/rtmon.texi $(top_srcdir)/user/schedule.texi \ + $(top_srcdir)/user/sem.texi $(top_srcdir)/user/signal.texi $(top_srcdir)/user/task.texi \ + $(top_srcdir)/user/timer.texi $(top_srcdir)/user/userext.texi + +FILES= example.texi + +rtemspie.eps: $(top_srcdir)/user/rtemspie.eps + $(LN_S) $< +states.eps: $(top_srcdir)/user/states.eps + $(LN_S) $< +CLEANFILES += rtemspie.eps states.eps + +rtemsarc.png: $(top_srcdir)/user/rtemsarc.png + $(LN_S) $< +rtemspie.png: $(top_srcdir)/user/rtemspie.png + $(LN_S) $< +states.png: $(top_srcdir)/user/states.png + $(LN_S) $< +CLEANFILES += rtemsarc.png rtemspie.png states.png + +info_TEXINFOS = ada_user.texi +ada_user_TEXINFOS = $(FILES) $(COMMON_FILES) $(GENERATED_FILES) + +if USE_HTML +html_project_DATA += rtemsarc.png rtemspie.png states.png +endif + +$(PROJECT).dvi: rtemspie.eps states.eps +$(PROJECT).pdf: rtemspie.pdf states.pdf + diff --git a/doc/archgrey.gif b/doc/archgrey.gif Binary files differdeleted file mode 100644 index d315b028f2..0000000000 --- a/doc/archgrey.gif +++ /dev/null diff --git a/doc/bootstrap b/doc/bootstrap new file mode 100755 index 0000000000..b852ce1c12 --- /dev/null +++ b/doc/bootstrap @@ -0,0 +1,128 @@ +#!/bin/sh +# +# helps bootstrapping, when checked out from CVS +# requires GNU autoconf and GNU automake +# +# $Id$ + +progname=`basename $0` +top_srcdir=`dirname $0` + +verbose=""; +quiet="false" +mode="generate" + +usage() +{ + echo + echo "usage: ${progname} [-h|-q|-v]" + echo + echo "options:" + echo " -h .. display this message and exit"; + echo " -q .. quiet, don't display directories"; + echo " -v .. verbose, pass -v to automake when invoking automake" + echo " -c .. clean, remove all aclocal/autoconf/automake generated files" + echo + exit 1; +} + +generate() +{ + dir=$1 + amopts=$2 + aclocal_amflags=$3 + + ( test "$quiet" = "true" || echo "$dir"; + cd $dir; + aclocal $aclocal_amflags + autoconf + test -n "`grep CONFIG_HEADER configure.in`" && autoheader ; + test -f Makefile.am && automake $amopts ; + test -f Makefile.am && test -n "`grep 'stamp-h\.in' Makefile.in`" \ + && echo timestamp > stamp-h.in + ) +} + +while test $# -gt 0; do +case $1 in +-h|--he|--hel|--help) + usage ;; +-q|--qu|--qui|--quie|--quiet) + quiet="true"; + shift;; +-v|--ve|--ver|--verb|--verbo|--verbos|--verbose) + verbose="-v"; + shift;; +-c|--cl|--cle|--clea|--clean) + mode="clean"; + shift;; +-*) echo "unknown option $1" ; + usage ;; +*) echo "invalid parameter $1" ; + usage ;; +esac +done + +case $mode in +generate) + + case $top_srcdir in + /* ) aclocal_dir=$top_srcdir/aclocal + ;; + *) aclocal_dir=`pwd`/$top_srcdir/aclocal + ;; + esac + if test -d $aclocal_dir; then + aclocal_amflags="-I $aclocal_dir" + fi + + confs=`find . -name 'configure.in' -print | sort` + for i in $confs; do + dir=`dirname $i`; + generate $dir "-a $verbose" "$aclocal_amflags"; + done + ;; + +clean) + test "$quiet" = "$true" || echo "removing automake support files" + find . -name 'config.guess' -print | xargs rm -f + find . -name 'config.sub' -print | xargs rm -f + find . -name 'install-sh' -print | xargs rm -f + find . -name 'missing' -print | xargs rm -f + find . -name 'mkinstalldirs' -print | xargs rm -f + + test "$quiet" = "true" || echo "removing automake generated Makefile.in files" + files=`find . -name 'Makefile.am' -print | sed -e 's%\.am%\.in%g'` ; + for i in $files; do if test -f $i; then + rm -f $i + test "$verbose" = "-v" && echo "$i" + fi; done + + test "$quiet" = "true" || echo "removing configure files" + files=`find . -name 'configure' -print` ; + test "$verbose" = "-v" && test -n "$files" && echo "$files" ; + for i in $files; do if test -f $i; then + rm -f $i + test "$verbose" = "-v" && echo "$i" + fi; done + + test "$quiet" = "true" || echo "removing aclocal.m4 files" + files=`find . -name 'aclocal.m4' -print` ; + test "$verbose" = "-v" && test -n "$files" && echo "$files" ; + for i in $files; do if test -f $i; then + rm -f $i + test "$verbose" = "-v" && echo "$i" + fi; done + + find . -name '*~' -print | xargs rm -f + find . -name '*.orig' -print | xargs rm -f + find . -name '*.rej' -print | xargs rm -f + find . -name 'config.status' -print | xargs rm -f + find . -name 'config.log' -print | xargs rm -f + find . -name 'config.cache' -print | xargs rm -f + find . -name 'Makefile' -print | xargs rm -f + find . -name '.deps' -print | xargs rm -rf + find . -name '.libs' -print | xargs rm -rf + find . -name 'stamp-h.in' | xargs rm -rf + ;; +esac diff --git a/doc/bsp_howto/Makefile b/doc/bsp_howto/Makefile deleted file mode 100644 index 0e12e674b3..0000000000 --- a/doc/bsp_howto/Makefile +++ /dev/null @@ -1,152 +0,0 @@ -# -# COPYRIGHT (c) 1988-1999. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. -# -# $Id$ -# - -PROJECT=bsp_howto - -include ../Make.config - -all: html info ps pdf - -dirs: - $(make-dirs) - -COMMON_FILES=../common/cpright.texi ../common/setup.texi - -GENERATED_FILES= \ - intro.texi target.texi makefiles.texi linkcmds.texi support.texi \ - adaintr.texi init.texi console.texi clock.texi timer.texi rtc.texi \ - nvmem.texi network.texi shmsupp.texi analog.texi discrete.texi - -FILES=$(PROJECT).texi $(GENERATED_FILES) - -INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*) - -info: dirs $(PROJECT) - #cp $(wildcard $(PROJECT) $(PROJECT)-*) $(INFO_INSTALL) - # cp $(PROJECT) $(INFO_INSTALL) - -$(PROJECT): $(FILES) - $(MAKEINFO) $(PROJECT).texi - -dvi: dirs $(PROJECT).dvi -ps: dirs $(PROJECT).ps -pdf: dirs $(PROJECT).pdf - -$(PROJECT).pdf: $(FILES) - $(TEXI2PDF) $(PROJECT).texi - cp $(PROJECT).pdf $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).ps: $(PROJECT).dvi - dvips -o $(PROJECT).ps $(PROJECT).dvi - cp $(PROJECT).ps $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).dvi: $(FILES) - $(TEXI2DVI) $(PROJECT).texi - cp $(PROJECT).dvi $(WWW_INSTALL)/$(PROJECT) - -html: dirs $(FILES) - -mkdir -p $(WWW_INSTALL)/$(PROJECT) - $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \ - $(PROJECT).texi - -clean: - rm -f *.o $(PROG) *.txt core $(PROJECT).pdf - rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f $(PROJECT) $(PROJECT)-* $(GENERATED_FILES) - rm -f *.fixed _* network.t - -# -# Grab the chapter on writing a network device driver. -# -network.t: - ln -s ../networking/driver.t network.t - - -# -# Process Automatically Generated Files -# - -intro.texi: intro.t Makefile - $(BMENU) -p "Top" \ - -u "Top" \ - -n "Target Dependent Files" ${*}.t - -target.texi: target.t Makefile - $(BMENU) -p "Introduction" \ - -u "Top" \ - -n "Makefiles" ${*}.t - -makefiles.texi: makefiles.t Makefile - $(BMENU) -p "Target Dependent Files Board Support Package Structure" \ - -u "Top" \ - -n "Linker Script" ${*}.t - -linkcmds.texi: linkcmds.t Makefile - $(BMENU) -p "Makefiles Creating a New BSP Make Customization File" \ - -u "Top" \ - -n "Ada95 Interrupt Support" ${*}.t - -adaintr.texi: adaintr.t Makefile - $(BMENU) -p "Linker Script Initialized Data" \ - -u "Top" \ - -n "Miscellaneous Support Files" ${*}.t - -support.texi: support.t Makefile - $(BMENU) -p "Ada95 Interrupt Support Version Requirements" \ - -u "Top" \ - -n "" ${*}.t - -init.texi: init.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -console.texi: console.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -clock.texi: clock.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -timer.texi: timer.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -rtc.texi: rtc.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -nvmem.texi: nvmem.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -network.texi: network.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -shmsupp.texi: shmsupp.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -analog.texi: analog.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -discrete.texi: discrete.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t diff --git a/doc/bsp_howto/Makefile.am b/doc/bsp_howto/Makefile.am new file mode 100644 index 0000000000..4657bbe873 --- /dev/null +++ b/doc/bsp_howto/Makefile.am @@ -0,0 +1,118 @@ +# +# COPYRIGHT (c) 1988-1999. +# On-Line Applications Research Corporation (OAR). +# All rights reserved. +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign + +PROJECT=bsp_howto + +include $(top_srcdir)/project.am + +COMMON_FILES=$(top_srcdir)/common/cpright.texi $(top_builddir)/common/setup.texi + +GENERATED_FILES= \ + intro.texi target.texi makefiles.texi linkcmds.texi support.texi \ + adaintr.texi init.texi console.texi clock.texi timer.texi rtc.texi \ + nvmem.texi network.texi shmsupp.texi analog.texi discrete.texi + +FILES= + +info_TEXINFOS = bsp_howto.texi +bsp_howto_TEXINFOS = $(FILES) $(COMMON_FILES) $(GENERATED_FILES) + +# +# Grab the chapter on writing a network device driver. +# +network.t: + ln -s ../networking/driver.t network.t + + +# +# Process Automatically Generated Files +# + +intro.texi: intro.t + $(BMENU) -p "Top" \ + -u "Top" \ + -n "Target Dependent Files" $< + +target.texi: target.t + $(BMENU) -p "Introduction" \ + -u "Top" \ + -n "Makefiles" $< + +makefiles.texi: makefiles.t + $(BMENU) -p "Target Dependent Files Board Support Package Structure" \ + -u "Top" \ + -n "Linker Script" $< + +linkcmds.texi: linkcmds.t + $(BMENU) -p "Makefiles Creating a New BSP Make Customization File" \ + -u "Top" \ + -n "Ada95 Interrupt Support" $< + +adaintr.texi: adaintr.t + $(BMENU) -p "Linker Script Initialized Data" \ + -u "Top" \ + -n "Miscellaneous Support Files" $< + +support.texi: support.t + $(BMENU) -p "Ada95 Interrupt Support Version Requirements" \ + -u "Top" \ + -n "" $< + +init.texi: init.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +console.texi: console.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +clock.texi: clock.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +timer.texi: timer.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +rtc.texi: rtc.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +nvmem.texi: nvmem.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +network.texi: network.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +shmsupp.texi: shmsupp.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +analog.texi: analog.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +discrete.texi: discrete.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +EXTRA_DIST = *.t diff --git a/doc/bsp_howto/network.t b/doc/bsp_howto/network.t new file mode 100644 index 0000000000..c2fa4866f6 --- /dev/null +++ b/doc/bsp_howto/network.t @@ -0,0 +1,342 @@ +@c +@c Written by Eric Norum +@c +@c COPYRIGHT (c) 1988-1999. +@c On-Line Applications Research Corporation (OAR). +@c All rights reserved. +@c +@c $Id$ +@c + +@chapter Networking Driver + +@section Introduction + +This chapter is intended to provide an introduction to the +procedure for writing RTEMS network device drivers. +The example code is taken from the `Generic 68360' network device +driver. The source code for this driver is located in the +@code{c/src/lib/libbsp/m68k/gen68360/network} directory in the RTEMS +source code distribution. Having a copy of this driver at +hand when reading the following notes will help significantly. + +@section Learn about the network device + +Before starting to write the network driver become completely +familiar with the programmer's view of the device. +The following points list some of the details of the +device that must be understood before a driver can be written. + +@itemize @bullet + +@item Does the device use DMA to transfer packets to and from +memory or does the processor have to +copy packets to and from memory on the device? + +@item If the device uses DMA, is it capable of forming a single +outgoing packet from multiple fragments scattered in separate +memory buffers? + +@item If the device uses DMA, is it capable of chaining multiple +outgoing packets, or does each outgoing packet require +intervention by the driver? + +@item Does the device automatically pad short frames to the minimum +64 bytes or does the driver have to supply the padding? + +@item Does the device automatically retry a transmission on detection +of a collision? + +@item If the device uses DMA, is it capable of buffering multiple +packets to memory, or does the receiver have to be restarted +after the arrival of each packet? + +@item How are packets that are too short, too long, or received with +CRC errors handled? Does the device automatically continue +reception or does the driver have to intervene? + +@item How is the device Ethernet address set? How is the device +programmed to accept or reject broadcast and multicast packets? + +@item What interrupts does the device generate? Does it generate an +interrupt for each incoming packet, or only for packets received +without error? Does it generate an interrupt for each packet +transmitted, or only when the transmit queue is empty? What +happens when a transmit error is detected? + +@end itemize + +In addition, some controllers have specific questions regarding +board specific configuration. For example, the SONIC Ethernet +controller has a very configurable data bus interface. It can +even be configured for sixteen and thirty-two bit data buses. This +type of information should be obtained from the board vendor. + +@section Understand the network scheduling conventions + +When writing code for the driver transmit and receive tasks, +take care to follow the network scheduling conventions. All tasks +which are associated with networking share various +data structures and resources. To ensure the consistency +of these structures the tasks +execute only when they hold the network semaphore (@code{rtems_bsdnet_semaphore}). +The transmit and receive tasks must abide by this protocol. Be very +careful to avoid `deadly embraces' with the other network tasks. +A number of routines are provided to make it easier for the network +driver code to conform to the network task scheduling conventions. + +@itemize @bullet + +@item @code{void rtems_bsdnet_semaphore_release(void)} + +This function releases the network semaphore. +The network driver tasks must call this function immediately before +making any blocking RTEMS request. + +@item @code{void rtems_bsdnet_semaphore_obtain(void)} + +This function obtains the network semaphore. +If a network driver task has released the network semaphore to allow other +network-related tasks to run while the task blocks, then this function must +be called to reobtain the semaphore immediately after the return from the +blocking RTEMS request. + +@item @code{rtems_bsdnet_event_receive(rtems_event_set, rtems_option, rtems_interval, rtems_event_set *)} +The network driver task should call this function when it wishes to wait +for an event. This function releases the network semaphore, +calls @code{rtems_event_receive} to wait for the specified event +or events and reobtains the semaphore. +The value returned is the value returned by the @code{rtems_event_receive}. + +@end itemize + +@section Network Driver Makefile + +Network drivers are considered part of the BSD network package and as such +are to be compiled with the appropriate flags. This can be accomplished by +adding @code{-D__INSIDE_RTEMS_BSD_TCPIP_STACK__} to the @code{command line}. +If the driver is inside the RTEMS source tree or is built using the +RTEMS application Makefiles, then adding the following line accomplishes +this: + +@example +DEFINES += -D__INSIDE_RTEMS_BSD_TCPIP_STACK__ +@end example + +This is equivalent to the following list of definitions. Early versions +of the RTEMS BSD network stack required that all of these be defined. + +@example +-D_COMPILING_BSD_KERNEL_ -DKERNEL -DINET -DNFS \ + -DDIAGNOSTIC -DBOOTP_COMPAT +@end example + +Defining these macros tells the network header files that the driver +is to be compiled with extended visibility into the network stack. This +is in sharp contrast to applications that simply use the network stack. +Applications do not require this level of visibility and should stick +to the portable application level API. + +As a direct result of being logically internal to the network stack, +network drivers use the BSD memory allocation routines This means, +for example, that malloc takes three arguments. See the SONIC +device driver (@code{c/src/lib/libchip/network/sonic.c}) for an example +of this. Because of this, network drivers should not include +@code{<stdlib.h>}. Doing so will result in conflicting definitions +of @code{malloc()}. + +@b{Application level} code including network servers such as the FTP +daemon are @b{not} part of the BSD kernel network code and should not be +compiled with the BSD network flags. They should include +@code{<stdlib.h>} and not define the network stack visibility +macros. + +@section Write the Driver Attach Function + +The driver attach function is responsible for configuring the driver +and making the connection between the network stack +and the driver. + +Driver attach functions take a pointer to an +@code{rtems_bsdnet_ifconfig} structure as their only argument. +and set the driver parameters based on the +values in this structure. If an entry in the configuration +structure is zero the attach function chooses an +appropriate default value for that parameter. + + +The driver should then set up several fields in the ifnet structure +in the device-dependent data structure supplied and maintained by the driver: + +@table @code +@item ifp->if_softc +Pointer to the device-dependent data. The first entry +in the device-dependent data structure must be an @code{arpcom} +structure. + +@item ifp->if_name +The name of the device. The network stack uses this string +and the device number for device name lookups. The device name should +be obtained from the @code{name} entry in the configuration structure. + +@item ifp->if_unit +The device number. The network stack uses this number and the +device name for device name lookups. For example, if +@code{ifp->if_name} is @samp{scc} and @code{ifp->if_unit} is @samp{1}, +the full device name would be @samp{scc1}. The unit number should be +obtained from the `name' entry in the configuration structure. + +@item ifp->if_mtu +The maximum transmission unit for the device. For Ethernet +devices this value should almost always be 1500. + +@item ifp->if_flags +The device flags. Ethernet devices should set the flags +to @code{IFF_BROADCAST|IFF_SIMPLEX}, indicating that the +device can broadcast packets to multiple destinations +and does not receive and transmit at the same time. + +@item ifp->if_snd.ifq_maxlen +The maximum length of the queue of packets waiting to be +sent to the driver. This is normally set to @code{ifqmaxlen}. + +@item ifp->if_init +The address of the driver initialization function. + +@item ifp->if_start +The address of the driver start function. + +@item ifp->if_ioctl +The address of the driver ioctl function. + +@item ifp->if_output +The address of the output function. Ethernet devices +should set this to @code{ether_output}. +@end table + +RTEMS provides a function to parse the driver name in the +configuration structure into a device name and unit number. + +@example +int rtems_bsdnet_parse_driver_name ( + const struct rtems_bsdnet_ifconfig *config, + char **namep +); +@end example + +The function takes two arguments; a pointer to the configuration +structure and a pointer to a pointer to a character. The function +parses the configuration name entry, allocates memory for the driver +name, places the driver name in this memory, sets the second argument +to point to the name and returns the unit number. +On error, a message is printed and -1 is returned. + +Once the attach function has set up the above entries it must link the +driver data structure onto the list of devices by +calling @code{if_attach}. Ethernet devices should then +call @code{ether_ifattach}. Both functions take a pointer to the +device's @code{ifnet} structure as their only argument. + +The attach function should return a non-zero value to indicate that +the driver has been successfully configured and attached. + +@section Write the Driver Start Function. +This function is called each time the network stack wants to start the +transmitter. This occures whenever the network stack adds a packet +to a device's send queue and the @code{IFF_OACTIVE} bit in the +device's @code{if_flags} is not set. + +For many devices this function need only set the @code{IFF_OACTIVE} bit in the +@code{if_flags} and send an event to the transmit task +indicating that a packet is in the driver transmit queue. + + +@section Write the Driver Initialization Function. + +This function should initialize the device, attach to interrupt handler, +and start the driver transmit and receive tasks. The function + +@example +rtems_id +rtems_bsdnet_newproc (char *name, + int stacksize, + void(*entry)(void *), + void *arg); +@end example + +should be used to start the driver tasks. + +Note that the network stack may call the driver initialization function more +than once. +Make sure multiple versions of the receive and transmit tasks are not accidentally +started. + + + +@section Write the Driver Transmit Task + +This task is reponsible for removing packets from the driver send queue and sending them to the device. The task should block waiting for an event from the +driver start function indicating that packets are waiting to be transmitted. +When the transmit task has drained the driver send queue the task should clear +the @code{IFF_OACTIVE} bit in @code{if_flags} and block until another outgoing +packet is queued. + + +@section Write the Driver Receive Task +This task should block until a packet arrives from the device. If the +device is an Ethernet interface the function @code{ether_input} should be called +to forward the packet to the network stack. The arguments to @code{ether_input} +are a pointer to the interface data structure, a pointer to the ethernet +header and a pointer to an mbuf containing the packet itself. + + + + +@section Write the Driver Interrupt Handler +A typical interrupt handler will do nothing more than the hardware +manipulation required to acknowledge the interrupt and send an RTEMS event +to wake up the driver receive or transmit task waiting for the event. +Network interface interrupt handlers must not make any calls to other +network routines. + + + +@section Write the Driver IOCTL Function +This function handles ioctl requests directed at the device. The ioctl +commands which must be handled are: + +@table @code +@item SIOCGIFADDR +@item SIOCSIFADDR +If the device is an Ethernet interface these +commands should be passed on to @code{ether_ioctl}. + +@item SIOCSIFFLAGS +This command should be used to start or stop the device, +depending on the state of the interface @code{IFF_UP} and +@code{IFF_RUNNING} bits in @code{if_flags}: +@table @code +@item IFF_RUNNING +Stop the device. + +@item IFF_UP +Start the device. + +@item IFF_UP|IFF_RUNNING +Stop then start the device. + +@item 0 +Do nothing. + +@end table +@end table + + + +@section Write the Driver Statistic-Printing Function +This function should print the values of any statistic/diagnostic +counters the network driver may use. The driver ioctl function should call +the statistic-printing function when the ioctl command is +@code{SIO_RTEMS_SHOW_STATS}. + + diff --git a/doc/common/Makefile.am b/doc/common/Makefile.am new file mode 100644 index 0000000000..bbcef958c8 --- /dev/null +++ b/doc/common/Makefile.am @@ -0,0 +1,8 @@ +## $Id$ + +AUTOMAKE_OPTIONS = foreign + +EXTRA_DIST = \ +cpright.texi timemac.texi \ +timetbl.t treedef.tex wksheets.t timing.t + diff --git a/doc/common/cpright.texi b/doc/common/cpright.texi index 2d188d2394..0768c55db1 100644 --- a/doc/common/cpright.texi +++ b/doc/common/cpright.texi @@ -17,7 +17,7 @@ @end tex @vskip 0pt plus 1filll -COPYRIGHT @copyright{} 1988 - 1999.@* +COPYRIGHT @copyright{} 1988 - 2000.@* On-Line Applications Research Corporation (OAR).@* The authors have used their best efforts in preparing diff --git a/doc/common/dvi.gif b/doc/common/dvi.gif Binary files differdeleted file mode 100644 index 163a5d52b5..0000000000 --- a/doc/common/dvi.gif +++ /dev/null diff --git a/doc/common/oaronly.jpg b/doc/common/oaronly.jpg Binary files differdeleted file mode 100644 index c87c151404..0000000000 --- a/doc/common/oaronly.jpg +++ /dev/null diff --git a/doc/common/pdf.gif b/doc/common/pdf.gif Binary files differdeleted file mode 100644 index c88fd777c4..0000000000 --- a/doc/common/pdf.gif +++ /dev/null diff --git a/doc/common/pdf1.gif b/doc/common/pdf1.gif Binary files differdeleted file mode 100644 index 784fe2ac8c..0000000000 --- a/doc/common/pdf1.gif +++ /dev/null diff --git a/doc/common/ps.gif b/doc/common/ps.gif Binary files differdeleted file mode 100644 index 0f565bc1db..0000000000 --- a/doc/common/ps.gif +++ /dev/null diff --git a/doc/common/setup.texi b/doc/common/setup.texi.in index 27bb5ce266..0aacbe4ffb 100644 --- a/doc/common/setup.texi +++ b/doc/common/setup.texi.in @@ -10,11 +10,11 @@ @c Set Variables @c -@set RTEMS-RELEASE 4.5-beta2 +@set RTEMS-RELEASE @RTEMS_RELEASE@ @set RTEMS-EDITION 1 -@set RTEMS-VERSION 4.5-beta2 -@set RTEMS-UPDATE-DATE April 13 2000 -@set RTEMS-UPDATE-MONTH April 2000 +@set RTEMS-VERSION @RTEMS_VERSION@ +@set RTEMS-UPDATE-DATE February 23 2000 +@set RTEMS-UPDATE-MONTH February 2000 @c @c The following determines which set of the tables and figures we will use. diff --git a/doc/common/up-arrow.gif b/doc/common/up-arrow.gif Binary files differdeleted file mode 100644 index 82aa8ccc68..0000000000 --- a/doc/common/up-arrow.gif +++ /dev/null diff --git a/doc/configure.in b/doc/configure.in new file mode 100644 index 0000000000..adc4f15c81 --- /dev/null +++ b/doc/configure.in @@ -0,0 +1,152 @@ +dnl Process this file with autoconf to produce a configure script. + +AC_PREREQ(2.13) + +AC_INIT(project.am) + +AM_INIT_AUTOMAKE(rtemsdoc,4.5.0-beta2,no) + +RTEMS_VERSION="$VERSION" +AC_SUBST(RTEMS_VERSION) + +RTEMS_RELEASE="4.5.0" +AC_SUBST(RTEMS_RELEASE) + +AC_ARG_ENABLE(html, +[ --disable-html disable html support ], +[case $enableval in +yes) ;; +no) ;; +*) AC_MSG_ERROR("invalid value");; +esac], +[enable_html="yes"] +) + +AC_ARG_ENABLE(dvi, +[ --disable-dvi disable dvi support ], +[case $enableval in +yes) ;; +no) ;; +*) AC_MSG_ERROR("invalid value");; +esac], +[enable_dvi="yes"] +) + +AC_ARG_ENABLE(pdf, +[ --disable-pdf disable pdf support ], +[case $enableval in +yes) ;; +no) ;; +*) AC_MSG_ERROR("invalid value");; +esac], +[enable_pdf="yes"] +) + +AC_ARG_ENABLE(ps, +[ --disable-ps disable ps support ], +[case $enableval in +yes) ;; +no) ;; +*) AC_MSG_ERROR("invalid value");; +esac], +[enable_ps="yes"] +) + +htmldir='$(pkgdatadir)/html' +AC_SUBST(htmldir) + +dnl Checks for programs. +AC_PROG_LN_S + +AC_CHECK_PROGS(PERL,perl) + +TEXI2WWW='$(PERL) $(top_srcdir)/tools/texi2www/texi2www' +AC_SUBST(TEXI2WWW) + +AC_CHECK_PROGS(GS,gs) +AM_CONDITIONAL(GS,test x"$GS" != x"") + +# TEXI2DVI='$(PERL) $(top_srcdir)/tools/texi2www/texi2dvi' +AC_CHECK_PROGS(TEXI2DVI,texi2dvi) +AM_CONDITIONAL(TEXI2DVI,test x"$TEXI2DVI" != x"") + +if test "$enable_pdf" = "yes"; then + AC_CHECK_PROGS(EPSTOPDF,epstopdf) + AM_CONDITIONAL(EPSTOPDF,test x"$EPSTOPDF" != x"") + + AC_CHECK_PROGS(TEXI2PDF,texi2pdf) + AM_CONDITIONAL(TEXI2PDF,test x"$TEXI2PDF" != x"") +fi + +AM_CONDITIONAL(USE_HTML, + test "$enable_html" = "yes" \ + && test x"PERL" != x"" ) + +AM_CONDITIONAL(USE_DVI, + test "$enable_dvi" = "yes" \ + && test x"$TEXI2DVI" != x"" ) + +AM_CONDITIONAL(USE_PS, + test "$enable_ps" = "yes" \ + && test x"$TEXI2DVI" != x"" ) + +AM_CONDITIONAL(USE_PDF, + test "$enable_pdf" = "yes" \ + && test x"$TEXI2DVI" != x"" \ + && test x"$TEXI2PDF" != x"" ) + +AM_CONDITIONAL(USE_EXP, test x=y ) + +BMENU='$(top_builddir)/tools/bmenu/bmenu' +AC_SUBST(BMENU) + +dnl Checks for libraries. + +dnl Checks for header files. + +dnl Checks for typedefs, structures, and compiler characteristics. + +dnl Checks for library functions. + +AC_CONFIG_SUBDIRS(tools) + +AC_OUTPUT( +Makefile +rtems_header.html +rtems_footer.html +rtems_support.html +index.html +images/Makefile +common/Makefile +common/setup.texi +FAQ/Makefile +develenv/Makefile +user/Makefile +bsp_howto/Makefile +started/Makefile +started/pictures/Makefile +porting/Makefile +networking/Makefile +posix_users/Makefile +posix1003.1/Makefile +filesystem/Makefile +itron3.0/Makefile +ada_user/Makefile +started_ada/Makefile +rtems_gdb/Makefile +rgdb_specs/Makefile +relnotes/Makefile +new_chapters/Makefile +supplements/Makefile +supplements/hppa1_1/Makefile +supplements/i386/Makefile +supplements/i960/Makefile +supplements/m68k/Makefile +supplements/mips64orion/Makefile +supplements/powerpc/Makefile +supplements/sh/Makefile +supplements/sparc/Makefile +supplements/template/Makefile +gnu_docs/Makefile +src2html/Makefile +) diff --git a/doc/develenv/Makefile b/doc/develenv/Makefile deleted file mode 100644 index 2214554ae6..0000000000 --- a/doc/develenv/Makefile +++ /dev/null @@ -1,54 +0,0 @@ -# -# COPYRIGHT (c) 1988-1999. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. -# -# $Id$ -# - -PROJECT=develenv - -include ../Make.config - -all: html info ps pdf - -dirs: - $(make-dirs) - -COMMON_FILES=../common/cpright.texi - -FILES=compile.texi $(PROJECT).texi direct.texi intro.texi sample.texi utils.texi - -info: dirs $(PROJECT) - cp $(PROJECT) $(INFO_INSTALL) - -$(PROJECT): $(FILES) - $(MAKEINFO) $(PROJECT).texi - -dvi: dirs $(PROJECT).dvi -ps: dirs $(PROJECT).ps -pdf: dirs $(PROJECT).pdf - -$(PROJECT).pdf: $(FILES) - $(TEXI2PDF) $(PROJECT).texi - cp $(PROJECT).pdf $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).ps: $(PROJECT).dvi - dvips -o $(PROJECT).ps $(PROJECT).dvi - cp $(PROJECT).ps $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).dvi: $(FILES) - $(TEXI2DVI) $(PROJECT).texi - cp $(PROJECT).dvi $(WWW_INSTALL)/$(PROJECT) - -html: dirs - -mkdir -p $(WWW_INSTALL)/$(PROJECT) - -cd .. ; gmake headers - $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \ - $(PROJECT).texi - -clean: - rm -f *.o $(PROG) *.txt core *.html $(PROJECT).pdf - rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f $(PROJECT) $(PROJECT)-* _* - diff --git a/doc/develenv/Makefile.am b/doc/develenv/Makefile.am new file mode 100644 index 0000000000..29c4c0e31e --- /dev/null +++ b/doc/develenv/Makefile.am @@ -0,0 +1,22 @@ +# +# COPYRIGHT (c) 1988-1999. +# On-Line Applications Research Corporation (OAR). +# All rights reserved. +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign + +PROJECT=develenv + +include $(top_srcdir)/project.am + +COMMON_FILES = $(top_srcdir)/common/cpright.texi + +FILES = compile.texi direct.texi intro.texi sample.texi utils.texi + +GENERATED_FILES = + +info_TEXINFOS = develenv.texi +develenv_TEXINFOS = $(FILES) $(COMMON_FILES) $(GENERATED_FILES) diff --git a/doc/do_docs b/doc/do_docs deleted file mode 100755 index ef3771a6f4..0000000000 --- a/doc/do_docs +++ /dev/null @@ -1,53 +0,0 @@ -#! /bin/sh -# -# $Id$ -# - -basedir=$1 -shift - -# classes of documents -supplements="supplements/hppa1_1 supplements/i386 \ - supplements/i960 supplements/m68k supplements/sparc supplements/powerpc" - -# relnotes is obsolete - -# Division by access level -public_docs="FAQ user develenv networking posix_users itron3.0 \ - started started_ada rtems_gdb rgdb_specs" -support_docs="${supplements} bsp_howto filesystem porting ada_user posix1003.1" - -if [ x${MANUAL_SET} = x ] ; then - MANUAL_SET=public -fi - -case ${MANUAL_SET} in - public) - # manuals="$public_docs" - # ;; - #support) - manuals="$public_docs $support_docs" - ;; - *) - echo "ERROR: Unknown manual set ${MANUAL_SET}" - exit 1 - ;; -esac - -for action in $* -do - for manual in $manuals - do - if [ x${TEST} = xyes ] ; then - echo "TEST *** make $action on ${basedir}/${manual} ***" - else - echo - echo "*** make $action on ${basedir}/${manual} ***" - echo - cd ${basedir}/${manual} - gmake $action || exit $? - fi - done -done - -exit 0 diff --git a/doc/filesystem/Makefile b/doc/filesystem/Makefile deleted file mode 100644 index 868ab9b40c..0000000000 --- a/doc/filesystem/Makefile +++ /dev/null @@ -1,120 +0,0 @@ -# -# COPYRIGHT (c) 1988-1999. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. -# -# $Id$ -# - -PROJECT=filesystem - -include ../Make.config - -REPLACE=../tools/word-replace - -BMENU+= -c - -all: html info ps pdf - -dirs: - $(make-dirs) - -COMMON_FILES=../common/cpright.texi ../common/setup.texi - -GENERATED_FILES=patheval.texi \ - init.texi mounting.texi syscalls.texi fsrequirements.texi imfs.texi \ - miniimfs.texi tftp.texi - -FILES= $(PROJECT).texi \ - preface.texi $(GENERATED_FILES) - -INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*) - -info: dirs $(PROJECT) - #cp $(wildcard $(PROJECT) $(PROJECT)-*) $(INFO_INSTALL) - cp $(PROJECT) $(INFO_INSTALL) - -$(PROJECT): $(FILES) - $(MAKEINFO) $(PROJECT).texi - -dvi: dirs $(PROJECT).dvi -ps: dirs $(PROJECT).ps -pdf: dirs $(PROJECT).pdf - -$(PROJECT).pdf: $(FILES) - $(TEXI2PDF) $(PROJECT).texi - cp $(PROJECT).pdf $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).ps: $(PROJECT).dvi - dvips -o $(PROJECT).ps $(PROJECT).dvi - cp $(PROJECT).ps $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).dvi: $(FILES) - $(TEXI2DVI) $(PROJECT).texi - cp $(PROJECT).dvi $(WWW_INSTALL)/$(PROJECT) - -patheval.texi: patheval.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -init.texi: init.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -mounting.texi: mounting.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -syscalls.texi: syscalls.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -fsrequirements.texi: fsrequirements.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -imfs.texi: imfs.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -miniimfs.texi: miniimfs.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -tftp.texi: tftp.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -html: dirs $(FILES) - -mkdir -p $(WWW_INSTALL)/$(PROJECT) - # rm -f $(WWW_INSTALL)/$(PROJECT)/networkflow.jpg - # rm -f $(WWW_INSTALL)/$(PROJECT)/networkflow.png - # rm -f $(WWW_INSTALL)/$(PROJECT)/PCIreg.jpg - # cp recvbd.jpg $(WWW_INSTALL)/$(PROJECT)/recvbd.jpg - # cp networkflow.jpg $(WWW_INSTALL)/$(PROJECT)/networkflow.jpg - # cp networkflow.png $(WWW_INSTALL)/$(PROJECT)/networkflow.png - # cp PCIreg.jpg $(WWW_INSTALL)/$(PROJECT)/PCIreg.jpg - $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \ - $(PROJECT).texi - -clean: - rm -f *.o $(PROG) *.txt core $(PROJECT).pdf - rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f $(PROJECT) $(PROJECT)-* $(GENERATED_FILES) - rm -f networking networking-* - rm -f timedata.texi timetbl.texi intr.texi wksheets.texi - rm -f timetbl.t wksheets.t - rm -f *.fixed _* - -convert: -# /usr/bin/gs -dMaxBitmap=300000000 -g5500x7500 -sDEVICE=pdfwrite -q -dNOPAUSE -dSAFER -sOutputFile=networkflow.pdf -- networkflow.eps -c -quit -# /usr/bin/gs -dMaxBitmap=300000000 -g4500x5500 -sDEVICE=pdfwrite -q -dNOPAUSE -dSAFER -sOutputFile=PCIreg.pdf -- PCIreg.eps -c -quit -# /usr/bin/gs -dMaxBitmap=300000000 -g4500x5500 -sDEVICE=pdfwrite -q -dNOPAUSE -dSAFER -sOutputFile=recvbd.pdf -- recvbd.eps -c -quit diff --git a/doc/filesystem/Makefile.am b/doc/filesystem/Makefile.am new file mode 100644 index 0000000000..5b02ed1d39 --- /dev/null +++ b/doc/filesystem/Makefile.am @@ -0,0 +1,68 @@ +# +# COPYRIGHT (c) 1988-1999. +# On-Line Applications Research Corporation (OAR). +# All rights reserved. +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign + +PROJECT=filesystem + +include $(top_srcdir)/project.am + +BMENU+= -c + +COMMON_FILES=$(top_srcdir)/common/cpright.texi $(top_builddir)/common/setup.texi + +GENERATED_FILES=patheval.texi \ + init.texi mounting.texi syscalls.texi fsrequirements.texi imfs.texi \ + miniimfs.texi tftp.texi + +FILES= preface.texi + +info_TEXINFOS = filesystem.texi +filesystem_TEXINFOS = $(FILES) $(COMMON_FILES) $(GENERATED_FILES) + +patheval.texi: patheval.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +init.texi: init.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +mounting.texi: mounting.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +syscalls.texi: syscalls.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +fsrequirements.texi: fsrequirements.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +imfs.texi: imfs.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +miniimfs.texi: miniimfs.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +tftp.texi: tftp.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +EXTRA_DIST = *.t diff --git a/doc/gnu_docs/Makefile.am b/doc/gnu_docs/Makefile.am new file mode 100644 index 0000000000..ce8101cf01 --- /dev/null +++ b/doc/gnu_docs/Makefile.am @@ -0,0 +1,13 @@ +## $Id$ + +AUTOMAKE_OPTIONS = foreign + +EXTRA_DIST = \ +gnu_footer.html \ +mk_install_dir \ +Tool_Doc_Instructions \ +gnu_header.html \ +refcard.html \ +gen_docs \ +index.html \ +rtems_tools_index.html
\ No newline at end of file diff --git a/doc/index.html b/doc/index.html deleted file mode 100644 index 4ad742870f..0000000000 --- a/doc/index.html +++ /dev/null @@ -1,275 +0,0 @@ -<HTML> -<HEAD><TITLE>RTEMS RTEMS_VERSION On-Line Library</TITLE></HEAD> -<BODY BGCOLOR="FFFFFF"> -<A HREF="http://www.oarcorp.com" target="Text Frame"> - <IMG align=right BORDER=0 SRC="oaronly.jpg" ALT="OAR"> </A> -<H1>RTEMS RTEMS_VERSION On-Line Library</H1> -<HR> -<BODY> -<MENU> - <LI> - <A HREF="FAQ/FAQ.pdf"> - <IMG SRC="pdf1.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="FAQ/FAQ.ps"> - <IMG SRC="ps.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="FAQ/FAQ.dvi"> - <IMG SRC="dvi.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="FAQ/index.html">RTEMS FAQ</A> - </LI> - <LI>C/C++ Manuals</LI> - <MENU> - <LI><A HREF="BAD.html"> - <IMG SRC="pdf1.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="started/started.ps"> - <IMG SRC="ps.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="started/started.dvi"> - <IMG SRC="dvi.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="started/index.html"> - Getting Started with RTEMS for C/C++ Users</A> - </LI> - - <LI><A HREF="c_user/c_user.pdf"> - <IMG SRC="pdf1.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="c_user/c_user.ps"> - <IMG SRC="ps.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="c_user/c_user.dvi"> - <IMG SRC="dvi.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="c_user/index.html"> - RTEMS Applications C User's Guide</A> - </LI> - - <LI><A HREF="posix_users/posix_users.pdf"> - <IMG SRC="pdf1.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="posix_users/posix_users.ps"> - <IMG SRC="ps.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="posix_users/posix_users.dvi"> - <IMG SRC="dvi.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="posix_users/index.html"> - RTEMS POSIX API User's Guide</A> - </LI> - - <LI><A HREF="itron/itron.pdf"> - <IMG SRC="pdf1.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="itron/itron.ps"> - <IMG SRC="ps.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="itron/itron.dvi"> - <IMG SRC="dvi.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="itron/index.html"> - RTEMS ITRON 3.0 API User's Guide</A> - </LI> - - <LI><A HREF="networking/networking.pdf"> - <IMG SRC="pdf1.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="networking/networking.ps"> - <IMG SRC="ps.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="networking/networking.dvi"> - <IMG SRC="dvi.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="networking/index.html"> - RTEMS Network Supplement</A> - </LI> - </MENU> - <LI>Ada Manuals</LI> - <MENU> - <LI><A HREF="BAD.html"> - <IMG SRC="pdf1.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="started_ada/started_ada.ps"> - <IMG SRC="ps.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="started_ada/started_ada.dvi"> - <IMG SRC="dvi.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="started_ada/index.html"> - Getting Started with GNAT/RTEMS</A> - </LI> - <LI><A HREF="ada_user/ada_user.pdf"> - <IMG SRC="pdf1.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="ada_user/ada_user.ps"> - <IMG SRC="ps.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="ada_user/ada_user.dvi"> - <IMG SRC="dvi.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="ada_user/index.html"> - RTEMS Applications Ada User's Guide</A> - </LI> - </MENU> - <LI>Miscellaneous Manuals</LI> - <MENU> - <LI><A HREF="develenv/develenv.pdf"> - <IMG SRC="pdf1.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="develenv/develenv.ps"> - <IMG SRC="ps.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="develenv/develenv.dvi"> - <IMG SRC="dvi.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="develenv/index.html"> - RTEMS Development Environment Guide</A> - </LI> - - <LI><A HREF="rtems_gdb/rtems_gdb.pdf"> - <IMG SRC="pdf1.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="rtems_gdb/rtems_gdb.ps"> - <IMG SRC="ps.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="rtems_gdb/rtems_gdb.dvi"> - <IMG SRC="dvi.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="rtems_gdb/index.html"> - RTEMS/GDB User's Guide</A> - </LI> - - <LI><A HREF="rgdb_specs/rgdb_specs.pdf"> - <IMG SRC="pdf1.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="rgdb_specs/rgdb_specs.ps"> - <IMG SRC="ps.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="rgdb_specs/rgdb_specs.dvi"> - <IMG SRC="dvi.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="rgdb_specs/index.html"> - RTEMS Remote Debugger Server Specifications</A> - </LI> - - <LI><A HREF="bsp_howto/bsp_howto.pdf"> - <IMG SRC="pdf1.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="bsp_howto/bsp_howto.ps"> - <IMG SRC="ps.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="bsp_howto/bsp_howto.dvi"> - <IMG SRC="dvi.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="bsp_howto/index.html"> - RTEMS BSP and Device Driver Development Guide</A> - </LI> - - <LI><A HREF="porting/porting.pdf"> - <IMG SRC="pdf1.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="porting/porting.ps"> - <IMG SRC="ps.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="porting/porting.dvi"> - <IMG SRC="dvi.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="porting/index.html"> - RTEMS Porting Guide</A> - </LI> - - <LI><A HREF="filesystem/filesystem.pdf"> - <IMG SRC="pdf1.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="filesystem/filesystem.ps"> - <IMG SRC="ps.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="filesystem/filesystem.dvi"> - <IMG SRC="dvi.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="filesystem/index.html"> - RTEMS Filesystem Design Guide</A> - </LI> - - <LI><A HREF="posix1003_1/posix1003_1.pdf"> - <IMG SRC="pdf1.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="posix1003_1/posix1003_1.ps"> - <IMG SRC="ps.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="posix1003_1/posix1003_1.dvi"> - <IMG SRC="dvi.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="posix1003_1/index.html"> - RTEMS POSIX 1003.1 Compliance Guide</A> - </LI> - </MENU> - - -<LI>CPU Supplements - - <MENU> - <LI><A HREF="HELP.html"> - <IMG SRC="pdf1.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="HELP.html"> - <IMG SRC="ps.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="HELP.html"> - <IMG SRC="dvi.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="HELP.html"> - RTEMS AMD 29K Applications Supplement</A> - </LI> - - <LI><A HREF="HELP.html"> - <IMG SRC="pdf1.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="HELP.html"> - <IMG SRC="ps.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="HELP.html"> - <IMG SRC="dvi.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="HELP.html"> - RTEMS Hitachi SH Applications Supplement</A> - </LI> - - <LI><A HREF="i386/i386.pdf"> - <IMG SRC="pdf1.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="i386/i386.ps"> - <IMG SRC="ps.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="i386/i386.dvi"> - <IMG SRC="dvi.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="i386/index.html"> - RTEMS Intel i386 Applications Supplement</A> - </LI> - - <LI><A HREF="i960/i960.pdf"> - <IMG SRC="pdf1.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="i960/i960.ps"> - <IMG SRC="ps.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="i960/i960.dvi"> - <IMG SRC="dvi.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="i960/index.html"> - RTEMS Intel i960 Applications Supplement</A> - </LI> - - <LI><A HREF="HELP.html"> - <IMG SRC="pdf1.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="HELP.html"> - <IMG SRC="ps.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="HELP.html"> - <IMG SRC="dvi.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="HELP.html"> - RTEMS MIPS64 ORION Applications Supplement</A> - </LI> - - <LI><A HREF="m68k/m68k.pdf"> - <IMG SRC="pdf1.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="m68k/m68k.ps"> - <IMG SRC="ps.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="m68k/m68k.dvi"> - <IMG SRC="dvi.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="m68k/index.html"> - RTEMS Motorola MC68xxx Applications Supplement</A> - </LI> - - <LI><A HREF="powerpc/powerpc.pdf"> - <IMG SRC="pdf1.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="powerpc/powerpc.ps"> - <IMG SRC="ps.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="powerpc/powerpc.dvi"> - <IMG SRC="dvi.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="powerpc/index.html"> - RTEMS PowerPC Applications Supplement</A> - </LI> - - <LI><A HREF="sparc/sparc.pdf"> - <IMG SRC="pdf1.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="sparc/sparc.ps"> - <IMG SRC="ps.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="sparc/sparc.dvi"> - <IMG SRC="dvi.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="sparc/index.html"> - RTEMS SPARC Applications Supplement</A> - </LI> - - <LI><A HREF="hppa1_1/hppa1_1.pdf"> - <IMG SRC="pdf1.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="hppa1_1/hppa1_1.ps"> - <IMG SRC="ps.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="hppa1_1/hppa1_1.dvi"> - <IMG SRC="dvi.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="hppa1_1/index.html"> - RTEMS Hewlett Packard PA-RISC Applications Supplement</A> - </LI> - - <LI><A HREF="HELP.html"> - <IMG SRC="pdf1.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="HELP.html"> - <IMG SRC="ps.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="HELP.html"> - <IMG SRC="dvi.gif" HEIGHT=18 WIDTH=16></A> - <A HREF="HELP.html"> - RTEMS UNIX Port Applications Supplement</A> - </LI> - - </MENU> -</LI> - -</MENU> -<HR> -Copyright © 1988-2000 <A HREF="http://www.oarcorp.com" target="Text Frame">OAR Corporation</A> -</BODY></HTML> diff --git a/doc/index.html.in b/doc/index.html.in new file mode 100644 index 0000000000..65d9edb58e --- /dev/null +++ b/doc/index.html.in @@ -0,0 +1,275 @@ +<HTML> +<HEAD><TITLE>RTEMS @RTEMS_VERSION@ On-Line Library</TITLE></HEAD> +<BODY BGCOLOR="FFFFFF"> +<A HREF="http://www.oarcorp.com" target="Text Frame"> + <IMG align=right BORDER=0 SRC="images/oaronly.jpg" ALT="OAR"> </A> +<H1>RTEMS @RTEMS_VERSION@ On-Line Library</H1> +<HR> +<BODY> +<MENU> + <LI> + <A HREF="../pdf/FAQ.pdf"> + <IMG SRC="images/pdf1.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../ps/FAQ.ps"> + <IMG SRC="images/ps.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../dvi/FAQ.dvi"> + <IMG SRC="images/dvi.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="FAQ/index.html">RTEMS FAQ</A> + </LI> + <LI>C/C++ Manuals</LI> + <MENU> + <LI><A HREF="BAD.html"> + <IMG SRC="images/pdf1.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../ps/started.ps"> + <IMG SRC="images/ps.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../dvi/started.dvi"> + <IMG SRC="images/dvi.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="started/index.html"> + Getting Started with RTEMS for C/C++ Users</A> + </LI> + + <LI><A HREF="../pdf/c_user.pdf"> + <IMG SRC="images/pdf1.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../ps/c_user.ps"> + <IMG SRC="images/ps.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../dvi/c_user.dvi"> + <IMG SRC="images/dvi.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="c_user/index.html"> + RTEMS Applications C User's Guide</A> + </LI> + + <LI><A HREF="../pdf/posix_users.pdf"> + <IMG SRC="images/pdf1.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../ps/posix_users.ps"> + <IMG SRC="images/ps.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../dvi/posix_users.dvi"> + <IMG SRC="images/dvi.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="posix_users/index.html"> + RTEMS POSIX API User's Guide</A> + </LI> + + <LI><A HREF="../pdf/itron.pdf"> + <IMG SRC="images/pdf1.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../ps/itron.ps"> + <IMG SRC="images/ps.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../dvi/itron.dvi"> + <IMG SRC="images/dvi.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="itron/index.html"> + RTEMS ITRON 3.0 API User's Guide</A> + </LI> + + <LI><A HREF="../pdf/networking.pdf"> + <IMG SRC="images/pdf1.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../ps/networking.ps"> + <IMG SRC="images/ps.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../dvi/networking.dvi"> + <IMG SRC="images/dvi.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="networking/index.html"> + RTEMS Network Supplement</A> + </LI> + </MENU> + <LI>Ada Manuals</LI> + <MENU> + <LI><A HREF="BAD.html"> + <IMG SRC="images/pdf1.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../ps/started_ada.ps"> + <IMG SRC="images/ps.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../dvi/started_ada.dvi"> + <IMG SRC="images/dvi.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="started_ada/index.html"> + Getting Started with GNAT/RTEMS</A> + </LI> + <LI><A HREF="../pdf/ada_user.pdf"> + <IMG SRC="images/pdf1.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../ps/ada_user.ps"> + <IMG SRC="images/ps.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../dvi/ada_user.dvi"> + <IMG SRC="images/dvi.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="ada_user/index.html"> + RTEMS Applications Ada User's Guide</A> + </LI> + </MENU> + <LI>Miscellaneous Manuals</LI> + <MENU> + <LI><A HREF="../pdf/develenv.pdf"> + <IMG SRC="images/pdf1.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../ps/develenv.ps"> + <IMG SRC="images/ps.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../dvi/develenv.dvi"> + <IMG SRC="images/dvi.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="develenv/index.html"> + RTEMS Development Environment Guide</A> + </LI> + + <LI><A HREF="../pdf/rtems_gdb.pdf"> + <IMG SRC="images/pdf1.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../ps/rtems_gdb.ps"> + <IMG SRC="images/ps.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../dvi/rtems_gdb.dvi"> + <IMG SRC="images/dvi.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="rtems_gdb/index.html"> + RTEMS/GDB User's Guide</A> + </LI> + + <LI><A HREF="../pdf/rgdb_specs.pdf"> + <IMG SRC="images/pdf1.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../ps/rgdb_specs.ps"> + <IMG SRC="images/ps.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../dvi/rgdb_specs.dvi"> + <IMG SRC="images/dvi.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="rgdb_specs/index.html"> + RTEMS Remote Debugger Server Specifications</A> + </LI> + + <LI><A HREF="../pdf/bsp_howto.pdf"> + <IMG SRC="images/pdf1.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../ps/bsp_howto.ps"> + <IMG SRC="images/ps.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../dvi/bsp_howto.dvi"> + <IMG SRC="images/dvi.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="bsp_howto/index.html"> + RTEMS BSP and Device Driver Development Guide</A> + </LI> + + <LI><A HREF="../pdf/porting.pdf"> + <IMG SRC="images/pdf1.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../ps/porting.ps"> + <IMG SRC="images/ps.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../dvi/porting.dvi"> + <IMG SRC="images/dvi.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="porting/index.html"> + RTEMS Porting Guide</A> + </LI> + + <LI><A HREF="../pdf/filesystem.pdf"> + <IMG SRC="images/pdf1.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../ps/filesystem.ps"> + <IMG SRC="images/ps.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../dvi/filesystem.dvi"> + <IMG SRC="images/dvi.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="filesystem/index.html"> + RTEMS Filesystem Design Guide</A> + </LI> + + <LI><A HREF="../pdf/posix1003_1.pdf"> + <IMG SRC="images/pdf1.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../ps/posix1003_1.ps"> + <IMG SRC="images/ps.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../dvi/posix1003_1.dvi"> + <IMG SRC="images/dvi.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="posix1003_1/index.html"> + RTEMS POSIX 1003.1 Compliance Guide</A> + </LI> + </MENU> + + +<LI>CPU Supplements + + <MENU> + <LI><A HREF="HELP.html"> + <IMG SRC="images/pdf1.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="HELP.html"> + <IMG SRC="images/ps.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="HELP.html"> + <IMG SRC="images/dvi.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="HELP.html"> + RTEMS AMD 29K Applications Supplement</A> + </LI> + + <LI><A HREF="HELP.html"> + <IMG SRC="images/pdf1.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="HELP.html"> + <IMG SRC="images/ps.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="HELP.html"> + <IMG SRC="images/dvi.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="HELP.html"> + RTEMS Hitachi SH Applications Supplement</A> + </LI> + + <LI><A HREF="../pdf/i386.pdf"> + <IMG SRC="images/pdf1.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../ps/i386.ps"> + <IMG SRC="images/ps.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../dvi/i386.dvi"> + <IMG SRC="images/dvi.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="i386/index.html"> + RTEMS Intel i386 Applications Supplement</A> + </LI> + + <LI><A HREF="../pdf/i960.pdf"> + <IMG SRC="images/pdf1.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../ps/i960.ps"> + <IMG SRC="images/ps.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../dvi/i960.dvi"> + <IMG SRC="images/dvi.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="i960/index.html"> + RTEMS Intel i960 Applications Supplement</A> + </LI> + + <LI><A HREF="HELP.html"> + <IMG SRC="images/pdf1.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="HELP.html"> + <IMG SRC="images/ps.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="HELP.html"> + <IMG SRC="images/dvi.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="HELP.html"> + RTEMS MIPS64 ORION Applications Supplement</A> + </LI> + + <LI><A HREF="../pdf/m68k.pdf"> + <IMG SRC="images/pdf1.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../ps/m68k.ps"> + <IMG SRC="images/ps.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../dvi/m68k.dvi"> + <IMG SRC="images/dvi.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="m68k/index.html"> + RTEMS Motorola MC68xxx Applications Supplement</A> + </LI> + + <LI><A HREF="../pdf/powerpc.pdf"> + <IMG SRC="images/pdf1.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../ps/powerpc.ps"> + <IMG SRC="images/ps.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../dvi/powerpc.dvi"> + <IMG SRC="images/dvi.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="powerpc/index.html"> + RTEMS PowerPC Applications Supplement</A> + </LI> + + <LI><A HREF="../pdf/sparc.pdf"> + <IMG SRC="images/pdf1.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../ps/sparc.ps"> + <IMG SRC="images/ps.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../dvi/sparc.dvi"> + <IMG SRC="images/dvi.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="sparc/index.html"> + RTEMS SPARC Applications Supplement</A> + </LI> + + <LI><A HREF="../pdf/hppa1_1.pdf"> + <IMG SRC="images/pdf1.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../ps/hppa1_1.ps"> + <IMG SRC="images/ps.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="../dvi/hppa1_1.dvi"> + <IMG SRC="images/dvi.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="hppa1_1/index.html"> + RTEMS Hewlett Packard PA-RISC Applications Supplement</A> + </LI> + + <LI><A HREF="HELP.html"> + <IMG SRC="images/pdf1.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="HELP.html"> + <IMG SRC="images/ps.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="HELP.html"> + <IMG SRC="images/dvi.gif" HEIGHT=18 WIDTH=16></A> + <A HREF="HELP.html"> + RTEMS UNIX Port Applications Supplement</A> + </LI> + + </MENU> +</LI> + +</MENU> +<HR> +Copyright © 1988-2000 <A HREF="http://www.oarcorp.com" target="Text Frame">OAR Corporation</A> +</BODY></HTML> diff --git a/doc/itron3.0/Makefile b/doc/itron3.0/Makefile deleted file mode 100644 index d3defd1fb8..0000000000 --- a/doc/itron3.0/Makefile +++ /dev/null @@ -1,133 +0,0 @@ -# -# COPYRIGHT (c) 1988-1999. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. -# -# $Id$ -# - -PROJECT=itron - -include ../Make.config - -all: html info ps pdf - -dirs: - $(make-dirs) - -COMMON_FILES= - -GENERATED_FILES= \ - status.texi \ - task.texi tasksync.texi semaphore.texi eventflags.texi mailbox.texi \ - msgbuffer.texi rendezvous.texi interrupt.texi memorypool.texi \ - fixedblock.texi time.texi config.texi network.texi - -FILES= $(PROJECT).texi \ - $(COMMON_FILES) preface.texi $(GENERATED_FILES) - -INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*) - -info: $(FILES) $(PROJECT) - -$(PROJECT): $(FILES) - $(MAKEINFO) $(PROJECT).texi - -dvi: $(PROJECT).dvi -ps: $(PROJECT).ps -pdf: $(PROJECT).pdf - -$(PROJECT).pdf: $(FILES) - $(TEXI2PDF) $(PROJECT).texi - cp $(PROJECT).pdf $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).ps: $(PROJECT).dvi - dvips -o $(PROJECT).ps $(PROJECT).dvi - cp $(PROJECT).ps $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).dvi: $(FILES) - $(TEXI2DVI) $(PROJECT).texi - cp $(PROJECT).dvi $(WWW_INSTALL)/$(PROJECT) - -html: $(FILES) - -mkdir -p html - -mkdir -p $(WWW_INSTALL)/$(PROJECT) - $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \ - $(PROJECT).texi - -clean: - rm -f *.o $(PROG) *.txt core *.html - rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f $(PROJECT) $(PROJECT)-* _* $(GENERATED_FILES) $(PROJECT).pdf - rm -rf html - -status.texi: status.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -task.texi: task.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -tasksync.texi: tasksync.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -semaphore.texi: semaphore.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -eventflags.texi: eventflags.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -mailbox.texi: mailbox.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -msgbuffer.texi: msgbuffer.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -rendezvous.texi: rendezvous.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -interrupt.texi: interrupt.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -memorypool.texi: memorypool.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -fixedblock.texi: fixedblock.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -time.texi: time.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -config.texi: config.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -network.texi: network.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - diff --git a/doc/itron3.0/Makefile.am b/doc/itron3.0/Makefile.am new file mode 100644 index 0000000000..b13c762da4 --- /dev/null +++ b/doc/itron3.0/Makefile.am @@ -0,0 +1,100 @@ +# +# COPYRIGHT (c) 1988-1999. +# On-Line Applications Research Corporation (OAR). +# All rights reserved. +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign + +PROJECT=itron + +include $(top_srcdir)/project.am + +COMMON_FILES= + +GENERATED_FILES= \ + status.texi \ + task.texi tasksync.texi semaphore.texi eventflags.texi mailbox.texi \ + msgbuffer.texi rendezvous.texi interrupt.texi memorypool.texi \ + fixedblock.texi time.texi config.texi network.texi + +FILES= preface.texi + +info_TEXINFOS = itron.texi +itron_TEXINFOS = $(FILES) $(COMMON_FILES) $(GENERATED_FILES) + +status.texi: status.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +task.texi: task.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +tasksync.texi: tasksync.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +semaphore.texi: semaphore.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +eventflags.texi: eventflags.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +mailbox.texi: mailbox.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +msgbuffer.texi: msgbuffer.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +rendezvous.texi: rendezvous.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +interrupt.texi: interrupt.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +memorypool.texi: memorypool.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +fixedblock.texi: fixedblock.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +time.texi: time.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +config.texi: config.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +network.texi: network.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +noinst_SCRIPTS = gen_all gen_section gen_status_shell + +EXTRA_DIST = *.t $(noinst_SCRIPTS) diff --git a/doc/networking/Makefile b/doc/networking/Makefile deleted file mode 100644 index a87d6fdf11..0000000000 --- a/doc/networking/Makefile +++ /dev/null @@ -1,109 +0,0 @@ -# -# COPYRIGHT (c) 1988-1999. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. -# -# $Id$ -# - -PROJECT=networking - -include ../Make.config - -REPLACE=../tools/word-replace - -BMENU+= -c - -all: html info ps pdf - -dirs: - $(make-dirs) - -COMMON_FILES=../common/cpright.texi ../common/setup.texi - -GENERATED_FILES=networkapp.texi driver.texi networktasks.texi testing.texi \ - servers.texi decdriver.texi - -FILES= $(PROJECT).texi \ - networktasks.texi preface.texi $(GENERATED_FILES) - -INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*) - -info: dirs $(PROJECT) - #cp $(wildcard $(PROJECT) $(PROJECT)-*) $(INFO_INSTALL) - cp $(PROJECT) $(INFO_INSTALL) - -$(PROJECT): $(FILES) - $(MAKEINFO) $(PROJECT).texi - -dvi: dirs $(PROJECT).dvi -ps: dirs $(PROJECT).ps -pdf: dirs $(PROJECT).pdf - -$(PROJECT).pdf: $(FILES) - $(TEXI2PDF) $(PROJECT).texi - cp $(PROJECT).pdf $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).ps: $(PROJECT).dvi - dvips -o $(PROJECT).ps $(PROJECT).dvi - cp $(PROJECT).ps $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).dvi: $(FILES) - $(TEXI2DVI) $(PROJECT).texi - cp $(PROJECT).dvi $(WWW_INSTALL)/$(PROJECT) - -networktasks.texi: networktasks.t Makefile - $(BMENU) -p "Preface" \ - -u "Top" \ - -n "Networking Driver" ${*}.t - -driver.texi: driver.t Makefile - $(BMENU) -p "Network Task Structure and Data Flow" \ - -u "Top" \ - -n "Using Networking in an RTEMS Application" ${*}.t - -networkapp.texi: networkapp.t Makefile - $(BMENU) -p "Write the Driver Statistic-Printing Function" \ - -u "Top" \ - -n "Testing the Driver" ${*}.t - -testing.texi: testing.t Makefile - $(BMENU) -p "Time Synchronization Using NTP" \ - -u "Top" \ - -n "Network Servers" ${*}.t - -servers.texi: servers.t Makefile - $(BMENU) -p "Throughput" \ - -u "Top" \ - -n "DEC 21140 Driver" ${*}.t - -decdriver.texi: decdriver.t Makefile - $(BMENU) -p "Using Hooks" \ - -u "Top" \ - -n "Command and Variable Index" ${*}.t - -html: dirs $(FILES) - -mkdir -p $(WWW_INSTALL)/$(PROJECT) - rm -f $(WWW_INSTALL)/$(PROJECT)/networkflow.jpg - rm -f $(WWW_INSTALL)/$(PROJECT)/networkflow.png - rm -f $(WWW_INSTALL)/$(PROJECT)/PCIreg.jpg - cp recvbd.jpg $(WWW_INSTALL)/$(PROJECT)/recvbd.jpg - cp networkflow.jpg $(WWW_INSTALL)/$(PROJECT)/networkflow.jpg - cp networkflow.png $(WWW_INSTALL)/$(PROJECT)/networkflow.png - cp PCIreg.jpg $(WWW_INSTALL)/$(PROJECT)/PCIreg.jpg - $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \ - $(PROJECT).texi - -clean: - rm -f *.o $(PROG) *.txt core $(PROJECT).pdf - rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f $(PROJECT) $(PROJECT)-* $(GENERATED_FILES) - rm -f $(PROJECT) $(PROJECT)-* - rm -f timedata.texi timetbl.texi intr.texi wksheets.texi - rm -f timetbl.t wksheets.t - rm -f *.fixed _* - -convert: - /usr/bin/gs -dMaxBitmap=300000000 -g5500x7500 -sDEVICE=pdfwrite -q -dNOPAUSE -dSAFER -sOutputFile=networkflow.pdf -- networkflow.eps -c -quit - /usr/bin/gs -dMaxBitmap=300000000 -g4500x5500 -sDEVICE=pdfwrite -q -dNOPAUSE -dSAFER -sOutputFile=PCIreg.pdf -- PCIreg.eps -c -quit - /usr/bin/gs -dMaxBitmap=300000000 -g4500x5500 -sDEVICE=pdfwrite -q -dNOPAUSE -dSAFER -sOutputFile=recvbd.pdf -- recvbd.eps -c -quit diff --git a/doc/networking/Makefile.am b/doc/networking/Makefile.am new file mode 100644 index 0000000000..42c499b219 --- /dev/null +++ b/doc/networking/Makefile.am @@ -0,0 +1,71 @@ +# +# COPYRIGHT (c) 1988-1999. +# On-Line Applications Research Corporation (OAR). +# All rights reserved. +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign + +PROJECT=networking + +include $(top_srcdir)/project.am + +# FIXME: Why -c ? +BMENU+= -c + +COMMON_FILES=$(top_srcdir)/common/cpright.texi $(top_builddir)/common/setup.texi + +GENERATED_FILES=networkapp.texi driver.texi networktasks.texi testing.texi \ + servers.texi decdriver.texi + +FILES= networktasks.texi preface.texi + +info_TEXINFOS = networking.texi +networking_TEXINFOS = $(FILES) $(COMMON_FILES) $(GENERATED_FILES) + +$(PROJECT).dvi: networkflow.eps PCIreg.eps recvbd.eps + +$(PROJECT).pdf: networkflow.pdf PCIreg.pdf recvbd.pdf + +if USE_HTML +html_project_DATA += networkflow.jpg networkflow.png PCIreg.jpg recvbd.jpg +endif + +networktasks.texi: networktasks.t + $(BMENU) -p "Preface" \ + -u "Top" \ + -n "Networking Driver" $< + +driver.texi: driver.t + $(BMENU) -p "Network Task Structure and Data Flow" \ + -u "Top" \ + -n "Using Networking in an RTEMS Application" $< + +networkapp.texi: networkapp.t + $(BMENU) -p "Write the Driver Statistic-Printing Function" \ + -u "Top" \ + -n "Testing the Driver" $< + +testing.texi: testing.t + $(BMENU) -p "Time Synchronization Using NTP" \ + -u "Top" \ + -n "Network Servers" $< + +servers.texi: servers.t + $(BMENU) -p "Throughput" \ + -u "Top" \ + -n "DEC 21140 Driver" $< + +decdriver.texi: decdriver.t + $(BMENU) -p "Using Hooks" \ + -u "Top" \ + -n "Command and Variable Index" $< + +PICTURE_FILES = \ +PCIreg.eps PCIreg.jpg \ +networkflow.eps networkflow.jpg networkflow.png \ +recvbd.eps recvbd.jpg + +EXTRA_DIST = *.t $(PICTURE_FILES) diff --git a/doc/networking/PCIreg.pdf b/doc/networking/PCIreg.pdf Binary files differdeleted file mode 100644 index 5fbb991e26..0000000000 --- a/doc/networking/PCIreg.pdf +++ /dev/null diff --git a/doc/networking/decdriver.t b/doc/networking/decdriver.t index 7a0fd0c4a3..f9fdbd778e 100644 --- a/doc/networking/decdriver.t +++ b/doc/networking/decdriver.t @@ -80,7 +80,7 @@ There is no ASCII version of the PCI Device's Configuration Header Space Format @end ifset @ifset use-tex -@image{PCIreg,,} +@image{PCIreg} @end ifset @c @image{PCIreg} diff --git a/doc/networking/networkflow.pdf b/doc/networking/networkflow.pdf Binary files differdeleted file mode 100644 index b8c6cf9ab9..0000000000 --- a/doc/networking/networkflow.pdf +++ /dev/null diff --git a/doc/networking/networktasks.t b/doc/networking/networktasks.t index b9760301e1..a6cf9a0683 100644 --- a/doc/networking/networktasks.t +++ b/doc/networking/networktasks.t @@ -23,14 +23,7 @@ NO ASCII VERSION OF THE TASKING FIGURE IS AVAILABLE @end ifset @ifset use-tex -@c for now use the ascii version -@example -@group -@c why does this not work for pdf? -@c @image{networkflow,5in,6in} -NO TEX VERSION OF THE TASKING FIGURE IS AVAILABLE -@end group -@end example +@image{networkflow,5in,6in} @end ifset @ifset use-html diff --git a/doc/networking/recvbd.pdf b/doc/networking/recvbd.pdf Binary files differdeleted file mode 100644 index 1825846f79..0000000000 --- a/doc/networking/recvbd.pdf +++ /dev/null diff --git a/doc/new_chapters/Makefile b/doc/new_chapters/Makefile deleted file mode 100644 index 8636e20436..0000000000 --- a/doc/new_chapters/Makefile +++ /dev/null @@ -1,107 +0,0 @@ -# -# COPYRIGHT (c) 1988-1999. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. -# -# $Id$ -# - -PROJECT=new_chapters - -include ../Make.config - -all: html info ps pdf - -dirs: - $(make-dirs) - -COMMON_FILES=../common/cpright.texi - -GENERATED_FILES= \ - adminiface.texi confspace.texi \ - dumpcontrol.texi eventlog.texi \ - stackchk.texi rtmonuse.texi cpuuse.texi error.texi monitor.texi - -FILES= $(PROJECT).texi \ - $(COMMON_FILES) $(GENERATED_FILES) - -INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*) - -info: dirs $(FILES) $(PROJECT) -# cp $(PROJECT) $(PROJECT)-* $(INFO_INSTALL) - cp $(PROJECT) $(INFO_INSTALL) - -$(PROJECT): $(FILES) - $(MAKEINFO) $(PROJECT).texi - -dvi: dirs $(PROJECT).dvi -ps: dirs $(PROJECT).ps -pdf: dirs $(PROJECT).pdf - -$(PROJECT).pdf: $(FILES) - $(TEXI2PDF) $(PROJECT).texi - cp $(PROJECT).pdf $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).ps: $(PROJECT).dvi - dvips -o $(PROJECT).ps $(PROJECT).dvi - cp $(PROJECT).ps $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).dvi: $(FILES) - $(TEXI2DVI) $(PROJECT).texi - cp $(PROJECT).dvi $(WWW_INSTALL)/$(PROJECT) - -html: dirs $(FILES) - -mkdir -p $(WWW_INSTALL)/$(PROJECT) - -cd .. ; gmake headers - $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \ - $(PROJECT).texi - -clean: - rm -f *.o $(PROG) *.txt core *.html $(PROJECT).pdf - rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f $(PROJECT) $(PROJECT)-* _* $(GENERATED_FILES) - -eventlog.texi: eventlog.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -dumpcontrol.texi: dumpcontrol.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -confspace.texi: confspace.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -adminiface.texi: adminiface.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -stackchk.texi: stackchk.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -rtmonuse.texi: rtmonuse.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -cpuuse.texi: cpuuse.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -error.texi: error.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -monitor.texi: monitor.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t diff --git a/doc/new_chapters/Makefile.am b/doc/new_chapters/Makefile.am new file mode 100644 index 0000000000..faeb5e5a21 --- /dev/null +++ b/doc/new_chapters/Makefile.am @@ -0,0 +1,75 @@ +# +# COPYRIGHT (c) 1988-1999. +# On-Line Applications Research Corporation (OAR). +# All rights reserved. +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign + +PROJECT=new_chapters + +include $(top_srcdir)/project.am + +COMMON_FILES=$(top_srcdir)/common/cpright.texi + +GENERATED_FILES= \ + adminiface.texi confspace.texi \ + dumpcontrol.texi eventlog.texi \ + stackchk.texi rtmonuse.texi cpuuse.texi error.texi monitor.texi + +FILES= + +info_TEXINFOS = new_chapters.texi +new_chapters_TEXINFOS = $(FILES) $(COMMON_FILES) $(GENERATED_FILES) + +eventlog.texi: eventlog.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +dumpcontrol.texi: dumpcontrol.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +confspace.texi: confspace.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +adminiface.texi: adminiface.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +stackchk.texi: stackchk.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +rtmonuse.texi: rtmonuse.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +cpuuse.texi: cpuuse.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +error.texi: error.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +monitor.texi: monitor.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +noinst_SCRIPTS = gen_section + +EXTRA_DIST = *.t STATUS TODO $(noinst_SCRIPTS) +
\ No newline at end of file diff --git a/doc/oaronly.jpg b/doc/oaronly.jpg Binary files differdeleted file mode 100644 index c87c151404..0000000000 --- a/doc/oaronly.jpg +++ /dev/null diff --git a/doc/porting/Makefile b/doc/porting/Makefile.am index b612e6e095..7e1cd643e1 100644 --- a/doc/porting/Makefile +++ b/doc/porting/Makefile.am @@ -6,16 +6,14 @@ # $Id$ # -PROJECT=porting +AUTOMAKE_OPTIONS = foreign -include ../Make.config +PROJECT=porting -all: html info ps pdf +include $(top_srcdir)/project.am -dirs: - $(make-dirs) +COMMON_FILES=$(top_srcdir)/common/cpright.texi -COMMON_FILES=../common/cpright.texi FILES=preface.texi developtools.texi sourcecode.texi cpumodels.texi \ cpuinit.texi interrupts.texi taskcontext.texi idlethread.texi \ prioritybitmap.texi codetuning.texi miscellaneous.texi $(COMMON_FILES) @@ -24,88 +22,57 @@ GENERATED_FILES=developtools.texi sourcecode.texi cpumodels.texi \ cpuinit.texi interrupts.texi taskcontext.texi idlethread.texi \ prioritybitmap.texi codetuning.texi miscellaneous.texi - -INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*) - -info: dirs $(PROJECT) - cp $(PROJECT) $(PROJECT)-* $(INFO_INSTALL) - -$(PROJECT): $(FILES) - $(MAKEINFO) $(PROJECT).texi - -dvi: dirs $(PROJECT).dvi -ps: dirs $(PROJECT).ps -pdf: dirs $(PROJECT).pdf - -$(PROJECT).pdf: $(FILES) - $(TEXI2PDF) $(PROJECT).texi - cp $(PROJECT).pdf $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).ps: $(PROJECT).dvi - dvips -o $(PROJECT).ps $(PROJECT).dvi - cp $(PROJECT).ps $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).dvi: $(FILES) - $(TEXI2DVI) $(PROJECT).texi - cp $(PROJECT).dvi $(WWW_INSTALL)/$(PROJECT) - -html: dirs $(FILES) - -mkdir -p $(WWW_INSTALL)/$(PROJECT) - $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \ - $(PROJECT).texi - -clean: - rm -f *.o $(PROG) *.txt core *.html $(PROJECT).pdf - rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f $(PROJECT) $(PROJECT)-* _* $(GENERATED_FILES) +info_TEXINFOS = porting.texi +porting_TEXINFOS = $(FILES) $(COMMON_FILES) $(GENERATED_FILES) developtools.texi: developtools.t $(BMENU) -p "Preface" \ -u "Top" \ - -n "Source Code Organization" ${*}.t + -n "Source Code Organization" $< sourcecode.texi: sourcecode.t $(BMENU) -p "Development Tools" \ -u "Top" \ - -n "CPU Model Variations" ${*}.t + -n "CPU Model Variations" $< cpumodels.texi: cpumodels.t $(BMENU) -p "Source Code Organization Introduction" \ -u "Top" \ - -n "CPU Initialization" ${*}.t + -n "CPU Initialization" $< cpuinit.texi: cpuinit.t $(BMENU) -p "CPU Model Variations Coding Issues" \ -u "Top" \ - -n "Interrupts" ${*}.t + -n "Interrupts" $< interrupts.texi: interrupts.t $(BMENU) -p "CPU Initialization Initializing the CPU" \ -u "Top" \ - -n "Task Context Management" ${*}.t + -n "Task Context Management" $< taskcontext.texi: taskcontext.t $(BMENU) -p "Interrupts Pointer to _Thread_Dispatch Routine" \ -u "Top" \ - -n "IDLE Thread" ${*}.t + -n "IDLE Thread" $< idlethread.texi: idlethread.t $(BMENU) -p "Task Context Management Restoring a Floating Point Context" \ -u "Top" \ - -n "Priority Bitmap Manipulation" ${*}.t + -n "Priority Bitmap Manipulation" $< prioritybitmap.texi: prioritybitmap.t $(BMENU) -p "IDLE Thread Idle Thread Body" \ -u "Top" \ - -n "Code Tuning Parameters" ${*}.t + -n "Code Tuning Parameters" $< codetuning.texi: codetuning.t $(BMENU) -p "Priority Bitmap Manipulation Bit Scan Support" \ -u "Top" \ - -n "Miscellaneous" ${*}.t + -n "Miscellaneous" $< miscellaneous.texi: miscellaneous.t $(BMENU) -p "Code Tuning Parameters Partition Element Alignment" \ -u "Top" \ - -n "Command and Variable Index" ${*}.t + -n "Command and Variable Index" $< +EXTRA_DIST = *.t diff --git a/doc/posix1003.1/Makefile b/doc/posix1003.1/Makefile.am index 2a3a6c3761..6f94255d78 100644 --- a/doc/posix1003.1/Makefile +++ b/doc/posix1003.1/Makefile.am @@ -6,139 +6,113 @@ # $Id$ # -PROJECT=posix1003_1 - -include ../Make.config +AUTOMAKE_OPTIONS = foreign -all: html info ps pdf +PROJECT=posix1003_1 -dirs: - $(make-dirs) +include $(top_srcdir)/project.am -COMMON_FILES=../common/cpright.texi ../common/setup.texi +COMMON_FILES=$(top_srcdir)/common/cpright.texi $(top_builddir)/common/setup.texi GENERATED_FILES=ch01.texi ch02.texi ch03.texi ch04.texi ch05.texi \ ch06.texi ch07.texi ch08.texi ch09.texi ch10.texi \ ch11.texi ch12.texi ch13.texi ch14.texi ch15.texi \ ch16.texi ch17.texi ch18.texi ch19.t ch19.texi -FILES= $(PROJECT).texi \ - preface.texi $(GENERATED_FILES) - -INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*) - -info: dirs $(PROJECT) - #cp $(wildcard $(PROJECT) $(PROJECT)-*) $(INFO_INSTALL) - cp $(PROJECT) $(INFO_INSTALL) - -$(PROJECT): $(FILES) - $(MAKEINFO) $(PROJECT).texi - -dvi: dirs $(PROJECT).dvi -ps: dirs $(PROJECT).ps -pdf: dirs $(PROJECT).pdf - -$(PROJECT).pdf: $(FILES) - $(TEXI2PDF) $(PROJECT).texi - cp $(PROJECT).pdf $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).ps: $(PROJECT).dvi - dvips -o $(PROJECT).ps $(PROJECT).dvi - cp $(PROJECT).ps $(WWW_INSTALL)/$(PROJECT) +FILES= preface.texi -$(PROJECT).dvi: $(FILES) - $(TEXI2DVI) $(PROJECT).texi - cp $(PROJECT).dvi $(WWW_INSTALL)/$(PROJECT) +info_TEXINFOS = posix1003_1.texi +posix1003_1_TEXINFOS = $(FILES) $(COMMON_FILES) $(GENERATED_FILES) ch01.texi: ch01.t $(BMENU) -c -p "Preface" \ -u "Top" \ - -n "Terminology and General Requirements" ${*}.t + -n "Terminology and General Requirements" $< ch02.texi: ch02.t $(BMENU) -c -p "Conformance" \ -u "Top" \ - -n "Process Primitives" ${*}.t + -n "Process Primitives" $< ch03.texi: ch03.t $(BMENU) -c -p "Execution-Time Symbolic Constants for Portability Specifications" \ -u "Top" \ - -n "Process Environment" ${*}.t + -n "Process Environment" $< ch04.texi: ch04.t $(BMENU) -c -p "Delay Process Execution" \ -u "Top" \ - -n "Files and Directories" ${*}.t + -n "Files and Directories" $< ch05.texi: ch05.t $(BMENU) -c -p "Get Configurable System Variables" \ -u "Top" \ - -n "Input and Output Primitives" ${*}.t + -n "Input and Output Primitives" $< ch06.texi: ch06.t $(BMENU) -c -p "Get Configurable Pathname Variables" \ -u "Top" \ - -n "Device- and Class-Specific Functions" ${*}.t + -n "Device- and Class-Specific Functions" $< ch07.texi: ch07.t $(BMENU) -c -p " Asynchronous File Synchronization" \ -u "Top" \ - -n "Language-Specific Services for the C Programming Language" ${*}.t + -n "Language-Specific Services for the C Programming Language" $< ch08.texi: ch08.t $(BMENU) -c -p "Set Foreground Process Group ID" \ -u "Top" \ - -n "System Databases" ${*}.t + -n "System Databases" $< ch09.texi: ch09.t $(BMENU) -c -p "Pseudo-Random Sequence Generation Functions" \ -u "Top" \ - -n "Data Interchange Format" ${*}.t + -n "Data Interchange Format" $< ch10.texi: ch10.t $(BMENU) -c -p "User Database Access" \ -u "Top" \ - -n "Synchronization" ${*}.t + -n "Synchronization" $< ch11.texi: ch11.t $(BMENU) -c -p "Multiple Volumes" \ -u "Top" \ - -n "Memory Management" ${*}.t + -n "Memory Management" $< ch12.texi: ch12.t $(BMENU) -c -p "Waiting on a Condition" \ -u "Top" \ - -n "Execution Scheduling" ${*}.t + -n "Execution Scheduling" $< ch13.texi: ch13.t $(BMENU) -c -p "Remove a Shared Memory Object" \ -u "Top" \ - -n "Clocks and Timers" ${*}.t + -n "Clocks and Timers" $< ch14.texi: ch14.t $(BMENU) -c -p "Change the Priority Ceiling of a Mutex" \ -u "Top" \ - -n "Message Passing" ${*}.t + -n "Message Passing" $< ch15.texi: ch15.t $(BMENU) -c -p "High Resolution Sleep" \ -u "Top" \ - -n "Thread Management" ${*}.t + -n "Thread Management" $< ch16.texi: ch16.t $(BMENU) -c -p "Get Message Queue Attributes" \ -u "Top" \ - -n "Thread-Specific Data" ${*}.t + -n "Thread-Specific Data" $< ch17.texi: ch17.t $(BMENU) -c -p "Dynamic Package Initialization" \ -u "Top" \ - -n "Thread Cancellation" ${*}.t + -n "Thread Cancellation" $< ch18.texi: ch18.t $(BMENU) -c -p "Thread-Specific Data Key Deletion" \ -u "Top" \ - -n "Compliance Summary" ${*}.t + -n "Compliance Summary" $< ch19.t: ch01.t ch02.t ch03.t ch04.t ch05.t ch06.t ch07.t ch08.t ch09.t \ ch10.t ch11.t ch12.t ch13.t ch14.t ch15.t ch16.t ch17.t ch18.t \ @@ -148,16 +122,8 @@ ch19.t: ch01.t ch02.t ch03.t ch04.t ch05.t ch06.t ch07.t ch08.t ch09.t \ ch19.texi: ch19.t $(BMENU) -c -p "List of Cancellation Points" \ -u "Top" \ - -n "Command and Variable Index" ${*}.t - -html: dirs $(FILES) - -mkdir -p $(WWW_INSTALL)/$(PROJECT) - $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \ - $(PROJECT).texi + -n "Command and Variable Index" $< -clean: - rm -f *.o $(PROG) *.txt core $(PROJECT).pdf - rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f $(PROJECT) $(PROJECT)-* $(GENERATED_FILES) - rm -f *.fixed _* +noinst_SCRIPTS = summarize +EXTRA_DIST = *.t compliance_list summarize diff --git a/doc/posix_users/Makefile b/doc/posix_users/Makefile deleted file mode 100644 index 8c862ebd29..0000000000 --- a/doc/posix_users/Makefile +++ /dev/null @@ -1,177 +0,0 @@ -# -# COPYRIGHT (c) 1988-1999. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. -# -# $Id$ -# - -PROJECT=posix_users - -include ../Make.config - -all: html info ps pdf - -dirs: - $(make-dirs) - -COMMON_FILES=../common/cpright.texi - -GENERATED_FILES= \ - cancel.texi clock.texi cond.texi \ - cspecific.texi device.texi files.texi \ - io.texi key.texi memorymgmt.texi message.texi mutex.texi procenv.texi \ - process.texi sched.texi semaphores.texi signal.texi status.texi \ - systemdb.texi thread.texi timer.texi libc.texi libm.texi - -FILES= posix_users.texi preface.texi \ - $(COMMON_FILES) $(GENERATED_FILES) - -INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*) - -info: dirs $(FILES) $(PROJECT) -# cp $(PROJECT) $(PROJECT)-* $(INFO_INSTALL) - cp $(PROJECT) $(INFO_INSTALL) - -$(PROJECT): $(FILES) - $(MAKEINFO) posix_users.texi - -dvi: dirs $(PROJECT).dvi -ps: dirs $(PROJECT).ps -pdf: dirs $(PROJECT).pdf - -$(PROJECT).pdf: $(FILES) - $(TEXI2PDF) $(PROJECT).texi - cp $(PROJECT).pdf $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).ps: $(PROJECT).dvi - dvips -o $(PROJECT).ps $(PROJECT).dvi - cp $(PROJECT).ps $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).dvi: $(FILES) - $(TEXI2DVI) posix_users.texi - cp $(PROJECT).dvi $(WWW_INSTALL)/$(PROJECT) - -html: dirs $(FILES) - -mkdir -p $(WWW_INSTALL)/$(PROJECT) - -cd .. ; gmake headers - $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \ - posix_users.texi - -clean: - rm -f *.o $(PROG) *.txt core *.html $(PROJECT).pdf - rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f $(PROJECT) $(PROJECT)-* _* $(GENERATED_FILES) - rm -f *.cps *.cpss *.fns *.jkys *.pgs *.tps *.vrs - -process.texi: process.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -procenv.texi: procenv.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -files.texi: files.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -thread.texi: thread.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -signal.texi: signal.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -mutex.texi: mutex.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -cond.texi: cond.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -key.texi: key.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -clock.texi: clock.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -timer.texi: timer.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -sched.texi: sched.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -io.texi: io.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -device.texi: device.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -cspecific.texi: cspecific.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -semaphores.texi: semaphores.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -memorymgmt.texi: memorymgmt.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -message.texi: message.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -cancel.texi: cancel.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -systemdb.texi: systemdb.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -status.texi: status.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - -libc.texi: libc.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - - -libm.texi: libm.t Makefile - $(BMENU) -p "" \ - -u "Top" \ - -n "" ${*}.t - diff --git a/doc/posix_users/Makefile.am b/doc/posix_users/Makefile.am new file mode 100644 index 0000000000..c20c8bbbdf --- /dev/null +++ b/doc/posix_users/Makefile.am @@ -0,0 +1,142 @@ +# +# COPYRIGHT (c) 1988-1999. +# On-Line Applications Research Corporation (OAR). +# All rights reserved. +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign + +PROJECT=posix_users + +include $(top_srcdir)/project.am + +COMMON_FILES=$(top_srcdir)/common/cpright.texi + +GENERATED_FILES= \ + cancel.texi clock.texi cond.texi \ + cspecific.texi device.texi files.texi \ + io.texi key.texi memorymgmt.texi message.texi mutex.texi procenv.texi \ + process.texi sched.texi semaphores.texi signal.texi status.texi \ + systemdb.texi thread.texi timer.texi libc.texi libm.texi + +FILES= preface.texi + +info_TEXINFOS = posix_users.texi +posix_users_TEXINFOS = $(FILES) $(GENERATED_FILES) + +process.texi: process.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +procenv.texi: procenv.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +files.texi: files.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +thread.texi: thread.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +signal.texi: signal.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +mutex.texi: mutex.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +cond.texi: cond.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +key.texi: key.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +clock.texi: clock.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +timer.texi: timer.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +sched.texi: sched.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +io.texi: io.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +device.texi: device.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +cspecific.texi: cspecific.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +semaphores.texi: semaphores.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +memorymgmt.texi: memorymgmt.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +message.texi: message.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +cancel.texi: cancel.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +systemdb.texi: systemdb.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +status.texi: status.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +libc.texi: libc.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + + +libm.texi: libm.t + $(BMENU) -p "" \ + -u "Top" \ + -n "" $< + +noinst_SCRIPTS = gen_size_report +EXTRA_DIST = *.t gen_size_report + diff --git a/doc/project.am b/doc/project.am new file mode 100644 index 0000000000..0d1e03c6c6 --- /dev/null +++ b/doc/project.am @@ -0,0 +1,72 @@ +## $Id$ + +SUFFIXES += .t + +## Texinfo support +TEXINFO_TEX = $(top_srcdir)/texinfo/texinfo.tex + +MAINTAINERCLEANFILES += $(PROJECT) $(PROJECT)-[0-9] $(PROJECT)-[0-9][0-9] +MAINTAINERCLEANFILES += $(GENERATED_FILES) + +## DVI support +dvidir = $(pkgdatadir)/dvi +## dvi_projectdir = $(dvidir)/$(PROJECT) + +## PS support +psdir = $(pkgdatadir)/ps +## ps_projectdir = $(psdir)/$(PROJECT) + +## PDF support +SUFFIXES += .pdf + +pdfdir = $(pkgdatadir)/pdf +## pdf_projectdir = $(pdfdir)/$(PROJECT) + +SUFFIXES += .eps + +if EPSTOPDF +.eps.pdf: + $(EPSTOPDF) $< > $@ +endif + +if TEXI2PDF +.texi.pdf: + TEXINPUTS=$(srcdir)/$(top_srcdir)/texinfo:$$TEXINPUTS \ + MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2PDF) $< +endif + +CLEANFILES += $(PROJECT).pdf + +## HTML +SUFFIXES += .html + +html_projectdir = $(htmldir)/$(PROJECT) + +TEXI2WWW_ARGS=\ +-dirfile ../index.html \ +-header $(top_builddir)/rtems_header.html \ +-footer $(top_builddir)/rtems_footer.html \ +-icons ../images + +index.html $(PROJECT)*.html: $(PROJECT).texi \ + $(top_builddir)/rtems_header.html $(top_builddir)/rtems_footer.html + $(TEXI2WWW) $(TEXI2WWW_ARGS) -base $(PROJECT) $< + +MOSTLYCLEANFILES += index.html $(PROJECT)*.html + +## Common installation points +if USE_HTML +html_project_DATA += index.html $(PROJECT)*.html +endif + +if USE_DVI +dvi_DATA += $(PROJECT).dvi +endif + +if USE_PS +ps_DATA += $(PROJECT).ps +endif + +if USE_PDF +pdf_DATA += $(PROJECT).pdf +endif diff --git a/doc/relnotes/Makefile b/doc/relnotes/Makefile deleted file mode 100644 index a82a25fb54..0000000000 --- a/doc/relnotes/Makefile +++ /dev/null @@ -1,53 +0,0 @@ -# -# COPYRIGHT (c) 1988-1999. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. -# -# $Id$ -# - -PROJECT=relnotes - -include ../Make.config - -all: html info ps pdf - -dirs: - $(make-dirs) - -COMMON_FILES=../common/cpright.texi - -FILES=install.texi intro.texi probrep.texi relnotes.texi status.texi - -info: dirs relnotes - cp $(PROJECT) $(wildcard $(PROJECT)-*) $(INFO_INSTALL) - -relnotes: $(FILES) - $(MAKEINFO) $(PROJECT).texi - -dvi: dirs $(PROJECT).dvi -ps: dirs $(PROJECT).ps -pdf: dirs $(PROJECT).pdf - -$(PROJECT).pdf: $(FILES) - $(TEXI2PDF) $(PROJECT).texi - cp $(PROJECT).pdf $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).ps: $(PROJECT).dvi - dvips -o $(PROJECT).ps $(PROJECT).dvi - cp $(PROJECT).ps $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).dvi: $(FILES) - $(TEXI2DVI) $(PROJECT).texi - cp $(PROJECT).dvi $(WWW_INSTALL)/$(PROJECT) - -html: dirs - -mkdir -p $(WWW_INSTALL)/relnotes - $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \ - $(PROJECT).texi - -clean: - rm -f *.o $(PROG) *.txt core *.html $(PROJECT).pdf - rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f relnotes relnotes-* _* - diff --git a/doc/relnotes/Makefile.am b/doc/relnotes/Makefile.am new file mode 100644 index 0000000000..1f9c55b5bc --- /dev/null +++ b/doc/relnotes/Makefile.am @@ -0,0 +1,21 @@ +# +# COPYRIGHT (c) 1988-1999. +# On-Line Applications Research Corporation (OAR). +# All rights reserved. +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign + +PROJECT=relnotes + +include $(top_srcdir)/project.am + +COMMON_FILES=$(top_srcdir)/common/cpright.texi + +FILES=install.texi intro.texi probrep.texi relnotes.texi status.texi + +info_TEXINFOS = relnotes.texi +relnotes_TEXINFOS = $(FILES) $(COMMON_FILES) $(GENERATED_FILES) + diff --git a/doc/rgdb_specs/Makefile b/doc/rgdb_specs/Makefile deleted file mode 100644 index ddd3f70146..0000000000 --- a/doc/rgdb_specs/Makefile +++ /dev/null @@ -1,114 +0,0 @@ -# -# COPYRIGHT (c) 1988-1999. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. -# -# $Id$ -# - -PROJECT=rgdb_specs - -include ../Make.config - -all: html info ps pdf - -dirs: - $(make-dirs) - -COMMON_FILES=../common/cpright.texi ../common/setup.texi - -GENERATED_FILES= \ - intro.texi revision.texi objectives.texi gdbinternals.texi \ - interfacing.texi comm.texi daemon.texi conclusion.texi - -FILES=$(PROJECT).texi $(GENERATED_FILES) - -INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*) - -info: dirs $(PROJECT) - #cp $(wildcard $(PROJECT) $(PROJECT)-*) $(INFO_INSTALL) - # cp $(PROJECT) $(INFO_INSTALL) - -$(PROJECT): $(FILES) - $(MAKEINFO) $(PROJECT).texi - -dvi: dirs $(PROJECT).dvi -ps: dirs $(PROJECT).ps -pdf: dirs $(PROJECT).pdf - -$(PROJECT).pdf: $(FILES) - $(TEXI2PDF) $(PROJECT).texi - cp $(PROJECT).pdf $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).ps: $(PROJECT).dvi - dvips -o $(PROJECT).ps $(PROJECT).dvi - cp $(PROJECT).ps $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).dvi: $(FILES) - $(TEXI2DVI) $(PROJECT).texi - cp $(PROJECT).dvi $(WWW_INSTALL)/$(PROJECT) - -html: dirs $(FILES) - -mkdir -p $(WWW_INSTALL)/$(PROJECT) - cp $(wildcard *.jpg) $(WWW_INSTALL)/$(PROJECT) - $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \ - $(PROJECT).texi - -clean: - rm -f *.o $(PROG) *.txt core $(PROJECT).pdf - rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f $(PROJECT) $(PROJECT)-* $(GENERATED_FILES) - rm -f *.fixed _* - -# -# Process Automatically Generated Files -# - -intro.texi: intro.t Makefile - $(BMENU) -c -p "Top" \ - -u "Top" \ - -n "Document Revision History" ${*}.t - -revision.texi: revision.t Makefile - $(BMENU) -c -p "Introduction" \ - -u "Top" \ - -n "Objectives" ${*}.t - -objectives.texi: objectives.t Makefile - $(BMENU) -c -p "Document Revision History" \ - -u "Top" \ - -n "A Rapid Tour of GDB Internals" ${*}.t - -gdbinternals.texi: gdbinternals.t Makefile - $(BMENU) -c -p "Implied Restrictions" \ - -u "Top" \ - -n "Interfacing GDB with RTEMS as a Target" ${*}.t - -interfacing.texi: interfacing.t Makefile - $(BMENU) -c -p "A Rapid Tour of GDB Internals" \ - -u "Top" \ - -n "Communication with GDB" ${*}.t - -comm.texi: comm.t Makefile - $(BMENU) -c -p "Interfacing GDB with RTEMS as a Target" \ - -u "Top" \ - -n "RTEMS Debugger Server Daemon" ${*}.t - -daemon.texi: daemon.t Makefile - $(BMENU) -c -p "Communication with GDB" \ - -u "Top" \ - -n "Conclusion" ${*}.t - -conclusion.texi: conclusion.t Makefile - $(BMENU) -c -p "Output of a Debug Session with the Prototype" \ - -u "Top" \ - -n "" ${*}.t - -convert: - /usr/bin/gs -dMaxBitmap=300000000 -g4500x5500 -sDEVICE=pdfwrite -q -dNOPAUSE -dSAFER -sOutputFile=garde.pdf -- garde.eps -c -quit - /usr/bin/gs -dMaxBitmap=300000000 -g4500x5500 -sDEVICE=pdfwrite -q -dNOPAUSE -dSAFER -sOutputFile=layers.pdf -- layers.eps -c -quit - /usr/bin/gs -dMaxBitmap=300000000 -g4500x5500 -sDEVICE=pdfwrite -q -dNOPAUSE -dSAFER -sOutputFile=process.pdf -- process.eps -c -quit - /usr/bin/gs -dMaxBitmap=300000000 -g4500x5500 -sDEVICE=pdfwrite -q -dNOPAUSE -dSAFER -sOutputFile=seqinit.pdf -- seqinit.eps -c -quit - /usr/bin/gs -dMaxBitmap=300000000 -g4500x5500 -sDEVICE=pdfwrite -q -dNOPAUSE -dSAFER -sOutputFile=seqbreak.pdf -- seqbreak.eps -c -quit - /usr/bin/gs -dMaxBitmap=300000000 -g4500x5500 -sDEVICE=pdfwrite -q -dNOPAUSE -dSAFER -sOutputFile=seqdetach.pdf -- seqdetach.eps -c -quit - diff --git a/doc/rgdb_specs/Makefile.am b/doc/rgdb_specs/Makefile.am new file mode 100644 index 0000000000..af58592c16 --- /dev/null +++ b/doc/rgdb_specs/Makefile.am @@ -0,0 +1,83 @@ +# +# COPYRIGHT (c) 1988-1999. +# On-Line Applications Research Corporation (OAR). +# All rights reserved. +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign + +PROJECT=rgdb_specs + +include $(top_srcdir)/project.am + +COMMON_FILES=$(top_srcdir)/common/cpright.texi $(top_builddir)/common/setup.texi + +GENERATED_FILES= \ + intro.texi revision.texi objectives.texi gdbinternals.texi \ + interfacing.texi comm.texi daemon.texi conclusion.texi + +FILES= + +info_TEXINFOS = rgdb_specs.texi +rgdb_specs_TEXINFOS = $(FILES) $(COMMON_FILES) $(GENERATED_FILES) + +JPEG_FILES = layers.jpg process.jpg seqinit.jpg seqbreak.jpg seqdetach.jpg + +if USE_HTML +html_project_DATA += $(JPEG_FILES) +endif + +# +# Process Automatically Generated Files +# + +intro.texi: intro.t + $(BMENU) -c -p "Top" \ + -u "Top" \ + -n "Document Revision History" $< + +revision.texi: revision.t + $(BMENU) -c -p "Introduction" \ + -u "Top" \ + -n "Objectives" $< + +objectives.texi: objectives.t + $(BMENU) -c -p "Document Revision History" \ + -u "Top" \ + -n "A Rapid Tour of GDB Internals" $< + +gdbinternals.texi: gdbinternals.t + $(BMENU) -c -p "Implied Restrictions" \ + -u "Top" \ + -n "Interfacing GDB with RTEMS as a Target" $< + +interfacing.texi: interfacing.t + $(BMENU) -c -p "A Rapid Tour of GDB Internals" \ + -u "Top" \ + -n "Communication with GDB" $< + +comm.texi: comm.t + $(BMENU) -c -p "Interfacing GDB with RTEMS as a Target" \ + -u "Top" \ + -n "RTEMS Debugger Server Daemon" $< + +daemon.texi: daemon.t + $(BMENU) -c -p "Communication with GDB" \ + -u "Top" \ + -n "Conclusion" $< + +conclusion.texi: conclusion.t + $(BMENU) -c -p "Output of a Debug Session with the Prototype" \ + -u "Top" \ + -n "" $< + +noinst_DATA = \ +layers.eps layers.pdf \ +process.eps process.pdf \ +seqdetach.eps seqdetach.pdf \ +seqbreak.eps seqbreak.pdf \ +seqinit.eps seqinit.pdf + +EXTRA_DIST = *.t $(noinst_DATA) $(JPEG_FILES) diff --git a/doc/rgdb_specs/garde.eps b/doc/rgdb_specs/garde.eps deleted file mode 100644 index 6d31db2f92..0000000000 --- a/doc/rgdb_specs/garde.eps +++ /dev/null @@ -1,8168 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: garde.eps -%%Creator: fig2dev Version 3.2 Patchlevel 1 -%%CreationDate: Fri Oct 30 13:27:47 1998 -%%For: valette@tri-yann (Eric Valette,,6891,) -%%Orientation: Portrait -%%BoundingBox: 0 0 521 694 -%%Pages: 0 -%%BeginSetup -%%EndSetup -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --27.0 696.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n -1000 12037 m -1000 -1000 l 9697 -1000 l 9697 12037 l cp clip - 0.06299 0.06299 sc -/Times-Roman ff 210.00 scf sf -2115 8595 m -gs 1 -1 sc (CRF) col0 sh gr -/Times-Roman ff 210.00 scf sf -2115 8280 m -gs 1 -1 sc (CRF) col0 sh gr -/Times-Roman ff 210.00 scf sf -2115 7965 m -gs 1 -1 sc (CRF) col0 sh gr -/Times-Bold ff 210.00 scf sf -3600 5445 m -gs 1 -1 sc (Validated By :) col0 sh gr -/Times-Bold ff 210.00 scf sf -540 5850 m -gs 1 -1 sc (Name :) col0 sh gr -/Times-Bold ff 210.00 scf sf -495 6210 m -gs 1 -1 sc (Company : ) col0 sh gr -/Times-Bold ff 210.00 scf sf -495 6570 m -gs 1 -1 sc (Received on :) col0 sh gr -/Times-Bold ff 210.00 scf sf -5985 6210 m -gs 1 -1 sc (Sign : ) col0 sh gr -/Times-Bold ff 210.00 scf sf -3420 6210 m -gs 1 -1 sc (Department :) col0 sh gr -/Times-Bold ff 210.00 scf sf -3420 6615 m -gs 1 -1 sc (Deadline : ) col0 sh gr -/Times-Bold ff 210.00 scf sf -3420 5850 m -gs 1 -1 sc (Position : ) col0 sh gr -/Times-Bold ff 210.00 scf sf -585 4275 m -gs 1 -1 sc (Name :) col0 sh gr -/Times-Bold ff 210.00 scf sf -540 4635 m -gs 1 -1 sc (Company : ) col0 sh gr -/Times-Bold ff 210.00 scf sf -540 4995 m -gs 1 -1 sc (Received on :) col0 sh gr -/Times-Bold ff 210.00 scf sf -6030 4635 m -gs 1 -1 sc (Sign : ) col0 sh gr -/Times-Bold ff 210.00 scf sf -3465 4635 m -gs 1 -1 sc (Department :) col0 sh gr -/Times-Bold ff 210.00 scf sf -3465 5040 m -gs 1 -1 sc (Deadline : ) col0 sh gr -/Times-Bold ff 210.00 scf sf -3465 4275 m -gs 1 -1 sc (Position : ) col0 sh gr -/Times-Bold ff 210.00 scf sf -3645 3870 m -gs 1 -1 sc (Verified By :) col0 sh gr -/Times-Bold ff 210.00 scf sf -3060 2340 m -gs 1 -1 sc (Last Modified on :) col0 sh gr -/Times-Bold ff 210.00 scf sf -6570 2340 m -gs 1 -1 sc (Version : ) col0 sh gr -/Times-Bold ff 210.00 scf sf -540 2340 m -gs 1 -1 sc (Created on : ) col0 sh gr -% Polyline -7.500 slw -n 2970 2025 m 2970 2520 l gs col0 s gr -% Polyline -n 6390 2025 m 6390 2520 l gs col0 s gr -% Polyline -n 450 2520 m 8685 2520 l 8685 2565 l gs col0 s gr -% Polyline -n 450 3555 m 8685 3555 l 8685 3600 l gs col0 s gr -% Polyline -n 450 3015 m 8685 3015 l 8685 3060 l gs col0 s gr -% Polyline -n 450 6750 m 8685 6750 l 8685 6795 l gs col0 s gr -% Polyline -n 450 7200 m 8685 7200 l 8685 7245 l gs col0 s gr -% Polyline -n 450 5490 m 8685 5490 l 8685 5535 l gs col0 s gr -% Polyline -n 450 3915 m 8685 3915 l 8685 3960 l gs col0 s gr -% Polyline -n 450 5175 m 8685 5175 l 8685 5220 l gs col0 s gr -/Times-Bold ff 210.00 scf sf -540 3375 m -gs 1 -1 sc (Document Internal Reference : ) col0 sh gr -/Times-Bold ff 210.00 scf sf -585 2835 m -gs 1 -1 sc (Author : ) col0 sh gr -/Times-Bold ff 270.00 scf sf -3420 7065 m -gs 1 -1 sc (DISTRIBUTION LIST) col0 sh gr -% Polyline -n 1980 7200 m 1980 10305 l gs col0 s gr -% Polyline -n 5895 7200 m 5895 10305 l gs col0 s gr -% Polyline -n 4500 7200 m 4500 10305 l gs col0 s gr -% Polyline -n 3105 7200 m 3105 10305 l gs col0 s gr -% Polyline -n 7515 7200 m 7515 10305 l gs col0 s gr -/Times-Bold ff 210.00 scf sf -495 7515 m -gs 1 -1 sc (Name) col0 sh gr -/Times-Bold ff 210.00 scf sf -5985 7515 m -gs 1 -1 sc (Reason) col0 sh gr -/Times-Bold ff 210.00 scf sf -4590 7515 m -gs 1 -1 sc (Position) col0 sh gr -/Times-Bold ff 210.00 scf sf -2025 7515 m -gs 1 -1 sc (Company) col0 sh gr -/Times-Bold ff 210.00 scf sf -3150 7515 m -gs 1 -1 sc (Department) col0 sh gr -/Times-Bold ff 210.00 scf sf -7560 7515 m -gs 1 -1 sc (Has Copy) col0 sh gr -% Polyline -n 450 7650 m 8685 7650 l 8685 7695 l gs col0 s gr -/Times-Bold ff 270.00 scf sf -4320 450 m -gs 1 -1 sc (Canon Research Centre France S.A) col0 sh gr -/Times-Roman ff 240.00 scf sf -4725 765 m -gs 1 -1 sc (Rue de la touche Lambert) col0 sh gr -/Times-Roman ff 240.00 scf sf -4725 1125 m -gs 1 -1 sc (35515 CESSON SEVIGNE Cedex) col0 sh gr -/Times-Roman ff 240.00 scf sf -4725 1440 m -gs 1 -1 sc (FRANCE) col0 sh gr -% Polyline -% -% Begin Imported EPS File: /home/valette/ev-perso-doc/canon.eps -%%BeginDocument: /home/valette/ev-perso-doc/canon.eps -% -n gs -540 180 tr -5.220486 -5.126582 sc -0 -158 tr --18 -18 tr -sa -n 18 18 m 594 18 l 594 176 l 18 176 l cp clip n -countdictstack -mark -/showpage {} def -% EPS file follows: -%!PS-Adobe-2.0 EPSF-1.2 -%%Creator: tops on IRIS workstation -%%BoundingBox: 18 18 594 176 -%% $Header$ -%%EndComments -%%BeginPreview: 250 68 1 68 -% 0000000000000000000000000000000000000000000000000000000000000019 -% 0000000000000000000000000000000000000000000000000000000000000019 -% 0000000000000000000000000000000000000000000000000000000000000019 -% 0000000000000000000000000000000000000000000000000000000000000019 -% 0000000000000000000000000000000000000000000000000000000000000019 -% 0000000000000000000000000000000000000000000000000000000000000019 -% 0000000000000000000000000000000000000000000000000000000000000019 -% 0000000000000000000000000000000000000000000000000000000000000019 -% 0000000000000000000000000000000000000000000000000000000000000019 -% 0000000000000000000000000000000000000000000000000000000000000019 -% 0000001fffc00000000000000000000000000000000000000000000000000019 -% 000001fffffc0000000000000000000000000000000000000000000000000019 -% 00000fffffff8000000000000000000000000000000000000000000000000019 -% 00003fffffffe000000000000000000000000000000000000000000000000019 -% 0000fffff800780000000000000000000000000003ffc0000000700007c00019 -% 0003ffffe0001c000000018000000f80007e00001ffff8000003fc001ff00019 -% 0007ffff80003e0000003ff000003fe003ff00003ffffe00000ffe007ff80019 -% 000ffffe00003f800001fffc0000fff00fff8000fc0fff80003fff03fffc0019 -% 001ffffc00007fc00003fffe0003fff81fffc001fc0fffc0007fff87fffc0019 -% 003ffff800007fe0001fffff000ffff87fffe007f80fffe001ffff9ffffc0019 -% 007ffff00000fff0007fffff001ffffdffffe007f807fff007ffffe3fffe0019 -% 00ffffe00000ffe003ffffff007ffffe1fffe00ffc07fff81fffffc1fffe0019 -% 00ffffe00001ffc00fffffff80fffffc1fffe01ffc07fff83fffffc1fffe0019 -% 01ffffc00001ff003fffffff8003fffc1fffe03ffc03fffc003fffc1fffe0019 -% 01ffffc00003fe0000003fff8003fffc1fffe03ffc03fffc003fffc1fffe0019 -% 03ffff800003f00000001fffc003fffc1fffe07ffe03fffe003fffc1fffe0019 -% 03ffff800007e00000001fffc003fffc1fffe07ffe01fffe003fffc1fffe0019 -% 03ffff800007c00000000fffc003fffc1fffe07ffe01ffff003fffc1fffe0019 -% 03ffff00000f000000000fffe003fffc1fffe0ffff01ffff003fffc1fffe0019 -% 03ffff00000e000000000fffe003fffc1fffe0ffff01ffff003fffc1fffe0019 -% 07ffff000010000000000fffe003fffc1fffe0ffff00ffff003fffc1fffe0019 -% 07ffff0000000000000007ffe003fffc1fffe0ffff80ffff803fffc1fffe0019 -% 07ffff000000000001ff07fff003fffc1fffe0ffff80ffff803fffc1fffe0019 -% 03ffff000000000007ffc7fff003fffc1ffff0ffff807fff803fffc1fffe0019 -% 03ffff00000000001ffffffff003fffc1fffe0ffffc07fff803fffc1fffe0019 -% 03ffff00000000003ffffffff803fffc1ffff0ffffc07fff803fffc1fffe0019 -% 03ffff00000000007ffffffff803fffc1ffff0ffffc07fff003fffc1fffe0019 -% 03ffff0000000000fffc1ffff803fffc1ffff0ffffe03fff003fffc1fffe0019 -% 03ffff8000000001fff007fffc03fffc1ffff0ffffe03fff003fffc1fffe0019 -% 01ffff8000000001ffe003fffc03fffe1ffff0ffffe03fff003fffc1fffe0019 -% 01ffffc000000001ffe001fffc03fffe1ffff07fffe01fff003fffc1fffe0019 -% 00ffffc000000003ffc001fffc03fffe1ffff07ffff01ffe003fffc1fffe0019 -% 00ffffe000000003ffc000fffe01fffe0ffff03ffff01ffe003fffc1fffe0019 -% 007fffe000000013ff8000fffe01fffe0ffff03ffff00ffc003fffc1fffe0019 -% 007ffff000000033ff8000fffe03fffe0ffff01ffff80ffc003fffc1fffe0019 -% 003ffff800000023ffc000ffff03fffe1ffff01ffff80ff8003fffc1fffe0019 -% 001ffffc00000063ffc000ffff01fffe0ffff00ffff80ff0003fffc1fffe0019 -% 000ffffe00000181ffc001ffff01fffe0ffff007fffc07e0003fffc1fffe0019 -% 0007ffff80000301ffe0013fff81fffe0ffff003fffc0fc0003fffc1fffe0019 -% 0003ffffc0000601fff0033fff81fffe0ffff001fffc0fc0003fffc1fffe0019 -% 0001fffff0001c00fff80e3fff81fffe0ffff000fffe1f00003fffc1fffe0019 -% 00007fffff87f0007ffffc3fffc1fffe0ffff0003ffffe00003fffc1fffe0019 -% 00003fffffffc0001ffff81fffc1fffe0ffff0000ffff800003fffc1fffe0019 -% 00000fffffff00000fffe01fffc1fffe0ffff00003ffe0000000000000000019 -% 000001fffff8000001ff80000000000000000000000000000000000000000019 -% 00000007fc000000000000000000000000000000000000000000000000000019 -% 0000000000000000000000000000000000000000000000000000000000000019 -% 0000000000000000000000000000000000000000000000000000000000000019 -% 0000000000000000000000000000000000000000000000000000000000000019 -% 0000000000000000000000000000000000000000000000000000000000000019 -% 0000000000000000000000000000000000000000000000000000000000000019 -% 0000000000000000000000000000000000000000000000000000000000000019 -% 0000000000000000000000000000000000000000000000000000000000000019 -% 0000000000000000000000000000000000000000000000000000000000000019 -% 0000000000000000000000000000000000000000000000000000000000000019 -% 0000000000000000000000000000000000000000000000000000000000000019 -% 0000000000000000000000000000000000000000000000000000000000000019 -% 0000000000000000000000000000000000000000000000000000000000000019 -%%EndPreview -gsave -18.000000 176.000000 translate -/bwproc { - rgbproc - dup length 3 idiv string 0 3 0 - 5 -1 roll { - add 2 1 roll 1 sub dup 0 eq - { pop 3 idiv 3 -1 roll dup 4 -1 roll dup - 3 1 roll 5 -1 roll put 1 add 3 0 } - { 2 1 roll } ifelse - } forall - pop pop pop -} def -systemdict /colorimage known not { - /colorimage { - pop - pop - /rgbproc exch def - { bwproc } image - } def -} if -576.000000 -158.000000 scale -/picstr 991 string def -991 272 8 -[991 0 0 -272 0 272] -{currentfile picstr readhexstring pop} -image -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffff3f3ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffd7950000000000000000000000 -00000000000000000000000000000000000000000057a5dcfbffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffe10000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000b3ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000002fbaffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffbdce6d7dcefffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffb3000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000057ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffba0000000000000000000000000000 -0000000000000000a5efffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffd70000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000020efffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffff4a0000000000000000 -00000000000000000000000000000000000000000000000000fbffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffcc000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00e1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a00 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000083ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffff7d7efe1ebffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffcc00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000002fffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff0400000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000079ffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000e1ffffffffffffffffffffffffffffffffffc0634a206e95 -9d959db3acbaccc0c6ebe6f3f7f7e1ebfff7ffe6ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffc02f000000000000000000000000000000000000 -00000000baffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -e100000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000efffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffff6e0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000008cffffffffffffffffffffffff -ffffffffff000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffffffff3d00000000000000000000000000000000 -000000000000040000042000000020202f572f4a795795a579a5c6d2e1effbf7fffbff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff7900000000000000000000000000 -0000000000000000000000000000000000000000008cffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff0400000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000efffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000c6ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffff00000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffff2f000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00e1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffba0000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000efffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffff0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ffffffffffffffffffffffffffffff -ffffffffff000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -a500000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000006effffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffff8c0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff0000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ffffffffffffffffffffffffffffff -ffffff0000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000ffffffff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffd20000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000baffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffff630004003d2f -3d123d63838c956363836e04639db3953dacd2d2d7d7bab3d7e1d2dce6ebefeff7e6ef -fff3ebffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -3d00000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000004ffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff9d00000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000063ffffffffffffffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffff -ffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffff7000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000004ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ffffffffffffffffffffffffffffff -ffffffffff000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000baff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff1200000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000f3ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffff0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffffff00000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff -ffffff0000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000ffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffe1000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff0000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000ffffffff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000004affffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff6e00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2f -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000e6ffffffffffffffffffffffffffffffffffffffffffeb000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ff00000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffba -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000020 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000004affffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff7900000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000c0ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff0000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000057ffffffffffffffffffffffffffffffffffffff -ff00000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000dcffffffffffffff -ffffffffffffffffffffffff0000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000ffffffffffffffffffffffffffffffffffffffff00000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffc00000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000002fffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff -ffffff0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000083ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffc0000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000efffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000ffffffffffffff -ffffffffffffffffffffffff0000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff -ff00000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffdc0000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ff00000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000c0ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffff000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000579dffffffffffffffffffffffffffffffefac9520000000000000000000000000 -00000000000000000000fbffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000ffffffffffffffffffffffffffffffffffff000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffff -ffffffffffffffffffffffff0000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffff30000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000004affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff0000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000ffffffffffffffffffffffffffffffffffffffff00000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000acffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffff8c0000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000004baefffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffefb320000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffcc00000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000200420000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffac00 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000a5ffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ff00000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000dcffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff -ff00000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000b3ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000baffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffc000000000000000000000000000000000 -4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffdc000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000002f -ccffffffffffffffffffffffffd2000000000000000000000000000000ffffffffffff -ffffffffffffffffff0000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffb3000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffff -ffffffffffffffffffffffff0000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000acffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffff79000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000003dffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7900 -00000000000000000000000000e1ffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffff30000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000083ffffffffffffffffffffffffffffffffffffffff12000000000000 -000000000000ffffffffffffffffffffffffffff000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000ffffffffffffffffffffffffffffffffffffffffff000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000063efffffffffffba00000000000000000000000000000000 -0000000000008cffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000009dffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000003dffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff0400000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000006effffffffffffffffffffffffffffffffffff -ffffffffffff57000000000000000000004affffffffffffffffffffffffff00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000ffffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ffffffffffffffffffffffff630000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000a5ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffff70000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000d7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffdc000000000000000000 -000000acffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff0000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000057ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffff4a0000000000000000009dffffffffff -ffffffffffff0400000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000f3ffffffffff -ffffffffffffffffffff000000000000000000000000000000000000000000ffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000acffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6300 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000020ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7000000 -000000000000ffffffffffffffffffffff000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000ffffffffffffffffffffffffffffffffffffffffffff0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000ffffffffffffffffffffffffffffffffffff2f000000000000000000000000 -00000000000000009dffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000d7ffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000002fffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffff0400000000000000000000baffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd20000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000b3ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffac0000000000000000ffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffffffff0000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffd70000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000fbffffffffffffffffffffffffffffffffffffff57 -000000000000000000000000000000000000000000ffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000e6ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000063ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 -00000000002fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffff000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000efffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff -ffffffc000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000fbffffffffff -ffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6e00 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffff -ffffffffffffffffffffff00000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00dcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000002fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffb00000000000000000000ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 -000000000000e1ffffffffffffff000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000ffffffffffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000ffffffffffffffffffffffffffff -ffffffffffff0000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000d2 -ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff0000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000d2ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffdc0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffd2000000000000000000ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffff00000000000000ffffffffffffff00000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff3d -00000000000000000000000000000000000000000000ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000e1ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffac00000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000acffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2f00 -00000000000000c0ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ff00000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000d2ffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff0000000000003dffffffffff -ff00000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000d2ffffffffffffffff -ffffffffffffffffffffffffffffff0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000ffffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000ffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000f7ffffffffffffffffffffffffffff -ffffffffffffffffffffff0000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000ffffffffffffffffffffffffffff -ffffffffffff0000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000f3 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffff95000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffff00000000000000002fffffffffffffffffffffffffffffff -fffffffffffffffffffffffb0000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000063ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffffffff200000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff0000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000ffffffff -ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000 -0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000efffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6e0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000d2ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff2f0000000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffe6000000000000ffffffff00000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffff -ffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffff -ffffffffffffffffffffffffffffff0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffff00000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffa500 -0000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000ffffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000ffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffff63000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -f70000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff040000000000ffffffff0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000004affffffffffffffffffffff -ffffffffffffffffffffffffff00000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000e1ffffffffffffffffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffff4a0000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000004affffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffff0000000000000000ffffffffffffffffffffffffffff -ffffffffffffffff830000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000c6ffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffff950000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffff -ffffffffffffffffffffffffffffff0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffac00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -ebffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffff0400000000000000ffff -ffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000ffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffd20000000000ffff00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000ffffffffffffff -ffffffffffffffffffffffffff00000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffff00000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffac0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffc600000000000000ffffffffffffffffffffffffffffffffffffffff0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000e1ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff000000000000e10000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000ffffffffffffffffffffffffffff -ffffffffffffffffffffff000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000e6ffffffffffffffffffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffeb000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000efffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffd200000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000020ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffff -ffffffffff570000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000f3ffffff -fffffffffffffffffffffffffffffffffffffffffff700000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000fffffffffffffffffffffffffffffffffffffff7 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffff04000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000 -00000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000ffffffffffffff -ffffffffffffffffffffffffe600000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000006effffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffef00000000000000ff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000d7ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffff000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffeb0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffff000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffc600000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffff000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000ffffffffffffffffffffffffffffffffffffffef0000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000acffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff6e00000000000000ffffffffffffffffffffffffffffffff0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffd7000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff -fffffffffffffffff30000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000ffffffffffffffffffffffffffffffffffffffff00000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000acffffffffffffffffffffffffffffffffffffffffffffff -ffffffffff9d0000000000000000000000000000000000000000000000000000000000 -008cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000fffffffffffffffffffffffffffffffffffffffb -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000d2ffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffff -ffffd20000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000dcffffffffffff -ffffffffffffffffffffffffffffffffffffffeb000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000fffffffffffffffffffffffffffffffffffffffb0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -00000000000000000000000000f3ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffe6000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000acffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 -ffffffffffffffffffffffffff00000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000efffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffdc00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffff -ffffffffffffffffd20000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff0000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000ffffffffffffffffffffffffffffffffffffffd700000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffac000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000079 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffff00000000000000ffffffffffffffffffffffff0000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffc600000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff -ffffffffffffd200000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffd7000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffba00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000083ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffd20000000000000000000000000000000000000000000000000000000000000000 -0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000ffffffffffffffffffffffffffffffffffffffb30000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000063ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffff00000000000057ffffffffffffffffffffff -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000acffffffffffffffffff -ffffffffffffffffffffffffffffffffffc60000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000ffffffffffffffffffffffffffffffffffffffe100000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffff00000000000000000000000000000000000000000000 -000000000000000000000000008cffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffff -ffffffffffffffffc60000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000003dffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffeb000000000000 -e1ffffffffffffffffffff000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff0000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00ffffffffffffffffffffffffffffffffffffffffffffffffffffffcc000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000ffffffffffffffffffffffffff -ffffffffffffc600000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffff00000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffd7000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffa5000000000000ffffffffffffffffffff00000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000003dffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffd2000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffffffc00000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffff9d0000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000057ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000ffffffffffffffffffffffffffffffffffffffeb00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd7 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffff3d000000000000fffffffffffffffff30000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000f7ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000003dffffffffffffffffffffffff -ffffffffffffffffffffffffffffffc000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffcc000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -0000000000000000000000000095ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000ffffffffffffffffffffffffff -ffffffffffffdc00000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffffffffffffffd20000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffff12000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffac0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ffffffffffffffffffffffffffffff -ffffffffd2000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffff000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffffffc60000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000f7ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff0000000000ffffffffffffffff95000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff2000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffac0000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000ffffffff -ffffffffffffffffffffffffffffffc000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffac000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000012ffffffffffffffffffffffffffffffffffffffffffffffffffffffffeb000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffc0000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -6effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff4a00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffff9d000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000ffffffffffffffffffffffffffffffffffffff9d0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffff0000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000f3ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffff00000000000000000000000000000000000000000000000000000000 -00000000000000000000000000f3ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ffffffffffffffffffffffffffffff -ffffffffac000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff0000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff57000000ffff -ffffffffffff0000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffff000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000efffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff9d00000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff -ffffac0000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000ffffffff -ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff0000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000ffffffff -ffffffffffffffffffffffffffffff9500000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffb3000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000ffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffff000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -9500000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffa5000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -008cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffef000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000ffffffffffffffffffffffffffffffffffffff8c0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000ebffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff0000ffffffffffffffff12000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffff630000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffff950000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000ffffffffffffffffffffffffffffffffffffff8300000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000095ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffef00000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff -ffff950000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000ffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffff000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffac00ffffffff -ffffffffac000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000c0ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000d2ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffff79000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff -9d00000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000ffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff0000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000083ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ef00000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffff79000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffb00000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff00ffffffffffffffffff00000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffff00000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5700 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffff -ffffffffffffffffffffffa50000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffff70000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000ffffffffffffffffffffffffffffffffffffff4a00000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000acffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffd20000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff3d00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffff8c000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff -ffffffffff000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000012ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ff3d000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000d7ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffeb000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff -5700000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb00 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000008cffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffff120000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000ffffffffffffffffffffffffffffffffffffff6e00 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffff -ffffffffffffffffffffffffffffff0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff0000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe100 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffff -ffffffffffffffffffffff200000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff0000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffff2f00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -e1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffdc00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffff12000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffd7000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000004ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffa5000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffe60000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffff00000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00ffffffffffffffffffffffffffffffffffffff040000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ff57000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff6300 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffe10000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000ffffffffffffffffffffffffffffffffffffff2f00 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffff000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000020ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffff04000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffffffffff0000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000083ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff0000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd2000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffff0000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffeb0000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000063ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffff00000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000efffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffff00000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffff04000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00fffffffffffffffffffffffffffffffffffffffffffb000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000020 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffba000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00ffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffff8c0000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffff000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffff1200000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffb300000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffff00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000003dffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -d700000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000012ffffffffffffffffffffffffffffffffffffff000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffff0000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000083ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff0000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb30000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffff00000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffff000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff0000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000f3ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000003dffffffffffffffffffffffffffff -ffffffffff000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffffffc6000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000012ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffac0000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffff00000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -b3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff0000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000004affffff -ffffffffffffffffffffffffffffffff04000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff9d000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000ffffffffffffffffffffffffffffffffffffff000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffba0000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffac -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000ffffffffffffffffffffffffffffffffffffff0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000ffffffffffffffffffffffffffff -ffffffffffff0000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff4a00000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000ffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff6e00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000ffffffffffffffffffffffffffff -ffffffffff000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000008cffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000012ffffffffffffffffffffffffffffffff -ffffff0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffd2000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000d2ffffffffffffffffffffffffffff -ffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff7900000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000f3ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffff4a000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -57ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffe100000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ff00000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000063ffffffffff -ffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000ffffffffffffffffffffffffffffffffffffff0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000ffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffff8c0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000004ffffffffffffffffffffffffffffffffffffff0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000ffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffff2f0000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000e1ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff0000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000acffffffffffffffffffffffffffffffffffffff00000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffff0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -9d00000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffff6e000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000004ffffffffffffffffffffffffffffffff -ffffff0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000012 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000f3ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000063ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000009dffffffffffffffffffffffffffffffffffff -ff00000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffff -ffffffffffffffffffffffffffd7000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000083ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffff000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000d2ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ff79000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000020ffffffffff -ffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffff00000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00ebffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffff000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000acffffffffffffff -ffffffffffffffffffffffff0000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffff0000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff6e00000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000063ffffffffffffffffffffffffffffffffffffff00000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffff200000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000ffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000095ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffff950000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000e1ffffffffffffffffffffffffffffffffffffff000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff120000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000004affffffffffffffffffffffffffffffffffff -ff00000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000057ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff0400000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000003dffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000ffffffffffffff -ffffffffffffffffffffff000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000003dffffffffffffff -ffffffffffffffffffffffff0000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff2000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000e1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000ffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000ffffffffffffffffffffffffffffffffffff00000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000d2ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000079ffffffffffffffffffffffffffffffffffffff000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffc00000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffff9d0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000079ffffffffffffffffffffffffffffffffffffff00 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffc000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000002fffffffffffff -ffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffff9d0000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000079ffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ff00000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000ccffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000a5ffffffffffffffffffffffffffffffffff2f000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000d2ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000ffffffffffffffffffffffffffffffffff00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000d7ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0063ffffffffffffffffffffffffffffffffffffff0000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff0000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000b3ffffffffffffffffff950000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff0000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000ffffffffffffffffffffffffffffffffff0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000079ffffffffffffffffffffffffffffffffffffff000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffc0000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000002fffffffffffffffffffffff -ffffffffffff0000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffef0000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000079ffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1200 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -006effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff7900000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000d2ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000ffffffffffffffffffffffffffff -ffffffffffff0000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000004a -ffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000006effffffffffffffffffffffffffffff -ffffffffffffffffffffffffff00000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000e6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff0000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000079 -ffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff0000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000fbffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000004affffffffffffffffffffffffffffffffd200000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000006effffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000baffffffffffffffffffffffffffffffffffffff0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000ffffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000004affffffffffffffffffffffffff -ffffff3d00000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000d7ffffffffffffffffffffffffff -ffffffffffff0000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000063ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000002fffff -ffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffff63000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000d2ffff -ffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffff00000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffff -ffffffffffffffffffffffffffffff0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000004affffffffffffffffffffffffffffffff00000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000d7ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000ccffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffac0000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000ffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffff000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffff00000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000009dffffffffffffffffffffffffffffff -ff00000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000a5ffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000006effffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000006e0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000c6ffffffff -ffffffffffffffffffffffff0000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffb3000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffff000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000083ffffffff -ffffffffffffffffffffffffffffff0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000f7ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000a5ffc60000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000ffffffffffffff -ffffffffffffffffffffffffff00000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000d7ffffffffffffffffffffffffffffffff000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000009dffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffff00000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000c0ffffffffffffffffffffffffffffffffffffff000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff6300000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000ffffff00000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffff000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000009dffffffffffffffffffffffffffffffff00 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ebffffffffffffffffffffffffffffffffff -ffff000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000ffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffff300000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000b3ffffffff0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000006effffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -fffffffff3000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000ebffffffffffff -ffffffffffffffffffffffffff00000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffff000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffff040000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000ffffff -ffffff0000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000d7ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffff000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000009dffffffffffffffffffffffffffffffff0000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000004ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff2f00000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffff000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000f3ffffffffffffffffffffffffffffffffffffff0000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffff00000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffdc0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000f7ffffffffffffb3000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff0000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000ffffffffffffffffffffffffffffffffffffffff00000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000083ffffffffffffffffffffffffffffffff000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000f7ffffffffffffffffffffffffffffffffffffff -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffd20000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffba00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000efffffffffffffffff0000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000008cffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffff000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000ffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000fbffffffffffffffff -ffffffffffffffffffffff000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffdc0000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000efffffffffffffffffffff -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000009dffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffff -ffffffffffffffffff0000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000c0ffffffffffffffffffffffffffffffff00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff9d00000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff0000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000ffffffffffffffffffffffffffffffffffffffff00000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffff12000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffdc00000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000003dffff -ffffffffffffffffffffff000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffff00000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000c6ffffffffffffffffffffffffffffffff0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000baffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffba0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000c6ffffffffffffffffffffffffffff9d00000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000ffffffffffffffffffffffffffffffffffffffff00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000d7ffffffffffffffffffff -ffffffffffff0000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffff -ffffffffffffffffff0000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffff950000000000000000000000000000000000000000000000 -0000000000000000000000000063f3ffffffffffffffffffffffffffffffffff000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000008cffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000ffffffffffffffffffffffffff -ffffffffffffff00000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -dcffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffef00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffff00000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffff6e0000000000000000 -00000000000000000000000000000000000000003debffffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffff000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000e6ffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000095ffffffffffffffff -ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000ffffffffffffffffffffffffffffffffffffffff00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffba63000000000000000000000000000000002fa5ebffffffffffffff -ffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000efffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000ffffffffffffffffffffffffff -ffffffffffffff00000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -04ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff570000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ffffffffffffffffffffffffffffff -ffffffffff000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffff0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffd200000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffff000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000057ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff0000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffff000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000f3ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff0000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000ffffffff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffff3d0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000a5ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000020ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000006effffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000ffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffff20fbffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ffffffffffffffffffffffffffffff -ffffd20000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000b3ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ffffffffffffffffffffffffffffff -ffffffffff000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000009dff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffc60000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffeb0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff -ffffff0000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000ffffffff -ffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff0000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000ffffffff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000009dffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffff0000009dffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffff000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000d7ffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ff00000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000ffffffffffffffffffffffffffffffffffff00000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000006effffffffffffffffffffffffffff -ffffffffffffffffffffffffffff6e0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000095ffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffb300000000ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffff00000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff0000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000ffffffffffffffffffffffffffffffffffffffff00000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff -ff00000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000ffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff -ffffff0000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000008cffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffff000000000012ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff -ff00000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffff0000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ff00000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ff00000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000012ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffff000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffc0000000000000baffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000012ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffff -ffffffffffffffffffffffff0000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000ffffffffffffffffffffffffffffffffffff040000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffba0000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff0000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000ffffffffffffffffffffffffffffffffffffffff00000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffff00000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000dc -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffba -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000ccffffffffffff -ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000083ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff -ff00000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000008cffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff0400000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffac000000000000000057ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffff -ffffffffffffffffffffff000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffff -ffffffffffffffffffffffff0000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000ccffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -6e00000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffff00000000000000000000e6ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeb000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000ffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffff00000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff0000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000d2ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffef0000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffac00000000000000000000 -00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffff00000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000ffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000ffffffffffffffffffffffffffffffffffffff0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000003dffffffffffffffffff -ffffffffffffffffffffffffffffffffffffff4a000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000d7ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ff000000000000000000000000baffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffffcc00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000008cffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000ccffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000095ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff2f00000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff0000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000d2ffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 -0000003dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffb3000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000dcffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff0000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffd2000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000ccffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -6e000000000000000000000000000000ebffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffff120000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000008cff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00c6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff200000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff0000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000ffffffffffffffffffffffffffff -ffffffffffff0000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -d2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff0000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000f3ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffcc0000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000002fffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff830000000000000000000000 -0000000000008cffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000009dffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000ffffffffffffffffffffffffffffffffffffffffff00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000f3ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff8300000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000ffffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000ffffffffffffffffffffffffffff -ffffffffffffff04000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000079ffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff6e00000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000ffffffffffffffffffffffffffff -ffffffffffff0000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000ef -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffff2f0000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000c0ffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffff00000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ccffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000c0ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffff -ffffffffffffffffffffffffffffff0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000ffffffffffffffffffffffffffffffffffffffffffff0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffff000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000ffffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000ffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffdc00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83 -00000000000000000000000000000000000000000000ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffff00000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffffffffb300000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffd200000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000fbffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffff00000000000000000000000000000000000000000000006e -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffff040000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffff -ffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000e1ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000ebffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffff -ffffffffffffffffffffffffffffff0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff0000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000e6ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffff57000000000000000000000000 -000000000000000000000000e6ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000ffffffffffffff -ffffffffffffffffffffffffff00000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffff000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffff00000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffc00000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffff00000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000e1ffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffff000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffff0000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000057ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffff20000000000000000000000000000000000000000000000000 -0000acffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffcc0000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000ffffffffffffff -ffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -6effffffffffffffffffffffffffffffffffffffffffffffffffffffff2f0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000ffffffffffffff -ffffffffffffffffffffffffff00000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffff000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000057ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffff000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000ffffffffffffffffffffffffffffffffffffffffffffffffe1000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffff000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffff000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffc0000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2f00 -00000000000000000000000000000000000000000000000000000000ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000006effffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff0000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000ffffffffffffffffffffffffffffffffffffffff00000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff -ffffffffff000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000fffffffffffffffffffffffffffffffffffffff7 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000d7ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -0000000000e1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffff79000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffff000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff3d00000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffff20000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffff -ffffffffffffffffff0000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000f3ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff0000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000ffffffffffffffffffffffffffffffffffffffff00000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000c6ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 -0000000000000000000000000000000000000000000000000000000000004affffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ff00000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000004ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffef00000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffff -ffffffff57000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffff00000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff2000000000000000000000000000000000000000000000000000 -0000000000000000ebffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff0000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffe60000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000ffffffffffffffffffffffffffffffffffffffff00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffff -ffffffffffffffffff0000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffff300000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000fbffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000 -000000000000000000000000000000000000000000ffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffff4a000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000ffffffffffffffffffffffffff -ffffffffffffff00000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffd200000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000095ffffffffffffffffffffffffffffffffffffffffffffffffffffffff2f -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffff00000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000ffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000000000000000000000000000000000000000000000000000000000d2ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffe11200000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffff04000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000ffffffffffffffffffffffffffffffffffffffff00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffd70000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000fbffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff0000000000000000000000000000000000000000000000000000 -0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff5700000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000e1ffff -ffffffffffffffffffffffffffffffffff120000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000008cffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000ffffffffffffffffffffffffff -ffffffffffffff00000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffff200000000000000000000000000000 -000000000000000000000000000000000000000000000063ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000ffffffffffffffffffffffffffffffffffffffffff790000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ffffffffffffffffffffffffffffff -fffffffff3000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff9d00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffff000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -fffffffffffffffffffffffffffffffffffb0000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffeb0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000063ffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffb00000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffffffffff00000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000ffffffff -ffffffffffffffffffffffffffffff6e00000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000e6ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffff00000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffef000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffb200000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000a5ffffffffff -ffffffffffffffffffffffffffffffffffffffef000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000ffffffffffffffffffffffffffffffffffffff000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffff700000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000095ffffffffffffffffffffffffffffffff20000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ffffffffffffffffffffffffffffff -ffffffffd2000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000c6ffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2f00 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffba0000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000c6ffffffffffffffffffffffffffffffff -ffff000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000063ffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff7900000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000ffffffffffffffffffffffffff -ffffffffff000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000ffffffff -ffffffffffffffffffffffffffffff4a00000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ebffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffff9d0000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffff3d000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffff -ffffffffffffffffffffffffff00000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -0000000000000000000057ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffff79000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffe10000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000ffffffffffffffffffffffffffffffffffffff000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000079ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffdc00000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000063ffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000095ffffffffffffffffffffffffffffffff000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -000000000000000000000000000000000000000000ffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000a5ffffffffffffffffffffffffffffffffffffffffffff8c00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff -ffff000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000ffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffef0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -e600000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000dcffffffffffffffffffffffffffff9500 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffe100000000000000 -0000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffff00000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000c6ffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000002fffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff3d000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffff4a000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000009dffffffff -ffffffffffffffff120000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffa5000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffe60000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffff00000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000efffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9d0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000009dffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000e6fffffffffffffff7630000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000020ffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -000000000000000000000000000000000000dcffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff0000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc00 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000d7ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000ffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000f3ff200000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000acffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffff8c0000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffff8c00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffff570000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000ffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000004affffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff4a00000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffac000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000ffffffff0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffff000000000000000000000000000000000000000000000000000000000000 -0000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffb00 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff0400000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffff3d000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000008cffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffff00000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffff000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffe6000000000000000000000000000000000000 -00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff2f00000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffff000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000020ffffffffffffffffff4a000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000d2ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffe100000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000ffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffff00000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffc60000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000d2ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffff -ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffac0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000dc9d00000000000000002f12 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -004affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000ffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffff7000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffcc000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000004affffffffffffffffffff6e00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffff830000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000ff -ffff3d0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffd70000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff0000000000000000000000000000000000000000000000000000000000 -000000000000000000000000c6ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffff3d000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff630000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffff -ffffffffffffffff200000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffa50000000000000000000000000000000000 -0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffc000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffff000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000efffffffffff1200000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff7900000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000 -00000000000000000000000000000000000000000000a5ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffba0000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffff0000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff790000000000 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffd70000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000004ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000ffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -0000000000000000000000000000000000000000000000000000000000000000a5ffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd200000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000baffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffb000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000fbffffffffffffffffffffffffffffffffd700 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff7900000000000000000000000000000000000000000000000000000000 -00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9500000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000ffffffff -ffffffffffff0000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff0000000000000000000000000000000000000000000000000000000000 -000000000000004affffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff0000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -9d00000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffff -ffffffffffffffffffffffcc0000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000c0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff8300000000000000000000000000000000 -000000000000000000000000efffffffffffffffffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffe100000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffff00000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -00000000000000000000000000000000002fffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffff83000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffff00000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000f3ffffffffffffffffffffffffffffffffffffffffff6e00000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb300000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffff -ffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffe60000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffc0000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000b3ffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -00000000000000000000000000000000000000000000000000000020ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -e100000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000e1ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffcc000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffff -ffff000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000f7ffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffa5000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000002fffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000dcffffffffffffff -ffffffffffffffffff9d00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffff000000000000000000000000000000000000000000000000000000000000 -000057ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000004ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff7900000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffe60000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000002fffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffff040000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffff00000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffff000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000079ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -000000000000000000000000a5ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff4a00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffff300000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -0000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffba000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000dcffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000e1ffffffffffffffffffffffffffffffffffffffffa5 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffff200000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 -00000000000000000000000000000000000000000000efffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffff8c0000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffac0000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000ccffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff9d00000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffe6000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffff -ffffffffffffffffffffffffe100000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000020ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6e0000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffff000000000000000000000000000000000000000000000000000000efffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffd700000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000004ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff9500000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff0400000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffff300000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffff00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000083ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffff9d0000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffffffffffffffffff8c000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffc000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000e6ffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff120000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000079ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffff12000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 -000000000000000000000000000000000000000000000000ffffffffffffffffffffff -ffffffffffd20000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000d7ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff2f00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000083ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff6e00000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000d7ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffeb00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000020ffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffff3d000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000d2ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffeb0000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffba0000000000000000000000000000000000000000000000 -002fffffffffffffffffffffffffff0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffff000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffff0000000000000000000000000000000000000000000000ffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffcc0000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffdc00000000000000000000000000000000000000000000000000 -0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffba00000000000000000000000000 -00000000000000000000000000000000000000000000000000000000f3ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff1200000000000000000000 -000000000000000000000000000000ffffffffffffffffff0000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000e1ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffe60000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000003dffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffeb00000000000000000000000000000000000000 -009dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffff120000000000000000000000000000000000000000000000000000000000000000 -00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffff2f000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff57 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffff000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000baffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3d00000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000baffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffd700000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000dcffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffff630000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000e6ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 -0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffdc00000000000000000000000000000000000000 -00000000000000000000000000000000dcffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -00000000000000000000000000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff0000000000000000000000000000000000000000000000 -00000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffff000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000008cffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffff9d000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000063ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff30000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffb0000000000000000000000000000000000ffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe63d00000000 -00000000000000000000000000000000000000000000000063ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffff63000000000000000000000000000000000000000000 -0000000000000000d2ffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffff700000000000000000000 -0000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff1200000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffa50000000000000000000000000000 -000000000000000000000000000000000000000000000000008cffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff570000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000008cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000020ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000acffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffb6e00000000000000000000000000000000000000000083ffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffdc0000000000000000 -0000000000000000000000000000000000a5ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff2000000000000000000000000000000000000000000000000000000000a5ffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffff000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9500 -0000000000000000000000000000000000000000000000000000000000000000000000 -a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffff00000000000000000000000000000000000000000000000000 -0000000000000000000000000000acffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffff6e000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000002fffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffb30000000000000000 -0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffe18c3d000000000000 -000457baffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffff78c00000000000000000000000000000000000020ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffff790000000000000000000000000000000000 -000000000000ccffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffff000000000000000000000000000000000000000000000000 -00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000e1ffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000003dffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffff8300000000000000000000006effffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffc62f00000000000000000004a5ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000 -00000000000000000000000000006effffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000004affffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff7900000000000000000000 -0000000000000000000000000000000000000012ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -cc000000000000000000000000000000000000000000000000000000000000000000ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffc000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffef000000000000000000000000ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffb6e00000000000020638cebffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffc600000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000e6 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffff70000000000000000000000000000000000000000000000000000f7ffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffff630000000000000000000000000000000000000000 -0000000000000000d2ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00008cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffff79000000000000000000000000c6ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffff6e0000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000baffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffff790000000000000000000000000000000000 -00004affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffb57000000000000 -0000000000000000000000000000000000b3ffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffb0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000dcffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6000000000000 -0000000000000020ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffff790000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000009dffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc04a00 -0000000000000000004ad2ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffeb57000000000000000000000000000000004affffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffb300000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000008cffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -dc00000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffff3200000000000000000000000000000000000 -000000000000000000000000000000000000000000004ae1ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffba4a1200000000005795d7ff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000b3ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffff9d0000000000000000000000000000000000b3ffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0120000 -00000000000000000000000000000000000000000000000000000000008cdcffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff0000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000009dffffffffffffffff -ffffffffffffffffffffffffffeb200000000000000000000000000000000000000000 -4affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffb3200000000000000000000000000000000000001257 -a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffeb00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000002fa54a0412000000000000000000000000000000000000 -0000000000000000006effffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000057ffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffe600000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000083ffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffe1000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00d7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ff4a000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000e6ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffa50000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000003dffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffe100000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000dcffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff9500000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -ccffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffff950000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000ccffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff74a -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000004d2ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffffffffff3a5000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000063ffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0200000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000a5ffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffff76e000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -004accffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffefa5040000000000 -0000000000000000000000000000000000000000000000000000000000000000000000 -0000000000002095f3ffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffe6d2a56e0000000000000000000000000000000000000000 -000000000000004a799dc6e6fbffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -baffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffff -grestore - -cleartomark -countdictstack exch sub { end } repeat -restore grestore -% -% End Imported PIC File: /home/valette/ev-perso-doc/canon.eps -%%EndDocument -% -% Polyline -n 450 1530 m 8685 1530 l 8685 1575 l gs col0 s gr -% Polyline -n 450 2025 m 8685 2025 l 8685 2070 l gs col0 s gr -% Polyline -n 2970 1530 m 2970 2025 l gs col0 s gr -/Times-Bold ff 210.00 scf sf -585 1845 m -gs 1 -1 sc (Project : ) col0 sh gr -/Times-Bold ff 210.00 scf sf -3060 1845 m -gs 1 -1 sc (Document title : ) col0 sh gr -% Polyline -n 450 10305 m 8685 10305 l 8685 10350 l gs col0 s gr -% Polyline -n 450 45 m 8685 45 l 8685 11025 l 450 11025 l cp gs col0 s gr -/Times-Roman ff 210.00 scf sf -4500 4275 m -gs 1 -1 sc (Tools project Leader) col0 sh gr -/Times-Roman ff 210.00 scf sf -4770 4635 m -gs 1 -1 sc (TA) col0 sh gr -/Times-Roman ff 210.00 scf sf -1350 4275 m -gs 1 -1 sc (E. Valette) col0 sh gr -/Times-Roman ff 210.00 scf sf -4725 6210 m -gs 1 -1 sc (TA) col0 sh gr -/Times-Roman ff 210.00 scf sf -1620 6210 m -gs 1 -1 sc (CRF) col0 sh gr -/Times-Roman ff 210.00 scf sf -1305 5850 m -gs 1 -1 sc (E. Valette) col0 sh gr -/Times-Roman ff 210.00 scf sf -4410 5850 m -gs 1 -1 sc (Tools project Leader) col0 sh gr -/Times-Roman ff 210.00 scf sf -1620 4635 m -gs 1 -1 sc (CRF) col0 sh gr -/Times-Roman ff 210.00 scf sf -495 7965 m -gs 1 -1 sc (H. Dias) col0 sh gr -/Times-Roman ff 210.00 scf sf -495 8280 m -gs 1 -1 sc (E. Valette) col0 sh gr -/Times-Roman ff 210.00 scf sf -495 8595 m -gs 1 -1 sc (E. Raguet) col0 sh gr -/Times-Roman ff 210.00 scf sf -3240 7965 m -gs 1 -1 sc (TA) col0 sh gr -/Times-Roman ff 210.00 scf sf -3240 8595 m -gs 1 -1 sc (TA) col0 sh gr -/Times-Roman ff 210.00 scf sf -6030 8595 m -gs 1 -1 sc (Author) col0 sh gr -/Times-Roman ff 210.00 scf sf -3240 8280 m -gs 1 -1 sc (TA) col0 sh gr -/Times-Roman ff 210.00 scf sf -4590 8280 m -gs 1 -1 sc (Project Leader) col0 sh gr -/Times-Roman ff 210.00 scf sf -4590 7965 m -gs 1 -1 sc (Manager) col0 sh gr -/Times-Roman ff 210.00 scf sf -4590 8595 m -gs 1 -1 sc (Engineer) col0 sh gr -/Times-Roman ff 210.00 scf sf -6030 8280 m -gs 1 -1 sc (Approval) col0 sh gr -/Times-Roman ff 210.00 scf sf -7650 7965 m -gs 1 -1 sc (1 \(Paper\)) col0 sh gr -/Times-Roman ff 210.00 scf sf -7650 8280 m -gs 1 -1 sc (2 \(Paper\)) col0 sh gr -/Times-Roman ff 210.00 scf sf -7650 8595 m -gs 1 -1 sc (3 \(Paper\)) col0 sh gr -/Times-Roman ff 210.00 scf sf -3690 3375 m -gs 1 -1 sc (98.TA.0373.M.ER) col0 sh gr -/Times-Roman ff 210.00 scf sf -6030 7965 m -gs 1 -1 sc (Info) col0 sh gr -/Times-Roman ff 270.00 scf sf -1530 1845 m -gs 1 -1 sc (TOOLS ) col0 sh gr -/Times-Roman ff 210.00 scf sf -1800 2340 m -gs 1 -1 sc (29/09/98) col0 sh gr -/Times-Roman ff 210.00 scf sf -1665 2835 m -gs 1 -1 sc (Emmanuel RAGUET, Eric VALETTE CRF TA Dept. ) col0 sh gr -/Times-Roman ff 210.00 scf sf -7470 2340 m -gs 1 -1 sc (2.0) col0 sh gr -/Times-Roman ff 210.00 scf sf -4905 2340 m -gs 1 -1 sc (02/11/98) col0 sh gr -/Times-Roman ff 210.00 scf sf -4725 1845 m -gs 1 -1 sc (RTEMS Remote Debugger Server Specs) col0 sh gr -$F2psEnd -rs diff --git a/doc/rgdb_specs/garde.pdf b/doc/rgdb_specs/garde.pdf Binary files differdeleted file mode 100644 index 62df59d4e5..0000000000 --- a/doc/rgdb_specs/garde.pdf +++ /dev/null diff --git a/doc/rgdb_specs/layers.pdf b/doc/rgdb_specs/layers.pdf Binary files differdeleted file mode 100644 index 84a3cba9d8..0000000000 --- a/doc/rgdb_specs/layers.pdf +++ /dev/null diff --git a/doc/rgdb_specs/process.pdf b/doc/rgdb_specs/process.pdf Binary files differdeleted file mode 100644 index 7cba5dc3f9..0000000000 --- a/doc/rgdb_specs/process.pdf +++ /dev/null diff --git a/doc/rgdb_specs/seqbreak.pdf b/doc/rgdb_specs/seqbreak.pdf Binary files differdeleted file mode 100644 index 80e99eab5d..0000000000 --- a/doc/rgdb_specs/seqbreak.pdf +++ /dev/null diff --git a/doc/rgdb_specs/seqdetach.pdf b/doc/rgdb_specs/seqdetach.pdf Binary files differdeleted file mode 100644 index ed108a1913..0000000000 --- a/doc/rgdb_specs/seqdetach.pdf +++ /dev/null diff --git a/doc/rgdb_specs/seqinit.pdf b/doc/rgdb_specs/seqinit.pdf Binary files differdeleted file mode 100644 index 03604fce0b..0000000000 --- a/doc/rgdb_specs/seqinit.pdf +++ /dev/null diff --git a/doc/rtems_footer.html b/doc/rtems_footer.html.in index 07179683c9..07179683c9 100644 --- a/doc/rtems_footer.html +++ b/doc/rtems_footer.html.in diff --git a/doc/rtems_gdb/Makefile b/doc/rtems_gdb/Makefile deleted file mode 100644 index db911b4d86..0000000000 --- a/doc/rtems_gdb/Makefile +++ /dev/null @@ -1,94 +0,0 @@ -# -# COPYRIGHT (c) 1988-1999. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. -# -# $Id$ -# - -PROJECT=rtems_gdb - -include ../Make.config - -all: html info ps pdf - -dirs: - $(make-dirs) - -COMMON_FILES=../common/cpright.texi ../common/setup.texi - -GENERATED_FILES= \ - intro.texi swarch.texi started.texi commands.texi trouble.texi example.texi - -FILES=$(PROJECT).texi $(GENERATED_FILES) - -INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*) - -info: dirs $(PROJECT) - #cp $(wildcard $(PROJECT) $(PROJECT)-*) $(INFO_INSTALL) - # cp $(PROJECT) $(INFO_INSTALL) - -$(PROJECT): $(FILES) - $(MAKEINFO) $(PROJECT).texi - -dvi: dirs $(PROJECT).dvi -ps: dirs $(PROJECT).ps -pdf: dirs $(PROJECT).pdf - -$(PROJECT).pdf: $(FILES) - $(TEXI2PDF) $(PROJECT).texi - cp $(PROJECT).pdf $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).ps: $(PROJECT).dvi - dvips -o $(PROJECT).ps $(PROJECT).dvi - cp $(PROJECT).ps $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).dvi: $(FILES) - $(TEXI2DVI) $(PROJECT).texi - cp $(PROJECT).dvi $(WWW_INSTALL)/$(PROJECT) - -html: dirs $(FILES) - -mkdir -p $(WWW_INSTALL)/$(PROJECT) - $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \ - $(PROJECT).texi - -clean: - rm -f *.o $(PROG) *.txt core $(PROJECT).pdf - rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f $(PROJECT) $(PROJECT)-* $(GENERATED_FILES) - rm -f *.fixed _* network.t - -# -# Process Automatically Generated Files -# - -intro.texi: intro.t Makefile - $(BMENU) -p "Top" \ - -u "Top" \ - -n "Software Architecture" ${*}.t - -swarch.texi: swarch.t Makefile - $(BMENU) -p "Introduction" \ - -u "Top" \ - -n "Getting Started" ${*}.t - -started.texi: started.t Makefile - $(BMENU) -p "Software Architecture" \ - -u "Top" \ - -n "Commands" ${*}.t - -commands.texi: commands.t Makefile - $(BMENU) -p "Getting Started Attaching To The System" \ - -u "Top" \ - -n "Troubleshooting" ${*}.t - -trouble.texi: trouble.t Makefile - $(BMENU) -p "Commands Thread control" \ - -u "Top" \ - -n "Debug Session Example" ${*}.t - -example.texi: example.t Makefile - $(BMENU) -p "Troubleshooting Debug server not present" \ - -u "Top" \ - -n "" ${*}.t - diff --git a/doc/rtems_gdb/Makefile.am b/doc/rtems_gdb/Makefile.am new file mode 100644 index 0000000000..78c7c9feaf --- /dev/null +++ b/doc/rtems_gdb/Makefile.am @@ -0,0 +1,59 @@ +# +# COPYRIGHT (c) 1988-1999. +# On-Line Applications Research Corporation (OAR). +# All rights reserved. +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign + +PROJECT=rtems_gdb + +include $(top_srcdir)/project.am + +COMMON_FILES=$(top_srcdir)/common/cpright.texi $(top_builddir)/common/setup.texi + +GENERATED_FILES= \ + intro.texi swarch.texi started.texi commands.texi trouble.texi example.texi + +FILES= + +info_TEXINFOS = rtems_gdb.texi +rtems_gdb_TEXINFOS = $(FILES) $(COMMON_FILES) $(GENERATED_FILES) + +# +# Process Automatically Generated Files +# + +intro.texi: intro.t + $(BMENU) -p "Top" \ + -u "Top" \ + -n "Software Architecture" $< + +swarch.texi: swarch.t + $(BMENU) -p "Introduction" \ + -u "Top" \ + -n "Getting Started" $< + +started.texi: started.t + $(BMENU) -p "Software Architecture" \ + -u "Top" \ + -n "Commands" $< + +commands.texi: commands.t + $(BMENU) -p "Getting Started Attaching To The System" \ + -u "Top" \ + -n "Troubleshooting" $< + +trouble.texi: trouble.t + $(BMENU) -p "Commands Thread control" \ + -u "Top" \ + -n "Debug Session Example" $< + +example.texi: example.t + $(BMENU) -p "Troubleshooting Debug server not present" \ + -u "Top" \ + -n "" $< + +EXTRA_DIST = *.t diff --git a/doc/rtems_header.html b/doc/rtems_header.html deleted file mode 100644 index f201073ba2..0000000000 --- a/doc/rtems_header.html +++ /dev/null @@ -1,5 +0,0 @@ -<BODY BGCOLOR="FFFFFF"> -<A HREF="http://www.oarcorp.com" target="Text Frame"> - <IMG align=right BORDER=0 SRC="../oaronly.jpg" ALT="OAR"> </A> -<H1>RTEMS RTEMS_VERSION On-Line Library</H1> -<HR> diff --git a/doc/rtems_header.html.in b/doc/rtems_header.html.in new file mode 100644 index 0000000000..4aadc8a996 --- /dev/null +++ b/doc/rtems_header.html.in @@ -0,0 +1,5 @@ +<BODY BGCOLOR="FFFFFF"> +<A HREF="http://www.oarcorp.com" target="Text Frame"> + <IMG align=right BORDER=0 SRC="../images/oaronly.jpg" ALT="OAR"> </A> +<H1>RTEMS @RTEMS_VERSION@ On-Line Library</H1> +<HR> diff --git a/doc/rtems_support.html b/doc/rtems_support.html.in index 3320bf3454..d1ef7f0c6a 100644 --- a/doc/rtems_support.html +++ b/doc/rtems_support.html.in @@ -1,8 +1,8 @@ <HTML> -<HEAD><TITLE>RTEMS RTEMS_VERSION On-Line Library</TITLE></HEAD> +<HEAD><TITLE>RTEMS @RTEMS_VERSION@ On-Line Library</TITLE></HEAD> <BODY BGCOLOR="FFFFFF"> <A HREF="http://www.oarcorp.com" target="Text Frame"> - <IMG align=right BORDER=0 SRC="oaronly.jpg" ALT="OAR"> </A> + <IMG align=right BORDER=0 SRC="images/oaronly.jpg" ALT="OAR"> </A> <H1>RTEMS RTEMS_VERSION On-Line Library</H1> <HR> <BODY> diff --git a/doc/src2html/Makefile b/doc/src2html/Makefile deleted file mode 100644 index 3af68916f2..0000000000 --- a/doc/src2html/Makefile +++ /dev/null @@ -1,40 +0,0 @@ -# -# COPYRIGHT (c) 1988-1999. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. -# -# $Id$ -# - -PROJECT=browseable_rtems - -include ../Make.config - -all: html info ps pdf - -dirs: - $(make-dirs) - -COMMON_FILES=../common/cpright.texi - -FILES= clock.texi cond.texi key.texi mutex.texi $(PROJECT).texi preface.texi \ - sched.texi signal.texi thread.texi $(COMMON_FILES) - -INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*) - -info: - -ps: - -pdf: - -html: dirs - -mkdir -p $(WWW_INSTALL)/$(PROJECT) - $(SRC2HTML) -d3 RTEMS.src - -RTEMS.src: - sed -e 's/WWW_INSTALL/$(WWW_INSTALL)/' \ - <RTEMS.test >RTEMS.src - -clean: - rm -f RTEMS.src diff --git a/doc/src2html/Makefile.am b/doc/src2html/Makefile.am new file mode 100644 index 0000000000..8ca945fa35 --- /dev/null +++ b/doc/src2html/Makefile.am @@ -0,0 +1,37 @@ +# +# COPYRIGHT (c) 1988-1999. +# On-Line Applications Research Corporation (OAR). +# All rights reserved. +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign + +PROJECT=browseable_rtems + +# FIXME: Yet unported +# +#if USE_EXP +# +# include $(top_srcdir)/project.am +# +# COMMON_FILES=../common/cpright.texi +# +#FILES= clock.texi cond.texi key.texi mutex.texi preface.texi \ +# sched.texi signal.texi thread.texi +# +#noinst_TEXINFOS = browseable_rtems.texi +#browsable_rtems_TEXINFOS = $(FILES) $(COMMON_FILES) +# +#html: dirs +# -mkdir -p $(WWW_INSTALL)/$(PROJECT) +# $(SRC2HTML) -d3 RTEMS.src +# +#RTEMS.src: +# sed -e 's/WWW_INSTALL/$(htmldir)/' \ +# <RTEMS.test >RTEMS.src +#endif + +noinst_SCRIPTS = RTEMS.test +EXTRA_DIST = $(noinst_SCRIPTS) diff --git a/doc/started/Makefile b/doc/started/Makefile deleted file mode 100644 index fbe2f39ee3..0000000000 --- a/doc/started/Makefile +++ /dev/null @@ -1,102 +0,0 @@ -# -# COPYRIGHT (c) 1988-1999. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. -# -# $Id$ -# - -PROJECT=started - -include ../Make.config - -all: html info ps pdf - -dirs: - $(make-dirs) - -COMMON_FILES=../common/cpright.texi ../common/setup.texi - -GENERATED_FILES= binaries.texi buildc.texi buildrt.texi gdb.texi intro.texi \ - nt.texi require.texi sample.texi - -FILES= $(PROJECT).texi versions.texi $(GENERATED_FILES) - -INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*) - -info: dirs $(PROJECT) - #cp $(wildcard $(PROJECT) $(PROJECT)-*) $(INFO_INSTALL) - cp $(PROJECT) $(INFO_INSTALL) - -$(PROJECT): $(FILES) - $(MAKEINFO) $(PROJECT).texi - -dvi: dirs $(PROJECT).dvi -ps: dirs $(PROJECT).ps -pdf: dirs $(PROJECT).pdf - -$(PROJECT).pdf: $(FILES) - #$(TEXI2PDF) $(PROJECT).texi - #cp $(PROJECT).pdf $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).ps: $(PROJECT).dvi - dvips -o $(PROJECT).ps $(PROJECT).dvi - cp $(PROJECT).ps $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).dvi: $(FILES) - $(TEXI2DVI) $(PROJECT).texi - cp $(PROJECT).dvi $(WWW_INSTALL)/$(PROJECT) - -intro.texi: intro.t versions.texi - $(BMENU) -c -p "Top" \ - -u "Top" \ - -n "Requirements" ${*}.t - -require.texi: require.t versions.texi - $(BMENU) -c -p "EGCS Mailing List" \ - -u "Top" \ - -n "Prebuilt Toolset Executables" ${*}.t - -binaries.texi: binaries.t versions.texi - $(BMENU) -c -p "GNU makeinfo Version Requirements" \ - -u "Top" \ - -n "Building the GNU C/C++ Cross Compiler Toolset" ${*}.t - -buildc.texi: buildc.t versions.texi - $(BMENU) -c -p "Removing RPMs" \ - -u "Top" \ - -n "Building RTEMS" ${*}.t - -buildrt.texi: buildrt.t versions.texi - $(BMENU) -c -p "Error Messages Indicating Configuration Problems" \ - -u "Top" \ - -n "Building the Sample Application" ${*}.t - -sample.texi: sample.t versions.texi - $(BMENU) -c -p "Using the RTEMS configure Script Directly" \ - -u "Top" \ - -n "Building the GNU Debugger" ${*}.t - -gdb.texi: gdb.t versions.texi - $(BMENU) -c -p "Application Executable" \ - -u "Top" \ - -n "Using MS-Windows as a Development Host" ${*}.t - -nt.texi: nt.t versions.texi - $(BMENU) -c -p "GDB for DINK32" \ - -u "Top" \ - -n "" ${*}.t - -html: dirs $(FILES) - -mkdir -p $(WWW_INSTALL)/$(PROJECT) - -cp pictures/sfile12c.jpg $(WWW_INSTALL)/$(PROJECT) - -cp pictures/bit_c.jpg $(WWW_INSTALL)/$(PROJECT) - $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \ - $(PROJECT).texi - -clean: - rm -f *.o $(PROG) *.txt core $(PROJECT).pdf - rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f $(PROJECT) $(PROJECT)-* $(GENERATED_FILES) - rm -f *.fixed _* - diff --git a/doc/started/Makefile.am b/doc/started/Makefile.am new file mode 100644 index 0000000000..3fa305343d --- /dev/null +++ b/doc/started/Makefile.am @@ -0,0 +1,67 @@ +# +# COPYRIGHT (c) 1988-1999. +# On-Line Applications Research Corporation (OAR). +# All rights reserved. +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign + +PROJECT=started + +SUBDIRS = pictures + +include $(top_srcdir)/project.am + +COMMON_FILES=$(top_srcdir)/common/cpright.texi $(top_builddir)/common/setup.texi + +GENERATED_FILES= binaries.texi buildc.texi buildrt.texi gdb.texi intro.texi \ + nt.texi require.texi sample.texi + +FILES= tversions.texi + +info_TEXINFOS = started.texi +started_TEXINFOS = $(FILES) $(COMMON_FILES) $(GENERATED_FILES) + +intro.texi: intro.t tversions.texi + $(BMENU) -c -p "Top" \ + -u "Top" \ + -n "Requirements" $< + +require.texi: require.t tversions.texi + $(BMENU) -c -p "EGCS Mailing List" \ + -u "Top" \ + -n "Prebuilt Toolset Executables" $< + +binaries.texi: binaries.t tversions.texi + $(BMENU) -c -p "GNU makeinfo Version Requirements" \ + -u "Top" \ + -n "Building the GNU C/C++ Cross Compiler Toolset" $< + +buildc.texi: buildc.t tversions.texi + $(BMENU) -c -p "Removing RPMs" \ + -u "Top" \ + -n "Building RTEMS" $< + +buildrt.texi: buildrt.t tversions.texi + $(BMENU) -c -p "Error Messages Indicating Configuration Problems" \ + -u "Top" \ + -n "Building the Sample Application" $< + +sample.texi: sample.t tversions.texi + $(BMENU) -c -p "Using the RTEMS configure Script Directly" \ + -u "Top" \ + -n "Building the GNU Debugger" $< + +gdb.texi: gdb.t tversions.texi + $(BMENU) -c -p "Application Executable" \ + -u "Top" \ + -n "Using MS-Windows as a Development Host" $< + +nt.texi: nt.t tversions.texi + $(BMENU) -c -p "GDB for DINK32" \ + -u "Top" \ + -n "" $< + +EXTRA_DIST = *.t diff --git a/doc/started/pictures/Makefile.am b/doc/started/pictures/Makefile.am new file mode 100644 index 0000000000..45e81830b1 --- /dev/null +++ b/doc/started/pictures/Makefile.am @@ -0,0 +1,13 @@ +## $Id$ + +AUTOMAKE_OPTIONS = foreign + +PROJECT = started + +html_projectdir = $(htmldir)/$(PROJECT) + +if USE_HTML +html_project_DATA += sfile12c.jpg bit_c.jpg +endif + +EXTRA_DIST = *.jpg *.vsd diff --git a/doc/started/started.texi b/doc/started/started.texi index b79d534752..9cfb33ee18 100644 --- a/doc/started/started.texi +++ b/doc/started/started.texi @@ -24,7 +24,7 @@ @c @c Now set all the tool version dependent information @c -@include versions.texi +@include tversions.texi @ignore @ifinfo diff --git a/doc/started/versions.texi b/doc/started/tversions.texi index 5b93d6a3b4..5b93d6a3b4 100644 --- a/doc/started/versions.texi +++ b/doc/started/tversions.texi diff --git a/doc/started_ada/Makefile b/doc/started_ada/Makefile deleted file mode 100644 index 840aee0ed1..0000000000 --- a/doc/started_ada/Makefile +++ /dev/null @@ -1,92 +0,0 @@ -# -# COPYRIGHT (c) 1988-1999. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. -# -# $Id$ -# - -PROJECT=started_ada - -include ../Make.config - -all: html info ps pdf - -dirs: - $(make-dirs) - -COMMON_FILES=../common/cpright.texi ../common/setup.texi - -GENERATED_FILES= buildada.texi buildrt.texi gdb.texi intro.texi \ - require.texi sample.texi - -FILES= $(PROJECT).texi versions.texi $(GENERATED_FILES) - -INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*) - -info: dirs $(PROJECT) - #cp $(wildcard $(PROJECT) $(PROJECT)-*) $(INFO_INSTALL) - cp $(PROJECT) $(INFO_INSTALL) - -$(PROJECT): $(FILES) - $(MAKEINFO) $(PROJECT).texi - -dvi: dirs $(PROJECT).dvi -ps: dirs $(PROJECT).ps -pdf: dirs $(PROJECT).pdf - -$(PROJECT).pdf: $(FILES) - #$(TEXI2PDF) $(PROJECT).texi - #cp $(PROJECT).pdf $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).ps: $(PROJECT).dvi - dvips -o $(PROJECT).ps $(PROJECT).dvi - cp $(PROJECT).ps $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).dvi: $(FILES) - $(TEXI2DVI) $(PROJECT).texi - cp $(PROJECT).dvi $(WWW_INSTALL)/$(PROJECT) - -intro.texi: intro.t versions.texi - $(BMENU) -c -p "Top" \ - -u "Top" \ - -n "Requirements" ${*}.t - -require.texi: require.t versions.texi - $(BMENU) -c -p "GNAT Chat Mailing List" \ - -u "Top" \ - -n "Building the GNAT Cross Compiler Toolset" ${*}.t - -buildada.texi: buildada.t versions.texi - $(BMENU) -c -p "Insure GCC and GNAT Environment Variables Are Not Set" \ - -u "Top" \ - -n "Building RTEMS" ${*}.t - -buildrt.texi: buildrt.t versions.texi - $(BMENU) -c -p "Running the bit_ada Script" \ - -u "Top" \ - -n "Building the Sample Application" ${*}.t - -sample.texi: sample.t versions.texi - $(BMENU) -c -p "Using the RTEMS configure Script Directly" \ - -u "Top" \ - -n "Building the GNU Debugger" ${*}.t - -gdb.texi: gdb.t versions.texi - $(BMENU) -c -p "Application Executable" \ - -u "Top" \ - -n "" ${*}.t - -html: dirs $(FILES) - -mkdir -p $(WWW_INSTALL)/$(PROJECT) - -cp ../started/pictures/sfile12c.jpg $(WWW_INSTALL)/$(PROJECT) - -cp ../started/pictures/bit_ada.jpg $(WWW_INSTALL)/$(PROJECT) - $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \ - $(PROJECT).texi - -clean: - rm -f *.o $(PROG) *.txt core $(PROJECT).pdf - rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f $(PROJECT) $(PROJECT)-* $(GENERATED_FILES) - rm -f *.fixed _* - diff --git a/doc/started_ada/Makefile.am b/doc/started_ada/Makefile.am new file mode 100644 index 0000000000..e1d7fc37e9 --- /dev/null +++ b/doc/started_ada/Makefile.am @@ -0,0 +1,55 @@ +# +# COPYRIGHT (c) 1988-1999. +# On-Line Applications Research Corporation (OAR). +# All rights reserved. +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign + +PROJECT=started_ada + +include $(top_srcdir)/project.am + +COMMON_FILES=$(top_srcdir)/common/cpright.texi $(top_builddir)/common/setup.texi + +GENERATED_FILES= buildada.texi buildrt.texi gdb.texi intro.texi \ + require.texi sample.texi + +FILES= tversions.texi + +info_TEXINFOS = started_ada.texi +started_ada_TEXINFOS = $(FILES) $(COMMON_FILES) $(GENERATED_FILES) + +intro.texi: intro.t tversions.texi + $(BMENU) -c -p "Top" \ + -u "Top" \ + -n "Requirements" $< + +require.texi: require.t tversions.texi + $(BMENU) -c -p "GNAT Chat Mailing List" \ + -u "Top" \ + -n "Building the GNAT Cross Compiler Toolset" $< + +buildada.texi: buildada.t tversions.texi + $(BMENU) -c -p "Insure GCC and GNAT Environment Variables Are Not Set" \ + -u "Top" \ + -n "Building RTEMS" $< + +buildrt.texi: buildrt.t tversions.texi + $(BMENU) -c -p "Running the bit_ada Script" \ + -u "Top" \ + -n "Building the Sample Application" $< + +sample.texi: sample.t tversions.texi + $(BMENU) -c -p "Using the RTEMS configure Script Directly" \ + -u "Top" \ + -n "Building the GNU Debugger" $< + +gdb.texi: gdb.t tversions.texi + $(BMENU) -c -p "Application Executable" \ + -u "Top" \ + -n "" $< + +EXTRA_DIST = *.t diff --git a/doc/started_ada/started_ada.texi b/doc/started_ada/started_ada.texi index 041eb3fab9..2036d45ffb 100644 --- a/doc/started_ada/started_ada.texi +++ b/doc/started_ada/started_ada.texi @@ -24,7 +24,7 @@ @c @c Now set all the tool version dependent information @c -@include versions.texi +@include tversions.texi @ignore @ifinfo diff --git a/doc/started_ada/versions.texi b/doc/started_ada/tversions.texi index 1396f76e03..1396f76e03 100644 --- a/doc/started_ada/versions.texi +++ b/doc/started_ada/tversions.texi diff --git a/doc/supplements/Makefile.am b/doc/supplements/Makefile.am new file mode 100644 index 0000000000..15760f2138 --- /dev/null +++ b/doc/supplements/Makefile.am @@ -0,0 +1,7 @@ +## $Id$ + +AUTOMAKE_OPTIONS = foreign + +SUBDIRS = hppa1_1 i386 i960 m68k mips64orion powerpc sh sparc template + +EXTRA_DIST = supplement.am diff --git a/doc/supplements/hppa1_1/Makefile b/doc/supplements/hppa1_1/Makefile deleted file mode 100644 index 640eb3bbe2..0000000000 --- a/doc/supplements/hppa1_1/Makefile +++ /dev/null @@ -1,152 +0,0 @@ -# -# COPYRIGHT (c) 1988-1999. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. -# -# $Id$ -# - -PROJECT=hppa1_1 - -include ../../Make.config - -REPLACE=../../tools/word-replace - -all: html info ps pdf - -dirs: - $(make-dirs) - -COMMON_FILES=../../common/cpright.texi ../../common/setup.texi - -GENERATED_FILES=\ - cpumodel.texi callconv.texi memmodel.texi intr.texi fatalerr.texi \ - bsp.texi cputable.texi wksheets.texi timing.texi timeSIMHPPA.texi - -FILES= $(PROJECT).texi \ - preface.texi \ - $(GENERATED_FILES) - -info: dirs c_hppa1_1 - cp c_$(PROJECT) $(INFO_INSTALL) - -c_hppa1_1: $(FILES) - $(MAKEINFO) $(PROJECT).texi - -dvi: dirs $(PROJECT).dvi -ps: dirs $(PROJECT).ps -pdf: dirs $(PROJECT).pdf - -$(PROJECT).pdf: $(FILES) - $(TEXI2PDF) $(PROJECT).texi - cp $(PROJECT).pdf $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).ps: $(PROJECT).dvi - dvips -o $(PROJECT).ps $(PROJECT).dvi - cp $(PROJECT).ps $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).dvi: $(FILES) - $(TEXI2DVI) $(PROJECT).texi - cp $(PROJECT).dvi $(WWW_INSTALL)/$(PROJECT) - -html: dirs $(FILES) - -mkdir -p $(WWW_INSTALL)/$(PROJECT) - $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \ - $(PROJECT).texi - -clean: - rm -f *.o $(PROG) *.txt core $(PROJECT).pdf - rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f $(PROJECT) $(PROJECT)-* - rm -f c_hppa1_1 c_hppa1_1-* - rm -f intr.t - rm -f timing.t timing.texi - rm -f wksheets.t wksheets_NOTIMES.t $(GENERATED_FILES) - rm -f *.fixed _* - -# -# Chapters which get automatic processing -# - -cpumodel.texi: cpumodel.t Makefile - $(BMENU) -p "Preface" \ - -u "Top" \ - -n "Calling Conventions" ${*}.t - -callconv.texi: callconv.t Makefile - $(BMENU) -p "CPU Model Dependent Features CPU Model Name" \ - -u "Top" \ - -n "Memory Model" ${*}.t - -memmodel.texi: memmodel.t Makefile - $(BMENU) -p "Calling Conventions User-Provided Routines" \ - -u "Top" \ - -n "Interrupt Processing" ${*}.t - -# Interrupt Chapter: -# 1. Replace Times and Sizes -# 2. Build Node Structure - -intr.t: intr_NOTIMES.t SIMHPPA_TIMES - ${REPLACE} -p SIMHPPA_TIMES intr_NOTIMES.t - mv intr_NOTIMES.t.fixed intr.t - -intr.texi: intr.t Makefile - $(BMENU) -p "Memory Model Flat Memory Model" \ - -u "Top" \ - -n "Default Fatal Error Processing" ${*}.t - - -fatalerr.texi: fatalerr.t Makefile - $(BMENU) -p "Interrupt Processing Disabling of Interrupts by RTEMS" \ - -u "Top" \ - -n "Board Support Packages" ${*}.t - -bsp.texi: bsp.t Makefile - $(BMENU) -p "Default Fatal Error Processing Default Fatal Error Handler Operations" \ - -u "Top" \ - -n "Processor Dependent Information Table" ${*}.t - -cputable.texi: cputable.t Makefile - $(BMENU) -p "Board Support Packages Processor Initialization" \ - -u "Top" \ - -n "Memory Requirements" ${*}.t - -# Worksheets Chapter: -# 1. Obtain the Shared File -# 2. Replace Times and Sizes -# 3. Build Node Structure - -wksheets_NOTIMES.t: ../../common/wksheets.t - cp ../../common/wksheets.t wksheets_NOTIMES.t - -wksheets.t: wksheets_NOTIMES.t SIMHPPA_TIMES - ${REPLACE} -p SIMHPPA_TIMES wksheets_NOTIMES.t - mv wksheets_NOTIMES.t.fixed wksheets.t - -wksheets.texi: wksheets.t Makefile - $(BMENU) -p "Processor Dependent Information Table CPU Dependent Information Table" \ - -u "Top" \ - -n "Timing Specification" ${*}.t - -# Timing Specification Chapter: -# 1. Copy the Shared File -# 3. Build Node Structure - -timing.t: ../../common/timing.t - cp ../../common/timing.t timing.t - -timing.texi: timing.t Makefile - $(BMENU) -p "Memory Requirements RTEMS RAM Workspace Worksheet" \ - -u "Top" \ - -n "HP-7100 Timing Data" ${*}.t - -# Timing Data for BSP Chapter: -# 1. Copy the Shared File -# 2. Replace Times and Sizes -# 3. Build Node Structure - -timeSIMHPPA.texi: timeSIMHPPA.t Makefile - $(BMENU) -p "Timing Specification Terminology" \ - -u "Top" \ - -n "Command and Variable Index" ${*}.t diff --git a/doc/supplements/hppa1_1/Makefile.am b/doc/supplements/hppa1_1/Makefile.am new file mode 100644 index 0000000000..6ed271e564 --- /dev/null +++ b/doc/supplements/hppa1_1/Makefile.am @@ -0,0 +1,106 @@ +# +# COPYRIGHT (c) 1988-1999. +# On-Line Applications Research Corporation (OAR). +# All rights reserved. +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign + +PROJECT=hppa1_1 + +include $(top_srcdir)/project.am +include $(top_srcdir)/supplements/supplement.am + +COMMON_FILES=$(top_srcdir)/common/cpright.texi $(top_builddir)/common/setup.texi + +GENERATED_FILES=\ + cpumodel.texi callconv.texi memmodel.texi intr.texi fatalerr.texi \ + bsp.texi cputable.texi wksheets.texi timing.texi timeSIMHPPA.texi + +FILES= preface.texi + +info_TEXINFOS = hppa1_1.texi +hppa1_1_TEXINFOS = $(FILES) $(COMMON_FILES) $(GENERATED_FILES) + +# +# Chapters which get automatic processing +# + +cpumodel.texi: cpumodel.t + $(BMENU) -p "Preface" \ + -u "Top" \ + -n "Calling Conventions" $< + +callconv.texi: callconv.t + $(BMENU) -p "CPU Model Dependent Features CPU Model Name" \ + -u "Top" \ + -n "Memory Model" $< + +memmodel.texi: memmodel.t + $(BMENU) -p "Calling Conventions User-Provided Routines" \ + -u "Top" \ + -n "Interrupt Processing" $< + +# Interrupt Chapter: +# 1. Replace Times and Sizes +# 2. Build Node Structure +intr.texi: intr_NOTIMES.t SIMHPPA_TIMES + ${REPLACE2} -p $(srcdir)/SIMHPPA_TIMES $(srcdir)/intr_NOTIMES.t intr.t + $(BMENU) -p "Memory Model Flat Memory Model" \ + -u "Top" \ + -n "Default Fatal Error Processing" intr.t +CLEANFILES += intr.t + +fatalerr.texi: fatalerr.t + $(BMENU) -p "Interrupt Processing Disabling of Interrupts by RTEMS" \ + -u "Top" \ + -n "Board Support Packages" $< + +bsp.texi: bsp.t + $(BMENU) -p "Default Fatal Error Processing Default Fatal Error Handler Operations" \ + -u "Top" \ + -n "Processor Dependent Information Table" $< + +cputable.texi: cputable.t + $(BMENU) -p "Board Support Packages Processor Initialization" \ + -u "Top" \ + -n "Memory Requirements" $< + +# Worksheets Chapter: +# 1. Obtain the Shared File +# 2. Replace Times and Sizes +# 3. Build Node Structure + +wksheets.texi: $(top_srcdir)/common/wksheets.t SIMHPPA_TIMES + ${REPLACE2} -p $(srcdir)/SIMHPPA_TIMES \ + $(top_srcdir)/common/wksheets.t wksheets.t + $(BMENU) -p "Processor Dependent Information Table CPU Dependent Information Table" \ + -u "Top" \ + -n "Timing Specification" wksheets.t +CLEANFILES += wksheets.t + + +# Timing Specification Chapter: +# 1. Copy the Shared File +# 3. Build Node Structure + +timing.texi: $(top_srcdir)/common/timing.t + cp $(top_srcdir)/common/timing.t timing.t + $(BMENU) -p "Memory Requirements RTEMS RAM Workspace Worksheet" \ + -u "Top" \ + -n "HP-7100 Timing Data" timing.t +CLEANFILES += timing.t + +# Timing Data for BSP Chapter: +# 1. Copy the Shared File +# 2. Replace Times and Sizes +# 3. Build Node Structure + +timeSIMHPPA.texi: timeSIMHPPA.t + $(BMENU) -p "Timing Specification Terminology" \ + -u "Top" \ + -n "Command and Variable Index" $< + +EXTRA_DIST = SIMHPPA_TIMES *.t diff --git a/doc/supplements/hppa1_1/hppa1_1.texi b/doc/supplements/hppa1_1/hppa1_1.texi index 3c3512a0d4..d3417013d6 100644 --- a/doc/supplements/hppa1_1/hppa1_1.texi +++ b/doc/supplements/hppa1_1/hppa1_1.texi @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c %**start of header -@setfilename c_hppa1_1 +@setfilename hppa1_1 @syncodeindex vr fn @synindex ky cp @paragraphindent 0 @@ -75,7 +75,7 @@ END-INFO-DIR-ENTRY @include timeSIMHPPA.texi @ifinfo @node Top, Preface, (dir), (dir) -@top c_hppa1_1 +@top hppa1_1 This is the online version of the RTEMS Hewlett Packard PA-RISC Applications Supplement. diff --git a/doc/supplements/i386/Makefile b/doc/supplements/i386/Makefile deleted file mode 100644 index 9893c1a20c..0000000000 --- a/doc/supplements/i386/Makefile +++ /dev/null @@ -1,170 +0,0 @@ -# -# COPYRIGHT (c) 1988-1999. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. -# -# $Id$ -# - -PROJECT=i386 - -include ../../Make.config - -REPLACE=../../tools/word-replace - -all: html info ps pdf - -COMMON_FILES=../../common/cpright.texi ../../common/setup.texi - -GENERATED_FILES=\ - cpumodel.texi callconv.texi memmodel.texi intr.texi fatalerr.texi \ - bsp.texi cputable.texi timing.texi wksheets.texi timeFORCE386.texi - -FILES= $(PROJECT).texi \ - preface.texi \ - $(GENERATED_FILES) - - -dirs: - $(make-dirs) - -info: dirs c_i386 - cp c_$(PROJECT) $(INFO_INSTALL) - #cp c_$(PROJECT) c_$(PROJECT)-* $(INFO_INSTALL) - -c_i386: $(FILES) - $(MAKEINFO) $(PROJECT).texi - -dvi: dirs $(PROJECT).dvi -ps: dirs $(PROJECT).ps -pdf: dirs $(PROJECT).pdf - -$(PROJECT).pdf: $(FILES) - $(TEXI2PDF) $(PROJECT).texi - cp $(PROJECT).pdf $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).ps: $(PROJECT).dvi - dvips -o $(PROJECT).ps $(PROJECT).dvi - cp $(PROJECT).ps $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).dvi: $(FILES) - $(TEXI2DVI) $(PROJECT).texi - cp $(PROJECT).dvi $(WWW_INSTALL)/$(PROJECT) - -html: dirs $(FILES) - -mkdir -p $(WWW_INSTALL)/$(PROJECT) - $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \ - $(PROJECT).texi - -clean: - rm -f *.o $(PROG) *.txt core $(PROJECT).pdf - rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f $(PROJECT) $(PROJECT)-* - rm -f c_i386 c_i386-* - rm -f intr.t $(GENERATED_FILES) - rm -f wksheets.t wksheets_NOTIMES.t timing.t intr.t - rm -f timeFORCE386_.t timeFORCE386_.texi - rm -f *.fixed _* - -# -# Chapters which get automatic processing -# - -cpumodel.texi: cpumodel.t Makefile - $(BMENU) -p "Preface" \ - -u "Top" \ - -n "Calling Conventions" ${*}.t - -callconv.texi: callconv.t Makefile - $(BMENU) -p "CPU Model Dependent Features Floating Point Unit" \ - -u "Top" \ - -n "Memory Model" ${*}.t - -memmodel.texi: memmodel.t Makefile - $(BMENU) -p "Calling Conventions User-Provided Routines" \ - -u "Top" \ - -n "Interrupt Processing" ${*}.t - -# Interrupt Chapter: -# 1. Replace Times and Sizes -# 2. Build Node Structure - -#intr.texi: intr.t FORCE386_TIMES -# ${REPLACE} -p FORCE386_TIMES intr.t -# mv intr.t.fixed intr.texi - -# Interrupt Chapter: -# 1. Replace Times and Sizes -# 2. Build Node Structure -intr.t: intr_NOTIMES.t FORCE386_TIMES - ${REPLACE} -p FORCE386_TIMES intr_NOTIMES.t - mv intr_NOTIMES.t.fixed intr.t - -intr.texi: intr.t Makefile - $(BMENU) -p "Memory Model Flat Memory Model" \ - -u "Top" \ - -n "Default Fatal Error Processing" ${*}.t - -fatalerr.texi: fatalerr.t Makefile - $(BMENU) -p "Interrupt Processing Interrupt Stack" \ - -u "Top" \ - -n "Board Support Packages" ${*}.t - -bsp.texi: bsp.t Makefile - $(BMENU) -p "Default Fatal Error Processing Default Fatal Error Handler Operations" \ - -u "Top" \ - -n "Processor Dependent Information Table" ${*}.t - -cputable.texi: cputable.t Makefile - $(BMENU) -p "Board Support Packages Processor Initialization" \ - -u "Top" \ - -n "Memory Requirements" ${*}.t - -# Worksheets Chapter: -# 1. Obtain the Shared File -# 2. Replace Times and Sizes -# 3. Build Node Structure - -wksheets_NOTIMES.t: ../../common/wksheets.t - cp ../../common/wksheets.t wksheets_NOTIMES.t - -wksheets.t: wksheets_NOTIMES.t FORCE386_TIMES - ${REPLACE} -p FORCE386_TIMES wksheets_NOTIMES.t - mv wksheets_NOTIMES.t.fixed wksheets.t - -wksheets.texi: wksheets.t Makefile - $(BMENU) -p "Processor Dependent Information Table CPU Dependent Information Table" \ - -u "Top" \ - -n "Timing Specification" ${*}.t - -# Timing Specification Chapter: -# 1. Copy the Shared File -# 3. Build Node Structure - -timing.t: ../../common/timing.t - cp ../../common/timing.t timing.t - -timing.texi: timing.t Makefile - $(BMENU) -p "Memory Requirements RTEMS RAM Workspace Worksheet" \ - -u "Top" \ - -n "CPU386 Timing Data" ${*}.t - -# Timing Data for BSP Chapter: -# 1. Copy the Shared File -# 2. Replace Times and Sizes -# 3. Build Node Structure - -timeFORCE386_.t: ../../common/timetbl.t timeFORCE386.t - cat timeFORCE386.t ../../common/timetbl.t >timeFORCE386_.t - @echo >>timeFORCE386_.t - @echo "@tex" >>timeFORCE386_.t - @echo "\\global\\advance \\smallskipamount by 4pt" >>timeFORCE386_.t - @echo "@end tex" >>timeFORCE386_.t - ${REPLACE} -p FORCE386_TIMES timeFORCE386_.t - mv timeFORCE386_.t.fixed timeFORCE386_.t - -timeFORCE386.texi: timeFORCE386_.t Makefile - $(BMENU) -p "Timing Specification Terminology" \ - -u "Top" \ - -n "Command and Variable Index" timeFORCE386_.t - mv timeFORCE386_.texi timeFORCE386.texi diff --git a/doc/supplements/i386/Makefile.am b/doc/supplements/i386/Makefile.am new file mode 100644 index 0000000000..7b3d95a273 --- /dev/null +++ b/doc/supplements/i386/Makefile.am @@ -0,0 +1,115 @@ +# +# COPYRIGHT (c) 1988-1999. +# On-Line Applications Research Corporation (OAR). +# All rights reserved. +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign + +PROJECT=i386 + +include $(top_srcdir)/project.am +include $(top_srcdir)/supplements/supplement.am + +COMMON_FILES=$(top_srcdir)/common/cpright.texi $(top_builddir)/common/setup.texi + +GENERATED_FILES=\ + cpumodel.texi callconv.texi memmodel.texi intr.texi fatalerr.texi \ + bsp.texi cputable.texi timing.texi wksheets.texi timeFORCE386.texi + +FILES= preface.texi + +info_TEXINFOS = i386.texi +i386_TEXINFOS = $(FILES) $(COMMON_FILES) $(GENERATED_FILES) + +# +# Chapters which get automatic processing +# + +cpumodel.texi: cpumodel.t + $(BMENU) -p "Preface" \ + -u "Top" \ + -n "Calling Conventions" $< + +callconv.texi: callconv.t + $(BMENU) -p "CPU Model Dependent Features Floating Point Unit" \ + -u "Top" \ + -n "Memory Model" $< + +memmodel.texi: memmodel.t + $(BMENU) -p "Calling Conventions User-Provided Routines" \ + -u "Top" \ + -n "Interrupt Processing" $< + +# Interrupt Chapter: +# 1. Replace Times and Sizes +# 2. Build Node Structure + +intr.texi: intr_NOTIMES.t FORCE386_TIMES + ${REPLACE2} -p $(srcdir)/FORCE386_TIMES $(srcdir)/intr_NOTIMES.t intr.t + $(BMENU) -p "Memory Model Flat Memory Model" \ + -u "Top" \ + -n "Default Fatal Error Processing" intr.t +CLEANFILES += intr.t + +fatalerr.texi: fatalerr.t + $(BMENU) -p "Interrupt Processing Interrupt Stack" \ + -u "Top" \ + -n "Board Support Packages" $< + +bsp.texi: bsp.t + $(BMENU) -p "Default Fatal Error Processing Default Fatal Error Handler Operations" \ + -u "Top" \ + -n "Processor Dependent Information Table" $< + +cputable.texi: cputable.t + $(BMENU) -p "Board Support Packages Processor Initialization" \ + -u "Top" \ + -n "Memory Requirements" $< + +# Worksheets Chapter: +# 1. Obtain the Shared File +# 2. Replace Times and Sizes +# 3. Build Node Structure + +wksheets.texi: $(top_srcdir)/common/wksheets.t FORCE386_TIMES + ${REPLACE2} -p $(srcdir)/FORCE386_TIMES \ + $(top_srcdir)/common/wksheets.t wksheets.t + $(BMENU) -p "Processor Dependent Information Table CPU Dependent Information Table" \ + -u "Top" \ + -n "Timing Specification" wksheets.t +CLEANFILES += wksheets.t + +# Timing Specification Chapter: +# 1. Copy the Shared File +# 3. Build Node Structure +timing.texi: $(top_srcdir)/common/timing.t + cp $(top_srcdir)/common/timing.t timing.t + $(BMENU) -p "Memory Requirements RTEMS RAM Workspace Worksheet" \ + -u "Top" \ + -n "CPU386 Timing Data" timing.t +CLEANFILES += timing.t + +# Timing Data for BSP Chapter: +# 1. Copy the Shared File +# 2. Replace Times and Sizes +# 3. Build Node Structure + +timeFORCE386_.t: $(top_srcdir)/common/timetbl.t timeFORCE386.t + cat timeFORCE386.t $(top_srcdir)/common/timetbl.t >timeFORCE386_.t + @echo >>timeFORCE386_.t + @echo "@tex" >>timeFORCE386_.t + @echo "\\global\\advance \\smallskipamount by 4pt" >>timeFORCE386_.t + @echo "@end tex" >>timeFORCE386_.t + ${REPLACE} -p FORCE386_TIMES timeFORCE386_.t + mv timeFORCE386_.t.fixed timeFORCE386_.t + +timeFORCE386.texi: timeFORCE386_.t + $(BMENU) -p "Timing Specification Terminology" \ + -u "Top" \ + -n "Command and Variable Index" timeFORCE386_.t + mv timeFORCE386_.texi timeFORCE386.texi + +EXTRA_DIST = FORCE386_TIMES *.t diff --git a/doc/supplements/i386/i386.texi b/doc/supplements/i386/i386.texi index 7f07ed014f..d319167587 100644 --- a/doc/supplements/i386/i386.texi +++ b/doc/supplements/i386/i386.texi @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c %**start of header -@setfilename c_i386 +@setfilename i386 @syncodeindex vr fn @synindex ky cp @paragraphindent 0 @@ -75,7 +75,7 @@ END-INFO-DIR-ENTRY @include timeFORCE386.texi @ifinfo @node Top, Preface, (dir), (dir) -@top c_i386 +@top i386 This is the online version of the RTEMS Intel i386 Applications Supplement. diff --git a/doc/supplements/i386/timeFORCE386_.t b/doc/supplements/i386/timeFORCE386_.t new file mode 100644 index 0000000000..de008d23b2 --- /dev/null +++ b/doc/supplements/i386/timeFORCE386_.t @@ -0,0 +1,1435 @@ +@c +@c COPYRIGHT (c) 1988-1999. +@c On-Line Applications Research Corporation (OAR). +@c All rights reserved. +@c +@c $Id$ +@c + +@include ../../common/timemac.texi +@tex +\global\advance \smallskipamount by -4pt +@end tex + +@chapter CPU386 Timing Data + +@section Introduction + +The timing data for the i386 version of RTEMS is +provided along with the target dependent aspects concerning the +gathering of the timing data. The hardware platform used to +gather the times is described to give the reader a better +understanding of each directive time provided. Also, provided +is a description of the interrupt latency and the context +switch times as they pertain to the i386 version of RTEMS. + +@section Hardware Platform + +All times reported except for the maximum period +interrupts are disabled by RTEMS were measured using a Force +Computers CPU386 board. The CPU386 is a 16 Mhz board with zero +wait state dynamic memory and an i80387 numeric coprocessor. +One of the count-down timers provided by a Motorola MC68901 was +used to measure elapsed time with one microsecond resolution. +All sources of hardware interrupts are disabled, although the +interrupt level of the i386 allows all interrupts. + +The maximum period interrupts are disabled was +measured by summing the number of CPU cycles required by each +assembly language instruction executed while interrupts were +disabled. Zero wait state memory was assumed. The total CPU +cycles executed with interrupts disabled, including the +instructions to disable and enable interrupts, was divided by 16 +to simulate a i386 executing at 16 Mhz. + +@section Interrupt Latency + +The maximum period with interrupts disabled within +RTEMS is less than 13.0 microseconds +including the instructions +which disable and re-enable interrupts. The time required for +the i386 to generate an interrupt using the int instruction, +vectoring to an interrupt handler, and for the RTEMS entry +overhead before invoking the user's interrupt handler are a +total of 12 microseconds. These combine to yield a worst case +interrupt latency of less +13.0 + 12 +microseconds. [NOTE: The +maximum period with interrupts disabled within RTEMS was last +calculated for Release 3.1.0.] + +It should be noted again that the maximum period with +interrupts disabled within RTEMS is hand-timed. The interrupt +vector and entry overhead time was generated on the Force +Computers CPU386 benchmark platform using the int instruction as +the interrupt source. + +@section Context Switch + +The RTEMS processor context switch time is 34 +microseconds on the Force Computers CPU386 benchmark platform. +This time represents the raw context switch time with no user +extensions configured. Additional execution time is required +when a TASK_SWITCH user extension is configured. The use of the +TASK_SWITCH extension is application dependent. Thus, its +execution time is not considered part of the base context switch +time. + +Since RTEMS was designed specifically for embedded +missile applications which are floating point intensive, the +executive is optimized to avoid unnecessarily saving and +restoring the state of the numeric coprocessor. The state of +the numeric coprocessor is only saved when a FLOATING_POINT task +is dispatched and that task was not the last task to utilize the +coprocessor. In a system with only one FLOATING_POINT task, the +state of the numeric coprocessor will never be saved or +restored. When the first FLOATING_POINT task is dispatched, +RTEMS does not need to save the current state of the numeric +coprocessor. + +The exact amount of time required to save and restore +floating point context is dependent on the state of the numeric +coprocessor. RTEMS places the coprocessor in the initialized +state when a task is started or restarted. Once the task has +utilized the coprocessor, it is in the idle state when floating +point instructions are not executing and the busy state when +floating point instructions are executing. The state of the +coprocessor is task specific. + +The following table summarizes the context switch +times for the Force Computers CPU386 benchmark platform: + +@c ****** This comment is here to remind you not to edit the timetbl.t +@c ****** in any directory but common. +@c +@c Time Table Template +@c +@c COPYRIGHT (c) 1988-1999. +@c On-Line Applications Research Corporation (OAR). +@c All rights reserved. +@c +@c $Id$ +@c + +@ifset use-tex +@sp 1 +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{No Floating Point Contexts}{34} +\rtemsdirective{Floating Point Contexts} +\rtemscase{restore first FP task}{57} +\rtemscase{save initialized, restore initialized}{59} +\rtemscase{save idle, restore initialized}{59} +\rtemscase{save idle, restore idle}{83} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet +@item No Floating Point Contexts +@itemize - +@item only case: 34 +@end itemize +@item Floating Point Contexts +@itemize - +@item restore first FP task: 57 +@item save initialized, restore initialized: 59 +@item save idle, restore initialized: 59 +@item save idle, restore idle: 59 +@end itemize +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>No Floating Point Contexts</STRONG></TD> + <TD ALIGN=center>34</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>Floating Point Contexts</TR> + <TR><TD ALIGN=left><dd>restore first FP task</TD> + <TD ALIGN=center>57</TD> + <TR><TD ALIGN=left><dd>save initialized, restore initialized</TD> + <TD ALIGN=center>59</TD> + <TR><TD ALIGN=left><dd>save idle, restore initialized</TD> + <TD ALIGN=center>59</TD> + <TR><TD ALIGN=left><dd>save idle, restore idle</TD> + <TD ALIGN=center>83</TD> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Directive Times + +This sections is divided into a number of +subsections, each of which contains a table listing the +execution times of that manager's directives. + +@page +@section Task Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{TASK\_CREATE}{157} +\rtemsonecase{TASK\_IDENT}{748} +\rtemsonecase{TASK\_START}{86} +\rtemsdirective{TASK\_RESTART} +\rtemscase{calling task}{118} +\rtemscase{suspended task -- returns to caller} + {45} +\rtemscase{blocked task -- returns to caller} + {138} +\rtemscase{ready task -- returns to caller} + {105} +\rtemscase{suspended task -- preempts caller} + {149} +\rtemscase{blocked task -- preempts caller} + {162} +\rtemscase{ready task -- preempts caller} + {156} +\rtemsdirective{TASK\_DELETE} +\rtemscase{calling task}{187} +\rtemscase{suspended task}{147} +\rtemscase{blocked task}{153} +\rtemscase{ready task}{157} +\rtemsdirective{TASK\_SUSPEND} +\rtemscase{calling task}{81} +\rtemscase{returns to caller}{45} +\rtemsdirective{TASK\_RESUME} +\rtemscase{task readied -- returns to caller} + {46} +\rtemscase{task readied -- preempts caller} + {71} +\rtemsdirective{TASK\_SET\_PRIORITY} +\rtemscase{obtain current priority} + {30} +\rtemscase{returns to caller}{67} +\rtemscase{preempts caller}{115} +\rtemsdirective{TASK\_MODE} +\rtemscase{obtain current mode}{19} +\rtemscase{no reschedule}{21} +\rtemscase{reschedule -- returns to caller} + {27} +\rtemscase{reschedule -- preempts caller} + {66} +\rtemsonecase{TASK\_GET\_NOTE}{32} +\rtemsonecase{TASK\_SET\_NOTE}{32} +\rtemsdirective{TASK\_WAKE\_AFTER} +\rtemscase{yield -- returns to caller} + {18} +\rtemscase{yield -- preempts caller} + {63} +\rtemsonecase{TASK\_WAKE\_WHEN}{128} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item TASK_CREATE +@itemize - +@item only case: 157 +@end itemize + +@item TASK_IDENT +@itemize - +@item only case: 748 +@end itemize + +@item TASK_START +@itemize - +@item only case: 86 +@end itemize + +@item TASK_RESTART +@itemize - +@item calling task: 118 +@item suspended task -- returns to caller: 45 +@item blocked task -- returns to caller: 138 +@item ready task -- returns to caller: 105 +@item suspended task -- preempts caller: 149 +@item blocked task -- preempts caller: 162 +@item ready task -- preempts caller: 156 +@end itemize + +@item TASK_DELETE +@itemize - +@item calling task: 187 +@item suspended task: 147 +@item blocked task: 153 +@item ready task: 157 +@end itemize + +@item TASK_SUSPEND +@itemize - +@item calling task: 81 +@item returns to caller: 45 +@end itemize + +@item TASK_RESUME +@itemize - +@item task readied -- returns to caller: 46 +@item task readied -- preempts caller: 71 +@end itemize + +@item TASK_SET_PRIORITY +@itemize - +@item obtain current priority: 30 +@item returns to caller: 67 +@item preempts caller: 115 +@end itemize + +@item TASK_MODE +@itemize - +@item obtain current mode: 19 +@item no reschedule: 21 +@item reschedule -- returns to caller: 27 +@item reschedule -- preempts caller: 66 +@end itemize + +@item TASK_GET_NOTE +@itemize - +@item only case: 32 +@end itemize + +@item TASK_SET_NOTE +@itemize - +@item only case: 32 +@end itemize + +@item TASK_WAKE_AFTER +@itemize - +@item yield -- returns to caller: 18 +@item yield -- preempts caller: 63 +@end itemize + +@item TASK_WAKE_WHEN +@itemize - +@item only case: 128 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>TASK_CREATE</STRONG></TD> + <TD ALIGN=center>157</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_IDENT</STRONG></TD> + <TD ALIGN=center>748</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_START</STRONG></TD> + <TD ALIGN=center>86</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_RESTART</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>calling task</TD> + <TD ALIGN=center>118</TD></TR> + <TR><TD ALIGN=left><dd>suspended task -- returns to caller</TD> + <TD ALIGN=center>45</TD></TR> + <TR><TD ALIGN=left><dd>blocked task -- returns to caller</TD> + <TD ALIGN=center>138</TD></TR> + <TR><TD ALIGN=left><dd>ready task -- returns to caller</TD> + <TD ALIGN=center>105</TD></TR> + <TR><TD ALIGN=left><dd>suspended task -- preempts caller</TD> + <TD ALIGN=center>149</TD></TR> + <TR><TD ALIGN=left><dd>blocked task -- preempts caller</TD> + <TD ALIGN=center>162</TD></TR> + <TR><TD ALIGN=left><dd>ready task -- preempts caller</TD> + <TD ALIGN=center>156</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_DELETE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>calling task</TD> + <TD ALIGN=center>187</TD></TR> + <TR><TD ALIGN=left><dd>suspended task</TD> + <TD ALIGN=center>147</TD></TR> + <TR><TD ALIGN=left><dd>blocked task</TD> + <TD ALIGN=center>153</TD></TR> + <TR><TD ALIGN=left><dd>ready task</TD> + <TD ALIGN=center>157</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_SUSPEND</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>calling task</TD> + <TD ALIGN=center>81</TD></TR> + <TR><TD ALIGN=left><dd>returns to caller</TD> + <TD ALIGN=center>45</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_RESUME</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>46</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>71</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_SET_PRIORITY</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>obtain current priority</TD> + <TD ALIGN=center>30</TD></TR> + <TR><TD ALIGN=left><dd>returns to caller</TD> + <TD ALIGN=center>67</TD></TR> + <TR><TD ALIGN=left><dd>preempts caller</TD> + <TD ALIGN=center>115</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_MODE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>obtain current mode</TD> + <TD ALIGN=center>19</TD></TR> + <TR><TD ALIGN=left><dd>no reschedule</TD> + <TD ALIGN=center>21</TD></TR> + <TR><TD ALIGN=left><dd>reschedule -- returns to caller</TD> + <TD ALIGN=center>27</TD></TR> + <TR><TD ALIGN=left><dd>reschedule -- preempts caller</TD> + <TD ALIGN=center>66</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_GET_NOTE</STRONG></TD> + <TD ALIGN=center>32</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_SET_NOTE</STRONG></TD> + <TD ALIGN=center>32</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_WAKE_AFTER</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>yield -- returns to caller</TD> + <TD ALIGN=center>18</TD></TR> + <TR><TD ALIGN=left><dd>yield -- preempts caller</TD> + <TD ALIGN=center>63</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_WAKE_WHEN</STRONG></TD> + <TD ALIGN=center>128</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Interrupt Manager + +It should be noted that the interrupt entry times +include vectoring the interrupt handler. + +@ifset use-tex +@sp 1 +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsdirective{Interrupt Entry Overhead} +\rtemscase{returns to nested interrupt}{12} +\rtemscase{returns to interrupted task} + {13} +\rtemscase{returns to preempting task} + {12} +\rtemsdirective{Interrupt Exit Overhead} +\rtemscase{returns to nested interrupt}{10} +\rtemscase{returns to interrupted task} + {13} +\rtemscase{returns to preempting task} + {58} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item Interrupt Entry Overhead +@itemize - +@item returns to nested interrupt: 12 +@item returns to interrupted task: 13 +@item returns to preempting task: 12 +@end itemize + +@item Interrupt Exit Overhead +@itemize - +@item returns to nested interrupt: 10 +@item returns to interrupted task: 13 +@item returns to preempting task: 58 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left COLSPAN=2><STRONG>Interrupt Entry Overhead</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>returns to nested interrupt</TD> + <TD ALIGN=center>12</TD></TR> + <TR><TD ALIGN=left><dd>returns to interrupted task</TD> + <TD ALIGN=center>13</TD></TR> + <TR><TD ALIGN=left><dd>returns to preempting task</TD> + <TD ALIGN=center>12</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>Interrupt Exit Overhead</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>returns to nested interrupt</TD> + <TD ALIGN=center>10</TD></TR> + <TR><TD ALIGN=left><dd>returns to interrupted task</TD> + <TD ALIGN=center>13</TD></TR> + <TR><TD ALIGN=left><dd>returns to preempting task</TD> + <TD ALIGN=center>58</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + + +@section Clock Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{CLOCK\_SET}{85} +\rtemsonecase{CLOCK\_GET}{2} +\rtemsonecase{CLOCK\_TICK}{16} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item CLOCK_SET +@itemize - +@item only case: 85 +@end itemize + +@item CLOCK_GET +@itemize - +@item only case: 2 +@end itemize + +@item CLOCK_TICK +@itemize - +@item only case: 16 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>CLOCK_SET</STRONG></TD> + <TD ALIGN=center>85</TD></TR> +<TR><TD ALIGN=left><STRONG>CLOCK_GET</STRONG></TD> + <TD ALIGN=center>2</TD></TR> +<TR><TD ALIGN=left><STRONG>CLOCK_TICK</STRONG></TD> + <TD ALIGN=center>16</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Timer Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{TIMER\_CREATE}{34} +\rtemsonecase{TIMER\_IDENT}{729} +\rtemsdirective{TIMER\_DELETE} +\rtemscase{inactive}{48} +\rtemscase{active}{52} +\rtemsdirective{TIMER\_FIRE\_AFTER} +\rtemscase{inactive}{65} +\rtemscase{active}{69} +\rtemsdirective{TIMER\_FIRE\_WHEN} +\rtemscase{inactive}{92} +\rtemscase{active}{92} +\rtemsdirective{TIMER\_RESET} +\rtemscase{inactive}{58} +\rtemscase{active}{63} +\rtemsdirective{TIMER\_CANCEL} +\rtemscase{inactive}{32} +\rtemscase{active}{37} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item TIMER_CREATE +@itemize - +@item only case: 34 +@end itemize + +@item TIMER_IDENT +@itemize - +@item only case: 729 +@end itemize + +@item TIMER_DELETE +@itemize - +@item inactive: 48 +@item active: 52 +@end itemize + +@item TIMER_FIRE_AFTER +@itemize - +@item inactive: 65 +@item active: 69 +@end itemize + +@item TIMER_FIRE_WHEN +@itemize - +@item inactive: TIMER_FIRE_WHEN_INACTIVE +@item active: TIMER_FIRE_WHEN_ACTIVE +@end itemize + +@item TIMER_RESET +@itemize - +@item inactive: TIMER_RESET_INACTIVE +@item active: TIMER_RESET_ACTIVE +@end itemize + +@item TIMER_CANCEL +@itemize - +@item inactive: TIMER_CANCEL_INACTIVE +@item active: TIMER_CANCEL_ACTIVE +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>TIMER_CREATE</STRONG></TD> + <TD ALIGN=center>34</TD></TR> +<TR><TD ALIGN=left><STRONG>TIMER_IDENT</STRONG></TD> + <TD ALIGN=center>729</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_DELETE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>48</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>52</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_FIRE_AFTER</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>65</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>69</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_FIRE_WHEN</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>92</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>92</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_RESET</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>58</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>63</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_CANCEL</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>32</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>37</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Semaphore Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{SEMAPHORE\_CREATE}{64} +\rtemsonecase{SEMAPHORE\_IDENT}{787} +\rtemsonecase{SEMAPHORE\_DELETE}{60} +\rtemsdirective{SEMAPHORE\_OBTAIN} +\rtemscase{available}{41} +\rtemscase{not available -- NO\_WAIT} + {40} +\rtemscase{not available -- caller blocks} + {123} +\rtemsdirective{SEMAPHORE\_RELEASE} +\rtemscase{no waiting tasks}{47} +\rtemscase{task readied -- returns to caller} + {70} +\rtemscase{task readied -- preempts caller} + {95} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item SEMAPHORE_CREATE +@itemize - +@item only case: 64 +@end itemize + +@item SEMAPHORE_IDENT +@itemize - +@item only case: 787 +@end itemize + +@item SEMAPHORE_DELETE +@itemize - +@item only case: 60 +@end itemize + +@item SEMAPHORE_OBTAIN +@itemize - +@item available: 41 +@item not available -- NO_WAIT: 40 +@item not available -- caller blocks: 123 +@end itemize + +@item SEMAPHORE_RELEASE +@itemize - +@item no waiting tasks: 47 +@item task readied -- returns to caller: 70 +@item task readied -- preempts caller: 95 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>SEMAPHORE_CREATE</STRONG></TD> + <TD ALIGN=center>64</TD></TR> +<TR><TD ALIGN=left><STRONG>SEMAPHORE_IDENT</STRONG></TD> + <TD ALIGN=center>787</TD></TR> +<TR><TD ALIGN=left><STRONG>SEMAPHORE_DELETE</STRONG></TD> + <TD ALIGN=center>60</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>SEMAPHORE_OBTAIN</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>41</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center>40</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center>123</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>SEMAPHORE_RELEASE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>47</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>70</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>95</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Message Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{MESSAGE\_QUEUE\_CREATE}{294} +\rtemsonecase{MESSAGE\_QUEUE\_IDENT}{730} +\rtemsonecase{MESSAGE\_QUEUE\_DELETE}{81} +\rtemsdirective{MESSAGE\_QUEUE\_SEND} +\rtemscase{no waiting tasks} + {117} +\rtemscase{task readied -- returns to caller} + {118} +\rtemscase{task readied -- preempts caller} + {144} +\rtemsdirective{MESSAGE\_QUEUE\_URGENT} +\rtemscase{no waiting tasks}{117} +\rtemscase{task readied -- returns to caller} + {116} +\rtemscase{task readied -- preempts caller} + {144} +\rtemsdirective{MESSAGE\_QUEUE\_BROADCAST} +\rtemscase{no waiting tasks}{53} +\rtemscase{task readied -- returns to caller} + {122} +\rtemscase{task readied -- preempts caller} + {146} +\rtemsdirective{MESSAGE\_QUEUE\_RECEIVE} +\rtemscase{available}{93} +\rtemscase{not available -- NO\_WAIT} + {45} +\rtemscase{not available -- caller blocks} + {127} +\rtemsdirective{MESSAGE\_QUEUE\_FLUSH} +\rtemscase{no messages flushed}{29} +\rtemscase{messages flushed}{41} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item MESSAGE_QUEUE_CREATE +@itemize - +@item only case: 294 +@end itemize + +@item MESSAGE_QUEUE_IDENT +@itemize - +@item only case: 730 +@end itemize + +@item MESSAGE_QUEUE_DELETE +@itemize - +@item only case: 81 +@end itemize + +@item MESSAGE_QUEUE_SEND +@itemize - +@item no waiting tasks: 117 +@item task readied -- returns to caller: 118 +@item task readied -- preempts caller: 144 +@end itemize + +@item MESSAGE_QUEUE_URGENT +@itemize - +@item no waiting tasks: 117 +@item task readied -- returns to caller: 116 +@item task readied -- preempts caller: 144 +@end itemize + +@item MESSAGE_QUEUE_BROADCAST +@itemize - +@item no waiting tasks: 53 +@item task readied -- returns to caller: 122 +@item task readied -- preempts caller: 146 +@end itemize + +@item MESSAGE_QUEUE_RECEIVE +@itemize - +@item available: 93 +@item not available -- NO_WAIT: 45 +@item not available -- caller blocks: 127 +@end itemize + +@item MESSAGE_QUEUE_FLUSH +@itemize - +@item no messages flushed: 29 +@item messages flushed: 41 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_CREATE</STRONG></TD> + <TD ALIGN=center>294</TD></TR> +<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_IDENT</STRONG></TD> + <TD ALIGN=center>730</TD></TR> +<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_DELETE</STRONG></TD> + <TD ALIGN=center>81</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_SEND</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>117</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>118</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>144</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_URGENT</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>117</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>116</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>144</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_BROADCAST</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>53</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>122</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>146</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_RECEIVE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>93</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center>45</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center>127</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_FLUSH</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no messages flushed</TD> + <TD ALIGN=center>29</TD></TR> + <TR><TD ALIGN=left><dd>messages flushed</TD> + <TD ALIGN=center>41</TD></TR> + + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Event Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsdirective{EVENT\_SEND} +\rtemscase{no task readied}{26} +\rtemscase{task readied -- returns to caller} + {60} +\rtemscase{task readied -- preempts caller} + {89} +\rtemsdirective{EVENT\_RECEIVE} +\rtemscase{obtain current events}{<1} +\rtemscase{available}{27} +\rtemscase{not available -- NO\_WAIT}{25} +\rtemscase{not available -- caller blocks} + {94} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item EVENT_SEND +@itemize - +@item no task readied: 26 +@item task readied -- returns to caller: 60 +@item task readied -- preempts caller: 89 +@end itemize + +@item EVENT_RECEIVE +@itemize - +@item obtain current events: <1 +@item available: 27 +@item not available -- NO_WAIT: 25 +@item not available -- caller blocks: 94 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left COLSPAN=2><STRONG>EVENT_SEND</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no task readied</TD> + <TD ALIGN=center>26</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>60</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>89</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>EVENT_RECEIVE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>obtain current events</TD> + <TD ALIGN=center><1</TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>27</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center>25</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center>94</TD></TR> + + </TABLE> +</CENTER> +@end html +@end ifset +@section Signal Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{SIGNAL\_CATCH}{13} +\rtemsdirective{SIGNAL\_SEND} +\rtemscase{returns to caller}{34} +\rtemscase{signal to self}{59} +\rtemsdirective{EXIT ASR OVERHEAD} +\rtemscase{returns to calling task} + {39} +\rtemscase{returns to preempting task} + {60} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet +@item SIGNAL_CATCH +@itemize - +@item only case: 13 +@end itemize + +@item SIGNAL_SEND +@itemize - +@item returns to caller: 34 +@item signal to self: 59 +@end itemize + +@item EXIT ASR OVERHEAD +@itemize - +@item returns to calling task: 39 +@item returns to preempting task: 60 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>SIGNAL_CATCH</STRONG></TD> + <TD ALIGN=center>13</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>SIGNAL_SEND</TD></TR> + <TR><TD ALIGN=left><dd>returns to caller</TD> + <TD ALIGN=center>34</TD></TR> + <TR><TD ALIGN=left><dd>signal to self</TD> + <TD ALIGN=center>59</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>EXIT ASR OVERHEAD</TD></TR> + <TR><TD ALIGN=left><dd>returns to calling task</TD> + <TD ALIGN=center> + 39</TD></TR> + <TR><TD ALIGN=left><dd>returns to preempting task</TD> + <TD ALIGN=center> + 60</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Partition Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{PARTITION\_CREATE}{83} +\rtemsonecase{PARTITION\_IDENT}{730} +\rtemsonecase{PARTITION\_DELETE}{40} +\rtemsdirective{PARTITION\_GET\_BUFFER} +\rtemscase{available}{34} +\rtemscase{not available}{33} +\rtemsonecase{PARTITION\_RETURN\_BUFFER} + {33} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item PARTITION_CREATE +@itemize - +@item only case: 83 +@end itemize + +@item PARTITION_IDENT +@itemize - +@item only case: 730 +@end itemize + +@item PARTITION_DELETE +@itemize - +@item only case: 40 +@end itemize + +@item PARTITION_GET_BUFFER +@itemize - +@item available: 34 +@item not available: 33 +@end itemize + +@item PARTITION_RETURN_BUFFER +@itemize - +@item only case: 40 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>PARTITION_CREATE</STRONG></TD> + <TD ALIGN=center>83</TD></TR> +<TR><TD ALIGN=left><STRONG>PARTITION_IDENT</STRONG></TD> + <TD ALIGN=center>730</TD></TR> +<TR><TD ALIGN=left><STRONG>PARTITION_DELETE</STRONG></TD> + <TD ALIGN=center>40</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>PARTITION_GET_BUFFER</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>34</TD></TR> + <TR><TD ALIGN=left><dd>not available</TD> + <TD ALIGN=center>33</TD></TR> + <TR><TD ALIGN=left><STRONG>PARTITION_RETURN_BUFFER</STRONG></TD> + <TD ALIGN=center>33</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Region Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{REGION\_CREATE}{68} +\rtemsonecase{REGION\_IDENT}{739} +\rtemsonecase{REGION\_DELETE}{39} +\rtemsdirective{REGION\_GET\_SEGMENT} +\rtemscase{available}{49} +\rtemscase{not available -- NO\_WAIT} + {45} +\rtemscase{not available -- caller blocks} + {127} +\rtemsdirective{REGION\_RETURN\_SEGMENT} +\rtemscase{no waiting tasks}{52} +\rtemscase{task readied -- returns to caller} + {113} +\rtemscase{task readied -- preempts caller} + {138} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item REGION_CREATE +@itemize - +@item only case: 68 +@end itemize + +@item REGION_IDENT +@itemize - +@item only case: 739 +@end itemize + +@item REGION_DELETE +@itemize - +@item only case: 39 +@end itemize + +@item REGION_GET_SEGMENT +@itemize - +@item available: 49 +@item not available -- NO_WAIT: 45 +@item not available -- caller blocks: 127 +@end itemize + +@item REGION_RETURN_SEGMENT +@itemize - +@item no waiting tasks: 52 +@item task readied -- returns to caller: 113 +@item task readied -- preempts caller: 138 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>REGION_CREATE</STRONG></TD> + <TD ALIGN=center>68</TD></TR> +<TR><TD ALIGN=left><STRONG>REGION_IDENT</STRONG></TD> + <TD ALIGN=center>739</TD></TR> +<TR><TD ALIGN=left><STRONG>REGION_DELETE</STRONG></TD> + <TD ALIGN=center>39</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>REGION_GET_SEGMENT</TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>49</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center> + 45</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center> + 127</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>REGION_RETURN_SEGMENT</TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>52</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center> + 113</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center> + 138</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Dual-Ported Memory Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{PORT\_CREATE}{39} +\rtemsonecase{PORT\_IDENT}{728} +\rtemsonecase{PORT\_DELETE}{39} +\rtemsonecase{PORT\_INTERNAL\_TO\_EXTERNAL} + {26} +\rtemsonecase{PORT\_EXTERNAL\_TO\_INTERNAL} + {26} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item PORT_CREATE +@itemize - +@item only case: 39 +@end itemize + +@item PORT_IDENT +@itemize - +@item only case: 728 +@end itemize + +@item PORT_DELETE +@itemize - +@item only case: 39 +@end itemize + +@item PORT_INTERNAL_TO_EXTERNAL +@itemize - +@item only case: 26 +@end itemize + +@item PORT_EXTERNAL_TO_INTERNAL +@itemize - +@item only case: 26 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>PORT_CREATE</STRONG></TD> + <TD ALIGN=center>39</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_IDENT</STRONG></TD> + <TD ALIGN=center>728</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_DELETE</STRONG></TD> + <TD ALIGN=center>39</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_INTERNAL_TO_EXTERNAL</STRONG></TD> + <TD ALIGN=center>26</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_EXTERNAL_TO_INTERNAL</STRONG></TD> + <TD ALIGN=center>26</TD></TR> + + </TABLE> +</CENTER> +@end html +@end ifset + +@section I/O Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{IO\_INITIALIZE}{4} +\rtemsonecase{IO\_OPEN}{1} +\rtemsonecase{IO\_CLOSE}{1} +\rtemsonecase{IO\_READ}{<1} +\rtemsonecase{IO\_WRITE}{1} +\rtemsonecase{IO\_CONTROL}{1} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item IO_INITIALIZE +@itemize - +@item only case: 4 +@end itemize + +@item IO_OPEN +@itemize - +@item only case: 1 +@end itemize + +@item IO_CLOSE +@itemize - +@item only case: 1 +@end itemize + +@item IO_READ +@itemize - +@item only case: <1 +@end itemize + +@item IO_WRITE +@itemize - +@item only case: 1 +@end itemize + +@item IO_CONTROL +@itemize - +@item only case: 1 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>IO_INITIALIZE</STRONG></TD> + <TD ALIGN=center>4</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_OPEN</STRONG></TD> + <TD ALIGN=center>1</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_CLOSE</STRONG></TD> + <TD ALIGN=center>1</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_READ</STRONG></TD> + <TD ALIGN=center><1</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_WRITE</STRONG></TD> + <TD ALIGN=center>1</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_CONTROL</STRONG></TD> + <TD ALIGN=center>1</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Rate Monotonic Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{RATE\_MONOTONIC\_CREATE}{36} +\rtemsonecase{RATE\_MONOTONIC\_IDENT}{725} +\rtemsonecase{RATE\_MONOTONIC\_CANCEL}{39} +\rtemsdirective{RATE\_MONOTONIC\_DELETE} +\rtemscase{active}{53} +\rtemscase{inactive}{49} +\rtemsdirective{RATE\_MONOTONIC\_PERIOD} +\rtemscase{initiate period -- returns to caller} + {53} +\rtemscase{conclude period -- caller blocks} + {82} +\rtemscase{obtain status}{30} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item RATE_MONOTONIC_CREATE +@itemize - +@item only case: 36 +@end itemize + +@item RATE_MONOTONIC_IDENT +@itemize - +@item only case: 725 +@end itemize + +@item RATE_MONOTONIC_CANCEL +@itemize - +@item only case: 39 +@end itemize + +@item RATE_MONOTONIC_DELETE +@itemize - +@item active: 53 +@item inactive: 49 +@end itemize + +@item RATE_MONOTONIC_PERIOD +@itemize - +@item initiate period -- returns to caller: 53 +@item conclude period -- caller blocks: 82 +@item obtain status: 30 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_CREATE</STRONG></TD> + <TD ALIGN=center>36</TD></TR> +<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_IDENT</STRONG></TD> + <TD ALIGN=center>725</TD></TR> +<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_CANCEL</STRONG></TD> + <TD ALIGN=center>39</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>RATE_MONOTONIC_DELETE</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>53</TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>49</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>RATE_MONOTONIC_PERIOD</TD></TR> + <TR><TD ALIGN=left><dd>initiate period -- returns to caller</TD> + <TD ALIGN=center> + 53</TD></TR> + <TR><TD ALIGN=left><dd>conclude period -- caller blocks</TD> + <TD ALIGN=center> + 82</TD></TR> + <TR><TD ALIGN=left><dd>obtain status</TD> + <TD ALIGN=center>30</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@tex +\global\advance \smallskipamount by 4pt +@end tex + +@tex +\global\advance \smallskipamount by 4pt +@end tex diff --git a/doc/supplements/i960/Makefile b/doc/supplements/i960/Makefile deleted file mode 100644 index eac67b94d0..0000000000 --- a/doc/supplements/i960/Makefile +++ /dev/null @@ -1,161 +0,0 @@ -# -# COPYRIGHT (c) 1988-1999. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. -# -# $Id$ -# - -PROJECT=i960 - -include ../../Make.config - -REPLACE=../../tools/word-replace - -all: html info ps pdf - -dirs: - $(make-dirs) - -COMMON_FILES=../../common/cpright.texi ../../common/setup.texi - -GENERATED_FILES=\ - cpumodel.texi callconv.texi memmodel.texi intr.texi fatalerr.texi \ - bsp.texi cputable.texi timing.texi wksheets.texi timeCVME961.texi - -FILES= $(PROJECT).texi \ - preface.texi \ - $(GENERATED_FILES) - -info: dirs c_i960 - cp c_$(PROJECT) $(INFO_INSTALL) - -c_i960: $(FILES) - $(MAKEINFO) $(PROJECT).texi - -dvi: dirs $(PROJECT).dvi -ps: dirs $(PROJECT).ps -pdf: dirs $(PROJECT).pdf - -$(PROJECT).pdf: $(FILES) - $(TEXI2PDF) $(PROJECT).texi - cp $(PROJECT).pdf $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).ps: $(PROJECT).dvi - dvips -o $(PROJECT).ps $(PROJECT).dvi - cp $(PROJECT).ps $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).dvi: $(FILES) - $(TEXI2DVI) $(PROJECT).texi - cp $(PROJECT).dvi $(WWW_INSTALL)/$(PROJECT) - -html: dirs $(FILES) - -mkdir -p $(WWW_INSTALL)/$(PROJECT) - $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \ - $(PROJECT).texi - -clean: - rm -f *.o $(PROG) *.txt core $(PROJECT).pdf - rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f $(PROJECT) $(PROJECT)-* - rm -f c_i960 c_i960-* - rm -f intr.t $(GENERATED_FILES) - rm -f wksheets.t wksheets_NOTIMES.t - rm -f *.fixed _* timing.t timing.texi - rm -f timeCVME961_.t timeCVME961_.texi - -# -# Chapters which get automatic processing -# - -cpumodel.texi: cpumodel.t Makefile - $(BMENU) -p "Preface" \ - -u "Top" \ - -n "Calling Conventions" ${*}.t - -callconv.texi: callconv.t Makefile - $(BMENU) -p "CPU Model Dependent Features Floating Point Unit" \ - -u "Top" \ - -n "Memory Model" ${*}.t - -memmodel.texi: memmodel.t Makefile - $(BMENU) -p "Calling Conventions Leaf Procedures" \ - -u "Top" \ - -n "Interrupt Processing" ${*}.t - -# Interrupt Chapter: -# 1. Replace Times and Sizes -# 2. Build Node Structure -intr.t: intr_NOTIMES.t CVME961_TIMES - ${REPLACE} -p CVME961_TIMES intr_NOTIMES.t - mv intr_NOTIMES.t.fixed intr.t - -intr.texi: intr.t Makefile - $(BMENU) -p "Memory Model Flat Memory Model" \ - -u "Top" \ - -n "Default Fatal Error Processing" ${*}.t - -fatalerr.texi: fatalerr.t Makefile - $(BMENU) -p "Interrupt Processing Interrupt Stack" \ - -u "Top" \ - -n "Board Support Packages" ${*}.t - -bsp.texi: bsp.t Makefile - $(BMENU) -p "Default Fatal Error Processing Default Fatal Error Handler Operations" \ - -u "Top" \ - -n "Processor Dependent Information Table" ${*}.t - -cputable.texi: cputable.t Makefile - $(BMENU) -p "Board Support Packages Processor Initialization" \ - -u "Top" \ - -n "Memory Requirements" ${*}.t - - -# Worksheets Chapter: -# 1. Obtain the Shared File -# 2. Replace Times and Sizes -# 3. Build Node Structure - -wksheets_NOTIMES.t: ../../common/wksheets.t - cp ../../common/wksheets.t wksheets_NOTIMES.t - -wksheets.t: wksheets_NOTIMES.t CVME961_TIMES - ${REPLACE} -p CVME961_TIMES wksheets_NOTIMES.t - mv wksheets_NOTIMES.t.fixed wksheets.t - -wksheets.texi: wksheets.t Makefile - $(BMENU) -p "Processor Dependent Information Table CPU Dependent Information Table" \ - -u "Top" \ - -n "Timing Specification" ${*}.t - -# Timing Specification Chapter: -# 1. Copy the Shared File -# 3. Build Node Structure - -timing.t: ../../common/timing.t - cp ../../common/timing.t timing.t - -timing.texi: timing.t Makefile - $(BMENU) -p "Memory Requirements RTEMS RAM Workspace Worksheet" \ - -u "Top" \ - -n "CVME961 Timing Data" ${*}.t - -# Timing Data for BSP Chapter: -# 1. Copy the Shared File -# 2. Replace Times and Sizes -# 3. Build Node Structure - -timeCVME961_.t: ../../common/timetbl.t timeCVME961.t - cat timeCVME961.t ../../common/timetbl.t >timeCVME961_.t - @echo >>timeCVME961_.t - @echo "@tex" >>timeCVME961_.t - @echo "\\global\\advance \\smallskipamount by 4pt" >>timeCVME961_.t - @echo "@end tex" >>timeCVME961_.t - ${REPLACE} -p CVME961_TIMES timeCVME961_.t - mv timeCVME961_.t.fixed timeCVME961_.t - -timeCVME961.texi: timeCVME961_.t Makefile - $(BMENU) -p "Timing Specification Terminology" \ - -u "Top" \ - -n "Command and Variable Index" timeCVME961_.t - mv timeCVME961_.texi timeCVME961.texi diff --git a/doc/supplements/i960/Makefile.am b/doc/supplements/i960/Makefile.am new file mode 100644 index 0000000000..b78decbc92 --- /dev/null +++ b/doc/supplements/i960/Makefile.am @@ -0,0 +1,116 @@ +# +# COPYRIGHT (c) 1988-1999. +# On-Line Applications Research Corporation (OAR). +# All rights reserved. +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign + +PROJECT=i960 + +include $(top_srcdir)/project.am +include $(top_srcdir)/supplements/supplement.am + +COMMON_FILES=$(top_srcdir)/common/cpright.texi $(top_builddir)/common/setup.texi + +GENERATED_FILES=\ + cpumodel.texi callconv.texi memmodel.texi intr.texi fatalerr.texi \ + bsp.texi cputable.texi timing.texi wksheets.texi timeCVME961.texi + +FILES= preface.texi + +info_TEXINFOS = i960.texi +i960_TEXINFOS = $(FILES) $(COMMON_FILES) $(GENERATED_FILES) + +# +# Chapters which get automatic processing +# + +cpumodel.texi: cpumodel.t + $(BMENU) -p "Preface" \ + -u "Top" \ + -n "Calling Conventions" $< + +callconv.texi: callconv.t + $(BMENU) -p "CPU Model Dependent Features Floating Point Unit" \ + -u "Top" \ + -n "Memory Model" $< + +memmodel.texi: memmodel.t + $(BMENU) -p "Calling Conventions Leaf Procedures" \ + -u "Top" \ + -n "Interrupt Processing" $< + +# Interrupt Chapter: +# 1. Replace Times and Sizes +# 2. Build Node Structure +intr.texi: intr_NOTIMES.t CVME961_TIMES + ${REPLACE2} -p $(srcdir)/CVME961_TIMES $(srcdir)/intr_NOTIMES.t intr.t + $(BMENU) -p "Memory Model Flat Memory Model" \ + -u "Top" \ + -n "Default Fatal Error Processing" intr.t +CLEANFILES += intr.t + +fatalerr.texi: fatalerr.t + $(BMENU) -p "Interrupt Processing Interrupt Stack" \ + -u "Top" \ + -n "Board Support Packages" $< + +bsp.texi: bsp.t + $(BMENU) -p "Default Fatal Error Processing Default Fatal Error Handler Operations" \ + -u "Top" \ + -n "Processor Dependent Information Table" $< + +cputable.texi: cputable.t + $(BMENU) -p "Board Support Packages Processor Initialization" \ + -u "Top" \ + -n "Memory Requirements" $< + + +# Worksheets Chapter: +# 1. Obtain the Shared File +# 2. Replace Times and Sizes +# 3. Build Node Structure + +wksheets.texi: $(top_srcdir)/common/wksheets.t CVME961_TIMES + ${REPLACE2} -p $(srcdir)/CVME961_TIMES \ + $(top_srcdir)/common/wksheets.t wksheets.t + $(BMENU) -p "Processor Dependent Information Table CPU Dependent Information Table" \ + -u "Top" \ + -n "Timing Specification" wksheets.t +CLEANFILES += wksheets.t + +# Timing Specification Chapter: +# 1. Copy the Shared File +# 3. Build Node Structure + +timing.texi: $(top_srcdir)/common/timing.t + cp $(top_srcdir)/common/timing.t timing.t + $(BMENU) -p "Memory Requirements RTEMS RAM Workspace Worksheet" \ + -u "Top" \ + -n "CVME961 Timing Data" timing.t +CLEANFILES += timing.t + +# Timing Data for BSP Chapter: +# 1. Copy the Shared File +# 2. Replace Times and Sizes +# 3. Build Node Structure + +timeCVME961_.t: $(top_srcdir)/common/timetbl.t timeCVME961.t + cat timeCVME961.t $(top_srcdir)/common/timetbl.t >timeCVME961_.t + @echo >>timeCVME961_.t + @echo "@tex" >>timeCVME961_.t + @echo "\\global\\advance \\smallskipamount by 4pt" >>timeCVME961_.t + @echo "@end tex" >>timeCVME961_.t + ${REPLACE} -p CVME961_TIMES timeCVME961_.t + mv timeCVME961_.t.fixed timeCVME961_.t + +timeCVME961.texi: timeCVME961_.t + $(BMENU) -p "Timing Specification Terminology" \ + -u "Top" \ + -n "Command and Variable Index" timeCVME961_.t + mv timeCVME961_.texi timeCVME961.texi + +EXTRA_DIST = CVME961_TIMES *.t diff --git a/doc/supplements/i960/i960.texi b/doc/supplements/i960/i960.texi index 68b7944afe..ccfc372a7b 100644 --- a/doc/supplements/i960/i960.texi +++ b/doc/supplements/i960/i960.texi @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c %**start of header -@setfilename c_i960 +@setfilename i960 @syncodeindex vr fn @synindex ky cp @paragraphindent 0 @@ -75,7 +75,7 @@ END-INFO-DIR-ENTRY @include timeCVME961.texi @ifinfo @node Top, Preface, (dir), (dir) -@top c_i960 +@top i960 This is the online version of the RTEMS Intel i960 Applications Supplement. diff --git a/doc/supplements/i960/timeCVME961_.t b/doc/supplements/i960/timeCVME961_.t new file mode 100644 index 0000000000..22c0dafe7a --- /dev/null +++ b/doc/supplements/i960/timeCVME961_.t @@ -0,0 +1,1422 @@ +@c +@c COPYRIGHT (c) 1988-1999. +@c On-Line Applications Research Corporation (OAR). +@c All rights reserved. +@c +@c $Id$ +@c + +@include ../../common/timemac.texi +@tex +\global\advance \smallskipamount by -4pt +@end tex + +@chapter CVME961 Timing Data + +NOTE: The CVME961 board used by the RTEMS Project to +obtain i960CA times is currently broken. The information in +this chapter was obtained using Release 3.2.1. + +@section Introduction + +The timing data for the i960CA version of RTEMS is +provided along with the target dependent aspects concerning the +gathering of the timing data. The hardware platform used to +gather the times is described to give the reader a better +understanding of each directive time provided. Also, provided +is a description of the interrupt latency and the context +switch times as they pertain to the i960CA version of RTEMS. + +@section Hardware Platform + +All times reported except for the maximum period +interrupts are disabled by RTEMS were measured using a Cyclone +Microsystems CVME961 board. The CVME961 is a 33 Mhz board with +dynamic RAM which has two wait state dynamic memory (four CPU +cycles) for read accesses and one wait state (two CPU cycles) +for write accesses. The Z8536 on a SQUALL SQSIO4 mezzanine +board was used to measure elapsed time with one-half microsecond +resolution. All sources of hardware interrupts are disabled, +although the interrupt level of the i960CA allows all interrupts. + +The maximum interrupt disable period was measured by +summing the number of CPU cycles required by each assembly +language instruction executed while interrupts were disabled. +Zero wait state memory was assumed. The total CPU cycles +executed with interrupts disabled, including the instructions to +disable and enable interrupts, was divided by 33 to simulate a +i960CA executing at 33 Mhz with zero wait states. + +@section Interrupt Latency + +The maximum period with interrupts disabled within +RTEMS is less than +2.5 microseconds including the instructions +which disable and re-enable interrupts. The time required for +the i960CA to generate an interrupt using the sysctl +instruction, vectoring to an interrupt handler, and for the +RTEMS entry overhead before invoking the user's interrupt +handler are a total of 37 +microseconds. These combine to yield +a worst case interrupt latency of less than +2.5 + 37 +microseconds. [NOTE: The maximum period with interrupts +disabled within RTEMS was last calculated for Release +3.2.1.] + +It should be noted again that the maximum period with +interrupts disabled within RTEMS is hand-timed. The interrupt +vector and entry overhead time was generated on the Cyclone +CVME961 benchmark platform using the sysctl instruction as the +interrupt source. + +@section Context Switch + +The RTEMS processor context switch time is 1 +microseconds on the Cyclone CVME961 benchmark platform. This +time represents the raw context switch time with no user +extensions configured. Additional execution time is required +when a TSWITCH user extension is configured. The use of the +TSWITCH extension is application dependent. Thus, its execution +time is not considered part of the base context switch time. + +The CVME961 has no hardware floating point capability +and floating point tasks are not supported. + +The following table summarizes the context switch +times for the CVME961 benchmark platform: + +@c ****** This comment is here to remind you not to edit the timetbl.t +@c ****** in any directory but common. +@c +@c Time Table Template +@c +@c COPYRIGHT (c) 1988-1999. +@c On-Line Applications Research Corporation (OAR). +@c All rights reserved. +@c +@c $Id$ +@c + +@ifset use-tex +@sp 1 +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{No Floating Point Contexts}{1} +\rtemsdirective{Floating Point Contexts} +\rtemscase{restore first FP task}{2} +\rtemscase{save initialized, restore initialized}{3} +\rtemscase{save idle, restore initialized}{4} +\rtemscase{save idle, restore idle}{5} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet +@item No Floating Point Contexts +@itemize - +@item only case: 1 +@end itemize +@item Floating Point Contexts +@itemize - +@item restore first FP task: 2 +@item save initialized, restore initialized: 3 +@item save idle, restore initialized: 4 +@item save idle, restore idle: 4 +@end itemize +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>No Floating Point Contexts</STRONG></TD> + <TD ALIGN=center>1</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>Floating Point Contexts</TR> + <TR><TD ALIGN=left><dd>restore first FP task</TD> + <TD ALIGN=center>2</TD> + <TR><TD ALIGN=left><dd>save initialized, restore initialized</TD> + <TD ALIGN=center>3</TD> + <TR><TD ALIGN=left><dd>save idle, restore initialized</TD> + <TD ALIGN=center>4</TD> + <TR><TD ALIGN=left><dd>save idle, restore idle</TD> + <TD ALIGN=center>5</TD> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Directive Times + +This sections is divided into a number of +subsections, each of which contains a table listing the +execution times of that manager's directives. + +@page +@section Task Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{TASK\_CREATE}{6} +\rtemsonecase{TASK\_IDENT}{7} +\rtemsonecase{TASK\_START}{8} +\rtemsdirective{TASK\_RESTART} +\rtemscase{calling task}{9} +\rtemscase{suspended task -- returns to caller} + {9} +\rtemscase{blocked task -- returns to caller} + {10} +\rtemscase{ready task -- returns to caller} + {11} +\rtemscase{suspended task -- preempts caller} + {12} +\rtemscase{blocked task -- preempts caller} + {13} +\rtemscase{ready task -- preempts caller} + {14} +\rtemsdirective{TASK\_DELETE} +\rtemscase{calling task}{15} +\rtemscase{suspended task}{16} +\rtemscase{blocked task}{17} +\rtemscase{ready task}{18} +\rtemsdirective{TASK\_SUSPEND} +\rtemscase{calling task}{19} +\rtemscase{returns to caller}{20} +\rtemsdirective{TASK\_RESUME} +\rtemscase{task readied -- returns to caller} + {21} +\rtemscase{task readied -- preempts caller} + {22} +\rtemsdirective{TASK\_SET\_PRIORITY} +\rtemscase{obtain current priority} + {23} +\rtemscase{returns to caller}{24} +\rtemscase{preempts caller}{25} +\rtemsdirective{TASK\_MODE} +\rtemscase{obtain current mode}{26} +\rtemscase{no reschedule}{27} +\rtemscase{reschedule -- returns to caller} + {28} +\rtemscase{reschedule -- preempts caller} + {29} +\rtemsonecase{TASK\_GET\_NOTE}{30} +\rtemsonecase{TASK\_SET\_NOTE}{31} +\rtemsdirective{TASK\_WAKE\_AFTER} +\rtemscase{yield -- returns to caller} + {32} +\rtemscase{yield -- preempts caller} + {33} +\rtemsonecase{TASK\_WAKE\_WHEN}{34} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item TASK_CREATE +@itemize - +@item only case: 6 +@end itemize + +@item TASK_IDENT +@itemize - +@item only case: 7 +@end itemize + +@item TASK_START +@itemize - +@item only case: 8 +@end itemize + +@item TASK_RESTART +@itemize - +@item calling task: 9 +@item suspended task -- returns to caller: 9 +@item blocked task -- returns to caller: 10 +@item ready task -- returns to caller: 11 +@item suspended task -- preempts caller: 12 +@item blocked task -- preempts caller: 13 +@item ready task -- preempts caller: 14 +@end itemize + +@item TASK_DELETE +@itemize - +@item calling task: 15 +@item suspended task: 16 +@item blocked task: 17 +@item ready task: 18 +@end itemize + +@item TASK_SUSPEND +@itemize - +@item calling task: 19 +@item returns to caller: 20 +@end itemize + +@item TASK_RESUME +@itemize - +@item task readied -- returns to caller: 21 +@item task readied -- preempts caller: 22 +@end itemize + +@item TASK_SET_PRIORITY +@itemize - +@item obtain current priority: 23 +@item returns to caller: 24 +@item preempts caller: 25 +@end itemize + +@item TASK_MODE +@itemize - +@item obtain current mode: 26 +@item no reschedule: 27 +@item reschedule -- returns to caller: 28 +@item reschedule -- preempts caller: 29 +@end itemize + +@item TASK_GET_NOTE +@itemize - +@item only case: 30 +@end itemize + +@item TASK_SET_NOTE +@itemize - +@item only case: 31 +@end itemize + +@item TASK_WAKE_AFTER +@itemize - +@item yield -- returns to caller: 32 +@item yield -- preempts caller: 33 +@end itemize + +@item TASK_WAKE_WHEN +@itemize - +@item only case: 34 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>TASK_CREATE</STRONG></TD> + <TD ALIGN=center>6</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_IDENT</STRONG></TD> + <TD ALIGN=center>7</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_START</STRONG></TD> + <TD ALIGN=center>8</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_RESTART</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>calling task</TD> + <TD ALIGN=center>9</TD></TR> + <TR><TD ALIGN=left><dd>suspended task -- returns to caller</TD> + <TD ALIGN=center>9</TD></TR> + <TR><TD ALIGN=left><dd>blocked task -- returns to caller</TD> + <TD ALIGN=center>10</TD></TR> + <TR><TD ALIGN=left><dd>ready task -- returns to caller</TD> + <TD ALIGN=center>11</TD></TR> + <TR><TD ALIGN=left><dd>suspended task -- preempts caller</TD> + <TD ALIGN=center>12</TD></TR> + <TR><TD ALIGN=left><dd>blocked task -- preempts caller</TD> + <TD ALIGN=center>13</TD></TR> + <TR><TD ALIGN=left><dd>ready task -- preempts caller</TD> + <TD ALIGN=center>14</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_DELETE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>calling task</TD> + <TD ALIGN=center>15</TD></TR> + <TR><TD ALIGN=left><dd>suspended task</TD> + <TD ALIGN=center>16</TD></TR> + <TR><TD ALIGN=left><dd>blocked task</TD> + <TD ALIGN=center>17</TD></TR> + <TR><TD ALIGN=left><dd>ready task</TD> + <TD ALIGN=center>18</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_SUSPEND</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>calling task</TD> + <TD ALIGN=center>19</TD></TR> + <TR><TD ALIGN=left><dd>returns to caller</TD> + <TD ALIGN=center>20</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_RESUME</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>21</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>22</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_SET_PRIORITY</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>obtain current priority</TD> + <TD ALIGN=center>23</TD></TR> + <TR><TD ALIGN=left><dd>returns to caller</TD> + <TD ALIGN=center>24</TD></TR> + <TR><TD ALIGN=left><dd>preempts caller</TD> + <TD ALIGN=center>25</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_MODE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>obtain current mode</TD> + <TD ALIGN=center>26</TD></TR> + <TR><TD ALIGN=left><dd>no reschedule</TD> + <TD ALIGN=center>27</TD></TR> + <TR><TD ALIGN=left><dd>reschedule -- returns to caller</TD> + <TD ALIGN=center>28</TD></TR> + <TR><TD ALIGN=left><dd>reschedule -- preempts caller</TD> + <TD ALIGN=center>29</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_GET_NOTE</STRONG></TD> + <TD ALIGN=center>30</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_SET_NOTE</STRONG></TD> + <TD ALIGN=center>31</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_WAKE_AFTER</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>yield -- returns to caller</TD> + <TD ALIGN=center>32</TD></TR> + <TR><TD ALIGN=left><dd>yield -- preempts caller</TD> + <TD ALIGN=center>33</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_WAKE_WHEN</STRONG></TD> + <TD ALIGN=center>34</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Interrupt Manager + +It should be noted that the interrupt entry times +include vectoring the interrupt handler. + +@ifset use-tex +@sp 1 +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsdirective{Interrupt Entry Overhead} +\rtemscase{returns to nested interrupt}{35} +\rtemscase{returns to interrupted task} + {36} +\rtemscase{returns to preempting task} + {37} +\rtemsdirective{Interrupt Exit Overhead} +\rtemscase{returns to nested interrupt}{38} +\rtemscase{returns to interrupted task} + {39} +\rtemscase{returns to preempting task} + {40} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item Interrupt Entry Overhead +@itemize - +@item returns to nested interrupt: 35 +@item returns to interrupted task: 36 +@item returns to preempting task: 37 +@end itemize + +@item Interrupt Exit Overhead +@itemize - +@item returns to nested interrupt: 38 +@item returns to interrupted task: 39 +@item returns to preempting task: 40 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left COLSPAN=2><STRONG>Interrupt Entry Overhead</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>returns to nested interrupt</TD> + <TD ALIGN=center>35</TD></TR> + <TR><TD ALIGN=left><dd>returns to interrupted task</TD> + <TD ALIGN=center>36</TD></TR> + <TR><TD ALIGN=left><dd>returns to preempting task</TD> + <TD ALIGN=center>37</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>Interrupt Exit Overhead</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>returns to nested interrupt</TD> + <TD ALIGN=center>38</TD></TR> + <TR><TD ALIGN=left><dd>returns to interrupted task</TD> + <TD ALIGN=center>39</TD></TR> + <TR><TD ALIGN=left><dd>returns to preempting task</TD> + <TD ALIGN=center>40</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + + +@section Clock Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{CLOCK\_SET}{41} +\rtemsonecase{CLOCK\_GET}{42} +\rtemsonecase{CLOCK\_TICK}{43} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item CLOCK_SET +@itemize - +@item only case: 41 +@end itemize + +@item CLOCK_GET +@itemize - +@item only case: 42 +@end itemize + +@item CLOCK_TICK +@itemize - +@item only case: 43 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>CLOCK_SET</STRONG></TD> + <TD ALIGN=center>41</TD></TR> +<TR><TD ALIGN=left><STRONG>CLOCK_GET</STRONG></TD> + <TD ALIGN=center>42</TD></TR> +<TR><TD ALIGN=left><STRONG>CLOCK_TICK</STRONG></TD> + <TD ALIGN=center>43</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Timer Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{TIMER\_CREATE}{44} +\rtemsonecase{TIMER\_IDENT}{45} +\rtemsdirective{TIMER\_DELETE} +\rtemscase{inactive}{46} +\rtemscase{active}{47} +\rtemsdirective{TIMER\_FIRE\_AFTER} +\rtemscase{inactive}{48} +\rtemscase{active}{49} +\rtemsdirective{TIMER\_FIRE\_WHEN} +\rtemscase{inactive}{50} +\rtemscase{active}{51} +\rtemsdirective{TIMER\_RESET} +\rtemscase{inactive}{52} +\rtemscase{active}{53} +\rtemsdirective{TIMER\_CANCEL} +\rtemscase{inactive}{54} +\rtemscase{active}{55} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item TIMER_CREATE +@itemize - +@item only case: 44 +@end itemize + +@item TIMER_IDENT +@itemize - +@item only case: 45 +@end itemize + +@item TIMER_DELETE +@itemize - +@item inactive: 46 +@item active: 47 +@end itemize + +@item TIMER_FIRE_AFTER +@itemize - +@item inactive: 48 +@item active: 49 +@end itemize + +@item TIMER_FIRE_WHEN +@itemize - +@item inactive: TIMER_FIRE_WHEN_INACTIVE +@item active: TIMER_FIRE_WHEN_ACTIVE +@end itemize + +@item TIMER_RESET +@itemize - +@item inactive: TIMER_RESET_INACTIVE +@item active: TIMER_RESET_ACTIVE +@end itemize + +@item TIMER_CANCEL +@itemize - +@item inactive: TIMER_CANCEL_INACTIVE +@item active: TIMER_CANCEL_ACTIVE +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>TIMER_CREATE</STRONG></TD> + <TD ALIGN=center>44</TD></TR> +<TR><TD ALIGN=left><STRONG>TIMER_IDENT</STRONG></TD> + <TD ALIGN=center>45</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_DELETE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>46</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>47</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_FIRE_AFTER</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>48</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>49</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_FIRE_WHEN</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>50</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>51</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_RESET</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>52</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>53</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_CANCEL</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>54</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>55</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Semaphore Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{SEMAPHORE\_CREATE}{56} +\rtemsonecase{SEMAPHORE\_IDENT}{57} +\rtemsonecase{SEMAPHORE\_DELETE}{58} +\rtemsdirective{SEMAPHORE\_OBTAIN} +\rtemscase{available}{59} +\rtemscase{not available -- NO\_WAIT} + {60} +\rtemscase{not available -- caller blocks} + {61} +\rtemsdirective{SEMAPHORE\_RELEASE} +\rtemscase{no waiting tasks}{62} +\rtemscase{task readied -- returns to caller} + {63} +\rtemscase{task readied -- preempts caller} + {64} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item SEMAPHORE_CREATE +@itemize - +@item only case: 56 +@end itemize + +@item SEMAPHORE_IDENT +@itemize - +@item only case: 57 +@end itemize + +@item SEMAPHORE_DELETE +@itemize - +@item only case: 58 +@end itemize + +@item SEMAPHORE_OBTAIN +@itemize - +@item available: 59 +@item not available -- NO_WAIT: 60 +@item not available -- caller blocks: 61 +@end itemize + +@item SEMAPHORE_RELEASE +@itemize - +@item no waiting tasks: 62 +@item task readied -- returns to caller: 63 +@item task readied -- preempts caller: 64 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>SEMAPHORE_CREATE</STRONG></TD> + <TD ALIGN=center>56</TD></TR> +<TR><TD ALIGN=left><STRONG>SEMAPHORE_IDENT</STRONG></TD> + <TD ALIGN=center>57</TD></TR> +<TR><TD ALIGN=left><STRONG>SEMAPHORE_DELETE</STRONG></TD> + <TD ALIGN=center>58</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>SEMAPHORE_OBTAIN</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>59</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center>60</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center>61</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>SEMAPHORE_RELEASE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>62</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>63</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>64</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Message Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{MESSAGE\_QUEUE\_CREATE}{65} +\rtemsonecase{MESSAGE\_QUEUE\_IDENT}{66} +\rtemsonecase{MESSAGE\_QUEUE\_DELETE}{67} +\rtemsdirective{MESSAGE\_QUEUE\_SEND} +\rtemscase{no waiting tasks} + {68} +\rtemscase{task readied -- returns to caller} + {69} +\rtemscase{task readied -- preempts caller} + {70} +\rtemsdirective{MESSAGE\_QUEUE\_URGENT} +\rtemscase{no waiting tasks}{71} +\rtemscase{task readied -- returns to caller} + {72} +\rtemscase{task readied -- preempts caller} + {73} +\rtemsdirective{MESSAGE\_QUEUE\_BROADCAST} +\rtemscase{no waiting tasks}{74} +\rtemscase{task readied -- returns to caller} + {75} +\rtemscase{task readied -- preempts caller} + {76} +\rtemsdirective{MESSAGE\_QUEUE\_RECEIVE} +\rtemscase{available}{77} +\rtemscase{not available -- NO\_WAIT} + {78} +\rtemscase{not available -- caller blocks} + {79} +\rtemsdirective{MESSAGE\_QUEUE\_FLUSH} +\rtemscase{no messages flushed}{80} +\rtemscase{messages flushed}{81} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item MESSAGE_QUEUE_CREATE +@itemize - +@item only case: 65 +@end itemize + +@item MESSAGE_QUEUE_IDENT +@itemize - +@item only case: 66 +@end itemize + +@item MESSAGE_QUEUE_DELETE +@itemize - +@item only case: 67 +@end itemize + +@item MESSAGE_QUEUE_SEND +@itemize - +@item no waiting tasks: 68 +@item task readied -- returns to caller: 69 +@item task readied -- preempts caller: 70 +@end itemize + +@item MESSAGE_QUEUE_URGENT +@itemize - +@item no waiting tasks: 71 +@item task readied -- returns to caller: 72 +@item task readied -- preempts caller: 73 +@end itemize + +@item MESSAGE_QUEUE_BROADCAST +@itemize - +@item no waiting tasks: 74 +@item task readied -- returns to caller: 75 +@item task readied -- preempts caller: 76 +@end itemize + +@item MESSAGE_QUEUE_RECEIVE +@itemize - +@item available: 77 +@item not available -- NO_WAIT: 78 +@item not available -- caller blocks: 79 +@end itemize + +@item MESSAGE_QUEUE_FLUSH +@itemize - +@item no messages flushed: 80 +@item messages flushed: 81 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_CREATE</STRONG></TD> + <TD ALIGN=center>65</TD></TR> +<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_IDENT</STRONG></TD> + <TD ALIGN=center>66</TD></TR> +<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_DELETE</STRONG></TD> + <TD ALIGN=center>67</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_SEND</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>68</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>69</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>70</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_URGENT</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>71</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>72</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>73</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_BROADCAST</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>74</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>75</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>76</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_RECEIVE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>77</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center>78</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center>79</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_FLUSH</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no messages flushed</TD> + <TD ALIGN=center>80</TD></TR> + <TR><TD ALIGN=left><dd>messages flushed</TD> + <TD ALIGN=center>81</TD></TR> + + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Event Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsdirective{EVENT\_SEND} +\rtemscase{no task readied}{82} +\rtemscase{task readied -- returns to caller} + {83} +\rtemscase{task readied -- preempts caller} + {84} +\rtemsdirective{EVENT\_RECEIVE} +\rtemscase{obtain current events}{85} +\rtemscase{available}{86} +\rtemscase{not available -- NO\_WAIT}{87} +\rtemscase{not available -- caller blocks} + {88} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item EVENT_SEND +@itemize - +@item no task readied: 82 +@item task readied -- returns to caller: 83 +@item task readied -- preempts caller: 84 +@end itemize + +@item EVENT_RECEIVE +@itemize - +@item obtain current events: 85 +@item available: 86 +@item not available -- NO_WAIT: 87 +@item not available -- caller blocks: 88 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left COLSPAN=2><STRONG>EVENT_SEND</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no task readied</TD> + <TD ALIGN=center>82</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>83</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>84</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>EVENT_RECEIVE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>obtain current events</TD> + <TD ALIGN=center>85</TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>86</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center>87</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center>88</TD></TR> + + </TABLE> +</CENTER> +@end html +@end ifset +@section Signal Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{SIGNAL\_CATCH}{89} +\rtemsdirective{SIGNAL\_SEND} +\rtemscase{returns to caller}{90} +\rtemscase{signal to self}{91} +\rtemsdirective{EXIT ASR OVERHEAD} +\rtemscase{returns to calling task} + {92} +\rtemscase{returns to preempting task} + {93} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet +@item SIGNAL_CATCH +@itemize - +@item only case: 89 +@end itemize + +@item SIGNAL_SEND +@itemize - +@item returns to caller: 90 +@item signal to self: 91 +@end itemize + +@item EXIT ASR OVERHEAD +@itemize - +@item returns to calling task: 92 +@item returns to preempting task: 93 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>SIGNAL_CATCH</STRONG></TD> + <TD ALIGN=center>89</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>SIGNAL_SEND</TD></TR> + <TR><TD ALIGN=left><dd>returns to caller</TD> + <TD ALIGN=center>90</TD></TR> + <TR><TD ALIGN=left><dd>signal to self</TD> + <TD ALIGN=center>91</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>EXIT ASR OVERHEAD</TD></TR> + <TR><TD ALIGN=left><dd>returns to calling task</TD> + <TD ALIGN=center> + 92</TD></TR> + <TR><TD ALIGN=left><dd>returns to preempting task</TD> + <TD ALIGN=center> + 93</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Partition Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{PARTITION\_CREATE}{94} +\rtemsonecase{PARTITION\_IDENT}{95} +\rtemsonecase{PARTITION\_DELETE}{96} +\rtemsdirective{PARTITION\_GET\_BUFFER} +\rtemscase{available}{97} +\rtemscase{not available}{98} +\rtemsonecase{PARTITION\_RETURN\_BUFFER} + {98} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item PARTITION_CREATE +@itemize - +@item only case: 94 +@end itemize + +@item PARTITION_IDENT +@itemize - +@item only case: 95 +@end itemize + +@item PARTITION_DELETE +@itemize - +@item only case: 96 +@end itemize + +@item PARTITION_GET_BUFFER +@itemize - +@item available: 97 +@item not available: 98 +@end itemize + +@item PARTITION_RETURN_BUFFER +@itemize - +@item only case: 99 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>PARTITION_CREATE</STRONG></TD> + <TD ALIGN=center>94</TD></TR> +<TR><TD ALIGN=left><STRONG>PARTITION_IDENT</STRONG></TD> + <TD ALIGN=center>95</TD></TR> +<TR><TD ALIGN=left><STRONG>PARTITION_DELETE</STRONG></TD> + <TD ALIGN=center>96</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>PARTITION_GET_BUFFER</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>97</TD></TR> + <TR><TD ALIGN=left><dd>not available</TD> + <TD ALIGN=center>98</TD></TR> + <TR><TD ALIGN=left><STRONG>PARTITION_RETURN_BUFFER</STRONG></TD> + <TD ALIGN=center>98</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Region Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{REGION\_CREATE}{100} +\rtemsonecase{REGION\_IDENT}{101} +\rtemsonecase{REGION\_DELETE}{102} +\rtemsdirective{REGION\_GET\_SEGMENT} +\rtemscase{available}{103} +\rtemscase{not available -- NO\_WAIT} + {104} +\rtemscase{not available -- caller blocks} + {105} +\rtemsdirective{REGION\_RETURN\_SEGMENT} +\rtemscase{no waiting tasks}{106} +\rtemscase{task readied -- returns to caller} + {107} +\rtemscase{task readied -- preempts caller} + {108} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item REGION_CREATE +@itemize - +@item only case: 100 +@end itemize + +@item REGION_IDENT +@itemize - +@item only case: 101 +@end itemize + +@item REGION_DELETE +@itemize - +@item only case: 102 +@end itemize + +@item REGION_GET_SEGMENT +@itemize - +@item available: 103 +@item not available -- NO_WAIT: 104 +@item not available -- caller blocks: 105 +@end itemize + +@item REGION_RETURN_SEGMENT +@itemize - +@item no waiting tasks: 106 +@item task readied -- returns to caller: 107 +@item task readied -- preempts caller: 108 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>REGION_CREATE</STRONG></TD> + <TD ALIGN=center>100</TD></TR> +<TR><TD ALIGN=left><STRONG>REGION_IDENT</STRONG></TD> + <TD ALIGN=center>101</TD></TR> +<TR><TD ALIGN=left><STRONG>REGION_DELETE</STRONG></TD> + <TD ALIGN=center>102</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>REGION_GET_SEGMENT</TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>103</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center> + 104</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center> + 105</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>REGION_RETURN_SEGMENT</TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>106</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center> + 107</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center> + 108</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Dual-Ported Memory Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{PORT\_CREATE}{109} +\rtemsonecase{PORT\_IDENT}{110} +\rtemsonecase{PORT\_DELETE}{111} +\rtemsonecase{PORT\_INTERNAL\_TO\_EXTERNAL} + {112} +\rtemsonecase{PORT\_EXTERNAL\_TO\_INTERNAL} + {113} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item PORT_CREATE +@itemize - +@item only case: 109 +@end itemize + +@item PORT_IDENT +@itemize - +@item only case: 110 +@end itemize + +@item PORT_DELETE +@itemize - +@item only case: 111 +@end itemize + +@item PORT_INTERNAL_TO_EXTERNAL +@itemize - +@item only case: 112 +@end itemize + +@item PORT_EXTERNAL_TO_INTERNAL +@itemize - +@item only case: 113 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>PORT_CREATE</STRONG></TD> + <TD ALIGN=center>109</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_IDENT</STRONG></TD> + <TD ALIGN=center>110</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_DELETE</STRONG></TD> + <TD ALIGN=center>111</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_INTERNAL_TO_EXTERNAL</STRONG></TD> + <TD ALIGN=center>112</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_EXTERNAL_TO_INTERNAL</STRONG></TD> + <TD ALIGN=center>113</TD></TR> + + </TABLE> +</CENTER> +@end html +@end ifset + +@section I/O Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{IO\_INITIALIZE}{114} +\rtemsonecase{IO\_OPEN}{115} +\rtemsonecase{IO\_CLOSE}{116} +\rtemsonecase{IO\_READ}{117} +\rtemsonecase{IO\_WRITE}{118} +\rtemsonecase{IO\_CONTROL}{119} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item IO_INITIALIZE +@itemize - +@item only case: 114 +@end itemize + +@item IO_OPEN +@itemize - +@item only case: 115 +@end itemize + +@item IO_CLOSE +@itemize - +@item only case: 116 +@end itemize + +@item IO_READ +@itemize - +@item only case: 117 +@end itemize + +@item IO_WRITE +@itemize - +@item only case: 118 +@end itemize + +@item IO_CONTROL +@itemize - +@item only case: 119 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>IO_INITIALIZE</STRONG></TD> + <TD ALIGN=center>114</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_OPEN</STRONG></TD> + <TD ALIGN=center>115</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_CLOSE</STRONG></TD> + <TD ALIGN=center>116</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_READ</STRONG></TD> + <TD ALIGN=center>117</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_WRITE</STRONG></TD> + <TD ALIGN=center>118</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_CONTROL</STRONG></TD> + <TD ALIGN=center>119</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Rate Monotonic Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{RATE\_MONOTONIC\_CREATE}{120} +\rtemsonecase{RATE\_MONOTONIC\_IDENT}{121} +\rtemsonecase{RATE\_MONOTONIC\_CANCEL}{122} +\rtemsdirective{RATE\_MONOTONIC\_DELETE} +\rtemscase{active}{123} +\rtemscase{inactive}{124} +\rtemsdirective{RATE\_MONOTONIC\_PERIOD} +\rtemscase{initiate period -- returns to caller} + {125} +\rtemscase{conclude period -- caller blocks} + {126} +\rtemscase{obtain status}{127} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item RATE_MONOTONIC_CREATE +@itemize - +@item only case: 120 +@end itemize + +@item RATE_MONOTONIC_IDENT +@itemize - +@item only case: 121 +@end itemize + +@item RATE_MONOTONIC_CANCEL +@itemize - +@item only case: 122 +@end itemize + +@item RATE_MONOTONIC_DELETE +@itemize - +@item active: 123 +@item inactive: 124 +@end itemize + +@item RATE_MONOTONIC_PERIOD +@itemize - +@item initiate period -- returns to caller: 125 +@item conclude period -- caller blocks: 126 +@item obtain status: 127 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_CREATE</STRONG></TD> + <TD ALIGN=center>120</TD></TR> +<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_IDENT</STRONG></TD> + <TD ALIGN=center>121</TD></TR> +<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_CANCEL</STRONG></TD> + <TD ALIGN=center>122</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>RATE_MONOTONIC_DELETE</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>123</TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>124</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>RATE_MONOTONIC_PERIOD</TD></TR> + <TR><TD ALIGN=left><dd>initiate period -- returns to caller</TD> + <TD ALIGN=center> + 125</TD></TR> + <TR><TD ALIGN=left><dd>conclude period -- caller blocks</TD> + <TD ALIGN=center> + 126</TD></TR> + <TR><TD ALIGN=left><dd>obtain status</TD> + <TD ALIGN=center>127</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@tex +\global\advance \smallskipamount by 4pt +@end tex + +@tex +\global\advance \smallskipamount by 4pt +@end tex diff --git a/doc/supplements/m68k/Makefile b/doc/supplements/m68k/Makefile deleted file mode 100644 index 2dd342c0f2..0000000000 --- a/doc/supplements/m68k/Makefile +++ /dev/null @@ -1,170 +0,0 @@ -# -# COPYRIGHT (c) 1988-1999. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. -# -# $Id$ -# - -PROJECT=m68k - -include ../../Make.config - -REPLACE=../../tools/word-replace - -all: html info ps pdf - -dirs: - $(make-dirs) - -COMMON_FILES=../../common/cpright.texi ../../common/setup.texi - -GENERATED_FILES=\ - cpumodel.texi callconv.texi memmodel.texi intr.texi fatalerr.texi \ - bsp.texi cputable.texi timing.texi wksheets.texi timeMVME136.texi - -FILES= $(PROJECT).texi \ - preface.texi \ - $(GENERATED_FILES) - -info: dirs c_m68k - cp c_$(PROJECT) c_$(PROJECT)-* $(INFO_INSTALL) - -c_m68k: $(FILES) - $(MAKEINFO) $(PROJECT).texi - -dvi: dirs $(PROJECT).dvi -ps: dirs $(PROJECT).ps -pdf: dirs $(PROJECT).pdf - -$(PROJECT).pdf: $(FILES) - $(TEXI2PDF) $(PROJECT).texi - cp $(PROJECT).pdf $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).ps: $(PROJECT).dvi - dvips -o $(PROJECT).ps $(PROJECT).dvi - cp $(PROJECT).ps $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).dvi: $(FILES) - $(TEXI2DVI) $(PROJECT).texi - cp $(PROJECT).dvi $(WWW_INSTALL)/$(PROJECT) - -html: dirs $(FILES) - -mkdir -p $(WWW_INSTALL)/$(PROJECT) - $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \ - $(PROJECT).texi - -clean: - rm -f *.o $(PROG) *.txt core $(PROJECT).pdf - rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f $(PROJECT) $(PROJECT)-* - rm -f c_m68k c_m68k-* - rm -f intr.t $(GENERATED_FILES) - rm -f wksheets.t wksheets_NOTIMES.t - rm -f timeMVME136_.t timeMVME136_.texi - rm -f *.fixed _* timing.t - -# -# Chapters which get automatic processing -# - -cpumodel.texi: cpumodel.t Makefile - $(BMENU) -p "Preface" \ - -u "Top" \ - -n "Calling Conventions" ${*}.t - -callconv.texi: callconv.t Makefile - $(BMENU) -p "CPU Model Dependent Features Extend Byte to Long Instruction" \ - -u "Top" \ - -n "Memory Model" ${*}.t - -memmodel.texi: memmodel.t Makefile - $(BMENU) -p "Calling Conventions User-Provided Routines" \ - -u "Top" \ - -n "Interrupt Processing" ${*}.t - - -## Interrupt Chapter: -## 1. Replace Times and Sizes -## 2. Build Node Structure -# -#intr.texi: intr.t MVME136_TIMES -# ${REPLACE} -p MVME136_TIMES intr.t -# mv intr.t.fixed intr.texi - -# Interrupt Chapter: -# 1. Replace Times and Sizes -# 2. Build Node Structure -intr.t: intr_NOTIMES.t MVME136_TIMES - ${REPLACE} -p MVME136_TIMES intr_NOTIMES.t - mv intr_NOTIMES.t.fixed intr.t - -intr.texi: intr.t Makefile - $(BMENU) -p "Memory Model Flat Memory Model" \ - -u "Top" \ - -n "Default Fatal Error Processing" ${*}.t - -fatalerr.texi: fatalerr.t Makefile - $(BMENU) -p "Interrupt Processing Interrupt Stack" \ - -u "Top" \ - -n "Board Support Packages" ${*}.t - -bsp.texi: bsp.t Makefile - $(BMENU) -p "Default Fatal Error Processing Default Fatal Error Handler Operations" \ - -u "Top" \ - -n "Processor Dependent Information Table" ${*}.t - -cputable.texi: cputable.t Makefile - $(BMENU) -p "Board Support Packages Processor Initialization" \ - -u "Top" \ - -n "Memory Requirements" ${*}.t - - -# Worksheets Chapter: -# 1. Obtain the Shared File -# 2. Replace Times and Sizes -# 3. Build Node Structure - -wksheets_NOTIMES.t: ../../common/wksheets.t - cp ../../common/wksheets.t wksheets_NOTIMES.t - -wksheets.t: wksheets_NOTIMES.t MVME136_TIMES - ${REPLACE} -p MVME136_TIMES wksheets_NOTIMES.t - mv wksheets_NOTIMES.t.fixed wksheets.t - -wksheets.texi: wksheets.t Makefile - $(BMENU) -p "Processor Dependent Information Table CPU Dependent Information Table" \ - -u "Top" \ - -n "Timing Specification" ${*}.t - -# Timing Specification Chapter: -# 1. Copy the Shared File -# 3. Build Node Structure - -timing.t: ../../common/timing.t - cp ../../common/timing.t timing.t - -timing.texi: timing.t Makefile - $(BMENU) -p "Memory Requirements RTEMS RAM Workspace Worksheet" \ - -u "Top" \ - -n "MVME136 Timing Data" ${*}.t - -# Timing Data for BSP Chapter: -# 1. Copy the Shared File -# 2. Replace Times and Sizes -# 3. Build Node Structure - -timeMVME136_.t: ../../common/timetbl.t timeMVME136.t - cat timeMVME136.t ../../common/timetbl.t >timeMVME136_.t - @echo >>timeMVME136_.t - @echo "@tex" >>timeMVME136_.t - @echo "\\global\\advance \\smallskipamount by 4pt" >>timeMVME136_.t - @echo "@end tex" >>timeMVME136_.t - ${REPLACE} -p MVME136_TIMES timeMVME136_.t - mv timeMVME136_.t.fixed timeMVME136_.t - -timeMVME136.texi: timeMVME136_.t Makefile - $(BMENU) -p "Timing Specification Terminology" \ - -u "Top" \ - -n "Command and Variable Index" timeMVME136_.t - mv timeMVME136_.texi timeMVME136.texi diff --git a/doc/supplements/m68k/Makefile.am b/doc/supplements/m68k/Makefile.am new file mode 100644 index 0000000000..447e44e6dd --- /dev/null +++ b/doc/supplements/m68k/Makefile.am @@ -0,0 +1,116 @@ +# +# COPYRIGHT (c) 1988-1999. +# On-Line Applications Research Corporation (OAR). +# All rights reserved. +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign + +PROJECT=m68k + +include $(top_srcdir)/project.am +include $(top_srcdir)/supplements/supplement.am + +COMMON_FILES=$(top_srcdir)/common/cpright.texi $(top_builddir)/common/setup.texi + +GENERATED_FILES=\ + cpumodel.texi callconv.texi memmodel.texi intr.texi fatalerr.texi \ + bsp.texi cputable.texi timing.texi wksheets.texi timeMVME136.texi + +FILES= preface.texi + +info_TEXINFOS = m68k.texi +m68k_TEXINFOS = $(FILES) $(COMMON_FILES) $(GENERATED_FILES) + +# +# Chapters which get automatic processing +# + +cpumodel.texi: cpumodel.t + $(BMENU) -p "Preface" \ + -u "Top" \ + -n "Calling Conventions" ${*}.t + +callconv.texi: callconv.t + $(BMENU) -p "CPU Model Dependent Features Extend Byte to Long Instruction" \ + -u "Top" \ + -n "Memory Model" $< + +memmodel.texi: memmodel.t + $(BMENU) -p "Calling Conventions User-Provided Routines" \ + -u "Top" \ + -n "Interrupt Processing" $< + +# Interrupt Chapter: +# 1. Replace Times and Sizes +# 2. Build Node Structure +intr.texi: intr_NOTIMES.t MVME136_TIMES + ${REPLACE2} -p $(srcdir)/MVME136_TIMES $(srcdir)/intr_NOTIMES.t intr.t + $(BMENU) -p "Memory Model Flat Memory Model" \ + -u "Top" \ + -n "Default Fatal Error Processing" intr.t +CLEANFILES += intr.t + +fatalerr.texi: fatalerr.t + $(BMENU) -p "Interrupt Processing Interrupt Stack" \ + -u "Top" \ + -n "Board Support Packages" $< + +bsp.texi: bsp.t + $(BMENU) -p "Default Fatal Error Processing Default Fatal Error Handler Operations" \ + -u "Top" \ + -n "Processor Dependent Information Table" $< + +cputable.texi: cputable.t + $(BMENU) -p "Board Support Packages Processor Initialization" \ + -u "Top" \ + -n "Memory Requirements" $< + + +# Worksheets Chapter: +# 1. Obtain the Shared File +# 2. Replace Times and Sizes +# 3. Build Node Structure + +wksheets.texi: $(top_srcdir)/common/wksheets.t MVME136_TIMES + ${REPLACE2} -p $(srcdir)/MVME136_TIMES \ + $(top_srcdir)/common/wksheets.t wksheets.t + $(BMENU) -p "Processor Dependent Information Table CPU Dependent Information Table" \ + -u "Top" \ + -n "Timing Specification" wksheets.t +CLEANFILES += wksheets.t + +# Timing Specification Chapter: +# 1. Copy the Shared File +# 3. Build Node Structure + +timing.texi: $(top_srcdir)/common/timing.t + cp $(top_srcdir)/common/timing.t timing.t + $(BMENU) -p "Memory Requirements RTEMS RAM Workspace Worksheet" \ + -u "Top" \ + -n "MVME136 Timing Data" timing.t +CLEANFILES += timing.t + +# Timing Data for BSP Chapter: +# 1. Copy the Shared File +# 2. Replace Times and Sizes +# 3. Build Node Structure + +timeMVME136_.t: $(top_srcdir)/common/timetbl.t timeMVME136.t + cat timeMVME136.t $(top_srcdir)/common/timetbl.t >timeMVME136_.t + @echo >>timeMVME136_.t + @echo "@tex" >>timeMVME136_.t + @echo "\\global\\advance \\smallskipamount by 4pt" >>timeMVME136_.t + @echo "@end tex" >>timeMVME136_.t + ${REPLACE} -p MVME136_TIMES timeMVME136_.t + mv timeMVME136_.t.fixed timeMVME136_.t + +timeMVME136.texi: timeMVME136_.t + $(BMENU) -p "Timing Specification Terminology" \ + -u "Top" \ + -n "Command and Variable Index" timeMVME136_.t + mv timeMVME136_.texi timeMVME136.texi + +EXTRA_DIST = MVME136_TIMES *.t diff --git a/doc/supplements/m68k/m68k.texi b/doc/supplements/m68k/m68k.texi index 7930349a12..e2e7a833d7 100644 --- a/doc/supplements/m68k/m68k.texi +++ b/doc/supplements/m68k/m68k.texi @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c %**start of header -@setfilename c_m68k +@setfilename m68k @syncodeindex vr fn @synindex ky cp @paragraphindent 0 @@ -76,7 +76,7 @@ END-INFO-DIR-ENTRY @include timeMVME136.texi @ifinfo @node Top, Preface, (dir), (dir) -@top c_m68k +@top m68k This is the online version of the RTEMS Motorola MC68xxx Applications Supplement. diff --git a/doc/supplements/m68k/timeMVME136_.t b/doc/supplements/m68k/timeMVME136_.t new file mode 100644 index 0000000000..ea68b5389f --- /dev/null +++ b/doc/supplements/m68k/timeMVME136_.t @@ -0,0 +1,1442 @@ +@c +@c COPYRIGHT (c) 1988-1999. +@c On-Line Applications Research Corporation (OAR). +@c All rights reserved. +@c +@c $Id$ +@c + +@include ../../common/timemac.texi +@tex +\global\advance \smallskipamount by -4pt +@end tex + +@chapter MVME136 Timing Data + +@section Introduction + +The timing data for the MC68020 version of RTEMS is +provided along with the target dependent aspects concerning the +gathering of the timing data. The hardware platform used to +gather the times is described to give the reader a better +understanding of each directive time provided. Also, provided +is a description of the interrupt latency and the context switch +times as they pertain to the MC68020 version of RTEMS. + +@section Hardware Platform + +All times reported except for the maximum period +interrupts are disabled by RTEMS were measured using a Motorola +MVME135 CPU board. The MVME135 is a 20Mhz board with one wait +state dynamic memory and a MC68881 numeric coprocessor. The +Zilog 8036 countdown timer on this board was used to measure +elapsed time with a one-half microsecond resolution. All +sources of hardware interrupts were disabled, although the +interrupt level of the MC68020 allows all interrupts. + +The maximum period interrupts are disabled was +measured by summing the number of CPU cycles required by each +assembly language instruction executed while interrupts were +disabled. The worst case times of the MC68020 microprocessor +were used for each instruction. Zero wait state memory was +assumed. The total CPU cycles executed with interrupts +disabled, including the instructions to disable and enable +interrupts, was divided by 20 to simulate a 20Mhz MC68020. It +should be noted that the worst case instruction times for the +MC68020 assume that the internal cache is disabled and that no +instructions overlap. + +@section Interrupt Latency + +The maximum period with interrupts disabled within +RTEMS is less than TBD +microseconds including the instructions +which disable and re-enable interrupts. The time required for +the MC68020 to vector an interrupt and for the RTEMS entry +overhead before invoking the user's interrupt handler are a +total of 9 +microseconds. These combine to yield a worst case +interrupt latency of less than +TBD + 9 +microseconds at 20Mhz. [NOTE: The maximum period with interrupts +disabled was last determined for Release +3.2.1.] + +It should be noted again that the maximum period with +interrupts disabled within RTEMS is hand-timed and based upon +worst case (i.e. CPU cache disabled and no instruction overlap) +times for a 20Mhz MC68020. The interrupt vector and entry +overhead time was generated on an MVME135 benchmark platform +using the Multiprocessing Communications registers to generate +as the interrupt source. + +@section Context Switch + +The RTEMS processor context switch time is 35 +microseconds on the MVME135 benchmark platform when no floating +point context is saved or restored. Additional execution time +is required when a TASK_SWITCH user extension is configured. +The use of the TASK_SWITCH extension is application dependent. +Thus, its execution time is not considered part of the raw +context switch time. + +Since RTEMS was designed specifically for embedded +missile applications which are floating point intensive, the +executive is optimized to avoid unnecessarily saving and +restoring the state of the numeric coprocessor. The state of +the numeric coprocessor is only saved when an FLOATING_POINT +task is dispatched and that task was not the last task to +utilize the coprocessor. In a system with only one +FLOATING_POINT task, the state of the numeric coprocessor will +never be saved or restored. When the first FLOATING_POINT task +is dispatched, RTEMS does not need to save the current state of +the numeric coprocessor. + +The exact amount of time required to save and restore +floating point context is dependent on whether an MC68881 or +MC68882 is being used as well as the state of the numeric +coprocessor. These numeric coprocessors define three operating +states: initialized, idle, and busy. RTEMS places the +coprocessor in the initialized state when a task is started or +restarted. Once the task has utilized the coprocessor, it is in +the idle state when floating point instructions are not +executing and the busy state when floating point instructions +are executing. The state of the coprocessor is task specific. + +The following table summarizes the context switch +times for the MVME135 benchmark platform: + +@c ****** This comment is here to remind you not to edit the timetbl.t +@c ****** in any directory but common. +@c +@c Time Table Template +@c +@c COPYRIGHT (c) 1988-1999. +@c On-Line Applications Research Corporation (OAR). +@c All rights reserved. +@c +@c $Id$ +@c + +@ifset use-tex +@sp 1 +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{No Floating Point Contexts}{35} +\rtemsdirective{Floating Point Contexts} +\rtemscase{restore first FP task}{39} +\rtemscase{save initialized, restore initialized}{66} +\rtemscase{save idle, restore initialized}{66} +\rtemscase{save idle, restore idle}{68} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet +@item No Floating Point Contexts +@itemize - +@item only case: 35 +@end itemize +@item Floating Point Contexts +@itemize - +@item restore first FP task: 39 +@item save initialized, restore initialized: 66 +@item save idle, restore initialized: 66 +@item save idle, restore idle: 66 +@end itemize +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>No Floating Point Contexts</STRONG></TD> + <TD ALIGN=center>35</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>Floating Point Contexts</TR> + <TR><TD ALIGN=left><dd>restore first FP task</TD> + <TD ALIGN=center>39</TD> + <TR><TD ALIGN=left><dd>save initialized, restore initialized</TD> + <TD ALIGN=center>66</TD> + <TR><TD ALIGN=left><dd>save idle, restore initialized</TD> + <TD ALIGN=center>66</TD> + <TR><TD ALIGN=left><dd>save idle, restore idle</TD> + <TD ALIGN=center>68</TD> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Directive Times + +This sections is divided into a number of +subsections, each of which contains a table listing the +execution times of that manager's directives. + +@page +@section Task Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{TASK\_CREATE}{148} +\rtemsonecase{TASK\_IDENT}{350} +\rtemsonecase{TASK\_START}{76} +\rtemsdirective{TASK\_RESTART} +\rtemscase{calling task}{95} +\rtemscase{suspended task -- returns to caller} + {89} +\rtemscase{blocked task -- returns to caller} + {124} +\rtemscase{ready task -- returns to caller} + {92} +\rtemscase{suspended task -- preempts caller} + {125} +\rtemscase{blocked task -- preempts caller} + {149} +\rtemscase{ready task -- preempts caller} + {142} +\rtemsdirective{TASK\_DELETE} +\rtemscase{calling task}{170} +\rtemscase{suspended task}{138} +\rtemscase{blocked task}{143} +\rtemscase{ready task}{144} +\rtemsdirective{TASK\_SUSPEND} +\rtemscase{calling task}{71} +\rtemscase{returns to caller}{43} +\rtemsdirective{TASK\_RESUME} +\rtemscase{task readied -- returns to caller} + {45} +\rtemscase{task readied -- preempts caller} + {67} +\rtemsdirective{TASK\_SET\_PRIORITY} +\rtemscase{obtain current priority} + {31} +\rtemscase{returns to caller}{64} +\rtemscase{preempts caller}{106} +\rtemsdirective{TASK\_MODE} +\rtemscase{obtain current mode}{14} +\rtemscase{no reschedule}{16} +\rtemscase{reschedule -- returns to caller} + {23} +\rtemscase{reschedule -- preempts caller} + {60} +\rtemsonecase{TASK\_GET\_NOTE}{33} +\rtemsonecase{TASK\_SET\_NOTE}{33} +\rtemsdirective{TASK\_WAKE\_AFTER} +\rtemscase{yield -- returns to caller} + {16} +\rtemscase{yield -- preempts caller} + {56} +\rtemsonecase{TASK\_WAKE\_WHEN}{117} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item TASK_CREATE +@itemize - +@item only case: 148 +@end itemize + +@item TASK_IDENT +@itemize - +@item only case: 350 +@end itemize + +@item TASK_START +@itemize - +@item only case: 76 +@end itemize + +@item TASK_RESTART +@itemize - +@item calling task: 95 +@item suspended task -- returns to caller: 89 +@item blocked task -- returns to caller: 124 +@item ready task -- returns to caller: 92 +@item suspended task -- preempts caller: 125 +@item blocked task -- preempts caller: 149 +@item ready task -- preempts caller: 142 +@end itemize + +@item TASK_DELETE +@itemize - +@item calling task: 170 +@item suspended task: 138 +@item blocked task: 143 +@item ready task: 144 +@end itemize + +@item TASK_SUSPEND +@itemize - +@item calling task: 71 +@item returns to caller: 43 +@end itemize + +@item TASK_RESUME +@itemize - +@item task readied -- returns to caller: 45 +@item task readied -- preempts caller: 67 +@end itemize + +@item TASK_SET_PRIORITY +@itemize - +@item obtain current priority: 31 +@item returns to caller: 64 +@item preempts caller: 106 +@end itemize + +@item TASK_MODE +@itemize - +@item obtain current mode: 14 +@item no reschedule: 16 +@item reschedule -- returns to caller: 23 +@item reschedule -- preempts caller: 60 +@end itemize + +@item TASK_GET_NOTE +@itemize - +@item only case: 33 +@end itemize + +@item TASK_SET_NOTE +@itemize - +@item only case: 33 +@end itemize + +@item TASK_WAKE_AFTER +@itemize - +@item yield -- returns to caller: 16 +@item yield -- preempts caller: 56 +@end itemize + +@item TASK_WAKE_WHEN +@itemize - +@item only case: 117 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>TASK_CREATE</STRONG></TD> + <TD ALIGN=center>148</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_IDENT</STRONG></TD> + <TD ALIGN=center>350</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_START</STRONG></TD> + <TD ALIGN=center>76</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_RESTART</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>calling task</TD> + <TD ALIGN=center>95</TD></TR> + <TR><TD ALIGN=left><dd>suspended task -- returns to caller</TD> + <TD ALIGN=center>89</TD></TR> + <TR><TD ALIGN=left><dd>blocked task -- returns to caller</TD> + <TD ALIGN=center>124</TD></TR> + <TR><TD ALIGN=left><dd>ready task -- returns to caller</TD> + <TD ALIGN=center>92</TD></TR> + <TR><TD ALIGN=left><dd>suspended task -- preempts caller</TD> + <TD ALIGN=center>125</TD></TR> + <TR><TD ALIGN=left><dd>blocked task -- preempts caller</TD> + <TD ALIGN=center>149</TD></TR> + <TR><TD ALIGN=left><dd>ready task -- preempts caller</TD> + <TD ALIGN=center>142</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_DELETE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>calling task</TD> + <TD ALIGN=center>170</TD></TR> + <TR><TD ALIGN=left><dd>suspended task</TD> + <TD ALIGN=center>138</TD></TR> + <TR><TD ALIGN=left><dd>blocked task</TD> + <TD ALIGN=center>143</TD></TR> + <TR><TD ALIGN=left><dd>ready task</TD> + <TD ALIGN=center>144</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_SUSPEND</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>calling task</TD> + <TD ALIGN=center>71</TD></TR> + <TR><TD ALIGN=left><dd>returns to caller</TD> + <TD ALIGN=center>43</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_RESUME</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>45</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>67</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_SET_PRIORITY</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>obtain current priority</TD> + <TD ALIGN=center>31</TD></TR> + <TR><TD ALIGN=left><dd>returns to caller</TD> + <TD ALIGN=center>64</TD></TR> + <TR><TD ALIGN=left><dd>preempts caller</TD> + <TD ALIGN=center>106</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_MODE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>obtain current mode</TD> + <TD ALIGN=center>14</TD></TR> + <TR><TD ALIGN=left><dd>no reschedule</TD> + <TD ALIGN=center>16</TD></TR> + <TR><TD ALIGN=left><dd>reschedule -- returns to caller</TD> + <TD ALIGN=center>23</TD></TR> + <TR><TD ALIGN=left><dd>reschedule -- preempts caller</TD> + <TD ALIGN=center>60</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_GET_NOTE</STRONG></TD> + <TD ALIGN=center>33</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_SET_NOTE</STRONG></TD> + <TD ALIGN=center>33</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_WAKE_AFTER</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>yield -- returns to caller</TD> + <TD ALIGN=center>16</TD></TR> + <TR><TD ALIGN=left><dd>yield -- preempts caller</TD> + <TD ALIGN=center>56</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_WAKE_WHEN</STRONG></TD> + <TD ALIGN=center>117</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Interrupt Manager + +It should be noted that the interrupt entry times +include vectoring the interrupt handler. + +@ifset use-tex +@sp 1 +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsdirective{Interrupt Entry Overhead} +\rtemscase{returns to nested interrupt}{12} +\rtemscase{returns to interrupted task} + {9} +\rtemscase{returns to preempting task} + {9} +\rtemsdirective{Interrupt Exit Overhead} +\rtemscase{returns to nested interrupt}{<1} +\rtemscase{returns to interrupted task} + {8} +\rtemscase{returns to preempting task} + {54} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item Interrupt Entry Overhead +@itemize - +@item returns to nested interrupt: 12 +@item returns to interrupted task: 9 +@item returns to preempting task: 9 +@end itemize + +@item Interrupt Exit Overhead +@itemize - +@item returns to nested interrupt: <1 +@item returns to interrupted task: 8 +@item returns to preempting task: 54 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left COLSPAN=2><STRONG>Interrupt Entry Overhead</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>returns to nested interrupt</TD> + <TD ALIGN=center>12</TD></TR> + <TR><TD ALIGN=left><dd>returns to interrupted task</TD> + <TD ALIGN=center>9</TD></TR> + <TR><TD ALIGN=left><dd>returns to preempting task</TD> + <TD ALIGN=center>9</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>Interrupt Exit Overhead</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>returns to nested interrupt</TD> + <TD ALIGN=center><1</TD></TR> + <TR><TD ALIGN=left><dd>returns to interrupted task</TD> + <TD ALIGN=center>8</TD></TR> + <TR><TD ALIGN=left><dd>returns to preempting task</TD> + <TD ALIGN=center>54</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + + +@section Clock Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{CLOCK\_SET}{86} +\rtemsonecase{CLOCK\_GET}{1} +\rtemsonecase{CLOCK\_TICK}{17} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item CLOCK_SET +@itemize - +@item only case: 86 +@end itemize + +@item CLOCK_GET +@itemize - +@item only case: 1 +@end itemize + +@item CLOCK_TICK +@itemize - +@item only case: 17 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>CLOCK_SET</STRONG></TD> + <TD ALIGN=center>86</TD></TR> +<TR><TD ALIGN=left><STRONG>CLOCK_GET</STRONG></TD> + <TD ALIGN=center>1</TD></TR> +<TR><TD ALIGN=left><STRONG>CLOCK_TICK</STRONG></TD> + <TD ALIGN=center>17</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Timer Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{TIMER\_CREATE}{28} +\rtemsonecase{TIMER\_IDENT}{343} +\rtemsdirective{TIMER\_DELETE} +\rtemscase{inactive}{43} +\rtemscase{active}{47} +\rtemsdirective{TIMER\_FIRE\_AFTER} +\rtemscase{inactive}{58} +\rtemscase{active}{61} +\rtemsdirective{TIMER\_FIRE\_WHEN} +\rtemscase{inactive}{88} +\rtemscase{active}{88} +\rtemsdirective{TIMER\_RESET} +\rtemscase{inactive}{54} +\rtemscase{active}{58} +\rtemsdirective{TIMER\_CANCEL} +\rtemscase{inactive}{31} +\rtemscase{active}{34} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item TIMER_CREATE +@itemize - +@item only case: 28 +@end itemize + +@item TIMER_IDENT +@itemize - +@item only case: 343 +@end itemize + +@item TIMER_DELETE +@itemize - +@item inactive: 43 +@item active: 47 +@end itemize + +@item TIMER_FIRE_AFTER +@itemize - +@item inactive: 58 +@item active: 61 +@end itemize + +@item TIMER_FIRE_WHEN +@itemize - +@item inactive: TIMER_FIRE_WHEN_INACTIVE +@item active: TIMER_FIRE_WHEN_ACTIVE +@end itemize + +@item TIMER_RESET +@itemize - +@item inactive: TIMER_RESET_INACTIVE +@item active: TIMER_RESET_ACTIVE +@end itemize + +@item TIMER_CANCEL +@itemize - +@item inactive: TIMER_CANCEL_INACTIVE +@item active: TIMER_CANCEL_ACTIVE +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>TIMER_CREATE</STRONG></TD> + <TD ALIGN=center>28</TD></TR> +<TR><TD ALIGN=left><STRONG>TIMER_IDENT</STRONG></TD> + <TD ALIGN=center>343</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_DELETE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>43</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>47</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_FIRE_AFTER</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>58</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>61</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_FIRE_WHEN</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>88</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>88</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_RESET</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>54</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>58</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_CANCEL</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>31</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>34</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Semaphore Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{SEMAPHORE\_CREATE}{60} +\rtemsonecase{SEMAPHORE\_IDENT}{367} +\rtemsonecase{SEMAPHORE\_DELETE}{58} +\rtemsdirective{SEMAPHORE\_OBTAIN} +\rtemscase{available}{38} +\rtemscase{not available -- NO\_WAIT} + {38} +\rtemscase{not available -- caller blocks} + {109} +\rtemsdirective{SEMAPHORE\_RELEASE} +\rtemscase{no waiting tasks}{44} +\rtemscase{task readied -- returns to caller} + {66} +\rtemscase{task readied -- preempts caller} + {87} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item SEMAPHORE_CREATE +@itemize - +@item only case: 60 +@end itemize + +@item SEMAPHORE_IDENT +@itemize - +@item only case: 367 +@end itemize + +@item SEMAPHORE_DELETE +@itemize - +@item only case: 58 +@end itemize + +@item SEMAPHORE_OBTAIN +@itemize - +@item available: 38 +@item not available -- NO_WAIT: 38 +@item not available -- caller blocks: 109 +@end itemize + +@item SEMAPHORE_RELEASE +@itemize - +@item no waiting tasks: 44 +@item task readied -- returns to caller: 66 +@item task readied -- preempts caller: 87 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>SEMAPHORE_CREATE</STRONG></TD> + <TD ALIGN=center>60</TD></TR> +<TR><TD ALIGN=left><STRONG>SEMAPHORE_IDENT</STRONG></TD> + <TD ALIGN=center>367</TD></TR> +<TR><TD ALIGN=left><STRONG>SEMAPHORE_DELETE</STRONG></TD> + <TD ALIGN=center>58</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>SEMAPHORE_OBTAIN</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>38</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center>38</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center>109</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>SEMAPHORE_RELEASE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>44</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>66</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>87</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Message Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{MESSAGE\_QUEUE\_CREATE}{200} +\rtemsonecase{MESSAGE\_QUEUE\_IDENT}{341} +\rtemsonecase{MESSAGE\_QUEUE\_DELETE}{80} +\rtemsdirective{MESSAGE\_QUEUE\_SEND} +\rtemscase{no waiting tasks} + {97} +\rtemscase{task readied -- returns to caller} + {101} +\rtemscase{task readied -- preempts caller} + {123} +\rtemsdirective{MESSAGE\_QUEUE\_URGENT} +\rtemscase{no waiting tasks}{96} +\rtemscase{task readied -- returns to caller} + {101} +\rtemscase{task readied -- preempts caller} + {123} +\rtemsdirective{MESSAGE\_QUEUE\_BROADCAST} +\rtemscase{no waiting tasks}{53} +\rtemscase{task readied -- returns to caller} + {111} +\rtemscase{task readied -- preempts caller} + {133} +\rtemsdirective{MESSAGE\_QUEUE\_RECEIVE} +\rtemscase{available}{79} +\rtemscase{not available -- NO\_WAIT} + {43} +\rtemscase{not available -- caller blocks} + {114} +\rtemsdirective{MESSAGE\_QUEUE\_FLUSH} +\rtemscase{no messages flushed}{29} +\rtemscase{messages flushed}{39} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item MESSAGE_QUEUE_CREATE +@itemize - +@item only case: 200 +@end itemize + +@item MESSAGE_QUEUE_IDENT +@itemize - +@item only case: 341 +@end itemize + +@item MESSAGE_QUEUE_DELETE +@itemize - +@item only case: 80 +@end itemize + +@item MESSAGE_QUEUE_SEND +@itemize - +@item no waiting tasks: 97 +@item task readied -- returns to caller: 101 +@item task readied -- preempts caller: 123 +@end itemize + +@item MESSAGE_QUEUE_URGENT +@itemize - +@item no waiting tasks: 96 +@item task readied -- returns to caller: 101 +@item task readied -- preempts caller: 123 +@end itemize + +@item MESSAGE_QUEUE_BROADCAST +@itemize - +@item no waiting tasks: 53 +@item task readied -- returns to caller: 111 +@item task readied -- preempts caller: 133 +@end itemize + +@item MESSAGE_QUEUE_RECEIVE +@itemize - +@item available: 79 +@item not available -- NO_WAIT: 43 +@item not available -- caller blocks: 114 +@end itemize + +@item MESSAGE_QUEUE_FLUSH +@itemize - +@item no messages flushed: 29 +@item messages flushed: 39 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_CREATE</STRONG></TD> + <TD ALIGN=center>200</TD></TR> +<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_IDENT</STRONG></TD> + <TD ALIGN=center>341</TD></TR> +<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_DELETE</STRONG></TD> + <TD ALIGN=center>80</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_SEND</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>97</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>101</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>123</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_URGENT</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>96</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>101</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>123</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_BROADCAST</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>53</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>111</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>133</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_RECEIVE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>79</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center>43</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center>114</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_FLUSH</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no messages flushed</TD> + <TD ALIGN=center>29</TD></TR> + <TR><TD ALIGN=left><dd>messages flushed</TD> + <TD ALIGN=center>39</TD></TR> + + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Event Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsdirective{EVENT\_SEND} +\rtemscase{no task readied}{24} +\rtemscase{task readied -- returns to caller} + {60} +\rtemscase{task readied -- preempts caller} + {84} +\rtemsdirective{EVENT\_RECEIVE} +\rtemscase{obtain current events}{1} +\rtemscase{available}{28} +\rtemscase{not available -- NO\_WAIT}{23} +\rtemscase{not available -- caller blocks} + {84} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item EVENT_SEND +@itemize - +@item no task readied: 24 +@item task readied -- returns to caller: 60 +@item task readied -- preempts caller: 84 +@end itemize + +@item EVENT_RECEIVE +@itemize - +@item obtain current events: 1 +@item available: 28 +@item not available -- NO_WAIT: 23 +@item not available -- caller blocks: 84 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left COLSPAN=2><STRONG>EVENT_SEND</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no task readied</TD> + <TD ALIGN=center>24</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>60</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>84</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>EVENT_RECEIVE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>obtain current events</TD> + <TD ALIGN=center>1</TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>28</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center>23</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center>84</TD></TR> + + </TABLE> +</CENTER> +@end html +@end ifset +@section Signal Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{SIGNAL\_CATCH}{15} +\rtemsdirective{SIGNAL\_SEND} +\rtemscase{returns to caller}{37} +\rtemscase{signal to self}{55} +\rtemsdirective{EXIT ASR OVERHEAD} +\rtemscase{returns to calling task} + {37} +\rtemscase{returns to preempting task} + {54} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet +@item SIGNAL_CATCH +@itemize - +@item only case: 15 +@end itemize + +@item SIGNAL_SEND +@itemize - +@item returns to caller: 37 +@item signal to self: 55 +@end itemize + +@item EXIT ASR OVERHEAD +@itemize - +@item returns to calling task: 37 +@item returns to preempting task: 54 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>SIGNAL_CATCH</STRONG></TD> + <TD ALIGN=center>15</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>SIGNAL_SEND</TD></TR> + <TR><TD ALIGN=left><dd>returns to caller</TD> + <TD ALIGN=center>37</TD></TR> + <TR><TD ALIGN=left><dd>signal to self</TD> + <TD ALIGN=center>55</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>EXIT ASR OVERHEAD</TD></TR> + <TR><TD ALIGN=left><dd>returns to calling task</TD> + <TD ALIGN=center> + 37</TD></TR> + <TR><TD ALIGN=left><dd>returns to preempting task</TD> + <TD ALIGN=center> + 54</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Partition Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{PARTITION\_CREATE}{70} +\rtemsonecase{PARTITION\_IDENT}{341} +\rtemsonecase{PARTITION\_DELETE}{42} +\rtemsdirective{PARTITION\_GET\_BUFFER} +\rtemscase{available}{35} +\rtemscase{not available}{33} +\rtemsonecase{PARTITION\_RETURN\_BUFFER} + {33} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item PARTITION_CREATE +@itemize - +@item only case: 70 +@end itemize + +@item PARTITION_IDENT +@itemize - +@item only case: 341 +@end itemize + +@item PARTITION_DELETE +@itemize - +@item only case: 42 +@end itemize + +@item PARTITION_GET_BUFFER +@itemize - +@item available: 35 +@item not available: 33 +@end itemize + +@item PARTITION_RETURN_BUFFER +@itemize - +@item only case: 43 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>PARTITION_CREATE</STRONG></TD> + <TD ALIGN=center>70</TD></TR> +<TR><TD ALIGN=left><STRONG>PARTITION_IDENT</STRONG></TD> + <TD ALIGN=center>341</TD></TR> +<TR><TD ALIGN=left><STRONG>PARTITION_DELETE</STRONG></TD> + <TD ALIGN=center>42</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>PARTITION_GET_BUFFER</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>35</TD></TR> + <TR><TD ALIGN=left><dd>not available</TD> + <TD ALIGN=center>33</TD></TR> + <TR><TD ALIGN=left><STRONG>PARTITION_RETURN_BUFFER</STRONG></TD> + <TD ALIGN=center>33</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Region Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{REGION\_CREATE}{63} +\rtemsonecase{REGION\_IDENT}{348} +\rtemsonecase{REGION\_DELETE}{39} +\rtemsdirective{REGION\_GET\_SEGMENT} +\rtemscase{available}{52} +\rtemscase{not available -- NO\_WAIT} + {49} +\rtemscase{not available -- caller blocks} + {123} +\rtemsdirective{REGION\_RETURN\_SEGMENT} +\rtemscase{no waiting tasks}{54} +\rtemscase{task readied -- returns to caller} + {114} +\rtemscase{task readied -- preempts caller} + {136} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item REGION_CREATE +@itemize - +@item only case: 63 +@end itemize + +@item REGION_IDENT +@itemize - +@item only case: 348 +@end itemize + +@item REGION_DELETE +@itemize - +@item only case: 39 +@end itemize + +@item REGION_GET_SEGMENT +@itemize - +@item available: 52 +@item not available -- NO_WAIT: 49 +@item not available -- caller blocks: 123 +@end itemize + +@item REGION_RETURN_SEGMENT +@itemize - +@item no waiting tasks: 54 +@item task readied -- returns to caller: 114 +@item task readied -- preempts caller: 136 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>REGION_CREATE</STRONG></TD> + <TD ALIGN=center>63</TD></TR> +<TR><TD ALIGN=left><STRONG>REGION_IDENT</STRONG></TD> + <TD ALIGN=center>348</TD></TR> +<TR><TD ALIGN=left><STRONG>REGION_DELETE</STRONG></TD> + <TD ALIGN=center>39</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>REGION_GET_SEGMENT</TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>52</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center> + 49</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center> + 123</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>REGION_RETURN_SEGMENT</TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>54</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center> + 114</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center> + 136</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Dual-Ported Memory Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{PORT\_CREATE}{35} +\rtemsonecase{PORT\_IDENT}{340} +\rtemsonecase{PORT\_DELETE}{39} +\rtemsonecase{PORT\_INTERNAL\_TO\_EXTERNAL} + {26} +\rtemsonecase{PORT\_EXTERNAL\_TO\_INTERNAL} + {27} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item PORT_CREATE +@itemize - +@item only case: 35 +@end itemize + +@item PORT_IDENT +@itemize - +@item only case: 340 +@end itemize + +@item PORT_DELETE +@itemize - +@item only case: 39 +@end itemize + +@item PORT_INTERNAL_TO_EXTERNAL +@itemize - +@item only case: 26 +@end itemize + +@item PORT_EXTERNAL_TO_INTERNAL +@itemize - +@item only case: 27 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>PORT_CREATE</STRONG></TD> + <TD ALIGN=center>35</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_IDENT</STRONG></TD> + <TD ALIGN=center>340</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_DELETE</STRONG></TD> + <TD ALIGN=center>39</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_INTERNAL_TO_EXTERNAL</STRONG></TD> + <TD ALIGN=center>26</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_EXTERNAL_TO_INTERNAL</STRONG></TD> + <TD ALIGN=center>27</TD></TR> + + </TABLE> +</CENTER> +@end html +@end ifset + +@section I/O Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{IO\_INITIALIZE}{4} +\rtemsonecase{IO\_OPEN}{2} +\rtemsonecase{IO\_CLOSE}{1} +\rtemsonecase{IO\_READ}{2} +\rtemsonecase{IO\_WRITE}{3} +\rtemsonecase{IO\_CONTROL}{2} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item IO_INITIALIZE +@itemize - +@item only case: 4 +@end itemize + +@item IO_OPEN +@itemize - +@item only case: 2 +@end itemize + +@item IO_CLOSE +@itemize - +@item only case: 1 +@end itemize + +@item IO_READ +@itemize - +@item only case: 2 +@end itemize + +@item IO_WRITE +@itemize - +@item only case: 3 +@end itemize + +@item IO_CONTROL +@itemize - +@item only case: 2 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>IO_INITIALIZE</STRONG></TD> + <TD ALIGN=center>4</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_OPEN</STRONG></TD> + <TD ALIGN=center>2</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_CLOSE</STRONG></TD> + <TD ALIGN=center>1</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_READ</STRONG></TD> + <TD ALIGN=center>2</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_WRITE</STRONG></TD> + <TD ALIGN=center>3</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_CONTROL</STRONG></TD> + <TD ALIGN=center>2</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Rate Monotonic Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{RATE\_MONOTONIC\_CREATE}{32} +\rtemsonecase{RATE\_MONOTONIC\_IDENT}{341} +\rtemsonecase{RATE\_MONOTONIC\_CANCEL}{39} +\rtemsdirective{RATE\_MONOTONIC\_DELETE} +\rtemscase{active}{51} +\rtemscase{inactive}{48} +\rtemsdirective{RATE\_MONOTONIC\_PERIOD} +\rtemscase{initiate period -- returns to caller} + {54} +\rtemscase{conclude period -- caller blocks} + {74} +\rtemscase{obtain status}{31} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item RATE_MONOTONIC_CREATE +@itemize - +@item only case: 32 +@end itemize + +@item RATE_MONOTONIC_IDENT +@itemize - +@item only case: 341 +@end itemize + +@item RATE_MONOTONIC_CANCEL +@itemize - +@item only case: 39 +@end itemize + +@item RATE_MONOTONIC_DELETE +@itemize - +@item active: 51 +@item inactive: 48 +@end itemize + +@item RATE_MONOTONIC_PERIOD +@itemize - +@item initiate period -- returns to caller: 54 +@item conclude period -- caller blocks: 74 +@item obtain status: 31 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_CREATE</STRONG></TD> + <TD ALIGN=center>32</TD></TR> +<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_IDENT</STRONG></TD> + <TD ALIGN=center>341</TD></TR> +<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_CANCEL</STRONG></TD> + <TD ALIGN=center>39</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>RATE_MONOTONIC_DELETE</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>51</TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>48</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>RATE_MONOTONIC_PERIOD</TD></TR> + <TR><TD ALIGN=left><dd>initiate period -- returns to caller</TD> + <TD ALIGN=center> + 54</TD></TR> + <TR><TD ALIGN=left><dd>conclude period -- caller blocks</TD> + <TD ALIGN=center> + 74</TD></TR> + <TR><TD ALIGN=left><dd>obtain status</TD> + <TD ALIGN=center>31</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@tex +\global\advance \smallskipamount by 4pt +@end tex + +@tex +\global\advance \smallskipamount by 4pt +@end tex diff --git a/doc/supplements/mips64orion/Makefile b/doc/supplements/mips64orion/Makefile deleted file mode 100644 index 0895106a7e..0000000000 --- a/doc/supplements/mips64orion/Makefile +++ /dev/null @@ -1,161 +0,0 @@ -# -# COPYRIGHT (c) 1988-1999. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. -# -# $Id$ -# - -PROJECT=mips64orion - -include ../../Make.config - -REPLACE=../../tools/word-replace - -all: html info ps pdf - -dirs: - $(make-dirs) - -COMMON_FILES=../../common/cpright.texi ../../common/setup.texi - -GENERATED_FILES=\ - cpumodel.texi callconv.texi memmodel.texi intr.texi fatalerr.texi \ - bsp.texi cputable.texi wksheets.texi timing.texi timeBSP.texi - -FILES= $(PROJECT).texi preface.texi \ - $(COMMON_FILES) $(GENERATED_FILES) - -info: dirs c_$(PROJECT) - @echo NEED TO INSTALL THE INFO FILES - #cp c_$(PROJECT) c_$(PROJECT)-* $(INFO_INSTALL) - #cp c_$(PROJECT) c_$(PROJECT)-* $(INFO_INSTALL) - -c_$(PROJECT): $(FILES) - $(MAKEINFO) $(PROJECT).texi - -dvi: dirs $(PROJECT).dvi -ps: dirs $(PROJECT).ps -pdf: dirs $(PROJECT).pdf - -$(PROJECT).pdf: $(FILES) - $(TEXI2PDF) $(PROJECT).texi - cp $(PROJECT).pdf $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).ps: $(PROJECT).dvi - dvips -o $(PROJECT).ps $(PROJECT).dvi - cp $(PROJECT).ps $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).dvi: $(FILES) - $(TEXI2DVI) $(PROJECT).texi - cp $(PROJECT).dvi $(WWW_INSTALL)/$(PROJECT) - -html: dirs $(FILES) - -mkdir -p $(WWW_INSTALL)/$(PROJECT) - $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \ - $(PROJECT).texi - -clean: - rm -f *.o $(PROG) *.txt core $(PROJECT).pdf - rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f $(PROJECT) $(PROJECT)-* - rm -f c_$(PROJECT) c_$(PROJECT)-* - rm -f wksheets.t wksheets_NOTIMES.t - rm -f intr.t - rm -f timeBSP_.t timing.t - rm -f *.fixed _* $(GENERATED_FILES) - rm -f timeBSP_.t timeBSP_.texi - -# -# Chapters which get automatic processing -# -cpumodel.texi: cpumodel.t Makefile - $(BMENU) -p "Preface" \ - -u "Top" \ - -n "Calling Conventions" ${*}.t - -callconv.texi: callconv.t Makefile - $(BMENU) -p "CPU Model Dependent Features Another Optional Feature" \ - -u "Top" \ - -n "Memory Model" ${*}.t - -memmodel.texi: memmodel.t Makefile - $(BMENU) -p "Calling Conventions User-Provided Routines" \ - -u "Top" \ - -n "Interrupt Processing" ${*}.t - -# Interrupt Chapter: -# 1. Replace Times and Sizes -# 2. Build Node Structure -intr.t: intr_NOTIMES.t BSP_TIMES - ${REPLACE} -p BSP_TIMES intr_NOTIMES.t - mv intr_NOTIMES.t.fixed intr.t - -intr.texi: intr.t Makefile - $(BMENU) -p "Memory Model Flat Memory Model" \ - -u "Top" \ - -n "Default Fatal Error Processing" ${*}.t - -fatalerr.texi: fatalerr.t Makefile - $(BMENU) -p "Interrupt Processing Interrupt Stack" \ - -u "Top" \ - -n "Board Support Packages" ${*}.t - -bsp.texi: bsp.t Makefile - $(BMENU) -p "Default Fatal Error Processing Default Fatal Error Handler Operations" \ - -u "Top" \ - -n "Processor Dependent Information Table" ${*}.t - -cputable.texi: cputable.t Makefile - $(BMENU) -p "Board Support Packages Processor Initialization" \ - -u "Top" \ - -n "Memory Requirements" ${*}.t - -# Worksheets Chapter: -# 1. Copy the Shared File -# 2. Replace Times and Sizes -# 3. Build Node Structure - -wksheets_NOTIMES.t: ../../common/wksheets.t - cp ../../common/wksheets.t wksheets_NOTIMES.t - -wksheets.t: wksheets_NOTIMES.t BSP_TIMES - ${REPLACE} -p BSP_TIMES wksheets_NOTIMES.t - mv wksheets_NOTIMES.t.fixed wksheets.t - -wksheets.texi: wksheets.t Makefile - $(BMENU) -p "Processor Dependent Information Table CPU Dependent Information Table" \ - -u "Top" \ - -n "Timing Specification" ${*}.t - -# Timing Specification Chapter: -# 1. Copy the Shared File -# 3. Build Node Structure - -timing.t: ../../common/timing.t - cp ../../common/timing.t timing.t - -timing.texi: timing.t Makefile - $(BMENU) -p "Memory Requirements RTEMS RAM Workspace Worksheet" \ - -u "Top" \ - -n "BSP_FOR_TIMES Timing Data" ${*}.t - -# Timing Data for BSP Chapter: -# 1. Copy the Shared File -# 2. Replace Times and Sizes -# 3. Build Node Structure - -timeBSP_.t: ../../common/timetbl.t timeBSP.t Makefile - cat timeBSP.t ../../common/timetbl.t >timeBSP_.t - @echo >>timeBSP_.t - @echo "@tex" >>timeBSP_.t - @echo "\\global\\advance \\smallskipamount by 4pt" >>timeBSP_.t - @echo "@end tex" >>timeBSP_.t - ${REPLACE} -p BSP_TIMES timeBSP_.t - mv timeBSP_.t.fixed timeBSP_.t - -timeBSP.texi: timeBSP_.t Makefile - $(BMENU) -p "Timing Specification Terminology" \ - -u "Top" \ - -n "Command and Variable Index" timeBSP_.t - mv timeBSP_.texi timeBSP.texi diff --git a/doc/supplements/mips64orion/Makefile.am b/doc/supplements/mips64orion/Makefile.am new file mode 100644 index 0000000000..cc30fbb2cc --- /dev/null +++ b/doc/supplements/mips64orion/Makefile.am @@ -0,0 +1,114 @@ +# +# COPYRIGHT (c) 1988-1999. +# On-Line Applications Research Corporation (OAR). +# All rights reserved. +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign + +PROJECT=mips64orion + +include $(top_srcdir)/project.am +include $(top_srcdir)/supplements/supplement.am + +COMMON_FILES=$(top_srcdir)/common/cpright.texi $(top_builddir)/common/setup.texi + +GENERATED_FILES=\ + cpumodel.texi callconv.texi memmodel.texi intr.texi fatalerr.texi \ + bsp.texi cputable.texi wksheets.texi timing.texi timeBSP.texi + +FILES= preface.texi + +info_TEXINFOS = mips64orion.texi +mips64orion_TEXINFOS = $(FILES) $(COMMON_FILES) $(GENERATED_FILES) + +# +# Chapters which get automatic processing +# +cpumodel.texi: cpumodel.t + $(BMENU) -p "Preface" \ + -u "Top" \ + -n "Calling Conventions" $< + +callconv.texi: callconv.t + $(BMENU) -p "CPU Model Dependent Features Another Optional Feature" \ + -u "Top" \ + -n "Memory Model" $< + +memmodel.texi: memmodel.t + $(BMENU) -p "Calling Conventions User-Provided Routines" \ + -u "Top" \ + -n "Interrupt Processing" $< + +# Interrupt Chapter: +# 1. Replace Times and Sizes +# 2. Build Node Structure +intr.texi: intr_NOTIMES.t BSP_TIMES + ${REPLACE2} -p $(srcdir)/BSP_TIMES $(srcdir)/intr_NOTIMES.t intr.t + $(BMENU) -p "Memory Model Flat Memory Model" \ + -u "Top" \ + -n "Default Fatal Error Processing" intr.t +CLEANFILES += intr.t + +fatalerr.texi: fatalerr.t + $(BMENU) -p "Interrupt Processing Interrupt Stack" \ + -u "Top" \ + -n "Board Support Packages" $< + +bsp.texi: bsp.t + $(BMENU) -p "Default Fatal Error Processing Default Fatal Error Handler Operations" \ + -u "Top" \ + -n "Processor Dependent Information Table" $< + +cputable.texi: cputable.t + $(BMENU) -p "Board Support Packages Processor Initialization" \ + -u "Top" \ + -n "Memory Requirements" $< + +# Worksheets Chapter: +# 1. Copy the Shared File +# 2. Replace Times and Sizes +# 3. Build Node Structure + +wksheets.texi: $(top_srcdir)/common/wksheets.t BSP_TIMES + ${REPLACE2} -p $(srcdir)/BSP_TIMES \ + $(top_srcdir)/common/wksheets.t wksheets.t + $(BMENU) -p "Processor Dependent Information Table CPU Dependent Information Table" \ + -u "Top" \ + -n "Timing Specification" wksheets.t +CLEANFILES += wksheets.t + +# Timing Specification Chapter: +# 1. Copy the Shared File +# 3. Build Node Structure + +timing.texi: $(top_srcdir)/common/timing.t + cp $(top_srcdir)/common/timing.t timing.t + $(BMENU) -p "Memory Requirements RTEMS RAM Workspace Worksheet" \ + -u "Top" \ + -n "BSP_FOR_TIMES Timing Data" timing.t +CLEANFILES += timing.t + +# Timing Data for BSP Chapter: +# 1. Copy the Shared File +# 2. Replace Times and Sizes +# 3. Build Node Structure + +timeBSP_.t: $(top_srcdir)/common/timetbl.t timeBSP.t + cat timeBSP.t $(top_srcdir)/common/timetbl.t >timeBSP_.t + @echo >>timeBSP_.t + @echo "@tex" >>timeBSP_.t + @echo "\\global\\advance \\smallskipamount by 4pt" >>timeBSP_.t + @echo "@end tex" >>timeBSP_.t + ${REPLACE} -p BSP_TIMES timeBSP_.t + mv timeBSP_.t.fixed timeBSP_.t + +timeBSP.texi: timeBSP_.t + $(BMENU) -p "Timing Specification Terminology" \ + -u "Top" \ + -n "Command and Variable Index" timeBSP_.t + mv timeBSP_.texi timeBSP.texi + +EXTRA_DIST = BSP_TIMES *.t diff --git a/doc/supplements/mips64orion/mips64orion.texi b/doc/supplements/mips64orion/mips64orion.texi index e6d72a6e8f..acd974ce1a 100644 --- a/doc/supplements/mips64orion/mips64orion.texi +++ b/doc/supplements/mips64orion/mips64orion.texi @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c %**start of header -@setfilename c_mips64orion +@setfilename mips64orion @syncodeindex vr fn @synindex ky cp @paragraphindent 0 @@ -76,7 +76,7 @@ END-INFO-DIR-ENTRY @include timeBSP.texi @ifinfo @node Top, Preface, (dir), (dir) -@top c_mips64orion +@top mips64orion This is the online version of the RTEMS MIPS64 Orion Applications Supplement. diff --git a/doc/supplements/mips64orion/timeBSP_.t b/doc/supplements/mips64orion/timeBSP_.t new file mode 100644 index 0000000000..3da8e44f40 --- /dev/null +++ b/doc/supplements/mips64orion/timeBSP_.t @@ -0,0 +1,1442 @@ +@c +@c COPYRIGHT (c) 1988-1999. +@c On-Line Applications Research Corporation (OAR). +@c All rights reserved. +@c +@c $Id$ +@c + +@include ../../common/timemac.texi +@tex +\global\advance \smallskipamount by -4pt +@end tex + +@chapter BSP_FOR_TIMES Timing Data + +@section Introduction + +The timing data for the XXX version of RTEMS is +provided along with the target dependent aspects concerning the +gathering of the timing data. The hardware platform used to +gather the times is described to give the reader a better +understanding of each directive time provided. Also, provided +is a description of the interrupt latency and the context switch +times as they pertain to the XXX version of RTEMS. + +@section Hardware Platform + +All times reported except for the maximum period +interrupts are disabled by RTEMS were measured using a Motorola +BSP_FOR_TIMES CPU board. The BSP_FOR_TIMES is a 20Mhz board with one wait +state dynamic memory and a XXX numeric coprocessor. The +Zilog 8036 countdown timer on this board was used to measure +elapsed time with a one-half microsecond resolution. All +sources of hardware interrupts were disabled, although the +interrupt level of the XXX allows all interrupts. + +The maximum period interrupts are disabled was +measured by summing the number of CPU cycles required by each +assembly language instruction executed while interrupts were +disabled. The worst case times of the XXX microprocessor +were used for each instruction. Zero wait state memory was +assumed. The total CPU cycles executed with interrupts +disabled, including the instructions to disable and enable +interrupts, was divided by 20 to simulate a 20Mhz XXX. It +should be noted that the worst case instruction times for the +XXX assume that the internal cache is disabled and that no +instructions overlap. + +@section Interrupt Latency + +The maximum period with interrupts disabled within +RTEMS is less than TBD +microseconds including the instructions +which disable and re-enable interrupts. The time required for +the XXX to vector an interrupt and for the RTEMS entry +overhead before invoking the user's interrupt handler are a +total of 9 +microseconds. These combine to yield a worst case +interrupt latency of less than +TBD + 9 +microseconds at 20Mhz. [NOTE: The maximum period with interrupts +disabled was last determined for Release +4.0.0.] + +It should be noted again that the maximum period with +interrupts disabled within RTEMS is hand-timed and based upon +worst case (i.e. CPU cache disabled and no instruction overlap) +times for a 20Mhz XXX. The interrupt vector and entry +overhead time was generated on an BSP_FOR_TIMES benchmark platform +using the Multiprocessing Communications registers to generate +as the interrupt source. + +@section Context Switch + +The RTEMS processor context switch time is 35 +microseconds on the BSP_FOR_TIMES benchmark platform when no floating +point context is saved or restored. Additional execution time +is required when a TASK_SWITCH user extension is configured. +The use of the TASK_SWITCH extension is application dependent. +Thus, its execution time is not considered part of the raw +context switch time. + +Since RTEMS was designed specifically for embedded +missile applications which are floating point intensive, the +executive is optimized to avoid unnecessarily saving and +restoring the state of the numeric coprocessor. The state of +the numeric coprocessor is only saved when an FLOATING_POINT +task is dispatched and that task was not the last task to +utilize the coprocessor. In a system with only one +FLOATING_POINT task, the state of the numeric coprocessor will +never be saved or restored. When the first FLOATING_POINT task +is dispatched, RTEMS does not need to save the current state of +the numeric coprocessor. + +The exact amount of time required to save and restore +floating point context is dependent on whether an XXX or +XXX is being used as well as the state of the numeric +coprocessor. These numeric coprocessors define three operating +states: initialized, idle, and busy. RTEMS places the +coprocessor in the initialized state when a task is started or +restarted. Once the task has utilized the coprocessor, it is in +the idle state when floating point instructions are not +executing and the busy state when floating point instructions +are executing. The state of the coprocessor is task specific. + +The following table summarizes the context switch +times for the BSP_FOR_TIMES benchmark platform: + +@c ****** This comment is here to remind you not to edit the timetbl.t +@c ****** in any directory but common. +@c +@c Time Table Template +@c +@c COPYRIGHT (c) 1988-1999. +@c On-Line Applications Research Corporation (OAR). +@c All rights reserved. +@c +@c $Id$ +@c + +@ifset use-tex +@sp 1 +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{No Floating Point Contexts}{35} +\rtemsdirective{Floating Point Contexts} +\rtemscase{restore first FP task}{39} +\rtemscase{save initialized, restore initialized}{66} +\rtemscase{save idle, restore initialized}{66} +\rtemscase{save idle, restore idle}{68} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet +@item No Floating Point Contexts +@itemize - +@item only case: 35 +@end itemize +@item Floating Point Contexts +@itemize - +@item restore first FP task: 39 +@item save initialized, restore initialized: 66 +@item save idle, restore initialized: 66 +@item save idle, restore idle: 66 +@end itemize +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>No Floating Point Contexts</STRONG></TD> + <TD ALIGN=center>35</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>Floating Point Contexts</TR> + <TR><TD ALIGN=left><dd>restore first FP task</TD> + <TD ALIGN=center>39</TD> + <TR><TD ALIGN=left><dd>save initialized, restore initialized</TD> + <TD ALIGN=center>66</TD> + <TR><TD ALIGN=left><dd>save idle, restore initialized</TD> + <TD ALIGN=center>66</TD> + <TR><TD ALIGN=left><dd>save idle, restore idle</TD> + <TD ALIGN=center>68</TD> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Directive Times + +This sections is divided into a number of +subsections, each of which contains a table listing the +execution times of that manager's directives. + +@page +@section Task Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{TASK\_CREATE}{148} +\rtemsonecase{TASK\_IDENT}{350} +\rtemsonecase{TASK\_START}{76} +\rtemsdirective{TASK\_RESTART} +\rtemscase{calling task}{95} +\rtemscase{suspended task -- returns to caller} + {89} +\rtemscase{blocked task -- returns to caller} + {124} +\rtemscase{ready task -- returns to caller} + {92} +\rtemscase{suspended task -- preempts caller} + {125} +\rtemscase{blocked task -- preempts caller} + {149} +\rtemscase{ready task -- preempts caller} + {142} +\rtemsdirective{TASK\_DELETE} +\rtemscase{calling task}{170} +\rtemscase{suspended task}{138} +\rtemscase{blocked task}{143} +\rtemscase{ready task}{144} +\rtemsdirective{TASK\_SUSPEND} +\rtemscase{calling task}{71} +\rtemscase{returns to caller}{43} +\rtemsdirective{TASK\_RESUME} +\rtemscase{task readied -- returns to caller} + {45} +\rtemscase{task readied -- preempts caller} + {67} +\rtemsdirective{TASK\_SET\_PRIORITY} +\rtemscase{obtain current priority} + {31} +\rtemscase{returns to caller}{64} +\rtemscase{preempts caller}{106} +\rtemsdirective{TASK\_MODE} +\rtemscase{obtain current mode}{14} +\rtemscase{no reschedule}{16} +\rtemscase{reschedule -- returns to caller} + {23} +\rtemscase{reschedule -- preempts caller} + {60} +\rtemsonecase{TASK\_GET\_NOTE}{33} +\rtemsonecase{TASK\_SET\_NOTE}{33} +\rtemsdirective{TASK\_WAKE\_AFTER} +\rtemscase{yield -- returns to caller} + {16} +\rtemscase{yield -- preempts caller} + {56} +\rtemsonecase{TASK\_WAKE\_WHEN}{117} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item TASK_CREATE +@itemize - +@item only case: 148 +@end itemize + +@item TASK_IDENT +@itemize - +@item only case: 350 +@end itemize + +@item TASK_START +@itemize - +@item only case: 76 +@end itemize + +@item TASK_RESTART +@itemize - +@item calling task: 95 +@item suspended task -- returns to caller: 89 +@item blocked task -- returns to caller: 124 +@item ready task -- returns to caller: 92 +@item suspended task -- preempts caller: 125 +@item blocked task -- preempts caller: 149 +@item ready task -- preempts caller: 142 +@end itemize + +@item TASK_DELETE +@itemize - +@item calling task: 170 +@item suspended task: 138 +@item blocked task: 143 +@item ready task: 144 +@end itemize + +@item TASK_SUSPEND +@itemize - +@item calling task: 71 +@item returns to caller: 43 +@end itemize + +@item TASK_RESUME +@itemize - +@item task readied -- returns to caller: 45 +@item task readied -- preempts caller: 67 +@end itemize + +@item TASK_SET_PRIORITY +@itemize - +@item obtain current priority: 31 +@item returns to caller: 64 +@item preempts caller: 106 +@end itemize + +@item TASK_MODE +@itemize - +@item obtain current mode: 14 +@item no reschedule: 16 +@item reschedule -- returns to caller: 23 +@item reschedule -- preempts caller: 60 +@end itemize + +@item TASK_GET_NOTE +@itemize - +@item only case: 33 +@end itemize + +@item TASK_SET_NOTE +@itemize - +@item only case: 33 +@end itemize + +@item TASK_WAKE_AFTER +@itemize - +@item yield -- returns to caller: 16 +@item yield -- preempts caller: 56 +@end itemize + +@item TASK_WAKE_WHEN +@itemize - +@item only case: 117 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>TASK_CREATE</STRONG></TD> + <TD ALIGN=center>148</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_IDENT</STRONG></TD> + <TD ALIGN=center>350</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_START</STRONG></TD> + <TD ALIGN=center>76</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_RESTART</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>calling task</TD> + <TD ALIGN=center>95</TD></TR> + <TR><TD ALIGN=left><dd>suspended task -- returns to caller</TD> + <TD ALIGN=center>89</TD></TR> + <TR><TD ALIGN=left><dd>blocked task -- returns to caller</TD> + <TD ALIGN=center>124</TD></TR> + <TR><TD ALIGN=left><dd>ready task -- returns to caller</TD> + <TD ALIGN=center>92</TD></TR> + <TR><TD ALIGN=left><dd>suspended task -- preempts caller</TD> + <TD ALIGN=center>125</TD></TR> + <TR><TD ALIGN=left><dd>blocked task -- preempts caller</TD> + <TD ALIGN=center>149</TD></TR> + <TR><TD ALIGN=left><dd>ready task -- preempts caller</TD> + <TD ALIGN=center>142</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_DELETE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>calling task</TD> + <TD ALIGN=center>170</TD></TR> + <TR><TD ALIGN=left><dd>suspended task</TD> + <TD ALIGN=center>138</TD></TR> + <TR><TD ALIGN=left><dd>blocked task</TD> + <TD ALIGN=center>143</TD></TR> + <TR><TD ALIGN=left><dd>ready task</TD> + <TD ALIGN=center>144</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_SUSPEND</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>calling task</TD> + <TD ALIGN=center>71</TD></TR> + <TR><TD ALIGN=left><dd>returns to caller</TD> + <TD ALIGN=center>43</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_RESUME</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>45</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>67</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_SET_PRIORITY</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>obtain current priority</TD> + <TD ALIGN=center>31</TD></TR> + <TR><TD ALIGN=left><dd>returns to caller</TD> + <TD ALIGN=center>64</TD></TR> + <TR><TD ALIGN=left><dd>preempts caller</TD> + <TD ALIGN=center>106</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_MODE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>obtain current mode</TD> + <TD ALIGN=center>14</TD></TR> + <TR><TD ALIGN=left><dd>no reschedule</TD> + <TD ALIGN=center>16</TD></TR> + <TR><TD ALIGN=left><dd>reschedule -- returns to caller</TD> + <TD ALIGN=center>23</TD></TR> + <TR><TD ALIGN=left><dd>reschedule -- preempts caller</TD> + <TD ALIGN=center>60</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_GET_NOTE</STRONG></TD> + <TD ALIGN=center>33</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_SET_NOTE</STRONG></TD> + <TD ALIGN=center>33</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_WAKE_AFTER</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>yield -- returns to caller</TD> + <TD ALIGN=center>16</TD></TR> + <TR><TD ALIGN=left><dd>yield -- preempts caller</TD> + <TD ALIGN=center>56</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_WAKE_WHEN</STRONG></TD> + <TD ALIGN=center>117</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Interrupt Manager + +It should be noted that the interrupt entry times +include vectoring the interrupt handler. + +@ifset use-tex +@sp 1 +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsdirective{Interrupt Entry Overhead} +\rtemscase{returns to nested interrupt}{12} +\rtemscase{returns to interrupted task} + {9} +\rtemscase{returns to preempting task} + {9} +\rtemsdirective{Interrupt Exit Overhead} +\rtemscase{returns to nested interrupt}{<1} +\rtemscase{returns to interrupted task} + {8} +\rtemscase{returns to preempting task} + {54} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item Interrupt Entry Overhead +@itemize - +@item returns to nested interrupt: 12 +@item returns to interrupted task: 9 +@item returns to preempting task: 9 +@end itemize + +@item Interrupt Exit Overhead +@itemize - +@item returns to nested interrupt: <1 +@item returns to interrupted task: 8 +@item returns to preempting task: 54 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left COLSPAN=2><STRONG>Interrupt Entry Overhead</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>returns to nested interrupt</TD> + <TD ALIGN=center>12</TD></TR> + <TR><TD ALIGN=left><dd>returns to interrupted task</TD> + <TD ALIGN=center>9</TD></TR> + <TR><TD ALIGN=left><dd>returns to preempting task</TD> + <TD ALIGN=center>9</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>Interrupt Exit Overhead</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>returns to nested interrupt</TD> + <TD ALIGN=center><1</TD></TR> + <TR><TD ALIGN=left><dd>returns to interrupted task</TD> + <TD ALIGN=center>8</TD></TR> + <TR><TD ALIGN=left><dd>returns to preempting task</TD> + <TD ALIGN=center>54</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + + +@section Clock Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{CLOCK\_SET}{86} +\rtemsonecase{CLOCK\_GET}{1} +\rtemsonecase{CLOCK\_TICK}{17} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item CLOCK_SET +@itemize - +@item only case: 86 +@end itemize + +@item CLOCK_GET +@itemize - +@item only case: 1 +@end itemize + +@item CLOCK_TICK +@itemize - +@item only case: 17 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>CLOCK_SET</STRONG></TD> + <TD ALIGN=center>86</TD></TR> +<TR><TD ALIGN=left><STRONG>CLOCK_GET</STRONG></TD> + <TD ALIGN=center>1</TD></TR> +<TR><TD ALIGN=left><STRONG>CLOCK_TICK</STRONG></TD> + <TD ALIGN=center>17</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Timer Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{TIMER\_CREATE}{28} +\rtemsonecase{TIMER\_IDENT}{343} +\rtemsdirective{TIMER\_DELETE} +\rtemscase{inactive}{43} +\rtemscase{active}{47} +\rtemsdirective{TIMER\_FIRE\_AFTER} +\rtemscase{inactive}{58} +\rtemscase{active}{61} +\rtemsdirective{TIMER\_FIRE\_WHEN} +\rtemscase{inactive}{88} +\rtemscase{active}{88} +\rtemsdirective{TIMER\_RESET} +\rtemscase{inactive}{54} +\rtemscase{active}{58} +\rtemsdirective{TIMER\_CANCEL} +\rtemscase{inactive}{31} +\rtemscase{active}{34} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item TIMER_CREATE +@itemize - +@item only case: 28 +@end itemize + +@item TIMER_IDENT +@itemize - +@item only case: 343 +@end itemize + +@item TIMER_DELETE +@itemize - +@item inactive: 43 +@item active: 47 +@end itemize + +@item TIMER_FIRE_AFTER +@itemize - +@item inactive: 58 +@item active: 61 +@end itemize + +@item TIMER_FIRE_WHEN +@itemize - +@item inactive: TIMER_FIRE_WHEN_INACTIVE +@item active: TIMER_FIRE_WHEN_ACTIVE +@end itemize + +@item TIMER_RESET +@itemize - +@item inactive: TIMER_RESET_INACTIVE +@item active: TIMER_RESET_ACTIVE +@end itemize + +@item TIMER_CANCEL +@itemize - +@item inactive: TIMER_CANCEL_INACTIVE +@item active: TIMER_CANCEL_ACTIVE +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>TIMER_CREATE</STRONG></TD> + <TD ALIGN=center>28</TD></TR> +<TR><TD ALIGN=left><STRONG>TIMER_IDENT</STRONG></TD> + <TD ALIGN=center>343</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_DELETE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>43</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>47</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_FIRE_AFTER</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>58</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>61</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_FIRE_WHEN</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>88</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>88</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_RESET</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>54</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>58</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_CANCEL</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>31</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>34</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Semaphore Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{SEMAPHORE\_CREATE}{60} +\rtemsonecase{SEMAPHORE\_IDENT}{367} +\rtemsonecase{SEMAPHORE\_DELETE}{58} +\rtemsdirective{SEMAPHORE\_OBTAIN} +\rtemscase{available}{38} +\rtemscase{not available -- NO\_WAIT} + {38} +\rtemscase{not available -- caller blocks} + {109} +\rtemsdirective{SEMAPHORE\_RELEASE} +\rtemscase{no waiting tasks}{44} +\rtemscase{task readied -- returns to caller} + {66} +\rtemscase{task readied -- preempts caller} + {87} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item SEMAPHORE_CREATE +@itemize - +@item only case: 60 +@end itemize + +@item SEMAPHORE_IDENT +@itemize - +@item only case: 367 +@end itemize + +@item SEMAPHORE_DELETE +@itemize - +@item only case: 58 +@end itemize + +@item SEMAPHORE_OBTAIN +@itemize - +@item available: 38 +@item not available -- NO_WAIT: 38 +@item not available -- caller blocks: 109 +@end itemize + +@item SEMAPHORE_RELEASE +@itemize - +@item no waiting tasks: 44 +@item task readied -- returns to caller: 66 +@item task readied -- preempts caller: 87 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>SEMAPHORE_CREATE</STRONG></TD> + <TD ALIGN=center>60</TD></TR> +<TR><TD ALIGN=left><STRONG>SEMAPHORE_IDENT</STRONG></TD> + <TD ALIGN=center>367</TD></TR> +<TR><TD ALIGN=left><STRONG>SEMAPHORE_DELETE</STRONG></TD> + <TD ALIGN=center>58</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>SEMAPHORE_OBTAIN</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>38</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center>38</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center>109</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>SEMAPHORE_RELEASE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>44</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>66</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>87</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Message Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{MESSAGE\_QUEUE\_CREATE}{200} +\rtemsonecase{MESSAGE\_QUEUE\_IDENT}{341} +\rtemsonecase{MESSAGE\_QUEUE\_DELETE}{80} +\rtemsdirective{MESSAGE\_QUEUE\_SEND} +\rtemscase{no waiting tasks} + {97} +\rtemscase{task readied -- returns to caller} + {101} +\rtemscase{task readied -- preempts caller} + {123} +\rtemsdirective{MESSAGE\_QUEUE\_URGENT} +\rtemscase{no waiting tasks}{96} +\rtemscase{task readied -- returns to caller} + {101} +\rtemscase{task readied -- preempts caller} + {123} +\rtemsdirective{MESSAGE\_QUEUE\_BROADCAST} +\rtemscase{no waiting tasks}{53} +\rtemscase{task readied -- returns to caller} + {111} +\rtemscase{task readied -- preempts caller} + {133} +\rtemsdirective{MESSAGE\_QUEUE\_RECEIVE} +\rtemscase{available}{79} +\rtemscase{not available -- NO\_WAIT} + {43} +\rtemscase{not available -- caller blocks} + {114} +\rtemsdirective{MESSAGE\_QUEUE\_FLUSH} +\rtemscase{no messages flushed}{29} +\rtemscase{messages flushed}{39} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item MESSAGE_QUEUE_CREATE +@itemize - +@item only case: 200 +@end itemize + +@item MESSAGE_QUEUE_IDENT +@itemize - +@item only case: 341 +@end itemize + +@item MESSAGE_QUEUE_DELETE +@itemize - +@item only case: 80 +@end itemize + +@item MESSAGE_QUEUE_SEND +@itemize - +@item no waiting tasks: 97 +@item task readied -- returns to caller: 101 +@item task readied -- preempts caller: 123 +@end itemize + +@item MESSAGE_QUEUE_URGENT +@itemize - +@item no waiting tasks: 96 +@item task readied -- returns to caller: 101 +@item task readied -- preempts caller: 123 +@end itemize + +@item MESSAGE_QUEUE_BROADCAST +@itemize - +@item no waiting tasks: 53 +@item task readied -- returns to caller: 111 +@item task readied -- preempts caller: 133 +@end itemize + +@item MESSAGE_QUEUE_RECEIVE +@itemize - +@item available: 79 +@item not available -- NO_WAIT: 43 +@item not available -- caller blocks: 114 +@end itemize + +@item MESSAGE_QUEUE_FLUSH +@itemize - +@item no messages flushed: 29 +@item messages flushed: 39 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_CREATE</STRONG></TD> + <TD ALIGN=center>200</TD></TR> +<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_IDENT</STRONG></TD> + <TD ALIGN=center>341</TD></TR> +<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_DELETE</STRONG></TD> + <TD ALIGN=center>80</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_SEND</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>97</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>101</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>123</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_URGENT</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>96</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>101</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>123</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_BROADCAST</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>53</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>111</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>133</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_RECEIVE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>79</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center>43</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center>114</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_FLUSH</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no messages flushed</TD> + <TD ALIGN=center>29</TD></TR> + <TR><TD ALIGN=left><dd>messages flushed</TD> + <TD ALIGN=center>39</TD></TR> + + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Event Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsdirective{EVENT\_SEND} +\rtemscase{no task readied}{24} +\rtemscase{task readied -- returns to caller} + {60} +\rtemscase{task readied -- preempts caller} + {84} +\rtemsdirective{EVENT\_RECEIVE} +\rtemscase{obtain current events}{1} +\rtemscase{available}{28} +\rtemscase{not available -- NO\_WAIT}{23} +\rtemscase{not available -- caller blocks} + {84} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item EVENT_SEND +@itemize - +@item no task readied: 24 +@item task readied -- returns to caller: 60 +@item task readied -- preempts caller: 84 +@end itemize + +@item EVENT_RECEIVE +@itemize - +@item obtain current events: 1 +@item available: 28 +@item not available -- NO_WAIT: 23 +@item not available -- caller blocks: 84 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left COLSPAN=2><STRONG>EVENT_SEND</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no task readied</TD> + <TD ALIGN=center>24</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>60</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>84</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>EVENT_RECEIVE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>obtain current events</TD> + <TD ALIGN=center>1</TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>28</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center>23</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center>84</TD></TR> + + </TABLE> +</CENTER> +@end html +@end ifset +@section Signal Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{SIGNAL\_CATCH}{15} +\rtemsdirective{SIGNAL\_SEND} +\rtemscase{returns to caller}{37} +\rtemscase{signal to self}{55} +\rtemsdirective{EXIT ASR OVERHEAD} +\rtemscase{returns to calling task} + {37} +\rtemscase{returns to preempting task} + {54} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet +@item SIGNAL_CATCH +@itemize - +@item only case: 15 +@end itemize + +@item SIGNAL_SEND +@itemize - +@item returns to caller: 37 +@item signal to self: 55 +@end itemize + +@item EXIT ASR OVERHEAD +@itemize - +@item returns to calling task: 37 +@item returns to preempting task: 54 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>SIGNAL_CATCH</STRONG></TD> + <TD ALIGN=center>15</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>SIGNAL_SEND</TD></TR> + <TR><TD ALIGN=left><dd>returns to caller</TD> + <TD ALIGN=center>37</TD></TR> + <TR><TD ALIGN=left><dd>signal to self</TD> + <TD ALIGN=center>55</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>EXIT ASR OVERHEAD</TD></TR> + <TR><TD ALIGN=left><dd>returns to calling task</TD> + <TD ALIGN=center> + 37</TD></TR> + <TR><TD ALIGN=left><dd>returns to preempting task</TD> + <TD ALIGN=center> + 54</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Partition Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{PARTITION\_CREATE}{70} +\rtemsonecase{PARTITION\_IDENT}{341} +\rtemsonecase{PARTITION\_DELETE}{42} +\rtemsdirective{PARTITION\_GET\_BUFFER} +\rtemscase{available}{35} +\rtemscase{not available}{33} +\rtemsonecase{PARTITION\_RETURN\_BUFFER} + {33} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item PARTITION_CREATE +@itemize - +@item only case: 70 +@end itemize + +@item PARTITION_IDENT +@itemize - +@item only case: 341 +@end itemize + +@item PARTITION_DELETE +@itemize - +@item only case: 42 +@end itemize + +@item PARTITION_GET_BUFFER +@itemize - +@item available: 35 +@item not available: 33 +@end itemize + +@item PARTITION_RETURN_BUFFER +@itemize - +@item only case: 43 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>PARTITION_CREATE</STRONG></TD> + <TD ALIGN=center>70</TD></TR> +<TR><TD ALIGN=left><STRONG>PARTITION_IDENT</STRONG></TD> + <TD ALIGN=center>341</TD></TR> +<TR><TD ALIGN=left><STRONG>PARTITION_DELETE</STRONG></TD> + <TD ALIGN=center>42</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>PARTITION_GET_BUFFER</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>35</TD></TR> + <TR><TD ALIGN=left><dd>not available</TD> + <TD ALIGN=center>33</TD></TR> + <TR><TD ALIGN=left><STRONG>PARTITION_RETURN_BUFFER</STRONG></TD> + <TD ALIGN=center>33</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Region Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{REGION\_CREATE}{63} +\rtemsonecase{REGION\_IDENT}{348} +\rtemsonecase{REGION\_DELETE}{39} +\rtemsdirective{REGION\_GET\_SEGMENT} +\rtemscase{available}{52} +\rtemscase{not available -- NO\_WAIT} + {49} +\rtemscase{not available -- caller blocks} + {123} +\rtemsdirective{REGION\_RETURN\_SEGMENT} +\rtemscase{no waiting tasks}{54} +\rtemscase{task readied -- returns to caller} + {114} +\rtemscase{task readied -- preempts caller} + {136} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item REGION_CREATE +@itemize - +@item only case: 63 +@end itemize + +@item REGION_IDENT +@itemize - +@item only case: 348 +@end itemize + +@item REGION_DELETE +@itemize - +@item only case: 39 +@end itemize + +@item REGION_GET_SEGMENT +@itemize - +@item available: 52 +@item not available -- NO_WAIT: 49 +@item not available -- caller blocks: 123 +@end itemize + +@item REGION_RETURN_SEGMENT +@itemize - +@item no waiting tasks: 54 +@item task readied -- returns to caller: 114 +@item task readied -- preempts caller: 136 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>REGION_CREATE</STRONG></TD> + <TD ALIGN=center>63</TD></TR> +<TR><TD ALIGN=left><STRONG>REGION_IDENT</STRONG></TD> + <TD ALIGN=center>348</TD></TR> +<TR><TD ALIGN=left><STRONG>REGION_DELETE</STRONG></TD> + <TD ALIGN=center>39</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>REGION_GET_SEGMENT</TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>52</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center> + 49</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center> + 123</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>REGION_RETURN_SEGMENT</TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>54</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center> + 114</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center> + 136</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Dual-Ported Memory Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{PORT\_CREATE}{35} +\rtemsonecase{PORT\_IDENT}{340} +\rtemsonecase{PORT\_DELETE}{39} +\rtemsonecase{PORT\_INTERNAL\_TO\_EXTERNAL} + {26} +\rtemsonecase{PORT\_EXTERNAL\_TO\_INTERNAL} + {27} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item PORT_CREATE +@itemize - +@item only case: 35 +@end itemize + +@item PORT_IDENT +@itemize - +@item only case: 340 +@end itemize + +@item PORT_DELETE +@itemize - +@item only case: 39 +@end itemize + +@item PORT_INTERNAL_TO_EXTERNAL +@itemize - +@item only case: 26 +@end itemize + +@item PORT_EXTERNAL_TO_INTERNAL +@itemize - +@item only case: 27 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>PORT_CREATE</STRONG></TD> + <TD ALIGN=center>35</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_IDENT</STRONG></TD> + <TD ALIGN=center>340</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_DELETE</STRONG></TD> + <TD ALIGN=center>39</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_INTERNAL_TO_EXTERNAL</STRONG></TD> + <TD ALIGN=center>26</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_EXTERNAL_TO_INTERNAL</STRONG></TD> + <TD ALIGN=center>27</TD></TR> + + </TABLE> +</CENTER> +@end html +@end ifset + +@section I/O Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{IO\_INITIALIZE}{4} +\rtemsonecase{IO\_OPEN}{2} +\rtemsonecase{IO\_CLOSE}{1} +\rtemsonecase{IO\_READ}{2} +\rtemsonecase{IO\_WRITE}{3} +\rtemsonecase{IO\_CONTROL}{2} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item IO_INITIALIZE +@itemize - +@item only case: 4 +@end itemize + +@item IO_OPEN +@itemize - +@item only case: 2 +@end itemize + +@item IO_CLOSE +@itemize - +@item only case: 1 +@end itemize + +@item IO_READ +@itemize - +@item only case: 2 +@end itemize + +@item IO_WRITE +@itemize - +@item only case: 3 +@end itemize + +@item IO_CONTROL +@itemize - +@item only case: 2 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>IO_INITIALIZE</STRONG></TD> + <TD ALIGN=center>4</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_OPEN</STRONG></TD> + <TD ALIGN=center>2</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_CLOSE</STRONG></TD> + <TD ALIGN=center>1</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_READ</STRONG></TD> + <TD ALIGN=center>2</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_WRITE</STRONG></TD> + <TD ALIGN=center>3</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_CONTROL</STRONG></TD> + <TD ALIGN=center>2</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Rate Monotonic Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{RATE\_MONOTONIC\_CREATE}{32} +\rtemsonecase{RATE\_MONOTONIC\_IDENT}{341} +\rtemsonecase{RATE\_MONOTONIC\_CANCEL}{39} +\rtemsdirective{RATE\_MONOTONIC\_DELETE} +\rtemscase{active}{51} +\rtemscase{inactive}{48} +\rtemsdirective{RATE\_MONOTONIC\_PERIOD} +\rtemscase{initiate period -- returns to caller} + {54} +\rtemscase{conclude period -- caller blocks} + {74} +\rtemscase{obtain status}{31} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item RATE_MONOTONIC_CREATE +@itemize - +@item only case: 32 +@end itemize + +@item RATE_MONOTONIC_IDENT +@itemize - +@item only case: 341 +@end itemize + +@item RATE_MONOTONIC_CANCEL +@itemize - +@item only case: 39 +@end itemize + +@item RATE_MONOTONIC_DELETE +@itemize - +@item active: 51 +@item inactive: 48 +@end itemize + +@item RATE_MONOTONIC_PERIOD +@itemize - +@item initiate period -- returns to caller: 54 +@item conclude period -- caller blocks: 74 +@item obtain status: 31 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_CREATE</STRONG></TD> + <TD ALIGN=center>32</TD></TR> +<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_IDENT</STRONG></TD> + <TD ALIGN=center>341</TD></TR> +<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_CANCEL</STRONG></TD> + <TD ALIGN=center>39</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>RATE_MONOTONIC_DELETE</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>51</TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>48</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>RATE_MONOTONIC_PERIOD</TD></TR> + <TR><TD ALIGN=left><dd>initiate period -- returns to caller</TD> + <TD ALIGN=center> + 54</TD></TR> + <TR><TD ALIGN=left><dd>conclude period -- caller blocks</TD> + <TD ALIGN=center> + 74</TD></TR> + <TR><TD ALIGN=left><dd>obtain status</TD> + <TD ALIGN=center>31</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@tex +\global\advance \smallskipamount by 4pt +@end tex + +@tex +\global\advance \smallskipamount by 4pt +@end tex diff --git a/doc/supplements/powerpc/Makefile b/doc/supplements/powerpc/Makefile deleted file mode 100644 index 585671c558..0000000000 --- a/doc/supplements/powerpc/Makefile +++ /dev/null @@ -1,183 +0,0 @@ -# -# COPYRIGHT (c) 1988-1999. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. -# -# $Id$ -# - -PROJECT=powerpc - -include ../../Make.config - -REPLACE=../../tools/word-replace - -all: html info ps pdf - -dirs: - $(make-dirs) - -COMMON_FILES=../../common/cpright.texi ../../common/setup.texi - -GENERATED_FILES=\ - cpumodel.texi callconv.texi memmodel.texi intr.texi fatalerr.texi \ - bsp.texi cputable.texi timing.texi wksheets.texi timePSIM.texi timeDMV177.texi - -FILES= $(PROJECT).texi \ - preface.texi \ - $(GENERATED_FILES) - -INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*) - -info: dirs c_$(PROJECT) - cp c_$(PROJECT) c_$(PROJECT)-* $(INFO_INSTALL) - -c_$(PROJECT): $(FILES) - $(MAKEINFO) $(PROJECT).texi - -dvi: dirs $(PROJECT).dvi -ps: dirs $(PROJECT).ps -pdf: dirs $(PROJECT).pdf - -$(PROJECT).pdf: $(FILES) - $(TEXI2PDF) $(PROJECT).texi - cp $(PROJECT).pdf $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).ps: $(PROJECT).dvi - dvips -o $(PROJECT).ps $(PROJECT).dvi - cp $(PROJECT).ps $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).dvi: $(FILES) - $(TEXI2DVI) $(PROJECT).texi - cp $(PROJECT).dvi $(WWW_INSTALL)/$(PROJECT) - -html: dirs $(FILES) - -mkdir -p $(WWW_INSTALL)/$(PROJECT) - $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \ - $(PROJECT).texi - -clean: - rm -f *.o $(PROG) *.txt core $(PROJECT).pdf - rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f $(PROJECT) $(PROJECT)-* - rm -f c_$(PROJECT) c_$(PROJECT)-* - rm -f intr.t $(GENERATED_FILES) - rm -f wksheets.t wksheets_NOTIMES.t timing.t - rm -f timePSIM_.t timePSIM_.texi - rm -f timeDMV177_.t timeDMV177_.texi - rm -f *.fixed _* - -# -# Chapters which get automatic processing -# - -cpumodel.texi: cpumodel.t Makefile - $(BMENU) -p "Preface" \ - -u "Top" \ - -n "Calling Conventions" ${*}.t - -callconv.texi: callconv.t Makefile - $(BMENU) -p "CPU Model Dependent Features Low Power Model" \ - -u "Top" \ - -n "Memory Model" ${*}.t - -memmodel.texi: memmodel.t Makefile - $(BMENU) -p "Calling Conventions User-Provided Routines" \ - -u "Top" \ - -n "Interrupt Processing" ${*}.t - -# Interrupt Chapter: -# 1. Replace Times and Sizes -# 2. Build Node Structure -intr.t: intr_NOTIMES.t PSIM_TIMES - ${REPLACE} -p PSIM_TIMES intr_NOTIMES.t - mv intr_NOTIMES.t.fixed intr.t - -intr.texi: intr.t Makefile - $(BMENU) -p "Memory Model Flat Memory Model" \ - -u "Top" \ - -n "Default Fatal Error Processing" ${*}.t - -fatalerr.texi: fatalerr.t Makefile - $(BMENU) -p "Interrupt Processing Interrupt Stack" \ - -u "Top" \ - -n "Board Support Packages" ${*}.t - -bsp.texi: bsp.t Makefile - $(BMENU) -p "Default Fatal Error Processing Default Fatal Error Handler Operations" \ - -u "Top" \ - -n "Processor Dependent Information Table" ${*}.t - -cputable.texi: cputable.t Makefile - $(BMENU) -p "Board Support Packages Processor Initialization" \ - -u "Top" \ - -n "Memory Requirements" ${*}.t - -# Worksheets Chapter: -# 1. Obtain the Shared File -# 2. Replace Times and Sizes -# 3. Build Node Structure - -wksheets_NOTIMES.t: ../../common/wksheets.t - cp ../../common/wksheets.t wksheets_NOTIMES.t - -wksheets.t: wksheets_NOTIMES.t PSIM_TIMES - ${REPLACE} -p PSIM_TIMES wksheets_NOTIMES.t - mv wksheets_NOTIMES.t.fixed wksheets.t - -wksheets.texi: wksheets.t Makefile - $(BMENU) -p "Processor Dependent Information Table CPU Dependent Information Table" \ - -u "Top" \ - -n "Timing Specification" ${*}.t - -# Timing Specification Chapter: -# 1. Copy the Shared File -# 3. Build Node Structure - -timing.t: ../../common/timing.t - cp ../../common/timing.t timing.t - -timing.texi: timing.t Makefile - $(BMENU) -p "Memory Requirements RTEMS RAM Workspace Worksheet" \ - -u "Top" \ - -n "PSIM Timing Data" ${*}.t - -# Timing Data for PSIM BSP Chapter: -# 1. Copy the Shared File -# 2. Replace Times and Sizes -# 3. Build Node Structure - -timePSIM_.t: ../../common/timetbl.t timePSIM.t - cat timePSIM.t ../../common/timetbl.t >timePSIM_.t - @echo >>timePSIM_.t - @echo "@tex" >>timePSIM_.t - @echo "\\global\\advance \\smallskipamount by 4pt" >>timePSIM_.t - @echo "@end tex" >>timePSIM_.t - ${REPLACE} -p PSIM_TIMES timePSIM_.t - mv timePSIM_.t.fixed timePSIM_.t - -timePSIM.texi: timePSIM_.t Makefile - $(BMENU) -p "Timing Specification Terminology" \ - -u "Top" \ - -n "DMV177 Timing Data" timePSIM_.t - mv timePSIM_.texi timePSIM.texi - -# Timing Data for DMV177 BSP Chapter: -# 1. Copy the Shared File -# 2. Replace Times and Sizes -# 3. Build Node Structure - -timeDMV177_.t: ../../common/timetbl.t timeDMV177.t - cat timeDMV177.t ../../common/timetbl.t >timeDMV177_.t - @echo >>timeDMV177_.t - @echo "@tex" >>timeDMV177_.t - @echo "\\global\\advance \\smallskipamount by 4pt" >>timeDMV177_.t - @echo "@end tex" >>timeDMV177_.t - ${REPLACE} -p DMV177_TIMES timeDMV177_.t - mv timeDMV177_.t.fixed timeDMV177_.t - -timeDMV177.texi: timeDMV177_.t Makefile - $(BMENU) -p "PSIM Timing Data Rate Monotonic Manager" \ - -u "Top" \ - -n "Command and Variable Index" timeDMV177_.t - mv timeDMV177_.texi timeDMV177.texi diff --git a/doc/supplements/powerpc/Makefile.am b/doc/supplements/powerpc/Makefile.am new file mode 100644 index 0000000000..40a4dc2d3c --- /dev/null +++ b/doc/supplements/powerpc/Makefile.am @@ -0,0 +1,134 @@ +# +# COPYRIGHT (c) 1988-1999. +# On-Line Applications Research Corporation (OAR). +# All rights reserved. +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign + +PROJECT=powerpc + +include $(top_srcdir)/project.am +include $(top_srcdir)/supplements/supplement.am + +COMMON_FILES=$(top_srcdir)/common/cpright.texi $(top_builddir)/common/setup.texi + +GENERATED_FILES=\ + cpumodel.texi callconv.texi memmodel.texi intr.texi fatalerr.texi \ + bsp.texi cputable.texi timing.texi wksheets.texi timePSIM.texi timeDMV177.texi + +FILES= preface.texi + +info_TEXINFOS = powerpc.texi +powerpc_TEXINFOS = $(FILES) $(COMMON_FILES) $(GENERATED_FILES) + +# +# Chapters which get automatic processing +# + +cpumodel.texi: cpumodel.t + $(BMENU) -p "Preface" \ + -u "Top" \ + -n "Calling Conventions" $< + +callconv.texi: callconv.t + $(BMENU) -p "CPU Model Dependent Features Low Power Model" \ + -u "Top" \ + -n "Memory Model" $< + +memmodel.texi: memmodel.t + $(BMENU) -p "Calling Conventions User-Provided Routines" \ + -u "Top" \ + -n "Interrupt Processing" $< + +# Interrupt Chapter: +# 1. Replace Times and Sizes +# 2. Build Node Structure +intr.texi: intr_NOTIMES.t PSIM_TIMES + ${REPLACE2} -p $(srcdir)/PSIM_TIMES $(srcdir)/intr_NOTIMES.t intr.t + $(BMENU) -p "Memory Model Flat Memory Model" \ + -u "Top" \ + -n "Default Fatal Error Processing" intr.t +CLEANFILES += intr.t + +fatalerr.texi: fatalerr.t + $(BMENU) -p "Interrupt Processing Interrupt Stack" \ + -u "Top" \ + -n "Board Support Packages" $< + +bsp.texi: bsp.t + $(BMENU) -p "Default Fatal Error Processing Default Fatal Error Handler Operations" \ + -u "Top" \ + -n "Processor Dependent Information Table" $< + +cputable.texi: cputable.t + $(BMENU) -p "Board Support Packages Processor Initialization" \ + -u "Top" \ + -n "Memory Requirements" $< + +# Worksheets Chapter: +# 1. Obtain the Shared File +# 2. Replace Times and Sizes +# 3. Build Node Structure + +wksheets.texi: $(top_srcdir)/common/wksheets.t PSIM_TIMES + ${REPLACE2} -p $(srcdir)/PSIM_TIMES \ + $(top_srcdir)/common/wksheets.t wksheets.t + $(BMENU) -p "Processor Dependent Information Table CPU Dependent Information Table" \ + -u "Top" \ + -n "Timing Specification" wksheets.t +CLEANFILES += wksheets.t + +# Timing Specification Chapter: +# 1. Copy the Shared File +# 3. Build Node Structure +timing.texi: $(top_srcdir)/common/timing.t + cp $(top_srcdir)/common/timing.t timing.t + $(BMENU) -p "Memory Requirements RTEMS RAM Workspace Worksheet" \ + -u "Top" \ + -n "PSIM Timing Data" timing.t +CLEANFILES += timing.t + +# Timing Data for PSIM BSP Chapter: +# 1. Copy the Shared File +# 2. Replace Times and Sizes +# 3. Build Node Structure + +timePSIM_.t: $(top_srcdir)/common/timetbl.t timePSIM.t + cat timePSIM.t $(top_srcdir)/common/timetbl.t >timePSIM_.t + @echo >>timePSIM_.t + @echo "@tex" >>timePSIM_.t + @echo "\\global\\advance \\smallskipamount by 4pt" >>timePSIM_.t + @echo "@end tex" >>timePSIM_.t + ${REPLACE} -p PSIM_TIMES timePSIM_.t + mv timePSIM_.t.fixed timePSIM_.t + +timePSIM.texi: timePSIM_.t + $(BMENU) -p "Timing Specification Terminology" \ + -u "Top" \ + -n "DMV177 Timing Data" timePSIM_.t + mv timePSIM_.texi timePSIM.texi + +# Timing Data for DMV177 BSP Chapter: +# 1. Copy the Shared File +# 2. Replace Times and Sizes +# 3. Build Node Structure + +timeDMV177_.t: $(top_srcdir)/common/timetbl.t timeDMV177.t + cat timeDMV177.t $(top_srcdir)/common/timetbl.t >timeDMV177_.t + @echo >>timeDMV177_.t + @echo "@tex" >>timeDMV177_.t + @echo "\\global\\advance \\smallskipamount by 4pt" >>timeDMV177_.t + @echo "@end tex" >>timeDMV177_.t + ${REPLACE} -p DMV177_TIMES timeDMV177_.t + mv timeDMV177_.t.fixed timeDMV177_.t + +timeDMV177.texi: timeDMV177_.t + $(BMENU) -p "PSIM Timing Data Rate Monotonic Manager" \ + -u "Top" \ + -n "Command and Variable Index" timeDMV177_.t + mv timeDMV177_.texi timeDMV177.texi + +EXTRA_DIST = DMV177_TIMES PSIM_TIMES *.t diff --git a/doc/supplements/powerpc/powerpc.texi b/doc/supplements/powerpc/powerpc.texi index b9661ad02d..2047f421e8 100644 --- a/doc/supplements/powerpc/powerpc.texi +++ b/doc/supplements/powerpc/powerpc.texi @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c %**start of header -@setfilename c_powerpc +@setfilename powerpc @syncodeindex vr fn @synindex ky cp @paragraphindent 0 @@ -76,7 +76,7 @@ END-INFO-DIR-ENTRY @include timeDMV177.texi @ifinfo @node Top, Preface, (dir), (dir) -@top c_powerpc +@top powerpc This is the online version of the RTEMS PowerPC Applications Supplement. diff --git a/doc/supplements/powerpc/timeDMV177_.t b/doc/supplements/powerpc/timeDMV177_.t new file mode 100644 index 0000000000..85bb6fb41b --- /dev/null +++ b/doc/supplements/powerpc/timeDMV177_.t @@ -0,0 +1,1447 @@ +@c +@c Timing information for the DMV177 +@c +@c COPYRIGHT (c) 1988-1999. +@c On-Line Applications Research Corporation (OAR). +@c All rights reserved. +@c +@c $Id$ +@c + +@include ../../common/timemac.texi +@tex +\global\advance \smallskipamount by -4pt +@end tex + +@chapter DMV177 Timing Data + +@section Introduction + +The timing data for RTEMS on the DY-4 DMV177 board +is provided along with the target +dependent aspects concerning the gathering of the timing data. +The hardware platform used to gather the times is described to +give the reader a better understanding of each directive time +provided. Also, provided is a description of the interrupt +latency and the context switch times as they pertain to the +PowerPC version of RTEMS. + +@section Hardware Platform + +All times reported in this chapter were measured using a DMV177 board. +All data and code caching was disabled. This results in very deterministic +times which represent the worst possible performance. Many embedded +applications disable caching to insure that execution times are +repeatable. Moreover, the JTAG port on certain revisions of the PowerPC +603e does not operate properly if caching is enabled. Thus during +development and debug, caching must be off. + +The PowerPC decrementer register was was used to gather +all timing information. In the PowerPC architecture, +this register typically counts +something like CPU cycles or is a function of the clock +speed. On the PPC603e decrements once for every four (4) bus cycles. +On the DMV177, the bus operates at a clock speed of +33 Mhz. This result in a very accurate number since it is a function of the +microprocessor itself. Thus all measurements in this +chapter are reported as the actual number of decrementer +clicks reported. + +To convert the numbers reported to microseconds, one should +divide the number reported by 8.650752. This number was derived as +shown below: + +@example +((33 * 1048576) / 1000000) / 4 = 8.650752 +@end example + +All sources of hardware interrupts were disabled, +although traps were enabled and the interrupt level of the +PowerPC allows all interrupts. + +@section Interrupt Latency + +The maximum period with traps disabled or the +processor interrupt level set to it's highest value inside RTEMS +is less than TBD +microseconds including the instructions which +disable and re-enable interrupts. The time required for the +PowerPC to vector an interrupt and for the RTEMS entry overhead +before invoking the user's trap handler are a total of +202 +microseconds. These combine to yield a worst case interrupt +latency of less than TBD + +202 microseconds at +100.0 Mhz. +[NOTE: The maximum period with interrupts disabled was last +determined for Release 4.0.0-lmco.] + +The maximum period with interrupts disabled within +RTEMS is hand-timed with some assistance from the PowerPC simulator. +The maximum period with interrupts disabled with RTEMS has not +been calculated on this target. + +The interrupt vector and entry overhead time was +generated on the PSIM benchmark platform using the PowerPC's +decrementer register. This register was programmed to generate +an interrupt after one countdown. + +@section Context Switch + +The RTEMS processor context switch time is 585 +bus cycle on the DMV177 benchmark platform when no floating +point context is saved or restored. Additional execution time +is required when a TASK_SWITCH user extension is configured. +The use of the TASK_SWITCH extension is application dependent. +Thus, its execution time is not considered part of the raw +context switch time. + +Since RTEMS was designed specifically for embedded +missile applications which are floating point intensive, the +executive is optimized to avoid unnecessarily saving and +restoring the state of the numeric coprocessor. The state of +the numeric coprocessor is only saved when an FLOATING_POINT +task is dispatched and that task was not the last task to +utilize the coprocessor. In a system with only one +FLOATING_POINT task, the state of the numeric coprocessor will +never be saved or restored. When the first FLOATING_POINT task +is dispatched, RTEMS does not need to save the current state of +the numeric coprocessor. + +The following table summarizes the context switch +times for the DMV177 benchmark platform: + +@c ****** This comment is here to remind you not to edit the timetbl.t +@c ****** in any directory but common. +@c +@c Time Table Template +@c +@c COPYRIGHT (c) 1988-1999. +@c On-Line Applications Research Corporation (OAR). +@c All rights reserved. +@c +@c $Id$ +@c + +@ifset use-tex +@sp 1 +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{No Floating Point Contexts}{585} +\rtemsdirective{Floating Point Contexts} +\rtemscase{restore first FP task}{730} +\rtemscase{save initialized, restore initialized}{478} +\rtemscase{save idle, restore initialized}{825} +\rtemscase{save idle, restore idle}{478} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet +@item No Floating Point Contexts +@itemize - +@item only case: 585 +@end itemize +@item Floating Point Contexts +@itemize - +@item restore first FP task: 730 +@item save initialized, restore initialized: 478 +@item save idle, restore initialized: 825 +@item save idle, restore idle: 825 +@end itemize +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>No Floating Point Contexts</STRONG></TD> + <TD ALIGN=center>585</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>Floating Point Contexts</TR> + <TR><TD ALIGN=left><dd>restore first FP task</TD> + <TD ALIGN=center>730</TD> + <TR><TD ALIGN=left><dd>save initialized, restore initialized</TD> + <TD ALIGN=center>478</TD> + <TR><TD ALIGN=left><dd>save idle, restore initialized</TD> + <TD ALIGN=center>825</TD> + <TR><TD ALIGN=left><dd>save idle, restore idle</TD> + <TD ALIGN=center>478</TD> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Directive Times + +This sections is divided into a number of +subsections, each of which contains a table listing the +execution times of that manager's directives. + +@page +@section Task Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{TASK\_CREATE}{2301} +\rtemsonecase{TASK\_IDENT}{2900} +\rtemsonecase{TASK\_START}{794} +\rtemsdirective{TASK\_RESTART} +\rtemscase{calling task}{1137} +\rtemscase{suspended task -- returns to caller} + {906} +\rtemscase{blocked task -- returns to caller} + {1102} +\rtemscase{ready task -- returns to caller} + {928} +\rtemscase{suspended task -- preempts caller} + {1483} +\rtemscase{blocked task -- preempts caller} + {1640} +\rtemscase{ready task -- preempts caller} + {1601} +\rtemsdirective{TASK\_DELETE} +\rtemscase{calling task}{2117} +\rtemscase{suspended task}{1555} +\rtemscase{blocked task}{1609} +\rtemscase{ready task}{1620} +\rtemsdirective{TASK\_SUSPEND} +\rtemscase{calling task}{960} +\rtemscase{returns to caller}{433} +\rtemsdirective{TASK\_RESUME} +\rtemscase{task readied -- returns to caller} + {960} +\rtemscase{task readied -- preempts caller} + {803} +\rtemsdirective{TASK\_SET\_PRIORITY} +\rtemscase{obtain current priority} + {368} +\rtemscase{returns to caller}{633} +\rtemscase{preempts caller}{1211} +\rtemsdirective{TASK\_MODE} +\rtemscase{obtain current mode}{184} +\rtemscase{no reschedule}{213} +\rtemscase{reschedule -- returns to caller} + {247} +\rtemscase{reschedule -- preempts caller} + {919} +\rtemsonecase{TASK\_GET\_NOTE}{382} +\rtemsonecase{TASK\_SET\_NOTE}{383} +\rtemsdirective{TASK\_WAKE\_AFTER} +\rtemscase{yield -- returns to caller} + {245} +\rtemscase{yield -- preempts caller} + {851} +\rtemsonecase{TASK\_WAKE\_WHEN}{1275} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item TASK_CREATE +@itemize - +@item only case: 2301 +@end itemize + +@item TASK_IDENT +@itemize - +@item only case: 2900 +@end itemize + +@item TASK_START +@itemize - +@item only case: 794 +@end itemize + +@item TASK_RESTART +@itemize - +@item calling task: 1137 +@item suspended task -- returns to caller: 906 +@item blocked task -- returns to caller: 1102 +@item ready task -- returns to caller: 928 +@item suspended task -- preempts caller: 1483 +@item blocked task -- preempts caller: 1640 +@item ready task -- preempts caller: 1601 +@end itemize + +@item TASK_DELETE +@itemize - +@item calling task: 2117 +@item suspended task: 1555 +@item blocked task: 1609 +@item ready task: 1620 +@end itemize + +@item TASK_SUSPEND +@itemize - +@item calling task: 960 +@item returns to caller: 433 +@end itemize + +@item TASK_RESUME +@itemize - +@item task readied -- returns to caller: 960 +@item task readied -- preempts caller: 803 +@end itemize + +@item TASK_SET_PRIORITY +@itemize - +@item obtain current priority: 368 +@item returns to caller: 633 +@item preempts caller: 1211 +@end itemize + +@item TASK_MODE +@itemize - +@item obtain current mode: 184 +@item no reschedule: 213 +@item reschedule -- returns to caller: 247 +@item reschedule -- preempts caller: 919 +@end itemize + +@item TASK_GET_NOTE +@itemize - +@item only case: 382 +@end itemize + +@item TASK_SET_NOTE +@itemize - +@item only case: 383 +@end itemize + +@item TASK_WAKE_AFTER +@itemize - +@item yield -- returns to caller: 245 +@item yield -- preempts caller: 851 +@end itemize + +@item TASK_WAKE_WHEN +@itemize - +@item only case: 1275 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>TASK_CREATE</STRONG></TD> + <TD ALIGN=center>2301</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_IDENT</STRONG></TD> + <TD ALIGN=center>2900</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_START</STRONG></TD> + <TD ALIGN=center>794</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_RESTART</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>calling task</TD> + <TD ALIGN=center>1137</TD></TR> + <TR><TD ALIGN=left><dd>suspended task -- returns to caller</TD> + <TD ALIGN=center>906</TD></TR> + <TR><TD ALIGN=left><dd>blocked task -- returns to caller</TD> + <TD ALIGN=center>1102</TD></TR> + <TR><TD ALIGN=left><dd>ready task -- returns to caller</TD> + <TD ALIGN=center>928</TD></TR> + <TR><TD ALIGN=left><dd>suspended task -- preempts caller</TD> + <TD ALIGN=center>1483</TD></TR> + <TR><TD ALIGN=left><dd>blocked task -- preempts caller</TD> + <TD ALIGN=center>1640</TD></TR> + <TR><TD ALIGN=left><dd>ready task -- preempts caller</TD> + <TD ALIGN=center>1601</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_DELETE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>calling task</TD> + <TD ALIGN=center>2117</TD></TR> + <TR><TD ALIGN=left><dd>suspended task</TD> + <TD ALIGN=center>1555</TD></TR> + <TR><TD ALIGN=left><dd>blocked task</TD> + <TD ALIGN=center>1609</TD></TR> + <TR><TD ALIGN=left><dd>ready task</TD> + <TD ALIGN=center>1620</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_SUSPEND</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>calling task</TD> + <TD ALIGN=center>960</TD></TR> + <TR><TD ALIGN=left><dd>returns to caller</TD> + <TD ALIGN=center>433</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_RESUME</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>960</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>803</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_SET_PRIORITY</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>obtain current priority</TD> + <TD ALIGN=center>368</TD></TR> + <TR><TD ALIGN=left><dd>returns to caller</TD> + <TD ALIGN=center>633</TD></TR> + <TR><TD ALIGN=left><dd>preempts caller</TD> + <TD ALIGN=center>1211</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_MODE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>obtain current mode</TD> + <TD ALIGN=center>184</TD></TR> + <TR><TD ALIGN=left><dd>no reschedule</TD> + <TD ALIGN=center>213</TD></TR> + <TR><TD ALIGN=left><dd>reschedule -- returns to caller</TD> + <TD ALIGN=center>247</TD></TR> + <TR><TD ALIGN=left><dd>reschedule -- preempts caller</TD> + <TD ALIGN=center>919</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_GET_NOTE</STRONG></TD> + <TD ALIGN=center>382</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_SET_NOTE</STRONG></TD> + <TD ALIGN=center>383</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_WAKE_AFTER</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>yield -- returns to caller</TD> + <TD ALIGN=center>245</TD></TR> + <TR><TD ALIGN=left><dd>yield -- preempts caller</TD> + <TD ALIGN=center>851</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_WAKE_WHEN</STRONG></TD> + <TD ALIGN=center>1275</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Interrupt Manager + +It should be noted that the interrupt entry times +include vectoring the interrupt handler. + +@ifset use-tex +@sp 1 +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsdirective{Interrupt Entry Overhead} +\rtemscase{returns to nested interrupt}{201} +\rtemscase{returns to interrupted task} + {206} +\rtemscase{returns to preempting task} + {202} +\rtemsdirective{Interrupt Exit Overhead} +\rtemscase{returns to nested interrupt}{201} +\rtemscase{returns to interrupted task} + {213} +\rtemscase{returns to preempting task} + {857} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item Interrupt Entry Overhead +@itemize - +@item returns to nested interrupt: 201 +@item returns to interrupted task: 206 +@item returns to preempting task: 202 +@end itemize + +@item Interrupt Exit Overhead +@itemize - +@item returns to nested interrupt: 201 +@item returns to interrupted task: 213 +@item returns to preempting task: 857 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left COLSPAN=2><STRONG>Interrupt Entry Overhead</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>returns to nested interrupt</TD> + <TD ALIGN=center>201</TD></TR> + <TR><TD ALIGN=left><dd>returns to interrupted task</TD> + <TD ALIGN=center>206</TD></TR> + <TR><TD ALIGN=left><dd>returns to preempting task</TD> + <TD ALIGN=center>202</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>Interrupt Exit Overhead</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>returns to nested interrupt</TD> + <TD ALIGN=center>201</TD></TR> + <TR><TD ALIGN=left><dd>returns to interrupted task</TD> + <TD ALIGN=center>213</TD></TR> + <TR><TD ALIGN=left><dd>returns to preempting task</TD> + <TD ALIGN=center>857</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + + +@section Clock Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{CLOCK\_SET}{792} +\rtemsonecase{CLOCK\_GET}{78} +\rtemsonecase{CLOCK\_TICK}{214} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item CLOCK_SET +@itemize - +@item only case: 792 +@end itemize + +@item CLOCK_GET +@itemize - +@item only case: 78 +@end itemize + +@item CLOCK_TICK +@itemize - +@item only case: 214 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>CLOCK_SET</STRONG></TD> + <TD ALIGN=center>792</TD></TR> +<TR><TD ALIGN=left><STRONG>CLOCK_GET</STRONG></TD> + <TD ALIGN=center>78</TD></TR> +<TR><TD ALIGN=left><STRONG>CLOCK_TICK</STRONG></TD> + <TD ALIGN=center>214</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Timer Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{TIMER\_CREATE}{357} +\rtemsonecase{TIMER\_IDENT}{2828} +\rtemsdirective{TIMER\_DELETE} +\rtemscase{inactive}{432} +\rtemscase{active}{471} +\rtemsdirective{TIMER\_FIRE\_AFTER} +\rtemscase{inactive}{607} +\rtemscase{active}{646} +\rtemsdirective{TIMER\_FIRE\_WHEN} +\rtemscase{inactive}{766} +\rtemscase{active}{764} +\rtemsdirective{TIMER\_RESET} +\rtemscase{inactive}{552} +\rtemscase{active}{766} +\rtemsdirective{TIMER\_CANCEL} +\rtemscase{inactive}{339} +\rtemscase{active}{378} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item TIMER_CREATE +@itemize - +@item only case: 357 +@end itemize + +@item TIMER_IDENT +@itemize - +@item only case: 2828 +@end itemize + +@item TIMER_DELETE +@itemize - +@item inactive: 432 +@item active: 471 +@end itemize + +@item TIMER_FIRE_AFTER +@itemize - +@item inactive: 607 +@item active: 646 +@end itemize + +@item TIMER_FIRE_WHEN +@itemize - +@item inactive: TIMER_FIRE_WHEN_INACTIVE +@item active: TIMER_FIRE_WHEN_ACTIVE +@end itemize + +@item TIMER_RESET +@itemize - +@item inactive: TIMER_RESET_INACTIVE +@item active: TIMER_RESET_ACTIVE +@end itemize + +@item TIMER_CANCEL +@itemize - +@item inactive: TIMER_CANCEL_INACTIVE +@item active: TIMER_CANCEL_ACTIVE +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>TIMER_CREATE</STRONG></TD> + <TD ALIGN=center>357</TD></TR> +<TR><TD ALIGN=left><STRONG>TIMER_IDENT</STRONG></TD> + <TD ALIGN=center>2828</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_DELETE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>432</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>471</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_FIRE_AFTER</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>607</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>646</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_FIRE_WHEN</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>766</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>764</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_RESET</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>552</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>766</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_CANCEL</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>339</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>378</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Semaphore Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{SEMAPHORE\_CREATE}{571} +\rtemsonecase{SEMAPHORE\_IDENT}{3243} +\rtemsonecase{SEMAPHORE\_DELETE}{575} +\rtemsdirective{SEMAPHORE\_OBTAIN} +\rtemscase{available}{414} +\rtemscase{not available -- NO\_WAIT} + {414} +\rtemscase{not available -- caller blocks} + {1254} +\rtemsdirective{SEMAPHORE\_RELEASE} +\rtemscase{no waiting tasks}{501} +\rtemscase{task readied -- returns to caller} + {636} +\rtemscase{task readied -- preempts caller} + {982} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item SEMAPHORE_CREATE +@itemize - +@item only case: 571 +@end itemize + +@item SEMAPHORE_IDENT +@itemize - +@item only case: 3243 +@end itemize + +@item SEMAPHORE_DELETE +@itemize - +@item only case: 575 +@end itemize + +@item SEMAPHORE_OBTAIN +@itemize - +@item available: 414 +@item not available -- NO_WAIT: 414 +@item not available -- caller blocks: 1254 +@end itemize + +@item SEMAPHORE_RELEASE +@itemize - +@item no waiting tasks: 501 +@item task readied -- returns to caller: 636 +@item task readied -- preempts caller: 982 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>SEMAPHORE_CREATE</STRONG></TD> + <TD ALIGN=center>571</TD></TR> +<TR><TD ALIGN=left><STRONG>SEMAPHORE_IDENT</STRONG></TD> + <TD ALIGN=center>3243</TD></TR> +<TR><TD ALIGN=left><STRONG>SEMAPHORE_DELETE</STRONG></TD> + <TD ALIGN=center>575</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>SEMAPHORE_OBTAIN</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>414</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center>414</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center>1254</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>SEMAPHORE_RELEASE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>501</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>636</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>982</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Message Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{MESSAGE\_QUEUE\_CREATE}{2270} +\rtemsonecase{MESSAGE\_QUEUE\_IDENT}{2828} +\rtemsonecase{MESSAGE\_QUEUE\_DELETE}{708} +\rtemsdirective{MESSAGE\_QUEUE\_SEND} +\rtemscase{no waiting tasks} + {923} +\rtemscase{task readied -- returns to caller} + {955} +\rtemscase{task readied -- preempts caller} + {1322} +\rtemsdirective{MESSAGE\_QUEUE\_URGENT} +\rtemscase{no waiting tasks}{919} +\rtemscase{task readied -- returns to caller} + {955} +\rtemscase{task readied -- preempts caller} + {1322} +\rtemsdirective{MESSAGE\_QUEUE\_BROADCAST} +\rtemscase{no waiting tasks}{589} +\rtemscase{task readied -- returns to caller} + {1079} +\rtemscase{task readied -- preempts caller} + {1435} +\rtemsdirective{MESSAGE\_QUEUE\_RECEIVE} +\rtemscase{available}{755} +\rtemscase{not available -- NO\_WAIT} + {467} +\rtemscase{not available -- caller blocks} + {1283} +\rtemsdirective{MESSAGE\_QUEUE\_FLUSH} +\rtemscase{no messages flushed}{369} +\rtemscase{messages flushed}{431} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item MESSAGE_QUEUE_CREATE +@itemize - +@item only case: 2270 +@end itemize + +@item MESSAGE_QUEUE_IDENT +@itemize - +@item only case: 2828 +@end itemize + +@item MESSAGE_QUEUE_DELETE +@itemize - +@item only case: 708 +@end itemize + +@item MESSAGE_QUEUE_SEND +@itemize - +@item no waiting tasks: 923 +@item task readied -- returns to caller: 955 +@item task readied -- preempts caller: 1322 +@end itemize + +@item MESSAGE_QUEUE_URGENT +@itemize - +@item no waiting tasks: 919 +@item task readied -- returns to caller: 955 +@item task readied -- preempts caller: 1322 +@end itemize + +@item MESSAGE_QUEUE_BROADCAST +@itemize - +@item no waiting tasks: 589 +@item task readied -- returns to caller: 1079 +@item task readied -- preempts caller: 1435 +@end itemize + +@item MESSAGE_QUEUE_RECEIVE +@itemize - +@item available: 755 +@item not available -- NO_WAIT: 467 +@item not available -- caller blocks: 1283 +@end itemize + +@item MESSAGE_QUEUE_FLUSH +@itemize - +@item no messages flushed: 369 +@item messages flushed: 431 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_CREATE</STRONG></TD> + <TD ALIGN=center>2270</TD></TR> +<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_IDENT</STRONG></TD> + <TD ALIGN=center>2828</TD></TR> +<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_DELETE</STRONG></TD> + <TD ALIGN=center>708</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_SEND</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>923</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>955</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>1322</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_URGENT</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>919</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>955</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>1322</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_BROADCAST</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>589</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>1079</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>1435</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_RECEIVE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>755</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center>467</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center>1283</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_FLUSH</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no messages flushed</TD> + <TD ALIGN=center>369</TD></TR> + <TR><TD ALIGN=left><dd>messages flushed</TD> + <TD ALIGN=center>431</TD></TR> + + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Event Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsdirective{EVENT\_SEND} +\rtemscase{no task readied}{354} +\rtemscase{task readied -- returns to caller} + {571} +\rtemscase{task readied -- preempts caller} + {946} +\rtemsdirective{EVENT\_RECEIVE} +\rtemscase{obtain current events}{43} +\rtemscase{available}{357} +\rtemscase{not available -- NO\_WAIT}{331} +\rtemscase{not available -- caller blocks} + {1043} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item EVENT_SEND +@itemize - +@item no task readied: 354 +@item task readied -- returns to caller: 571 +@item task readied -- preempts caller: 946 +@end itemize + +@item EVENT_RECEIVE +@itemize - +@item obtain current events: 43 +@item available: 357 +@item not available -- NO_WAIT: 331 +@item not available -- caller blocks: 1043 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left COLSPAN=2><STRONG>EVENT_SEND</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no task readied</TD> + <TD ALIGN=center>354</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>571</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>946</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>EVENT_RECEIVE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>obtain current events</TD> + <TD ALIGN=center>43</TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>357</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center>331</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center>1043</TD></TR> + + </TABLE> +</CENTER> +@end html +@end ifset +@section Signal Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{SIGNAL\_CATCH}{267} +\rtemsdirective{SIGNAL\_SEND} +\rtemscase{returns to caller}{408} +\rtemscase{signal to self}{607} +\rtemsdirective{EXIT ASR OVERHEAD} +\rtemscase{returns to calling task} + {464} +\rtemscase{returns to preempting task} + {752} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet +@item SIGNAL_CATCH +@itemize - +@item only case: 267 +@end itemize + +@item SIGNAL_SEND +@itemize - +@item returns to caller: 408 +@item signal to self: 607 +@end itemize + +@item EXIT ASR OVERHEAD +@itemize - +@item returns to calling task: 464 +@item returns to preempting task: 752 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>SIGNAL_CATCH</STRONG></TD> + <TD ALIGN=center>267</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>SIGNAL_SEND</TD></TR> + <TR><TD ALIGN=left><dd>returns to caller</TD> + <TD ALIGN=center>408</TD></TR> + <TR><TD ALIGN=left><dd>signal to self</TD> + <TD ALIGN=center>607</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>EXIT ASR OVERHEAD</TD></TR> + <TR><TD ALIGN=left><dd>returns to calling task</TD> + <TD ALIGN=center> + 464</TD></TR> + <TR><TD ALIGN=left><dd>returns to preempting task</TD> + <TD ALIGN=center> + 752</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Partition Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{PARTITION\_CREATE}{762} +\rtemsonecase{PARTITION\_IDENT}{2828} +\rtemsonecase{PARTITION\_DELETE}{426} +\rtemsdirective{PARTITION\_GET\_BUFFER} +\rtemscase{available}{394} +\rtemscase{not available}{376} +\rtemsonecase{PARTITION\_RETURN\_BUFFER} + {376} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item PARTITION_CREATE +@itemize - +@item only case: 762 +@end itemize + +@item PARTITION_IDENT +@itemize - +@item only case: 2828 +@end itemize + +@item PARTITION_DELETE +@itemize - +@item only case: 426 +@end itemize + +@item PARTITION_GET_BUFFER +@itemize - +@item available: 394 +@item not available: 376 +@end itemize + +@item PARTITION_RETURN_BUFFER +@itemize - +@item only case: 420 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>PARTITION_CREATE</STRONG></TD> + <TD ALIGN=center>762</TD></TR> +<TR><TD ALIGN=left><STRONG>PARTITION_IDENT</STRONG></TD> + <TD ALIGN=center>2828</TD></TR> +<TR><TD ALIGN=left><STRONG>PARTITION_DELETE</STRONG></TD> + <TD ALIGN=center>426</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>PARTITION_GET_BUFFER</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>394</TD></TR> + <TR><TD ALIGN=left><dd>not available</TD> + <TD ALIGN=center>376</TD></TR> + <TR><TD ALIGN=left><STRONG>PARTITION_RETURN_BUFFER</STRONG></TD> + <TD ALIGN=center>376</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Region Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{REGION\_CREATE}{614} +\rtemsonecase{REGION\_IDENT}{2878} +\rtemsonecase{REGION\_DELETE}{425} +\rtemsdirective{REGION\_GET\_SEGMENT} +\rtemscase{available}{515} +\rtemscase{not available -- NO\_WAIT} + {472} +\rtemscase{not available -- caller blocks} + {1345} +\rtemsdirective{REGION\_RETURN\_SEGMENT} +\rtemscase{no waiting tasks}{544} +\rtemscase{task readied -- returns to caller} + {935} +\rtemscase{task readied -- preempts caller} + {1296} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item REGION_CREATE +@itemize - +@item only case: 614 +@end itemize + +@item REGION_IDENT +@itemize - +@item only case: 2878 +@end itemize + +@item REGION_DELETE +@itemize - +@item only case: 425 +@end itemize + +@item REGION_GET_SEGMENT +@itemize - +@item available: 515 +@item not available -- NO_WAIT: 472 +@item not available -- caller blocks: 1345 +@end itemize + +@item REGION_RETURN_SEGMENT +@itemize - +@item no waiting tasks: 544 +@item task readied -- returns to caller: 935 +@item task readied -- preempts caller: 1296 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>REGION_CREATE</STRONG></TD> + <TD ALIGN=center>614</TD></TR> +<TR><TD ALIGN=left><STRONG>REGION_IDENT</STRONG></TD> + <TD ALIGN=center>2878</TD></TR> +<TR><TD ALIGN=left><STRONG>REGION_DELETE</STRONG></TD> + <TD ALIGN=center>425</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>REGION_GET_SEGMENT</TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>515</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center> + 472</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center> + 1345</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>REGION_RETURN_SEGMENT</TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>544</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center> + 935</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center> + 1296</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Dual-Ported Memory Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{PORT\_CREATE}{428} +\rtemsonecase{PORT\_IDENT}{2828} +\rtemsonecase{PORT\_DELETE}{421} +\rtemsonecase{PORT\_INTERNAL\_TO\_EXTERNAL} + {339} +\rtemsonecase{PORT\_EXTERNAL\_TO\_INTERNAL} + {339} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item PORT_CREATE +@itemize - +@item only case: 428 +@end itemize + +@item PORT_IDENT +@itemize - +@item only case: 2828 +@end itemize + +@item PORT_DELETE +@itemize - +@item only case: 421 +@end itemize + +@item PORT_INTERNAL_TO_EXTERNAL +@itemize - +@item only case: 339 +@end itemize + +@item PORT_EXTERNAL_TO_INTERNAL +@itemize - +@item only case: 339 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>PORT_CREATE</STRONG></TD> + <TD ALIGN=center>428</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_IDENT</STRONG></TD> + <TD ALIGN=center>2828</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_DELETE</STRONG></TD> + <TD ALIGN=center>421</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_INTERNAL_TO_EXTERNAL</STRONG></TD> + <TD ALIGN=center>339</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_EXTERNAL_TO_INTERNAL</STRONG></TD> + <TD ALIGN=center>339</TD></TR> + + </TABLE> +</CENTER> +@end html +@end ifset + +@section I/O Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{IO\_INITIALIZE}{52} +\rtemsonecase{IO\_OPEN}{42} +\rtemsonecase{IO\_CLOSE}{44} +\rtemsonecase{IO\_READ}{42} +\rtemsonecase{IO\_WRITE}{44} +\rtemsonecase{IO\_CONTROL}{42} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item IO_INITIALIZE +@itemize - +@item only case: 52 +@end itemize + +@item IO_OPEN +@itemize - +@item only case: 42 +@end itemize + +@item IO_CLOSE +@itemize - +@item only case: 44 +@end itemize + +@item IO_READ +@itemize - +@item only case: 42 +@end itemize + +@item IO_WRITE +@itemize - +@item only case: 44 +@end itemize + +@item IO_CONTROL +@itemize - +@item only case: 42 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>IO_INITIALIZE</STRONG></TD> + <TD ALIGN=center>52</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_OPEN</STRONG></TD> + <TD ALIGN=center>42</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_CLOSE</STRONG></TD> + <TD ALIGN=center>44</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_READ</STRONG></TD> + <TD ALIGN=center>42</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_WRITE</STRONG></TD> + <TD ALIGN=center>44</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_CONTROL</STRONG></TD> + <TD ALIGN=center>42</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Rate Monotonic Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{RATE\_MONOTONIC\_CREATE}{388} +\rtemsonecase{RATE\_MONOTONIC\_IDENT}{2826} +\rtemsonecase{RATE\_MONOTONIC\_CANCEL}{427} +\rtemsdirective{RATE\_MONOTONIC\_DELETE} +\rtemscase{active}{519} +\rtemscase{inactive}{465} +\rtemsdirective{RATE\_MONOTONIC\_PERIOD} +\rtemscase{initiate period -- returns to caller} + {556} +\rtemscase{conclude period -- caller blocks} + {842} +\rtemscase{obtain status}{377} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item RATE_MONOTONIC_CREATE +@itemize - +@item only case: 388 +@end itemize + +@item RATE_MONOTONIC_IDENT +@itemize - +@item only case: 2826 +@end itemize + +@item RATE_MONOTONIC_CANCEL +@itemize - +@item only case: 427 +@end itemize + +@item RATE_MONOTONIC_DELETE +@itemize - +@item active: 519 +@item inactive: 465 +@end itemize + +@item RATE_MONOTONIC_PERIOD +@itemize - +@item initiate period -- returns to caller: 556 +@item conclude period -- caller blocks: 842 +@item obtain status: 377 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_CREATE</STRONG></TD> + <TD ALIGN=center>388</TD></TR> +<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_IDENT</STRONG></TD> + <TD ALIGN=center>2826</TD></TR> +<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_CANCEL</STRONG></TD> + <TD ALIGN=center>427</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>RATE_MONOTONIC_DELETE</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>519</TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>465</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>RATE_MONOTONIC_PERIOD</TD></TR> + <TR><TD ALIGN=left><dd>initiate period -- returns to caller</TD> + <TD ALIGN=center> + 556</TD></TR> + <TR><TD ALIGN=left><dd>conclude period -- caller blocks</TD> + <TD ALIGN=center> + 842</TD></TR> + <TR><TD ALIGN=left><dd>obtain status</TD> + <TD ALIGN=center>377</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@tex +\global\advance \smallskipamount by 4pt +@end tex + +@tex +\global\advance \smallskipamount by 4pt +@end tex diff --git a/doc/supplements/powerpc/timePSIM_.t b/doc/supplements/powerpc/timePSIM_.t new file mode 100644 index 0000000000..76239b0c39 --- /dev/null +++ b/doc/supplements/powerpc/timePSIM_.t @@ -0,0 +1,1431 @@ +@c +@c Timing information for PSIM +@c +@c COPYRIGHT (c) 1988-1999. +@c On-Line Applications Research Corporation (OAR). +@c All rights reserved. +@c +@c $Id$ +@c + +@include ../../common/timemac.texi +@tex +\global\advance \smallskipamount by -4pt +@end tex + +@chapter PSIM Timing Data + +@section Introduction + +The timing data for RTEMS on the PSIM target +is provided along with the target +dependent aspects concerning the gathering of the timing data. +The hardware platform used to gather the times is described to +give the reader a better understanding of each directive time +provided. Also, provided is a description of the interrupt +latency and the context switch times as they pertain to the +PowerPC version of RTEMS. + +@section Hardware Platform + +All times reported in this chapter were measured using the PowerPC +Instruction Simulator (PSIM). PSIM simulates a variety of PowerPC +6xx models with the PPC603e being used as the basis for the measurements +reported in this chapter. + +The PowerPC decrementer register was was used to gather +all timing information. In real hardware implementations +of the PowerPC architecture, this register would typically +count something like CPU cycles or be a function of the clock +speed. However, with PSIM each count of the decrementer register +represents an instruction. Thus all measurements in this +chapter are reported as the actual number of instructions +executed. All sources of hardware interrupts were disabled, +although traps were enabled and the interrupt level of the +PowerPC allows all interrupts. + +@section Interrupt Latency + +The maximum period with traps disabled or the +processor interrupt level set to it's highest value inside RTEMS +is less than TBD +microseconds including the instructions which +disable and re-enable interrupts. The time required for the +PowerPC to vector an interrupt and for the RTEMS entry overhead +before invoking the user's trap handler are a total of +61 +microseconds. These combine to yield a worst case interrupt +latency of less than TBD + +61 microseconds at +na Mhz. +[NOTE: The maximum period with interrupts disabled was last +determined for Release 4.0.0-lmco.] + +The maximum period with interrupts disabled within +RTEMS is hand-timed with some assistance from PSIM. The maximum +period with interrupts disabled with RTEMS occurs was not measured +on this target. + +The interrupt vector and entry overhead time was +generated on the PSIM benchmark platform using the PowerPC's +decrementer register. This register was programmed to generate +an interrupt after one countdown. + +@section Context Switch + +The RTEMS processor context switch time is 214 +instructions on the PSIM benchmark platform when no floating +point context is saved or restored. Additional execution time +is required when a TASK_SWITCH user extension is configured. +The use of the TASK_SWITCH extension is application dependent. +Thus, its execution time is not considered part of the raw +context switch time. + +Since RTEMS was designed specifically for embedded +missile applications which are floating point intensive, the +executive is optimized to avoid unnecessarily saving and +restoring the state of the numeric coprocessor. The state of +the numeric coprocessor is only saved when an FLOATING_POINT +task is dispatched and that task was not the last task to +utilize the coprocessor. In a system with only one +FLOATING_POINT task, the state of the numeric coprocessor will +never be saved or restored. When the first FLOATING_POINT task +is dispatched, RTEMS does not need to save the current state of +the numeric coprocessor. + +The following table summarizes the context switch +times for the PSIM benchmark platform: +@c ****** This comment is here to remind you not to edit the timetbl.t +@c ****** in any directory but common. +@c +@c Time Table Template +@c +@c COPYRIGHT (c) 1988-1999. +@c On-Line Applications Research Corporation (OAR). +@c All rights reserved. +@c +@c $Id$ +@c + +@ifset use-tex +@sp 1 +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{No Floating Point Contexts}{214} +\rtemsdirective{Floating Point Contexts} +\rtemscase{restore first FP task}{255} +\rtemscase{save initialized, restore initialized}{140} +\rtemscase{save idle, restore initialized}{140} +\rtemscase{save idle, restore idle}{290} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet +@item No Floating Point Contexts +@itemize - +@item only case: 214 +@end itemize +@item Floating Point Contexts +@itemize - +@item restore first FP task: 255 +@item save initialized, restore initialized: 140 +@item save idle, restore initialized: 140 +@item save idle, restore idle: 140 +@end itemize +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>No Floating Point Contexts</STRONG></TD> + <TD ALIGN=center>214</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>Floating Point Contexts</TR> + <TR><TD ALIGN=left><dd>restore first FP task</TD> + <TD ALIGN=center>255</TD> + <TR><TD ALIGN=left><dd>save initialized, restore initialized</TD> + <TD ALIGN=center>140</TD> + <TR><TD ALIGN=left><dd>save idle, restore initialized</TD> + <TD ALIGN=center>140</TD> + <TR><TD ALIGN=left><dd>save idle, restore idle</TD> + <TD ALIGN=center>290</TD> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Directive Times + +This sections is divided into a number of +subsections, each of which contains a table listing the +execution times of that manager's directives. + +@page +@section Task Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{TASK\_CREATE}{1075} +\rtemsonecase{TASK\_IDENT}{1637} +\rtemsonecase{TASK\_START}{345} +\rtemsdirective{TASK\_RESTART} +\rtemscase{calling task}{483} +\rtemscase{suspended task -- returns to caller} + {396} +\rtemscase{blocked task -- returns to caller} + {491} +\rtemscase{ready task -- returns to caller} + {404} +\rtemscase{suspended task -- preempts caller} + {644} +\rtemscase{blocked task -- preempts caller} + {709} +\rtemscase{ready task -- preempts caller} + {686} +\rtemsdirective{TASK\_DELETE} +\rtemscase{calling task}{941} +\rtemscase{suspended task}{703} +\rtemscase{blocked task}{723} +\rtemscase{ready task}{729} +\rtemsdirective{TASK\_SUSPEND} +\rtemscase{calling task}{403} +\rtemscase{returns to caller}{181} +\rtemsdirective{TASK\_RESUME} +\rtemscase{task readied -- returns to caller} + {191} +\rtemscase{task readied -- preempts caller} + {803} +\rtemsdirective{TASK\_SET\_PRIORITY} +\rtemscase{obtain current priority} + {147} +\rtemscase{returns to caller}{264} +\rtemscase{preempts caller}{517} +\rtemsdirective{TASK\_MODE} +\rtemscase{obtain current mode}{88} +\rtemscase{no reschedule}{110} +\rtemscase{reschedule -- returns to caller} + {112} +\rtemscase{reschedule -- preempts caller} + {386} +\rtemsonecase{TASK\_GET\_NOTE}{156} +\rtemsonecase{TASK\_SET\_NOTE}{155} +\rtemsdirective{TASK\_WAKE\_AFTER} +\rtemscase{yield -- returns to caller} + {92} +\rtemscase{yield -- preempts caller} + {348} +\rtemsonecase{TASK\_WAKE\_WHEN}{546} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item TASK_CREATE +@itemize - +@item only case: 1075 +@end itemize + +@item TASK_IDENT +@itemize - +@item only case: 1637 +@end itemize + +@item TASK_START +@itemize - +@item only case: 345 +@end itemize + +@item TASK_RESTART +@itemize - +@item calling task: 483 +@item suspended task -- returns to caller: 396 +@item blocked task -- returns to caller: 491 +@item ready task -- returns to caller: 404 +@item suspended task -- preempts caller: 644 +@item blocked task -- preempts caller: 709 +@item ready task -- preempts caller: 686 +@end itemize + +@item TASK_DELETE +@itemize - +@item calling task: 941 +@item suspended task: 703 +@item blocked task: 723 +@item ready task: 729 +@end itemize + +@item TASK_SUSPEND +@itemize - +@item calling task: 403 +@item returns to caller: 181 +@end itemize + +@item TASK_RESUME +@itemize - +@item task readied -- returns to caller: 191 +@item task readied -- preempts caller: 803 +@end itemize + +@item TASK_SET_PRIORITY +@itemize - +@item obtain current priority: 147 +@item returns to caller: 264 +@item preempts caller: 517 +@end itemize + +@item TASK_MODE +@itemize - +@item obtain current mode: 88 +@item no reschedule: 110 +@item reschedule -- returns to caller: 112 +@item reschedule -- preempts caller: 386 +@end itemize + +@item TASK_GET_NOTE +@itemize - +@item only case: 156 +@end itemize + +@item TASK_SET_NOTE +@itemize - +@item only case: 155 +@end itemize + +@item TASK_WAKE_AFTER +@itemize - +@item yield -- returns to caller: 92 +@item yield -- preempts caller: 348 +@end itemize + +@item TASK_WAKE_WHEN +@itemize - +@item only case: 546 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>TASK_CREATE</STRONG></TD> + <TD ALIGN=center>1075</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_IDENT</STRONG></TD> + <TD ALIGN=center>1637</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_START</STRONG></TD> + <TD ALIGN=center>345</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_RESTART</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>calling task</TD> + <TD ALIGN=center>483</TD></TR> + <TR><TD ALIGN=left><dd>suspended task -- returns to caller</TD> + <TD ALIGN=center>396</TD></TR> + <TR><TD ALIGN=left><dd>blocked task -- returns to caller</TD> + <TD ALIGN=center>491</TD></TR> + <TR><TD ALIGN=left><dd>ready task -- returns to caller</TD> + <TD ALIGN=center>404</TD></TR> + <TR><TD ALIGN=left><dd>suspended task -- preempts caller</TD> + <TD ALIGN=center>644</TD></TR> + <TR><TD ALIGN=left><dd>blocked task -- preempts caller</TD> + <TD ALIGN=center>709</TD></TR> + <TR><TD ALIGN=left><dd>ready task -- preempts caller</TD> + <TD ALIGN=center>686</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_DELETE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>calling task</TD> + <TD ALIGN=center>941</TD></TR> + <TR><TD ALIGN=left><dd>suspended task</TD> + <TD ALIGN=center>703</TD></TR> + <TR><TD ALIGN=left><dd>blocked task</TD> + <TD ALIGN=center>723</TD></TR> + <TR><TD ALIGN=left><dd>ready task</TD> + <TD ALIGN=center>729</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_SUSPEND</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>calling task</TD> + <TD ALIGN=center>403</TD></TR> + <TR><TD ALIGN=left><dd>returns to caller</TD> + <TD ALIGN=center>181</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_RESUME</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>191</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>803</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_SET_PRIORITY</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>obtain current priority</TD> + <TD ALIGN=center>147</TD></TR> + <TR><TD ALIGN=left><dd>returns to caller</TD> + <TD ALIGN=center>264</TD></TR> + <TR><TD ALIGN=left><dd>preempts caller</TD> + <TD ALIGN=center>517</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_MODE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>obtain current mode</TD> + <TD ALIGN=center>88</TD></TR> + <TR><TD ALIGN=left><dd>no reschedule</TD> + <TD ALIGN=center>110</TD></TR> + <TR><TD ALIGN=left><dd>reschedule -- returns to caller</TD> + <TD ALIGN=center>112</TD></TR> + <TR><TD ALIGN=left><dd>reschedule -- preempts caller</TD> + <TD ALIGN=center>386</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_GET_NOTE</STRONG></TD> + <TD ALIGN=center>156</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_SET_NOTE</STRONG></TD> + <TD ALIGN=center>155</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_WAKE_AFTER</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>yield -- returns to caller</TD> + <TD ALIGN=center>92</TD></TR> + <TR><TD ALIGN=left><dd>yield -- preempts caller</TD> + <TD ALIGN=center>348</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_WAKE_WHEN</STRONG></TD> + <TD ALIGN=center>546</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Interrupt Manager + +It should be noted that the interrupt entry times +include vectoring the interrupt handler. + +@ifset use-tex +@sp 1 +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsdirective{Interrupt Entry Overhead} +\rtemscase{returns to nested interrupt}{60} +\rtemscase{returns to interrupted task} + {62} +\rtemscase{returns to preempting task} + {61} +\rtemsdirective{Interrupt Exit Overhead} +\rtemscase{returns to nested interrupt}{55} +\rtemscase{returns to interrupted task} + {67} +\rtemscase{returns to preempting task} + {344} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item Interrupt Entry Overhead +@itemize - +@item returns to nested interrupt: 60 +@item returns to interrupted task: 62 +@item returns to preempting task: 61 +@end itemize + +@item Interrupt Exit Overhead +@itemize - +@item returns to nested interrupt: 55 +@item returns to interrupted task: 67 +@item returns to preempting task: 344 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left COLSPAN=2><STRONG>Interrupt Entry Overhead</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>returns to nested interrupt</TD> + <TD ALIGN=center>60</TD></TR> + <TR><TD ALIGN=left><dd>returns to interrupted task</TD> + <TD ALIGN=center>62</TD></TR> + <TR><TD ALIGN=left><dd>returns to preempting task</TD> + <TD ALIGN=center>61</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>Interrupt Exit Overhead</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>returns to nested interrupt</TD> + <TD ALIGN=center>55</TD></TR> + <TR><TD ALIGN=left><dd>returns to interrupted task</TD> + <TD ALIGN=center>67</TD></TR> + <TR><TD ALIGN=left><dd>returns to preempting task</TD> + <TD ALIGN=center>344</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + + +@section Clock Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{CLOCK\_SET}{340} +\rtemsonecase{CLOCK\_GET}{29} +\rtemsonecase{CLOCK\_TICK}{81} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item CLOCK_SET +@itemize - +@item only case: 340 +@end itemize + +@item CLOCK_GET +@itemize - +@item only case: 29 +@end itemize + +@item CLOCK_TICK +@itemize - +@item only case: 81 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>CLOCK_SET</STRONG></TD> + <TD ALIGN=center>340</TD></TR> +<TR><TD ALIGN=left><STRONG>CLOCK_GET</STRONG></TD> + <TD ALIGN=center>29</TD></TR> +<TR><TD ALIGN=left><STRONG>CLOCK_TICK</STRONG></TD> + <TD ALIGN=center>81</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Timer Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{TIMER\_CREATE}{144} +\rtemsonecase{TIMER\_IDENT}{1595} +\rtemsdirective{TIMER\_DELETE} +\rtemscase{inactive}{197} +\rtemscase{active}{181} +\rtemsdirective{TIMER\_FIRE\_AFTER} +\rtemscase{inactive}{252} +\rtemscase{active}{269} +\rtemsdirective{TIMER\_FIRE\_WHEN} +\rtemscase{inactive}{333} +\rtemscase{active}{334} +\rtemsdirective{TIMER\_RESET} +\rtemscase{inactive}{233} +\rtemscase{active}{250} +\rtemsdirective{TIMER\_CANCEL} +\rtemscase{inactive}{156} +\rtemscase{active}{140} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item TIMER_CREATE +@itemize - +@item only case: 144 +@end itemize + +@item TIMER_IDENT +@itemize - +@item only case: 1595 +@end itemize + +@item TIMER_DELETE +@itemize - +@item inactive: 197 +@item active: 181 +@end itemize + +@item TIMER_FIRE_AFTER +@itemize - +@item inactive: 252 +@item active: 269 +@end itemize + +@item TIMER_FIRE_WHEN +@itemize - +@item inactive: TIMER_FIRE_WHEN_INACTIVE +@item active: TIMER_FIRE_WHEN_ACTIVE +@end itemize + +@item TIMER_RESET +@itemize - +@item inactive: TIMER_RESET_INACTIVE +@item active: TIMER_RESET_ACTIVE +@end itemize + +@item TIMER_CANCEL +@itemize - +@item inactive: TIMER_CANCEL_INACTIVE +@item active: TIMER_CANCEL_ACTIVE +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>TIMER_CREATE</STRONG></TD> + <TD ALIGN=center>144</TD></TR> +<TR><TD ALIGN=left><STRONG>TIMER_IDENT</STRONG></TD> + <TD ALIGN=center>1595</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_DELETE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>197</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>181</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_FIRE_AFTER</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>252</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>269</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_FIRE_WHEN</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>333</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>334</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_RESET</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>233</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>250</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_CANCEL</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>156</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>140</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Semaphore Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{SEMAPHORE\_CREATE}{223} +\rtemsonecase{SEMAPHORE\_IDENT}{1836} +\rtemsonecase{SEMAPHORE\_DELETE}{1836} +\rtemsdirective{SEMAPHORE\_OBTAIN} +\rtemscase{available}{175} +\rtemscase{not available -- NO\_WAIT} + {175} +\rtemscase{not available -- caller blocks} + {530} +\rtemsdirective{SEMAPHORE\_RELEASE} +\rtemscase{no waiting tasks}{206} +\rtemscase{task readied -- returns to caller} + {272} +\rtemscase{task readied -- preempts caller} + {415} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item SEMAPHORE_CREATE +@itemize - +@item only case: 223 +@end itemize + +@item SEMAPHORE_IDENT +@itemize - +@item only case: 1836 +@end itemize + +@item SEMAPHORE_DELETE +@itemize - +@item only case: 1836 +@end itemize + +@item SEMAPHORE_OBTAIN +@itemize - +@item available: 175 +@item not available -- NO_WAIT: 175 +@item not available -- caller blocks: 530 +@end itemize + +@item SEMAPHORE_RELEASE +@itemize - +@item no waiting tasks: 206 +@item task readied -- returns to caller: 272 +@item task readied -- preempts caller: 415 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>SEMAPHORE_CREATE</STRONG></TD> + <TD ALIGN=center>223</TD></TR> +<TR><TD ALIGN=left><STRONG>SEMAPHORE_IDENT</STRONG></TD> + <TD ALIGN=center>1836</TD></TR> +<TR><TD ALIGN=left><STRONG>SEMAPHORE_DELETE</STRONG></TD> + <TD ALIGN=center>1836</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>SEMAPHORE_OBTAIN</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>175</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center>175</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center>530</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>SEMAPHORE_RELEASE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>206</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>272</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>415</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Message Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{MESSAGE\_QUEUE\_CREATE}{1022} +\rtemsonecase{MESSAGE\_QUEUE\_IDENT}{1596} +\rtemsonecase{MESSAGE\_QUEUE\_DELETE}{308} +\rtemsdirective{MESSAGE\_QUEUE\_SEND} +\rtemscase{no waiting tasks} + {421} +\rtemscase{task readied -- returns to caller} + {434} +\rtemscase{task readied -- preempts caller} + {581} +\rtemsdirective{MESSAGE\_QUEUE\_URGENT} +\rtemscase{no waiting tasks}{422} +\rtemscase{task readied -- returns to caller} + {435} +\rtemscase{task readied -- preempts caller} + {582} +\rtemsdirective{MESSAGE\_QUEUE\_BROADCAST} +\rtemscase{no waiting tasks}{244} +\rtemscase{task readied -- returns to caller} + {482} +\rtemscase{task readied -- preempts caller} + {630} +\rtemsdirective{MESSAGE\_QUEUE\_RECEIVE} +\rtemscase{available}{345} +\rtemscase{not available -- NO\_WAIT} + {197} +\rtemscase{not available -- caller blocks} + {542} +\rtemsdirective{MESSAGE\_QUEUE\_FLUSH} +\rtemscase{no messages flushed}{142} +\rtemscase{messages flushed}{170} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item MESSAGE_QUEUE_CREATE +@itemize - +@item only case: 1022 +@end itemize + +@item MESSAGE_QUEUE_IDENT +@itemize - +@item only case: 1596 +@end itemize + +@item MESSAGE_QUEUE_DELETE +@itemize - +@item only case: 308 +@end itemize + +@item MESSAGE_QUEUE_SEND +@itemize - +@item no waiting tasks: 421 +@item task readied -- returns to caller: 434 +@item task readied -- preempts caller: 581 +@end itemize + +@item MESSAGE_QUEUE_URGENT +@itemize - +@item no waiting tasks: 422 +@item task readied -- returns to caller: 435 +@item task readied -- preempts caller: 582 +@end itemize + +@item MESSAGE_QUEUE_BROADCAST +@itemize - +@item no waiting tasks: 244 +@item task readied -- returns to caller: 482 +@item task readied -- preempts caller: 630 +@end itemize + +@item MESSAGE_QUEUE_RECEIVE +@itemize - +@item available: 345 +@item not available -- NO_WAIT: 197 +@item not available -- caller blocks: 542 +@end itemize + +@item MESSAGE_QUEUE_FLUSH +@itemize - +@item no messages flushed: 142 +@item messages flushed: 170 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_CREATE</STRONG></TD> + <TD ALIGN=center>1022</TD></TR> +<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_IDENT</STRONG></TD> + <TD ALIGN=center>1596</TD></TR> +<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_DELETE</STRONG></TD> + <TD ALIGN=center>308</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_SEND</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>421</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>434</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>581</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_URGENT</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>422</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>435</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>582</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_BROADCAST</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>244</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>482</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>630</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_RECEIVE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>345</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center>197</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center>542</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_FLUSH</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no messages flushed</TD> + <TD ALIGN=center>142</TD></TR> + <TR><TD ALIGN=left><dd>messages flushed</TD> + <TD ALIGN=center>170</TD></TR> + + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Event Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsdirective{EVENT\_SEND} +\rtemscase{no task readied}{145} +\rtemscase{task readied -- returns to caller} + {250} +\rtemscase{task readied -- preempts caller} + {407} +\rtemsdirective{EVENT\_RECEIVE} +\rtemscase{obtain current events}{17} +\rtemscase{available}{133} +\rtemscase{not available -- NO\_WAIT}{130} +\rtemscase{not available -- caller blocks} + {442} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item EVENT_SEND +@itemize - +@item no task readied: 145 +@item task readied -- returns to caller: 250 +@item task readied -- preempts caller: 407 +@end itemize + +@item EVENT_RECEIVE +@itemize - +@item obtain current events: 17 +@item available: 133 +@item not available -- NO_WAIT: 130 +@item not available -- caller blocks: 442 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left COLSPAN=2><STRONG>EVENT_SEND</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no task readied</TD> + <TD ALIGN=center>145</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>250</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>407</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>EVENT_RECEIVE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>obtain current events</TD> + <TD ALIGN=center>17</TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>133</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center>130</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center>442</TD></TR> + + </TABLE> +</CENTER> +@end html +@end ifset +@section Signal Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{SIGNAL\_CATCH}{95} +\rtemsdirective{SIGNAL\_SEND} +\rtemscase{returns to caller}{165} +\rtemscase{signal to self}{275} +\rtemsdirective{EXIT ASR OVERHEAD} +\rtemscase{returns to calling task} + {216} +\rtemscase{returns to preempting task} + {329} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet +@item SIGNAL_CATCH +@itemize - +@item only case: 95 +@end itemize + +@item SIGNAL_SEND +@itemize - +@item returns to caller: 165 +@item signal to self: 275 +@end itemize + +@item EXIT ASR OVERHEAD +@itemize - +@item returns to calling task: 216 +@item returns to preempting task: 329 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>SIGNAL_CATCH</STRONG></TD> + <TD ALIGN=center>95</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>SIGNAL_SEND</TD></TR> + <TR><TD ALIGN=left><dd>returns to caller</TD> + <TD ALIGN=center>165</TD></TR> + <TR><TD ALIGN=left><dd>signal to self</TD> + <TD ALIGN=center>275</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>EXIT ASR OVERHEAD</TD></TR> + <TR><TD ALIGN=left><dd>returns to calling task</TD> + <TD ALIGN=center> + 216</TD></TR> + <TR><TD ALIGN=left><dd>returns to preempting task</TD> + <TD ALIGN=center> + 329</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Partition Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{PARTITION\_CREATE}{320} +\rtemsonecase{PARTITION\_IDENT}{1596} +\rtemsonecase{PARTITION\_DELETE}{168} +\rtemsdirective{PARTITION\_GET\_BUFFER} +\rtemscase{available}{157} +\rtemscase{not available}{149} +\rtemsonecase{PARTITION\_RETURN\_BUFFER} + {149} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item PARTITION_CREATE +@itemize - +@item only case: 320 +@end itemize + +@item PARTITION_IDENT +@itemize - +@item only case: 1596 +@end itemize + +@item PARTITION_DELETE +@itemize - +@item only case: 168 +@end itemize + +@item PARTITION_GET_BUFFER +@itemize - +@item available: 157 +@item not available: 149 +@end itemize + +@item PARTITION_RETURN_BUFFER +@itemize - +@item only case: 172 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>PARTITION_CREATE</STRONG></TD> + <TD ALIGN=center>320</TD></TR> +<TR><TD ALIGN=left><STRONG>PARTITION_IDENT</STRONG></TD> + <TD ALIGN=center>1596</TD></TR> +<TR><TD ALIGN=left><STRONG>PARTITION_DELETE</STRONG></TD> + <TD ALIGN=center>168</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>PARTITION_GET_BUFFER</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>157</TD></TR> + <TR><TD ALIGN=left><dd>not available</TD> + <TD ALIGN=center>149</TD></TR> + <TR><TD ALIGN=left><STRONG>PARTITION_RETURN_BUFFER</STRONG></TD> + <TD ALIGN=center>149</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Region Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{REGION\_CREATE}{239} +\rtemsonecase{REGION\_IDENT}{1625} +\rtemsonecase{REGION\_DELETE}{167} +\rtemsdirective{REGION\_GET\_SEGMENT} +\rtemscase{available}{206} +\rtemscase{not available -- NO\_WAIT} + {190} +\rtemscase{not available -- caller blocks} + {556} +\rtemsdirective{REGION\_RETURN\_SEGMENT} +\rtemscase{no waiting tasks}{230} +\rtemscase{task readied -- returns to caller} + {412} +\rtemscase{task readied -- preempts caller} + {562} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item REGION_CREATE +@itemize - +@item only case: 239 +@end itemize + +@item REGION_IDENT +@itemize - +@item only case: 1625 +@end itemize + +@item REGION_DELETE +@itemize - +@item only case: 167 +@end itemize + +@item REGION_GET_SEGMENT +@itemize - +@item available: 206 +@item not available -- NO_WAIT: 190 +@item not available -- caller blocks: 556 +@end itemize + +@item REGION_RETURN_SEGMENT +@itemize - +@item no waiting tasks: 230 +@item task readied -- returns to caller: 412 +@item task readied -- preempts caller: 562 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>REGION_CREATE</STRONG></TD> + <TD ALIGN=center>239</TD></TR> +<TR><TD ALIGN=left><STRONG>REGION_IDENT</STRONG></TD> + <TD ALIGN=center>1625</TD></TR> +<TR><TD ALIGN=left><STRONG>REGION_DELETE</STRONG></TD> + <TD ALIGN=center>167</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>REGION_GET_SEGMENT</TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>206</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center> + 190</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center> + 556</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>REGION_RETURN_SEGMENT</TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>230</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center> + 412</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center> + 562</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Dual-Ported Memory Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{PORT\_CREATE}{167} +\rtemsonecase{PORT\_IDENT}{1594} +\rtemsonecase{PORT\_DELETE}{165} +\rtemsonecase{PORT\_INTERNAL\_TO\_EXTERNAL} + {133} +\rtemsonecase{PORT\_EXTERNAL\_TO\_INTERNAL} + {134} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item PORT_CREATE +@itemize - +@item only case: 167 +@end itemize + +@item PORT_IDENT +@itemize - +@item only case: 1594 +@end itemize + +@item PORT_DELETE +@itemize - +@item only case: 165 +@end itemize + +@item PORT_INTERNAL_TO_EXTERNAL +@itemize - +@item only case: 133 +@end itemize + +@item PORT_EXTERNAL_TO_INTERNAL +@itemize - +@item only case: 134 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>PORT_CREATE</STRONG></TD> + <TD ALIGN=center>167</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_IDENT</STRONG></TD> + <TD ALIGN=center>1594</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_DELETE</STRONG></TD> + <TD ALIGN=center>165</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_INTERNAL_TO_EXTERNAL</STRONG></TD> + <TD ALIGN=center>133</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_EXTERNAL_TO_INTERNAL</STRONG></TD> + <TD ALIGN=center>134</TD></TR> + + </TABLE> +</CENTER> +@end html +@end ifset + +@section I/O Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{IO\_INITIALIZE}{23} +\rtemsonecase{IO\_OPEN}{18} +\rtemsonecase{IO\_CLOSE}{18} +\rtemsonecase{IO\_READ}{18} +\rtemsonecase{IO\_WRITE}{18} +\rtemsonecase{IO\_CONTROL}{18} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item IO_INITIALIZE +@itemize - +@item only case: 23 +@end itemize + +@item IO_OPEN +@itemize - +@item only case: 18 +@end itemize + +@item IO_CLOSE +@itemize - +@item only case: 18 +@end itemize + +@item IO_READ +@itemize - +@item only case: 18 +@end itemize + +@item IO_WRITE +@itemize - +@item only case: 18 +@end itemize + +@item IO_CONTROL +@itemize - +@item only case: 18 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>IO_INITIALIZE</STRONG></TD> + <TD ALIGN=center>23</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_OPEN</STRONG></TD> + <TD ALIGN=center>18</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_CLOSE</STRONG></TD> + <TD ALIGN=center>18</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_READ</STRONG></TD> + <TD ALIGN=center>18</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_WRITE</STRONG></TD> + <TD ALIGN=center>18</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_CONTROL</STRONG></TD> + <TD ALIGN=center>18</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Rate Monotonic Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{RATE\_MONOTONIC\_CREATE}{149} +\rtemsonecase{RATE\_MONOTONIC\_IDENT}{1595} +\rtemsonecase{RATE\_MONOTONIC\_CANCEL}{169} +\rtemsdirective{RATE\_MONOTONIC\_DELETE} +\rtemscase{active}{212} +\rtemscase{inactive}{186} +\rtemsdirective{RATE\_MONOTONIC\_PERIOD} +\rtemscase{initiate period -- returns to caller} + {226} +\rtemscase{conclude period -- caller blocks} + {362} +\rtemscase{obtain status}{142} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item RATE_MONOTONIC_CREATE +@itemize - +@item only case: 149 +@end itemize + +@item RATE_MONOTONIC_IDENT +@itemize - +@item only case: 1595 +@end itemize + +@item RATE_MONOTONIC_CANCEL +@itemize - +@item only case: 169 +@end itemize + +@item RATE_MONOTONIC_DELETE +@itemize - +@item active: 212 +@item inactive: 186 +@end itemize + +@item RATE_MONOTONIC_PERIOD +@itemize - +@item initiate period -- returns to caller: 226 +@item conclude period -- caller blocks: 362 +@item obtain status: 142 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_CREATE</STRONG></TD> + <TD ALIGN=center>149</TD></TR> +<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_IDENT</STRONG></TD> + <TD ALIGN=center>1595</TD></TR> +<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_CANCEL</STRONG></TD> + <TD ALIGN=center>169</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>RATE_MONOTONIC_DELETE</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>212</TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>186</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>RATE_MONOTONIC_PERIOD</TD></TR> + <TR><TD ALIGN=left><dd>initiate period -- returns to caller</TD> + <TD ALIGN=center> + 226</TD></TR> + <TR><TD ALIGN=left><dd>conclude period -- caller blocks</TD> + <TD ALIGN=center> + 362</TD></TR> + <TR><TD ALIGN=left><dd>obtain status</TD> + <TD ALIGN=center>142</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@tex +\global\advance \smallskipamount by 4pt +@end tex + +@tex +\global\advance \smallskipamount by 4pt +@end tex diff --git a/doc/supplements/sh/Makefile b/doc/supplements/sh/Makefile deleted file mode 100644 index 387cbf8071..0000000000 --- a/doc/supplements/sh/Makefile +++ /dev/null @@ -1,161 +0,0 @@ -# -# COPYRIGHT (c) 1988-1999. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. -# -# $Id$ -# - -PROJECT=sh - -include ../../Make.config - -REPLACE=../../tools/word-replace - -all: html info ps pdf - -dirs: - $(make-dirs) - -COMMON_FILES=../../common/cpright.texi ../../common/setup.texi - -GENERATED_FILES=\ - cpumodel.texi callconv.texi memmodel.texi intr.texi fatalerr.texi \ - bsp.texi cputable.texi wksheets.texi timing.texi timeBSP.texi - -FILES= $(PROJECT).texi preface.texi \ - $(COMMON_FILES) $(GENERATED_FILES) - -info: dirs c_$(PROJECT) - @echo NEED TO INSTALL THE INFO FILES - #cp c_$(PROJECT) c_$(PROJECT)-* $(INFO_INSTALL) - #cp c_$(PROJECT) c_$(PROJECT)-* $(INFO_INSTALL) - -c_$(PROJECT): $(FILES) - $(MAKEINFO) $(PROJECT).texi - -dvi: dirs $(PROJECT).dvi -ps: dirs $(PROJECT).ps -pdf: dirs $(PROJECT).pdf - -$(PROJECT).pdf: $(FILES) - $(TEXI2PDF) $(PROJECT).texi - cp $(PROJECT).pdf $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).ps: $(PROJECT).dvi - dvips -o $(PROJECT).ps $(PROJECT).dvi - cp $(PROJECT).ps $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).dvi: $(FILES) - $(TEXI2DVI) $(PROJECT).texi - cp $(PROJECT).dvi $(WWW_INSTALL)/$(PROJECT) - -html: dirs $(FILES) - -mkdir -p $(WWW_INSTALL)/$(PROJECT) - $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \ - $(PROJECT).texi - -clean: - rm -f *.o $(PROG) *.txt core $(PROJECT).pdf - rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f $(PROJECT) $(PROJECT)-* - rm -f c_$(PROJECT) c_$(PROJECT)-* - rm -f wksheets.t wksheets_NOTIMES.t - rm -f intr.t - rm -f timeBSP_.t timing.t - rm -f *.fixed _* $(GENERATED_FILES) - rm -f timeBSP_.t timeBSP_.texi - -# -# Chapters which get automatic processing -# -cpumodel.texi: cpumodel.t Makefile - $(BMENU) -p "Preface" \ - -u "Top" \ - -n "Calling Conventions" ${*}.t - -callconv.texi: callconv.t Makefile - $(BMENU) -p "CPU Model Dependent Features Another Optional Feature" \ - -u "Top" \ - -n "Memory Model" ${*}.t - -memmodel.texi: memmodel.t Makefile - $(BMENU) -p "Calling Conventions User-Provided Routines" \ - -u "Top" \ - -n "Interrupt Processing" ${*}.t - -# Interrupt Chapter: -# 1. Replace Times and Sizes -# 2. Build Node Structure -intr.t: intr_NOTIMES.t BSP_TIMES - ${REPLACE} -p BSP_TIMES intr_NOTIMES.t - mv intr_NOTIMES.t.fixed intr.t - -intr.texi: intr.t Makefile - $(BMENU) -p "Memory Model Flat Memory Model" \ - -u "Top" \ - -n "Default Fatal Error Processing" ${*}.t - -fatalerr.texi: fatalerr.t Makefile - $(BMENU) -p "Interrupt Processing Interrupt Stack" \ - -u "Top" \ - -n "Board Support Packages" ${*}.t - -bsp.texi: bsp.t Makefile - $(BMENU) -p "Default Fatal Error Processing Default Fatal Error Handler Operations" \ - -u "Top" \ - -n "Processor Dependent Information Table" ${*}.t - -cputable.texi: cputable.t Makefile - $(BMENU) -p "Board Support Packages Processor Initialization" \ - -u "Top" \ - -n "Memory Requirements" ${*}.t - -# Worksheets Chapter: -# 1. Copy the Shared File -# 2. Replace Times and Sizes -# 3. Build Node Structure - -wksheets_NOTIMES.t: ../../common/wksheets.t - cp ../../common/wksheets.t wksheets_NOTIMES.t - -wksheets.t: wksheets_NOTIMES.t BSP_TIMES - ${REPLACE} -p BSP_TIMES wksheets_NOTIMES.t - mv wksheets_NOTIMES.t.fixed wksheets.t - -wksheets.texi: wksheets.t Makefile - $(BMENU) -p "Processor Dependent Information Table CPU Dependent Information Table" \ - -u "Top" \ - -n "Timing Specification" ${*}.t - -# Timing Specification Chapter: -# 1. Copy the Shared File -# 3. Build Node Structure - -timing.t: ../../common/timing.t - cp ../../common/timing.t timing.t - -timing.texi: timing.t Makefile - $(BMENU) -p "Memory Requirements RTEMS RAM Workspace Worksheet" \ - -u "Top" \ - -n "BSP_FOR_TIMES Timing Data" ${*}.t - -# Timing Data for BSP Chapter: -# 1. Copy the Shared File -# 2. Replace Times and Sizes -# 3. Build Node Structure - -timeBSP_.t: ../../common/timetbl.t timeBSP.t Makefile - cat timeBSP.t ../../common/timetbl.t >timeBSP_.t - @echo >>timeBSP_.t - @echo "@tex" >>timeBSP_.t - @echo "\\global\\advance \\smallskipamount by 4pt" >>timeBSP_.t - @echo "@end tex" >>timeBSP_.t - ${REPLACE} -p BSP_TIMES timeBSP_.t - mv timeBSP_.t.fixed timeBSP_.t - -timeBSP.texi: timeBSP_.t Makefile - $(BMENU) -p "Timing Specification Terminology" \ - -u "Top" \ - -n "Command and Variable Index" timeBSP_.t - mv timeBSP_.texi timeBSP.texi diff --git a/doc/supplements/sh/Makefile.am b/doc/supplements/sh/Makefile.am new file mode 100644 index 0000000000..f4c2226fb0 --- /dev/null +++ b/doc/supplements/sh/Makefile.am @@ -0,0 +1,114 @@ +# +# COPYRIGHT (c) 1988-1999. +# On-Line Applications Research Corporation (OAR). +# All rights reserved. +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign + +PROJECT=sh + +include $(top_srcdir)/project.am +include $(top_srcdir)/supplements/supplement.am + +COMMON_FILES= $(top_srcdir)/common/cpright.texi $(top_builddir)/common/setup.texi + +GENERATED_FILES=\ + cpumodel.texi callconv.texi memmodel.texi intr.texi fatalerr.texi \ + bsp.texi cputable.texi wksheets.texi timing.texi timeBSP.texi + +FILES= preface.texi + +info_TEXINFOS = sh.texi +sh_TEXINFOS = $(FILES) $(COMMON_FILES) $(GENERATED_FILES) + +# +# Chapters which get automatic processing +# +cpumodel.texi: cpumodel.t + $(BMENU) -p "Preface" \ + -u "Top" \ + -n "Calling Conventions" $< + +callconv.texi: callconv.t + $(BMENU) -p "CPU Model Dependent Features Another Optional Feature" \ + -u "Top" \ + -n "Memory Model" $< + +memmodel.texi: memmodel.t + $(BMENU) -p "Calling Conventions User-Provided Routines" \ + -u "Top" \ + -n "Interrupt Processing" $< + +# Interrupt Chapter: +# 1. Replace Times and Sizes +# 2. Build Node Structure +intr.texi: intr_NOTIMES.t BSP_TIMES + ${REPLACE2} -p $(srcdir)/BSP_TIMES $(srcdir)/intr_NOTIMES.t intr.t + $(BMENU) -p "Memory Model Flat Memory Model" \ + -u "Top" \ + -n "Default Fatal Error Processing" intr.t +CLEANFILES += intr.t + +fatalerr.texi: fatalerr.t + $(BMENU) -p "Interrupt Processing Interrupt Stack" \ + -u "Top" \ + -n "Board Support Packages" $< + +bsp.texi: bsp.t + $(BMENU) -p "Default Fatal Error Processing Default Fatal Error Handler Operations" \ + -u "Top" \ + -n "Processor Dependent Information Table" $< + +cputable.texi: cputable.t + $(BMENU) -p "Board Support Packages Processor Initialization" \ + -u "Top" \ + -n "Memory Requirements" $< + +# Worksheets Chapter: +# 1. Copy the Shared File +# 2. Replace Times and Sizes +# 3. Build Node Structure + +wksheets.texi: $(top_srcdir)/common/wksheets.t BSP_TIMES + ${REPLACE2} -p $(srcdir)/BSP_TIMES \ + $(top_srcdir)/common/wksheets.t wksheets.t + $(BMENU) -p "Processor Dependent Information Table CPU Dependent Information Table" \ + -u "Top" \ + -n "Timing Specification" wksheets.t +CLEANFILES += wksheets.t + +# Timing Specification Chapter: +# 1. Copy the Shared File +# 3. Build Node Structure + +timing.texi: $(top_srcdir)/common/timing.t + cp $(top_srcdir)/common/timing.t timing.t + $(BMENU) -p "Memory Requirements RTEMS RAM Workspace Worksheet" \ + -u "Top" \ + -n "BSP_FOR_TIMES Timing Data" timing.t +CLEANFILES += timing.t + +# Timing Data for BSP Chapter: +# 1. Copy the Shared File +# 2. Replace Times and Sizes +# 3. Build Node Structure + +timeBSP_.t: $(top_srcdir)/common/timetbl.t timeBSP.t + cat timeBSP.t $(top_srcdir)/common/timetbl.t >timeBSP_.t + @echo >>timeBSP_.t + @echo "@tex" >>timeBSP_.t + @echo "\\global\\advance \\smallskipamount by 4pt" >>timeBSP_.t + @echo "@end tex" >>timeBSP_.t + ${REPLACE} -p BSP_TIMES timeBSP_.t + mv timeBSP_.t.fixed timeBSP_.t + +timeBSP.texi: timeBSP_.t + $(BMENU) -p "Timing Specification Terminology" \ + -u "Top" \ + -n "Command and Variable Index" timeBSP_.t + mv timeBSP_.texi timeBSP.texi + +EXTRA_DIST = BSP_TIMES *.t diff --git a/doc/supplements/sh/sh.texi b/doc/supplements/sh/sh.texi index 26a0b0347f..e49a434972 100644 --- a/doc/supplements/sh/sh.texi +++ b/doc/supplements/sh/sh.texi @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c %**start of header -@setfilename c_sh +@setfilename sh @syncodeindex vr fn @synindex ky cp @paragraphindent 0 @@ -76,7 +76,7 @@ END-INFO-DIR-ENTRY @include timeBSP.texi @ifinfo @node Top, Preface, (dir), (dir) -@top c_sh +@top sh This is the online version of the RTEMS Hitachi SH Applications Supplement. diff --git a/doc/supplements/sh/timeBSP_.t b/doc/supplements/sh/timeBSP_.t new file mode 100644 index 0000000000..3da8e44f40 --- /dev/null +++ b/doc/supplements/sh/timeBSP_.t @@ -0,0 +1,1442 @@ +@c +@c COPYRIGHT (c) 1988-1999. +@c On-Line Applications Research Corporation (OAR). +@c All rights reserved. +@c +@c $Id$ +@c + +@include ../../common/timemac.texi +@tex +\global\advance \smallskipamount by -4pt +@end tex + +@chapter BSP_FOR_TIMES Timing Data + +@section Introduction + +The timing data for the XXX version of RTEMS is +provided along with the target dependent aspects concerning the +gathering of the timing data. The hardware platform used to +gather the times is described to give the reader a better +understanding of each directive time provided. Also, provided +is a description of the interrupt latency and the context switch +times as they pertain to the XXX version of RTEMS. + +@section Hardware Platform + +All times reported except for the maximum period +interrupts are disabled by RTEMS were measured using a Motorola +BSP_FOR_TIMES CPU board. The BSP_FOR_TIMES is a 20Mhz board with one wait +state dynamic memory and a XXX numeric coprocessor. The +Zilog 8036 countdown timer on this board was used to measure +elapsed time with a one-half microsecond resolution. All +sources of hardware interrupts were disabled, although the +interrupt level of the XXX allows all interrupts. + +The maximum period interrupts are disabled was +measured by summing the number of CPU cycles required by each +assembly language instruction executed while interrupts were +disabled. The worst case times of the XXX microprocessor +were used for each instruction. Zero wait state memory was +assumed. The total CPU cycles executed with interrupts +disabled, including the instructions to disable and enable +interrupts, was divided by 20 to simulate a 20Mhz XXX. It +should be noted that the worst case instruction times for the +XXX assume that the internal cache is disabled and that no +instructions overlap. + +@section Interrupt Latency + +The maximum period with interrupts disabled within +RTEMS is less than TBD +microseconds including the instructions +which disable and re-enable interrupts. The time required for +the XXX to vector an interrupt and for the RTEMS entry +overhead before invoking the user's interrupt handler are a +total of 9 +microseconds. These combine to yield a worst case +interrupt latency of less than +TBD + 9 +microseconds at 20Mhz. [NOTE: The maximum period with interrupts +disabled was last determined for Release +4.0.0.] + +It should be noted again that the maximum period with +interrupts disabled within RTEMS is hand-timed and based upon +worst case (i.e. CPU cache disabled and no instruction overlap) +times for a 20Mhz XXX. The interrupt vector and entry +overhead time was generated on an BSP_FOR_TIMES benchmark platform +using the Multiprocessing Communications registers to generate +as the interrupt source. + +@section Context Switch + +The RTEMS processor context switch time is 35 +microseconds on the BSP_FOR_TIMES benchmark platform when no floating +point context is saved or restored. Additional execution time +is required when a TASK_SWITCH user extension is configured. +The use of the TASK_SWITCH extension is application dependent. +Thus, its execution time is not considered part of the raw +context switch time. + +Since RTEMS was designed specifically for embedded +missile applications which are floating point intensive, the +executive is optimized to avoid unnecessarily saving and +restoring the state of the numeric coprocessor. The state of +the numeric coprocessor is only saved when an FLOATING_POINT +task is dispatched and that task was not the last task to +utilize the coprocessor. In a system with only one +FLOATING_POINT task, the state of the numeric coprocessor will +never be saved or restored. When the first FLOATING_POINT task +is dispatched, RTEMS does not need to save the current state of +the numeric coprocessor. + +The exact amount of time required to save and restore +floating point context is dependent on whether an XXX or +XXX is being used as well as the state of the numeric +coprocessor. These numeric coprocessors define three operating +states: initialized, idle, and busy. RTEMS places the +coprocessor in the initialized state when a task is started or +restarted. Once the task has utilized the coprocessor, it is in +the idle state when floating point instructions are not +executing and the busy state when floating point instructions +are executing. The state of the coprocessor is task specific. + +The following table summarizes the context switch +times for the BSP_FOR_TIMES benchmark platform: + +@c ****** This comment is here to remind you not to edit the timetbl.t +@c ****** in any directory but common. +@c +@c Time Table Template +@c +@c COPYRIGHT (c) 1988-1999. +@c On-Line Applications Research Corporation (OAR). +@c All rights reserved. +@c +@c $Id$ +@c + +@ifset use-tex +@sp 1 +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{No Floating Point Contexts}{35} +\rtemsdirective{Floating Point Contexts} +\rtemscase{restore first FP task}{39} +\rtemscase{save initialized, restore initialized}{66} +\rtemscase{save idle, restore initialized}{66} +\rtemscase{save idle, restore idle}{68} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet +@item No Floating Point Contexts +@itemize - +@item only case: 35 +@end itemize +@item Floating Point Contexts +@itemize - +@item restore first FP task: 39 +@item save initialized, restore initialized: 66 +@item save idle, restore initialized: 66 +@item save idle, restore idle: 66 +@end itemize +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>No Floating Point Contexts</STRONG></TD> + <TD ALIGN=center>35</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>Floating Point Contexts</TR> + <TR><TD ALIGN=left><dd>restore first FP task</TD> + <TD ALIGN=center>39</TD> + <TR><TD ALIGN=left><dd>save initialized, restore initialized</TD> + <TD ALIGN=center>66</TD> + <TR><TD ALIGN=left><dd>save idle, restore initialized</TD> + <TD ALIGN=center>66</TD> + <TR><TD ALIGN=left><dd>save idle, restore idle</TD> + <TD ALIGN=center>68</TD> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Directive Times + +This sections is divided into a number of +subsections, each of which contains a table listing the +execution times of that manager's directives. + +@page +@section Task Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{TASK\_CREATE}{148} +\rtemsonecase{TASK\_IDENT}{350} +\rtemsonecase{TASK\_START}{76} +\rtemsdirective{TASK\_RESTART} +\rtemscase{calling task}{95} +\rtemscase{suspended task -- returns to caller} + {89} +\rtemscase{blocked task -- returns to caller} + {124} +\rtemscase{ready task -- returns to caller} + {92} +\rtemscase{suspended task -- preempts caller} + {125} +\rtemscase{blocked task -- preempts caller} + {149} +\rtemscase{ready task -- preempts caller} + {142} +\rtemsdirective{TASK\_DELETE} +\rtemscase{calling task}{170} +\rtemscase{suspended task}{138} +\rtemscase{blocked task}{143} +\rtemscase{ready task}{144} +\rtemsdirective{TASK\_SUSPEND} +\rtemscase{calling task}{71} +\rtemscase{returns to caller}{43} +\rtemsdirective{TASK\_RESUME} +\rtemscase{task readied -- returns to caller} + {45} +\rtemscase{task readied -- preempts caller} + {67} +\rtemsdirective{TASK\_SET\_PRIORITY} +\rtemscase{obtain current priority} + {31} +\rtemscase{returns to caller}{64} +\rtemscase{preempts caller}{106} +\rtemsdirective{TASK\_MODE} +\rtemscase{obtain current mode}{14} +\rtemscase{no reschedule}{16} +\rtemscase{reschedule -- returns to caller} + {23} +\rtemscase{reschedule -- preempts caller} + {60} +\rtemsonecase{TASK\_GET\_NOTE}{33} +\rtemsonecase{TASK\_SET\_NOTE}{33} +\rtemsdirective{TASK\_WAKE\_AFTER} +\rtemscase{yield -- returns to caller} + {16} +\rtemscase{yield -- preempts caller} + {56} +\rtemsonecase{TASK\_WAKE\_WHEN}{117} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item TASK_CREATE +@itemize - +@item only case: 148 +@end itemize + +@item TASK_IDENT +@itemize - +@item only case: 350 +@end itemize + +@item TASK_START +@itemize - +@item only case: 76 +@end itemize + +@item TASK_RESTART +@itemize - +@item calling task: 95 +@item suspended task -- returns to caller: 89 +@item blocked task -- returns to caller: 124 +@item ready task -- returns to caller: 92 +@item suspended task -- preempts caller: 125 +@item blocked task -- preempts caller: 149 +@item ready task -- preempts caller: 142 +@end itemize + +@item TASK_DELETE +@itemize - +@item calling task: 170 +@item suspended task: 138 +@item blocked task: 143 +@item ready task: 144 +@end itemize + +@item TASK_SUSPEND +@itemize - +@item calling task: 71 +@item returns to caller: 43 +@end itemize + +@item TASK_RESUME +@itemize - +@item task readied -- returns to caller: 45 +@item task readied -- preempts caller: 67 +@end itemize + +@item TASK_SET_PRIORITY +@itemize - +@item obtain current priority: 31 +@item returns to caller: 64 +@item preempts caller: 106 +@end itemize + +@item TASK_MODE +@itemize - +@item obtain current mode: 14 +@item no reschedule: 16 +@item reschedule -- returns to caller: 23 +@item reschedule -- preempts caller: 60 +@end itemize + +@item TASK_GET_NOTE +@itemize - +@item only case: 33 +@end itemize + +@item TASK_SET_NOTE +@itemize - +@item only case: 33 +@end itemize + +@item TASK_WAKE_AFTER +@itemize - +@item yield -- returns to caller: 16 +@item yield -- preempts caller: 56 +@end itemize + +@item TASK_WAKE_WHEN +@itemize - +@item only case: 117 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>TASK_CREATE</STRONG></TD> + <TD ALIGN=center>148</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_IDENT</STRONG></TD> + <TD ALIGN=center>350</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_START</STRONG></TD> + <TD ALIGN=center>76</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_RESTART</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>calling task</TD> + <TD ALIGN=center>95</TD></TR> + <TR><TD ALIGN=left><dd>suspended task -- returns to caller</TD> + <TD ALIGN=center>89</TD></TR> + <TR><TD ALIGN=left><dd>blocked task -- returns to caller</TD> + <TD ALIGN=center>124</TD></TR> + <TR><TD ALIGN=left><dd>ready task -- returns to caller</TD> + <TD ALIGN=center>92</TD></TR> + <TR><TD ALIGN=left><dd>suspended task -- preempts caller</TD> + <TD ALIGN=center>125</TD></TR> + <TR><TD ALIGN=left><dd>blocked task -- preempts caller</TD> + <TD ALIGN=center>149</TD></TR> + <TR><TD ALIGN=left><dd>ready task -- preempts caller</TD> + <TD ALIGN=center>142</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_DELETE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>calling task</TD> + <TD ALIGN=center>170</TD></TR> + <TR><TD ALIGN=left><dd>suspended task</TD> + <TD ALIGN=center>138</TD></TR> + <TR><TD ALIGN=left><dd>blocked task</TD> + <TD ALIGN=center>143</TD></TR> + <TR><TD ALIGN=left><dd>ready task</TD> + <TD ALIGN=center>144</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_SUSPEND</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>calling task</TD> + <TD ALIGN=center>71</TD></TR> + <TR><TD ALIGN=left><dd>returns to caller</TD> + <TD ALIGN=center>43</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_RESUME</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>45</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>67</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_SET_PRIORITY</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>obtain current priority</TD> + <TD ALIGN=center>31</TD></TR> + <TR><TD ALIGN=left><dd>returns to caller</TD> + <TD ALIGN=center>64</TD></TR> + <TR><TD ALIGN=left><dd>preempts caller</TD> + <TD ALIGN=center>106</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_MODE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>obtain current mode</TD> + <TD ALIGN=center>14</TD></TR> + <TR><TD ALIGN=left><dd>no reschedule</TD> + <TD ALIGN=center>16</TD></TR> + <TR><TD ALIGN=left><dd>reschedule -- returns to caller</TD> + <TD ALIGN=center>23</TD></TR> + <TR><TD ALIGN=left><dd>reschedule -- preempts caller</TD> + <TD ALIGN=center>60</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_GET_NOTE</STRONG></TD> + <TD ALIGN=center>33</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_SET_NOTE</STRONG></TD> + <TD ALIGN=center>33</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_WAKE_AFTER</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>yield -- returns to caller</TD> + <TD ALIGN=center>16</TD></TR> + <TR><TD ALIGN=left><dd>yield -- preempts caller</TD> + <TD ALIGN=center>56</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_WAKE_WHEN</STRONG></TD> + <TD ALIGN=center>117</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Interrupt Manager + +It should be noted that the interrupt entry times +include vectoring the interrupt handler. + +@ifset use-tex +@sp 1 +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsdirective{Interrupt Entry Overhead} +\rtemscase{returns to nested interrupt}{12} +\rtemscase{returns to interrupted task} + {9} +\rtemscase{returns to preempting task} + {9} +\rtemsdirective{Interrupt Exit Overhead} +\rtemscase{returns to nested interrupt}{<1} +\rtemscase{returns to interrupted task} + {8} +\rtemscase{returns to preempting task} + {54} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item Interrupt Entry Overhead +@itemize - +@item returns to nested interrupt: 12 +@item returns to interrupted task: 9 +@item returns to preempting task: 9 +@end itemize + +@item Interrupt Exit Overhead +@itemize - +@item returns to nested interrupt: <1 +@item returns to interrupted task: 8 +@item returns to preempting task: 54 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left COLSPAN=2><STRONG>Interrupt Entry Overhead</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>returns to nested interrupt</TD> + <TD ALIGN=center>12</TD></TR> + <TR><TD ALIGN=left><dd>returns to interrupted task</TD> + <TD ALIGN=center>9</TD></TR> + <TR><TD ALIGN=left><dd>returns to preempting task</TD> + <TD ALIGN=center>9</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>Interrupt Exit Overhead</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>returns to nested interrupt</TD> + <TD ALIGN=center><1</TD></TR> + <TR><TD ALIGN=left><dd>returns to interrupted task</TD> + <TD ALIGN=center>8</TD></TR> + <TR><TD ALIGN=left><dd>returns to preempting task</TD> + <TD ALIGN=center>54</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + + +@section Clock Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{CLOCK\_SET}{86} +\rtemsonecase{CLOCK\_GET}{1} +\rtemsonecase{CLOCK\_TICK}{17} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item CLOCK_SET +@itemize - +@item only case: 86 +@end itemize + +@item CLOCK_GET +@itemize - +@item only case: 1 +@end itemize + +@item CLOCK_TICK +@itemize - +@item only case: 17 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>CLOCK_SET</STRONG></TD> + <TD ALIGN=center>86</TD></TR> +<TR><TD ALIGN=left><STRONG>CLOCK_GET</STRONG></TD> + <TD ALIGN=center>1</TD></TR> +<TR><TD ALIGN=left><STRONG>CLOCK_TICK</STRONG></TD> + <TD ALIGN=center>17</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Timer Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{TIMER\_CREATE}{28} +\rtemsonecase{TIMER\_IDENT}{343} +\rtemsdirective{TIMER\_DELETE} +\rtemscase{inactive}{43} +\rtemscase{active}{47} +\rtemsdirective{TIMER\_FIRE\_AFTER} +\rtemscase{inactive}{58} +\rtemscase{active}{61} +\rtemsdirective{TIMER\_FIRE\_WHEN} +\rtemscase{inactive}{88} +\rtemscase{active}{88} +\rtemsdirective{TIMER\_RESET} +\rtemscase{inactive}{54} +\rtemscase{active}{58} +\rtemsdirective{TIMER\_CANCEL} +\rtemscase{inactive}{31} +\rtemscase{active}{34} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item TIMER_CREATE +@itemize - +@item only case: 28 +@end itemize + +@item TIMER_IDENT +@itemize - +@item only case: 343 +@end itemize + +@item TIMER_DELETE +@itemize - +@item inactive: 43 +@item active: 47 +@end itemize + +@item TIMER_FIRE_AFTER +@itemize - +@item inactive: 58 +@item active: 61 +@end itemize + +@item TIMER_FIRE_WHEN +@itemize - +@item inactive: TIMER_FIRE_WHEN_INACTIVE +@item active: TIMER_FIRE_WHEN_ACTIVE +@end itemize + +@item TIMER_RESET +@itemize - +@item inactive: TIMER_RESET_INACTIVE +@item active: TIMER_RESET_ACTIVE +@end itemize + +@item TIMER_CANCEL +@itemize - +@item inactive: TIMER_CANCEL_INACTIVE +@item active: TIMER_CANCEL_ACTIVE +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>TIMER_CREATE</STRONG></TD> + <TD ALIGN=center>28</TD></TR> +<TR><TD ALIGN=left><STRONG>TIMER_IDENT</STRONG></TD> + <TD ALIGN=center>343</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_DELETE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>43</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>47</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_FIRE_AFTER</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>58</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>61</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_FIRE_WHEN</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>88</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>88</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_RESET</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>54</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>58</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_CANCEL</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>31</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>34</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Semaphore Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{SEMAPHORE\_CREATE}{60} +\rtemsonecase{SEMAPHORE\_IDENT}{367} +\rtemsonecase{SEMAPHORE\_DELETE}{58} +\rtemsdirective{SEMAPHORE\_OBTAIN} +\rtemscase{available}{38} +\rtemscase{not available -- NO\_WAIT} + {38} +\rtemscase{not available -- caller blocks} + {109} +\rtemsdirective{SEMAPHORE\_RELEASE} +\rtemscase{no waiting tasks}{44} +\rtemscase{task readied -- returns to caller} + {66} +\rtemscase{task readied -- preempts caller} + {87} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item SEMAPHORE_CREATE +@itemize - +@item only case: 60 +@end itemize + +@item SEMAPHORE_IDENT +@itemize - +@item only case: 367 +@end itemize + +@item SEMAPHORE_DELETE +@itemize - +@item only case: 58 +@end itemize + +@item SEMAPHORE_OBTAIN +@itemize - +@item available: 38 +@item not available -- NO_WAIT: 38 +@item not available -- caller blocks: 109 +@end itemize + +@item SEMAPHORE_RELEASE +@itemize - +@item no waiting tasks: 44 +@item task readied -- returns to caller: 66 +@item task readied -- preempts caller: 87 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>SEMAPHORE_CREATE</STRONG></TD> + <TD ALIGN=center>60</TD></TR> +<TR><TD ALIGN=left><STRONG>SEMAPHORE_IDENT</STRONG></TD> + <TD ALIGN=center>367</TD></TR> +<TR><TD ALIGN=left><STRONG>SEMAPHORE_DELETE</STRONG></TD> + <TD ALIGN=center>58</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>SEMAPHORE_OBTAIN</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>38</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center>38</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center>109</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>SEMAPHORE_RELEASE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>44</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>66</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>87</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Message Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{MESSAGE\_QUEUE\_CREATE}{200} +\rtemsonecase{MESSAGE\_QUEUE\_IDENT}{341} +\rtemsonecase{MESSAGE\_QUEUE\_DELETE}{80} +\rtemsdirective{MESSAGE\_QUEUE\_SEND} +\rtemscase{no waiting tasks} + {97} +\rtemscase{task readied -- returns to caller} + {101} +\rtemscase{task readied -- preempts caller} + {123} +\rtemsdirective{MESSAGE\_QUEUE\_URGENT} +\rtemscase{no waiting tasks}{96} +\rtemscase{task readied -- returns to caller} + {101} +\rtemscase{task readied -- preempts caller} + {123} +\rtemsdirective{MESSAGE\_QUEUE\_BROADCAST} +\rtemscase{no waiting tasks}{53} +\rtemscase{task readied -- returns to caller} + {111} +\rtemscase{task readied -- preempts caller} + {133} +\rtemsdirective{MESSAGE\_QUEUE\_RECEIVE} +\rtemscase{available}{79} +\rtemscase{not available -- NO\_WAIT} + {43} +\rtemscase{not available -- caller blocks} + {114} +\rtemsdirective{MESSAGE\_QUEUE\_FLUSH} +\rtemscase{no messages flushed}{29} +\rtemscase{messages flushed}{39} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item MESSAGE_QUEUE_CREATE +@itemize - +@item only case: 200 +@end itemize + +@item MESSAGE_QUEUE_IDENT +@itemize - +@item only case: 341 +@end itemize + +@item MESSAGE_QUEUE_DELETE +@itemize - +@item only case: 80 +@end itemize + +@item MESSAGE_QUEUE_SEND +@itemize - +@item no waiting tasks: 97 +@item task readied -- returns to caller: 101 +@item task readied -- preempts caller: 123 +@end itemize + +@item MESSAGE_QUEUE_URGENT +@itemize - +@item no waiting tasks: 96 +@item task readied -- returns to caller: 101 +@item task readied -- preempts caller: 123 +@end itemize + +@item MESSAGE_QUEUE_BROADCAST +@itemize - +@item no waiting tasks: 53 +@item task readied -- returns to caller: 111 +@item task readied -- preempts caller: 133 +@end itemize + +@item MESSAGE_QUEUE_RECEIVE +@itemize - +@item available: 79 +@item not available -- NO_WAIT: 43 +@item not available -- caller blocks: 114 +@end itemize + +@item MESSAGE_QUEUE_FLUSH +@itemize - +@item no messages flushed: 29 +@item messages flushed: 39 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_CREATE</STRONG></TD> + <TD ALIGN=center>200</TD></TR> +<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_IDENT</STRONG></TD> + <TD ALIGN=center>341</TD></TR> +<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_DELETE</STRONG></TD> + <TD ALIGN=center>80</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_SEND</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>97</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>101</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>123</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_URGENT</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>96</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>101</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>123</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_BROADCAST</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>53</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>111</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>133</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_RECEIVE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>79</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center>43</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center>114</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_FLUSH</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no messages flushed</TD> + <TD ALIGN=center>29</TD></TR> + <TR><TD ALIGN=left><dd>messages flushed</TD> + <TD ALIGN=center>39</TD></TR> + + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Event Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsdirective{EVENT\_SEND} +\rtemscase{no task readied}{24} +\rtemscase{task readied -- returns to caller} + {60} +\rtemscase{task readied -- preempts caller} + {84} +\rtemsdirective{EVENT\_RECEIVE} +\rtemscase{obtain current events}{1} +\rtemscase{available}{28} +\rtemscase{not available -- NO\_WAIT}{23} +\rtemscase{not available -- caller blocks} + {84} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item EVENT_SEND +@itemize - +@item no task readied: 24 +@item task readied -- returns to caller: 60 +@item task readied -- preempts caller: 84 +@end itemize + +@item EVENT_RECEIVE +@itemize - +@item obtain current events: 1 +@item available: 28 +@item not available -- NO_WAIT: 23 +@item not available -- caller blocks: 84 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left COLSPAN=2><STRONG>EVENT_SEND</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no task readied</TD> + <TD ALIGN=center>24</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>60</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>84</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>EVENT_RECEIVE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>obtain current events</TD> + <TD ALIGN=center>1</TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>28</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center>23</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center>84</TD></TR> + + </TABLE> +</CENTER> +@end html +@end ifset +@section Signal Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{SIGNAL\_CATCH}{15} +\rtemsdirective{SIGNAL\_SEND} +\rtemscase{returns to caller}{37} +\rtemscase{signal to self}{55} +\rtemsdirective{EXIT ASR OVERHEAD} +\rtemscase{returns to calling task} + {37} +\rtemscase{returns to preempting task} + {54} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet +@item SIGNAL_CATCH +@itemize - +@item only case: 15 +@end itemize + +@item SIGNAL_SEND +@itemize - +@item returns to caller: 37 +@item signal to self: 55 +@end itemize + +@item EXIT ASR OVERHEAD +@itemize - +@item returns to calling task: 37 +@item returns to preempting task: 54 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>SIGNAL_CATCH</STRONG></TD> + <TD ALIGN=center>15</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>SIGNAL_SEND</TD></TR> + <TR><TD ALIGN=left><dd>returns to caller</TD> + <TD ALIGN=center>37</TD></TR> + <TR><TD ALIGN=left><dd>signal to self</TD> + <TD ALIGN=center>55</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>EXIT ASR OVERHEAD</TD></TR> + <TR><TD ALIGN=left><dd>returns to calling task</TD> + <TD ALIGN=center> + 37</TD></TR> + <TR><TD ALIGN=left><dd>returns to preempting task</TD> + <TD ALIGN=center> + 54</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Partition Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{PARTITION\_CREATE}{70} +\rtemsonecase{PARTITION\_IDENT}{341} +\rtemsonecase{PARTITION\_DELETE}{42} +\rtemsdirective{PARTITION\_GET\_BUFFER} +\rtemscase{available}{35} +\rtemscase{not available}{33} +\rtemsonecase{PARTITION\_RETURN\_BUFFER} + {33} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item PARTITION_CREATE +@itemize - +@item only case: 70 +@end itemize + +@item PARTITION_IDENT +@itemize - +@item only case: 341 +@end itemize + +@item PARTITION_DELETE +@itemize - +@item only case: 42 +@end itemize + +@item PARTITION_GET_BUFFER +@itemize - +@item available: 35 +@item not available: 33 +@end itemize + +@item PARTITION_RETURN_BUFFER +@itemize - +@item only case: 43 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>PARTITION_CREATE</STRONG></TD> + <TD ALIGN=center>70</TD></TR> +<TR><TD ALIGN=left><STRONG>PARTITION_IDENT</STRONG></TD> + <TD ALIGN=center>341</TD></TR> +<TR><TD ALIGN=left><STRONG>PARTITION_DELETE</STRONG></TD> + <TD ALIGN=center>42</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>PARTITION_GET_BUFFER</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>35</TD></TR> + <TR><TD ALIGN=left><dd>not available</TD> + <TD ALIGN=center>33</TD></TR> + <TR><TD ALIGN=left><STRONG>PARTITION_RETURN_BUFFER</STRONG></TD> + <TD ALIGN=center>33</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Region Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{REGION\_CREATE}{63} +\rtemsonecase{REGION\_IDENT}{348} +\rtemsonecase{REGION\_DELETE}{39} +\rtemsdirective{REGION\_GET\_SEGMENT} +\rtemscase{available}{52} +\rtemscase{not available -- NO\_WAIT} + {49} +\rtemscase{not available -- caller blocks} + {123} +\rtemsdirective{REGION\_RETURN\_SEGMENT} +\rtemscase{no waiting tasks}{54} +\rtemscase{task readied -- returns to caller} + {114} +\rtemscase{task readied -- preempts caller} + {136} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item REGION_CREATE +@itemize - +@item only case: 63 +@end itemize + +@item REGION_IDENT +@itemize - +@item only case: 348 +@end itemize + +@item REGION_DELETE +@itemize - +@item only case: 39 +@end itemize + +@item REGION_GET_SEGMENT +@itemize - +@item available: 52 +@item not available -- NO_WAIT: 49 +@item not available -- caller blocks: 123 +@end itemize + +@item REGION_RETURN_SEGMENT +@itemize - +@item no waiting tasks: 54 +@item task readied -- returns to caller: 114 +@item task readied -- preempts caller: 136 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>REGION_CREATE</STRONG></TD> + <TD ALIGN=center>63</TD></TR> +<TR><TD ALIGN=left><STRONG>REGION_IDENT</STRONG></TD> + <TD ALIGN=center>348</TD></TR> +<TR><TD ALIGN=left><STRONG>REGION_DELETE</STRONG></TD> + <TD ALIGN=center>39</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>REGION_GET_SEGMENT</TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>52</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center> + 49</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center> + 123</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>REGION_RETURN_SEGMENT</TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>54</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center> + 114</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center> + 136</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Dual-Ported Memory Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{PORT\_CREATE}{35} +\rtemsonecase{PORT\_IDENT}{340} +\rtemsonecase{PORT\_DELETE}{39} +\rtemsonecase{PORT\_INTERNAL\_TO\_EXTERNAL} + {26} +\rtemsonecase{PORT\_EXTERNAL\_TO\_INTERNAL} + {27} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item PORT_CREATE +@itemize - +@item only case: 35 +@end itemize + +@item PORT_IDENT +@itemize - +@item only case: 340 +@end itemize + +@item PORT_DELETE +@itemize - +@item only case: 39 +@end itemize + +@item PORT_INTERNAL_TO_EXTERNAL +@itemize - +@item only case: 26 +@end itemize + +@item PORT_EXTERNAL_TO_INTERNAL +@itemize - +@item only case: 27 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>PORT_CREATE</STRONG></TD> + <TD ALIGN=center>35</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_IDENT</STRONG></TD> + <TD ALIGN=center>340</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_DELETE</STRONG></TD> + <TD ALIGN=center>39</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_INTERNAL_TO_EXTERNAL</STRONG></TD> + <TD ALIGN=center>26</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_EXTERNAL_TO_INTERNAL</STRONG></TD> + <TD ALIGN=center>27</TD></TR> + + </TABLE> +</CENTER> +@end html +@end ifset + +@section I/O Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{IO\_INITIALIZE}{4} +\rtemsonecase{IO\_OPEN}{2} +\rtemsonecase{IO\_CLOSE}{1} +\rtemsonecase{IO\_READ}{2} +\rtemsonecase{IO\_WRITE}{3} +\rtemsonecase{IO\_CONTROL}{2} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item IO_INITIALIZE +@itemize - +@item only case: 4 +@end itemize + +@item IO_OPEN +@itemize - +@item only case: 2 +@end itemize + +@item IO_CLOSE +@itemize - +@item only case: 1 +@end itemize + +@item IO_READ +@itemize - +@item only case: 2 +@end itemize + +@item IO_WRITE +@itemize - +@item only case: 3 +@end itemize + +@item IO_CONTROL +@itemize - +@item only case: 2 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>IO_INITIALIZE</STRONG></TD> + <TD ALIGN=center>4</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_OPEN</STRONG></TD> + <TD ALIGN=center>2</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_CLOSE</STRONG></TD> + <TD ALIGN=center>1</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_READ</STRONG></TD> + <TD ALIGN=center>2</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_WRITE</STRONG></TD> + <TD ALIGN=center>3</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_CONTROL</STRONG></TD> + <TD ALIGN=center>2</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Rate Monotonic Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{RATE\_MONOTONIC\_CREATE}{32} +\rtemsonecase{RATE\_MONOTONIC\_IDENT}{341} +\rtemsonecase{RATE\_MONOTONIC\_CANCEL}{39} +\rtemsdirective{RATE\_MONOTONIC\_DELETE} +\rtemscase{active}{51} +\rtemscase{inactive}{48} +\rtemsdirective{RATE\_MONOTONIC\_PERIOD} +\rtemscase{initiate period -- returns to caller} + {54} +\rtemscase{conclude period -- caller blocks} + {74} +\rtemscase{obtain status}{31} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item RATE_MONOTONIC_CREATE +@itemize - +@item only case: 32 +@end itemize + +@item RATE_MONOTONIC_IDENT +@itemize - +@item only case: 341 +@end itemize + +@item RATE_MONOTONIC_CANCEL +@itemize - +@item only case: 39 +@end itemize + +@item RATE_MONOTONIC_DELETE +@itemize - +@item active: 51 +@item inactive: 48 +@end itemize + +@item RATE_MONOTONIC_PERIOD +@itemize - +@item initiate period -- returns to caller: 54 +@item conclude period -- caller blocks: 74 +@item obtain status: 31 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_CREATE</STRONG></TD> + <TD ALIGN=center>32</TD></TR> +<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_IDENT</STRONG></TD> + <TD ALIGN=center>341</TD></TR> +<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_CANCEL</STRONG></TD> + <TD ALIGN=center>39</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>RATE_MONOTONIC_DELETE</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>51</TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>48</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>RATE_MONOTONIC_PERIOD</TD></TR> + <TR><TD ALIGN=left><dd>initiate period -- returns to caller</TD> + <TD ALIGN=center> + 54</TD></TR> + <TR><TD ALIGN=left><dd>conclude period -- caller blocks</TD> + <TD ALIGN=center> + 74</TD></TR> + <TR><TD ALIGN=left><dd>obtain status</TD> + <TD ALIGN=center>31</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@tex +\global\advance \smallskipamount by 4pt +@end tex + +@tex +\global\advance \smallskipamount by 4pt +@end tex diff --git a/doc/supplements/sparc/Makefile b/doc/supplements/sparc/Makefile deleted file mode 100644 index b390b92205..0000000000 --- a/doc/supplements/sparc/Makefile +++ /dev/null @@ -1,163 +0,0 @@ -# -# COPYRIGHT (c) 1988-1999. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. -# -# $Id$ -# - -PROJECT=sparc - -include ../../Make.config - -REPLACE=../../tools/word-replace - -all: html info ps pdf - -dirs: - $(make-dirs) - -COMMON_FILES=../../common/cpright.texi ../../common/setup.texi - -GENERATED_FILES=\ - cpumodel.texi callconv.texi memmodel.texi intr.texi fatalerr.texi \ - bsp.texi cputable.texi timing.texi wksheets.texi timeERC32.texi - -FILES= $(PROJECT).texi \ - preface.texi \ - $(GENERATED_FILES) - -INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*) - -info: dirs c_sparc - cp c_$(PROJECT) c_$(PROJECT)-* $(INFO_INSTALL) - -c_sparc: $(FILES) - $(MAKEINFO) $(PROJECT).texi - -dvi: dirs $(PROJECT).dvi -ps: dirs $(PROJECT).ps -pdf: dirs $(PROJECT).pdf - -$(PROJECT).pdf: $(FILES) - $(TEXI2PDF) $(PROJECT).texi - cp $(PROJECT).pdf $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).ps: dirs $(PROJECT).dvi - dvips -o $(PROJECT).ps $(PROJECT).dvi - cp $(PROJECT).ps $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).dvi: $(FILES) - $(TEXI2DVI) $(PROJECT).texi - cp $(PROJECT).dvi $(WWW_INSTALL)/$(PROJECT) - -html: dirs $(FILES) - -mkdir -p $(WWW_INSTALL)/$(PROJECT) - $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \ - $(PROJECT).texi - -clean: - rm -f *.o $(PROG) *.txt core $(PROJECT).pdf - rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f $(PROJECT) $(PROJECT)-* - rm -f c_$(PROJECT) c_$(PROJECT)-* - rm -f intr.t $(GENERATED_FILES) - rm -f wksheets.t wksheets_NOTIMES.t timing.t - rm -f timeERC32_.t timeERC32_.texi - rm -f *.fixed _* - -# -# Chapters which get automatic processing -# - -cpumodel.texi: cpumodel.t Makefile - $(BMENU) -p "Preface" \ - -u "Top" \ - -n "Calling Conventions" ${*}.t - -callconv.texi: callconv.t Makefile - $(BMENU) -p "CPU Model Dependent Features CPU Model Implementation Notes" \ - -u "Top" \ - -n "Memory Model" ${*}.t - -memmodel.texi: memmodel.t Makefile - $(BMENU) -p "Calling Conventions User-Provided Routines" \ - -u "Top" \ - -n "Interrupt Processing" ${*}.t - -# Interrupt Chapter: -# 1. Replace Times and Sizes -# 2. Build Node Structure -intr.t: intr_NOTIMES.t ERC32_TIMES - ${REPLACE} -p ERC32_TIMES intr_NOTIMES.t - mv intr_NOTIMES.t.fixed intr.t - -intr.texi: intr.t Makefile - $(BMENU) -p "Memory Model Flat Memory Model" \ - -u "Top" \ - -n "Default Fatal Error Processing" ${*}.t - -fatalerr.texi: fatalerr.t Makefile - $(BMENU) -p "Interrupt Processing Interrupt Stack" \ - -u "Top" \ - -n "Board Support Packages" ${*}.t - -bsp.texi: bsp.t Makefile - $(BMENU) -p "Default Fatal Error Processing Default Fatal Error Handler Operations" \ - -u "Top" \ - -n "Processor Dependent Information Table" ${*}.t - -cputable.texi: cputable.t Makefile - $(BMENU) -p "Board Support Packages Processor Initialization" \ - -u "Top" \ - -n "Memory Requirements" ${*}.t - - -# Worksheets Chapter: -# 1. Obtain the Shared File -# 2. Replace Times and Sizes -# 3. Build Node Structure - -wksheets_NOTIMES.t: ../../common/wksheets.t - cp ../../common/wksheets.t wksheets_NOTIMES.t - -wksheets.t: wksheets_NOTIMES.t ERC32_TIMES - ${REPLACE} -p ERC32_TIMES wksheets_NOTIMES.t - mv wksheets_NOTIMES.t.fixed wksheets.t - -wksheets.texi: wksheets.t Makefile - $(BMENU) -p "Processor Dependent Information Table CPU Dependent Information Table" \ - -u "Top" \ - -n "Timing Specification" ${*}.t - -# Timing Specification Chapter: -# 1. Copy the Shared File -# 3. Build Node Structure - -timing.t: ../../common/timing.t - cp ../../common/timing.t timing.t - -timing.texi: timing.t Makefile - $(BMENU) -p "Memory Requirements RTEMS RAM Workspace Worksheet" \ - -u "Top" \ - -n "ERC32 Timing Data" ${*}.t - -# Timing Data for ERC32 BSP Chapter: -# 1. Copy the Shared File -# 2. Replace Times and Sizes -# 3. Build Node Structure - -timeERC32_.t: ../../common/timetbl.t timeERC32.t - cat timeERC32.t ../../common/timetbl.t >timeERC32_.t - @echo >>timeERC32_.t - @echo "@tex" >>timeERC32_.t - @echo "\\global\\advance \\smallskipamount by 4pt" >>timeERC32_.t - @echo "@end tex" >>timeERC32_.t - ${REPLACE} -p ERC32_TIMES timeERC32_.t - mv timeERC32_.t.fixed timeERC32_.t - -timeERC32.texi: timeERC32_.t Makefile - $(BMENU) -p "Timing Specification Terminology" \ - -u "Top" \ - -n "Command and Variable Index" timeERC32_.t - mv timeERC32_.texi timeERC32.texi diff --git a/doc/supplements/sparc/Makefile.am b/doc/supplements/sparc/Makefile.am new file mode 100644 index 0000000000..2bfc18cff4 --- /dev/null +++ b/doc/supplements/sparc/Makefile.am @@ -0,0 +1,116 @@ +# +# COPYRIGHT (c) 1988-1999. +# On-Line Applications Research Corporation (OAR). +# All rights reserved. +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign + +PROJECT=sparc + +include $(top_srcdir)/project.am +include $(top_srcdir)/supplements/supplement.am + +COMMON_FILES=$(top_srcdir)/common/cpright.texi $(top_builddir)/common/setup.texi + +GENERATED_FILES=\ + cpumodel.texi callconv.texi memmodel.texi intr.texi fatalerr.texi \ + bsp.texi cputable.texi timing.texi wksheets.texi timeERC32.texi + +FILES= preface.texi + +info_TEXINFOS = sparc.texi +sparc_TEXINFOS = $(FILES) $(COMMON_FILES) $(GENERATED_FILES) + +# +# Chapters which get automatic processing +# + +cpumodel.texi: cpumodel.t + $(BMENU) -p "Preface" \ + -u "Top" \ + -n "Calling Conventions" $< + +callconv.texi: callconv.t + $(BMENU) -p "CPU Model Dependent Features CPU Model Implementation Notes" \ + -u "Top" \ + -n "Memory Model" $< + +memmodel.texi: memmodel.t + $(BMENU) -p "Calling Conventions User-Provided Routines" \ + -u "Top" \ + -n "Interrupt Processing" $< + +# Interrupt Chapter: +# 1. Replace Times and Sizes +# 2. Build Node Structure +intr.texi: intr_NOTIMES.t ERC32_TIMES + ${REPLACE2} -p $(srcdir)/ERC32_TIMES $(srcdir)/intr_NOTIMES.t intr.t + $(BMENU) -p "Memory Model Flat Memory Model" \ + -u "Top" \ + -n "Default Fatal Error Processing" intr.t +CLEANFILES += intr.t + +fatalerr.texi: fatalerr.t + $(BMENU) -p "Interrupt Processing Interrupt Stack" \ + -u "Top" \ + -n "Board Support Packages" $< + +bsp.texi: bsp.t + $(BMENU) -p "Default Fatal Error Processing Default Fatal Error Handler Operations" \ + -u "Top" \ + -n "Processor Dependent Information Table" $< + +cputable.texi: cputable.t + $(BMENU) -p "Board Support Packages Processor Initialization" \ + -u "Top" \ + -n "Memory Requirements" $< + + +# Worksheets Chapter: +# 1. Obtain the Shared File +# 2. Replace Times and Sizes +# 3. Build Node Structure + +wksheets.texi: $(top_srcdir)/common/wksheets.t ERC32_TIMES + ${REPLACE2} -p $(srcdir)/ERC32_TIMES \ + $(top_srcdir)/common/wksheets.t wksheets.t + $(BMENU) -p "Processor Dependent Information Table CPU Dependent Information Table" \ + -u "Top" \ + -n "Timing Specification" wksheets.t +CLEANFILES += wksheets.t + +# Timing Specification Chapter: +# 1. Copy the Shared File +# 3. Build Node Structure +timing.texi: $(top_srcdir)/common/timing.t + cp $(top_srcdir)/common/timing.t timing.t + $(BMENU) -p "Memory Requirements RTEMS RAM Workspace Worksheet" \ + -u "Top" \ + -n "ERC32 Timing Data" timing.t +CLEANFILES += timing.t + + +# Timing Data for ERC32 BSP Chapter: +# 1. Copy the Shared File +# 2. Replace Times and Sizes +# 3. Build Node Structure + +timeERC32_.t: $(top_srcdir)/common/timetbl.t timeERC32.t + cat timeERC32.t $(top_srcdir)/common/timetbl.t >timeERC32_.t + @echo >>timeERC32_.t + @echo "@tex" >>timeERC32_.t + @echo "\\global\\advance \\smallskipamount by 4pt" >>timeERC32_.t + @echo "@end tex" >>timeERC32_.t + ${REPLACE} -p ERC32_TIMES timeERC32_.t + mv timeERC32_.t.fixed timeERC32_.t + +timeERC32.texi: timeERC32_.t + $(BMENU) -p "Timing Specification Terminology" \ + -u "Top" \ + -n "Command and Variable Index" timeERC32_.t + mv timeERC32_.texi timeERC32.texi + +EXTRA_DIST = ERC32_TIMES *.t diff --git a/doc/supplements/sparc/sparc.texi b/doc/supplements/sparc/sparc.texi index 98462acac4..0fece23906 100644 --- a/doc/supplements/sparc/sparc.texi +++ b/doc/supplements/sparc/sparc.texi @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c %**start of header -@setfilename c_sparc +@setfilename sparc @syncodeindex vr fn @synindex ky cp @paragraphindent 0 @@ -75,7 +75,7 @@ END-INFO-DIR-ENTRY @include timeERC32.texi @ifinfo @node Top, Preface, (dir), (dir) -@top c_sparc +@top sparc This is the online version of the RTEMS SPARC Applications Supplement. diff --git a/doc/supplements/sparc/timeERC32_.t b/doc/supplements/sparc/timeERC32_.t new file mode 100644 index 0000000000..6fc2e1952f --- /dev/null +++ b/doc/supplements/sparc/timeERC32_.t @@ -0,0 +1,1454 @@ +@c +@c COPYRIGHT (c) 1988-1999. +@c On-Line Applications Research Corporation (OAR). +@c All rights reserved. +@c +@c $Id$ +@c + +@include ../../common/timemac.texi +@tex +\global\advance \smallskipamount by -4pt +@end tex + +@chapter ERC32 Timing Data + +@section Introduction + +The timing data for RTEMS on the ERC32 implementation +of the SPARC architecture is provided along with the target +dependent aspects concerning the gathering of the timing data. +The hardware platform used to gather the times is described to +give the reader a better understanding of each directive time +provided. Also, provided is a description of the interrupt +latency and the context switch times as they pertain to the +SPARC version of RTEMS. + +@section Hardware Platform + +All times reported in this chapter were measured +using the SPARC Instruction Simulator (SIS) developed by the +European Space Agency. SIS simulates the ERC32 -- a custom low +power implementation combining the Cypress 90C601 integer unit, +the Cypress 90C602 floating point unit, and a number of +peripherals such as counter timers, interrupt controller and a +memory controller. + +For the RTEMS tests, SIS is configured with the +following characteristics: + +@itemize @bullet +@item 15 Mhz clock speed + +@item 0 wait states for PROM accesses + +@item 0 wait states for RAM accesses +@end itemize + +The ERC32's General Purpose Timer was used to gather +all timing information. This timer was programmed to operate +with one microsecond accuracy. All sources of hardware +interrupts were disabled, although traps were enabled and the +interrupt level of the SPARC allows all interrupts. + +@section Interrupt Latency + +The maximum period with traps disabled or the +processor interrupt level set to it's highest value inside RTEMS +is less than TBD +microseconds including the instructions which +disable and re-enable interrupts. The time required for the +ERC32 to vector an interrupt and for the RTEMS entry overhead +before invoking the user's trap handler are a total of +8 +microseconds. These combine to yield a worst case interrupt +latency of less than TBD + +8 microseconds at +15.0 Mhz. +[NOTE: The maximum period with interrupts disabled was last +determined for Release 4.2.0-prerelease.] + +The maximum period with interrupts disabled within +RTEMS is hand-timed with some assistance from SIS. The maximum +period with interrupts disabled with RTEMS occurs during a +context switch when traps are disabled to flush all the register +windows to memory. The length of time spent flushing the +register windows varies based on the number of windows which +must be flushed. Based on the information reported by SIS, it +takes from 4.0 to 18.0 microseconds (37 to 122 instructions) to +flush the register windows. It takes approximately 41 CPU +cycles (2.73 microseconds) to flush each register window set to +memory. The register window flush operation is heavily memory +bound. + +[NOTE: All traps are disabled during the register +window flush thus disabling both software generate traps and +external interrupts. During a normal RTEMS critical section, +the processor interrupt level (pil) is raised to level 15 and +traps are left enabled. The longest path for a normal critical +section within RTEMS is less than 50 instructions.] + +The interrupt vector and entry overhead time was +generated on the SIS benchmark platform using the ERC32's +ability to forcibly generate an arbitrary interrupt as the +source of the "benchmark" interrupt. + +@section Context Switch + +The RTEMS processor context switch time is 10 +microseconds on the SIS benchmark platform when no floating +point context is saved or restored. Additional execution time +is required when a TASK_SWITCH user extension is configured. +The use of the TASK_SWITCH extension is application dependent. +Thus, its execution time is not considered part of the raw +context switch time. + +Since RTEMS was designed specifically for embedded +missile applications which are floating point intensive, the +executive is optimized to avoid unnecessarily saving and +restoring the state of the numeric coprocessor. The state of +the numeric coprocessor is only saved when an FLOATING_POINT +task is dispatched and that task was not the last task to +utilize the coprocessor. In a system with only one +FLOATING_POINT task, the state of the numeric coprocessor will +never be saved or restored. When the first FLOATING_POINT task +is dispatched, RTEMS does not need to save the current state of +the numeric coprocessor. + +The following table summarizes the context switch +times for the ERC32 benchmark platform: + +@c ****** This comment is here to remind you not to edit the timetbl.t +@c ****** in any directory but common. +@c +@c Time Table Template +@c +@c COPYRIGHT (c) 1988-1999. +@c On-Line Applications Research Corporation (OAR). +@c All rights reserved. +@c +@c $Id$ +@c + +@ifset use-tex +@sp 1 +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{No Floating Point Contexts}{21} +\rtemsdirective{Floating Point Contexts} +\rtemscase{restore first FP task}{26} +\rtemscase{save initialized, restore initialized}{24} +\rtemscase{save idle, restore initialized}{23} +\rtemscase{save idle, restore idle}{33} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet +@item No Floating Point Contexts +@itemize - +@item only case: 21 +@end itemize +@item Floating Point Contexts +@itemize - +@item restore first FP task: 26 +@item save initialized, restore initialized: 24 +@item save idle, restore initialized: 23 +@item save idle, restore idle: 23 +@end itemize +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>No Floating Point Contexts</STRONG></TD> + <TD ALIGN=center>21</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>Floating Point Contexts</TR> + <TR><TD ALIGN=left><dd>restore first FP task</TD> + <TD ALIGN=center>26</TD> + <TR><TD ALIGN=left><dd>save initialized, restore initialized</TD> + <TD ALIGN=center>24</TD> + <TR><TD ALIGN=left><dd>save idle, restore initialized</TD> + <TD ALIGN=center>23</TD> + <TR><TD ALIGN=left><dd>save idle, restore idle</TD> + <TD ALIGN=center>33</TD> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Directive Times + +This sections is divided into a number of +subsections, each of which contains a table listing the +execution times of that manager's directives. + +@page +@section Task Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{TASK\_CREATE}{59} +\rtemsonecase{TASK\_IDENT}{163} +\rtemsonecase{TASK\_START}{30} +\rtemsdirective{TASK\_RESTART} +\rtemscase{calling task}{64} +\rtemscase{suspended task -- returns to caller} + {36} +\rtemscase{blocked task -- returns to caller} + {47} +\rtemscase{ready task -- returns to caller} + {37} +\rtemscase{suspended task -- preempts caller} + {77} +\rtemscase{blocked task -- preempts caller} + {84} +\rtemscase{ready task -- preempts caller} + {75} +\rtemsdirective{TASK\_DELETE} +\rtemscase{calling task}{91} +\rtemscase{suspended task}{47} +\rtemscase{blocked task}{50} +\rtemscase{ready task}{51} +\rtemsdirective{TASK\_SUSPEND} +\rtemscase{calling task}{56} +\rtemscase{returns to caller}{16} +\rtemsdirective{TASK\_RESUME} +\rtemscase{task readied -- returns to caller} + {17} +\rtemscase{task readied -- preempts caller} + {52} +\rtemsdirective{TASK\_SET\_PRIORITY} +\rtemscase{obtain current priority} + {10} +\rtemscase{returns to caller}{25} +\rtemscase{preempts caller}{67} +\rtemsdirective{TASK\_MODE} +\rtemscase{obtain current mode}{5} +\rtemscase{no reschedule}{6} +\rtemscase{reschedule -- returns to caller} + {9} +\rtemscase{reschedule -- preempts caller} + {42} +\rtemsonecase{TASK\_GET\_NOTE}{10} +\rtemsonecase{TASK\_SET\_NOTE}{10} +\rtemsdirective{TASK\_WAKE\_AFTER} +\rtemscase{yield -- returns to caller} + {6} +\rtemscase{yield -- preempts caller} + {49} +\rtemsonecase{TASK\_WAKE\_WHEN}{75} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item TASK_CREATE +@itemize - +@item only case: 59 +@end itemize + +@item TASK_IDENT +@itemize - +@item only case: 163 +@end itemize + +@item TASK_START +@itemize - +@item only case: 30 +@end itemize + +@item TASK_RESTART +@itemize - +@item calling task: 64 +@item suspended task -- returns to caller: 36 +@item blocked task -- returns to caller: 47 +@item ready task -- returns to caller: 37 +@item suspended task -- preempts caller: 77 +@item blocked task -- preempts caller: 84 +@item ready task -- preempts caller: 75 +@end itemize + +@item TASK_DELETE +@itemize - +@item calling task: 91 +@item suspended task: 47 +@item blocked task: 50 +@item ready task: 51 +@end itemize + +@item TASK_SUSPEND +@itemize - +@item calling task: 56 +@item returns to caller: 16 +@end itemize + +@item TASK_RESUME +@itemize - +@item task readied -- returns to caller: 17 +@item task readied -- preempts caller: 52 +@end itemize + +@item TASK_SET_PRIORITY +@itemize - +@item obtain current priority: 10 +@item returns to caller: 25 +@item preempts caller: 67 +@end itemize + +@item TASK_MODE +@itemize - +@item obtain current mode: 5 +@item no reschedule: 6 +@item reschedule -- returns to caller: 9 +@item reschedule -- preempts caller: 42 +@end itemize + +@item TASK_GET_NOTE +@itemize - +@item only case: 10 +@end itemize + +@item TASK_SET_NOTE +@itemize - +@item only case: 10 +@end itemize + +@item TASK_WAKE_AFTER +@itemize - +@item yield -- returns to caller: 6 +@item yield -- preempts caller: 49 +@end itemize + +@item TASK_WAKE_WHEN +@itemize - +@item only case: 75 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>TASK_CREATE</STRONG></TD> + <TD ALIGN=center>59</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_IDENT</STRONG></TD> + <TD ALIGN=center>163</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_START</STRONG></TD> + <TD ALIGN=center>30</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_RESTART</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>calling task</TD> + <TD ALIGN=center>64</TD></TR> + <TR><TD ALIGN=left><dd>suspended task -- returns to caller</TD> + <TD ALIGN=center>36</TD></TR> + <TR><TD ALIGN=left><dd>blocked task -- returns to caller</TD> + <TD ALIGN=center>47</TD></TR> + <TR><TD ALIGN=left><dd>ready task -- returns to caller</TD> + <TD ALIGN=center>37</TD></TR> + <TR><TD ALIGN=left><dd>suspended task -- preempts caller</TD> + <TD ALIGN=center>77</TD></TR> + <TR><TD ALIGN=left><dd>blocked task -- preempts caller</TD> + <TD ALIGN=center>84</TD></TR> + <TR><TD ALIGN=left><dd>ready task -- preempts caller</TD> + <TD ALIGN=center>75</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_DELETE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>calling task</TD> + <TD ALIGN=center>91</TD></TR> + <TR><TD ALIGN=left><dd>suspended task</TD> + <TD ALIGN=center>47</TD></TR> + <TR><TD ALIGN=left><dd>blocked task</TD> + <TD ALIGN=center>50</TD></TR> + <TR><TD ALIGN=left><dd>ready task</TD> + <TD ALIGN=center>51</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_SUSPEND</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>calling task</TD> + <TD ALIGN=center>56</TD></TR> + <TR><TD ALIGN=left><dd>returns to caller</TD> + <TD ALIGN=center>16</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_RESUME</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>17</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>52</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_SET_PRIORITY</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>obtain current priority</TD> + <TD ALIGN=center>10</TD></TR> + <TR><TD ALIGN=left><dd>returns to caller</TD> + <TD ALIGN=center>25</TD></TR> + <TR><TD ALIGN=left><dd>preempts caller</TD> + <TD ALIGN=center>67</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_MODE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>obtain current mode</TD> + <TD ALIGN=center>5</TD></TR> + <TR><TD ALIGN=left><dd>no reschedule</TD> + <TD ALIGN=center>6</TD></TR> + <TR><TD ALIGN=left><dd>reschedule -- returns to caller</TD> + <TD ALIGN=center>9</TD></TR> + <TR><TD ALIGN=left><dd>reschedule -- preempts caller</TD> + <TD ALIGN=center>42</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_GET_NOTE</STRONG></TD> + <TD ALIGN=center>10</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_SET_NOTE</STRONG></TD> + <TD ALIGN=center>10</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_WAKE_AFTER</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>yield -- returns to caller</TD> + <TD ALIGN=center>6</TD></TR> + <TR><TD ALIGN=left><dd>yield -- preempts caller</TD> + <TD ALIGN=center>49</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_WAKE_WHEN</STRONG></TD> + <TD ALIGN=center>75</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Interrupt Manager + +It should be noted that the interrupt entry times +include vectoring the interrupt handler. + +@ifset use-tex +@sp 1 +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsdirective{Interrupt Entry Overhead} +\rtemscase{returns to nested interrupt}{7} +\rtemscase{returns to interrupted task} + {8} +\rtemscase{returns to preempting task} + {8} +\rtemsdirective{Interrupt Exit Overhead} +\rtemscase{returns to nested interrupt}{5} +\rtemscase{returns to interrupted task} + {7} +\rtemscase{returns to preempting task} + {14} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item Interrupt Entry Overhead +@itemize - +@item returns to nested interrupt: 7 +@item returns to interrupted task: 8 +@item returns to preempting task: 8 +@end itemize + +@item Interrupt Exit Overhead +@itemize - +@item returns to nested interrupt: 5 +@item returns to interrupted task: 7 +@item returns to preempting task: 14 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left COLSPAN=2><STRONG>Interrupt Entry Overhead</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>returns to nested interrupt</TD> + <TD ALIGN=center>7</TD></TR> + <TR><TD ALIGN=left><dd>returns to interrupted task</TD> + <TD ALIGN=center>8</TD></TR> + <TR><TD ALIGN=left><dd>returns to preempting task</TD> + <TD ALIGN=center>8</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>Interrupt Exit Overhead</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>returns to nested interrupt</TD> + <TD ALIGN=center>5</TD></TR> + <TR><TD ALIGN=left><dd>returns to interrupted task</TD> + <TD ALIGN=center>7</TD></TR> + <TR><TD ALIGN=left><dd>returns to preempting task</TD> + <TD ALIGN=center>14</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + + +@section Clock Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{CLOCK\_SET}{33} +\rtemsonecase{CLOCK\_GET}{4} +\rtemsonecase{CLOCK\_TICK}{6} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item CLOCK_SET +@itemize - +@item only case: 33 +@end itemize + +@item CLOCK_GET +@itemize - +@item only case: 4 +@end itemize + +@item CLOCK_TICK +@itemize - +@item only case: 6 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>CLOCK_SET</STRONG></TD> + <TD ALIGN=center>33</TD></TR> +<TR><TD ALIGN=left><STRONG>CLOCK_GET</STRONG></TD> + <TD ALIGN=center>4</TD></TR> +<TR><TD ALIGN=left><STRONG>CLOCK_TICK</STRONG></TD> + <TD ALIGN=center>6</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Timer Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{TIMER\_CREATE}{11} +\rtemsonecase{TIMER\_IDENT}{159} +\rtemsdirective{TIMER\_DELETE} +\rtemscase{inactive}{15} +\rtemscase{active}{17} +\rtemsdirective{TIMER\_FIRE\_AFTER} +\rtemscase{inactive}{21} +\rtemscase{active}{23} +\rtemsdirective{TIMER\_FIRE\_WHEN} +\rtemscase{inactive}{34} +\rtemscase{active}{34} +\rtemsdirective{TIMER\_RESET} +\rtemscase{inactive}{20} +\rtemscase{active}{22} +\rtemsdirective{TIMER\_CANCEL} +\rtemscase{inactive}{10} +\rtemscase{active}{13} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item TIMER_CREATE +@itemize - +@item only case: 11 +@end itemize + +@item TIMER_IDENT +@itemize - +@item only case: 159 +@end itemize + +@item TIMER_DELETE +@itemize - +@item inactive: 15 +@item active: 17 +@end itemize + +@item TIMER_FIRE_AFTER +@itemize - +@item inactive: 21 +@item active: 23 +@end itemize + +@item TIMER_FIRE_WHEN +@itemize - +@item inactive: TIMER_FIRE_WHEN_INACTIVE +@item active: TIMER_FIRE_WHEN_ACTIVE +@end itemize + +@item TIMER_RESET +@itemize - +@item inactive: TIMER_RESET_INACTIVE +@item active: TIMER_RESET_ACTIVE +@end itemize + +@item TIMER_CANCEL +@itemize - +@item inactive: TIMER_CANCEL_INACTIVE +@item active: TIMER_CANCEL_ACTIVE +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>TIMER_CREATE</STRONG></TD> + <TD ALIGN=center>11</TD></TR> +<TR><TD ALIGN=left><STRONG>TIMER_IDENT</STRONG></TD> + <TD ALIGN=center>159</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_DELETE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>15</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>17</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_FIRE_AFTER</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>21</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>23</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_FIRE_WHEN</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>34</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>34</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_RESET</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>20</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>22</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_CANCEL</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>10</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>13</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Semaphore Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{SEMAPHORE\_CREATE}{19} +\rtemsonecase{SEMAPHORE\_IDENT}{171} +\rtemsonecase{SEMAPHORE\_DELETE}{19} +\rtemsdirective{SEMAPHORE\_OBTAIN} +\rtemscase{available}{12} +\rtemscase{not available -- NO\_WAIT} + {12} +\rtemscase{not available -- caller blocks} + {67} +\rtemsdirective{SEMAPHORE\_RELEASE} +\rtemscase{no waiting tasks}{14} +\rtemscase{task readied -- returns to caller} + {23} +\rtemscase{task readied -- preempts caller} + {57} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item SEMAPHORE_CREATE +@itemize - +@item only case: 19 +@end itemize + +@item SEMAPHORE_IDENT +@itemize - +@item only case: 171 +@end itemize + +@item SEMAPHORE_DELETE +@itemize - +@item only case: 19 +@end itemize + +@item SEMAPHORE_OBTAIN +@itemize - +@item available: 12 +@item not available -- NO_WAIT: 12 +@item not available -- caller blocks: 67 +@end itemize + +@item SEMAPHORE_RELEASE +@itemize - +@item no waiting tasks: 14 +@item task readied -- returns to caller: 23 +@item task readied -- preempts caller: 57 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>SEMAPHORE_CREATE</STRONG></TD> + <TD ALIGN=center>19</TD></TR> +<TR><TD ALIGN=left><STRONG>SEMAPHORE_IDENT</STRONG></TD> + <TD ALIGN=center>171</TD></TR> +<TR><TD ALIGN=left><STRONG>SEMAPHORE_DELETE</STRONG></TD> + <TD ALIGN=center>19</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>SEMAPHORE_OBTAIN</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>12</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center>12</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center>67</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>SEMAPHORE_RELEASE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>14</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>23</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>57</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Message Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{MESSAGE\_QUEUE\_CREATE}{114} +\rtemsonecase{MESSAGE\_QUEUE\_IDENT}{159} +\rtemsonecase{MESSAGE\_QUEUE\_DELETE}{25} +\rtemsdirective{MESSAGE\_QUEUE\_SEND} +\rtemscase{no waiting tasks} + {36} +\rtemscase{task readied -- returns to caller} + {38} +\rtemscase{task readied -- preempts caller} + {76} +\rtemsdirective{MESSAGE\_QUEUE\_URGENT} +\rtemscase{no waiting tasks}{36} +\rtemscase{task readied -- returns to caller} + {38} +\rtemscase{task readied -- preempts caller} + {76} +\rtemsdirective{MESSAGE\_QUEUE\_BROADCAST} +\rtemscase{no waiting tasks}{15} +\rtemscase{task readied -- returns to caller} + {42} +\rtemscase{task readied -- preempts caller} + {83} +\rtemsdirective{MESSAGE\_QUEUE\_RECEIVE} +\rtemscase{available}{30} +\rtemscase{not available -- NO\_WAIT} + {13} +\rtemscase{not available -- caller blocks} + {67} +\rtemsdirective{MESSAGE\_QUEUE\_FLUSH} +\rtemscase{no messages flushed}{9} +\rtemscase{messages flushed}{13} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item MESSAGE_QUEUE_CREATE +@itemize - +@item only case: 114 +@end itemize + +@item MESSAGE_QUEUE_IDENT +@itemize - +@item only case: 159 +@end itemize + +@item MESSAGE_QUEUE_DELETE +@itemize - +@item only case: 25 +@end itemize + +@item MESSAGE_QUEUE_SEND +@itemize - +@item no waiting tasks: 36 +@item task readied -- returns to caller: 38 +@item task readied -- preempts caller: 76 +@end itemize + +@item MESSAGE_QUEUE_URGENT +@itemize - +@item no waiting tasks: 36 +@item task readied -- returns to caller: 38 +@item task readied -- preempts caller: 76 +@end itemize + +@item MESSAGE_QUEUE_BROADCAST +@itemize - +@item no waiting tasks: 15 +@item task readied -- returns to caller: 42 +@item task readied -- preempts caller: 83 +@end itemize + +@item MESSAGE_QUEUE_RECEIVE +@itemize - +@item available: 30 +@item not available -- NO_WAIT: 13 +@item not available -- caller blocks: 67 +@end itemize + +@item MESSAGE_QUEUE_FLUSH +@itemize - +@item no messages flushed: 9 +@item messages flushed: 13 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_CREATE</STRONG></TD> + <TD ALIGN=center>114</TD></TR> +<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_IDENT</STRONG></TD> + <TD ALIGN=center>159</TD></TR> +<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_DELETE</STRONG></TD> + <TD ALIGN=center>25</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_SEND</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>36</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>38</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>76</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_URGENT</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>36</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>38</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>76</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_BROADCAST</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>15</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>42</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>83</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_RECEIVE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>30</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center>13</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center>67</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_FLUSH</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no messages flushed</TD> + <TD ALIGN=center>9</TD></TR> + <TR><TD ALIGN=left><dd>messages flushed</TD> + <TD ALIGN=center>13</TD></TR> + + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Event Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsdirective{EVENT\_SEND} +\rtemscase{no task readied}{9} +\rtemscase{task readied -- returns to caller} + {22} +\rtemscase{task readied -- preempts caller} + {58} +\rtemsdirective{EVENT\_RECEIVE} +\rtemscase{obtain current events}{1} +\rtemscase{available}{10} +\rtemscase{not available -- NO\_WAIT}{9} +\rtemscase{not available -- caller blocks} + {60} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item EVENT_SEND +@itemize - +@item no task readied: 9 +@item task readied -- returns to caller: 22 +@item task readied -- preempts caller: 58 +@end itemize + +@item EVENT_RECEIVE +@itemize - +@item obtain current events: 1 +@item available: 10 +@item not available -- NO_WAIT: 9 +@item not available -- caller blocks: 60 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left COLSPAN=2><STRONG>EVENT_SEND</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>no task readied</TD> + <TD ALIGN=center>9</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>22</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>58</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>EVENT_RECEIVE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>obtain current events</TD> + <TD ALIGN=center>1</TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>10</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center>9</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center>60</TD></TR> + + </TABLE> +</CENTER> +@end html +@end ifset +@section Signal Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{SIGNAL\_CATCH}{6} +\rtemsdirective{SIGNAL\_SEND} +\rtemscase{returns to caller}{14} +\rtemscase{signal to self}{22} +\rtemsdirective{EXIT ASR OVERHEAD} +\rtemscase{returns to calling task} + {27} +\rtemscase{returns to preempting task} + {56} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet +@item SIGNAL_CATCH +@itemize - +@item only case: 6 +@end itemize + +@item SIGNAL_SEND +@itemize - +@item returns to caller: 14 +@item signal to self: 22 +@end itemize + +@item EXIT ASR OVERHEAD +@itemize - +@item returns to calling task: 27 +@item returns to preempting task: 56 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>SIGNAL_CATCH</STRONG></TD> + <TD ALIGN=center>6</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>SIGNAL_SEND</TD></TR> + <TR><TD ALIGN=left><dd>returns to caller</TD> + <TD ALIGN=center>14</TD></TR> + <TR><TD ALIGN=left><dd>signal to self</TD> + <TD ALIGN=center>22</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>EXIT ASR OVERHEAD</TD></TR> + <TR><TD ALIGN=left><dd>returns to calling task</TD> + <TD ALIGN=center> + 27</TD></TR> + <TR><TD ALIGN=left><dd>returns to preempting task</TD> + <TD ALIGN=center> + 56</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Partition Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{PARTITION\_CREATE}{34} +\rtemsonecase{PARTITION\_IDENT}{159} +\rtemsonecase{PARTITION\_DELETE}{14} +\rtemsdirective{PARTITION\_GET\_BUFFER} +\rtemscase{available}{12} +\rtemscase{not available}{10} +\rtemsonecase{PARTITION\_RETURN\_BUFFER} + {10} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item PARTITION_CREATE +@itemize - +@item only case: 34 +@end itemize + +@item PARTITION_IDENT +@itemize - +@item only case: 159 +@end itemize + +@item PARTITION_DELETE +@itemize - +@item only case: 14 +@end itemize + +@item PARTITION_GET_BUFFER +@itemize - +@item available: 12 +@item not available: 10 +@end itemize + +@item PARTITION_RETURN_BUFFER +@itemize - +@item only case: 16 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>PARTITION_CREATE</STRONG></TD> + <TD ALIGN=center>34</TD></TR> +<TR><TD ALIGN=left><STRONG>PARTITION_IDENT</STRONG></TD> + <TD ALIGN=center>159</TD></TR> +<TR><TD ALIGN=left><STRONG>PARTITION_DELETE</STRONG></TD> + <TD ALIGN=center>14</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>PARTITION_GET_BUFFER</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>12</TD></TR> + <TR><TD ALIGN=left><dd>not available</TD> + <TD ALIGN=center>10</TD></TR> + <TR><TD ALIGN=left><STRONG>PARTITION_RETURN_BUFFER</STRONG></TD> + <TD ALIGN=center>10</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@page +@section Region Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{REGION\_CREATE}{22} +\rtemsonecase{REGION\_IDENT}{162} +\rtemsonecase{REGION\_DELETE}{14} +\rtemsdirective{REGION\_GET\_SEGMENT} +\rtemscase{available}{19} +\rtemscase{not available -- NO\_WAIT} + {19} +\rtemscase{not available -- caller blocks} + {67} +\rtemsdirective{REGION\_RETURN\_SEGMENT} +\rtemscase{no waiting tasks}{17} +\rtemscase{task readied -- returns to caller} + {44} +\rtemscase{task readied -- preempts caller} + {77} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item REGION_CREATE +@itemize - +@item only case: 22 +@end itemize + +@item REGION_IDENT +@itemize - +@item only case: 162 +@end itemize + +@item REGION_DELETE +@itemize - +@item only case: 14 +@end itemize + +@item REGION_GET_SEGMENT +@itemize - +@item available: 19 +@item not available -- NO_WAIT: 19 +@item not available -- caller blocks: 67 +@end itemize + +@item REGION_RETURN_SEGMENT +@itemize - +@item no waiting tasks: 17 +@item task readied -- returns to caller: 44 +@item task readied -- preempts caller: 77 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>REGION_CREATE</STRONG></TD> + <TD ALIGN=center>22</TD></TR> +<TR><TD ALIGN=left><STRONG>REGION_IDENT</STRONG></TD> + <TD ALIGN=center>162</TD></TR> +<TR><TD ALIGN=left><STRONG>REGION_DELETE</STRONG></TD> + <TD ALIGN=center>14</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>REGION_GET_SEGMENT</TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>19</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center> + 19</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center> + 67</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>REGION_RETURN_SEGMENT</TD></TR> + <TR><TD ALIGN=left><dd>no waiting tasks</TD> + <TD ALIGN=center>17</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center> + 44</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center> + 77</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Dual-Ported Memory Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{PORT\_CREATE}{14} +\rtemsonecase{PORT\_IDENT}{159} +\rtemsonecase{PORT\_DELETE}{13} +\rtemsonecase{PORT\_INTERNAL\_TO\_EXTERNAL} + {9} +\rtemsonecase{PORT\_EXTERNAL\_TO\_INTERNAL} + {9} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item PORT_CREATE +@itemize - +@item only case: 14 +@end itemize + +@item PORT_IDENT +@itemize - +@item only case: 159 +@end itemize + +@item PORT_DELETE +@itemize - +@item only case: 13 +@end itemize + +@item PORT_INTERNAL_TO_EXTERNAL +@itemize - +@item only case: 9 +@end itemize + +@item PORT_EXTERNAL_TO_INTERNAL +@itemize - +@item only case: 9 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>PORT_CREATE</STRONG></TD> + <TD ALIGN=center>14</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_IDENT</STRONG></TD> + <TD ALIGN=center>159</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_DELETE</STRONG></TD> + <TD ALIGN=center>13</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_INTERNAL_TO_EXTERNAL</STRONG></TD> + <TD ALIGN=center>9</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_EXTERNAL_TO_INTERNAL</STRONG></TD> + <TD ALIGN=center>9</TD></TR> + + </TABLE> +</CENTER> +@end html +@end ifset + +@section I/O Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{IO\_INITIALIZE}{2} +\rtemsonecase{IO\_OPEN}{1} +\rtemsonecase{IO\_CLOSE}{1} +\rtemsonecase{IO\_READ}{1} +\rtemsonecase{IO\_WRITE}{1} +\rtemsonecase{IO\_CONTROL}{1} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item IO_INITIALIZE +@itemize - +@item only case: 2 +@end itemize + +@item IO_OPEN +@itemize - +@item only case: 1 +@end itemize + +@item IO_CLOSE +@itemize - +@item only case: 1 +@end itemize + +@item IO_READ +@itemize - +@item only case: 1 +@end itemize + +@item IO_WRITE +@itemize - +@item only case: 1 +@end itemize + +@item IO_CONTROL +@itemize - +@item only case: 1 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>IO_INITIALIZE</STRONG></TD> + <TD ALIGN=center>2</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_OPEN</STRONG></TD> + <TD ALIGN=center>1</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_CLOSE</STRONG></TD> + <TD ALIGN=center>1</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_READ</STRONG></TD> + <TD ALIGN=center>1</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_WRITE</STRONG></TD> + <TD ALIGN=center>1</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_CONTROL</STRONG></TD> + <TD ALIGN=center>1</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Rate Monotonic Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{RATE\_MONOTONIC\_CREATE}{12} +\rtemsonecase{RATE\_MONOTONIC\_IDENT}{159} +\rtemsonecase{RATE\_MONOTONIC\_CANCEL}{14} +\rtemsdirective{RATE\_MONOTONIC\_DELETE} +\rtemscase{active}{19} +\rtemscase{inactive}{16} +\rtemsdirective{RATE\_MONOTONIC\_PERIOD} +\rtemscase{initiate period -- returns to caller} + {20} +\rtemscase{conclude period -- caller blocks} + {55} +\rtemscase{obtain status}{9} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item RATE_MONOTONIC_CREATE +@itemize - +@item only case: 12 +@end itemize + +@item RATE_MONOTONIC_IDENT +@itemize - +@item only case: 159 +@end itemize + +@item RATE_MONOTONIC_CANCEL +@itemize - +@item only case: 14 +@end itemize + +@item RATE_MONOTONIC_DELETE +@itemize - +@item active: 19 +@item inactive: 16 +@end itemize + +@item RATE_MONOTONIC_PERIOD +@itemize - +@item initiate period -- returns to caller: 20 +@item conclude period -- caller blocks: 55 +@item obtain status: 9 +@end itemize + +@end itemize +@end ifinfo +@end ifset + +@ifset use-html +@html +<CENTER> + <TABLE COLS=2 WIDTH="80%" BORDER=2> +<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_CREATE</STRONG></TD> + <TD ALIGN=center>12</TD></TR> +<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_IDENT</STRONG></TD> + <TD ALIGN=center>159</TD></TR> +<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_CANCEL</STRONG></TD> + <TD ALIGN=center>14</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>RATE_MONOTONIC_DELETE</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>19</TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>16</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>RATE_MONOTONIC_PERIOD</TD></TR> + <TR><TD ALIGN=left><dd>initiate period -- returns to caller</TD> + <TD ALIGN=center> + 20</TD></TR> + <TR><TD ALIGN=left><dd>conclude period -- caller blocks</TD> + <TD ALIGN=center> + 55</TD></TR> + <TR><TD ALIGN=left><dd>obtain status</TD> + <TD ALIGN=center>9</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@tex +\global\advance \smallskipamount by 4pt +@end tex + +@tex +\global\advance \smallskipamount by 4pt +@end tex diff --git a/doc/supplements/supplement.am b/doc/supplements/supplement.am new file mode 100644 index 0000000000..ff1e7a9c88 --- /dev/null +++ b/doc/supplements/supplement.am @@ -0,0 +1,11 @@ +## $Id$ + +## +## Makefile fragment common to all supplements/<cpu>/Makefile.ams +## + +REPLACE = $(PERL) $(top_srcdir)/tools/word-replace +REPLACE2 = $(PERL) $(top_srcdir)/tools/word-replace2 + +MAINTAINERCLEANFILES += $(GENERATED_FILES) +CLEANFILES += *.fixed diff --git a/doc/supplements/template/BSP_TIMES b/doc/supplements/template/BSP_TIMES index c80ed37148..10a86f288f 100644 --- a/doc/supplements/template/BSP_TIMES +++ b/doc/supplements/template/BSP_TIMES @@ -7,8 +7,8 @@ # # CPU Model Information # -RTEMS_BSP BSP_FOR_TIMES -RTEMS_CPU_MODEL BSP_CPU_MODEL +RTEMS_BSP MYBSP +RTEMS_CPU_MODEL MYCPU # # Interrupt Latency # diff --git a/doc/supplements/template/Makefile b/doc/supplements/template/Makefile deleted file mode 100644 index e5187e1038..0000000000 --- a/doc/supplements/template/Makefile +++ /dev/null @@ -1,159 +0,0 @@ -# -# COPYRIGHT (c) 1988-1999. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. -# -# $Id$ -# - -PROJECT=template - -include ../../Make.config - -REPLACE=../../tools/word-replace - -all: html info ps pdf - -dirs: - $(make-dirs) - -COMMON_FILES=../../common/cpright.texi ../../common/setup.texi - -GENERATED_FILES=\ - cpumodel.texi callconv.texi memmodel.texi intr.texi fatalerr.texi \ - bsp.texi cputable.texi wksheets.texi timing.texi timeBSP.texi - -FILES= $(PROJECT).texi preface.texi \ - $(COMMON_FILES) $(GENERATED_FILES) - -info: dirs c_$(PROJECT) - @echo NEED TO INSTALL THE INFO FILES - #cp c_$(PROJECT) c_$(PROJECT)-* $(INFO_INSTALL) - #cp c_$(PROJECT) c_$(PROJECT)-* $(INFO_INSTALL) - -c_$(PROJECT): $(FILES) - $(MAKEINFO) $(PROJECT).texi - -dvi: dirs $(PROJECT).dvi -ps: dirs $(PROJECT).ps -pdf: dirs $(PROJECT).pdf - -$(PROJECT).pdf: $(FILES) - $(TEXI2PDF) $(PROJECT).texi - cp $(PROJECT).pdf $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).ps: $(PROJECT).dvi - dvips -o $(PROJECT).ps $(PROJECT).dvi - cp $(PROJECT).ps $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).dvi: $(FILES) - $(TEXI2DVI) $(PROJECT).texi - cp $(PROJECT).dvi $(WWW_INSTALL)/$(PROJECT) - -html: dirs $(FILES) - -mkdir -p $(WWW_INSTALL)/$(PROJECT) - $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \ - $(PROJECT).texi - -clean: - rm -f *.o $(PROG) *.txt core $(PROJECT).pdf - rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f $(PROJECT) $(PROJECT)-* - rm -f c_$(PROJECT) c_$(PROJECT)-* - rm -f wksheets.t wksheets_NOTIMES.t - rm -f intr.t - rm -f timeBSP_.t timing.t - rm -f *.fixed _* $(GENERATED_FILES) - rm -f timeBSP_.t - -# -# Chapters which get automatic processing -# -cpumodel.texi: cpumodel.t Makefile - $(BMENU) -p "Preface" \ - -u "Top" \ - -n "Calling Conventions" ${*}.t - -callconv.texi: callconv.t Makefile - $(BMENU) -p "CPU Model Dependent Features Another Optional Feature" \ - -u "Top" \ - -n "Memory Model" ${*}.t - -memmodel.texi: memmodel.t Makefile - $(BMENU) -p "Calling Conventions User-Provided Routines" \ - -u "Top" \ - -n "Interrupt Processing" ${*}.t - -# Interrupt Chapter: -# 1. Replace Times and Sizes -# 2. Build Node Structure -intr.t: intr_NOTIMES.t BSP_TIMES - ${REPLACE} -p BSP_TIMES intr_NOTIMES.t - mv intr_NOTIMES.t.fixed intr.t - -intr.texi: intr.t Makefile - $(BMENU) -p "Memory Model Flat Memory Model" \ - -u "Top" \ - -n "Default Fatal Error Processing" ${*}.t - -fatalerr.texi: fatalerr.t Makefile - $(BMENU) -p "Interrupt Processing Interrupt Stack" \ - -u "Top" \ - -n "Board Support Packages" ${*}.t - -bsp.texi: bsp.t Makefile - $(BMENU) -p "Default Fatal Error Processing Default Fatal Error Handler Operations" \ - -u "Top" \ - -n "Processor Dependent Information Table" ${*}.t - -cputable.texi: cputable.t Makefile - $(BMENU) -p "Board Support Packages Processor Initialization" \ - -u "Top" \ - -n "Memory Requirements" ${*}.t - -# Worksheets Chapter: -# 1. Copy the Shared File -# 2. Replace Times and Sizes -# 3. Build Node Structure - -wksheets_NOTIMES.t: ../../common/wksheets.t - cp ../../common/wksheets.t wksheets_NOTIMES.t - -wksheets.t: wksheets_NOTIMES.t BSP_TIMES - ${REPLACE} -p BSP_TIMES wksheets_NOTIMES.t - mv wksheets_NOTIMES.t.fixed wksheets.t - -wksheets.texi: wksheets.t Makefile - $(BMENU) -p "Processor Dependent Information Table CPU Dependent Information Table" \ - -u "Top" \ - -n "Timing Specification" ${*}.t - -# Timing Specification Chapter: -# 1. Copy the Shared File -# 3. Build Node Structure - -timing.t: ../../common/timing.t - cp ../../common/timing.t timing.t - -timing.texi: timing.t Makefile - $(BMENU) -p "Memory Requirements RTEMS RAM Workspace Worksheet" \ - -u "Top" \ - -n "BSP_FOR_TIMES Timing Data" ${*}.t - -# Timing Data for BSP Chapter: -# 1. Copy the Shared File -# 2. Replace Times and Sizes -# 3. Build Node Structure - -timeBSP_.t: ../../common/timetbl.t timeBSP.t - cat timeBSP.t ../../common/timetbl.t >timeBSP_.t - @echo >>timeBSP_.t - @echo "@tex" >>timeBSP_.t - @echo "\\global\\advance \\smallskipamount by 4pt" >>timeBSP_.t - @echo "@end tex" >>timeBSP_.t - -timeBSP.texi: timeBSP_.t Makefile - $(BMENU) -p "Timing Specification Terminology" \ - -u "Top" \ - -n "Command and Variable Index" timeBSP_.t - mv timeBSP_.t timeBSP.texi diff --git a/doc/supplements/template/Makefile.am b/doc/supplements/template/Makefile.am new file mode 100644 index 0000000000..1d743aa2b7 --- /dev/null +++ b/doc/supplements/template/Makefile.am @@ -0,0 +1,115 @@ +# +# COPYRIGHT (c) 1988-1999. +# On-Line Applications Research Corporation (OAR). +# All rights reserved. +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign + +PROJECT=template + +include $(top_srcdir)/project.am +include $(top_srcdir)/supplements/supplement.am + +COMMON_FILES= $(top_srcdir)/common/cpright.texi $(top_builddir)/common/setup.texi + +GENERATED_FILES=\ + cpumodel.texi callconv.texi memmodel.texi intr.texi fatalerr.texi \ + bsp.texi cputable.texi wksheets.texi timing.texi timeBSP.texi + +FILES= preface.texi + +info_TEXINFOS = template.texi +template_TEXINFOS = $(FILES) $(COMMON_FILES) $(GENERATED_FILES) + +# +# Chapters which get automatic processing +# +cpumodel.texi: cpumodel.t + $(BMENU) -p "Preface" \ + -u "Top" \ + -n "Calling Conventions" $< + +callconv.texi: callconv.t + $(BMENU) -p "CPU Model Dependent Features Another Optional Feature" \ + -u "Top" \ + -n "Memory Model" $< + +memmodel.texi: memmodel.t + $(BMENU) -p "Calling Conventions User-Provided Routines" \ + -u "Top" \ + -n "Interrupt Processing" $< + +# Interrupt Chapter: +# 1. Replace Times and Sizes +# 2. Build Node Structure +intr.texi: intr_NOTIMES.t BSP_TIMES + ${REPLACE2} -p $(srcdir)/BSP_TIMES $(srcdir)/intr_NOTIMES.t intr.t + $(BMENU) -p "Memory Model Flat Memory Model" \ + -u "Top" \ + -n "Default Fatal Error Processing" intr.t +CLEANFILES += intr.t + +fatalerr.texi: fatalerr.t + $(BMENU) -p "Interrupt Processing Interrupt Stack" \ + -u "Top" \ + -n "Board Support Packages" $< + +bsp.texi: bsp.t + $(BMENU) -p "Default Fatal Error Processing Default Fatal Error Handler Operations" \ + -u "Top" \ + -n "Processor Dependent Information Table" $< + +cputable.texi: cputable.t + $(BMENU) -p "Board Support Packages Processor Initialization" \ + -u "Top" \ + -n "Memory Requirements" $< + +# Worksheets Chapter: +# 1. Obtain the Shared File +# 2. Replace Times and Sizes +# 3. Build Node Structure + +wksheets.texi: $(top_srcdir)/common/wksheets.t BSP_TIMES + ${REPLACE2} -p $(srcdir)/BSP_TIMES \ + $(top_srcdir)/common/wksheets.t wksheets.t + $(BMENU) -p "Processor Dependent Information Table CPU Dependent Information Table" \ + -u "Top" \ + -n "Timing Specification" wksheets.t +CLEANFILES += wksheets.t + +# Timing Specification Chapter: +# 1. Copy the Shared File +# 3. Build Node Structure + +timing.texi: $(top_srcdir)/common/timing.t + cp $(top_srcdir)/common/timing.t timing.t + $(BMENU) -p "Memory Requirements RTEMS RAM Workspace Worksheet" \ + -u "Top" \ + -n "MYBSP Timing Data" timing.t +CLEANFILES += timing.t + +# Timing Data for BSP BSP Chapter: +# 1. Copy the Shared File +# 2. Replace Times and Sizes +# 3. Build Node Structure + +timeBSP_.t: $(top_srcdir)/common/timetbl.t timeBSP.t + cat timeBSP.t $(top_srcdir)/common/timetbl.t >timeBSP_.t + @echo >>timeBSP_.t + @echo "@tex" >>timeBSP_.t + @echo "\\global\\advance \\smallskipamount by 4pt" >>timeBSP_.t + @echo "@end tex" >>timeBSP_.t + ${REPLACE} -p BSP_TIMES timeBSP_.t + mv timeBSP_.t.fixed timeBSP_.t +MAINTAINERCLEANFILES += timeBSP_.t + +timeBSP.texi: timeBSP_.t + $(BMENU) -p "Timing Specification Terminology" \ + -u "Top" \ + -n "Command and Variable Index" timeBSP_.t + mv timeBSP_.texi timeBSP.texi + +EXTRA_DIST = BSP_TIMES *.t diff --git a/doc/supplements/template/template.texi b/doc/supplements/template/template.texi index fae5f168ff..ce9e950f17 100644 --- a/doc/supplements/template/template.texi +++ b/doc/supplements/template/template.texi @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c %**start of header -@setfilename c_template +@setfilename template @syncodeindex vr fn @synindex ky cp @paragraphindent 0 @@ -76,7 +76,7 @@ END-INFO-DIR-ENTRY @include timeBSP.texi @ifinfo @node Top, Preface, (dir), (dir) -@top c_template +@top template This is the online version of the RTEMS Template Applications Supplement. @@ -92,7 +92,7 @@ Applications Supplement. * Processor Dependent Information Table:: * Memory Requirements:: * Timing Specification:: -* BSP_FOR_TIMES Timing Data:: +* MYBSP Timing Data:: * Command and Variable Index:: * Concept Index:: @end menu @@ -103,7 +103,7 @@ Applications Supplement. @c Need to copy the emacs stuff and "trailer stuff" (index, toc) into here @c -@node Command and Variable Index, Concept Index, BSP_FOR_TIMES Timing Data Context Switch, Top +@node Command and Variable Index, Concept Index, MYBSP Timing Data Rate Monotonic Manager, Top @unnumbered Command and Variable Index There are currently no Command and Variable Index entries. diff --git a/doc/supplements/template/timeBSP.t b/doc/supplements/template/timeBSP.t index f8cafd5f89..3787442e7d 100644 --- a/doc/supplements/template/timeBSP.t +++ b/doc/supplements/template/timeBSP.t @@ -11,7 +11,7 @@ \global\advance \smallskipamount by -4pt @end tex -@chapter BSP_FOR_TIMES Timing Data +@chapter MYBSP Timing Data @section Introduction @@ -27,7 +27,7 @@ times as they pertain to the XXX version of RTEMS. All times reported except for the maximum period interrupts are disabled by RTEMS were measured using a Motorola -BSP_FOR_TIMES CPU board. The BSP_FOR_TIMES is a 20Mhz board with one wait +MYBSP CPU board. The MYBSP is a 20Mhz board with one wait state dynamic memory and a XXX numeric coprocessor. The Zilog 8036 countdown timer on this board was used to measure elapsed time with a one-half microsecond resolution. All @@ -66,14 +66,14 @@ It should be noted again that the maximum period with interrupts disabled within RTEMS is hand-timed and based upon worst case (i.e. CPU cache disabled and no instruction overlap) times for a 20Mhz XXX. The interrupt vector and entry -overhead time was generated on an BSP_FOR_TIMES benchmark platform +overhead time was generated on an MYBSP benchmark platform using the Multiprocessing Communications registers to generate as the interrupt source. @section Context Switch The RTEMS processor context switch time is RTEMS_NO_FP_CONTEXTS -microseconds on the BSP_FOR_TIMES benchmark platform when no floating +microseconds on the MYBSP benchmark platform when no floating point context is saved or restored. Additional execution time is required when a TASK_SWITCH user extension is configured. The use of the TASK_SWITCH extension is application dependent. @@ -104,5 +104,5 @@ executing and the busy state when floating point instructions are executing. The state of the coprocessor is task specific. The following table summarizes the context switch -times for the BSP_FOR_TIMES benchmark platform: +times for the MYBSP benchmark platform: diff --git a/doc/texinfo/texinfo.tex b/doc/texinfo/texinfo.tex index 8fcde98a03..c49af9f4ed 100644 --- a/doc/texinfo/texinfo.tex +++ b/doc/texinfo/texinfo.tex @@ -1,77 +1,90 @@ -%% TeX macros to handle texinfo files - -% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 1994 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 2, 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 texinfo.tex file; see the file COPYING. If not, write -%to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, -%USA. - - -%In other words, you are welcome to use, share and improve this program. -%You are forbidden to forbid anyone else to use, share and improve -%what you give them. Help stamp out software-hoarding! - - -% Send bug reports to bug-texinfo@prep.ai.mit.edu. -% Please include a *precise* test case in each bug report. - - -% Make it possible to create a .fmt file just by loading this file: -% if the underlying format is not loaded, start by loading it now. -% Added by gildea November 1993. +% 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{1999-09-25.10} +% +% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99 +% 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 2, 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 texinfo.tex file; see the file COPYING. If not, write +% to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +% Boston, MA 02111-1307, USA. +% +% In other words, you are welcome to use, share and improve this program. +% You are forbidden to forbid anyone else to use, share and improve +% what you give them. Help stamp out software-hoarding! +% +% Please try the latest version of texinfo.tex before submitting bug +% reports; you can get the latest version from: +% ftp://ftp.gnu.org/gnu/texinfo.tex +% (and all GNU mirrors, see http://www.gnu.org/order/ftp.html) +% ftp://texinfo.org/tex/texinfo.tex +% ftp://us.ctan.org/macros/texinfo/texinfo.tex +% (and all CTAN mirrors, finger ctan@us.ctan.org for a list). +% /home/gd/gnu/doc/texinfo.tex on the GNU machines. +% The texinfo.tex in any given Texinfo distribution could well be out +% of date, so if that's what you're using, please check. +% Texinfo has a small home page at http://texinfo.org/. +% +% 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, to process the dvi file; this makes foo.ps. +% The extra runs of TeX 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. You can get +% the existing language-specific files from ftp://ftp.gnu.org/gnu/texinfo/. -% This automatically updates the version number based on RCS. -\def\deftexinfoversion$#1: #2 ${\def\texinfoversion{#2}} -\deftexinfoversion$Revision$ -\message{Loading texinfo package [Version \texinfoversion]:} +\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]}\message{} +\everyjob{\message{[Texinfo version \texinfoversion]}% \catcode`+=\active \catcode`\_=\active} % Save some parts of plain tex whose names we will redefine. - -\let\ptextilde=\~ -\let\ptexlbrace=\{ -\let\ptexrbrace=\} -\let\ptexdots=\dots -\let\ptexdot=\. -\let\ptexstar=\* -\let\ptexend=\end -\let\ptexbullet=\bullet \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\ptexi=\i +\let\ptexlbrace=\{ +\let\ptexrbrace=\} +\let\ptexstar=\* \let\ptext=\t -\let\ptexl=\l -\let\ptexL=\L -% 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\ } -} -\let\~ = \tie % And make it available as @~. +% We never want plain's outer \+ definition in Texinfo. +% For @tex, we can use \tabalign. +\let\+ = \relax \message{Basics,} \chardef\other=12 @@ -80,18 +93,47 @@ % starts a new line in the output. \newlinechar = `^^J -% Set up fixed words for English. -\ifx\putwordChapter\undefined{\gdef\putwordChapter{Chapter}}\fi% -\def\putwordInfo{Info}% -\ifx\putwordSee\undefined{\gdef\putwordSee{See}}\fi% -\ifx\putwordsee\undefined{\gdef\putwordsee{see}}\fi% -\ifx\putwordfile\undefined{\gdef\putwordfile{file}}\fi% -\ifx\putwordpage\undefined{\gdef\putwordpage{page}}\fi% -\ifx\putwordsection\undefined{\gdef\putwordsection{section}}\fi% -\ifx\putwordSection\undefined{\gdef\putwordSection{Section}}\fi% -\ifx\putwordTableofContents\undefined{\gdef\putwordTableofContents{Table of Contents}}\fi% -\ifx\putwordShortContents\undefined{\gdef\putwordShortContents{Short Contents}}\fi% -\ifx\putwordAppendix\undefined{\gdef\putwordAppendix{Appendix}}\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\putwordDeftypevar\undefined\gdef\putwordDeftypevar{Variable}\fi +\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi +\ifx\putwordDeftypefun\undefined\gdef\putwordDeftypefun{Function}\fi % Ignore a token. % @@ -100,89 +142,130 @@ \hyphenation{ap-pen-dix} \hyphenation{mini-buf-fer mini-buf-fers} \hyphenation{eshell} +\hyphenation{white-space} % Margin to add to right of even pages, to left of odd pages. -\newdimen \bindingoffset \bindingoffset=0pt -\newdimen \normaloffset \normaloffset=\hoffset +\newdimen \bindingoffset +\newdimen \normaloffset \newdimen\pagewidth \newdimen\pageheight -\pagewidth=\hsize \pageheight=\vsize % 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. % \def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% +\ifx\eTeXversion\undefined \def\loggingall{\tracingcommands2 \tracingstats2 \tracingpages1 \tracingoutput1 \tracinglostchars1 \tracingmacros2 \tracingparagraphs1 \tracingrestores1 \showboxbreadth\maxdimen\showboxdepth\maxdimen }% +\else +\def\loggingall{\tracingcommands3 \tracingstats2 + \tracingpages1 \tracingoutput1 \tracinglostchars1 + \tracingmacros2 \tracingparagraphs1 \tracingrestores1 + \tracingscantokens1 \tracingassigns1 \tracingifs1 + \tracinggroups1 \tracingnesting2 + \showboxbreadth\maxdimen\showboxdepth\maxdimen +}% +\fi -%---------------------Begin change----------------------- +% For @cropmarks command. +% Do @cropmarks to get crop marks. % -%%%% For @cropmarks command. -% Dimensions to add cropmarks at corners Added by P. A. MacKay, 12 Nov. 1986 +\newif\ifcropmarks +\let\cropmarks = \cropmarkstrue % -\newdimen\cornerlong \newdimen\cornerthick -\newdimen \topandbottommargin -\newdimen \outerhsize \newdimen \outervsize -\cornerlong=1pc\cornerthick=.3pt % These set size of cropmarks -\outerhsize=7in -%\outervsize=9.5in -% Alternative @smallbook page size is 9.25in -\outervsize=9.25in -\topandbottommargin=.75in +% Dimensions to add cropmarks at corners. +% Added by P. A. MacKay, 12 Nov. 1986 % -%---------------------End change----------------------- +\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines +\newdimen\cornerlong \cornerlong=1pc +\newdimen\cornerthick \cornerthick=.3pt +\newdimen\topandbottommargin \topandbottommargin=.75in + +% 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 itself, but you have to call it yourself. -\chardef\PAGE=255 \output={\onepageout{\pagecontents\PAGE}} -\def\onepageout#1{\hoffset=\normaloffset -\ifodd\pageno \advance\hoffset by \bindingoffset -\else \advance\hoffset by -\bindingoffset\fi -{\escapechar=`\\\relax % makes sure backslash is used in output files. -\shipout\vbox{{\let\hsize=\pagewidth \makeheadline} \pagebody{#1}% -{\let\hsize=\pagewidth \makefootline}}}% -\advancepageno \ifnum\outputpenalty>-20000 \else\dosupereject\fi} - -%%%% For @cropmarks command %%%% - -% Here is a modification of the main output routine for Near East Publications -% This provides right-angle cropmarks at all four corners. -% The contents of the page are centerlined into the cropmarks, -% and any desired binding offset is added as an \hskip on either -% site of the centerlined box. (P. A. MacKay, 12 November, 1986) -% -\def\croppageout#1{\hoffset=0pt % make sure this doesn't mess things up -{\escapechar=`\\\relax % makes sure backslash is used in output files. - \shipout - \vbox to \outervsize{\hsize=\outerhsize - \vbox{\line{\ewtop\hfill\ewtop}} - \nointerlineskip - \line{\vbox{\moveleft\cornerthick\nstop} - \hfill - \vbox{\moveright\cornerthick\nstop}} - \vskip \topandbottommargin - \centerline{\ifodd\pageno\hskip\bindingoffset\fi - \vbox{ - {\let\hsize=\pagewidth \makeheadline} - \pagebody{#1} - {\let\hsize=\pagewidth \makefootline}} - \ifodd\pageno\else\hskip\bindingoffset\fi} - \vskip \topandbottommargin plus1fill minus1fill - \boxmaxdepth\cornerthick - \line{\vbox{\moveleft\cornerthick\nsbot} - \hfill - \vbox{\moveright\cornerthick\nsbot}} - \nointerlineskip - \vbox{\line{\ewbot\hfill\ewbot}} - }} +% 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). + \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}% + \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. + % + \escapechar = `\\ % use backslash in output files. + \indexdummies % don't expand commands in the output. + \normalturnoffactive % \ in index entries must not stay \, e.g., if + % the page break happens to be in the middle of an example. + \shipout\vbox{% + \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 \oddfootingxxx.) + % The \baselineskip=24pt in plain's \makefootline has no effect. + \vskip 2\baselineskip + \unvbox\footlinebox + \fi + % + \ifpdfmakepagedest \pdfmkdest{\the\pageno} \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 \turnoffactive \advancepageno - \ifnum\outputpenalty>-20000 \else\dosupereject\fi} -% -% Do @cropmarks to get crop marks -\def\cropmarks{\let\onepageout=\croppageout } + \ifnum\outputpenalty>-20000 \else\dosupereject\fi +} \newinsert\margin \dimen\margin=\maxdimen @@ -197,7 +280,6 @@ \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) @@ -292,11 +374,11 @@ %% Call \inENV within environments (after a \begingroup) \newif\ifENV \ENVfalse \def\inENV{\ifENV\relax\else\ENVtrue\fi} \def\ENVcheck{% -\ifENV\errmessage{Still within an environment. Type Return to continue.} +\ifENV\errmessage{Still within an environment; press RETURN to continue} \endgroup\fi} % This is not perfect, but it should reduce lossage % @begin foo is the same as @foo, for now. -\newhelp\EMsimple{Type <Return> to continue.} +\newhelp\EMsimple{Press RETURN to continue.} \outer\def\begin{\parsearg\beginxxx} @@ -355,7 +437,7 @@ % @@ prints an @ % Kludge this until the fonts are right (grr). -\def\@{{\tt \char '100}} +\def\@{{\tt\char64}} % This is turned off because it was never documented % and you can use @w{...} around a quote to suppress ligatures. @@ -365,11 +447,55 @@ %\def\'{{'}} % Used to generate quoted braces. - -\def\mylbrace {{\tt \char '173}} -\def\myrbrace {{\tt \char '175}} +\def\mylbrace {{\tt\char123}} +\def\myrbrace {{\tt\char125}} \let\{=\mylbrace \let\}=\myrbrace +\begingroup + % Definitions to produce actual \{ & \} command in an index. + \catcode`\{ = 12 \catcode`\} = 12 + \catcode`\[ = 1 \catcode`\] = 2 + \catcode`\@ = 0 \catcode`\\ = 12 + @gdef@lbracecmd[\{]% + @gdef@rbracecmd[\}]% +@endgroup + +% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent +% Others are defined by plain TeX: @` @' @" @^ @~ @= @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 +% Plain TeX defines: @AA @AE @O @OE @L (and lowercase versions) @ss. +\def\questiondown{?`} +\def\exclamdown{!`} + +% Dotless i and dotless j, used for accents. +\def\imacro{i} +\def\jmacro{j} +\def\dotless#1{% + \def\temp{#1}% + \ifx\temp\imacro \ptexi + \else\ifx\temp\jmacro \j + \else \errmessage{@dotless can be used only with i or j}% + \fi\fi +} + +% 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 } @@ -380,14 +506,11 @@ % @. is an end-of-sentence period. \def\.{.\spacefactor=3000 } -% @enddots{} is an end-of-sentence ellipsis. -\gdef\enddots{$\mathinner{\ldotp\ldotp\ldotp\ldotp}$\spacefactor=3000} - % @! is an end-of-sentence bang. -\gdef\!{!\spacefactor=3000 } +\def\!{!\spacefactor=3000 } % @? is an end-of-sentence query. -\gdef\?{?\spacefactor=3000 } +\def\?{?\spacefactor=3000 } % @w prevents a word break. Without the \leavevmode, @w at the % beginning of a paragraph, when TeX is still in vertical mode, would @@ -471,53 +594,81 @@ where each line of input produces a line of output.} %% 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\penalty 10000 +%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak %\prevdepth=-1000pt %}} \def\needx#1{% - % Go into vertical mode, so we don't make a big box in the middle of a + % Ensure vertical mode, so we don't make a big box in the middle of a % paragraph. \par % - % Don't add any leading before our big empty box, but allow a page - % break, since the best break might be right here. - \allowbreak - \nointerlineskip - \vtop to #1\mil{\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 + % 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 \let\br = \par -% @dots{} output some dots +% @dots{} output an ellipsis using the current font. +% We do .5em per period so that it has the same spacing in a typewriter +% font as three actual period characters. +% +\def\dots{% + \leavevmode + \hbox to 1.5em{% + \hskip 0pt plus 0.25fil minus 0.25fil + .\hss.\hss.% + \hskip 0pt plus 0.5fil minus 0.5fil + }% +} + +% @enddots{} is an end-of-sentence ellipsis. +% +\def\enddots{% + \leavevmode + \hbox to 2em{% + \hskip 0pt plus 0.25fil minus 0.25fil + .\hss.\hss.\hss.% + \hskip 0pt plus 0.5fil minus 0.5fil + }% + \spacefactor=3000 +} -\def\dots{$\ldots$} % @page forces the start of a new page - +% \def\page{\par\vfill\supereject} % @exdent text.... @@ -536,17 +687,34 @@ where each line of input produces a line of output.} \def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount \leftline{\hskip\leftskip{\rm#1}}}} +% @inmargin{TEXT} puts TEXT in the margin next to the current paragraph. + +\def\inmargin#1{% +\strut\vadjust{\nobreak\kern-\strutdepth + \vtop to \strutdepth{\baselineskip\strutdepth\vss + \llap{\rightskip=\inmarginspacing \vbox{\noindent #1}}\null}}} +\newskip\inmarginspacing \inmarginspacing=1cm +\def\strutdepth{\dp\strutbox} + %\hbox{{\rm#1}}\hfil\break}} % @include file insert text of that file as input. - -\def\include{\parsearg\includezzz} -%Use \input\thisfile to avoid blank after \input, which may be an active -%char (in which case the blank would become the \input argument). -%The grouping keeps the value of \thisfile correct even when @include -%is nested. -\def\includezzz #1{\begingroup -\def\thisfile{#1}\input\thisfile +% Allow normal characters that we make active in the argument (a file name). +\def\include{\begingroup + \catcode`\\=12 + \catcode`~=12 + \catcode`^=12 + \catcode`_=12 + \catcode`|=12 + \catcode`<=12 + \catcode`>=12 + \catcode`+=12 + \parsearg\includezzz} +% Restore active chars for included file. +\def\includezzz#1{\endgroup\begingroup + % Read the included file in a group so nested @include's work. + \def\thisfile{#1}% + \input\thisfile \endgroup} \def\thisfile{} @@ -561,295 +729,56 @@ where each line of input produces a line of output.} % @sp n outputs n lines of vertical space \def\sp{\parsearg\spxxx} -\def\spxxx #1{\par \vskip #1\baselineskip} +\def\spxxx #1{\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{\catcode 64=\other \catcode 123=\other \catcode 125=\other% -\parsearg \commentxxx} - -\def\commentxxx #1{\catcode 64=0 \catcode 123=1 \catcode 125=2 } +\def\comment{\begingroup \catcode`\^^M=\other% +\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% +\commentxxx} +{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}} \let\c=\comment -% Prevent errors for section commands. -% Used in @ignore and in failing conditionals. -\def\ignoresections{% -\let\chapter=\relax -\let\unnumbered=\relax -\let\top=\relax -\let\unnumberedsec=\relax -\let\unnumberedsection=\relax -\let\unnumberedsubsec=\relax -\let\unnumberedsubsection=\relax -\let\unnumberedsubsubsec=\relax -\let\unnumberedsubsubsection=\relax -\let\section=\relax -\let\subsec=\relax -\let\subsubsec=\relax -\let\subsection=\relax -\let\subsubsection=\relax -\let\appendix=\relax -\let\appendixsec=\relax -\let\appendixsection=\relax -\let\appendixsubsec=\relax -\let\appendixsubsection=\relax -\let\appendixsubsubsec=\relax -\let\appendixsubsubsection=\relax -\let\contents=\relax -\let\smallbook=\relax -\let\titlepage=\relax -} - -% Used in nested conditionals, where we have to parse the Texinfo source -% and so want to turn off most commands, in case they are used -% incorrectly. -% -\def\ignoremorecommands{% - \let\defcv = \relax - \let\deffn = \relax - \let\deffnx = \relax - \let\defindex = \relax - \let\defivar = \relax - \let\defmac = \relax - \let\defmethod = \relax - \let\defop = \relax - \let\defopt = \relax - \let\defspec = \relax - \let\deftp = \relax - \let\deftypefn = \relax - \let\deftypefun = \relax - \let\deftypevar = \relax - \let\deftypevr = \relax - \let\defun = \relax - \let\defvar = \relax - \let\defvr = \relax - \let\ref = \relax - \let\xref = \relax - \let\printindex = \relax - \let\pxref = \relax - \let\settitle = \relax - \let\include = \relax - \let\lowersections = \relax - \let\down = \relax - \let\raisesections = \relax - \let\up = \relax - \let\set = \relax - \let\clear = \relax - \let\item = \relax - \let\message = \relax -} - -% Ignore @ignore ... @end ignore. -% -\def\ignore{\doignore{ignore}} - -% Also ignore @ifinfo, @ifhtml, @html, @menu, and @direntry text. -% -\def\ifinfo{\doignore{ifinfo}} -\def\ifhtml{\doignore{ifhtml}} -\def\html{\doignore{html}} -\def\menu{\doignore{menu}} -\def\direntry{\doignore{direntry}} - -% Ignore text until a line `@end #1'. -% -\def\doignore#1{\begingroup - % Don't complain about control sequences we have declared \outer. - \ignoresections - % - % Define a command to swallow text until we reach `@end #1'. - \long\def\doignoretext##1\end #1{\enddoignore}% - % - % Make sure that spaces turn into tokens that match what \doignoretext wants. - \catcode32 = 10 - % - % And now expand that command. - \doignoretext -} - -% What we do to finish off ignored text. -% -\def\enddoignore{\endgroup\ignorespaces}% - -\newif\ifwarnedobs\warnedobsfalse -\def\obstexwarn{% - \ifwarnedobs\relax\else - % We need to warn folks that they may have trouble with TeX 3.0. - % This uses \immediate\write16 rather than \message to get newlines. - \immediate\write16{} - \immediate\write16{***WARNING*** for users of Unix TeX 3.0!} - \immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).} - \immediate\write16{If you are running another version of TeX, relax.} - \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.} - \immediate\write16{ Then upgrade your TeX installation if you can.} - \immediate\write16{If you are stuck with version 3.0, run the} - \immediate\write16{ script ``tex3patch'' from the Texinfo distribution} - \immediate\write16{ to use a workaround.} - \immediate\write16{} - \warnedobstrue - \fi -} - -% **In TeX 3.0, setting text in \nullfont hangs tex. For a -% workaround (which requires the file ``dummy.tfm'' to be installed), -% uncomment the following line: -%%%%%\font\nullfont=dummy\let\obstexwarn=\relax - -% Ignore text, except that we keep track of conditional commands for -% purposes of nesting, up to an `@end #1' command. -% -\def\nestedignore#1{% - \obstexwarn - % We must actually expand the ignored text to look for the @end - % command, so that nested ignore constructs work. Thus, we put the - % text into a \vbox and then do nothing with the result. To minimize - % the change of memory overflow, we follow the approach outlined on - % page 401 of the TeXbook: make the current font be a dummy font. - % - \setbox0 = \vbox\bgroup - % Don't complain about control sequences we have declared \outer. - \ignoresections - % - % Define `@end #1' to end the box, which will in turn undefine the - % @end command again. - \expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}% - % - % We are going to be parsing Texinfo commands. Most cause no - % trouble when they are used incorrectly, but some commands do - % complicated argument parsing or otherwise get confused, so we - % undefine them. - % - % We can't do anything about stray @-signs, unfortunately; - % they'll produce `undefined control sequence' errors. - \ignoremorecommands - % - % Set the current font to be \nullfont, a TeX primitive, and define - % all the font commands to also use \nullfont. We don't use - % dummy.tfm, as suggested in the TeXbook, because not all sites - % might have that installed. Therefore, math mode will still - % produce output, but that should be an extremely small amount of - % stuff compared to the main input. - % - \nullfont - \let\tenrm = \nullfont \let\tenit = \nullfont \let\tensl = \nullfont - \let\tenbf = \nullfont \let\tentt = \nullfont \let\smallcaps = \nullfont - \let\tensf = \nullfont - % Similarly for index fonts (mostly for their use in - % smallexample) - \let\indrm = \nullfont \let\indit = \nullfont \let\indsl = \nullfont - \let\indbf = \nullfont \let\indtt = \nullfont \let\indsc = \nullfont - \let\indsf = \nullfont - % - % Don't complain when characters are missing from the fonts. - \tracinglostchars = 0 - % - % Don't bother to do space factor calculations. - \frenchspacing - % - % Don't report underfull hboxes. - \hbadness = 10000 - % - % Do minimal line-breaking. - \pretolerance = 10000 - % - % Do not execute instructions in @tex - \def\tex{\doignore{tex}} -} - -% @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. -% -\def\set{\parsearg\setxxx} -\def\setxxx#1{\setyyy#1 \endsetyyy} -\def\setyyy#1 #2\endsetyyy{% - \def\temp{#2}% - \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty - \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted. - \fi -} -% Can't use \xdef to pre-expand #2 and save some time, since \temp or -% \next or other control sequences that we've defined might get us into -% an infinite loop. Consider `@set foo @cite{bar}'. -\def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}} - -% @clear VAR clears (i.e., unsets) the variable VAR. -% -\def\clear{\parsearg\clearxxx} -\def\clearxxx#1{\global\expandafter\let\csname SET#1\endcsname=\relax} - -% @value{foo} gets the text saved in variable foo. -% -\def\value#1{\expandafter - \ifx\csname SET#1\endcsname\relax - {\{No value for ``#1''\}} - \else \csname SET#1\endcsname \fi} - -% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined -% with @set. +% @paragraphindent NCHARS +% We'll use ems for NCHARS, close enough. +% We cannot implement @paragraphindent asis, though. +% +\def\asisword{asis} % no translation, these are keywords +\def\noneword{none} % -\def\ifset{\parsearg\ifsetxxx} -\def\ifsetxxx #1{% - \expandafter\ifx\csname SET#1\endcsname\relax - \expandafter\ifsetfail +\def\paragraphindent{\parsearg\doparagraphindent} +\def\doparagraphindent#1{% + \def\temp{#1}% + \ifx\temp\asisword \else - \expandafter\ifsetsucceed + \ifx\temp\noneword + \defaultparindent = 0pt + \else + \defaultparindent = #1em + \fi \fi + \parindent = \defaultparindent } -\def\ifsetsucceed{\conditionalsucceed{ifset}} -\def\ifsetfail{\nestedignore{ifset}} -\defineunmatchedend{ifset} -% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been -% defined with @set, or has been undefined with @clear. -% -\def\ifclear{\parsearg\ifclearxxx} -\def\ifclearxxx #1{% - \expandafter\ifx\csname SET#1\endcsname\relax - \expandafter\ifclearsucceed +% @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. +\def\exampleindent{\parsearg\doexampleindent} +\def\doexampleindent#1{% + \def\temp{#1}% + \ifx\temp\asisword \else - \expandafter\ifclearfail + \ifx\temp\noneword + \lispnarrowing = 0pt + \else + \lispnarrowing = #1em + \fi \fi } -\def\ifclearsucceed{\conditionalsucceed{ifclear}} -\def\ifclearfail{\nestedignore{ifclear}} -\defineunmatchedend{ifclear} - -% @iftex always succeeds; we read the text following, through @end -% iftex). But `@end iftex' should be valid only after an @iftex. -% -\def\iftex{\conditionalsucceed{iftex}} -\defineunmatchedend{iftex} - -% We can't just want to start a group at @iftex (for example) and end it -% at @end iftex, since then @set commands inside the conditional have no -% effect (they'd get reverted at the end of the group). So we must -% define \Eiftex to redefine itself to be its previous value. (We can't -% just define it to fail again with an ``unmatched end'' error, since -% the @ifset might be nested.) -% -\def\conditionalsucceed#1{% - \edef\temp{% - % Remember the current value of \E#1. - \let\nece{prevE#1} = \nece{E#1}% - % - % At the `@end #1', redefine \E#1 to be its previous value. - \def\nece{E#1}{\let\nece{E#1} = \nece{prevE#1}}% - }% - \temp -} - -% We need to expand lots of \csname's, but we don't want to expand the -% control sequences after we've constructed them. -% -\def\nece#1{\expandafter\noexpand\csname#1\endcsname} % @asis just yields its argument. Used with @table, for example. % @@ -872,60 +801,245 @@ where each line of input produces a line of output.} \def\bullet{\implicitmath\ptexbullet\implicitmath} \def\minus{\implicitmath-\implicitmath} -\def\node{\ENVcheck\parsearg\nodezzz} -\def\nodezzz#1{\nodexxx [#1,]} -\def\nodexxx[#1,#2]{\gdef\lastnode{#1}} -\let\nwnode=\node -\let\lastnode=\relax - -\def\donoderef{\ifx\lastnode\relax\else -\expandafter\expandafter\expandafter\setref{\lastnode}\fi -\global\let\lastnode=\relax} - -\def\unnumbnoderef{\ifx\lastnode\relax\else -\expandafter\expandafter\expandafter\unnumbsetref{\lastnode}\fi -\global\let\lastnode=\relax} - -\def\appendixnoderef{\ifx\lastnode\relax\else -\expandafter\expandafter\expandafter\appendixsetref{\lastnode}\fi -\global\let\lastnode=\relax} - +% @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{% - \readauxfile - \opencontents + \iflinks + \readauxfile + \fi % \openindices needs to do some work in any case. \openindices \fixbackslash % Turn off hack to swallow `\input texinfo'. \global\let\setfilename=\comment % Ignore extra @setfilename cmds. + % + % If texinfo.cnf is present on the system, read it. + % Useful for site-wide @afourpaper, etc. + % Just to be on the safe side, close the input stream before the \input. + \openin 1 texinfo.cnf + \ifeof1 \let\temp=\relax \else \def\temp{\input texinfo.cnf }\fi + \closein1 + \temp + % \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} -\def\inforef #1{\inforefzzz #1,,,,**} -\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, - node \samp{\ignorespaces#1{}}} -\message{fonts,} +\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 + +\ifx\pdfoutput\undefined + \pdffalse + \let\pdfmkdest = \gobble + \let\pdfurl = \gobble + \let\endlink = \relax + \let\linkcolor = \relax + \let\pdfmakeoutlines = \relax +\else + \pdftrue + \pdfoutput = 1 + \input pdfcolor + \def\dopdfimage#1#2#3{% + \def\imagewidth{#2}% + \def\imageheight{#3}% + \ifnum\pdftexversion < 14 + \pdfimage + \else + \pdfximage + \fi + \ifx\empty\imagewidth\else width \imagewidth \fi + \ifx\empty\imageheight\else height \imageheight \fi + {#1.pdf}% + \ifnum\pdftexversion < 14 \else + \pdfrefximage \pdflastximage + \fi} + \def\pdfmkdest#1{\pdfdest name{#1@} xyz} + \def\pdfmkpgn#1{#1@} + \let\linkcolor = \Cyan + \def\endlink{\Black\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 by1 + \expandafter\xdef\csname#1\endcsname{\the\tempnum}} + \def\pdfmakeoutlines{{% + \openin 1 \jobname.toc + \ifeof 1\else\bgroup + \closein 1 + \indexnofonts + \def\tt{} + % thanh's hack / proper braces in bookmarks + \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace + \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace + % + \def\chapentry ##1##2##3{} + \def\unnumbchapentry ##1##2{} + \def\secentry ##1##2##3##4{\advancenumber{chap##2}} + \def\unnumbsecentry ##1##2{} + \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}} + \def\unnumbsubsecentry ##1##2{} + \def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}} + \def\unnumbsubsubsecentry ##1##2{} + \input \jobname.toc + \def\chapentry ##1##2##3{% + \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}} + \def\unnumbchapentry ##1##2{% + \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} + \def\secentry ##1##2##3##4{% + \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}} + \def\unnumbsecentry ##1##2{% + \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} + \def\subsecentry ##1##2##3##4##5{% + \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}} + \def\unnumbsubsecentry ##1##2{% + \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} + \def\subsubsecentry ##1##2##3##4##5##6{% + \pdfoutline goto name{\pdfmkpgn{##6}}{##1}} + \def\unnumbsubsubsecentry ##1##2{% + \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} + \input \jobname.toc + \egroup\fi + }} + \def\makelinks #1,{% + \def\params{#1}\def\E{END}% + \ifx\params\E + \let\nextmakelinks=\relax + \else + \let\nextmakelinks=\makelinks + \ifnum\lnkcount>0,\fi + \picknum{#1}% + \startlink attr{/Border [0 0 0]} + goto name{\pdfmkpgn{\the\pgn}}% + \linkcolor #1% + \advance\lnkcount by 1% + \endlink + \fi + \nextmakelinks + } + \def\picknum#1{\expandafter\pn#1} + \def\pn#1{% + \def\p{#1}% + \ifx\p\lbrace + \let\nextpn=\ppn + \else + \let\nextpn=\ppnn + \def\first{#1} + \fi + \nextpn + } + \def\ppn#1{\pgn=#1\gobble} + \def\ppnn{\pgn=\first} + \def\pdfmklnk#1{\lnkcount=0\makelinks #1,END,} + \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} + \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 + \def\pdfurl#1{% + \begingroup + \normalturnoffactive\def\@{@}% + \leavevmode\Red + \startlink attr{/Border [0 0 0]}% + user{/Subtype /Link /A << /S /URI /URI (#1) >>}% + % #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| + \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{\mkpgn{#1}} + \linkcolor #1\endlink} + \def\mkpgn#1{#1@} + \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} +\fi % \ifx\pdfoutput + +\message{fonts,} % Font-change commands. -% Texinfo supports the sans serif font style, which plain TeX does not. +% Texinfo sort of supports the sans serif font style, which plain TeX does not. % So we set up a \sf analogous to plain's \rm, etc. \newfam\sffam \def\sf{\fam=\sffam \tensf} \let\li = \sf % Sometimes we call it \li, not \sf. -%% Try out Computer Modern fonts at \magstephalf -\let\mainmagstep=\magstephalf +% We don't need math for this one. +\def\ttsl{\tenttsl} + +% Use Computer Modern fonts at \magstephalf (11pt). +\newcount\mainmagstep +\mainmagstep=\magstephalf % Set the font macro #1 to the font named #2, adding on the % specified font prefix (normally `cm'). -\def\setfont#1#2{\font#1=\fontprefix#2} +% #3 is the font's design size, #4 is a scale factor +\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4} % Use cm as the default font prefix. % To specify the font prefix, you must define \fontprefix @@ -933,98 +1047,125 @@ where each line of input produces a line of output.} \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} \ifx\bigger\relax \let\mainmagstep=\magstep1 -\setfont\textrm{r12} -\setfont\texttt{tt12} +\setfont\textrm\rmshape{12}{1000} +\setfont\texttt\ttshape{12}{1000} \else -\setfont\textrm{r10 scaled \mainmagstep} -\setfont\texttt{tt10 scaled \mainmagstep} +\setfont\textrm\rmshape{10}{\mainmagstep} +\setfont\texttt\ttshape{10}{\mainmagstep} \fi % Instead of cmb10, you many want to use cmbx10. % cmbx10 is a prettier font on its own, but cmb10 % looks better when embedded in a line with cmr10. -\setfont\textbf{b10 scaled \mainmagstep} -\setfont\textit{ti10 scaled \mainmagstep} -\setfont\textsl{sl10 scaled \mainmagstep} -\setfont\textsf{ss10 scaled \mainmagstep} -\setfont\textsc{csc10 scaled \mainmagstep} +\setfont\textbf\bfshape{10}{\mainmagstep} +\setfont\textit\itshape{10}{\mainmagstep} +\setfont\textsl\slshape{10}{\mainmagstep} +\setfont\textsf\sfshape{10}{\mainmagstep} +\setfont\textsc\scshape{10}{\mainmagstep} +\setfont\textttsl\ttslshape{10}{\mainmagstep} \font\texti=cmmi10 scaled \mainmagstep \font\textsy=cmsy10 scaled \mainmagstep % A few fonts for @defun, etc. -\setfont\defbf{bx10 scaled \magstep1} %was 1314 -\setfont\deftt{tt10 scaled \magstep1} +\setfont\defbf\bxshape{10}{\magstep1} %was 1314 +\setfont\deftt\ttshape{10}{\magstep1} \def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf} -% Fonts for indices and small examples. -% We actually use the slanted font rather than the italic, -% because texinfo normally uses the slanted fonts for that. -% Do not make many font distinctions in general in the index, since they -% aren't very useful. -\setfont\ninett{tt9} -\setfont\indrm{r9} -\setfont\indit{sl9} -\let\indsl=\indit -\let\indtt=\ninett -\let\indsf=\indrm -\let\indbf=\indrm -\setfont\indsc{csc10 at 9pt} -\font\indi=cmmi9 -\font\indsy=cmsy9 - -% Fonts for headings -\setfont\chaprm{bx12 scaled \magstep2} -\setfont\chapit{ti12 scaled \magstep2} -\setfont\chapsl{sl12 scaled \magstep2} -\setfont\chaptt{tt12 scaled \magstep2} -\setfont\chapsf{ss12 scaled \magstep2} +% Fonts for indices, footnotes, small examples (9pt). +\setfont\smallrm\rmshape{9}{1000} +\setfont\smalltt\ttshape{9}{1000} +\setfont\smallbf\bfshape{10}{900} +\setfont\smallit\itshape{9}{1000} +\setfont\smallsl\slshape{9}{1000} +\setfont\smallsf\sfshape{9}{1000} +\setfont\smallsc\scshape{10}{900} +\setfont\smallttsl\ttslshape{10}{900} +\font\smalli=cmmi9 +\font\smallsy=cmsy9 + +% Fonts for title page: +\setfont\titlerm\rmbshape{12}{\magstep3} +\setfont\titleit\itbshape{10}{\magstep4} +\setfont\titlesl\slbshape{10}{\magstep4} +\setfont\titlett\ttbshape{12}{\magstep3} +\setfont\titlettsl\ttslshape{10}{\magstep4} +\setfont\titlesf\sfbshape{17}{\magstep1} +\let\titlebf=\titlerm +\setfont\titlesc\scbshape{10}{\magstep4} +\font\titlei=cmmi12 scaled \magstep3 +\font\titlesy=cmsy10 scaled \magstep4 +\def\authorrm{\secrm} + +% Chapter (and unnumbered) fonts (17.28pt). +\setfont\chaprm\rmbshape{12}{\magstep2} +\setfont\chapit\itbshape{10}{\magstep3} +\setfont\chapsl\slbshape{10}{\magstep3} +\setfont\chaptt\ttbshape{12}{\magstep2} +\setfont\chapttsl\ttslshape{10}{\magstep3} +\setfont\chapsf\sfbshape{17}{1000} \let\chapbf=\chaprm -\setfont\chapsc{csc10 scaled\magstep3} +\setfont\chapsc\scbshape{10}{\magstep3} \font\chapi=cmmi12 scaled \magstep2 \font\chapsy=cmsy10 scaled \magstep3 -\setfont\secrm{bx12 scaled \magstep1} -\setfont\secit{ti12 scaled \magstep1} -\setfont\secsl{sl12 scaled \magstep1} -\setfont\sectt{tt12 scaled \magstep1} -\setfont\secsf{ss12 scaled \magstep1} -\setfont\secbf{bx12 scaled \magstep1} -\setfont\secsc{csc10 scaled\magstep2} +% Section fonts (14.4pt). +\setfont\secrm\rmbshape{12}{\magstep1} +\setfont\secit\itbshape{10}{\magstep2} +\setfont\secsl\slbshape{10}{\magstep2} +\setfont\sectt\ttbshape{12}{\magstep1} +\setfont\secttsl\ttslshape{10}{\magstep2} +\setfont\secsf\sfbshape{12}{\magstep1} +\let\secbf\secrm +\setfont\secsc\scbshape{10}{\magstep2} \font\seci=cmmi12 scaled \magstep1 \font\secsy=cmsy10 scaled \magstep2 -% \setfont\ssecrm{bx10 scaled \magstep1} % This size an font looked bad. -% \setfont\ssecit{cmti10 scaled \magstep1} % The letters were too crowded. -% \setfont\ssecsl{sl10 scaled \magstep1} -% \setfont\ssectt{tt10 scaled \magstep1} -% \setfont\ssecsf{ss10 scaled \magstep1} +% \setfont\ssecrm\bxshape{10}{\magstep1} % This size an font looked bad. +% \setfont\ssecit\itshape{10}{\magstep1} % The letters were too crowded. +% \setfont\ssecsl\slshape{10}{\magstep1} +% \setfont\ssectt\ttshape{10}{\magstep1} +% \setfont\ssecsf\sfshape{10}{\magstep1} -%\setfont\ssecrm{b10 scaled 1315} % Note the use of cmb rather than cmbx. -%\setfont\ssecit{ti10 scaled 1315} % Also, the size is a little larger than -%\setfont\ssecsl{sl10 scaled 1315} % being scaled magstep1. -%\setfont\ssectt{tt10 scaled 1315} -%\setfont\ssecsf{ss10 scaled 1315} +%\setfont\ssecrm\bfshape{10}{1315} % Note the use of cmb rather than cmbx. +%\setfont\ssecit\itshape{10}{1315} % Also, the size is a little larger than +%\setfont\ssecsl\slshape{10}{1315} % being scaled magstep1. +%\setfont\ssectt\ttshape{10}{1315} +%\setfont\ssecsf\sfshape{10}{1315} %\let\ssecbf=\ssecrm -\setfont\ssecrm{bx12 scaled \magstephalf} -\setfont\ssecit{ti12 scaled \magstephalf} -\setfont\ssecsl{sl12 scaled \magstephalf} -\setfont\ssectt{tt12 scaled \magstephalf} -\setfont\ssecsf{ss12 scaled \magstephalf} -\setfont\ssecbf{bx12 scaled \magstephalf} -\setfont\ssecsc{csc10 scaled \magstep1} +% Subsection fonts (13.15pt). +\setfont\ssecrm\rmbshape{12}{\magstephalf} +\setfont\ssecit\itbshape{10}{1315} +\setfont\ssecsl\slbshape{10}{1315} +\setfont\ssectt\ttbshape{12}{\magstephalf} +\setfont\ssecttsl\ttslshape{10}{1315} +\setfont\ssecsf\sfbshape{12}{\magstephalf} +\let\ssecbf\ssecrm +\setfont\ssecsc\scbshape{10}{\magstep1} \font\sseci=cmmi12 scaled \magstephalf -\font\ssecsy=cmsy10 scaled \magstep1 +\font\ssecsy=cmsy10 scaled 1315 % The smallcaps and symbol fonts should actually be scaled \magstep1.5, % but that is not a standard magnification. -% Fonts for title page: -\setfont\titlerm{bx12 scaled \magstep3} -\let\authorrm = \secrm - % 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, we @@ -1041,46 +1182,59 @@ where each line of input produces a line of output.} % The font-changing commands redefine the meanings of \tenSTYLE, instead % of just \STYLE. We do this so that font changes will continue to work % in math mode, where it is the current \fam that is relevant in most -% cases, not the current. Plain TeX does, for example, -% \def\bf{\fam=\bffam \tenbf} By redefining \tenbf, we obviate the need -% to redefine \bf itself. +% cases, not the current font. Plain TeX does \def\bf{\fam=\bffam +% \tenbf}, for example. By redefining \tenbf, we obviate the need to +% redefine \bf itself. \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\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl \resetmathfonts} +\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 + \resetmathfonts \setleading{25pt}} +\def\titlefont#1{{\titlefonts\rm #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 - \resetmathfonts} + \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl + \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 - \resetmathfonts} + \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy \let\tenttsl=\secttsl + \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 - \resetmathfonts} -\def\indexfonts{% - \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl - \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc - \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy - \resetmathfonts} + \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy \let\tenttsl=\ssecttsl + \resetmathfonts \setleading{15pt}} +\let\subsubsecfonts = \subsecfonts % Maybe make sssec fonts scaled magstephalf? +\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 + \resetmathfonts \setleading{11pt}} % Set up the default fonts, so we can use them for creating boxes. % \textfonts +% 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{r12} -\setfont\shortcontbf{bx12} -\setfont\shortcontsl{sl12} +\setfont\shortcontrm\rmshape{12}{1000} +\setfont\shortcontbf\bxshape{12}{1000} +\setfont\shortcontsl\slshape{12}{1000} %% Add scribe-like font environments, plus @l for inline lisp (usually sans %% serif) and @ii for TeX italic @@ -1088,13 +1242,14 @@ where each line of input produces a line of output.} % \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\/\fi\fi\fi} -\def\smartitalic#1{{\sl #1}\futurelet\next\smartitalicx} +\def\smartslanted#1{{\sl #1}\futurelet\next\smartitalicx} +\def\smartitalic#1{{\it #1}\futurelet\next\smartitalicx} \let\i=\smartitalic -\let\var=\smartitalic -\let\dfn=\smartitalic +\let\var=\smartslanted +\let\dfn=\smartslanted \let\emph=\smartitalic -\let\cite=\smartitalic +\let\cite=\smartslanted \def\b#1{{\bf #1}} \let\strong=\b @@ -1111,11 +1266,22 @@ where each line of input produces a line of output.} \null } \let\ttfont=\t -\def\samp #1{`\tclose{#1}'\null} -\def\key #1{{\tt \nohyphenation \uppercase{#1}}\null} +\def\samp#1{`\tclose{#1}'\null} +\setfont\keyrm\rmshape{8}{1000} +\font\keysy=cmsy9 +\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% + \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% + \vbox{\hrule\kern-0.4pt + \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% + \kern-0.4pt\hrule}% + \kern-.06em\raise0.4pt\hbox{\angleright}}}} +% The old definition, with no lozenge: +%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null} \def\ctrl #1{{\tt \rawbackslash \hat}#1} +% @file, @option are the same as @samp. \let\file=\samp +\let\option=\samp % @code is a modification of @t, % which makes spaces the same size as normal in the surrounding text. @@ -1141,29 +1307,32 @@ where each line of input produces a line of output.} } % We *must* turn on hyphenation at `-' and `_' in \code. -% Otherwise, it is too hard to avoid overful hboxes +% 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 an a dash. +% and arrange explicitly to hyphenate at a dash. % -- rms. { -\catcode`\-=\active -\catcode`\_=\active -\global\def\code{\begingroup \catcode`\-=\active \let-\codedash \catcode`\_=\active \let_\codeunder \codex} -% The following is used by \doprintindex to insure that long function names -% wrap around. It is necessary for - and _ to be active before the index is -% read from the file, as \entry parses the arguments long before \code is -% ever called. -- mycroft -\global\def\indexbreaks{\catcode`\-=\active \let-\realdash \catcode`\_=\active \let_\realunder} + \catcode`\-=\active + \catcode`\_=\active + % + \global\def\code{\begingroup + \catcode`\-=\active \let-\codedash + \catcode`\_=\active \let_\codeunder + \codex + } + % + % If we end up with any active - characters when handling the index, + % just treat them as a normal -. + \global\def\indexbreaks{\catcode`\-=\active \let-\realdash} } \def\realdash{-} -\def\realunder{_} \def\codedash{-\discretionary{}{}{}} -\def\codeunder{\normalunderscore\discretionary{}{}{}} +\def\codeunder{\ifusingtt{\normalunderscore\discretionary{}{}{}}{\_}} \def\codex #1{\tclose{#1}\endgroup} %\let\exp=\tclose %Was temporary @@ -1171,26 +1340,114 @@ where each line of input produces a line of output.} % @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). +\def\kbdinputstyle{\parsearg\kbdinputstylexxx} +\def\kbdinputstylexxx#1{% + \def\arg{#1}% + \ifx\arg\worddistinct + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% + \else\ifx\arg\wordexample + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% + \else\ifx\arg\wordcode + \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% + \fi\fi\fi +} +\def\worddistinct{distinct} +\def\wordexample{example} +\def\wordcode{code} + +% Default is kbdinputdistinct. (Too much of a hassle to call the macro, +% the catcodes are wrong for parsearg to work.) +\gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl} + \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{\look}\fi -\else\tclose{\look}\fi} +\else{\tclose{\kbdfont\look}}\fi +\else{\tclose{\kbdfont\look}}\fi} + +% For @url, @env, @command quotes seem unnecessary, so use \code. +\let\url=\code +\let\env=\code +\let\command=\code + +% @uref (abbreviation for `urlref') takes an optional (comma-separated) +% second argument specifying the text to display and an optional third +% arg as text to display instead of (rather than in addition to) the url +% itself. First (mandatory) arg is the url. Perhaps eventually put in +% a hypertex \special here. +% +\def\uref#1{\douref #1,,,\finish} +\def\douref#1,#2,#3,#4\finish{\begingroup + \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} + +% 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. +% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. % \def\dmn#1{\thinspace #1} \def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par} -\def\l#1{{\li #1}\null} % +% @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 downcases the argument and prints in smallcaps. +\def\acronym#1{{\smallcaps \lowercase{#1}}} + +% @pounds{} is a sterling sign. +\def\pounds{{\it\$}} -\def\r#1{{\rm #1}} % roman font -% Use of \lowercase was suggested. -\def\sc#1{{\smallcaps#1}} % smallcaps font -\def\ii#1{{\it #1}} % italic font \message{page headings,} @@ -1198,20 +1455,23 @@ where each line of input produces a line of output.} \newskip\titlepagebottomglue \titlepagebottomglue = 2pc % First the title page. Must do @settitle before @titlepage. -\def\titlefont#1{{\titlerm #1}} - \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 + \def\shorttitlepage{\parsearg\shorttitlepagezzz} \def\shorttitlepagezzz #1{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}% - \endgroup\page\hbox{}\page} + \endgroup\page\hbox{}\page} \def\titlepage{\begingroup \parindent=0pt \textfonts \let\subtitlerm=\tenrm -% I deinstalled the following change because \cmr12 is undefined. -% This change was not in the ChangeLog anyway. --rms. -% \let\subtitlerm=\cmr12 \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}% % \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines}% @@ -1221,10 +1481,10 @@ where each line of input produces a line of output.} % % Now you can print the title using @title. \def\title{\parsearg\titlezzz}% - \def\titlezzz##1{\leftline{\titlefont{##1}} - % print a rule at the page bottom also. - \finishedtitlepagefalse - \vskip4pt \hrule height 4pt width \hsize \vskip4pt}% + \def\titlezzz##1{\leftline{\titlefonts\rm ##1} + % print a rule at the page bottom also. + \finishedtitlepagefalse + \vskip4pt \hrule height 4pt width \hsize \vskip4pt}% % No rule at page bottom unless we print one at the top with @title. \finishedtitlepagetrue % @@ -1242,7 +1502,7 @@ where each line of input produces a line of output.} \let\oldpage = \page \def\page{% \iffinishedtitlepage\else - \finishtitlepage + \finishtitlepage \fi \oldpage \let\page = \oldpage @@ -1260,6 +1520,23 @@ where each line of input produces a line of output.} % after the title page, which we certainly don't want. \oldpage \endgroup + % + % 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 + % + \ifpdf \pdfmakepagedesttrue \fi + % \HEADINGSon } @@ -1273,10 +1550,10 @@ where each line of input produces a line of output.} \let\thispage=\folio -\newtoks \evenheadline % Token sequence for heading line of even pages -\newtoks \oddheadline % Token sequence for heading line of odd pages -\newtoks \evenfootline % Token sequence for footing line of even pages -\newtoks \oddfootline % Token sequence for footing line of odd pages +\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 @@ -1310,10 +1587,7 @@ where each line of input produces a line of output.} \gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{% \global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} -\gdef\everyheadingxxx #1{\everyheadingyyy #1@|@|@|@|\finish} -\gdef\everyheadingyyy #1@|#2@|#3@|#4\finish{% -\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}} -\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} +\gdef\everyheadingxxx#1{\oddheadingxxx{#1}\evenheadingxxx{#1}}% \gdef\evenfootingxxx #1{\evenfootingyyy #1@|@|@|@|\finish} \gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{% @@ -1321,23 +1595,27 @@ where each line of input produces a line of output.} \gdef\oddfootingxxx #1{\oddfootingyyy #1@|@|@|@|\finish} \gdef\oddfootingyyy #1@|#2@|#3@|#4\finish{% -\global\oddfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + \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 -\baselineskip + \global\advance\vsize by -\baselineskip +} -\gdef\everyfootingxxx #1{\everyfootingyyy #1@|@|@|@|\finish} -\gdef\everyfootingyyy #1@|#2@|#3@|#4\finish{% -\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}} -\global\oddfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} +\gdef\everyfootingxxx#1{\oddfootingxxx{#1}\evenfootingxxx{#1}} % }% unbind the catcode of @. -% @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 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. +% By default, they are off at the start of a document, +% and turned `on' after @end titlepage. \def\headings #1 {\csname HEADINGS#1\endcsname} @@ -1351,22 +1629,24 @@ where each line of input produces a line of output.} % title on inside top of left hand pages, and page numbers on outside top % edge of all pages. \def\HEADINGSdouble{ -%\pagealignmacro \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{ -%\pagealignmacro \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} @@ -1377,6 +1657,7 @@ where each line of input produces a line of output.} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} \global\oddheadline={\line{\thischapter\hfil\folio}} +\global\let\contentsalignmacro = \chapoddpage } \def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} @@ -1385,42 +1666,28 @@ where each line of input produces a line of output.} \global\oddfootline={\hfil} \global\evenheadline={\line{\thischapter\hfil\folio}} \global\oddheadline={\line{\thischapter\hfil\folio}} +\global\let\contentsalignmacro = \chappager } % Subroutines used in generating headings % Produces Day Month Year style of output. -\def\today{\number\day\space -\ifcase\month\or -January\or February\or March\or April\or May\or June\or -July\or August\or September\or October\or November\or December\fi -\space\number\year} - -% Use this if you want the Month Day, Year style of output. -%\def\today{\ifcase\month\or -%January\or February\or March\or April\or May\or June\or -%July\or August\or September\or October\or November\or December\fi -%\space\number\day, \number\year} - -% @settitle line... specifies the title of the document, for headings -% It generates no output of its own - -\def\thistitle{No Title} +\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} + +% @settitle line... specifies the title of the document, for headings. +% It generates no output of its own. +\def\thistitle{\putwordNoTitle} \def\settitle{\parsearg\settitlezzz} \def\settitlezzz #1{\gdef\thistitle{#1}} -\message{tables,} - -% @tabs -- simple alignment - -% These don't work. For one thing, \+ is defined as outer. -% So these macros cannot even be defined. - -%\def\tabs{\parsearg\tabszzz} -%\def\tabszzz #1{\settabs\+#1\cr} -%\def\tabline{\parsearg\tablinezzz} -%\def\tablinezzz #1{\+#1\cr} -%\def\&{&} +\message{tables,} % Tables -- @table, @ftable, @vtable, @item(x), @kitem(x), @xitem(x). % default indentation of table text @@ -1440,7 +1707,7 @@ July\or August\or September\or October\or November\or December\fi \newif\ifitemxneedsnegativevskip -\def\itemxpar{\par\ifitemxneedsnegativevskip\vskip-\parskip\nobreak\fi} +\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} \def\internalBitem{\smallbreak \parsearg\itemzzz} \def\internalBitemx{\itemxpar \parsearg\itemzzz} @@ -1464,11 +1731,6 @@ July\or August\or September\or October\or November\or December\fi \itemindex{#1}% \nobreak % This prevents a break before @itemx. % - % Be sure we are not still in the middle of a paragraph. - %{\parskip = 0in - %\par - %}% - % % 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 @@ -1497,13 +1759,17 @@ July\or August\or September\or October\or November\or December\fi \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. Since that - % text will be indented by \tableindent, we make the item text be in - % a zero-width box. + % following text (if any) will end up on the same line. \noindent - \rlap{\hskip -\tableindent\box0}\ignorespaces% - \endgroup% - \itemxneedsnegativevskiptrue% + % 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 } @@ -1514,9 +1780,10 @@ July\or August\or September\or October\or November\or December\fi \def\xitem{\errmessage{@xitem while not in a table}} \def\xitemx{\errmessage{@xitemx while not in a table}} -%% Contains a kludge to get @end[description] to work +% Contains a kludge to get @end[description] to work. \def\description{\tablez{\dontindex}{1}{}{}{}{}} +% @table, @ftable, @vtable. \def\table{\begingroup\inENV\obeylines\obeyspaces\tablex} {\obeylines\obeyspaces% \gdef\tablex #1^^M{% @@ -1576,7 +1843,7 @@ July\or August\or September\or October\or November\or December\fi \def\itemize{\parsearg\itemizezzz} \def\itemizezzz #1{% - \begingroup % ended by the @end itemsize + \begingroup % ended by the @end itemize \itemizey {#1}{\Eitemize} } @@ -1704,17 +1971,17 @@ July\or August\or September\or October\or November\or December\fi \def\itemizeitem{% \advance\itemno by 1 {\let\par=\endgraf \smallbreak}% -\ifhmode \errmessage{\in hmode at itemizeitem}\fi +\ifhmode \errmessage{In hmode at itemizeitem}\fi {\parskip=0in \hskip 0pt \hbox to 0pt{\hss \itemcontents\hskip \itemmargin}% \vadjust{\penalty 1200}}% \flushcr} % @multitable macros -% Amy Hendrickson, 8/18/94 +% Amy Hendrickson, 8/18/94, 3/6/96 % -% @multitable ... @endmultitable will make as many columns as desired. -% Contents of each column will wrap at width given in preamble. Width +% @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. @@ -1722,146 +1989,577 @@ July\or August\or September\or October\or November\or December\fi % To make preamble: % -% Either define widths of columns in terms of percent of \hsize: -% @multitable @percentofhsize .2 .3 .5 +% Either define widths of columns in terms of percent of \hsize: +% @multitable @columnfractions .25 .3 .45 % @item ... % -% Numbers following @percentofhsize are the percent of the total +% 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. +% +% For those who want to use more than one line's worth of words in +% the preamble, break the line within one argument and it +% will parse correctly, i.e., +% +% @multitable {Column 1 template} {Column 2 template} {Column 3 +% template} +% Not: +% @multitable {Column 1 template} {Column 2 template} +% {Column 3 template} - -% Each new table line starts with @item, each subsequent new 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, @multicolumn or @endmulticolumn do not need to be on their +% @item, @tab, @multitable or @end multitable 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 +% @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. -% @endmultitable +% @end multitable % Default dimensions may be reset by user. -% @intableparskip will set vertical space between paragraphs in table. -% @intableparindent will set paragraph indent in table. -% @spacebetweencols will set horizontal space to be left between columns. -% @spacebetweenlines will set vertical space to be left between lines. - -%%%% -% Dimensions - -\newdimen\intableparskip -\newdimen\intableparindent -\newdimen\spacebetweencols -\newdimen\spacebetweenlines -\intableparskip=0pt -\intableparindent=6pt -\spacebetweencols=12pt -\spacebetweenlines=12pt - -%%%% +% @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\percentofhsize\relax -\def\xpercentofhsize{\percentofhsize} +\let\columnfractions\relax +\def\xcolumnfractions{\columnfractions} \newif\ifsetpercent +% #1 is the part of the @columnfraction before the decimal point, which +% is presumably either 0 or the empty string (but we don't check, we +% just throw it away). #2 is the decimal part, which we use as the +% percent of \hsize for this column. +\def\pickupwholefraction#1.#2 {% + \global\advance\colcount by 1 + \expandafter\xdef\csname col\the\colcount\endcsname{.#2\hsize}% + \setuptable +} + \newcount\colcount -\def\setuptable#1{\def\firstarg{#1}% -\ifx\firstarg\xendsetuptable\let\go\relax% -\else - \ifx\firstarg\xpercentofhsize\global\setpercenttrue% +\def\setuptable#1{% + \def\firstarg{#1}% + \ifx\firstarg\xendsetuptable + \let\go = \relax \else - \ifsetpercent - \if#1.\else% - \global\advance\colcount by1 % - \expandafter\xdef\csname col\the\colcount\endcsname{.#1\hsize}% - \fi + \ifx\firstarg\xcolumnfractions + \global\setpercenttrue \else - \global\advance\colcount by1 - \setbox0=\hbox{#1}% - \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% + \ifsetpercent + \let\go\pickupwholefraction + \else + \global\advance\colcount by 1 + \setbox0=\hbox{#1\unskip }% 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% - \let\go\setuptable% -\fi\go} -%%%% -% multitable syntax + \fi + \go +} + +% This used to have \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{&} -%%%% -% @multitable ... @endmultitable definitions: - -\def\multitable#1\item{\bgroup -\let\item\cr -\tolerance=9500 -\hbadness=9500 -\parskip=\intableparskip -\parindent=\intableparindent -\overfullrule=0pt -\global\colcount=0\relax% -\def\Emultitable{\global\setpercentfalse\global\everycr{}\cr\egroup\egroup}% - % To parse everything between @multitable and @item : -\def\one{#1}\expandafter\setuptable\one\endsetuptable - % Need to reset this to 0 after \setuptable. -\global\colcount=0\relax% - % - % 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\relax% -\vtop{\hsize=\expandafter\csname col\the\colcount\endcsname - % In order to keep entries from bumping into each other - % we will add a \leftskip of \spacebetweencols to all columns after - % the first one. - % If a template has been used, we will add \spacebetweencols - % to the width of each template entry. - % If 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. -\ifnum\colcount=1 +% @multitable ... @end multitable definitions: +% +\def\multitable{\parsearg\dotable} +\def\dotable#1{\bgroup + \vskip\parskip + \let\item\crcr + \tolerance=9500 + \hbadness=9500 + \setmultitablespacing + \parskip=\multitableparskip + \parindent=\multitableparindent + \overfullrule=0pt + \global\colcount=0 + \def\Emultitable{\global\setpercentfalse\cr\egroup\egroup}% + % + % To parse everything between @multitable and @item: + \setuptable#1 \endsetuptable + % + % \everycr will reset column counter, \colcount, at the end of + % each line. Every column entry will cause \colcount to advance by one. + % The table preamble + % looks at the current \colcount to find the correct column width. + \everycr{\noalign{% + % + % \filbreak%% keeps underfull box messages off when table breaks over pages. + % 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. + \global\colcount=0\relax}}% + % + % 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\relax + \multistrut\vtop{\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\setmultitablespacing{% test to see if user has set \multitablelinespace. +% If so, do nothing. If not, give it an appropriate dimension based on +% current baselineskip. +\ifdim\multitablelinespace=0pt +\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip +\global\advance\multitablelinespace by-\ht0 +%% strut to put in table in case some entry doesn't have descenders, +%% to keep lines equally spaced +\let\multistrut = \strut \else - \ifsetpercent +%% FIXME: what is \box0 supposed to be? +\gdef\multistrut{\vrule height\multitablelinespace depth\dp0 +width0pt\relax} \fi +%% Test to see if parskip is larger than space between lines of +%% table. If not, do nothing. +%% If so, set to same dimension as multitablelinespace. +\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,} +% Prevent errors for section commands. +% Used in @ignore and in failing conditionals. +\def\ignoresections{% + \let\chapter=\relax + \let\unnumbered=\relax + \let\top=\relax + \let\unnumberedsec=\relax + \let\unnumberedsection=\relax + \let\unnumberedsubsec=\relax + \let\unnumberedsubsection=\relax + \let\unnumberedsubsubsec=\relax + \let\unnumberedsubsubsection=\relax + \let\section=\relax + \let\subsec=\relax + \let\subsubsec=\relax + \let\subsection=\relax + \let\subsubsection=\relax + \let\appendix=\relax + \let\appendixsec=\relax + \let\appendixsection=\relax + \let\appendixsubsec=\relax + \let\appendixsubsection=\relax + \let\appendixsubsubsec=\relax + \let\appendixsubsubsection=\relax + \let\contents=\relax + \let\smallbook=\relax + \let\titlepage=\relax +} + +% Used in nested conditionals, where we have to parse the Texinfo source +% and so want to turn off most commands, in case they are used +% incorrectly. +% +\def\ignoremorecommands{% + \let\defcodeindex = \relax + \let\defcv = \relax + \let\deffn = \relax + \let\deffnx = \relax + \let\defindex = \relax + \let\defivar = \relax + \let\defmac = \relax + \let\defmethod = \relax + \let\defop = \relax + \let\defopt = \relax + \let\defspec = \relax + \let\deftp = \relax + \let\deftypefn = \relax + \let\deftypefun = \relax + \let\deftypeivar = \relax + \let\deftypeop = \relax + \let\deftypevar = \relax + \let\deftypevr = \relax + \let\defun = \relax + \let\defvar = \relax + \let\defvr = \relax + \let\ref = \relax + \let\xref = \relax + \let\printindex = \relax + \let\pxref = \relax + \let\settitle = \relax + \let\setchapternewpage = \relax + \let\setchapterstyle = \relax + \let\everyheading = \relax + \let\evenheading = \relax + \let\oddheading = \relax + \let\everyfooting = \relax + \let\evenfooting = \relax + \let\oddfooting = \relax + \let\headings = \relax + \let\include = \relax + \let\lowersections = \relax + \let\down = \relax + \let\raisesections = \relax + \let\up = \relax + \let\set = \relax + \let\clear = \relax + \let\item = \relax +} + +% Ignore @ignore ... @end ignore. +% +\def\ignore{\doignore{ignore}} + +% Ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu, and @direntry text. +% +\def\ifinfo{\doignore{ifinfo}} +\def\ifhtml{\doignore{ifhtml}} +\def\ifnottex{\doignore{ifnottex}} +\def\html{\doignore{html}} +\def\menu{\doignore{menu}} +\def\direntry{\doignore{direntry}} + +% @dircategory CATEGORY -- specify a category of the dir file +% which this file should belong to. Ignore this in TeX. +\let\dircategory = \comment + +% Ignore text until a line `@end #1'. +% +\def\doignore#1{\begingroup + % Don't complain about control sequences we have declared \outer. + \ignoresections + % + % Define a command to swallow text until we reach `@end #1'. + % This @ is a catcode 12 token (that is the normal catcode of @ in + % this texinfo.tex file). We change the catcode of @ below to match. + \long\def\doignoretext##1@end #1{\enddoignore}% + % + % Make sure that spaces turn into tokens that match what \doignoretext wants. + \catcode32 = 10 + % + % Ignore braces, too, so mismatched braces don't cause trouble. + \catcode`\{ = 9 + \catcode`\} = 9 + % + % We must not have @c interpreted as a control sequence. + \catcode`\@ = 12 + % + % Make the letter c a comment character so that the rest of the line + % will be ignored. This way, the document can have (for example) + % @c @end ifinfo + % and the @end ifinfo will be properly ignored. + % (We've just changed @ to catcode 12.) + \catcode`\c = 14 + % + % And now expand that command. + \doignoretext +} + +% What we do to finish off ignored text. +% +\def\enddoignore{\endgroup\ignorespaces}% + +\newif\ifwarnedobs\warnedobsfalse +\def\obstexwarn{% + \ifwarnedobs\relax\else + % We need to warn folks that they may have trouble with TeX 3.0. + % This uses \immediate\write16 rather than \message to get newlines. + \immediate\write16{} + \immediate\write16{WARNING: for users of Unix TeX 3.0!} + \immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).} + \immediate\write16{If you are running another version of TeX, relax.} + \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.} + \immediate\write16{ Then upgrade your TeX installation if you can.} + \immediate\write16{ (See ftp://ftp.gnu.org/pub/gnu/TeX.README.)} + \immediate\write16{If you are stuck with version 3.0, run the} + \immediate\write16{ script ``tex3patch'' from the Texinfo distribution} + \immediate\write16{ to use a workaround.} + \immediate\write16{} + \global\warnedobstrue + \fi +} + +% **In TeX 3.0, setting text in \nullfont hangs tex. For a +% workaround (which requires the file ``dummy.tfm'' to be installed), +% uncomment the following line: +%%%%%\font\nullfont=dummy\let\obstexwarn=\relax + +% Ignore text, except that we keep track of conditional commands for +% purposes of nesting, up to an `@end #1' command. +% +\def\nestedignore#1{% + \obstexwarn + % We must actually expand the ignored text to look for the @end + % command, so that nested ignore constructs work. Thus, we put the + % text into a \vbox and then do nothing with the result. To minimize + % the change of memory overflow, we follow the approach outlined on + % page 401 of the TeXbook: make the current font be a dummy font. + % + \setbox0 = \vbox\bgroup + % Don't complain about control sequences we have declared \outer. + \ignoresections + % + % Define `@end #1' to end the box, which will in turn undefine the + % @end command again. + \expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}% + % + % We are going to be parsing Texinfo commands. Most cause no + % trouble when they are used incorrectly, but some commands do + % complicated argument parsing or otherwise get confused, so we + % undefine them. + % + % We can't do anything about stray @-signs, unfortunately; + % they'll produce `undefined control sequence' errors. + \ignoremorecommands + % + % Set the current font to be \nullfont, a TeX primitive, and define + % all the font commands to also use \nullfont. We don't use + % dummy.tfm, as suggested in the TeXbook, because not all sites + % might have that installed. Therefore, math mode will still + % produce output, but that should be an extremely small amount of + % stuff compared to the main input. + % + \nullfont + \let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont + \let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont + \let\tensf=\nullfont + % Similarly for index fonts (mostly for their use in smallexample). + \let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont + \let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont + \let\smallsf=\nullfont + % + % Don't complain when characters are missing from the fonts. + \tracinglostchars = 0 + % + % Don't bother to do space factor calculations. + \frenchspacing + % + % Don't report underfull hboxes. + \hbadness = 10000 + % + % Do minimal line-breaking. + \pretolerance = 10000 + % + % Do not execute instructions in @tex + \def\tex{\doignore{tex}}% + % Do not execute macro definitions. + % `c' is a comment character, so the word `macro' will get cut off. + \def\macro{\doignore{ma}}% +} + +% @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. Make sure the catcode of space is correct to avoid +% losing inside @example, for instance. +% +\def\set{\begingroup\catcode` =10 + \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR. + \parsearg\setxxx} +\def\setxxx#1{\setyyy#1 \endsetyyy} +\def\setyyy#1 #2\endsetyyy{% + \def\temp{#2}% + \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty + \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted. + \fi + \endgroup +} +% Can't use \xdef to pre-expand #2 and save some time, since \temp or +% \next or other control sequences that we've defined might get us into +% an infinite loop. Consider `@set foo @cite{bar}'. +\def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}} + +% @clear VAR clears (i.e., unsets) the variable VAR. +% +\def\clear{\parsearg\clearxxx} +\def\clearxxx#1{\global\expandafter\let\csname SET#1\endcsname=\relax} + +% @value{foo} gets the text saved in variable foo. +{ + \catcode`\_ = \active + % + % We might end up with active _ or - characters in the argument if + % we're called from @code, as @code{@value{foo-bar_}}. So \let any + % such active characters to their normal equivalents. + \gdef\value{\begingroup + \catcode`\-=12 \catcode`\_=12 + \indexbreaks \let_\normalunderscore + \valuexxx} +} +\def\valuexxx#1{\expandablevalue{#1}\endgroup} + +% We have this subroutine so that we can handle at least some @value's +% properly in indexes (we \let\value to this in \indexdummies). Ones +% whose names contain - or _ still won't work, but we can't do anything +% about that. The command has to be fully expandable, 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'']}% \else - % If user has <not> set preamble in terms of percent of \hsize - % we will advance \hsize by \spacebetweencols - \advance\hsize by \spacebetweencols + \csname SET#1\endcsname \fi - % In either case we will make \leftskip=\spacebetweencols: -\leftskip=\spacebetweencols -\fi -\noindent##}\cr% - % \everycr will reset column counter, \colcount, at the end of - % each line. Every column entry will cause \colcount to advance by one. - % The table preamble - % looks at the current \colcount to find the correct column width. -\global\everycr{\noalign{\nointerlineskip\vskip\spacebetweenlines -\filbreak%% keeps underfull box messages off when table breaks over pages. -\global\colcount=0\relax}}} +} + +% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined +% with @set. +% +\def\ifset{\parsearg\ifsetxxx} +\def\ifsetxxx #1{% + \expandafter\ifx\csname SET#1\endcsname\relax + \expandafter\ifsetfail + \else + \expandafter\ifsetsucceed + \fi +} +\def\ifsetsucceed{\conditionalsucceed{ifset}} +\def\ifsetfail{\nestedignore{ifset}} +\defineunmatchedend{ifset} + +% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been +% defined with @set, or has been undefined with @clear. +% +\def\ifclear{\parsearg\ifclearxxx} +\def\ifclearxxx #1{% + \expandafter\ifx\csname SET#1\endcsname\relax + \expandafter\ifclearsucceed + \else + \expandafter\ifclearfail + \fi +} +\def\ifclearsucceed{\conditionalsucceed{ifclear}} +\def\ifclearfail{\nestedignore{ifclear}} +\defineunmatchedend{ifclear} + +% @iftex, @ifnothtml, @ifnotinfo always succeed; we read the text +% following, through the first @end iftex (etc.). Make `@end iftex' +% (etc.) valid only after an @iftex. +% +\def\iftex{\conditionalsucceed{iftex}} +\def\ifnothtml{\conditionalsucceed{ifnothtml}} +\def\ifnotinfo{\conditionalsucceed{ifnotinfo}} +\defineunmatchedend{iftex} +\defineunmatchedend{ifnothtml} +\defineunmatchedend{ifnotinfo} + +% We can't just want to start a group at @iftex (for example) and end it +% at @end iftex, since then @set commands inside the conditional have no +% effect (they'd get reverted at the end of the group). So we must +% define \Eiftex to redefine itself to be its previous value. (We can't +% just define it to fail again with an ``unmatched end'' error, since +% the @ifset might be nested.) +% +\def\conditionalsucceed#1{% + \edef\temp{% + % Remember the current value of \E#1. + \let\nece{prevE#1} = \nece{E#1}% + % + % At the `@end #1', redefine \E#1 to be its previous value. + \def\nece{E#1}{\let\nece{E#1} = \nece{prevE#1}}% + }% + \temp +} + +% We need to expand lots of \csname's, but we don't want to expand the +% control sequences after we've constructed them. +% +\def\nece#1{\expandafter\noexpand\csname#1\endcsname} + +% @defininfoenclose. +\let\definfoenclose=\comment + \message{indexing,} % Index generation facilities @@ -1875,15 +2573,17 @@ July\or August\or September\or October\or November\or December\fi % 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 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{ -\expandafter\newwrite \csname#1indfile\endcsname% Define number for output file -\openout \csname#1indfile\endcsname \jobname.#1 % Open the file -\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex -\noexpand\doindex {#1}} +% +\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} @@ -1892,31 +2592,37 @@ July\or August\or September\or October\or November\or December\fi % Define @defcodeindex, like @defindex except put all entries in @code. -\def\newcodeindex #1{ -\expandafter\newwrite \csname#1indfile\endcsname% Define number for output file -\openout \csname#1indfile\endcsname \jobname.#1 % Open the file -\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex -\noexpand\docodeindex {#1}} +\def\newcodeindex#1{% + \iflinks + \expandafter\newwrite \csname#1indfile\endcsname + \openout \csname#1indfile\endcsname \jobname.#1 + \fi + \expandafter\xdef\csname#1index\endcsname{% + \noexpand\docodeindex{#1}} } \def\defcodeindex{\parsearg\newcodeindex} % @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. -\def\synindex #1 #2 {% -\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname -\expandafter\let\csname#1indfile\endcsname=\synindexfoo -\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex -\noexpand\doindex {#2}}% +% The \closeout helps reduce unnecessary open files; the limit on the +% Acorn RISC OS is a mere 16 files. +\def\synindex#1 #2 {% + \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname + \expandafter\closeout\csname#1indfile\endcsname + \expandafter\let\csname#1indfile\endcsname=\synindexfoo + \expandafter\xdef\csname#1index\endcsname{% define \xxxindex + \noexpand\doindex{#2}}% } % @syncodeindex foo bar similar, but put all entries made for index foo % inside @code. -\def\syncodeindex #1 #2 {% -\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname -\expandafter\let\csname#1indfile\endcsname=\synindexfoo -\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex -\noexpand\docodeindex {#2}}% +\def\syncodeindex#1 #2 {% + \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname + \expandafter\closeout\csname#1indfile\endcsname + \expandafter\let\csname#1indfile\endcsname=\synindexfoo + \expandafter\xdef\csname#1index\endcsname{% define \xxxindex + \noexpand\docodeindex{#2}}% } % Define \doindex, the driver for all \fooindex macros. @@ -1937,6 +2643,7 @@ July\or August\or September\or October\or November\or December\fi \def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} \def\indexdummies{% +\def\ { }% % Take care of the plain tex accent commands. \def\"{\realbackslash "}% \def\`{\realbackslash `}% @@ -1963,27 +2670,48 @@ July\or August\or September\or October\or November\or December\fi \def\L{\realbackslash L}% \def\ss{\realbackslash ss}% % Take care of texinfo commands likely to appear in an index entry. +% (Must be a way to avoid doing expansion at all, and thus not have to +% laboriously list every single command here.) +\def\@{@}% will be @@ when we switch to @ as escape char. +% 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 \def\_{{\realbackslash _}}% \def\w{\realbackslash w }% \def\bf{\realbackslash bf }% -\def\rm{\realbackslash rm }% +%\def\rm{\realbackslash rm }% \def\sl{\realbackslash sl }% \def\sf{\realbackslash sf}% \def\tt{\realbackslash tt}% \def\gtr{\realbackslash gtr}% \def\less{\realbackslash less}% \def\hat{\realbackslash hat}% -\def\char{\realbackslash char}% \def\TeX{\realbackslash TeX}% \def\dots{\realbackslash dots }% -\def\copyright{\realbackslash copyright }% +\def\result{\realbackslash result}% +\def\equiv{\realbackslash equiv}% +\def\expansion{\realbackslash expansion}% +\def\print{\realbackslash print}% +\def\error{\realbackslash error}% +\def\point{\realbackslash point}% +\def\copyright{\realbackslash copyright}% \def\tclose##1{\realbackslash tclose {##1}}% \def\code##1{\realbackslash code {##1}}% +\def\uref##1{\realbackslash uref {##1}}% +\def\url##1{\realbackslash url {##1}}% +\def\env##1{\realbackslash env {##1}}% +\def\command##1{\realbackslash command {##1}}% +\def\option##1{\realbackslash option {##1}}% +\def\dotless##1{\realbackslash dotless {##1}}% \def\samp##1{\realbackslash samp {##1}}% -\def\t##1{\realbackslash r {##1}}% +\def\,##1{\realbackslash ,{##1}}% +\def\t##1{\realbackslash t {##1}}% \def\r##1{\realbackslash r {##1}}% \def\i##1{\realbackslash i {##1}}% \def\b##1{\realbackslash b {##1}}% +\def\sc##1{\realbackslash sc {##1}}% \def\cite##1{\realbackslash cite {##1}}% \def\key##1{\realbackslash key {##1}}% \def\file##1{\realbackslash file {##1}}% @@ -1991,7 +2719,16 @@ July\or August\or September\or October\or November\or December\fi \def\kbd##1{\realbackslash kbd {##1}}% \def\dfn##1{\realbackslash dfn {##1}}% \def\emph##1{\realbackslash emph {##1}}% +\def\acronym##1{\realbackslash acronym {##1}}% +% +% Handle some cases of @value -- where the variable name does not +% contain - or _, and the value does not contain any +% (non-fully-expandable) commands. +\let\value = \expandablevalue +% \unsepspaces +% Turn off macro expansion +\turnoffmacros } % If an index command is used in an @example environment, any spaces @@ -2008,6 +2745,7 @@ July\or August\or September\or October\or November\or December\fi \def\indexnofonts{% % Just ignore accents. +\let\,=\indexdummyfont \let\"=\indexdummyfont \let\`=\indexdummyfont \let\'=\indexdummyfont @@ -2020,6 +2758,7 @@ July\or August\or September\or October\or November\or December\fi \let\u=\indexdummyfont \let\v=\indexdummyfont \let\H=\indexdummyfont +\let\dotless=\indexdummyfont % Take care of the plain tex special European modified letters. \def\oe{oe}% \def\ae{ae}% @@ -2046,6 +2785,12 @@ July\or August\or September\or October\or November\or December\fi %\let\tt=\indexdummyfont \let\tclose=\indexdummyfont \let\code=\indexdummyfont +\let\url=\indexdummyfont +\let\uref=\indexdummyfont +\let\env=\indexdummyfont +\let\acronym=\indexdummyfont +\let\command=\indexdummyfont +\let\option=\indexdummyfont \let\file=\indexdummyfont \let\samp=\indexdummyfont \let\kbd=\indexdummyfont @@ -2053,6 +2798,7 @@ July\or August\or September\or October\or November\or December\fi \let\var=\indexdummyfont \let\TeX=\indexdummytex \let\dots=\indexdummydots +\def\@{@}% } % To define \realbackslash, we must make \ not be an escape. @@ -2060,57 +2806,102 @@ July\or August\or September\or October\or November\or December\fi % so we do not become unable to do a definition. {\catcode`\@=0 \catcode`\\=\other -@gdef@realbackslash{\}} + @gdef@realbackslash{\}} \let\indexbackslash=0 %overridden during \printindex. +\let\SETmarginindex=\relax % put index entries in margin (undocumented)? -\let\SETmarginindex=\relax %initialize! -% workhorse for all \fooindexes -% #1 is name of index, #2 is stuff to put there -\def\doind #1#2{% -% Put the index entry in the margin if desired. -\ifx\SETmarginindex\relax\else% -\insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}% -\fi% -{\count10=\lastpenalty % -{\indexdummies % Must do this here, since \bf, etc expand at this stage -\escapechar=`\\% -{\let\folio=0% Expand all macros now EXCEPT \folio -\def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now -% so it will be output as is; and it will print as backslash in the indx. -% -% Now process the index-string once, with all font commands turned off, -% to get the string to sort the index by. -{\indexnofonts -\xdef\temp1{#2}% -}% -% Now produce the complete index entry. We process the index-string again, -% this time with font commands expanded, to get what to print in the index. -\edef\temp{% -\write \csname#1indfile\endcsname{% -\realbackslash entry {\temp1}{\folio}{#2}}}% -\temp }% -}\penalty\count10}} - -\def\dosubind #1#2#3{% -{\count10=\lastpenalty % -{\indexdummies % Must do this here, since \bf, etc expand at this stage -\escapechar=`\\% -{\let\folio=0% -\def\rawbackslashxx{\indexbackslash}% -% -% Now process the index-string once, with all font commands turned off, -% to get the string to sort the index by. -{\indexnofonts -\xdef\temp1{#2 #3}% -}% -% Now produce the complete index entry. We process the index-string again, -% this time with font commands expanded, to get what to print in the index. -\edef\temp{% -\write \csname#1indfile\endcsname{% -\realbackslash entry {\temp1}{\folio}{#2}{#3}}}% -\temp }% -}\penalty\count10}} +% For \ifx comparisons. +\def\emptymacro{\empty} + +% Most index entries go through here, but \dosubind is the general case. +% +\def\doind#1#2{\dosubind{#1}{#2}\empty} + +% 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 defuns, which call us directly. +% +\def\dosubind#1#2#3{% + % Put the index entry in the margin if desired. + \ifx\SETmarginindex\relax\else + \insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}% + \fi + {% + \count255=\lastpenalty + {% + \indexdummies % Must do this here, since \bf, etc expand at this stage + \escapechar=`\\ + {% + \let\folio = 0% We will expand all macros now EXCEPT \folio. + \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now + % so it will be output as is; and it will print as backslash. + % + \def\thirdarg{#3}% + % + % If third arg is present, precede it with space in sort key. + \ifx\thirdarg\emptymacro + \let\subentry = \empty + \else + \def\subentry{ #3}% + \fi + % + % First process the index entry with all font commands turned + % off to get the string to sort by. + {\indexnofonts \xdef\indexsorttmp{#2\subentry}}% + % + % Now the real index entry with the fonts. + \toks0 = {#2}% + % + % If third (subentry) arg is present, add it to the index + % string. And include a space. + \ifx\thirdarg\emptymacro \else + \toks0 = \expandafter{\the\toks0 \space #3}% + \fi + % + % 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, texindex reduces to + % two when writing the .??s sorted result. + \edef\temp{% + \write\csname#1indfile\endcsname{% + \realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}% + }% + % + % If a skip is the last thing on the list now, preserve it + % by backing up by \lastskip, doing the \write, then inserting + % the skip again. Otherwise, the whatsit generated by the + % \write will make \lastskip zero. The result is that sequences + % like this: + % @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. + % + \iflinks + \ifvmode + \skip0 = \lastskip + \ifdim\lastskip = 0pt \else \nobreak\vskip-\lastskip \fi + \fi + % + \temp % do the write + % + % + \ifvmode \ifdim\skip0 = 0pt \else \nobreak\vskip\skip0 \fi \fi + \fi + }% + }% + \penalty\count255 + }% +} % The index entry written in the file actually looks like % \entry {sortstring}{page}{topic} @@ -2144,78 +2935,85 @@ July\or August\or September\or October\or November\or December\fi % Define the macros used in formatting output of the sorted index material. -% This is what you call to cause a particular index to get printed. -% Write -% @unnumbered Function Index -% @printindex fn - +% @printindex causes a particular index (the ??s file) to get printed. +% It does not print any chapter heading (usually an @unnumbered). +% \def\printindex{\parsearg\doprintindex} - -\def\doprintindex#1{% - \tex - \dobreak \chapheadingskip {10000} - \catcode`\%=\other\catcode`\&=\other\catcode`\#=\other - \catcode`\$=\other - \catcode`\~=\other - \indexbreaks +\def\doprintindex#1{\begingroup + \dobreak \chapheadingskip{10000}% % - % The following don't help, since the chars were translated - % when the raw index was written, and their fonts were discarded - % due to \indexnofonts. - %\catcode`\"=\active - %\catcode`\^=\active - %\catcode`\_=\active - %\catcode`\|=\active - %\catcode`\<=\active - %\catcode`\>=\active - % % - \def\indexbackslash{\rawbackslashxx} - \indexfonts\rm \tolerance=9500 \advance\baselineskip -1pt - \begindoublecolumns + \smallfonts \rm + \tolerance = 9500 + \indexbreaks % % 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. - (Index is nonexistent) - \else + \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 - (Index is empty) + \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{\rawbackslashxx}% + \catcode`\\ = 0 + \escapechar = `\\ + \begindoublecolumns \input \jobname.#1s + \enddoublecolumns \fi \fi \closein 1 - \enddoublecolumns - \Etex -} +\endgroup} % These macros are used by the sorted index file itself. % Change them to control the appearance of the index. -% Same as \bigskipamount except no shrink. -% \balancecolumns gets confused if there is any shrink. -\newskip\initialskipamount \initialskipamount 12pt plus4pt - -\def\initial #1{% -{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt -\ifdim\lastskip<\initialskipamount -\removelastskip \penalty-200 \vskip \initialskipamount\fi -\line{\secbf#1\hfill}\kern 2pt\penalty10000}} +\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. + \penalty -300 + % + % 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}% + \vskip .33\baselineskip plus .1\baselineskip + % + % Do our best not to break after the initial. + \nobreak +}} % This typesets a paragraph consisting of #1, dot leaders, and then #2 % flush to the right margin. It is used for index and table of contents % entries. The paragraph is indented by \leftskip. % -\def\entry #1#2{\begingroup +\def\entry#1#2{\begingroup % % Start a new paragraph if necessary, so our assignments below can't % affect previous text. @@ -2238,12 +3036,15 @@ July\or August\or September\or October\or November\or December\fi % % \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 + \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 + % % Start a ``paragraph'' for the index entry so the line breaking % parameters we've set above will have an effect. \noindent @@ -2268,7 +3069,11 @@ July\or August\or September\or October\or November\or December\fi % The `\ ' here is removed by the implicit \unskip that TeX does as % part of (the primitive) \par. Without it, a spurious underfull % \hbox ensues. - \ #2% The page number ends the paragraph. + \ifpdf + \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. + \else + \ #2% The page number ends the paragraph. + \fi \fi% \par \endgroup} @@ -2287,34 +3092,51 @@ July\or August\or September\or October\or November\or December\fi \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par }} -%% Define two-column mode, which is used in indexes. -%% Adapted from the TeXbook, page 416. -\catcode `\@=11 +% 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 +\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns % Grab any single-column material above us. - \output = {\global\setbox\partialpage - =\vbox{\unvbox255\kern -\topskip \kern \baselineskip}}% - \eject + \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 % - % Now switch to the double-column output routine. - \output={\doublecolumnout}% + % 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 once. + % 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. + % 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) @@ -2327,109 +3149,140 @@ July\or August\or September\or October\or November\or December\fi % % Double the \vsize as well. (We don't need a separate register here, % since nobody clobbers \vsize.) + \advance\vsize by -\ht\partialpage \vsize = 2\vsize - \doublecolumnpagegoal } -\def\enddoublecolumns{\eject \endgroup \pagegoal=\vsize \unvbox\partialpage} - -\def\doublecolumnsplit{\splittopskip=\topskip \splitmaxdepth=\maxdepth - \global\dimen@=\pageheight \global\advance\dimen@ by-\ht\partialpage - \global\setbox1=\vsplit255 to\dimen@ \global\setbox0=\vbox{\unvbox1} - \global\setbox3=\vsplit255 to\dimen@ \global\setbox2=\vbox{\unvbox3} - \ifdim\ht0>\dimen@ \setbox255=\vbox{\unvbox0\unvbox2} \global\setbox255=\copy5 \fi - \ifdim\ht2>\dimen@ \setbox255=\vbox{\unvbox0\unvbox2} \global\setbox255=\copy5 \fi +% 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 + % + % box0 will be the left-hand column, box2 the right. + \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ + \onepageout\pagesofar + \unvbox255 + \penalty\outputpenalty } -\def\doublecolumnpagegoal{% - \dimen@=\vsize \advance\dimen@ by-2\ht\partialpage \global\pagegoal=\dimen@ +\def\pagesofar{% + % Re-output the contents of the output page -- any previous material, + % followed by the two boxes we just split, in box0 and box2. + \unvbox\partialpage + % + \hsize = \doublecolumnhsize + \wd0=\hsize \wd2=\hsize + \hbox to\pagewidth{\box0\hfil\box2}% } -\def\pagesofar{\unvbox\partialpage % - \hsize=\doublecolumnhsize % have to restore this since output routine - \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}} -\def\doublecolumnout{% - \setbox5=\copy255 - {\vbadness=10000 \doublecolumnsplit} - \ifvbox255 - \setbox0=\vtop to\dimen@{\unvbox0} - \setbox2=\vtop to\dimen@{\unvbox2} - \onepageout\pagesofar \unvbox255 \penalty\outputpenalty - \else - \setbox0=\vbox{\unvbox5} - \ifvbox0 - \dimen@=\ht0 \advance\dimen@ by\topskip \advance\dimen@ by-\baselineskip - \divide\dimen@ by2 \splittopskip=\topskip \splitmaxdepth=\maxdepth - {\vbadness=10000 - \loop \global\setbox5=\copy0 - \setbox1=\vsplit5 to\dimen@ - \setbox3=\vsplit5 to\dimen@ - \ifvbox5 \global\advance\dimen@ by1pt \repeat - \setbox0=\vbox to\dimen@{\unvbox1} - \setbox2=\vbox to\dimen@{\unvbox3} - \global\setbox\partialpage=\vbox{\pagesofar} - \doublecolumnpagegoal - } - \fi - \fi +\def\enddoublecolumns{% + \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 +} +\def\balancecolumns{% + % Called at the end of the double column material. + \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 + -\catcode `\@=\other \message{sectioning,} -% Define chapters, sections, etc. +% Chapters, sections, etc. -\newcount \chapno -\newcount \secno \secno=0 -\newcount \subsecno \subsecno=0 -\newcount \subsubsecno \subsubsecno=0 +\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} - -\newwrite \contentsfile -% This is called from \setfilename. -\def\opencontents{\openout \contentsfile = \jobname.toc} +\newcount\appendixno \appendixno = `\@ +% \def\appendixletter{\char\the\appendixno} +% We do the following 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 this as the name of the chapter. -% page headings and footings can use it. @section does likewise - -\def\thischapter{} \def\thissection{} -\def\seccheck#1{\if \pageno<0 % -\errmessage{@#1 not allowed after generating table of contents}\fi -% -} - -\def\chapternofonts{% -\let\rawbackslash=\relax% -\let\frenchspacing=\relax% -\def\result{\realbackslash result} -\def\equiv{\realbackslash equiv} -\def\expansion{\realbackslash expansion} -\def\print{\realbackslash print} -\def\TeX{\realbackslash TeX} -\def\dots{\realbackslash dots} -\def\copyright{\realbackslash copyright} -\def\tt{\realbackslash tt} -\def\bf{\realbackslash bf } -\def\w{\realbackslash w} -\def\less{\realbackslash less} -\def\gtr{\realbackslash gtr} -\def\hat{\realbackslash hat} -\def\char{\realbackslash char} -\def\tclose##1{\realbackslash tclose {##1}} -\def\code##1{\realbackslash code {##1}} -\def\samp##1{\realbackslash samp {##1}} -\def\r##1{\realbackslash r {##1}} -\def\b##1{\realbackslash b {##1}} -\def\key##1{\realbackslash key {##1}} -\def\file##1{\realbackslash file {##1}} -\def\kbd##1{\realbackslash kbd {##1}} -% These are redefined because @smartitalic wouldn't work inside xdef. -\def\i##1{\realbackslash i {##1}} -\def\cite##1{\realbackslash cite {##1}} -\def\var##1{\realbackslash var {##1}} -\def\emph##1{\realbackslash emph {##1}} -\def\dfn##1{\realbackslash dfn {##1}} -} +% page headings and footings can use it. @section does likewise. +\def\thischapter{} +\def\thissection{} \newcount\absseclevel % used to calculate proper heading level \newcount\secbase\secbase=0 % @raise/lowersections modify this count @@ -2501,53 +3354,59 @@ July\or August\or September\or October\or November\or December\fi \fi } - +% @chapter, @appendix, @unnumbered. \def\thischaptername{No Chapter Title} \outer\def\chapter{\parsearg\chapteryyy} \def\chapteryyy #1{\numhead0{#1}} % normally numhead0 calls chapterzzz -\def\chapterzzz #1{\seccheck{chapter}% +\def\chapterzzz #1{% \secno=0 \subsecno=0 \subsubsecno=0 -\global\advance \chapno by 1 \message{\putwordChapter \the\chapno}% +\global\advance \chapno by 1 \message{\putwordChapter\space \the\chapno}% \chapmacro {#1}{\the\chapno}% \gdef\thissection{#1}% \gdef\thischaptername{#1}% % We don't substitute the actual chapter name into \thischapter % because we don't want its macros evaluated now. \xdef\thischapter{\putwordChapter{} \the\chapno: \noexpand\thischaptername}% -{\chapternofonts% -\edef\temp{{\realbackslash chapentry {#1}{\the\chapno}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\donoderef % +\toks0 = {#1}% +\edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}% + {\the\chapno}}}% +\temp +\donoderef \global\let\section = \numberedsec \global\let\subsection = \numberedsubsec \global\let\subsubsection = \numberedsubsubsec -}} +} \outer\def\appendix{\parsearg\appendixyyy} \def\appendixyyy #1{\apphead0{#1}} % normally apphead0 calls appendixzzz -\def\appendixzzz #1{\seccheck{appendix}% +\def\appendixzzz #1{% \secno=0 \subsecno=0 \subsubsecno=0 -\global\advance \appendixno by 1 \message{Appendix \appendixletter}% +\global\advance \appendixno by 1 +\message{\putwordAppendix\space \appendixletter}% \chapmacro {#1}{\putwordAppendix{} \appendixletter}% \gdef\thissection{#1}% \gdef\thischaptername{#1}% \xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}% -{\chapternofonts% -\edef\temp{{\realbackslash chapentry - {#1}{\putwordAppendix{} \appendixletter}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\appendixnoderef % +\toks0 = {#1}% +\edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}% + {\putwordAppendix{} \appendixletter}}}% +\temp +\appendixnoderef \global\let\section = \appendixsec \global\let\subsection = \appendixsubsec \global\let\subsubsection = \appendixsubsubsec -}} +} + +% @centerchap is like @unnumbered, but the heading is centered. +\outer\def\centerchap{\parsearg\centerchapyyy} +\def\centerchapyyy #1{{\let\unnumbchapmacro=\centerchapmacro \unnumberedyyy{#1}}} +% @top is like @unnumbered. \outer\def\top{\parsearg\unnumberedyyy} + \outer\def\unnumbered{\parsearg\unnumberedyyy} \def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz -\def\unnumberedzzz #1{\seccheck{unnumbered}% +\def\unnumberedzzz #1{% \secno=0 \subsecno=0 \subsubsecno=0 % % This used to be simply \message{#1}, but TeX fully expands the @@ -2559,146 +3418,139 @@ July\or August\or September\or October\or November\or December\fi % 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<toks register> to achieve this: TeX expands \the<toks> only once, -% simply yielding the contents of the <toks register>. +% simply yielding the contents of <toks register>. (We also do this for +% the toc entries.) \toks0 = {#1}\message{(\the\toks0)}% % \unnumbchapmacro {#1}% \gdef\thischapter{#1}\gdef\thissection{#1}% -{\chapternofonts% -\edef\temp{{\realbackslash unnumbchapentry {#1}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\unnumbnoderef % +\toks0 = {#1}% +\edef\temp{\noexpand\writetocentry{\realbackslash unnumbchapentry{\the\toks0}}}% +\temp +\unnumbnoderef \global\let\section = \unnumberedsec \global\let\subsection = \unnumberedsubsec \global\let\subsubsection = \unnumberedsubsubsec -}} +} +% Sections. \outer\def\numberedsec{\parsearg\secyyy} \def\secyyy #1{\numhead1{#1}} % normally calls seczzz -\def\seczzz #1{\seccheck{section}% +\def\seczzz #1{% \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % \gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}% -{\chapternofonts% -\edef\temp{{\realbackslash secentry % -{#1}{\the\chapno}{\the\secno}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\donoderef % -\penalty 10000 % -}} +\toks0 = {#1}% +\edef\temp{\noexpand\writetocentry{\realbackslash secentry{\the\toks0}% + {\the\chapno}{\the\secno}}}% +\temp +\donoderef +\nobreak +} \outer\def\appendixsection{\parsearg\appendixsecyyy} \outer\def\appendixsec{\parsearg\appendixsecyyy} \def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz -\def\appendixsectionzzz #1{\seccheck{appendixsection}% +\def\appendixsectionzzz #1{% \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % \gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}% -{\chapternofonts% -\edef\temp{{\realbackslash secentry % -{#1}{\appendixletter}{\the\secno}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\appendixnoderef % -\penalty 10000 % -}} +\toks0 = {#1}% +\edef\temp{\noexpand\writetocentry{\realbackslash secentry{\the\toks0}% + {\appendixletter}{\the\secno}}}% +\temp +\appendixnoderef +\nobreak +} \outer\def\unnumberedsec{\parsearg\unnumberedsecyyy} \def\unnumberedsecyyy #1{\unnmhead1{#1}} % normally calls unnumberedseczzz -\def\unnumberedseczzz #1{\seccheck{unnumberedsec}% +\def\unnumberedseczzz #1{% \plainsecheading {#1}\gdef\thissection{#1}% -{\chapternofonts% -\edef\temp{{\realbackslash unnumbsecentry{#1}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\unnumbnoderef % -\penalty 10000 % -}} +\toks0 = {#1}% +\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry{\the\toks0}}}% +\temp +\unnumbnoderef +\nobreak +} +% Subsections. \outer\def\numberedsubsec{\parsearg\numberedsubsecyyy} \def\numberedsubsecyyy #1{\numhead2{#1}} % normally calls numberedsubseczzz -\def\numberedsubseczzz #1{\seccheck{subsection}% +\def\numberedsubseczzz #1{% \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % \subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}% -{\chapternofonts% -\edef\temp{{\realbackslash subsecentry % -{#1}{\the\chapno}{\the\secno}{\the\subsecno}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\donoderef % -\penalty 10000 % -}} +\toks0 = {#1}% +\edef\temp{\noexpand\writetocentry{\realbackslash subsecentry{\the\toks0}% + {\the\chapno}{\the\secno}{\the\subsecno}}}% +\temp +\donoderef +\nobreak +} \outer\def\appendixsubsec{\parsearg\appendixsubsecyyy} \def\appendixsubsecyyy #1{\apphead2{#1}} % normally calls appendixsubseczzz -\def\appendixsubseczzz #1{\seccheck{appendixsubsec}% +\def\appendixsubseczzz #1{% \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % \subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}% -{\chapternofonts% -\edef\temp{{\realbackslash subsecentry % -{#1}{\appendixletter}{\the\secno}{\the\subsecno}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\appendixnoderef % -\penalty 10000 % -}} +\toks0 = {#1}% +\edef\temp{\noexpand\writetocentry{\realbackslash subsecentry{\the\toks0}% + {\appendixletter}{\the\secno}{\the\subsecno}}}% +\temp +\appendixnoderef +\nobreak +} \outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy} \def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz -\def\unnumberedsubseczzz #1{\seccheck{unnumberedsubsec}% -\plainsecheading {#1}\gdef\thissection{#1}% -{\chapternofonts% -\edef\temp{{\realbackslash unnumbsubsecentry{#1}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\unnumbnoderef % -\penalty 10000 % -}} +\def\unnumberedsubseczzz #1{% +\plainsubsecheading {#1}\gdef\thissection{#1}% +\toks0 = {#1}% +\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry% + {\the\toks0}}}% +\temp +\unnumbnoderef +\nobreak +} +% Subsubsections. \outer\def\numberedsubsubsec{\parsearg\numberedsubsubsecyyy} \def\numberedsubsubsecyyy #1{\numhead3{#1}} % normally numberedsubsubseczzz -\def\numberedsubsubseczzz #1{\seccheck{subsubsection}% +\def\numberedsubsubseczzz #1{% \gdef\thissection{#1}\global\advance \subsubsecno by 1 % \subsubsecheading {#1} {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}% -{\chapternofonts% -\edef\temp{{\realbackslash subsubsecentry % - {#1} - {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno} - {\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\donoderef % -\penalty 10000 % -}} +\toks0 = {#1}% +\edef\temp{\noexpand\writetocentry{\realbackslash subsubsecentry{\the\toks0}% + {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}}}% +\temp +\donoderef +\nobreak +} \outer\def\appendixsubsubsec{\parsearg\appendixsubsubsecyyy} \def\appendixsubsubsecyyy #1{\apphead3{#1}} % normally appendixsubsubseczzz -\def\appendixsubsubseczzz #1{\seccheck{appendixsubsubsec}% +\def\appendixsubsubseczzz #1{% \gdef\thissection{#1}\global\advance \subsubsecno by 1 % \subsubsecheading {#1} {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}% -{\chapternofonts% -\edef\temp{{\realbackslash subsubsecentry{#1}% - {\appendixletter} - {\the\secno}{\the\subsecno}{\the\subsubsecno}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\appendixnoderef % -\penalty 10000 % -}} +\toks0 = {#1}% +\edef\temp{\noexpand\writetocentry{\realbackslash subsubsecentry{\the\toks0}% + {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}}}% +\temp +\appendixnoderef +\nobreak +} \outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy} \def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz -\def\unnumberedsubsubseczzz #1{\seccheck{unnumberedsubsubsec}% -\plainsecheading {#1}\gdef\thissection{#1}% -{\chapternofonts% -\edef\temp{{\realbackslash unnumbsubsubsecentry{#1}{\noexpand\folio}}}% -\escapechar=`\\% -\write \contentsfile \temp % -\unnumbnoderef % -\penalty 10000 % -}} +\def\unnumberedsubsubseczzz #1{% +\plainsubsubsecheading {#1}\gdef\thissection{#1}% +\toks0 = {#1}% +\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry% + {\the\toks0}}}% +\temp +\unnumbnoderef +\nobreak +} % These are variants which are not "outer", so they can appear in @ifinfo. % Actually, they should now be obsolete; ordinary section commands should work. @@ -2727,12 +3579,11 @@ July\or August\or September\or October\or November\or December\fi % Define @majorheading, @heading and @subheading -% NOTE on use of \vbox for chapter headings, section headings, and -% such: -% 1) We use \vbox rather than the earlier \line to permit -% overlong headings to fold. -% 2) \hyphenpenalty is set to 10000 because hyphenation in a -% heading is obnoxious; this forbids it. +% 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. @@ -2750,11 +3601,10 @@ July\or August\or September\or October\or November\or December\fi \parindent=0pt\raggedright \rm #1\hfill}}\bigskip \par\penalty 200} -\def\heading{\parsearg\secheadingi} - -\def\subheading{\parsearg\subsecheadingi} - -\def\subsubheading{\parsearg\subsubsecheadingi} +% @heading, @subheading, @subsubheading. +\def\heading{\parsearg\plainsecheading} +\def\subheading{\parsearg\plainsubsecheading} +\def\subsubheading{\parsearg\plainsubsubsecheading} % These macros generate a chapter, section, etc. heading only % (including whitespace, linebreaking, etc. around it), @@ -2768,7 +3618,7 @@ July\or August\or September\or October\or November\or December\fi %%% Define plain chapter starts, and page on/off switching for it % Parameter controlling skip before chapter headings (if needed) -\newskip \chapheadingskip \chapheadingskip = 30pt plus 8pt minus 4pt +\newskip\chapheadingskip \def\chapbreak{\dobreak \chapheadingskip {-4000}} \def\chappager{\par\vfill\supereject} @@ -2776,16 +3626,19 @@ July\or August\or September\or October\or November\or December\fi \def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} -\def\CHAPPAGoff{ +\def\CHAPPAGoff{% +\global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chapbreak \global\let\pagealignmacro=\chappager} -\def\CHAPPAGon{ +\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}} @@ -2794,31 +3647,45 @@ July\or August\or September\or October\or November\or December\fi \def\CHAPFplain{ \global\let\chapmacro=\chfplain -\global\let\unnumbchapmacro=\unnchfplain} +\global\let\unnumbchapmacro=\unnchfplain +\global\let\centerchapmacro=\centerchfplain} -\def\chfplain #1#2{% +% Plain chapter opening. +% #1 is the text, #2 the chapter number or empty if unnumbered. +\def\chfplain#1#2{% \pchapsepmacro {% - \chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright - \rm #2\enspace #1}% + \chapfonts \rm + \def\chapnum{#2}% + \setbox0 = \hbox{#2\ifx\chapnum\empty\else\enspace\fi}% + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright + \hangindent = \wd0 \centerparametersmaybe + \unhbox0 #1\par}% }% - \bigskip - \penalty5000 + \nobreak\bigskip % no page break after a chapter title + \nobreak } -\def\unnchfplain #1{% -\pchapsepmacro % -{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright - \rm #1\hfill}}\bigskip \par\penalty 10000 % -} +% Plain opening for unnumbered. +\def\unnchfplain#1{\chfplain{#1}{}} + +% @centerchap -- centered and unnumbered. +\let\centerparametersmaybe = \relax +\def\centerchfplain#1{{% + \def\centerparametersmaybe{% + \advance\rightskip by 3\rightskip + \leftskip = \rightskip + \parfillskip = 0pt + }% + \chfplain{#1}{}% +}} + \CHAPFplain % The default \def\unnchfopen #1{% \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 \parindent=0pt\raggedright - \rm #1\hfill}}\bigskip \par\penalty 10000 % + \rm #1\hfill}}\bigskip \par\nobreak } \def\chfopen #1#2{\chapoddpage {\chapfonts @@ -2826,91 +3693,133 @@ July\or August\or September\or October\or November\or December\fi \par\penalty 5000 % } +\def\centerchfopen #1{% +\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 + \parindent=0pt + \hfill {\rm #1}\hfill}}\bigskip \par\nobreak +} + \def\CHAPFopen{ \global\let\chapmacro=\chfopen -\global\let\unnumbchapmacro=\unnchfopen} +\global\let\unnumbchapmacro=\unnchfopen +\global\let\centerchapmacro=\centerchfopen} -% Parameter controlling skip before section headings. -\newskip \subsecheadingskip \subsecheadingskip = 17pt plus 8pt minus 4pt +% Section titles. +\newskip\secheadingskip +\def\secheadingbreak{\dobreak \secheadingskip {-1000}} +\def\secheading#1#2#3{\sectionheading{sec}{#2.#3}{#1}} +\def\plainsecheading#1{\sectionheading{sec}{}{#1}} + +% Subsection titles. +\newskip \subsecheadingskip \def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}} +\def\subsecheading#1#2#3#4{\sectionheading{subsec}{#2.#3.#4}{#1}} +\def\plainsubsecheading#1{\sectionheading{subsec}{}{#1}} -\newskip \secheadingskip \secheadingskip = 21pt plus 8pt minus 4pt -\def\secheadingbreak{\dobreak \secheadingskip {-1000}} +% Subsubsection titles. +\let\subsubsecheadingskip = \subsecheadingskip +\let\subsubsecheadingbreak = \subsecheadingbreak +\def\subsubsecheading#1#2#3#4#5{\sectionheading{subsubsec}{#2.#3.#4.#5}{#1}} +\def\plainsubsubsecheading#1{\sectionheading{subsubsec}{}{#1}} -% @paragraphindent is defined for the Info formatting commands only. -\let\paragraphindent=\comment - -% Section fonts are the base font at magstep2, which produces -% a size a bit more than 14 points in the default situation. - -\def\secheading #1#2#3{\secheadingi {#2.#3\enspace #1}} -\def\plainsecheading #1{\secheadingi {#1}} -\def\secheadingi #1{{\advance \secheadingskip by \parskip % -\secheadingbreak}% -{\secfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright - \rm #1\hfill}}% -\ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000 } - - -% Subsection fonts are the base font at magstep1, -% which produces a size of 12 points. - -\def\subsecheading #1#2#3#4{\subsecheadingi {#2.#3.#4\enspace #1}} -\def\subsecheadingi #1{{\advance \subsecheadingskip by \parskip % -\subsecheadingbreak}% -{\subsecfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright - \rm #1\hfill}}% -\ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000 } - -\def\subsubsecfonts{\subsecfonts} % Maybe this should change: - % Perhaps make sssec fonts scaled - % magstep half -\def\subsubsecheading #1#2#3#4#5{\subsubsecheadingi {#2.#3.#4.#5\enspace #1}} -\def\subsubsecheadingi #1{{\advance \subsecheadingskip by \parskip % -\subsecheadingbreak}% -{\subsubsecfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright - \rm #1\hfill}}% -\ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000} + +% Print any size section title. +% +% #1 is the section type (sec/subsec/subsubsec), #2 is the section +% number (maybe empty), #3 the text. +\def\sectionheading#1#2#3{% + {% + \expandafter\advance\csname #1headingskip\endcsname by \parskip + \csname #1headingbreak\endcsname + }% + {% + % Switch to the right set of fonts. + \csname #1fonts\endcsname \rm + % + % Only insert the separating space if we have a section number. + \def\secnum{#2}% + \setbox0 = \hbox{#2\ifx\secnum\empty\else\enspace\fi}% + % + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright + \hangindent = \wd0 % zero if no section number + \unhbox0 #3}% + }% + \ifdim\parskip<10pt \nobreak\kern10pt\nobreak\kern-\parskip\fi \nobreak +} -\message{toc printing,} +\message{toc,} +% Table of contents. +\newwrite\tocfile -% Finish up the main text and prepare to read what we've written -% to \contentsfile. +% Write an entry to the toc file, opening it if necessary. +% Called from @chapter, etc. We supply {\folio} at the end of the +% argument, which will end up as the last argument to the \...entry macro. +% +% We open the .toc file here instead of at @setfilename or any other +% given time so that @contents can be put in the document anywhere. +% +\newif\iftocfileopened +\def\writetocentry#1{% + \iftocfileopened\else + \immediate\openout\tocfile = \jobname.toc + \global\tocfileopenedtrue + \fi + \iflinks \write\tocfile{#1{\folio}}\fi +} \newskip\contentsrightmargin \contentsrightmargin=1in +\newcount\savepageno +\newcount\lastnegativepageno \lastnegativepageno = -1 + +% Finish up the main text and prepare to read what we've written +% to \tocfile. +% \def\startcontents#1{% - \pagealignmacro - \immediate\closeout \contentsfile - \ifnum \pageno>0 - \pageno = -1 % Request roman numbered pages. - \fi + % 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 <tege@matematik.su.se> + \contentsalignmacro + \immediate\closeout\tocfile + % % Don't need to put `Contents' or `Short Contents' in the headline. % It is abundantly clear what they are. \unnumbchapmacro{#1}\def\thischapter{}% - \begingroup % Set up to handle contents files properly. + \savepageno = \pageno + \begingroup % Set up to handle contents files properly. \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\@=11 - \catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi + % We can't do this, because then an actual ^ in a section + % title fails, e.g., @chapter ^ -- exponentiation. --karl, 9jul97. + %\catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi \raggedbottom % Worry more about breakpoints than the bottom. \advance\hsize by -\contentsrightmargin % Don't use the full line length. + % + % Roman numerals for page numbers. + \ifnum \pageno>0 \pageno = \lastnegativepageno \fi } % Normal (long) toc. -\outer\def\contents{% - \startcontents{\putwordTableofContents}% - \input \jobname.toc +\def\contents{% + \startcontents{\putwordTOC}% + \openin 1 \jobname.toc + \ifeof 1 \else + \closein 1 + \input \jobname.toc + \fi + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect + \pdfmakeoutlines \endgroup - \vfill \eject + \lastnegativepageno = \pageno + \pageno = \savepageno } % And just the chapters. -\outer\def\summarycontents{% - \startcontents{\putwordShortContents}% +\def\summarycontents{% + \startcontents{\putwordShortTOC}% % \let\chapentry = \shortchapentry \let\unnumbchapentry = \shortunnumberedentry @@ -2918,6 +3827,7 @@ July\or August\or September\or October\or November\or December\fi \secfonts \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl \rm + \hyphenpenalty = 10000 \advance\baselineskip by 1pt % Open it up a little. \def\secentry ##1##2##3##4{} \def\unnumbsecentry ##1##2{} @@ -2925,12 +3835,23 @@ July\or August\or September\or October\or November\or December\fi \def\unnumbsubsecentry ##1##2{} \def\subsubsecentry ##1##2##3##4##5##6{} \def\unnumbsubsubsecentry ##1##2{} - \input \jobname.toc + \openin 1 \jobname.toc + \ifeof 1 \else + \closein 1 + \input \jobname.toc + \fi + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect \endgroup - \vfill \eject + \lastnegativepageno = \pageno + \pageno = \savepageno } \let\shortcontents = \summarycontents +\ifpdf + \pdfcatalog{/PageMode /UseOutlines}% +\fi + % 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. @@ -2941,7 +3862,7 @@ July\or August\or September\or October\or November\or December\fi % See comments in \dochapentry re vbox and related settings \def\shortchapentry#1#2#3{% - \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno{#3}}% + \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}% } % Typeset the label for a chapter or appendix for the short contents. @@ -2949,10 +3870,14 @@ July\or August\or September\or October\or November\or December\fi % We could simplify the code here by writing out an \appendixentry % command in the toc file for appendices, instead of using \chapentry % for both, but it doesn't seem worth it. -\setbox0 = \hbox{\shortcontrm \putwordAppendix } -\newdimen\shortappendixwidth \shortappendixwidth = \wd0 - +% +\newdimen\shortappendixwidth +% \def\shortchaplabel#1{% + % Compute width of word "Appendix", may change with language. + \setbox0 = \hbox{\shortcontrm \putwordAppendix}% + \shortappendixwidth = \wd0 + % % We typeset #1 in a box of constant width, regardless of the text of % #1, so the chapter titles will come out aligned. \setbox0 = \hbox{#1}% @@ -2961,13 +3886,13 @@ July\or August\or September\or October\or November\or December\fi % This space should be plenty, since a single number is .5em, and the % widest letter (M) is 1em, at least in the Computer Modern fonts. % (This space doesn't include the extra space that gets added after - % the label; that gets put in in \shortchapentry above.) + % the label; that gets put in by \shortchapentry above.) \advance\dimen0 by 1.1em \hbox to \dimen0{#1\hfil}% } \def\unnumbchapentry#1#2{\dochapentry{#1}{#2}} -\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno{#2}}} +\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}} % Sections. \def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}} @@ -2982,48 +3907,48 @@ July\or August\or September\or October\or November\or December\fi \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}} \def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}} - % This parameter controls the indentation of the various levels. \newdimen\tocindent \tocindent = 3pc % 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 would want to be at chapters +% 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 \vskip\baselineskip + \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip \begingroup \chapentryfonts - \tocentry{#1}{\dopageno{#2}}% + \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup - \nobreak\vskip .25\baselineskip + \nobreak\vskip .25\baselineskip plus.1\baselineskip } \def\dosecentry#1#2{\begingroup \secentryfonts \leftskip=\tocindent - \tocentry{#1}{\dopageno{#2}}% + \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} \def\dosubsecentry#1#2{\begingroup \subsecentryfonts \leftskip=2\tocindent - \tocentry{#1}{\dopageno{#2}}% + \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} \def\dosubsubsecentry#1#2{\begingroup \subsubsecentryfonts \leftskip=3\tocindent - \tocentry{#1}{\dopageno{#2}}% + \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} % Final typesetting of a toc entry; we use the same \entry macro as for % the index entries, but we want to suppress hyphenation here. (We % can't do that in the \entry macro, since index entries might consist % of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.) -% -% \turnoffactive is for the sake of @" used for umlauts. \def\tocentry#1#2{\begingroup - \hyphenpenalty = 10000 - \entry{\turnoffactive #1}{\turnoffactive #2}% + \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks + % Do not use \turnoffactive in these arguments. Since the toc is + % typeset in cmr, so characters such as _ would come out wrong; we + % have to do the usual translation tricks. + \entry{#1}{#2}% \endgroup} % Space between chapter (or whatever) number and the title. @@ -3039,6 +3964,7 @@ July\or August\or September\or October\or November\or December\fi \message{environments,} +% @foo ... @end foo. % Since these characters are used in examples, it should be an even number of % \tt widths. Each \tt character is 1en, so two makes it 1em. @@ -3047,8 +3973,6 @@ July\or August\or September\or October\or November\or December\fi \newbox\pushcharbox \newbox\bullbox \newbox\equivbox \newbox\errorbox -\let\ptexequiv = \equiv - %{\tentt %\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil} %\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil} @@ -3059,12 +3983,11 @@ July\or August\or September\or October\or November\or December\fi % depth .1ex\hfil} %} +% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. \def\point{$\star$} - \def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} \def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}} \def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} - \def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}} % Adapted from the TeXbook's \boxit. @@ -3092,29 +4015,36 @@ July\or August\or September\or October\or November\or December\fi % But \@ or @@ will get a plain tex @ character. \def\tex{\begingroup -\catcode `\\=0 \catcode `\{=1 \catcode `\}=2 -\catcode `\$=3 \catcode `\&=4 \catcode `\#=6 -\catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie -\catcode `\%=14 -\catcode 43=12 -\catcode`\"=12 -\catcode`\==12 -\catcode`\|=12 -\catcode`\<=12 -\catcode`\>=12 -\escapechar=`\\ -% -\let\~=\ptextilde -\let\{=\ptexlbrace -\let\}=\ptexrbrace -\let\.=\ptexdot -\let\*=\ptexstar -\let\dots=\ptexdots -\def\@{@}% -\let\bullet=\ptexbullet -\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl -\let\L=\ptexL -% + \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 + \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 + \catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie + \catcode `\%=14 + \catcode 43=12 % plus + \catcode`\"=12 + \catcode`\==12 + \catcode`\|=12 + \catcode`\<=12 + \catcode`\>=12 + \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\{=\ptexlbrace + \let\+=\tabalign + \let\}=\ptexrbrace + \let\*=\ptexstar + \let\t=\ptext + % + \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% + \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% + \def\@{@}% \let\Etex=\endgroup} % Define @lisp ... @endlisp. @@ -3159,8 +4089,8 @@ July\or August\or September\or October\or November\or December\fi % \nonarrowing is a flag. If "set", @lisp etc don't narrow margins. \let\nonarrowing=\relax -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% \cartouche: draw rectangle w/rounded corners around argument +% @cartouche ... @end cartouche: draw rectangle w/rounded corners around +% environment contents. \font\circle=lcircle10 \newdimen\circthick \newdimen\cartouter\newdimen\cartinner @@ -3172,50 +4102,50 @@ July\or August\or September\or October\or November\or December\fi \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}} + \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}} + \cbl\leaders\hrule height\circthick\hfil\cbr + \hskip\rskip}} % \newskip\lskip\newskip\rskip \long\def\cartouche{% \begingroup - \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 18pt % allow for 3pt kerns on either -% side, and for 6pt waste from -% each corner char - \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip - % Flag to tell @lisp, etc., not to narrow margin. - \let\nonarrowing=\comment - \vbox\bgroup - \baselineskip=0pt\parskip=0pt\lineskip=0pt - \carttop - \hbox\bgroup - \hskip\lskip - \vrule\kern3pt - \vbox\bgroup - \hsize=\cartinner - \kern3pt - \begingroup - \baselineskip=\normbskip - \lineskip=\normlskip - \parskip=\normpskip - \vskip -\parskip + \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=\comment + \vbox\bgroup + \baselineskip=0pt\parskip=0pt\lineskip=0pt + \carttop + \hbox\bgroup + \hskip\lskip + \vrule\kern3pt + \vbox\bgroup + \hsize=\cartinner + \kern3pt + \begingroup + \baselineskip=\normbskip + \lineskip=\normlskip + \parskip=\normpskip + \vskip -\parskip \def\Ecartouche{% - \endgroup - \kern3pt - \egroup - \kern3pt\vrule - \hskip\rskip - \egroup - \cartbot - \egroup + \endgroup + \kern3pt + \egroup + \kern3pt\vrule + \hskip\rskip + \egroup + \cartbot + \egroup \endgroup }} @@ -3243,49 +4173,52 @@ July\or August\or September\or October\or November\or December\fi \fi } -% To ending an @example-like environment, we first end the paragraph -% (via \afterenvbreak's vertical glue), and then the group. That way we -% keep the zero \parskip that the environments set -- \parskip glue -% will be inserted at the beginning of the next paragraph in the -% document, after the environment. +% Define the \E... control sequence only if we are inside the particular +% environment, so the error checking in \end will work. +% +% To end an @example-like environment, we first end the paragraph (via +% \afterenvbreak's vertical glue), and then the group. That way we keep +% the zero \parskip that the environments set -- \parskip glue will be +% inserted at the beginning of the next paragraph in the document, after +% the environment. % -\def\nonfillfinish{\afterenvbreak\endgroup}% +\def\nonfillfinish{\afterenvbreak\endgroup} -% This macro is +% @lisp: indented, narrowed, typewriter font. \def\lisp{\begingroup \nonfillstart \let\Elisp = \nonfillfinish \tt - \rawbackslash % have \ input char produce \ char from current font - \gobble + \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. + \gobble % eat return } -% Define the \E... control sequence only if we are inside the -% environment, so the error checking in \end will work. -% -% We must call \lisp last in the definition, since it reads the -% return following the @example (or whatever) command. -% +% @example: Same as @lisp. \def\example{\begingroup \def\Eexample{\nonfillfinish\endgroup}\lisp} -\def\smallexample{\begingroup \def\Esmallexample{\nonfillfinish\endgroup}\lisp} -\def\smalllisp{\begingroup \def\Esmalllisp{\nonfillfinish\endgroup}\lisp} -% @smallexample and @smalllisp. This is not used unless the @smallbook -% command is given. Originally contributed by Pavel@xerox. +% @small... is usually equivalent to the non-small (@smallbook +% redefines). We must call \example (or whatever) last in the +% definition, since it reads the return following the @example (or +% whatever) command. % +% This actually allows (for example) @end display inside an +% @smalldisplay. Too bad, but makeinfo will catch the error anyway. +% +\def\smalldisplay{\begingroup\def\Esmalldisplay{\nonfillfinish\endgroup}\display} +\def\smallexample{\begingroup\def\Esmallexample{\nonfillfinish\endgroup}\lisp} +\def\smallformat{\begingroup\def\Esmallformat{\nonfillfinish\endgroup}\format} +\def\smalllisp{\begingroup\def\Esmalllisp{\nonfillfinish\endgroup}\lisp} + +% Real @smallexample and @smalllisp (when @smallbook): use smaller fonts. +% Originally contributed by Pavel@xerox. \def\smalllispx{\begingroup - \nonfillstart - \let\Esmalllisp = \nonfillfinish - \let\Esmallexample = \nonfillfinish - % - % Smaller interline space and fonts for small examples. - \setleading{10pt}% - \indexfonts \tt - \rawbackslash % make \ output the \ character from the current font (tt) - \gobble + \def\Esmalllisp{\nonfillfinish\endgroup}% + \def\Esmallexample{\nonfillfinish\endgroup}% + \smallfonts + \lisp } -% This is @display; same as @lisp except use roman font. +% @display: same as @lisp except keep current font. % \def\display{\begingroup \nonfillstart @@ -3293,7 +4226,15 @@ July\or August\or September\or October\or November\or December\fi \gobble } -% This is @format; same as @display except don't narrow margins. +% @smalldisplay (when @smallbook): @display plus smaller fonts. +% +\def\smalldisplayx{\begingroup + \def\Esmalldisplay{\nonfillfinish\endgroup}% + \smallfonts \rm + \display +} + +% @format: same as @display except don't narrow margins. % \def\format{\begingroup \let\nonarrowing = t @@ -3302,20 +4243,27 @@ July\or August\or September\or October\or November\or December\fi \gobble } -% @flushleft (same as @format) and @flushright. +% @smallformat (when @smallbook): @format plus smaller fonts. % -\def\flushleft{\begingroup - \let\nonarrowing = t - \nonfillstart - \let\Eflushleft = \nonfillfinish - \gobble +\def\smallformatx{\begingroup + \def\Esmallformat{\nonfillfinish\endgroup}% + \smallfonts \rm + \format } + +% @flushleft (same as @format). +% +\def\flushleft{\begingroup \def\Eflushleft{\nonfillfinish\endgroup}\format} + +% @flushright. +% \def\flushright{\begingroup \let\nonarrowing = t \nonfillstart \let\Eflushright = \nonfillfinish \advance\leftskip by 0pt plus 1fill - \gobble} + \gobble +} % @quotation does normal linebreaking (hence we can't use \nonfillstart) % and narrows the margins. @@ -3338,9 +4286,11 @@ July\or August\or September\or October\or November\or December\fi \fi } + \message{defuns,} -% Define formatter for defuns -% First, allow user to change definition object font (\df) internally +% @defun etc. + +% Allow user to change definition object font (\df) internally \def\setdeffont #1 {\csname DEF#1\endcsname} \newskip\defbodyindent \defbodyindent=.4in @@ -3374,16 +4324,17 @@ July\or August\or September\or October\or November\or December\fi % Definitions of (, ) and & used in args for functions. % This is the definition of ( outside of all parentheses. -\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested % -\global\advance\parencount by 1 } +\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested + \global\advance\parencount by 1 +} % % This is the definition of ( when already inside a level of parens. \gdef\opnested{\char`\(\global\advance\parencount by 1 } % \gdef\clrm{% Print a paren in roman if it is taking us back to depth of 0. -% also in that case restore the outer-level definition of (. -\ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi -\global\advance \parencount by -1 } + % also in that case restore the outer-level definition of (. + \ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi + \global\advance \parencount by -1 } % If we encounter &foo, then turn on ()-hacking afterwards \gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ } % @@ -3391,8 +4342,17 @@ July\or August\or September\or October\or November\or December\fi } % End of definition inside \activeparens %% These parens (in \boldbrax) actually are a little bolder than the %% contained text. This is especially needed for [ and ] -\def\opnr{{\sf\char`\(}} \def\clnr{{\sf\char`\)}} \def\ampnr{\&} -\def\lbrb{{\bf\char`\[}} \def\rbrb{{\bf\char`\]}} +\def\opnr{{\sf\char`\(}\global\advance\parencount by 1 } +\def\clnr{{\sf\char`\)}\global\advance\parencount by -1 } +\let\ampnr = \& +\def\lbrb{{\bf\char`\[}} +\def\rbrb{{\bf\char`\]}} + +% Active &'s sneak into the index arguments, so make sure it's defined. +{ + \catcode`& = 13 + \global\let& = \ampnr +} % First, defname, which formats the header line itself. % #1 should be the function name. @@ -3403,20 +4363,18 @@ July\or August\or September\or October\or November\or December\fi % outside the @def... \dimen2=\leftskip \advance\dimen2 by -\defbodyindent -\dimen3=\rightskip -\advance\dimen3 by -\defbodyindent -\noindent % +\noindent \setbox0=\hbox{\hskip \deflastargmargin{\rm #2}\hskip \deftypemargin}% \dimen0=\hsize \advance \dimen0 by -\wd0 % compute size for first line \dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations -\parshape 2 0in \dimen0 \defargsindent \dimen1 % +\parshape 2 0in \dimen0 \defargsindent \dimen1 % Now output arg 2 ("Function" or some such) % ending at \deftypemargin from the right margin, % but stuck inside a box of width 0 so it does not interfere with linebreaking {% Adjust \hsize to exclude the ambient margins, % so that \rightline will obey them. -\advance \hsize by -\dimen2 \advance \hsize by -\dimen3 -\rlap{\rightline{{\rm #2}\hskip \deftypemargin}}}% +\advance \hsize by -\dimen2 +\rlap{\rightline{{\rm #2}\hskip -1.25pc }}}% % Make all lines underfull and no complaints: \tolerance=10000 \hbadness=10000 \advance\leftskip by -\defbodyindent @@ -3437,23 +4395,62 @@ July\or August\or September\or October\or November\or December\fi \def#1{\endgraf\endgroup\medbreak}% \def#2{\begingroup\obeylines\activeparens\spacesplit#3}% \parindent=0in -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent +\advance\leftskip by \defbodyindent \exdentamount=\defbodyindent \begingroup % \catcode 61=\active % 61 is `=' \obeylines\activeparens\spacesplit#3} -\def\defmethparsebody #1#2#3#4 {\begingroup\inENV % +% #1 is the \E... control sequence to end the definition (which we define). +% #2 is the \...x control sequence for consecutive fns (which we define). +% #3 is the control sequence to call to resume processing. +% #4, delimited by the space, is the class name. +% +\def\defmethparsebody#1#2#3#4 {\begingroup\inENV % \medbreak % % Define the end token that this defining construct specifies % so that it will exit this group. \def#1{\endgraf\endgroup\medbreak}% \def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}% \parindent=0in -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent +\advance\leftskip by \defbodyindent \exdentamount=\defbodyindent \begingroup\obeylines\activeparens\spacesplit{#3{#4}}} +% Used for @deftypemethod and @deftypeivar. +% #1 is the \E... control sequence to end the definition (which we define). +% #2 is the \...x control sequence for consecutive fns (which we define). +% #3 is the control sequence to call to resume processing. +% #4, delimited by a space, is the class name. +% #5 is the method's return type. +% +\def\deftypemethparsebody#1#2#3#4 #5 {\begingroup\inENV + \medbreak + \def#1{\endgraf\endgroup\medbreak}% + \def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}% + \parindent=0in + \advance\leftskip by \defbodyindent + \exdentamount=\defbodyindent + \begingroup\obeylines\activeparens\spacesplit{#3{#4}{#5}}} + +% Used for @deftypeop. The change from \deftypemethparsebody is an +% extra argument at the beginning which is the `category', instead of it +% being the hardwired string `Method' or `Instance Variable'. We have +% to account for this both in the \...x definition and in parsing the +% input at hand. Thus also need a control sequence (passed as #5) for +% the \E... definition to assign the category name to. +% +\def\deftypeopparsebody#1#2#3#4#5 #6 {\begingroup\inENV + \medbreak + \def#1{\endgraf\endgroup\medbreak}% + \def#2##1 ##2 ##3 {% + \def#4{##1}% + \begingroup\obeylines\activeparens\spacesplit{#3{##2}{##3}}}% + \parindent=0in + \advance\leftskip by \defbodyindent + \exdentamount=\defbodyindent + \begingroup\obeylines\activeparens\spacesplit{#3{#5}{#6}}} + \def\defopparsebody #1#2#3#4#5 {\begingroup\inENV % \medbreak % % Define the end token that this defining construct specifies @@ -3462,7 +4459,7 @@ July\or August\or September\or October\or November\or December\fi \def#2##1 ##2 {\def#4{##1}% \begingroup\obeylines\activeparens\spacesplit{#3{##2}}}% \parindent=0in -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent +\advance\leftskip by \defbodyindent \exdentamount=\defbodyindent \begingroup\obeylines\activeparens\spacesplit{#3{#5}}} @@ -3477,7 +4474,7 @@ July\or August\or September\or October\or November\or December\fi \def#1{\endgraf\endgroup\medbreak}% \def#2{\begingroup\obeylines\spacesplit#3}% \parindent=0in -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent +\advance\leftskip by \defbodyindent \exdentamount=\defbodyindent \begingroup % \catcode 61=\active % @@ -3485,7 +4482,7 @@ July\or August\or September\or October\or November\or December\fi % This is used for \def{tp,vr}parsebody. It could probably be used for % some of the others, too, with some judicious conditionals. -% +% \def\parsebodycommon#1#2#3{% \begingroup\inENV % \medbreak % @@ -3494,7 +4491,7 @@ July\or August\or September\or October\or November\or December\fi \def#1{\endgraf\endgroup\medbreak}% \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}% \parindent=0in - \advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent + \advance\leftskip by \defbodyindent \exdentamount=\defbodyindent \begingroup\obeylines } @@ -3519,17 +4516,16 @@ July\or August\or September\or October\or November\or December\fi } % Fine, but then we have to eventually remove the \empty *and* the -% braces (if any). That's what this does, putting the result in \tptemp. -% -\def\removeemptybraces\empty#1\relax{\def\tptemp{#1}}% +% braces (if any). That's what this does. +% +\def\removeemptybraces\empty#1\relax{#1} % After \spacesplit has done its work, this is called -- #1 is the final % thing to call, #2 the type name (which starts with \empty), and #3 % (which might be empty) the arguments. -% +% \def\parsetpheaderline#1#2#3{% - \removeemptybraces#2\relax - #1{\tptemp}{#3}% + #1{\removeemptybraces#2\relax}{#3}% }% \def\defopvarparsebody #1#2#3#4#5 {\begingroup\inENV % @@ -3540,7 +4536,7 @@ July\or August\or September\or October\or November\or December\fi \def#2##1 ##2 {\def#4{##1}% \begingroup\obeylines\spacesplit{#3{##2}}}% \parindent=0in -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent +\advance\leftskip by \defbodyindent \exdentamount=\defbodyindent \begingroup\obeylines\spacesplit{#3{#5}}} @@ -3564,16 +4560,17 @@ July\or August\or September\or October\or November\or December\fi % First, define the processing that is wanted for arguments of \defun % Use this to expand the args and terminate the paragraph they make up -\def\defunargs #1{\functionparens \sl +\def\defunargs#1{\functionparens \sl % Expand, preventing hyphenation at `-' chars. % Note that groups don't affect changes in \hyphenchar. -\hyphenchar\tensl=0 +% Set the font temporarily and use \font in case \setfont made \tensl a macro. +{\tensl\hyphenchar\font=0}% #1% -\hyphenchar\tensl=45 -\ifnum\parencount=0 \else \errmessage{unbalanced parens in @def arguments}\fi% +{\tensl\hyphenchar\font=45}% +\ifnum\parencount=0 \else \errmessage{Unbalanced parentheses in @def}\fi% \interlinepenalty=10000 \advance\rightskip by 0pt plus 1fil -\endgraf\penalty 10000\vskip -\parskip\penalty 10000% +\endgraf\nobreak\vskip -\parskip\nobreak } \def\deftypefunargs #1{% @@ -3584,7 +4581,7 @@ July\or August\or September\or October\or November\or December\fi \tclose{#1}% avoid \code because of side effects on active chars \interlinepenalty=10000 \advance\rightskip by 0pt plus 1fil -\endgraf\penalty 10000\vskip -\parskip\penalty 10000% +\endgraf\nobreak\vskip -\parskip\nobreak } % Do complete processing of one @defun or @defunx line already parsed. @@ -3603,7 +4600,7 @@ July\or August\or September\or October\or November\or December\fi \def\defun{\defparsebody\Edefun\defunx\defunheader} \def\defunheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index -\begingroup\defname {#1}{Function}% +\begingroup\defname {#1}{\putwordDeffunc}% \defunargs {#2}\endgroup % \catcode 61=\other % Turn off change made in \defparsebody } @@ -3617,7 +4614,7 @@ July\or August\or September\or October\or November\or December\fi % #1 is the data type, #2 the name, #3 the args. \def\deftypefunheaderx #1#2 #3\relax{% \doind {fn}{\code{#2}}% Make entry in function index -\begingroup\defname {\defheaderxcond#1\relax$$$#2}{Function}% +\begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypefun}% \deftypefunargs {#3}\endgroup % \catcode 61=\other % Turn off change made in \defparsebody } @@ -3648,7 +4645,7 @@ July\or August\or September\or October\or November\or December\fi \def\defmac{\defparsebody\Edefmac\defmacx\defmacheader} \def\defmacheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index -\begingroup\defname {#1}{Macro}% +\begingroup\defname {#1}{\putwordDefmac}% \defunargs {#2}\endgroup % \catcode 61=\other % Turn off change made in \defparsebody } @@ -3658,42 +4655,77 @@ July\or August\or September\or October\or November\or December\fi \def\defspec{\defparsebody\Edefspec\defspecx\defspecheader} \def\defspecheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index -\begingroup\defname {#1}{Special Form}% +\begingroup\defname {#1}{\putwordDefspec}% \defunargs {#2}\endgroup % \catcode 61=\other % Turn off change made in \defparsebody } -% This definition is run if you use @defunx -% anywhere other than immediately after a @defun or @defunx. - -\def\deffnx #1 {\errmessage{@deffnx in invalid context}} -\def\defunx #1 {\errmessage{@defunx in invalid context}} -\def\defmacx #1 {\errmessage{@defmacx in invalid context}} -\def\defspecx #1 {\errmessage{@defspecx in invalid context}} -\def\deftypefnx #1 {\errmessage{@deftypefnx in invalid context}} -\def\deftypeunx #1 {\errmessage{@deftypeunx in invalid context}} - -% @defmethod, and so on - -% @defop {Funny Method} foo-class frobnicate argument - +% @defop CATEGORY CLASS OPERATION ARG... +% \def\defop #1 {\def\defoptype{#1}% \defopparsebody\Edefop\defopx\defopheader\defoptype} - -\def\defopheader #1#2#3{% -\dosubind {fn}{\code{#2}}{on #1}% Make entry in function index -\begingroup\defname {#2}{\defoptype{} on #1}% +% +\def\defopheader#1#2#3{% +\dosubind {fn}{\code{#2}}{\putwordon\ #1}% Make entry in function index +\begingroup\defname {#2}{\defoptype\ \putwordon\ #1}% \defunargs {#3}\endgroup % } -% @defmethod == @defop Method +% @deftypeop CATEGORY CLASS TYPE OPERATION ARG... +% +\def\deftypeop #1 {\def\deftypeopcategory{#1}% + \deftypeopparsebody\Edeftypeop\deftypeopx\deftypeopheader + \deftypeopcategory} +% +% #1 is the class name, #2 the data type, #3 the operation name, #4 the args. +\def\deftypeopheader#1#2#3#4{% + \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index + \begingroup + \defname{\defheaderxcond#2\relax$$$#3} + {\deftypeopcategory\ \putwordon\ \code{#1}}% + \deftypefunargs{#4}% + \endgroup +} -\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader} +% @deftypemethod CLASS TYPE METHOD ARG... +% +\def\deftypemethod{% + \deftypemethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader} +% +% #1 is the class name, #2 the data type, #3 the method name, #4 the args. +\def\deftypemethodheader#1#2#3#4{% + \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index + \begingroup + \defname{\defheaderxcond#2\relax$$$#3}{\putwordMethodon\ \code{#1}}% + \deftypefunargs{#4}% + \endgroup +} -\def\defmethodheader #1#2#3{% -\dosubind {fn}{\code{#2}}{on #1}% entry in function index -\begingroup\defname {#2}{Method on #1}% -\defunargs {#3}\endgroup % +% @deftypeivar CLASS TYPE VARNAME +% +\def\deftypeivar{% + \deftypemethparsebody\Edeftypeivar\deftypeivarx\deftypeivarheader} +% +% #1 is the class name, #2 the data type, #3 the variable name. +\def\deftypeivarheader#1#2#3{% + \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index + \begingroup + \defname{#3}{\putwordInstanceVariableof\ \code{#1}}% + \defvarargs{#3}% + \endgroup +} + +% @defmethod == @defop Method +% +\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader} +% +% #1 is the class name, #2 the method name, #3 the args. +\def\defmethodheader#1#2#3{% + \dosubind{fn}{\code{#2}}{\putwordon\ \code{#1}}% entry in function index + \begingroup + \defname{#2}{\putwordMethodon\ \code{#1}}% + \defunargs{#3}% + \endgroup } % @defcv {Class Option} foo-class foo-flag @@ -3702,37 +4734,30 @@ July\or August\or September\or October\or November\or December\fi \defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype} \def\defcvarheader #1#2#3{% -\dosubind {vr}{\code{#2}}{of #1}% Make entry in var index -\begingroup\defname {#2}{\defcvtype{} of #1}% +\dosubind {vr}{\code{#2}}{\putwordof\ #1}% Make entry in var index +\begingroup\defname {#2}{\defcvtype\ \putwordof\ #1}% \defvarargs {#3}\endgroup % } -% @defivar == @defcv {Instance Variable} - +% @defivar CLASS VARNAME == @defcv {Instance Variable} CLASS VARNAME +% \def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader} - -\def\defivarheader #1#2#3{% -\dosubind {vr}{\code{#2}}{of #1}% Make entry in var index -\begingroup\defname {#2}{Instance Variable of #1}% -\defvarargs {#3}\endgroup % +% +\def\defivarheader#1#2#3{% + \dosubind {vr}{\code{#2}}{\putwordof\ #1}% entry in var index + \begingroup + \defname{#2}{\putwordInstanceVariableof\ #1}% + \defvarargs{#3}% + \endgroup } -% These definitions are run if you use @defmethodx, etc., -% anywhere other than immediately after a @defmethod, etc. - -\def\defopx #1 {\errmessage{@defopx in invalid context}} -\def\defmethodx #1 {\errmessage{@defmethodx in invalid context}} -\def\defcvx #1 {\errmessage{@defcvx in invalid context}} -\def\defivarx #1 {\errmessage{@defivarx in invalid context}} - -% Now @defvar - +% @defvar % First, define the processing that is wanted for arguments of @defvar. % This is actually simple: just print them in roman. % This must expand the args and terminate the paragraph they make up \def\defvarargs #1{\normalparens #1% \interlinepenalty=10000 -\endgraf\penalty 10000\vskip -\parskip\penalty 10000} +\endgraf\nobreak\vskip -\parskip\nobreak} % @defvr Counter foo-count @@ -3746,7 +4771,7 @@ July\or August\or September\or October\or November\or December\fi \def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader} \def\defvarheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index -\begingroup\defname {#1}{Variable}% +\begingroup\defname {#1}{\putwordDefvar}% \defvarargs {#2}\endgroup % } @@ -3755,7 +4780,7 @@ July\or August\or September\or October\or November\or December\fi \def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader} \def\defoptheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index -\begingroup\defname {#1}{User Option}% +\begingroup\defname {#1}{\putwordDefopt}% \defvarargs {#2}\endgroup % } @@ -3763,33 +4788,26 @@ July\or August\or September\or October\or November\or December\fi \def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader} -% #1 is the data type. #2 is the name. +% #1 is the data type. #2 is the name, perhaps followed by text that +% is actually part of the data type, which should not be put into the index. \def\deftypevarheader #1#2{% -\doind {vr}{\code{#2}}% Make entry in variables index -\begingroup\defname {\defheaderxcond#1\relax$$$#2}{Variable}% +\dovarind#2 \relax% Make entry in variables index +\begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypevar}% \interlinepenalty=10000 -\endgraf\penalty 10000\vskip -\parskip\penalty 10000 +\endgraf\nobreak\vskip -\parskip\nobreak \endgroup} +\def\dovarind#1 #2\relax{\doind{vr}{\code{#1}}} % @deftypevr {Global Flag} int enable \def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader} -\def\deftypevrheader #1#2#3{\doind {vr}{\code{#3}}% +\def\deftypevrheader #1#2#3{\dovarind#3 \relax% \begingroup\defname {\defheaderxcond#2\relax$$$#3}{#1} \interlinepenalty=10000 -\endgraf\penalty 10000\vskip -\parskip\penalty 10000 +\endgraf\nobreak\vskip -\parskip\nobreak \endgroup} -% This definition is run if you use @defvarx -% anywhere other than immediately after a @defvar or @defvarx. - -\def\defvrx #1 {\errmessage{@defvrx in invalid context}} -\def\defvarx #1 {\errmessage{@defvarx in invalid context}} -\def\defoptx #1 {\errmessage{@defoptx in invalid context}} -\def\deftypevarx #1 {\errmessage{@deftypevarx in invalid context}} -\def\deftypevrx #1 {\errmessage{@deftypevrx in invalid context}} - % Now define @deftp % Args are printed in bold, a slight difference from @defvar. @@ -3802,60 +4820,407 @@ July\or August\or September\or October\or November\or December\fi \def\deftpheader #1#2#3{\doind {tp}{\code{#2}}% \begingroup\defname {#2}{#1}\deftpargs{#3}\endgroup} -% This definition is run if you use @deftpx, etc -% anywhere other than immediately after a @deftp, etc. +% These definitions are used if you use @defunx (etc.) +% anywhere other than immediately after a @defun or @defunx. +% +\def\defcvx#1 {\errmessage{@defcvx in invalid context}} +\def\deffnx#1 {\errmessage{@deffnx in invalid context}} +\def\defivarx#1 {\errmessage{@defivarx in invalid context}} +\def\defmacx#1 {\errmessage{@defmacx in invalid context}} +\def\defmethodx#1 {\errmessage{@defmethodx in invalid context}} +\def\defoptx #1 {\errmessage{@defoptx in invalid context}} +\def\defopx#1 {\errmessage{@defopx in invalid context}} +\def\defspecx#1 {\errmessage{@defspecx in invalid context}} +\def\deftpx#1 {\errmessage{@deftpx in invalid context}} +\def\deftypefnx#1 {\errmessage{@deftypefnx in invalid context}} +\def\deftypefunx#1 {\errmessage{@deftypefunx in invalid context}} +\def\deftypeivarx#1 {\errmessage{@deftypeivarx in invalid context}} +\def\deftypemethodx#1 {\errmessage{@deftypemethodx in invalid context}} +\def\deftypeopx#1 {\errmessage{@deftypeopx in invalid context}} +\def\deftypevarx#1 {\errmessage{@deftypevarx in invalid context}} +\def\deftypevrx#1 {\errmessage{@deftypevrx in invalid context}} +\def\defunx#1 {\errmessage{@defunx in invalid context}} +\def\defvarx#1 {\errmessage{@defvarx in invalid context}} +\def\defvrx#1 {\errmessage{@defvrx in invalid context}} + + +\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\scanmacro#1{% + \begingroup \newlinechar`\^^M + % Undo catcode changes of \startcontents and \doprintindex + \catcode`\@=0 \catcode`\\=12 \escapechar=`\@ + % Append \endinput to make sure that TeX does not see the ending newline. + \toks0={#1\endinput}% + \immediate\openout\macscribble=\jobname.tmp + \immediate\write\macscribble{\the\toks0}% + \immediate\closeout\macscribble + \let\xeatspaces\eatspaces + \input \jobname.tmp + \endgroup +} +\else +\def\scanmacro#1{% +\begingroup \newlinechar`\^^M +% Undo catcode changes of \startcontents and \doprintindex +\catcode`\@=0 \catcode`\\=12 \escapechar=`\@ +\let\xeatspaces\eatspaces\scantokens{#1\endinput}\endgroup} +\fi + +\newcount\paramno % Count of parameters +\newtoks\macname % Macro name +\newif\ifrecursive % Is it recursive? +\def\macrolist{} % List of all defined macros in the form + % \do\macro1\do\macro2... + +% Utility routines. +% Thisdoes \let #1 = #2, except with \csnames. +\def\cslet#1#2{% +\expandafter\expandafter +\expandafter\let +\expandafter\expandafter +\csname#1\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=12\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 \. + +% 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\macrobodyctxt{% + \catcode`\~=12 + \catcode`\^=12 + \catcode`\_=12 + \catcode`\|=12 + \catcode`\<=12 + \catcode`\>=12 + \catcode`\+=12 + \catcode`\{=12 + \catcode`\}=12 + \catcode`\@=12 + \catcode`\^^M=12 + \usembodybackslash} + +\def\macroargctxt{% + \catcode`\~=12 + \catcode`\^=12 + \catcode`\_=12 + \catcode`\|=12 + \catcode`\<=12 + \catcode`\>=12 + \catcode`\+=12 + \catcode`\@=12 + \catcode`\\=12} + +% \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{The name \the\macname\space is reserved}\fi + \global\cslet{macsave.\the\macname}{\the\macname}% + \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% + % Add the macroname to \macrolist + \toks0 = \expandafter{\macrolist\do}% + \xdef\macrolist{\the\toks0 + \expandafter\noexpand\csname\the\macname\endcsname}% + \fi + \begingroup \macrobodyctxt + \ifrecursive \expandafter\parsermacbody + \else \expandafter\parsemacbody + \fi} + +\def\unmacro{\parsearg\unmacroxxx} +\def\unmacroxxx#1{% + \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 + \edef\tempa{\expandafter\noexpand\csname#1\endcsname}% + \def\do##1{% + \def\tempb{##1}% + \ifx\tempa\tempb + % remove this + \else + \toks0 = \expandafter{\newmacrolist\do}% + \edef\newmacrolist{\the\toks0\expandafter\noexpand\tempa}% + \fi}% + \def\newmacrolist{}% + % Execute macro list to define \newmacrolist + \macrolist + \global\let\macrolist\newmacrolist + \endgroup + \else + \errmessage{Macro #1 not defined}% + \fi +} + +% This makes use of the obscure feature that if the last token of a +% <parameter list> 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\next=#1\futurelet\nchar\braceorlinexxx} +\def\braceorlinexxx{% + \ifx\nchar\bgroup\else + \expandafter\parsearg + \fi \next} + +% We mant to disable all macros during \shipout so that they are not +% expanded by \write. +\def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}% + \edef\next{\macrolist}\expandafter\endgroup\next} -\def\deftpx #1 {\errmessage{@deftpx in invalid context}} -\message{cross reference,} -% Define cross-reference macros -\newwrite \auxfile +% @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{\begingroup\obeyspaces\parsearg\aliasxxx} +\def\aliasxxx #1{\aliasyyy#1\relax} +\def\aliasyyy #1=#2\relax{\ignoreactivespaces +\edef\next{\global\let\expandafter\noexpand\csname#1\endcsname=% + \expandafter\noexpand\csname#2\endcsname}% +\expandafter\endgroup\next} -\newif\ifhavexrefs % True if xref values are known. + +\message{cross references,} +% @xref etc. + +\newwrite\auxfile + +\newif\ifhavexrefs % True if xref values are known. \newif\ifwarnedxrefs % True if we warned once that they aren't known. -% \setref{foo} defines a cross-reference point named foo. +% @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 job is to define \lastnode. +\def\node{\ENVcheck\parsearg\nodezzz} +\def\nodezzz#1{\nodexxx [#1,]} +\def\nodexxx[#1,#2]{\gdef\lastnode{#1}} +\let\nwnode=\node +\let\lastnode=\relax -\def\setref#1{% -\dosetq{#1-title}{Ytitle}% -\dosetq{#1-pg}{Ypagenumber}% -\dosetq{#1-snt}{Ysectionnumberandtype}} +% The sectioning commands (@chapter, etc.) call these. +\def\donoderef{% + \ifx\lastnode\relax\else + \expandafter\expandafter\expandafter\setref{\lastnode}% + {Ysectionnumberandtype}% + \global\let\lastnode=\relax + \fi +} +\def\unnumbnoderef{% + \ifx\lastnode\relax\else + \expandafter\expandafter\expandafter\setref{\lastnode}{Ynothing}% + \global\let\lastnode=\relax + \fi +} +\def\appendixnoderef{% + \ifx\lastnode\relax\else + \expandafter\expandafter\expandafter\setref{\lastnode}% + {Yappendixletterandtype}% + \global\let\lastnode=\relax + \fi +} -\def\unnumbsetref#1{% -\dosetq{#1-title}{Ytitle}% -\dosetq{#1-pg}{Ypagenumber}% -\dosetq{#1-snt}{Ynothing}} -\def\appendixsetref#1{% -\dosetq{#1-title}{Ytitle}% -\dosetq{#1-pg}{Ypagenumber}% -\dosetq{#1-snt}{Yappendixletterandtype}} +% @anchor{NAME} -- define xref target at arbitrary point. +% +\newcount\savesfregister +\gdef\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} +\gdef\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} +\gdef\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} + +% \setref{NAME}{SNT} defines a cross-reference point NAME, namely +% NAME-title, NAME-pg, and NAME-SNT. Called from \foonoderef. We have +% to set \indexdummies so commands such as @code in a section title +% aren't expanded. It would be nicer not to expand the titles in the +% first place, but there's so many layers that that is hard to do. +% +\def\setref#1#2{{% + \indexdummies + \pdfmkdest{#1}% + \dosetq{#1-title}{Ytitle}% + \dosetq{#1-pg}{Ypagenumber}% + \dosetq{#1-snt}{#2}% +}} -% \xref, \pxref, and \ref generate cross-references to specified points. -% 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. +% @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\href#1{\hrefX[#1,,,]} -\def\hrefX[#1,#2,#3,#4]{#1} \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\printednodename{\ignorespaces #3}% \setbox1=\hbox{\printedmanual}% \setbox0=\hbox{\printednodename}% \ifdim \wd0 = 0pt % No printed node name was explicitly given. - \ifx\SETxref-automatic-section-title\thisisundefined + \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax % Use the node name inside the square brackets. \def\printednodename{\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% + \ifdim \wd1 > 0pt % It is in another manual, so we don't have it. \def\printednodename{\ignorespaces #1}% \else @@ -3876,27 +5241,54 @@ July\or August\or September\or October\or November\or December\fi % 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. + \ifpdf + \leavevmode + \getfilename{#4}% + \ifnum\filenamelength>0 + \startlink attr{/Border [0 0 0]}% + goto file{\the\filename.pdf} name{#1@}% + \else + \startlink attr{/Border [0 0 0]}% + goto name{#1@}% + \fi + \linkcolor + \fi + % \ifdim \wd1 > 0pt - \putwordsection{} ``\printednodename'' in \cite{\printedmanual}% + \putwordsection{} ``\printednodename'' \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 \refx{#1-snt}{}}% - \space [\printednodename],\space + {\normalturnoffactive + % 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 + }% + % [mynode], + [\printednodename],\space + % page 3 \turnoffactive \putwordpage\tie\refx{#1-pg}{}% \fi + \endlink \endgroup} % \dosetq is the interface for calls from other macros -% Use \turnoffactive so that punctuation chars such as underscore -% work in node names. -\def\dosetq #1#2{{\let\folio=0 \turnoffactive \auxhat% -\edef\next{\write\auxfile{\internalsetq {#1}{#2}}}% -\next}} +% Use \normalturnoffactive so that punctuation chars such as underscore +% and backslash work in node names. (\turnoffactive doesn't do \.) +\def\dosetq#1#2{% + {\let\folio=0% + \normalturnoffactive + \edef\next{\write\auxfile{\internalsetq{#1}{#2}}}% + \iflinks + \next + \fi + }% +} % \internalsetq {foo}{page} expands into % CHARACTERS 'xrdef {foo}{...expansion of \Ypage...} @@ -3947,13 +5339,15 @@ July\or August\or September\or October\or November\or December\fi \def\refx#1#2{% \expandafter\ifx\csname X#1\endcsname\relax % If not defined, say something at least. - $\langle$un\-de\-fined$\rangle$% - \ifhavexrefs - \message{\linenumber Undefined cross reference `#1'.}% - \else - \ifwarnedxrefs\else - \global\warnedxrefstrue - \message{Cross reference values unknown; you must run TeX again.}% + \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 @@ -3963,84 +5357,101 @@ July\or August\or September\or October\or November\or December\fi #2% Output the suffix in any case. } -% Read the last existing aux file, if any. No error if none exists. - % This is the macro invoked by entries in the aux file. -\def\xrdef #1#2{ -{\catcode`\'=\other\expandafter \gdef \csname X#1\endcsname {#2}}} +% +\def\xrdef#1{\begingroup + % Reenable \ as an escape while reading the second argument. + \catcode`\\ = 0 + \afterassignment\endgroup + \expandafter\gdef\csname X#1\endcsname +} -\def\readauxfile{% -\begingroup -\catcode `\^^@=\other -\catcode `\=\other -\catcode `\=\other -\catcode `\^^C=\other -\catcode `\^^D=\other -\catcode `\^^E=\other -\catcode `\^^F=\other -\catcode `\^^G=\other -\catcode `\^^H=\other -\catcode `\=\other -\catcode `\^^L=\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 -\catcode 26=\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 -\catcode`\|=\other -\catcode`\<=\other -\catcode`\>=\other -\catcode `\$=\other -\catcode `\#=\other -\catcode `\&=\other -% `\+ does not work, so use 43. -\catcode 43=\other -% Make the characters 128-255 be printing characters -{% - \count 1=128 - \def\loop{% - \catcode\count 1=\other - \advance\count 1 by 1 - \ifnum \count 1<256 \loop \fi +% Read the last existing aux file, if any. No error if none exists. +\def\readauxfile{\begingroup + \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 + \catcode`\@=\other + \catcode`\^=\other + % It was suggested to define this as 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 + \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 + % Make the characters 128-255 be printing characters + {% + \count 1=128 + \def\loop{% + \catcode\count 1=\other + \advance\count 1 by 1 + \ifnum \count 1<256 \loop \fi + }% }% -}% -% the aux file uses ' as the escape. -% Turn off \ as an escape so we do not lose on -% entries which were dumped with control sequences in their names. -% For example, 'xrdef {$\leq $-fun}{page ...} made by @defun ^^ -% Reference to such entries still does not work the way one would wish, -% but at least they do not bomb out when the aux file is read in. -\catcode `\{=1 \catcode `\}=2 -\catcode `\%=\other -\catcode `\'=0 -\catcode`\^=7 % to make ^^e4 etc usable in xref tags -\catcode `\\=\other -\openin 1 \jobname.aux -\ifeof 1 \else \closein 1 \input \jobname.aux \global\havexrefstrue -\global\warnedobstrue -\fi -% Open the new aux file. Tex will close it automatically at exit. -\openout \auxfile=\jobname.aux + % The aux file uses ' as the escape (for now). + % Turn off \ as an escape so we do not lose on + % entries which were dumped with control sequences in their names. + % For example, 'xrdef {$\leq $-fun}{page ...} made by @defun ^^ + % Reference to such entries still does not work the way one would wish, + % but at least they do not bomb out when the aux file is read in. + \catcode`\{=1 + \catcode`\}=2 + \catcode`\%=\other + \catcode`\'=0 + \catcode`\\=\other + % + \openin 1 \jobname.aux + \ifeof 1 \else + \closein 1 + \input \jobname.aux + \global\havexrefstrue + \global\warnedobstrue + \fi + % Open the new aux file. TeX will close it automatically at exit. + \openout\auxfile=\jobname.aux \endgroup} @@ -4051,10 +5462,11 @@ July\or August\or September\or October\or November\or December\fi % 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. +% 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.. +% @footnotestyle is meaningful for info output only. \let\footnotestyle=\comment \let\ptexfootnote=\footnote @@ -4080,7 +5492,11 @@ July\or August\or September\or October\or November\or December\fi % 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. % -\long\gdef\footnotezzz#1{\insert\footins{% +% Oh yes, they do; otherwise, @ifset and anything else that uses +% \parseargline fail inside footnotes because the tokens are fixed when +% the footnote is read. --karl, 16nov96. +% +\long\gdef\footnotezzz{\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. @@ -4094,6 +5510,8 @@ July\or August\or September\or October\or November\or December\fi \xspaceskip\z@skip \parindent\defaultparindent % + \smallfonts \rm + % % Hang the footnote text off the number. \hang \textindent{\thisfootno}% @@ -4102,8 +5520,13 @@ July\or August\or September\or October\or November\or December\fi % expands into a box, it must come within the paragraph, lest it % provide a place where TeX can split the footnote. \footstrut - #1\strut}% + \futurelet\next\fo@t } +\def\fo@t{\ifcat\bgroup\noexpand\next \let\next\f@@t + \else\let\next\f@t\fi \next} +\def\f@@t{\bgroup\aftergroup\@foot\let\next} +\def\f@t#1{#1\@foot} +\def\@foot{\strut\par\egroup} }%end \catcode `\@=11 @@ -4160,31 +5583,117 @@ July\or August\or September\or October\or November\or December\fi % \def\finalout{\overfullrule=0pt} +% @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 + \closein 1 + % Do not bother showing banner with post-v2.7 epsf.tex (available in + % doc/epsf.tex until it shows up on ctan). + \def\epsfannounce{\toks0 = }% + \input epsf.tex +\fi +% +% 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 just the usual extra ignored arg for parsing this stuff. +\def\imagexxx#1,#2,#3,#4\finish{% + \ifpdf + \centerline{\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 + \begingroup + \catcode`\^^M = 5 % in case we're inside an example + % If the image is by itself, center it. + \ifvmode + \nobreak\bigskip + % 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 + \centerline{\epsfbox{#1.eps}}% + \bigbreak + \else + % In the middle of a paragraph, no extra space. + \epsfbox{#1.eps}% + \fi + \endgroup + \fi +} -% End of control word definitions. -\message{and turning on texinfo input format.} +\message{localization,} +% and i18n. -\def\openindices{% - \newindex{cp}% - \newcodeindex{fn}% - \newcodeindex{vr}% - \newcodeindex{tp}% - \newcodeindex{ky}% - \newcodeindex{pg}% +% @documentlanguage is usually given very early, just after +% @setfilename. If done too late, it may not override everything +% properly. Single argument is the language abbreviation. +% It would be nice if we could set up a hyphenation file here. +% +\def\documentlanguage{\parsearg\dodocumentlanguage} +\def\dodocumentlanguage#1{% + \tex % read txi-??.tex file in plain TeX. + % Read the file if it exists. + \openin 1 txi-#1.tex + \ifeof1 + \errhelp = \nolanghelp + \errmessage{Cannot read language file txi-#1.tex}% + \let\temp = \relax + \else + \def\temp{\input txi-#1.tex }% + \fi + \temp + \endgroup } +\newhelp\nolanghelp{The given language definition file cannot be found or +is empty. Maybe you need to install it? In the current directory +should work if nowhere else does.} + + +% @documentencoding should change something in TeX eventually, most +% likely, but for now just recognize it. +\let\documentencoding = \comment -% Set some numeric style parameters, for 8.5 x 11 format. -%\hsize = 6.5in +% Page size parameters. +% \newdimen\defaultparindent \defaultparindent = 15pt -\parindent = \defaultparindent -\parskip 18pt plus 1pt -\setleading{15pt} -\advance\topskip by 1.2cm + +\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 +\vbadness = 10000 + +% Don't be so finicky about underfull hboxes, either. +\hbadness = 2000 % Following George Bush, just get rid of widows and orphans. \widowpenalty=10000 @@ -4193,89 +5702,125 @@ July\or August\or September\or October\or November\or December\fi % 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. This makes it come to about 9pt for the 8.5x11 format. +% \hsize. We call this whenever the paper size is set. % -\ifx\emergencystretch\thisisundefined - % Allow us to assign to \emergencystretch anyway. - \def\emergencystretch{\dimen0}% -\else - \emergencystretch = \hsize - \divide\emergencystretch by 45 -\fi +\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. Then whoever calls us can +% set \parskip and call \setleading for \baselineskip. +% +\def\internalpagesizes#1#2#3#4#5#6{% + \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 + % + \parindent = \defaultparindent + \setemergencystretch +} -% Use @smallbook to reset parameters for 7x9.5 format (or else 7x9.25) -\def\smallbook{ +% @letterpaper (the default). +\def\letterpaper{{\globaldefs = 1 + \parskip = 3pt plus 2pt minus 1pt + \setleading{13.2pt}% + % + % If page is nothing but text, make it come out even. + \internalpagesizes{46\baselineskip}{6in}{\voffset}{.25in}{\bindingoffset}{36pt}% +}} -% These values for secheadingskip and subsecheadingskip are -% experiments. RJC 7 Aug 1992 -\global\secheadingskip = 17pt plus 6pt minus 3pt -\global\subsecheadingskip = 14pt plus 6pt minus 3pt +% Use @smallbook to reset parameters for 7x9.5 (or so) format. +\def\smallbook{{\globaldefs = 1 + \parskip = 2pt plus 1pt + \setleading{12pt}% + % + \internalpagesizes{7.5in}{5.in}{\voffset}{.25in}{\bindingoffset}{16pt}% + % + \lispnarrowing = 0.3in + \tolerance = 700 + \hfuzz = 1pt + \contentsrightmargin = 0pt + \deftypemargin = 0pt + \defbodyindent = .5cm + % + \let\smalldisplay = \smalldisplayx + \let\smallexample = \smalllispx + \let\smallformat = \smallformatx + \let\smalllisp = \smalllispx +}} -\global\lispnarrowing = 0.3in -\setleading{12pt} -\advance\topskip by -1cm -\global\parskip 3pt plus 1pt -\global\hsize = 5in -\global\vsize=7.5in -\global\tolerance=700 -\global\hfuzz=1pt -\global\contentsrightmargin=0pt -\global\deftypemargin=0pt -\global\defbodyindent=.5cm +% Use @afourpaper to print on European A4 paper. +\def\afourpaper{{\globaldefs = 1 + \setleading{12pt}% + \parskip = 3pt plus 2pt minus 1pt + % + \internalpagesizes{53\baselineskip}{160mm}{\voffset}{4mm}{\bindingoffset}{44pt}% + % + \tolerance = 700 + \hfuzz = 1pt +}} -\global\pagewidth=\hsize -\global\pageheight=\vsize +% A specific text layout, 24x15cm overall, intended for A4 paper. Top margin +% 29mm, hence bottom margin 28mm, nominal side margin 3cm. +\def\afourlatex{{\globaldefs = 1 + \setleading{13.6pt}% + % + \afourpaper + \internalpagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}% + % + \globaldefs = 0 +}} -\global\let\smalllisp=\smalllispx -\global\let\smallexample=\smalllispx -\global\def\Esmallexample{\Esmalllisp} +% Use @afourwide to print on European A4 paper in wide format. +\def\afourwide{% + \afourpaper + \internalpagesizes{9.5in}{6.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}% + % + \globaldefs = 0 } -% Use @afourpaper to print on European A4 paper. -\def\afourpaper{ -\global\tolerance=700 -\global\hfuzz=1pt -\setleading{12pt} -\global\parskip 15pt plus 1pt - -\global\vsize= 53\baselineskip -\advance\vsize by \topskip -%\global\hsize= 5.85in % A4 wide 10pt -\global\hsize= 6.5in -\global\outerhsize=\hsize -\global\advance\outerhsize by 0.5in -\global\outervsize=\vsize -\global\advance\outervsize by 0.6in - -\global\pagewidth=\hsize -\global\pageheight=\vsize -} - -% Allow control of the text dimensions. Parameters in order: textheight; -% textwidth; \voffset; \hoffset (!); binding offset. All require a dimension; -% header is additional; added length extends the bottom of the page. - -\def\changepagesizes#1#2#3#4#5{ - \global\vsize= #1 - \advance\vsize by \topskip - \global\voffset= #3 - \global\hsize= #2 - \global\outerhsize=\hsize - \global\advance\outerhsize by 0.5in - \global\outervsize=\vsize - \global\advance\outervsize by 0.6in - \global\pagewidth=\hsize - \global\pageheight=\vsize - \global\normaloffset= #4 - \global\bindingoffset= #5} - -% This layout is compatible with Latex on A4 paper. - -\def\afourlatex{\changepagesizes{22cm}{15cm}{7mm}{4.6mm}{5mm}} +% @pagesizes TEXTHEIGHT[,TEXTWIDTH] +% Perhaps we should allow setting the margins, \topskip, \parskip, +% and/or leading, also. Or perhaps we should compute them somehow. +% +\def\pagesizes{\parsearg\pagesizesxxx} +\def\pagesizesxxx#1{\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{13.2pt}% + % + \internalpagesizes{#1}{\hsize}{\voffset}{\normaloffset}{\bindingoffset}{44pt}% +}} -% Use @afourwide to print on European A4 paper in wide format. -\def\afourwide{\afourpaper -\changepagesizes{9.5in}{6.5in}{\hoffset}{\normaloffset}{\bindingoffset}} +% 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 @@ -4286,6 +5831,7 @@ July\or August\or September\or October\or November\or December\fi \catcode`\<=\other \catcode`\>=\other \catcode`\+=\other +\catcode`\$=\other \def\normaldoublequote{"} \def\normaltilde{~} \def\normalcaret{^} @@ -4294,6 +5840,7 @@ July\or August\or September\or October\or November\or December\fi \def\normalless{<} \def\normalgreater{>} \def\normalplus{+} +\def\normaldollar{$} % This macro is used to make a character print one way in ttfont % where it can probably just be output, and another way in other fonts, @@ -4304,7 +5851,13 @@ July\or August\or September\or October\or November\or December\fi % 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\the\font=0pt #1\else #2\fi} +\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). @@ -4312,13 +5865,12 @@ July\or August\or September\or October\or November\or December\fi % use math or other variants that look better in normal text. \catcode`\"=\active -\def\activedoublequote{{\tt \char '042}} +\def\activedoublequote{{\tt\char34}} \let"=\activedoublequote \catcode`\~=\active -\def~{{\tt \char '176}} +\def~{{\tt\char126}} \chardef\hat=`\^ \catcode`\^=\active -\def\auxhat{\def^{'hat}} \def^{{\tt \hat}} \catcode`\_=\active @@ -4327,7 +5879,7 @@ July\or August\or September\or October\or November\or December\fi \def\_{\leavevmode \kern.06em \vbox{\hrule width.3em height.1ex}} \catcode`\|=\active -\def|{{\tt \char '174}} +\def|{{\tt\char124}} \chardef \less=`\< \catcode`\<=\active \def<{{\tt \less}} @@ -4336,6 +5888,8 @@ July\or August\or September\or October\or November\or December\fi \def>{{\tt \gtr}} \catcode`\+=\active \def+{{\tt \char 43}} +\catcode`\$=\active +\def${\ifusingit{{\sl\$}}\normaldollar} %\catcode 27=\active %\def^^[{$\diamondsuit$} @@ -4366,9 +5920,6 @@ July\or August\or September\or October\or November\or December\fi % \normalbackslash outputs one backslash in fixed width font. \def\normalbackslash{{\tt\rawbackslashxx}} -% Say @foo, not \foo, in error messages. -\escapechar=`\@ - % \catcode 17=0 % Define control-q \catcode`\\=\active @@ -4382,7 +5933,8 @@ July\or August\or September\or October\or November\or December\fi @let|=@normalverticalbar @let<=@normalless @let>=@normalgreater -@let+=@normalplus} +@let+=@normalplus +@let$=@normaldollar} @def@normalturnoffactive{@let"=@normaldoublequote @let\=@normalbackslash @@ -4392,7 +5944,8 @@ July\or August\or September\or October\or November\or December\fi @let|=@normalverticalbar @let<=@normalless @let>=@normalgreater -@let+=@normalplus} +@let+=@normalplus +@let$=@normaldollar} % Make _ and + \other characters, temporarily. % This is canceled by @fixbackslash. @@ -4411,16 +5964,29 @@ July\or August\or September\or October\or November\or December\fi % Also back turn 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} +@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. The @rm below -%% makes sure that the current font starts out as the newly loaded cmr10 -@catcode`@$=@other @catcode`@%=@other @catcode`@&=@other @catcode`@#=@other +% These look ok in all fonts, so just make them not special. +@catcode`@& = @other +@catcode`@# = @other +@catcode`@% = @other +@c Set initial fonts. @textfonts @rm + @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: diff --git a/doc/tools/Makefile.am b/doc/tools/Makefile.am new file mode 100644 index 0000000000..278b42e7ef --- /dev/null +++ b/doc/tools/Makefile.am @@ -0,0 +1,13 @@ +## $Id$ + +AUTOMAKE_OPTIONS = foreign 1.4 + +EXTRA_DIST = \ +update word-replace + +SUBDIRS = \ +bmenu \ +src2html1.4a \ +src2html \ +pdl2texi \ +texi2www diff --git a/doc/tools/bmenu/Makefile b/doc/tools/bmenu/Makefile deleted file mode 100644 index 6d5da7b9d0..0000000000 --- a/doc/tools/bmenu/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -# -# COPYRIGHT (c) 1988-1999. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. -# -# $Id$ -# - -CC=gcc -#CFLAGS=-O4 -fomit-frame-pointer -CFLAGS=-g - -#TEXINPUTS=/home/gnu/work/binutils-2.6/texinfo:. -PROG=bmenu - -all: $(PROG) - -$(BASE).txt: $(BASE).d ./$(PROG) - ./$(PROG) $(BASE).d - -$(PROG): main.o chain.o - gcc main.o chain.o -o $(PROG) - -main.o: main.c base.h - -chain.o: chain.c - -info: c_user.texinfo timer.texi - makeinfo c_user.texinfo - -TESTER=init -test: all - #rm -f timer.txt - #./bmenu -v timer.texi - #cp ../user/$(TESTER).texi . - ./bmenu -u "DOCS UP" -p "DOCS PREV" -n "DOCS NEXT" -v testdoc.txt - #mv $(TESTER).txt $(TESTER).texi - #makeinfo c_user.texinfo - - -clean: - rm -f *.o $(PROG) *.txt core *.html - rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f c_user c_user-* _* - diff --git a/doc/tools/bmenu/Makefile.am b/doc/tools/bmenu/Makefile.am new file mode 100644 index 0000000000..122467187b --- /dev/null +++ b/doc/tools/bmenu/Makefile.am @@ -0,0 +1,16 @@ +# +# COPYRIGHT (c) 1988-1998. +# On-Line Applications Research Corporation (OAR). +# All rights reserved. +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign 1.4 + +noinst_PROGRAMS=bmenu + +bmenu_SOURCES = \ +address.h chain.c isr.h \ +address.inl chain.h main.c \ +base.h chain.inl system.h diff --git a/doc/tools/configure.in b/doc/tools/configure.in new file mode 100644 index 0000000000..bf8d7efdc5 --- /dev/null +++ b/doc/tools/configure.in @@ -0,0 +1,32 @@ +dnl Process this file with autoconf to produce a configure script. +dnl NOTE: This is a very coarse port to automake +AC_PREREQ(2.13) + +AC_INIT(update) + +AM_INIT_AUTOMAKE(rtemsdoc-tools,0.0.0,no) +dnl Checks for programs. +AC_PROG_CC + +dnl Checks for libraries. + +dnl Checks for header files. +AC_HEADER_STDC +AC_CHECK_HEADERS(limits.h) + +dnl Checks for typedefs, structures, and compiler characteristics. + +dnl Checks for library functions. +AC_CHECK_FUNCS(strdup strstr) + +AC_OUTPUT( +Makefile +bmenu/Makefile +src2html/Makefile +src2html1.4a/Makefile +src2html1.4a/Ctags/Makefile +src2html1.4a/FreeBSD/Makefile +src2html1.4a/ctags-emacs/Makefile +pdl2texi/Makefile +texi2www/Makefile +) diff --git a/doc/tools/pdl2texi/Makefile b/doc/tools/pdl2texi/Makefile deleted file mode 100644 index 6827898edb..0000000000 --- a/doc/tools/pdl2texi/Makefile +++ /dev/null @@ -1,85 +0,0 @@ -# -# COPYRIGHT (c) 1996-1997. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. -# -# $Id$ -# - -CC=gcc -#CFLAGS=-O4 -fomit-frame-pointer -CFLAGS=-g - -TEXINPUTS=/home/gnu/work/binutils-2.6/texinfo:. -PROG=pdl2texi - -all: $(PROG) - -$(BASE).texi: $(BASE).d ./$(PROG) - ./$(PROG) $(BASE).d - -$(PROG): main.o chain.o - gcc -static main.o chain.o -o $(PROG) - -drive: Drive -Drive: $(BASE).txt - /usr1/home/joel/tmp/makeinfo $(PROJECT).texi - -main.o: main.c base.h - -chain.o: chain.c - -dvi: dirs $(PROJECT).dvi -ps: $(PROJECT).ps -pdf: dirs $(PROJECT).pdf - -$(PROJECT).pdf: $(FILES) - $(TEXI2PDF) $(PROJECT).texi -info: Drive -html: $(PROJECT).texi $(BASE).txt - ../textools/texi2html $(PROJECT).texi - -$(BASE).txt: $(BASE).d - ./$(PROG) -v -p "Turret Subsystem" -u "Turret Subsystem" $(BASE).d - -$(PROJECT).ps: $(PROJECT).dvi - dvips -o $(PROJECT).ps $(PROJECT).dvi - -$(PROJECT).dvi: $(FILES) - $(TEXI2DVI) $(PROJECT).texi - cp $(PROJECT).dvi $(WWW_INSTALL)/$(PROJECT) - -view: - test -r $(PROJECT).ps && ghostview $(PROJECT).ps - -tests: test test1 - -test: $(PROG) - rm -f $(BASE).texi - ./$(PROG) -v -p "Turret Subsystem" -u "Turret Subsystem" $(BASE).d - -test1: - rm -f t1.txt - ./$(PROG) -v t1.d - -wtest: - rm -f $(BASE).txt - ./$(PROG) -w -v -p "Turret Subsystem" -u "Turret Subsystem" $(BASE).d - -enum: - ./$(PROG) -w -v -p "Magic Subsystem" \ - -u "Magic Subsystem" test_cases/enum.d - ./$(PROG) -w -v -p "Magic Subsystem" \ - -u "Magic Subsystem" test_cases/enumbad.d - -avdas: - ./$(PROG) -v -p "Magic Subsystem" \ - -u "Magic Subsystem" test_cases/avdas.d - ./$(PROG) -w -v -p "Magic Subsystem" \ - -u "Magic Subsystem" test_cases/avdas.d - -clean: - rm -f *.o $(PROG) *.txt core *.html $(PROJECT) Drive.texi $(PROJECT).pdf - rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f test_cases/*.txt test_cases/*.texi - diff --git a/doc/tools/pdl2texi/Makefile.am b/doc/tools/pdl2texi/Makefile.am new file mode 100644 index 0000000000..0d31296e7a --- /dev/null +++ b/doc/tools/pdl2texi/Makefile.am @@ -0,0 +1,59 @@ +# +# COPYRIGHT (c) 1996-1997. +# On-Line Applications Research Corporation (OAR). +# All rights reserved. +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign + +PROG=pdl2texi +noinst_PROGRAMS=$(PROG) + +#$(BASE).texi: $(BASE).d ./$(PROG) +# ./$(PROG) $(BASE).d + +pdl2texi_SOURCES = \ +address.inl chain.h main.c system.h \ +base.h chain.inl address.h chain.c \ +isr.h + +BASE=sample + +#drive: Drive +#Drive: $(BASE).txt +# /usr1/home/joel/tmp/makeinfo $(PROJECT).texi + +#dvi: $(PROJECT).dvi +#ps: $(PROJECT).ps +#info: Drive +#html: $(PROJECT).texi $(BASE).txt +# ../textools/texi2html $(PROJECT).texi + +$(BASE).txt: $(BASE).d + ./$(PROG) -v -p "Turret Subsystem" -u "Turret Subsystem" $(BASE).d + +wtest: + rm -f $(BASE).txt + ./$(PROG) -w -v -p "Turret Subsystem" -u "Turret Subsystem" $(BASE).d + +enum: + ./$(PROG) -w -v -p "Magic Subsystem" \ + -u "Magic Subsystem" test_cases/enum.d + ./$(PROG) -w -v -p "Magic Subsystem" \ + -u "Magic Subsystem" test_cases/enumbad.d + +avdas: + ./$(PROG) -v -p "Magic Subsystem" \ + -u "Magic Subsystem" test_cases/avdas.d + ./$(PROG) -w -v -p "Magic Subsystem" \ + -u "Magic Subsystem" test_cases/avdas.d + +clean: + rm -f *.o $(PROG) *.txt core *.html $(PROJECT) Drive.texi + rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) + rm -f test_cases/*.txt test_cases/*.texi + +EXTRA_DIST = test_cases/enum.d test_cases/enumbad.d test_cases/table.d \ + s.d sample.d diff --git a/doc/tools/src2html/Makefile b/doc/tools/src2html/Makefile deleted file mode 100644 index 6aa7b47e39..0000000000 --- a/doc/tools/src2html/Makefile +++ /dev/null @@ -1,38 +0,0 @@ -# -# COPYRIGHT (c) 1988-1999. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. -# -# $Id$ -# - -CC=gcc -CFLAGS=-g - -PROGS=ctags-wr ctags-new ctags src2html - -SRC2HTMLDIR=src2html1.4a - -all: tools - -tools: $(PROGS) - chmod +x $(PROGS) - -ctags-wr: - cp ../$(SRC2HTMLDIR)/ctags-wr . - -ctags-new: - cd ../$(SRC2HTMLDIR)/Ctags ; gmake - cp ../$(SRC2HTMLDIR)/Ctags/ctags-new . - -# EMACS ctags with Ada awareness -ctags: - cp ../$(SRC2HTMLDIR)/ctags-emacs/ctags ctags - -src2html: - cp ../$(SRC2HTMLDIR)/src2html . - -clean: - rm -f $(PROGS) - cd ../$(SRC2HTMLDIR)/Ctags ; gmake clean - diff --git a/doc/tools/src2html/Makefile.am b/doc/tools/src2html/Makefile.am new file mode 100644 index 0000000000..76d61c75ce --- /dev/null +++ b/doc/tools/src2html/Makefile.am @@ -0,0 +1,25 @@ +# +# COPYRIGHT (c) 1988-1998. +# On-Line Applications Research Corporation (OAR). +# All rights reserved. +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign + +SRC2HTMLDIR=$(top_srcdir)/src2html1.4a + +ctags-wr: $(SRC2HTMLDIR)/ctags-wr + cp $< $@ + chmod 755 $@ + +ctags-new: $(SRC2HTMLDIR)/Ctags/ctags-new + cp $< $@ + +# EMACS ctags with Ada awareness +ctags: $(SRC2HTMLDIR)/ctags-emacs/ctags + cp $< $@ + +src2html: $(SRC2HTMLDIR)/src2html + cp $< $@ diff --git a/doc/tools/src2html1.4a/Ctags/Makefile b/doc/tools/src2html1.4a/Ctags/Makefile deleted file mode 100644 index c6dd7f0d6a..0000000000 --- a/doc/tools/src2html1.4a/Ctags/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -# @(#)Makefile 5.6 (Berkeley) 5/11/90 - -CC=gcc - -PROG= ctags-new -CFLAGS+=-I. -g - -SRCS= C.c ctags.c fortran.c lisp.c print.c tree.c yacc.c strerror.c - -ctags: C.o ctags.o fortran.o lisp.o print.o tree.o yacc.o strerror.o - $(CC) -o ctags-new C.o ctags.o fortran.o lisp.o print.o tree.o yacc.o \ - strerror.o - -clean: - rm -f *.o ctags-new diff --git a/doc/tools/src2html1.4a/Ctags/Makefile.am b/doc/tools/src2html1.4a/Ctags/Makefile.am new file mode 100644 index 0000000000..0066980147 --- /dev/null +++ b/doc/tools/src2html1.4a/Ctags/Makefile.am @@ -0,0 +1,10 @@ +## $Id$ + +AUTOMAKE_OPTIONS = foreign + +noinst_PROGRAMS = ctags-new + +ctags_new_SOURCES = C.c ctags.c fortran.c lisp.c print.c \ +tree.c yacc.c strerror.c ctags.h + +EXTRA_DIST = ctags.1 z.c diff --git a/doc/tools/src2html1.4a/FreeBSD/Makefile.am b/doc/tools/src2html1.4a/FreeBSD/Makefile.am new file mode 100644 index 0000000000..df56641ebe --- /dev/null +++ b/doc/tools/src2html1.4a/FreeBSD/Makefile.am @@ -0,0 +1,21 @@ +## $Id$ + +AUTOMAKE_OPTIONS = foreign + +EXTRA_DIST = \ +FreeBSD.hdr \ +FreeBSD.s2h \ +conf.hdr \ +ddb.hdr \ +i386.i386.hdr \ +i386.include.hdr \ +i386.isa.hdr \ +i386.stand.hdr \ +kern.hdr \ +net.hdr \ +netinet.hdr \ +nfs.hdr \ +stand.hdr \ +sys.hdr \ +ufs.hdr \ +vm.hdr diff --git a/doc/tools/src2html1.4a/Makefile.am b/doc/tools/src2html1.4a/Makefile.am new file mode 100644 index 0000000000..8814866d6f --- /dev/null +++ b/doc/tools/src2html1.4a/Makefile.am @@ -0,0 +1,8 @@ +AUTOMAKE_OPTIONS = foreign + +SUBDIRS = Ctags FreeBSD ctags-emacs + +noinst_SCRIPTS = ctags-wr src2html src2html.cgi + +EXTRA_DIST = src2html.1 Readme $(noinst_SCRIPTS) + diff --git a/doc/tools/src2html1.4a/ctags-emacs/Makefile.am b/doc/tools/src2html1.4a/ctags-emacs/Makefile.am new file mode 100644 index 0000000000..8c0c4a0ac5 --- /dev/null +++ b/doc/tools/src2html1.4a/ctags-emacs/Makefile.am @@ -0,0 +1,5 @@ +## $Id$ + +AUTOMAKE_OPTIONS = foreign + +EXTRA_DIST = ctags etags.c-ada-patch README diff --git a/doc/tools/texi2www/Makefile b/doc/tools/texi2www/Makefile deleted file mode 100644 index 11ef5a3d65..0000000000 --- a/doc/tools/texi2www/Makefile +++ /dev/null @@ -1,50 +0,0 @@ -# -# COPYRIGHT (c) 1988-1999. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. -# -# $Id$ -# - -PROJECT=texi2www - -include ../../Make.config - -all: html info ps pdf - -dirs: - $(make-dirs) - -FILES= texi2www.texi - -info: - -dvi: dirs $(PROJECT).dvi - -ps: dirs $(PROJECT).ps -pdf: dirs $(PROJECT).pdf - -$(PROJECT).pdf: $(FILES) - #$(TEXI2PDF) $(PROJECT).texi - #cp $(PROJECT).pdf $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).ps: $(PROJECT).dvi - #dvips -o $(PROJECT).ps $(PROJECT).dvi - #cp $(PROJECT).ps $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).dvi: $(FILES) - #$(TEXI2DVI) $(PROJECT).texi - #cp $(PROJECT).dvi $(WWW_INSTALL)/$(PROJECT) - -html: dirs $(FILES) - #-mkdir -p $(WWW_INSTALL)/$(PROJECT) - #$(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \ - # $(PROJECT).texi - -clean: - rm -f *.o $(PROG) *.txt core $(PROJECT).pdf - rm -f *.dvi *.ps *.log *.aux *.cp *.cps - rm -f *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f $(PROJECT)-* $(GENERATED_FILES) - rm -f *.fixed _* - diff --git a/doc/tools/texi2www/Makefile.am b/doc/tools/texi2www/Makefile.am new file mode 100644 index 0000000000..08b530df5f --- /dev/null +++ b/doc/tools/texi2www/Makefile.am @@ -0,0 +1,24 @@ +# +# COPYRIGHT (c) 1988-1998. +# On-Line Applications Research Corporation (OAR). +# All rights reserved. +# +# $Id$ +# + +AUTOMAKE_OPTIONS = foreign + +noinst_SCRIPTS = texi2www texi2dvi + +EXTRA_DIST = \ +$(noinst_SCRIPTS) \ +dir-arrow.gif prev-arrow.gif \ +missing-arrow.gif up-arrow.gif \ +next-arrow.gif \ +texi2www.texi \ +archive/texi2www-960103.tgz + +PROJECT=texi2www + +# TEXINFO_TEX = $(top_srcdir)/../texinfo/texinfo.tex +# info_TEXINFOS = texi2www.texi diff --git a/doc/tools/word-replace2 b/doc/tools/word-replace2 new file mode 100644 index 0000000000..a56d88a688 --- /dev/null +++ b/doc/tools/word-replace2 @@ -0,0 +1,101 @@ +#!/usr/bin/perl +# +# $Id$ +# + +eval "exec /usr/local/bin/perl -S $0 $*" + if $running_under_some_shell; + +require 'getopts.pl'; +&Getopts("p:vh"); # help, pattern file, verbose, + +if ($opt_h || ! $opt_p) { + print STDERR <<NO_MORE_HELP; +word-replace + + Replace *words* with patterns. Pattern file specifies which patterns + to replace on each line. All patterns are wrapped with perl \\b regexp + specifiers. + +Usage: $0 [-v] -p pattern-file files to replace + + -v -- possibly more verbose + -p file -- pattern file + -h -- help + + anything else == this help message + +Pattern file looks like this: + +# Example: +# ignores all lines with beginning with # or not exactly 2 fields +_Dorky_Name rtems_dorky_name # comments, and blank lines are cool +_Dorky_Name2 rtems_dorky_name2 # comments, and blank lines are cool +NO_MORE_HELP + exit 0; +} + +$verbose = $opt_v; +$pattern_file = $opt_p; + +# make standard outputs unbuffered (so the '.'s come out ok) +$oldfh = select(STDERR); $| = 1; select($oldfh); +$oldfh = select(STDOUT); $| = 1; select($oldfh); + +# pull in the patterns +open(PATTERNS, "<$pattern_file") || + die "could not open $pattern_file: $!, crapped out at"; + + + +foreach (<PATTERNS>) +{ + chop; + s/#.*//; + next if /^$/; + ($orig, $new, $junk, @rest) = split; + next if ( ! $orig || ! $new || $junk); # <2 or >2 patterns + die "pattern appears 2x: '$orig' in '$pattern_file'--" if defined($patterns{$orig}); + $patterns{$orig} = $new; +} +close PATTERNS; +# walk thru each line in each file + +$infile = '-' ; +$outfile = '-' ; + +if ( $#ARGV > -1 ) +{ + $infile = "@ARGV[0]" ; + shift @ARGV ; +} + +if ( $#ARGV > -1 ) +{ + $outfile = "@ARGV[0]" ; + shift @ARGV ; +} + +print STDERR "$outfile\t"; + +open (INFILE, "<$infile") || + die "could not open input file $infile: $!"; + +open (OUTFILE, ">$outfile") || + die "could not open output file $outfile: $!"; + +$line = join('',<INFILE>) ; + + foreach $key (keys %patterns) + { + if ( $line =~ s/\b$key\b/$patterns{$key}/ge ) + { + print STDERR "." ; + } + } + +print OUTFILE $line ; + +print STDERR "\n"; +close INFILE; +close OUTFILE; diff --git a/doc/user/Makefile b/doc/user/Makefile.am index 1e4cc53234..fc81acf71c 100644 --- a/doc/user/Makefile +++ b/doc/user/Makefile.am @@ -6,21 +6,15 @@ # $Id$ # -PROJECT=c_user +AUTOMAKE_OPTIONS = foreign -include ../Make.config +PROJECT=c_user -all: html info ps pdf +include $(top_srcdir)/project.am -dirs: - $(make-dirs) +COMMON_FILES=$(top_srcdir)/common/cpright.texi -COMMON_FILES=../common/cpright.texi -FILES= bsp.texi c_user.texi clock.texi concepts.texi conf.texi \ - dirstat.texi dpmem.texi event.texi example.texi fatal.texi \ - glossary.texi init.texi intr.texi io.texi mp.texi msg.texi overview.texi \ - part.texi preface.texi region.texi rtmon.texi schedule.texi sem.texi \ - signal.texi task.texi timer.texi userext.texi $(COMMON_FILES) +FILES= bsp.texi dirstat.texi example.texi glossary.texi preface.texi GENERATED_FILES=overview.texi concepts.texi init.texi task.texi \ intr.texi clock.texi timer.texi sem.texi msg.texi \ @@ -28,167 +22,136 @@ GENERATED_FILES=overview.texi concepts.texi init.texi task.texi \ dpmem.texi io.texi fatal.texi schedule.texi rtmon.texi \ bsp.texi userext.texi conf.texi mp.texi -INFOFILES=$(wildcard $(PROJECT) $(PROJECT)-*) - -info: dirs $(PROJECT) - cp $(PROJECT) $(PROJECT)-* $(INFO_INSTALL) - -$(PROJECT): $(FILES) - $(MAKEINFO) $(PROJECT).texi - -dvi: dirs $(PROJECT).dvi -ps: dirs $(PROJECT).ps -pdf: dirs $(PROJECT).pdf - -$(PROJECT).pdf: $(FILES) - $(TEXI2PDF) $(PROJECT).texi - cp $(PROJECT).pdf $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).ps: $(PROJECT).dvi - dvips -o $(PROJECT).ps $(PROJECT).dvi - cp $(PROJECT).ps $(WWW_INSTALL)/$(PROJECT) - -$(PROJECT).dvi: $(FILES) - $(TEXI2DVI) $(PROJECT).texi - cp $(PROJECT).dvi $(WWW_INSTALL)/$(PROJECT) - -html: dirs $(FILES) - -mkdir -p $(WWW_INSTALL)/$(PROJECT) - cp rtemsarc.png rtemspie.png states.png $(WWW_INSTALL)/c_user - $(TEXI2WWW) $(TEXI2WWW_ARGS) -dir $(WWW_INSTALL)/$(PROJECT) \ - $(PROJECT).texi - -index: - texindex $(PROJECT).cp $(PROJECT).vr $(PROJECT).fn \ - $(PROJECT).tp $(PROJECT).pg $(PROJECT).ky - -clean: - rm -f *.o $(PROG) *.txt core *.html $(PROJECT).pdf - rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE) - rm -f $(PROJECT) $(PROJECT)-* _* $(GENERATED_FILES) - rm -f *.cps *.cpss *.fns *.kys *.pgs *.tps *.vrs +info_TEXINFOS = c_user.texi +c_user_TEXINFOS = $(FILES) $(COMMON_FILES) $(GENERATED_FILES) +PNG_FILES = rtemsarc.png rtemspie.png states.png +if USE_HTML +html_project_DATA += $(PNG_FILES) +endif #preface.texi: preface.t # $(BMENU) -p "Top" \ # -u "Top" \ -# -n "Overview" ${*}.t +# -n "Overview" $< overview.texi: overview.t $(BMENU) -p "Preface" \ -u "Top" \ - -n "Key Concepts" ${*}.t + -n "Key Concepts" $< concepts.texi: concepts.t $(BMENU) -p "Overview Manual Organization" \ -u "Top" \ - -n "Initialization Manager" ${*}.t + -n "Initialization Manager" $< init.texi: init.t $(BMENU) -p "Key Concepts Memory Management" \ -u "Top" \ - -n "Task Manager" ${*}.t + -n "Task Manager" $< task.texi: task.t $(BMENU) -p "Initialization Manager SHUTDOWN_EXECUTIVE - Shutdown RTEMS" \ -u "Top" \ - -n "Interrupt Manager" ${*}.t + -n "Interrupt Manager" $< intr.texi: intr.t $(BMENU) -p "Task Manager TASK_VARIABLE_DELETE - Remove per task variable" \ -u "Top" \ - -n "Clock Manager" ${*}.t + -n "Clock Manager" $< clock.texi: clock.t $(BMENU) \ -p "Interrupt Manager INTERRUPT_IS_IN_PROGRESS - Is an ISR in Progress" \ -u "Top" \ - -n "Timer Manager" ${*}.t + -n "Timer Manager" $< timer.texi: timer.t $(BMENU) -p "Clock Manager CLOCK_TICK - Announce a clock tick" \ -u "Top" \ - -n "Semaphore Manager" ${*}.t + -n "Semaphore Manager" $< sem.texi: sem.t $(BMENU) -p "Timer Manager TIMER_RESET - Reset an interval timer" \ -u "Top" \ - -n "Message Manager" ${*}.t + -n "Message Manager" $< msg.texi: msg.t $(BMENU) -p "Semaphore Manager SEMAPHORE_FLUSH - Unblock all tasks waiting on a semaphore" \ -u "Top" \ - -n "Event Manager" ${*}.t + -n "Event Manager" $< event.texi: event.t $(BMENU) \ -p "Message Manager MESSAGE_QUEUE_FLUSH - Flush all messages on a queue" \ -u "Top" \ - -n "Signal Manager" ${*}.t + -n "Signal Manager" $< signal.texi: signal.t $(BMENU) -p "Event Manager EVENT_RECEIVE - Receive event condition" \ -u "Top" \ - -n "Partition Manager" ${*}.t + -n "Partition Manager" $< part.texi: part.t $(BMENU) -p "Signal Manager SIGNAL_SEND - Send signal set to a task" \ -u "Top" \ - -n "Region Manager" ${*}.t + -n "Region Manager" $< region.texi: region.t $(BMENU) \ -p "Partition Manager PARTITION_RETURN_BUFFER - Return buffer to a partition" \ -u "Top" \ - -n "Dual-Ported Memory Manager" ${*}.t + -n "Dual-Ported Memory Manager" $< dpmem.texi: dpmem.t $(BMENU) \ -p "Region Manager REGION_GET_SEGMENT_SIZE - Obtain size of a segment" \ -u "Top" \ - -n "I/O Manager" ${*}.t + -n "I/O Manager" $< io.texi: io.t $(BMENU) -p "Dual-Ported Memory Manager PORT_INTERNAL_TO_EXTERNAL - Convert internal to external address" \ -u "Top" \ - -n "Fatal Error Manager" ${*}.t + -n "Fatal Error Manager" $< fatal.texi: fatal.t $(BMENU) -p "I/O Manager IO_CONTROL - Special device services" \ -u "Top" \ - -n "Scheduling Concepts" ${*}.t + -n "Scheduling Concepts" $< schedule.texi: schedule.t $(BMENU) \ -p "Fatal Error Manager FATAL_ERROR_OCCURRED - Invoke the fatal error handler" \ -u "Top" \ - -n "Rate Monotonic Manager" ${*}.t + -n "Rate Monotonic Manager" $< rtmon.texi: rtmon.t $(BMENU) -p "Scheduling Concepts Task State Transitions" \ -u "Top" \ - -n "Board Support Packages" ${*}.t + -n "Board Support Packages" $< bsp.texi: bsp.t $(BMENU) -p "Rate Monotonic Manager RATE_MONOTONIC_GET_STATUS - Obtain status information on period" \ -u "Top" \ - -n "User Extensions Manager" ${*}.t + -n "User Extensions Manager" $< userext.texi: userext.t $(BMENU) -p "Board Support Packages Heterogeneous Systems" \ -u "Top" \ - -n "Configuring a System" ${*}.t + -n "Configuring a System" $< conf.texi: conf.t $(BMENU) -p "User Extensions Manager EXTENSION_DELETE - Delete a extension set" \ -u "Top" \ - -n "Multiprocessing Manager" ${*}.t + -n "Multiprocessing Manager" $< mp.texi: mp.t $(BMENU) -p "Configuring a System Sizing the RTEMS RAM Workspace" \ -u "Top" \ - -n "Directive Status Codes" ${*}.t + -n "Directive Status Codes" $< + +noinst_DATA = \ +states.gif states.eps \ +rtemspie.gif rtemspie.eps -convert: - /usr/bin/gs -dMaxBitmap=300000000 -g5500x5500 -sDEVICE=pdfwrite -q -dNOPAUSE -dSAFER -sOutputFile=rtemspie.pdf -- rtemspie.eps -c -quit - /usr/bin/gs -dMaxBitmap=300000000 -g5500x5500 -sDEVICE=pdfwrite -q -dNOPAUSE -dSAFER -sOutputFile=states.pdf -- states.eps -c -quit +EXTRA_DIST = *.t $(PNG_FILES) $(noinst_DATA) diff --git a/doc/user/rtemspie.pdf b/doc/user/rtemspie.pdf Binary files differdeleted file mode 100644 index ad64183eed..0000000000 --- a/doc/user/rtemspie.pdf +++ /dev/null diff --git a/doc/user/states.pdf b/doc/user/states.pdf Binary files differdeleted file mode 100644 index 490d2e00cd..0000000000 --- a/doc/user/states.pdf +++ /dev/null |