summaryrefslogtreecommitdiff
path: root/xdelta1/doc
diff options
context:
space:
mode:
authordotdotisdead <dotdotisdead@a3eca27d-f21b-0410-9b4a-6511e771f64e>2006-09-30 04:47:47 +0000
committerdotdotisdead <dotdotisdead@a3eca27d-f21b-0410-9b4a-6511e771f64e>2006-09-30 04:47:47 +0000
commitad85653ca73c8126de516b9a4294e8f08577c00d (patch)
tree79fb4d644ccf6a4fe8dac146b801a21d63537b23 /xdelta1/doc
parent5a7c245871879325d7b05c06e0b2011203986ee8 (diff)
import 1.1.3
Diffstat (limited to 'xdelta1/doc')
-rwxr-xr-xxdelta1/doc/CVS/Entries4
-rwxr-xr-xxdelta1/doc/CVS/Repository1
-rwxr-xr-xxdelta1/doc/CVS/Root1
-rw-r--r--xdelta1/doc/Makefile236
-rwxr-xr-xxdelta1/doc/Makefile.am3
-rwxr-xr-xxdelta1/doc/Makefile.in236
-rwxr-xr-xxdelta1/doc/old/dcc99/CVS/Entries14
-rwxr-xr-xxdelta1/doc/old/dcc99/CVS/Repository1
-rwxr-xr-xxdelta1/doc/old/dcc99/CVS/Root1
-rwxr-xr-xxdelta1/doc/old/dcc99/Makefile19
-rwxr-xr-xxdelta1/doc/old/dcc99/data/CVS/Entries11
-rwxr-xr-xxdelta1/doc/old/dcc99/data/CVS/Repository1
-rwxr-xr-xxdelta1/doc/old/dcc99/data/CVS/Root1
-rwxr-xr-xxdelta1/doc/old/dcc99/data/analyze.l438
-rwxr-xr-xxdelta1/doc/old/dcc99/data/fig1.data29
-rwxr-xr-xxdelta1/doc/old/dcc99/data/fig1.m20
-rwxr-xr-xxdelta1/doc/old/dcc99/data/fig2.data114
-rwxr-xr-xxdelta1/doc/old/dcc99/data/fig2.m9
-rwxr-xr-xxdelta1/doc/old/dcc99/data/mytime.c61
-rwxr-xr-xxdelta1/doc/old/dcc99/data/runtest38
-rwxr-xr-xxdelta1/doc/old/dcc99/data/runtest-one71
-rwxr-xr-xxdelta1/doc/old/dcc99/data/runtest-versions127
-rwxr-xr-xxdelta1/doc/old/dcc99/data/tclean.l38
-rwxr-xr-xxdelta1/doc/old/dcc99/dcc99.bib502
-rwxr-xr-xxdelta1/doc/old/dcc99/dcc99.sty56
-rwxr-xr-xxdelta1/doc/old/dcc99/dcc99.tex1297
-rwxr-xr-xxdelta1/doc/old/dcc99/dead.code518
-rwxr-xr-xxdelta1/doc/old/dcc99/exact-delta/CVS/Entries4
-rwxr-xr-xxdelta1/doc/old/dcc99/exact-delta/CVS/Repository1
-rwxr-xr-xxdelta1/doc/old/dcc99/exact-delta/CVS/Root1
-rwxr-xr-xxdelta1/doc/old/dcc99/exact-delta/delta.cc176
-rwxr-xr-xxdelta1/doc/old/dcc99/exact-delta/suffix.cc427
-rwxr-xr-xxdelta1/doc/old/dcc99/exact-delta/suffix.h117
-rwxr-xr-xxdelta1/doc/old/dcc99/figs/CVS/Entries23
-rwxr-xr-xxdelta1/doc/old/dcc99/figs/CVS/Repository1
-rwxr-xr-xxdelta1/doc/old/dcc99/figs/CVS/Root1
-rwxr-xr-xxdelta1/doc/old/dcc99/figs/bigsizes.eps766
-rwxr-xr-xxdelta1/doc/old/dcc99/figs/dependency.eps463
-rwxr-xr-xxdelta1/doc/old/dcc99/figs/dependency.fig174
-rwxr-xr-xxdelta1/doc/old/dcc99/figs/dependency.fig.normalsize174
-rwxr-xr-xxdelta1/doc/old/dcc99/figs/jumping.eps154
-rwxr-xr-xxdelta1/doc/old/dcc99/figs/jumping.fig70
-rwxr-xr-xxdelta1/doc/old/dcc99/figs/normalize.fig256
-rwxr-xr-xxdelta1/doc/old/dcc99/figs/onestep.eps930
-rwxr-xr-xxdelta1/doc/old/dcc99/figs/onestep.fig256
-rwxr-xr-xxdelta1/doc/old/dcc99/figs/onestep.fig.normalsize254
-rwxr-xr-xxdelta1/doc/old/dcc99/figs/rcs.eps180
-rwxr-xr-xxdelta1/doc/old/dcc99/figs/rcs.fig31
-rwxr-xr-xxdelta1/doc/old/dcc99/figs/sizes.eps707
-rwxr-xr-xxdelta1/doc/old/dcc99/figs/strings.eps194
-rwxr-xr-xxdelta1/doc/old/dcc99/figs/strings.fig36
-rwxr-xr-xxdelta1/doc/old/dcc99/figs/strings.fig.normalsize42
-rwxr-xr-xxdelta1/doc/old/dcc99/figs/strings.fig.normalsize.eps194
-rwxr-xr-xxdelta1/doc/old/dcc99/figs/xdarchive.eps808
-rwxr-xr-xxdelta1/doc/old/dcc99/figs/xdarchive.fig198
-rwxr-xr-xxdelta1/doc/old/dcc99/figs/xdarchive.fig.normalsize196
-rwxr-xr-xxdelta1/doc/old/dcc99/figs/xdelta.eps200
-rwxr-xr-xxdelta1/doc/old/dcc99/figs/xdelta.fig33
-rwxr-xr-xxdelta1/doc/old/dcc99/lcs.c159
-rwxr-xr-xxdelta1/doc/old/dcc99/llncs.cls1004
-rwxr-xr-xxdelta1/doc/old/dcc99/mkex.c118
-rwxr-xr-xxdelta1/doc/old/dcc99/mkex2.c242
-rwxr-xr-xxdelta1/doc/old/dcc99/vdeltabin0 -> 76652 bytes
-rwxr-xr-xxdelta1/doc/old/dcc99/vupdatebin0 -> 75752 bytes
-rwxr-xr-xxdelta1/doc/old/xdelta.gifbin0 -> 13236 bytes
-rwxr-xr-xxdelta1/doc/old/xdelta.html183
-rwxr-xr-xxdelta1/doc/xdelta.1201
-rwxr-xr-xxdelta1/doc/xdelta.cat138
68 files changed, 12959 insertions, 0 deletions
diff --git a/xdelta1/doc/CVS/Entries b/xdelta1/doc/CVS/Entries
new file mode 100755
index 0000000..d029e40
--- /dev/null
+++ b/xdelta1/doc/CVS/Entries
@@ -0,0 +1,4 @@
1/Makefile.am/1.2/Sun Jun 24 07:21:50 2001/-ko/
2/xdelta.cat/1.2/Fri Jun 29 11:35:34 2001/-ko/
3/xdelta.1/1.5/Mon Sep 24 06:59:18 2001/-ko/
4D
diff --git a/xdelta1/doc/CVS/Repository b/xdelta1/doc/CVS/Repository
new file mode 100755
index 0000000..0e1072e
--- /dev/null
+++ b/xdelta1/doc/CVS/Repository
@@ -0,0 +1 @@
xdelta11/xdelta11/doc
diff --git a/xdelta1/doc/CVS/Root b/xdelta1/doc/CVS/Root
new file mode 100755
index 0000000..645ccf1
--- /dev/null
+++ b/xdelta1/doc/CVS/Root
@@ -0,0 +1 @@
:ext:jmacd@cvs.xdelta.sourceforge.net:/cvsroot/xdelta
diff --git a/xdelta1/doc/Makefile b/xdelta1/doc/Makefile
new file mode 100644
index 0000000..6c46cd7
--- /dev/null
+++ b/xdelta1/doc/Makefile
@@ -0,0 +1,236 @@
1# Generated automatically from Makefile.in by configure.
2# Makefile.in generated automatically by automake 1.4 from Makefile.am
3
4# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
5# This Makefile.in is free software; the Free Software Foundation
6# gives unlimited permission to copy and/or distribute it,
7# with or without modifications, as long as this notice is preserved.
8
9# This program is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
11# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
12# PARTICULAR PURPOSE.
13
14
15SHELL = /bin/sh
16
17srcdir = .
18top_srcdir = ..
19prefix = /usr/local
20exec_prefix = ${prefix}
21
22bindir = ${exec_prefix}/bin
23sbindir = ${exec_prefix}/sbin
24libexecdir = ${exec_prefix}/libexec
25datadir = ${prefix}/share
26sysconfdir = ${prefix}/etc
27sharedstatedir = ${prefix}/com
28localstatedir = ${prefix}/var
29libdir = ${exec_prefix}/lib
30infodir = ${prefix}/info
31mandir = ${prefix}/man
32includedir = ${prefix}/include
33oldincludedir = /usr/include
34
35DESTDIR =
36
37pkgdatadir = $(datadir)/xdelta
38pkglibdir = $(libdir)/xdelta
39pkgincludedir = $(includedir)/xdelta
40
41top_builddir = ..
42
43ACLOCAL = aclocal
44AUTOCONF = autoconf
45AUTOMAKE = automake
46AUTOHEADER = autoheader
47
48INSTALL = /usr/bin/install -c
49INSTALL_PROGRAM = ${INSTALL} $(AM_INSTALL_PROGRAM_FLAGS)
50INSTALL_DATA = ${INSTALL} -m 644
51INSTALL_SCRIPT = ${INSTALL_PROGRAM}
52transform = s,x,x,
53
54NORMAL_INSTALL = :
55PRE_INSTALL = :
56POST_INSTALL = :
57NORMAL_UNINSTALL = :
58PRE_UNINSTALL = :
59POST_UNINSTALL = :
60host_alias = i686-pc-linux-gnu
61host_triplet = i686-pc-linux-gnu
62AS = @AS@
63CC = gcc
64CPP = gcc -E
65DLLTOOL = @DLLTOOL@
66EMACS = /usr/bin/xemacs
67GLIB_CFLAGS = -I/usr/local/include/glib-1.2 -I/usr/local/lib/glib/include
68GLIB_CONFIG = /usr/local/bin/glib-config
69GLIB_LIBS = -L/usr/local/lib -lglib
70LD = /usr/i586-pc-linux-gnu/bin/ld
71LIBTOOL = $(SHELL) $(top_builddir)/libtool
72LN_S = ln
73MAINT = #
74MAKEINFO = makeinfo
75NM = /usr/bin/nm -B
76OBJDUMP = @OBJDUMP@
77PACKAGE = xdelta
78RANLIB = ranlib
79VERSION = 1.1.3
80top_srcdir_absolute = /mnt/polaroid/Polaroid/orbit_linux/home/jmacd/projects/xdelta11
81
82man_MANS = xdelta.1
83
84EXTRA_DIST = xdelta.1 xdelta.cat
85mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
86CONFIG_HEADER = ../config.h
87CONFIG_CLEAN_FILES =
88man1dir = $(mandir)/man1
89MANS = $(man_MANS)
90
91NROFF = nroff
92DIST_COMMON = Makefile.am Makefile.in
93
94
95DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
96
97TAR = tar
98GZIP_ENV = --best
99all: all-redirect
100.SUFFIXES:
101$(srcdir)/Makefile.in: # Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
102 cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile
103
104Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
105 cd $(top_builddir) \
106 && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
107
108
109install-man1:
110 $(mkinstalldirs) $(DESTDIR)$(man1dir)
111 @list='$(man1_MANS)'; \
112 l2='$(man_MANS)'; for i in $$l2; do \
113 case "$$i" in \
114 *.1*) list="$$list $$i" ;; \
115 esac; \
116 done; \
117 for i in $$list; do \
118 if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
119 else file=$$i; fi; \
120 ext=`echo $$i | sed -e 's/^.*\\.//'`; \
121 inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
122 inst=`echo $$inst | sed '$(transform)'`.$$ext; \
123 echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \
124 $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \
125 done
126
127uninstall-man1:
128 @list='$(man1_MANS)'; \
129 l2='$(man_MANS)'; for i in $$l2; do \
130 case "$$i" in \
131 *.1*) list="$$list $$i" ;; \
132 esac; \
133 done; \
134 for i in $$list; do \
135 ext=`echo $$i | sed -e 's/^.*\\.//'`; \
136 inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
137 inst=`echo $$inst | sed '$(transform)'`.$$ext; \
138 echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \
139 rm -f $(DESTDIR)$(man1dir)/$$inst; \
140 done
141install-man: $(MANS)
142 @$(NORMAL_INSTALL)
143 $(MAKE) $(AM_MAKEFLAGS) install-man1
144uninstall-man:
145 @$(NORMAL_UNINSTALL)
146 $(MAKE) $(AM_MAKEFLAGS) uninstall-man1
147tags: TAGS
148TAGS:
149
150
151distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
152
153subdir = doc
154
155distdir: $(DISTFILES)
156 here=`cd $(top_builddir) && pwd`; \
157 top_distdir=`cd $(top_distdir) && pwd`; \
158 distdir=`cd $(distdir) && pwd`; \
159 cd $(top_srcdir) \
160 && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu doc/Makefile
161 @for file in $(DISTFILES); do \
162 d=$(srcdir); \
163 if test -d $$d/$$file; then \
164 cp -pr $$d/$$file $(distdir)/$$file; \
165 else \
166 test -f $(distdir)/$$file \
167 || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
168 || cp -p $$d/$$file $(distdir)/$$file || :; \
169 fi; \
170 done
171info-am:
172info: info-am
173dvi-am:
174dvi: dvi-am
175check-am: all-am
176check: check-am
177installcheck-am:
178installcheck: installcheck-am
179install-exec-am:
180install-exec: install-exec-am
181
182install-data-am: install-man
183install-data: install-data-am
184
185install-am: all-am
186 @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
187install: install-am
188uninstall-am: uninstall-man
189uninstall: uninstall-am
190all-am: Makefile $(MANS)
191all-redirect: all-am
192install-strip:
193 $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
194installdirs:
195 $(mkinstalldirs) $(DESTDIR)$(mandir)/man1
196
197
198mostlyclean-generic:
199
200clean-generic:
201
202distclean-generic:
203 -rm -f Makefile $(CONFIG_CLEAN_FILES)
204 -rm -f config.cache config.log stamp-h stamp-h[0-9]*
205
206maintainer-clean-generic:
207mostlyclean-am: mostlyclean-generic
208
209mostlyclean: mostlyclean-am
210
211clean-am: clean-generic mostlyclean-am
212
213clean: clean-am
214
215distclean-am: distclean-generic clean-am
216 -rm -f libtool
217
218distclean: distclean-am
219
220maintainer-clean-am: maintainer-clean-generic distclean-am
221 @echo "This command is intended for maintainers to use;"
222 @echo "it deletes files that may require special tools to rebuild."
223
224maintainer-clean: maintainer-clean-am
225
226.PHONY: install-man1 uninstall-man1 install-man uninstall-man tags \
227distdir info-am info dvi-am dvi check check-am installcheck-am \
228installcheck install-exec-am install-exec install-data-am install-data \
229install-am install uninstall-am uninstall all-redirect all-am all \
230installdirs mostlyclean-generic distclean-generic clean-generic \
231maintainer-clean-generic clean mostlyclean distclean maintainer-clean
232
233
234# Tell versions [3.59,3.63) of GNU make to not export all variables.
235# Otherwise a system limit (for SysV at least) may be exceeded.
236.NOEXPORT:
diff --git a/xdelta1/doc/Makefile.am b/xdelta1/doc/Makefile.am
new file mode 100755
index 0000000..062008a
--- /dev/null
+++ b/xdelta1/doc/Makefile.am
@@ -0,0 +1,3 @@
1man_MANS = xdelta.1
2
3EXTRA_DIST = xdelta.1 xdelta.cat
diff --git a/xdelta1/doc/Makefile.in b/xdelta1/doc/Makefile.in
new file mode 100755
index 0000000..8bd322c
--- /dev/null
+++ b/xdelta1/doc/Makefile.in
@@ -0,0 +1,236 @@
1# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
2
3# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
4# This Makefile.in is free software; the Free Software Foundation
5# gives unlimited permission to copy and/or distribute it,
6# with or without modifications, as long as this notice is preserved.
7
8# This program is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
10# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11# PARTICULAR PURPOSE.
12
13
14SHELL = @SHELL@
15
16srcdir = @srcdir@
17top_srcdir = @top_srcdir@
18VPATH = @srcdir@
19prefix = @prefix@
20exec_prefix = @exec_prefix@
21
22bindir = @bindir@
23sbindir = @sbindir@
24libexecdir = @libexecdir@
25datadir = @datadir@
26sysconfdir = @sysconfdir@
27sharedstatedir = @sharedstatedir@
28localstatedir = @localstatedir@
29libdir = @libdir@
30infodir = @infodir@
31mandir = @mandir@
32includedir = @includedir@
33oldincludedir = /usr/include
34
35DESTDIR =
36
37pkgdatadir = $(datadir)/@PACKAGE@
38pkglibdir = $(libdir)/@PACKAGE@
39pkgincludedir = $(includedir)/@PACKAGE@
40
41top_builddir = ..
42
43ACLOCAL = @ACLOCAL@
44AUTOCONF = @AUTOCONF@
45AUTOMAKE = @AUTOMAKE@
46AUTOHEADER = @AUTOHEADER@
47
48INSTALL = @INSTALL@
49INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
50INSTALL_DATA = @INSTALL_DATA@
51INSTALL_SCRIPT = @INSTALL_SCRIPT@
52transform = @program_transform_name@
53
54NORMAL_INSTALL = :
55PRE_INSTALL = :
56POST_INSTALL = :
57NORMAL_UNINSTALL = :
58PRE_UNINSTALL = :
59POST_UNINSTALL = :
60host_alias = @host_alias@
61host_triplet = @host@
62AS = @AS@
63CC = @CC@
64CPP = @CPP@
65DLLTOOL = @DLLTOOL@
66EMACS = @EMACS@
67GLIB_CFLAGS = @GLIB_CFLAGS@
68GLIB_CONFIG = @GLIB_CONFIG@
69GLIB_LIBS = @GLIB_LIBS@
70LD = @LD@
71LIBTOOL = @LIBTOOL@
72LN_S = @LN_S@
73MAINT = @MAINT@
74MAKEINFO = @MAKEINFO@
75NM = @NM@
76OBJDUMP = @OBJDUMP@
77PACKAGE = @PACKAGE@
78RANLIB = @RANLIB@
79VERSION = @VERSION@
80top_srcdir_absolute = @top_srcdir_absolute@
81
82man_MANS = xdelta.1
83
84EXTRA_DIST = xdelta.1 xdelta.cat
85mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
86CONFIG_HEADER = ../config.h
87CONFIG_CLEAN_FILES =
88man1dir = $(mandir)/man1
89MANS = $(man_MANS)
90
91NROFF = nroff
92DIST_COMMON = Makefile.am Makefile.in
93
94
95DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
96
97TAR = tar
98GZIP_ENV = --best
99all: all-redirect
100.SUFFIXES:
101$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
102 cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile
103
104Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
105 cd $(top_builddir) \
106 && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
107
108
109install-man1:
110 $(mkinstalldirs) $(DESTDIR)$(man1dir)
111 @list='$(man1_MANS)'; \
112 l2='$(man_MANS)'; for i in $$l2; do \
113 case "$$i" in \
114 *.1*) list="$$list $$i" ;; \
115 esac; \
116 done; \
117 for i in $$list; do \
118 if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
119 else file=$$i; fi; \
120 ext=`echo $$i | sed -e 's/^.*\\.//'`; \
121 inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
122 inst=`echo $$inst | sed '$(transform)'`.$$ext; \
123 echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \
124 $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \
125 done
126
127uninstall-man1:
128 @list='$(man1_MANS)'; \
129 l2='$(man_MANS)'; for i in $$l2; do \
130 case "$$i" in \
131 *.1*) list="$$list $$i" ;; \
132 esac; \
133 done; \
134 for i in $$list; do \
135 ext=`echo $$i | sed -e 's/^.*\\.//'`; \
136 inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
137 inst=`echo $$inst | sed '$(transform)'`.$$ext; \
138 echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \
139 rm -f $(DESTDIR)$(man1dir)/$$inst; \
140 done
141install-man: $(MANS)
142 @$(NORMAL_INSTALL)
143 $(MAKE) $(AM_MAKEFLAGS) install-man1
144uninstall-man:
145 @$(NORMAL_UNINSTALL)
146 $(MAKE) $(AM_MAKEFLAGS) uninstall-man1
147tags: TAGS
148TAGS:
149
150
151distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
152
153subdir = doc
154
155distdir: $(DISTFILES)
156 here=`cd $(top_builddir) && pwd`; \
157 top_distdir=`cd $(top_distdir) && pwd`; \
158 distdir=`cd $(distdir) && pwd`; \
159 cd $(top_srcdir) \
160 && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu doc/Makefile
161 @for file in $(DISTFILES); do \
162 d=$(srcdir); \
163 if test -d $$d/$$file; then \
164 cp -pr $$d/$$file $(distdir)/$$file; \
165 else \
166 test -f $(distdir)/$$file \
167 || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
168 || cp -p $$d/$$file $(distdir)/$$file || :; \
169 fi; \
170 done
171info-am:
172info: info-am
173dvi-am:
174dvi: dvi-am
175check-am: all-am
176check: check-am
177installcheck-am:
178installcheck: installcheck-am
179install-exec-am:
180install-exec: install-exec-am
181
182install-data-am: install-man
183install-data: install-data-am
184
185install-am: all-am
186 @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
187install: install-am
188uninstall-am: uninstall-man
189uninstall: uninstall-am
190all-am: Makefile $(MANS)
191all-redirect: all-am
192install-strip:
193 $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
194installdirs:
195 $(mkinstalldirs) $(DESTDIR)$(mandir)/man1
196
197
198mostlyclean-generic:
199
200clean-generic:
201
202distclean-generic:
203 -rm -f Makefile $(CONFIG_CLEAN_FILES)
204 -rm -f config.cache config.log stamp-h stamp-h[0-9]*
205
206maintainer-clean-generic:
207mostlyclean-am: mostlyclean-generic
208
209mostlyclean: mostlyclean-am
210
211clean-am: clean-generic mostlyclean-am
212
213clean: clean-am
214
215distclean-am: distclean-generic clean-am
216 -rm -f libtool
217
218distclean: distclean-am
219
220maintainer-clean-am: maintainer-clean-generic distclean-am
221 @echo "This command is intended for maintainers to use;"
222 @echo "it deletes files that may require special tools to rebuild."
223
224maintainer-clean: maintainer-clean-am
225
226.PHONY: install-man1 uninstall-man1 install-man uninstall-man tags \
227distdir info-am info dvi-am dvi check check-am installcheck-am \
228installcheck install-exec-am install-exec install-data-am install-data \
229install-am install uninstall-am uninstall all-redirect all-am all \
230installdirs mostlyclean-generic distclean-generic clean-generic \
231maintainer-clean-generic clean mostlyclean distclean maintainer-clean
232
233
234# Tell versions [3.59,3.63) of GNU make to not export all variables.
235# Otherwise a system limit (for SysV at least) may be exceeded.
236.NOEXPORT:
diff --git a/xdelta1/doc/old/dcc99/CVS/Entries b/xdelta1/doc/old/dcc99/CVS/Entries
new file mode 100755
index 0000000..658871c
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/CVS/Entries
@@ -0,0 +1,14 @@
1D/data////
2D/exact-delta////
3D/figs////
4/Makefile/1.1.1.1/Tue Jun 12 03:16:38 2001/-ko/
5/dcc99.bib/1.1.1.1/Tue Jun 12 03:16:39 2001/-ko/
6/dcc99.sty/1.1.1.1/Tue Jun 12 03:16:39 2001/-ko/
7/dcc99.tex/1.1.1.1/Tue Jun 12 03:16:39 2001/-ko/
8/dead.code/1.1.1.1/Tue Jun 12 03:16:39 2001/-ko/
9/lcs.c/1.1.1.1/Tue Jun 12 03:16:39 2001/-ko/
10/llncs.cls/1.1.1.1/Tue Jun 12 03:16:39 2001/-ko/
11/mkex.c/1.1.1.1/Tue Jun 12 03:16:39 2001/-ko/
12/mkex2.c/1.1.1.1/Tue Jun 12 03:16:39 2001/-ko/
13/vdelta/1.1.1.1/Tue Jun 12 03:16:39 2001/-ko/
14/vupdate/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
diff --git a/xdelta1/doc/old/dcc99/CVS/Repository b/xdelta1/doc/old/dcc99/CVS/Repository
new file mode 100755
index 0000000..add325d
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/CVS/Repository
@@ -0,0 +1 @@
xdelta11/xdelta11/doc/dcc99
diff --git a/xdelta1/doc/old/dcc99/CVS/Root b/xdelta1/doc/old/dcc99/CVS/Root
new file mode 100755
index 0000000..645ccf1
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/CVS/Root
@@ -0,0 +1 @@
:ext:jmacd@cvs.xdelta.sourceforge.net:/cvsroot/xdelta
diff --git a/xdelta1/doc/old/dcc99/Makefile b/xdelta1/doc/old/dcc99/Makefile
new file mode 100755
index 0000000..5fdb623
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/Makefile
@@ -0,0 +1,19 @@
1all: dcc99.dvi
2
3# mkex mkex2 lcs
4
5# mkex: mkex.c
6# gcc -o mkex -Wall `glib-config --cflags` `glib-config --libs` -g mkex.c -lglib
7
8# mkex2: mkex2.c
9# gcc -o mkex2 -Wall `glib-config --cflags` `glib-config --libs` -g mkex2.c -lglib
10
11# lcs: lcs.c
12# gcc -o lcs -Wall -O lcs.c -lglib
13
14LATEX=latex
15
16dcc99.dvi: dcc99.tex dcc99.bib
17 $(LATEX) dcc99.tex
18 bibtex dcc99
19 $(LATEX) dcc99.tex
diff --git a/xdelta1/doc/old/dcc99/data/CVS/Entries b/xdelta1/doc/old/dcc99/data/CVS/Entries
new file mode 100755
index 0000000..23d6bb1
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/data/CVS/Entries
@@ -0,0 +1,11 @@
1/analyze.l/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
2/fig1.data/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
3/fig1.m/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
4/fig2.data/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
5/fig2.m/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
6/mytime.c/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
7/runtest/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
8/runtest-one/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
9/runtest-versions/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
10/tclean.l/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
11D
diff --git a/xdelta1/doc/old/dcc99/data/CVS/Repository b/xdelta1/doc/old/dcc99/data/CVS/Repository
new file mode 100755
index 0000000..33526a2
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/data/CVS/Repository
@@ -0,0 +1 @@
xdelta11/xdelta11/doc/dcc99/data
diff --git a/xdelta1/doc/old/dcc99/data/CVS/Root b/xdelta1/doc/old/dcc99/data/CVS/Root
new file mode 100755
index 0000000..645ccf1
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/data/CVS/Root
@@ -0,0 +1 @@
:ext:jmacd@cvs.xdelta.sourceforge.net:/cvsroot/xdelta
diff --git a/xdelta1/doc/old/dcc99/data/analyze.l b/xdelta1/doc/old/dcc99/data/analyze.l
new file mode 100755
index 0000000..ba41df0
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/data/analyze.l
@@ -0,0 +1,438 @@
1/* -*- C -*- */
2
3%{
4#include <glib.h>
5#include <string.h>
6#include <math.h>
7
8
9#define BIG 1
10
11void fromfile();
12void tofile();
13void tool();
14void normal();
15void reverse();
16void onetime();
17
18char* _from;
19int _fromsize;
20char* _to;
21int _tosize;
22char* _tool;
23
24GArray* runs;
25GArray* pairs;
26
27#define FORWARD 0
28#define REVERSE 1
29
30typedef struct {
31 char* from;
32 int from_size;
33
34 char* to;
35 int to_size;
36
37 char* tool;
38
39 double forward_delta_size;
40 double reverse_delta_size;
41
42 double forward_delta_time;
43 double reverse_delta_time;
44
45 gboolean missing_time;
46} Run;
47
48#define PAIRS 6
49
50#define BUCKET_SIZE 10000
51
52typedef struct {
53 Run* runs[PAIRS];
54 int run_count;
55} Pair;
56
57int time_index;
58int time_stage;
59GSList** buckets[PAIRS];
60
61%}
62
63dig [0-9]
64num {dig}+("."{dig}+)?
65space [\v\f\r\t\n ]
66ws {space}+
67filename [^\v\f\r\t\n ]+
68
69%%
70
71{ws} { }
72"FromFile:".* { fromfile(); }
73"ToFile:".* { tofile(); }
74"Tool:".* { tool(); }
75"Normal:".* { normal(); }
76"Reverse:".* { reverse(); }
77"Time:".* { onetime(); }
78
79%%
80
81char*
82first_nonspace (char* p)
83{
84 while (*p == ' ')
85 p += 1;
86
87 return p;
88}
89
90void
91fromfile()
92{
93 char** toks = g_strsplit (first_nonspace(yytext + strlen("FromFile:")), " ", -1);
94
95 _from = g_strdup(toks[0]);
96 _fromsize = atoi (toks[2]);
97
98 g_free (toks);
99}
100
101void
102tofile()
103{
104 char** toks = g_strsplit (first_nonspace(yytext + strlen("ToFile:")), " ", -1);
105
106 _to = g_strdup(toks[0]);
107 _tosize = atoi(toks[2]);
108
109 g_free (toks);
110}
111
112void
113tool()
114{
115 char** toks = g_strsplit (first_nonspace(yytext + strlen("Tool:")), " ", -1);
116
117 _tool = g_strdup (toks[0]);
118
119 g_free (toks);
120}
121
122void
123normal()
124{
125 char** toks = g_strsplit (first_nonspace(yytext + strlen("Normal:")), " ", -1);
126 Run r;
127
128 g_assert (toks[0]);
129
130 r.forward_delta_size = atoi (toks[0]);
131
132 r.from = _from;
133 r.from_size = _fromsize;
134
135 r.to = _to;
136 r.to_size = _tosize;
137
138 r.tool = _tool;
139
140 g_array_append_val(runs, r);
141
142 g_free (toks);
143}
144
145void
146reverse()
147{
148 char** toks = g_strsplit (first_nonspace(yytext + strlen("Reverse:")), " ", -1);
149 int size = atoi (toks[0]);
150
151 g_array_index (runs, Run, runs->len-1).reverse_delta_size = size;
152
153 g_free (toks);
154}
155
156void
157onetime()
158{
159 char** toks = g_strsplit (first_nonspace(yytext + strlen("Time:")), " ", -1);
160 char** names = g_strsplit (toks[0], "-", -1);
161 char* tool = names[0];
162 char* dir = names[1];
163
164 Run* r = &g_array_index (runs, Run, time_index);
165
166 double t;
167
168 int time_stage_max;
169
170 sscanf (toks[1], "%lf", &t);
171
172 g_assert (strncmp (tool, r->tool, 2) == 0);
173
174 if (strncmp (tool, "dz", 2) == 0)
175 time_stage_max = 4;
176 else
177 time_stage_max = 2;
178
179 if (strcmp (dir, "forward") == 0)
180 r->forward_delta_time += t;
181 else if (strcmp (dir, "reverse") == 0)
182 r->reverse_delta_time += t;
183 else
184 r->missing_time = TRUE;
185
186 if (time_stage < (time_stage_max-1))
187 {
188 time_stage += 1;
189 }
190 else
191 {
192 time_stage = 0;
193 time_index += 1;
194 }
195}
196
197void
198add (int j, int size, double* dsize)
199{
200 g_assert (*dsize > 0.0);
201 buckets[j][size / BUCKET_SIZE] = g_slist_prepend (buckets[j][size / BUCKET_SIZE], dsize);
202}
203
204void
205compute_stats (GSList* dlist, double* mean, double* min, double* max)
206{
207 GSList* dlist0 = dlist;
208 gint c = 0;
209
210 double m, s = 0, s2 = 0;
211
212 /*(*max) = 0.0;
213 (*min) = 1000000000.0;*/
214
215 for (; dlist; dlist = dlist->next)
216 {
217 double d = * (double*) dlist->data;
218
219 g_assert (d > 0.0);
220
221 s += d;
222 c += 1;
223
224 /*(*min) = MIN (*min, d);
225 (*max) = MAX (*max, d);*/
226 }
227
228 m = (*mean) = s / (double) c;
229
230 g_assert (m > 0.0);
231
232 if (c == 1)
233 {
234 /*(*stddev) = 0.0;*/
235 (*min) = m;
236 (*max) = m;
237 }
238 else
239 {
240 for (dlist = dlist0; dlist; dlist = dlist->next)
241 {
242 double d = * (double*) dlist->data;
243 double ds = d-m;
244
245 s2 += ds*ds;
246 }
247
248 s2 /= (double) (c-1);
249
250 /*(*stddev) = sqrt (s2);*/
251
252 (*min) = MIN(sqrt (s2), m);
253 (*max) = sqrt (s2);
254 }
255}
256
257double*
258copyd (double d)
259{
260 double* dp = g_new (double, 1);
261
262 *dp = d;
263
264 return dp;
265}
266
267#if 0
268void
269test()
270{
271 double avg, std;
272 GSList* l = NULL;
273
274 l = g_slist_prepend (l, copyd (3));
275 l = g_slist_prepend (l, copyd (4));
276 l = g_slist_prepend (l, copyd (5));
277 l = g_slist_prepend (l, copyd (6));
278 l = g_slist_prepend (l, copyd (7));
279 l = g_slist_prepend (l, copyd (8));
280
281 compute_stats (l, &avg, &std);
282
283 fprintf (stderr, "test %f %f\n", avg, std);
284}
285#endif
286
287int main()
288{
289 FILE* one = fopen ("runtest.out", "r");
290 FILE* two = fopen ("runtest.errs", "r");
291 GHashTable* pair_table = g_hash_table_new (g_str_hash, g_str_equal);
292 GPtrArray* pair_array = g_ptr_array_new ();
293 int i;
294 int skipped = 0;
295 int max_size = 0;
296
297 g_assert (one && two);
298
299 runs = g_array_new (FALSE, TRUE, sizeof(Run));
300 pairs = g_array_new (FALSE, TRUE, sizeof(Pair));
301
302 yyin = one;
303 while (yylex ()) ;
304 yyin = two;
305 while (yylex ()) ;
306
307 /*printf ("%d runs found\n", runs->len);
308 printf ("%d runs timed\n", time_index);*/
309
310 for (i = 0; i < runs->len; i += 1)
311 {
312 Run* r = &g_array_index (runs, Run, i);
313 Pair* p;
314
315 if (strcmp (r->tool, "cim") != 0)
316 {
317 continue;
318 }
319
320 if (r->missing_time)
321 {
322 skipped += 1;
323#ifndef BIG
324 continue;
325#endif
326 }
327
328 p = g_new0 (Pair, 1);
329
330 g_ptr_array_add (pair_array, p);
331 g_hash_table_insert (pair_table, r->from, p);
332
333 p->run_count = 1;
334 p->runs[0] = r;
335
336 max_size = MAX(max_size, r->to_size);
337 max_size = MAX(max_size, r->from_size);
338 }
339
340 /*printf ("%d runs skipped\n", skipped);*/
341
342 for (i = 0; i < runs->len; i += 1)
343 {
344 Run* r = &g_array_index (runs, Run, i);
345 Pair* p;
346
347 if (strcmp (r->tool, "cim") == 0)
348 continue;
349
350 p = g_hash_table_lookup (pair_table, r->from);
351
352 if (! p)
353 continue;
354
355 p->runs[p->run_count++] = r;
356 }
357
358#ifndef BIG
359 g_assert (pair_array->len == (runs->len / PAIRS) - skipped);
360#endif
361
362 for (i = 0; i < PAIRS; i += 1)
363 buckets[i] = g_new0 (GSList*, max_size / BUCKET_SIZE);
364
365 for (i = 0; i < pair_array->len; i += 1)
366 {
367 Pair* p = pair_array->pdata[i];
368 int j;
369 double cim_reverse_size = p->runs[0]->reverse_delta_size;
370 double cim_forward_size = p->runs[0]->forward_delta_size;
371
372#ifdef BIG
373 if (p->runs[0]->missing_time)
374 {
375 printf ("%d, %f, %f\n", p->runs[0]->to_size, p->runs[1]->forward_delta_size, p->runs[2]->forward_delta_size);
376 printf ("%d, %f, %f\n", p->runs[0]->from_size, p->runs[1]->reverse_delta_size, p->runs[2]->reverse_delta_size);
377 }
378#else
379
380 if (cim_reverse_size == 0.0)
381 continue;
382 if (cim_forward_size == 0.0)
383 continue;
384
385 for (j = 0; j < PAIRS; j += 1)
386 {
387 if (p->runs[j]->tool[0] == 'x')
388 {
389 /* take out the xdelta header */
390 int len = strlen (p->runs[j]->from) + strlen (p->runs[j]->to);
391
392 p->runs[j]->forward_delta_size -= 28 + len;
393 p->runs[j]->reverse_delta_size -= 28 + len;
394
395 g_assert (p->runs[j]->reverse_delta_size > 0.0);
396 g_assert (p->runs[j]->forward_delta_size > 0.0);
397 }
398
399 p->runs[j]->forward_delta_size /= cim_forward_size;
400 p->runs[j]->reverse_delta_size /= cim_reverse_size;
401
402 add (j, p->runs[0]->to_size, &p->runs[j]->forward_delta_size);
403 add (j, p->runs[0]->from_size, &p->runs[j]->reverse_delta_size);
404 }
405 }
406
407 for (i = 0; i < max_size / BUCKET_SIZE; i += 1)
408 {
409 int j, found = 0;
410
411 for (j = 0; j < PAIRS; j += 1)
412 {
413 if (buckets[j][i])
414 {
415 printf ("%d, ", (i * BUCKET_SIZE) + BUCKET_SIZE/2);
416 found = 1;
417 break;
418 }
419 }
420
421 if (found)
422 {
423 for (j = 0; j < PAIRS; j += 1)
424 {
425 double avg, min, max;
426
427 compute_stats (buckets[j][i], &avg, &min, &max);
428
429 printf ("%f, %f, %f, ", avg, min, max);
430 }
431
432 printf ("\n");
433 }
434#endif
435 }
436
437 return 0;
438}
diff --git a/xdelta1/doc/old/dcc99/data/fig1.data b/xdelta1/doc/old/dcc99/data/fig1.data
new file mode 100755
index 0000000..e585750
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/data/fig1.data
@@ -0,0 +1,29 @@
15000, 1.000000, 0.000000, 0.000000, 2.247578, 1.494850, 1.494850, 4.513087, 3.841368, 3.841368, 5.150437, 3.945593, 3.945593, 4.883296, 4.762887, 4.762887, 5.354498, 4.662331, 4.662331,
215000, 1.000000, 0.000000, 0.000000, 1.935773, 1.107924, 1.107924, 3.776800, 2.806186, 2.806186, 4.442599, 2.775799, 2.775799, 4.862028, 3.163344, 3.163344, 4.542423, 3.507239, 3.507239,
325000, 1.000000, 0.000000, 0.000000, 1.992891, 1.203505, 1.203505, 3.918552, 2.910202, 2.910202, 4.594742, 2.878777, 2.878777, 4.944386, 3.107605, 3.107605, 4.409800, 3.406593, 3.406593,
435000, 1.000000, 0.000000, 0.000000, 1.869683, 1.116450, 1.116450, 3.693352, 2.777232, 2.777232, 4.391966, 2.674814, 2.674814, 4.966845, 2.964413, 2.964413, 4.127713, 3.142258, 3.142258,
545000, 1.000000, 0.000000, 0.000000, 1.847218, 1.142778, 1.142778, 3.383056, 2.298025, 2.298025, 4.093188, 2.135231, 2.135231, 5.198964, 3.207633, 3.207633, 4.289643, 3.599258, 3.599258,
655000, 1.000000, 0.000000, 0.000000, 1.770871, 1.131038, 1.131038, 3.358432, 2.460521, 2.460521, 4.147034, 2.266551, 2.266551, 5.256925, 2.971032, 2.971032, 3.816856, 2.768544, 2.768544,
765000, 1.000000, 0.000000, 0.000000, 1.556571, 0.913805, 0.913805, 2.911364, 1.943752, 1.943752, 3.845784, 1.739544, 1.739544, 5.641156, 2.550957, 2.550957, 3.582800, 2.612439, 2.612439,
875000, 1.000000, 0.000000, 0.000000, 1.615948, 0.999812, 0.999812, 2.879092, 1.850208, 1.850208, 3.809982, 1.636014, 1.636014, 4.794411, 2.124749, 2.124749, 3.164612, 1.948221, 1.948221,
985000, 1.000000, 0.000000, 0.000000, 1.825609, 1.013160, 1.013160, 3.430278, 2.071402, 2.071402, 4.121070, 1.931381, 1.931381, 4.852611, 2.869002, 2.869002, 3.908317, 2.625903, 2.625903,
1095000, 1.000000, 0.000000, 0.000000, 1.670724, 1.143832, 1.143832, 2.940294, 2.024779, 2.024779, 3.876037, 1.753694, 1.753694, 5.853093, 3.516541, 3.516541, 4.043364, 4.043364, 4.284600,
11105000, 1.000000, 0.000000, 0.000000, 2.158986, 1.369352, 1.369352, 3.614015, 2.034547, 2.034547, 4.216942, 1.858502, 1.858502, 4.965549, 3.036721, 3.036721, 4.185543, 2.586688, 2.586688,
12115000, 1.000000, 0.000000, 0.000000, 1.360088, 0.616350, 0.616350, 2.551459, 1.964894, 1.964894, 3.234822, 1.605634, 1.605634, 4.322613, 1.545842, 1.545842, 3.228285, 1.964847, 1.964847,
13125000, 1.000000, 0.000000, 0.000000, 1.529777, 0.848630, 0.848630, 2.945658, 2.014869, 2.014869, 3.900222, 1.974606, 1.974606, 5.478995, 1.905685, 1.905685, 3.434508, 2.093207, 2.093207,
14135000, 1.000000, 0.000000, 0.000000, 1.059016, 0.247858, 0.247858, 1.500279, 0.759026, 0.759026, 3.022245, 0.432389, 0.432389, 5.186137, 0.139577, 0.139577, 1.741970, 0.525337, 0.525337,
15145000, 1.000000, 0.000000, 0.000000, 1.949116, 1.676826, 1.676826, 2.800988, 2.189285, 2.189285, 3.939680, 1.756528, 1.756528, 4.947291, 1.224407, 1.224407, 3.418648, 2.731867, 2.731867,
16155000, 1.000000, 0.000000, 0.000000, 3.292208, 2.802525, 2.802525, 3.851028, 2.003085, 2.003085, 4.287683, 1.861235, 1.861235, 3.926793, 2.032467, 2.032467, 4.297426, 2.102505, 2.102505,
17165000, 1.000000, 1.000000, 1.000000, 2.113117, 2.113117, 2.113117, 1.966306, 1.966306, 1.966306, 3.229242, 3.229242, 3.229242, 6.534296, 6.534296, 6.534296, 2.446450, 2.446450, 2.446450,
18175000, 1.000000, 0.000000, 0.000000, 1.751311, 1.444948, 1.444948, 2.852141, 2.756114, 2.756114, 3.847896, 2.101695, 2.101695, 3.943581, 1.230728, 1.230728, 2.211612, 1.706203, 1.706203,
19185000, 1.000000, 1.000000, 1.000000, 1.632011, 1.632011, 1.632011, 1.461468, 1.461468, 1.461468, 2.628363, 2.628363, 2.628363, 4.902417, 4.902417, 4.902417, 1.831281, 1.831281, 1.831281,
20195000, 1.000000, 0.000000, 0.000000, 1.202820, 0.214820, 0.214820, 1.753262, 0.815314, 0.815314, 3.025649, 0.847447, 0.847447, 3.710422, 0.867004, 0.867004, 1.685907, 0.581806, 0.581806,
21205000, 1.000000, 0.000000, 0.000000, 3.371956, 3.371956, 5.627443, 3.747549, 2.970076, 2.970076, 4.492117, 2.761550, 2.761550, 5.074542, 2.563123, 2.563123, 4.404258, 3.013979, 3.013979,
22215000, 1.000000, 0.000000, 0.000000, 1.647549, 0.554709, 0.554709, 1.755538, 0.334468, 0.334468, 2.940955, 0.166030, 0.166030, 5.886149, 0.878080, 0.878080, 2.304068, 0.125165, 0.125165,
23235000, 1.000000, 0.000000, 0.000000, 5.656103, 5.656103, 11.862490, 2.597165, 1.876097, 1.876097, 3.387417, 1.601737, 1.601737, 4.513242, 2.991713, 2.991713, 3.069354, 1.750298, 1.750298,
24245000, 1.000000, 0.000000, 0.000000, 2.566175, 1.888322, 1.888322, 3.882325, 2.612144, 2.612144, 4.388008, 2.461386, 2.461386, 7.744080, 7.744080, 10.722341, 6.220723, 5.914358, 5.914358,
25255000, 1.000000, 0.000000, 0.000000, 1.506253, 0.664362, 0.664362, 1.687721, 0.540915, 0.540915, 3.125387, 0.292466, 0.292466, 5.703524, 1.929671, 1.929671, 2.030101, 0.199591, 0.199591,
26265000, 1.000000, 0.000000, 0.000000, 3.088008, 2.850353, 2.850353, 2.303957, 1.042549, 1.042549, 3.139581, 0.615099, 0.615099, 7.694560, 3.638420, 3.638420, 4.130421, 2.551056, 2.551056,
27325000, 1.000000, 1.000000, 1.000000, 4.122605, 4.122605, 4.122605, 2.144636, 2.144636, 2.144636, 3.645594, 3.645594, 3.645594, 6.508621, 6.508621, 6.508621, 2.496169, 2.496169, 2.496169,
28335000, 1.000000, 0.000000, 0.000000, 1.510913, 0.732142, 0.732142, 1.547070, 0.460837, 0.460837, 3.064122, 0.336828, 0.336828, 4.668883, 0.871269, 0.871269, 1.659188, 0.539544, 0.539544,
29355000, 1.000000, 1.000000, 1.000000, 0.251797, 0.251797, 0.251797, 0.183558, 0.183558, 0.183558, 1.007455, 1.007455, 1.007455, 1.007573, 1.007573, 1.007573, 0.183841, 0.183841, 0.183841,
diff --git a/xdelta1/doc/old/dcc99/data/fig1.m b/xdelta1/doc/old/dcc99/data/fig1.m
new file mode 100755
index 0000000..7521631
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/data/fig1.m
@@ -0,0 +1,20 @@
1function graphit(name)
2
3errorbar (name(:,1) - 2000, name(:, 5), name(:, 6), name(:, 7), 'ro')
4hold
5
6errorbar (name(:,1) , name(:, 8), name(:, 9), name(:, 10), 'bs')
7hold
8
9legend ('Vdelta standard deviation', 'Vdelta mean', 'Xdelta standard deviation', 'Xdelta mean')
10set(gca, 'XTickLabel', [0,50000,100000,150000,200000,250000,300000,350000,400000])
11ylabel ('Delta Size Ratio')
12xlabel ('To File Size (bytes)')
13
14plot (name(:,1) - 2000, name(:, 5), 'r-')
15hold
16hold
17
18plot (name(:,1) , name(:, 8), 'b-')
19hold
20hold
diff --git a/xdelta1/doc/old/dcc99/data/fig2.data b/xdelta1/doc/old/dcc99/data/fig2.data
new file mode 100755
index 0000000..e1d38c3
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/data/fig2.data
@@ -0,0 +1,114 @@
124545280, 86416.000000, 14748.000000
224535040, 87078.000000, 12624.000000
324545280, 86416.000000, 14748.000000
424535040, 87078.000000, 12624.000000
524565760, 580866.000000, 25254.000000
624545280, 594341.000000, 18693.000000
724565760, 580866.000000, 25254.000000
824545280, 594341.000000, 18693.000000
924576000, 570711.000000, 16047.000000
1024565760, 595705.000000, 11194.000000
1124576000, 570711.000000, 16047.000000
1224565760, 595705.000000, 11194.000000
1324616960, 1217651.000000, 61225.000000
1424576000, 1247992.000000, 49980.000000
1524616960, 1217651.000000, 61225.000000
1624576000, 1247992.000000, 49980.000000
1724668160, 1826667.000000, 14993.000000
1824616960, 1869542.000000, 6412.000000
1924668160, 1826667.000000, 14993.000000
2024616960, 1869542.000000, 6412.000000
2124678400, 839641.000000, 108137.000000
2224668160, 835891.000000, 98220.000000
2324678400, 839641.000000, 108137.000000
2424668160, 835891.000000, 98220.000000
2524780800, 3876954.000000, 42104.000000
2624678400, 3918457.000000, 24561.000000
2724780800, 3876954.000000, 42104.000000
2824678400, 3918457.000000, 24561.000000
2925169920, 2640520.000000, 171675.000000
3024780800, 2586986.000000, 87922.000000
3125169920, 2640520.000000, 171675.000000
3224780800, 2586986.000000, 87922.000000
3325589760, 6738090.000000, 180254.000000
3425169920, 6667429.000000, 87609.000000
3525589760, 6738090.000000, 180254.000000
3625169920, 6667429.000000, 87609.000000
3725589760, 1039716.000000, 35248.000000
3825589760, 1002712.000000, 39366.000000
3925589760, 1039716.000000, 35248.000000
4025589760, 1002712.000000, 39366.000000
4125784320, 4862543.000000, 71029.000000
4225589760, 4872708.000000, 20363.000000
4325784320, 4862543.000000, 71029.000000
4425589760, 4872708.000000, 20363.000000
4525815040, 653867.000000, 29446.000000
4625784320, 670899.000000, 23979.000000
4725815040, 653867.000000, 29446.000000
4825784320, 670899.000000, 23979.000000
4925804800, 147471.000000, 12049.000000
5025815040, 138851.000000, 14661.000000
5125804800, 147471.000000, 12049.000000
5225815040, 138851.000000, 14661.000000
5325794560, 760784.000000, 43758.000000
5425804800, 774757.000000, 44445.000000
5525794560, 760784.000000, 43758.000000
5625804800, 774757.000000, 44445.000000
5726583040, 6286263.000000, 318882.000000
5825794560, 6091237.000000, 156185.000000
5926583040, 6286263.000000, 318882.000000
6025794560, 6091237.000000, 156185.000000
6127555840, 6913260.000000, 315703.000000
6226583040, 6705831.000000, 113159.000000
6327555840, 6913260.000000, 315703.000000
6426583040, 6705831.000000, 113159.000000
6528262400, 7113085.000000, 295105.000000
6627555840, 6983847.000000, 149050.000000
6728262400, 7113085.000000, 295105.000000
6827555840, 6983847.000000, 149050.000000
6928252160, 529053.000000, 58262.000000
7028262400, 544997.000000, 64953.000000
7128252160, 529053.000000, 58262.000000
7228262400, 544997.000000, 64953.000000
7328631040, 6480127.000000, 71249.000000
7428252160, 6420172.000000, 45890.000000
7528631040, 6480127.000000, 71249.000000
7628252160, 6420172.000000, 45890.000000
7728753920, 2134350.000000, 89255.000000
7828631040, 2170438.000000, 65201.000000
7928753920, 2134350.000000, 89255.000000
8028631040, 2170438.000000, 65201.000000
8128651520, 2369727.000000, 30326.000000
8228753920, 2372283.000000, 45047.000000
8328651520, 2369727.000000, 30326.000000
8428753920, 2372283.000000, 45047.000000
8528661760, 740340.000000, 57676.000000
8628651520, 754161.000000, 52499.000000
8728661760, 740340.000000, 57676.000000
8828651520, 754161.000000, 52499.000000
8929194240, 7591422.000000, 237318.000000
9028661760, 7504794.000000, 104630.000000
9129194240, 7591422.000000, 237318.000000
9228661760, 7504794.000000, 104630.000000
9329194240, 46036.000000, 10714.000000
9429194240, 47276.000000, 9377.000000
9529194240, 46036.000000, 10714.000000
9629194240, 47276.000000, 9377.000000
9729634560, 6674584.000000, 183120.000000
9829194240, 6587975.000000, 73595.000000
9929634560, 6674584.000000, 183120.000000
10029194240, 6587975.000000, 73595.000000
10129634560, 112022.000000, 18621.000000
10229634560, 115749.000000, 16434.000000
10329634560, 112022.000000, 18621.000000
10429634560, 115749.000000, 16434.000000
10530177280, 5052730.000000, 192939.000000
10629634560, 4979842.000000, 94495.000000
10730177280, 5052730.000000, 192939.000000
10829634560, 4979842.000000, 94495.000000
10930658560, 3855336.000000, 183959.000000
11030177280, 3781299.000000, 82085.000000
11130658560, 3855336.000000, 183959.000000
11230177280, 3781299.000000, 82085.000000
11330883840, 6090180.000000, 96952.000000
11430658560, 6105737.000000, 45032.000000
diff --git a/xdelta1/doc/old/dcc99/data/fig2.m b/xdelta1/doc/old/dcc99/data/fig2.m
new file mode 100755
index 0000000..2ceb91b
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/data/fig2.m
@@ -0,0 +1,9 @@
1function graphit(name)
2
3plot (name(:,1), name(:, 2), 'ro')
4hold
5plot (name(:,1) , name(:, 3), 'bs')
6
7legend ('Vdelta', 'Xdelta')
8ylabel ('Delta Size (bytes)')
9xlabel ('To File Size (bytes)')
diff --git a/xdelta1/doc/old/dcc99/data/mytime.c b/xdelta1/doc/old/dcc99/data/mytime.c
new file mode 100755
index 0000000..b80c2bd
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/data/mytime.c
@@ -0,0 +1,61 @@
1#include <glib.h>
2#include <stdio.h>
3#include <unistd.h>
4#include <sys/types.h>
5#include <sys/wait.h>
6#include <sys/time.h>
7#include <sys/resource.h>
8
9int main(int argc, char** argv)
10{
11 int pid, npid, status = 0;
12 char* argv1 = argv[1];
13
14 argv += 2;
15 argc -= 2;
16
17 if ((pid = fork()))
18 {
19 struct rusage ru;
20 long t = 0;
21
22 if (pid != (npid = wait4 (pid, &status, 0, &ru)))
23 {
24 fprintf (stderr, "wait failed: %d\n", npid);
25 abort ();
26 }
27
28 if (! WIFEXITED(status))
29 {
30 fprintf (stderr, "process did not exit\n");
31 exit (1);
32 }
33
34 if (WEXITSTATUS(status) == 127)
35 {
36 fprintf (stderr, "exec failed\n");
37 exit (1);
38 }
39
40 if (WEXITSTATUS(status) > 1)
41 {
42 fprintf (stderr, "process exited %d\n", WEXITSTATUS(status));
43 exit (1);
44 }
45
46 t += 1000000*ru.ru_utime.tv_sec;
47 t += 1000000*ru.ru_stime.tv_sec;
48 t += ru.ru_utime.tv_usec;
49 t += ru.ru_stime.tv_usec;
50
51 fprintf (stderr, "Time: %s %f\n", argv1, (double)t / 1000000.0);
52
53 exit (0);
54 }
55 else
56 {
57 execvp (argv[0], argv);
58 _exit (127);
59 }
60 exit (0);
61}
diff --git a/xdelta1/doc/old/dcc99/data/runtest b/xdelta1/doc/old/dcc99/data/runtest
new file mode 100755
index 0000000..3b25060
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/data/runtest
@@ -0,0 +1,38 @@
1#!/bin/sh
2
3trap "rm -rf tmp.files" 0
4
5tar -xzf linux-kernels/linux-2.1.0.tar.gz
6
7mv linux linux-2.1.0
8
9(cd linux-2.1.0 && tar -cf linux.tar.gz *)
10
11LASTVER=0
12
13for VER in `cat runtest-versions`; do
14 echo Creating version 2.1.$VER
15 mkdir linux-2.1.$VER
16 (cd linux-2.1.$LASTVER && tar -cf - .) | (cd linux-2.1.$VER && tar -xf -)
17 gzip -dc linux-kernels/patch-2.1.$VER.gz | (cd linux-2.1.$VER && patch -s -f -p1)
18 find linux-2.1.$VER -name \*.orig | xargs rm -rf
19 find linux-2.1.$VER -name \*.rej | xargs rm -rf
20 (cd linux-2.1.$VER && tar -cf linux.tar.gz *)
21
22 FILES=""
23
24 for f in `(cd linux-2.1.$VER; find . -type f)`; do
25 if test -f linux-2.1.$LASTVER/$f; then
26 FILES="$FILES $f"
27 fi
28 done
29
30 echo $FILES > tmp.files
31
32 ./runtest-one linux-2.1.$LASTVER linux-2.1.$VER tmp.files \
33 2>> runtest.errs 1>>runtest.out
34
35 rm -rf linux-2.1.$LASTVER
36 rm -rf linux-2.1.$LASTVER.tar.gz
37 LASTVER=$VER
38done
diff --git a/xdelta1/doc/old/dcc99/data/runtest-one b/xdelta1/doc/old/dcc99/data/runtest-one
new file mode 100755
index 0000000..77b24bd
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/data/runtest-one
@@ -0,0 +1,71 @@
1#!/bin/sh
2
3ODIR=$1
4NDIR=$2
5FILES=`cat $3`
6
7for i in $FILES; do
8 FROM=$ODIR/$i
9 TO=$NDIR/$i
10
11 if cmp -s $FROM $TO; then
12 FOO=bar
13 else
14
15 echo "FromFile: " $FROM `wc -c -l $FROM`
16 echo "ToFile: " $TO `wc -c -l $TO`
17
18 # 1
19 echo "Tool: cim"
20
21 ./mytime cim-forward ../exact-delta/delta $FROM $TO > tmp.out
22 echo "Normal: " `cat tmp.out`
23 ./mytime cim-reverse ../exact-delta/delta $TO $FROM > tmp.out
24 echo "Reverse: " `cat tmp.out`
25
26 # 2
27 echo "Tool: vdelta"
28
29 ./mytime vdelta-forward ../vdelta $FROM < $TO > tmp.out
30 echo "Normal: " `wc -c tmp.out`
31 ./mytime vdelta-reverse ../vdelta $TO < $FROM > tmp.out
32 echo "Reverse: " `wc -c tmp.out`
33
34 # 3
35 echo "Tool: xdelta"
36
37 ./mytime xdelta-forward ../../../xdelta delta -0 -n $FROM $TO tmp.out
38 echo "Normal: " `wc -c tmp.out`
39 ./mytime xdelta-reverse ../../../xdelta delta -0 -n $TO $FROM tmp.out
40 echo "Reverse: " `wc -c tmp.out`
41
42 # 4
43 echo "Tool: xz"
44
45 ./mytime xz-forward ../../../xdelta delta -n $FROM $TO tmp.out
46 echo "Normal: " `wc -c tmp.out`
47 ./mytime xz-reverse ../../../xdelta delta -n $TO $FROM tmp.out
48 echo "Reverse: " `wc -c tmp.out`
49
50 # 5
51 echo "Tool: diff"
52
53 ./mytime diff-forward gdiff --rcs -a $FROM $TO > tmp.out
54 echo "Normal: " `wc -c tmp.out`
55 ./mytime diff-reverse gdiff --rcs -a $TO $FROM > tmp.out
56 echo "Reverse: " `wc -c tmp.out`
57
58 # 6
59 echo "Tool: dz"
60
61 ./mytime dz1-forward gdiff --rcs -a $FROM $TO > tmp.out
62 rm -f tmp.out.gz
63 ./mytime dz2-forward gzip tmp.out
64 echo "Normal: " `wc -c tmp.out.gz`
65 ./mytime dz1-reverse gdiff --rcs -a $TO $FROM > tmp.out
66 rm -f tmp.out.gz
67 ./mytime dz2-reverse gzip tmp.out
68 echo "Reverse: " `wc -c tmp.out.gz`
69
70 fi
71done
diff --git a/xdelta1/doc/old/dcc99/data/runtest-versions b/xdelta1/doc/old/dcc99/data/runtest-versions
new file mode 100755
index 0000000..310c96c
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/data/runtest-versions
@@ -0,0 +1,127 @@
11
22
33
44
55
66
77
88
99
1010
1111
1212
1313
1414
1515
1616
1717
1818
1919
2020
2121
2222
2323
2424
2525
2626
2727
2828
2929
3030
3131
3232
3333
3434
3535
3636
3737
3838
3939
4040
4141
4242
4343
4444
4545
4646
4747
4848
4949
5050
5151
5252
5353
5454
5555
5656
5757
5858
5959
6060
6161
6262
6363
6464
6565
6666
6767
6868
6969
7070
7171
7272
7373
7474
7575
7676
7777
7878
7979
8080
8181
8282
8383
8484
8585
8686
8787
8888
8989
9090
9191
9292
9393
9494
9595
9696
9797
9898
9999
100100
101101
102102
103103
104104
105105
106106
107107
108108
109109
110110
111111
112112
113113
114114
115115
116116
117117
118118
119119
120120
121121
122122
123123
124124
125125
126126
127127
diff --git a/xdelta1/doc/old/dcc99/data/tclean.l b/xdelta1/doc/old/dcc99/data/tclean.l
new file mode 100755
index 0000000..b440e30
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/data/tclean.l
@@ -0,0 +1,38 @@
1/* -*-Mode: C++;-*-
2 * PRCS - The Project Revision Control System
3 * Copyright (C) 1997 Josh MacDonald
4 *
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License
7 * as published by the Free Software Foundation; either version 2
8 * of the License, or (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 *
19 * $Id$
20 */
21
22%{
23double r,u,s;
24%}
25
26dig [0-9]
27num {dig}+("."{dig}+)?
28space [\v\f\r\t\n ]
29ws {space}+
30
31%%
32
33{ws} { }
34"real"{ws}{num} { sscanf (yytext, "real %lf", &r); }
35"user"{ws}{num} { sscanf (yytext, "user %lf", &u);}
36"sys"{ws}{num} { sscanf (yytext, "sys %lf", &s); printf ("Time: %f\n", u+s); }
37
38%%
diff --git a/xdelta1/doc/old/dcc99/dcc99.bib b/xdelta1/doc/old/dcc99/dcc99.bib
new file mode 100755
index 0000000..09d3d3c
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/dcc99.bib
@@ -0,0 +1,502 @@
1@String{pub-USENIX = "USENIX"}
2@String{pub-USENIX-EL-CERRITO:adr = "P.O. Box 7, El Cerrito 94530, CA,
3 USA"}
4@String{pub-USENIX:adr = "Berkeley, CA, USA"}
5
6@String{j-LECT-NOTES-COMP-SCI = "Lecture Notes in Computer Science"}
7@String{j-SPE = "Software---Practice and Experience"}
8
9@Article{Severance:1976:TODS,
10 title = "Differential Files: Their Application to the
11 Maintenance of Large Databases",
12 author = "Dennis S. Severance and Guy M. Lohman",
13 journal = "ACM Transactions on Database Systems",
14 month = sep,
15 year = "1976",
16 publisher = "ACM, New York",
17 pages = "256--267",
18}
19
20@Article{Vo:1996:SCM,
21 author = "J. J. Hunt and K.-P. Vo and W. F. Tichy",
22 title = "An Empirical Study of Delta Algorithms",
23 journal = j-LECT-NOTES-COMP-SCI,
24 volume = "1167",
25 pages = "49--66",
26 month = "July",
27 year = "1996",
28 CODEN = "LNCSD9",
29 ISSN = "0302-9743",
30 bibdate = "Fri Aug 22 11:59:49 MDT 1997",
31 acknowledgement = ack-nhfb,
32}
33
34@Article{MacDonald:1998:SCM,
35 author = "Josh MacDonald and Paul N. Hilfinger and Luigi Semenzato",
36 title = "PRCS: The Project Revision Control System",
37 journal = j-LECT-NOTES-COMP-SCI,
38 volume = "1439",
39 pages = "33--45",
40 month = "July",
41 year = "1998",
42}
43
44@Article{Alderson:1988:JSE,
45 author = "Albert Alderson",
46 title = "A Space-Efficient Technique for Recording Versions of Data",
47 journal = "Software Engineering Journal",
48 volume = "3",
49 number = "6",
50 pages = "240--246",
51 month = nov,
52 year = "1988",
53}
54
55@Article{Tichy:1985:RSV,
56 author = "Walter F. Tichy",
57 title = "{RCS}: {A} System for Version Control",
58 journal = j-SPE,
59 volume = "15",
60 number = "7",
61 pages = "637--654",
62 month = jul,
63 year = "1985",
64 CODEN = "SPEXBL",
65 ISSN = "0038-0644",
66 bibdate = "Sat May 31 13:36:16 MDT 1997",
67 acknowledgement = ack-nhfb,
68 keywords = "algorithms; management; performance; measurement",
69 review = "ACM CR 8604-0320",
70 subject = "D.2.7 Software, SOFTWARE ENGINEERING, Distribution and
71 Maintenance, Version control \\ D.2.9 Software,
72 SOFTWARE ENGINEERING, Management, Software
73 configuration management \\ D.4.0 Software, OPERATING
74 SYSTEMS, General, UNIX \\ K.6.3 Computing Milieux,
75 MANAGEMENT OF COMPUTING AND INFORMATION SYSTEMS,
76 Software Management, Software maintenance",
77}
78
79
80
81
82@Article{Rochkind:ieee:tose:1975,
83 author = "Marc J. Rochkind",
84 title = "The Source Code Control System",
85 journal = "IEEE Transactions on Software Engineering",
86 volume = "1",
87 number = "4",
88 pages = "364--370",
89 month = dec,
90 year = "1975",
91 refs = "10",
92 checked = "19940609",
93 source = "Main library",
94 keywords = "configuration management, program maintenance,
95 software control, software project management, revision
96 control, source control, SCCS",
97 abstract = "The Source Code Control System (SCCS) is a software
98 tool designed to help programming projects control
99 changes to source code. It provides facilities for
100 storing, updating, and retrieving all versions of
101 modules, for controlling updating privilges, for
102 identifying load modules by version number, and for
103 recording who made each software change, when and where
104 it was made, and why. This paper discusses the SCCS
105 approach to source code control, shows how it is used
106 and explains how it is implemented.",
107 reffrom = "Kernighan:Mashey:ieee:c:1981",
108 reffrom = "Tichy:acm:toplas:1986",
109}
110
111@Article{Miller:1985:FCP,
112 author = "Webb Miller and Eugene W. Myers",
113 title = "A File Comparison Program",
114 journal = j-SPE,
115 volume = "15",
116 number = "11",
117 pages = "1025--1040",
118 month = nov,
119 year = "1985",
120 coden = "SPEXBL",
121 ISSN = "0038-0644",
122 bibdate = "Sat May 31 13:36:16 MDT 1997",
123 acknowledgement = ack-nhfb,
124 keywords = "design; algorithms; performance",
125 subject = "D.4.3 Software, OPERATING SYSTEMS, File Systems
126 Management, File organization \\ E.5 Data, FILES,
127 Organization/structure \\ I.1.2 Computing
128 Methodologies, ALGEBRAIC MANIPULATION, Algorithms,
129 Analysis of algorithms",
130}
131
132@Article{Tichy84,
133 author = "W. F. Tichy",
134 title = "The string-to-string correction problem with block moves.",
135 journal = "ACM Transactions on Computer Systems",
136 volume = "2",
137 number = "4",
138 pages = "309--321",
139 month = nov,
140 year = "1984",
141 keywords = "longest common subsequence, LCS, LCSS, edit distance,
142 block, move, TOCS, string to strings, sequence,
143 alignment, linear, algorithm",
144 abstract = "Uses block moves as the edit operation, seeks min'
145 number, gets a O(n) linear algorithm if P.Weiner's
146 data-structure used. S source string, T target string.
147 Algorithm: find longest prefix of T that is a substring
148 of S, this gives the first block move; repeat until
149 done. Proof: by induction on number of block moves. One
150 block move - T must obviously be a substring of S, alg'
151 finds this. Suppose optimal is i block moves and alg'
152 fails, i.e. finds j $>$ i moves.
153 T:----Opt1----$|$--Opt2--$|$---Opt3---$|$.....$|$--Algi--
154 T:-----Alg1-----$|$---Alg2---$|$.....$|$-----Algj------
155 NB. $|$Alg1$|$ $>$= $|$Opt1$|$ Delete the substring
156 Alg1. By induction the alg' would find the opt'
157 explanation of the rest of T - but it doesn't :-
158 contradiction.",
159}
160
161@Book{Knuth:V3:73,
162 author = "D. E. Knuth",
163 year = "1998",
164 title = "The Art of Computer Programming {III}: Sorting and
165 Searching",
166 publisher = "Addison--Wesley",
167 address = "Reading, Massachusetts",
168 kwds = "cs, book, sorting, searching",
169}
170
171@InCollection{Hunt77,
172 author = "Hunt and Szymanski",
173 title = "A Fast Algorithm for Computing Longest Common
174 Subsequences",
175 booktitle = "Communications of the ACM",
176 publisher = "ACM, New York",
177 volume = "20",
178 year = "1977",
179}
180
181@TECHREPORT{Rsync,
182 AUTHOR = {Andrew Tridgell and Paul Mackerras},
183 TITLE = {The {Rsync} Algorithm},
184 INSTITUTION = "The Australian National University",
185 YEAR = "1996",
186 NUMBER = "TR-CS-96-05",
187 MONTH = "June"
188}
189
190@Article{Yu:1994:LTS,
191 author = "Lin Yu and Daniel J. Rosenkrantz",
192 title = "A Linear-Time Scheme for Version Reconstruction",
193 journal = "ACM Transactions on Programming Languages and
194 Systems",
195 volume = "16",
196 number = "3",
197 pages = "775--797",
198 month = may,
199 year = "1994",
200 coden = "ATPSDT",
201 ISSN = "0164-0925",
202 url = "http://www.acm.org/pubs/toc/Abstracts/0164-0925/177705.html",
203 abstract = "An efficient scheme to store and reconstruct versions
204 of sequential files is presented. The reconstruction
205 scheme involves building a data structure representing
206 a complete version, and then successively modifying
207 this data structure by applying a sequence of specially
208 formatted differential files to it. Each application of
209 a differential file produces a representation of an
210 intermediate version, with the final data structure
211 representing the requested version.\par The scheme uses
212 a linked list to represent an intermediate version,
213 instead of a sequential array, as is used
214 traditionally. A new format for differential files
215 specifying changes to this linked list data structure
216 is presented. The specification of each change points
217 directly to where the change is to take place, thereby
218 obviating a search. Algorithms are presented for using
219 such a new format differential file to transform the
220 representation of a version, and for reconstructing a
221 requested version. Algorithms are also presented for
222 generating the new format differential files, both for
223 the case of a forward differential specifying how to
224 transform the representation of an old version to the
225 representation of a new version, and for the case of a
226 reverse differential specifying how to transform the
227 representation of a new version to the representation
228 of an old version.\par The new version reconstruction
229 scheme takes time linear in the sum of the size of the
230 initial complete version and the sizes of the file
231 differences involved in reconstructing the requested
232 version. In contrast, the classical scheme for
233 reconstructing versions takes time proportional to the
234 sum of the sizes of the sequence of versions involved
235 in the reconstruction, and therefore has a worst-case
236 time that is quadratic in the sum of the size of the
237 initial complete version and the sizes of the file
238 differences. The time cost of the new differential file
239 generation scheme is comparable to the time cost of the
240 classical differential file generation scheme.",
241 acknowledgement = ack-pb,
242 keywords = "algorithms; languages",
243 subject = "{\bf H.2.5}: Information Systems, DATABASE MANAGEMENT,
244 Heterogeneous Databases, Program translation. {\bf
245 H.3.2}: Information Systems, INFORMATION STORAGE AND
246 RETRIEVAL, Information Storage, File organization. {\bf
247 H.2.1}: Information Systems, DATABASE MANAGEMENT,
248 Logical Design. {\bf H.2.0}: Information Systems,
249 DATABASE MANAGEMENT, General, Security, integrity, and
250 protection. {\bf H.2.5}: Information Systems, DATABASE
251 MANAGEMENT, Heterogeneous Databases, Data translation.
252 {\bf D.2.7}: Software, SOFTWARE ENGINEERING,
253 Distribution and Maintenance.",
254}
255
256@InProceedings{Burns:InPlace,
257 author = "Randal C. Burns and Darrell D. E. Long",
258 title = "In-Place Reconstruction of Delta Compressed Files",
259 booktitle = "Proceedings of the Seventeenth ACM Symposium on Principles of Distributed Computing",
260 month = "June",
261 year = "1998"
262}
263
264@InProceedings{Burns:Backup,
265 author = "Randal C. Burns and Darrell D. E. Long",
266 title = "Efficient Distributed Backup with Delta Compression",
267 booktitle = "Proceedings of the Fifth Workshop on I/O in Parallel and Distributed Systems",
268 month = "November",
269 year = "1997"
270}
271
272@MASTERSTHESIS{Burns:Thesis,
273 AUTHOR = {Randal C. Burns},
274 TITLE = "Differential Compression: A Generalized Solution for Binary Files",
275 SCHOOL = "University of California at Santa Cruz, Department of Computer Science",
276 YEAR = "1997"
277}
278
279@Book{clr,
280 author = "Thomas H. Cormen and Charles E. Leiserson and Ronald L. Rivest",
281 title = "Introduction to Algorithms",
282 publisher = "MIT Press",
283 year = 1993
284}
285
286@Article{Myers:Editor,
287 author = "Christopher W. Fraser and Eugene W. Myers",
288 title = "An Editor for Revision Control",
289 journal = "ACM Transactions on Programming Languages and
290 Systems",
291 volume = "9",
292 number = "2",
293 pages = "277--295",
294 month = apr,
295 year = "1987"
296}
297
298@Misc{mozillaCvs,
299 author = "Webmaster",
300 date = "1998",
301 howpublished = "http://www.mozilla.org/cvs.html",
302 title = "Mozilla CVS Usage Instructions"
303}
304
305@Misc{w3,
306 title = "The HTTP Distribution and Replication Protocol",
307 month = aug,
308 year = "1997",
309 howpublished = "http://www.w3.org",
310 author = "Aurthur van Hoff and John Giannandrea and Mark Hapner and Steve Carter and Milo Medin"
311}
312
313@Misc{gdiff,
314 title = "Generic Diff Format Specification",
315 month = aug,
316 year = "1997",
317 howpublished = "http://www.w3.org",
318 author = "Aurthur van Hoff and Jonathan Payne"
319}
320
321@InProceedings{SIGCOMM97*181,
322 author = "Jeffrey C. Mogul and Fred Douglis and Anja Feldmann
323 and Balachander Krishnamurthy",
324 title = "Potential benefits of delta-encoding and data
325 compression for {HTTP}",
326 pages = "181--196",
327 ISSN = "0146-4833",
328 booktitle = "Proceedings of the {ACM} {SIGCOMM} Conference :
329 Applications, Technologies, Architectures, and
330 Protocols for Computer Communication ({SIGCOMM}-97)",
331 month = sep # "14--18~",
332 series = "Computer Communication Review",
333 volume = "27,4",
334 publisher = "ACM Press",
335 address = "New York",
336 year = "1997",
337}
338
339@Misc{RFC1321,
340 author = "R. Rivest",
341 title = "{RFC 1321}: The {MD5} Message-Digest Algorithm",
342 month = apr,
343 year = "1992",
344 bibdate = "Thu Oct 16 09:34:09 MDT 1997",
345 note = "Status: INFORMATIONAL.",
346 URL = "ftp://ftp.internic.net/rfc/rfc1321.txt,
347 ftp://ftp.math.utah.edu/pub/rfc/rfc1321.txt",
348 acknowledgement = ack-nhfb,
349 format = "TXT=35222 bytes",
350 online = "yes",
351 status = "INFORMATIONAL",
352}
353
354@MISC{Polstra96,
355 Author = "J. Polstra",
356 Title = "Program source for {CVSup}",
357 HowPublished = "ftp://ftp.cvsup.freebsd.org/pub/CVSup",
358 Year = 1996}
359
360@Misc{RFC1036,
361 author = "M. R. Horton and R. Adams",
362 title = "{RFC 1036}: Standard for interchange of {USENET}
363 messages",
364 day = "1",
365 month = dec,
366 year = "1987",
367 bibdate = "Thu Oct 16 09:34:09 MDT 1997",
368 note = "Obsoletes RFC0850 \cite{RFC0850}. Status: UNKNOWN.",
369 URL = "ftp://ftp.internic.net/rfc/rfc1036.txt,
370 ftp://ftp.internic.net/rfc/rfc850.txt,
371 ftp://ftp.math.utah.edu/pub/rfc/rfc1036.txt,
372 ftp://ftp.math.utah.edu/pub/rfc/rfc850.txt",
373 acknowledgement = ack-nhfb,
374 format = "TXT=46891 bytes",
375 obsoletes = "Obsoletes RFC0850 \cite{RFC0850}.",
376 online = "yes",
377 status = "UNKNOWN",
378}
379
380
381@Misc{RFC0977,
382 author = "B. Kantor and P. Lapsley",
383 title = "{RFC 977}: Network News Transfer Protocol: {A}
384 Proposed Standard for the Stream-Based Transmission of
385 News",
386 day = "1",
387 month = feb,
388 year = "1986",
389 bibdate = "Thu Oct 16 09:34:09 MDT 1997",
390 note = "Status: PROPOSED STANDARD.",
391 URL = "ftp://ftp.internic.net/rfc/rfc977.txt,
392 ftp://ftp.math.utah.edu/pub/rfc/rfc977.txt",
393 acknowledgement = ack-nhfb,
394 format = "TXT=55062 bytes",
395 online = "yes",
396 status = "PROPOSED STANDARD",
397}
398
399@Misc{RFC0850,
400 author = "M. R. Horton",
401 title = "{RFC 850}: Standard for interchange of {USENET}
402 messages",
403 day = "1",
404 month = jun,
405 year = "1983",
406 bibdate = "Thu Oct 16 09:34:09 MDT 1997",
407 note = "Obsoleted by RFC1036 \cite{RFC1036}. Status:
408 UNKNOWN.",
409 URL = "ftp://ftp.internic.net/rfc/rfc1036.txt,
410 ftp://ftp.internic.net/rfc/rfc850.txt,
411 ftp://ftp.math.utah.edu/pub/rfc/rfc1036.txt,
412 ftp://ftp.math.utah.edu/pub/rfc/rfc850.txt",
413 acknowledgement = ack-nhfb,
414 format = "TXT=43871 bytes",
415 obsoletedby = "Obsoleted by RFC1036 \cite{RFC1036}.",
416 online = "yes",
417 status = "UNKNOWN",
418}
419
420@InProceedings{Salz:1992:IUT,
421 author = "Rich Salz",
422 title = "{InterNetNews: Usenet} Transport for {Internet}
423 Sites",
424 crossref = "USENIX:1992:PSU",
425 pages = "93--98",
426 month = "Summer",
427 year = "1992",
428 bibdate = "Fri Oct 18 07:24:24 MDT 1996",
429 bibsource = "ftp://ftp.uu.net/library/bibliography",
430 acknowledgement = ack-nhfb,
431 affiliation = "BBN Systems and Technologies",
432}
433
434@Proceedings{USENIX:1992:PSU,
435 editor = "{USENIX Association}",
436 booktitle = "Proceedings of the Summer 1992 {USENIX} Conference:
437 June 8--12, 1992, San Antonio, Texas, USA",
438 title = "Proceedings of the Summer 1992 {USENIX} Conference:
439 June 8--12, 1992, San Antonio, Texas, {USA}",
440 publisher = pub-USENIX,
441 address = pub-USENIX:adr,
442 pages = "vii + 253",
443 year = "1992",
444 ISBN = "1-880446-44-8",
445 LCCN = "QA 76.76 O63 U83 1992",
446 bibdate = "Sun Feb 18 07:46:09 MST 1996",
447 acknowledgement = ack-nhfb,
448 annote = "Spine title: San Antonio conference proceedings.",
449 keywords = "UNIX (Computer operating system) --- Congresses.",
450}
451
452@InProceedings{Berliner:1990:CIP,
453 author = "Brian Berliner",
454 title = "{CVS II}: Parallelizing Software Development",
455 crossref = "USENIX:1990:PWU",
456 pages = "341--352",
457 day = "22--26",
458 month = jan,
459 year = "1990",
460 bibdate = "Fri Oct 18 07:24:24 MDT 1996",
461 bibsource = "ftp://ftp.uu.net/library/bibliography",
462 acknowledgement = ack-nhfb,
463 affiliation = "Prisma, Inc.",
464}
465
466@Proceedings{USENIX:1990:PWU,
467 editor = "{USENIX Association}",
468 key = "USENIX Winter '90",
469 booktitle = "Proceedings of the Winter 1990 {USENIX} Conference,
470 January 22--26, 1990, Washington, {DC}, {USA}",
471 title = "Proceedings of the Winter 1990 {USENIX} Conference,
472 January 22--26, 1990, Washington, {DC}, {USA}",
473 publisher = pub-USENIX,
474 address = pub-USENIX:adr,
475 pages = "xvi + 374",
476 year = "1990",
477 LCCN = "QA76.8.U65 U82 1990",
478 bibdate = "Thu Sep 15 18:50:55 1994",
479 acknowledgement = ack-nhfb,
480 keywords = "UNIX (Computer operating system) --- Congresses; UNIX
481 (OPERATING SYSTEM); OPERATING SYSTEMS (COMPUTERS);
482 CONFERENCES; CHECKOUT",
483 xxISBN = "none",
484}
485
486@InProceedings{soda92*367,
487 author = "J. Ian Munro and Thomas Papadakis and Robert
488 Sedgewick",
489 title = "Deterministic Skip Lists",
490 pages = "367--375",
491 ISBN = "0-89871-293-9",
492 editor = "Frances {Frederickson, Grag; Graham, Ron; Hochbaum,
493 Dorit S.; Johnson, Ellis; Kosaraju, S. Rao; Luby,
494 Michael; Megiddo, Nimrod; Schieber, Baruch; Vaidya,
495 Pravin; Yao}",
496 booktitle = "Proceedings of the 3rd Annual {ACM}-{SIAM} Symposium
497 on Discrete Algorithms ({SODA} '92)",
498 address = "Orlando, FL, USA",
499 month = jan,
500 year = "1992",
501 publisher = "SIAM",
502}
diff --git a/xdelta1/doc/old/dcc99/dcc99.sty b/xdelta1/doc/old/dcc99/dcc99.sty
new file mode 100755
index 0000000..ba27dc7
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/dcc99.sty
@@ -0,0 +1,56 @@
1\usepackage{xspace}
2\usepackage{epsf}
3%\usepackage{amsthm}
4%\usepackage{amstex}
5\usepackage{amsmath}
6
7\newenvironment{program}{\begin{itemize}\item[]\tt\hfill\begin{tabbing}}{\end{tabbing}\end{itemize}}
8
9\newcommand{\myfigure}[2]{
10 \begin{figure*}
11 \begin{center}
12 \def\@captype{figure}
13 \leavevmode
14 %\epsfxsize=8cm
15 \epsfbox{figs/#1.eps}
16 \caption{#2} \label{#1}
17 \end{center}
18 \end{figure*}
19 }
20
21\newcommand{\medfigure}[2]{
22 \begin{figure*}
23 \begin{center}
24 \def\@captype{figure}
25 \leavevmode
26 \epsfxsize=8cm
27 \epsfbox{figs/#1.eps}
28 \caption{#2} \label{#1}
29 \end{center}
30 \end{figure*}
31 }
32
33\newcommand{\bigfigure}[2]{
34 \begin{figure*}
35 \begin{center}
36 \def\@captype{figure}
37 \leavevmode
38 \epsfxsize=8cm
39 \epsfbox{figs/#1.eps}
40 \caption{#2} \label{#1}
41 \end{center}
42 \end{figure*}
43 }
44
45\def\xd{{\sc Xdelta}}
46\def\records{\textrm{\emph{records}}}
47\def\nil{\textrm{\emph{nil}}}
48\def\fingerprint{\textrm{\emph{fingerprint}}}
49\def\size{\textrm{\emph{size}}}
50\def\lmat{\textrm{\emph{match}}}
51\def\lcs{\text{{\textrm{\emph{lcs}}}}}
52\def\difference{\textrm{{\emph{difference}}}}
53\def\intervals{\textrm{{\emph{intervals}}}}
54\def\icpy#1#2#3{\texttt{copy} \; #1 \; #2 \; #3}
55\def\iins#1{\texttt{insert} \; #1}
56\def\inv#1{#1^{-1}}
diff --git a/xdelta1/doc/old/dcc99/dcc99.tex b/xdelta1/doc/old/dcc99/dcc99.tex
new file mode 100755
index 0000000..27ab7e1
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/dcc99.tex
@@ -0,0 +1,1297 @@
1\documentclass{llncs}
2
3\title{Versioned File Archiving, Compression, and Distribution}
4\titlerunning{Versioned File Archiving and Compression}
5
6\usepackage{dcc99}
7\usepackage{enumerate}
8
9\author{Josh MacDonald\inst{1}}
10
11\authorrunning{Josh MacDonald}
12
13\tocauthor{Josh MacDonald (University of California at Berkeley,
14Department of Electrical Engineering and Computer Sciences.) }
15
16\institute{University of California at Berkeley, Department of
17Electrical Engineering and Computer Sciences, Berkeley CA 94720, USA
18}
19
20\date{29 Oct 1998}
21
22\nonfrenchspacing
23
24%\theoremstyle{marginbreak}
25
26\newtheorem{thrm}{{\sc Theorem}}
27\newtheorem{clm}{{\sc Claim}}
28\newtheorem{lemm}{{\sc Lemma}}
29\newtheorem{alg}{{\sc Algorithm}}
30
31%\Alph{alg}
32\renewcommand{\thealg}{\Alph{alg}}
33
34\begin{document}
35\bibliographystyle{acm}
36
37\maketitle
38\begin{abstract}
39The \xd {} system implements a technique for archiving and compressing
40collections of many similar file versions. It stores only the
41differences between certain versions. I describe and discuss an
42algorithm for computing \emph{file deltas}, present measurements, and
43demonstrate its application to versioned file-archival and efficient
44file-distribution network protocols.
45\end{abstract}
46
47% Put up your benchmark, whatever it is, on a ftp site somewhere, and
48% INCLUDE A MD5 CHECKSUM, traceability, etc.
49
50\section{Overview}
51
52The \emph{file delta} problem is to compute a small set of
53instructions for transforming one file into another---one that is
54expected to be a function of the file's changes, not its content.
55This technique is well established for versioned file-archival.
56Though the advantages of using file deltas to transmit changes over a
57network are clear, specifying and widely deploying such a system
58efficient enough to justify itself is not as easy as it seems. There
59are a number of issues to overcome. First, the execution cost of
60computing and compressing deltas can be prohibitive--a site
61administrator might rather let everyone on the network suffer through
62a congested network condition than be CPU-bound while delivering
63efficient deltas to an uncongested network. Second, efficiently a
64integrating delta transmission into an application requires work; a
65server must store and name multiple versions of a file, compute deltas
66when requested, complicate existing protocols, and be fair---these are
67not always compatible.
68
69Recently there have been advances in delta algorithms, but their use
70in network delta communication has been slow to follow. This work
71addresses many of these issues, and finishes with a few new challenges
72that I am currently working on. I have designed and implemented a
73decentralized scheme for highly-available, versioned file-archival,
74with which I have implemented a delta-based distribution and
75replication protocol built upon a simple, distributed file-archive
76abstraction. The system, called \xd, is implemented as the basis of
77multiple server, distributed version control in PRCS, the Project
78Revision Control System \cite{MacDonald:1998:SCM}.
79
80This paper outlines the \xd {} system in three sections: delta
81algorithms (\S\ref{sec:delta}), file-archival (\S\ref{sec:archival}),
82and distribution protocols (\S\ref{sec:distribution}). Each section
83will detail related work, discuss previous implementations, outline a
84part of the system and measure it, and suggest future work.
85
86\section{Delta Algorithms}\label{sec:delta}
87
88The \emph{file delta problem} is to efficiently compute a delta $d$
89that can be stored compactly and used to construct a \emph{To} file
90$t^d$ from the set of $k^d$ \emph{From} files $F^d = \left\{ f^d_0
91\ldots f^d_{k^d} \right\}$. The \emph{generate} operation computes
92$d$ from $F^d$ and $t^d$:
93
94\begin{equation}
95d = t^d \ominus F^d
96\end{equation}
97
98\noindent while the \emph{apply} operation computes the reverse:
99
100\begin{equation}
101t^d = d \oplus F^d
102\end{equation}
103
104For our purposes, a file will be defined to be a sequence of bytes.
105For a file $f$, $\size(f)$ denotes the length of $f$ in bytes and set
106of files $F$, $\size(F) = \sum_{f \in F} \size(f)$. The notation,
107$f[i]$, denotes the byte at offset $i$ of $f$, where $0 \le i <
108size(f)$.
109
110A good solution should be fast, perform well on large inputs, and
111expect to benefit from preprocessing $F$ for repeated computations.
112Performance considerations for real files and memory systems make it
113desirable to operate in a single, sequential pass through $t$.
114
115The \emph{copy/insert} class of delta algorithms are those that
116produce a common delta encoding consisting of \emph{copy} and
117\emph{insert} operations. This class of algorithms is useful because
118there is a straightforward definition of an optimal solution, and the
119implementation of \emph{apply} is extremely simple. For reasons to
120come, this type of delta will be represented in two separate parts:
121the \emph{control} $C^d$ and \emph{insert-data} $I^d$. The control
122contains a sequence of instructions $c^d_1 \ldots c^d_{z^d}$. The
123insert-data is represented as a file containing the concatenation of
124the data inserted by each insert instruction. Each instruction $c_i$
125is one of the two operations:
126
127\begin{align}
128&\icpy{m}{o}{l} \\
129&\iins{l}
130\end{align}
131
132\noindent These are executed in order to construct the \emph{To} file,
133where \texttt{copy} inserts the substring $f_m[o] \ldots f_m[o+l-1]$,
134and \texttt{insert} inserts the next $l$ bytes from $I^d$.
135
136The \emph{insert/delete} class of algorithms is characterized by
137\emph{insert} and \emph{delete} instructions. Many existing tools for
138computing file deltas use this type of encoding, as it produces a form
139which is easy for humans to read.
140
141Existing work on delta algorithms uses \emph{paired}
142algorithms---those in which there is a single \emph{From} file. For
143reasons which will become clear, the definition used here is more
144general than other presentations in allowing $F$ to be a set of files
145rather than a single file. Of course, $F$ can be reduced to a single
146file by concatenation, but attempting to generalize paired algorithms
147to multiple \emph{From} files violates many of the assumptions made to
148improve these algorithms.
149
150\subsection{Related Work}
151
152Work on delta algorithms has been influenced by related work on the
153longest common subsequence problem, data compression, and pattern
154matching.
155
156The first technique for computing file deltas used an insert/delete
157algorithm based upon finding the longest common subsequence (LCS) of
158two files. Among these, the UNIX \texttt{diff} utility was first used
159to list changes between two files in a line-by-line summary
160\cite{Miller:1985:FCP}. The \texttt{diff} utility is
161\emph{line-oriented}---each insertion and deletion involves only
162complete lines. It was adopted by the early version control tools
163SCCS \cite{Rochkind:ieee:tose:1975} and RCS \cite{Tichy:1985:RSV}.
164Line-oriented algorithms, however, perform poorly on files which are
165not line terminated such as images, rich-text data, and object files.
166
167Tichy developed a linear time and space, greedy copy/insert algorithm
168\cite{Tichy84} using a suffix tree to search for matching substrings
169of the files in question. This simple greedy approach will be
170discussed next, and is easily shown to be optimal for copy/insert
171deltas under certain assumptions.
172
173Burns \cite{Burns:Thesis} presents a recent summary of previous work
174and discusses several paired, copy/insert algorithms based upon a
175greedy approach using hashed Rabin-Karp fingerprints for string
176matching. He then refines it in several ways, because the simplest
177greedy algorithm requires space linear in the length of the file. He
178analyzes constant-space versions of this algorithm, making the
179assumption that changes between the files are the result of only
180insertions and deletions, for example. When $F$ is a set of files,
181however, many of these improvements fail.
182
183Hunt, Tichy, and Vo present an impressive paired delta algorithm
184called \emph{vdelta} \cite{Vo:1996:SCM}, which mixes Lempel-Ziv
185compression and differential compression to compute a compressed delta
186by using $F$ as a dictionary to compress $t$. This particular
187approach is difficult to compare with others, because most delta
188algorithms compute uncompressed deltas.
189
190A delta can be applied in-place if application can be performed using
191the space containing the data to which the delta is applied. An
192\emph{insert/delete} delta can always be applied in-place, but an
193arbitrary \emph{copy/insert} delta cannot. Burns and Long have shown
194techniques for computing \emph{copy/insert} deltas that can be applied
195\emph{in-place} \cite{Burns:InPlace}.
196
197\subsection{Difference Metrics} \label{sec:metrics}
198
199Comparison of algorithms has been a difficult subject, as algorithms
200are studied variously in terms of delta size, compressed delta size,
201and optimality with a particular encoding. A solution that is optimal
202in one encoding cannot be easily compared with another encoding,
203without an absolute metric. Hunt, Tichy, and Vo suggest comparing
204delta algorithms with a difference metric based upon the length of the
205longest common subsequence \cite{Vo:1996:SCM}:
206
207\begin{equation}
208\difference = \frac{\size(f)+\size(t)}{2} - \size(\lcs(f,t))
209\end{equation}
210
211\noindent where $f$ is the single from input. The $\difference$ value
212is compared to the size of a delta produced by an algorithm, allowing
213its performance to be judged relative to results of other algorithms.
214This is troublesome for several reasons: there is no linear time and
215space algorithm for computing the exact LCS; it does not apply to
216multiple input files---since it does not allow permuted or repeated
217copy regions; and it is not even the most appropriate dynamic
218programming style of solution since it weighs an \emph{insert} the
219same a \emph{delete} instruction.
220
221The copy/insert encoding is not optimal either; but it allows for
222permuted and repeated copied regions while the metric based on LCS
223does not. Additionally:
224
225\begin{itemize}
226\item An exact solution is known that requires $O(\size(F))$ space \cite{Tichy84}
227\item It characterizes non-paired delta algorithms
228\item The particular, uncompressed encoding is useful in practice
229\end{itemize}
230
231For these reasons, it seems appropriate to use the size of the
232unencoded, optimal \emph{copy/insert} solution as a metric for
233comparing all delta algorithms. Also, using an encoding-independent
234metric allows algorithm designers to study encoding separately from
235search and pattern matching issues.
236
237More precisely, the \emph{copy/insert metric} $m$ measures the upper
238bound on the size of the optimal sequence of \emph{copy/insert}
239instructions, described next. Assuming an 8-bit byte, this metric
240estimates the total delta size in bits:
241
242\begin{align}
243m (C^d, I^d) &= \sum_{i = 1}^{z^d} m(c^d_i) \\
244m (\icpy{m}{o}{l}) &= 1 + \lceil\lg l\rceil + \lceil{\lg k^d}\rceil + \lceil{\lg o}\rceil \\
245m (\iins{l}) &= 1 + \lceil\lg l\rceil + 8 l
246\end{align}
247
248Earlier work on copy/insert algorithms has used a simpler metric,
249treating all copies with unit cost. It then suffices to show that a
250simple greedy algorithm is optimal \cite{Burns:Thesis}. The unit-cost
251copy metric is not an accurate estimate of the file difference, so I
252propose the above. The greedy solution is not optimal for the refined
253metric.
254
255\subsection{The Greedy Algorithm for Copy/Insert Deltas} \label{sec:greedy}
256
257The greedy algorithm simply scans through the \emph{To} file, finding
258the longest match at each position and generating a copy instruction.
259All unmatched strings produce an insert instruction.
260
261\begin{alg}\label{alg:generate}
262Compute $(C^d, I^d) = t^d \ominus F^d$ where $d$ has a copy/insert
263encoding
264\end{alg}
265
266Assume that match $(m, o, l) = \lmat (F,t,i)$, where the longest match
267to $t$ starting at index $i$ in $F$ is $f_m[o] \ldots f_m[o+l-1]$.
268Another parameter, $s$, is used as a lower bound on the length of a
269copy instruction. For now, assume $s=0$. Given these, a program to
270compute greedy copy/insert deltas is given in Figure
271\ref{fig:generate}.
272
273\begin{figure*}
274\begin{program}
275ge\= ne\= ra\= te\= De\= lta($t^d$, $F^d$) \\
276 \> $i \leftarrow 0$; $z \leftarrow 0$; $I^d \leftarrow$ \textrm{\emph{empty}} \>\>\>\> \hspace{6cm} \= $\triangleright$ \hbox{Step 1: Initialize.} \\
277 \> while ($i < \size(t)$) \>\>\>\>\> $\triangleright$ \hbox{Step 2: Loop.} \\
278 \>\> $(m,o,l) \leftarrow \lmat (F^d,t^t,i)$ \\
279 \>\> if ($l \le s$) \\
280 \>\>\> if ($z > 0$ \textrm{\emph{and}} $c_z^d = \iins{j}$) \>\>\> $\triangleright$ \hbox{Step 3: Insert.} \\
281 \>\>\>\> $c_z^d \leftarrow \iins{j+1}$ \\
282 \>\>\> else \\
283 \>\>\>\> $z \leftarrow z + 1$; $c_z^d \leftarrow \iins{1}$ \\
284 \>\>\> $I^d \leftarrow I^d$ \textrm{\emph{append}} $t^d[i]$; $i \leftarrow i + 1$ \\
285 \>\> else \\
286 \>\>\> $z \leftarrow z + 1$; $c_z^d \leftarrow \icpy{m}{o}{l}$; $i \leftarrow i + 1$ \>\>\> $\triangleright$ \hbox{Step 4: Copy.} \\
287 \> $z^d \leftarrow z$ \>\>\>\>\> $\triangleright$ \hbox{Step 5: Finish.}
288\end{program}
289\caption{Algorithm \ref{alg:generate}}\label{fig:generate}
290\end{figure*}
291
292Steps 1 and 5 execute once in $O(1)$ steps. In the worst case, the
293loop beginning in step 2 is executed $\size(t)$ times. Each execution
294of the loop requires $O(1)$ steps, plus the time taken by $\lmat$.
295Altogether, he algorithm runs in $O(\size(t) \cdot M)$ steps, where
296$M$ is the time complexity of the $\lmat$ operation.
297
298Burns \cite{Burns:Thesis} shows that this algorithm is optimal when
299copies are treated with unit cost. Burns and also Tichy
300\cite{Tichy84} demonstrate various $\lmat$ functions that all require
301linear time and space. An algorithm requiring only constant space is
302required to operate on arbitrarily large files.
303
304None of the available constant-space improvements, however, apply for
305multiple input files, which will be used for file archiving. As a
306result, \xd {} uses a linear-space approximation of the greedy
307algorithm.
308
309\subsection{The \xd {} Delta Algorithm}
310
311\xd {} uses a fast, linear time and space approximation to the greedy
312algorithm. The actual space required is chosen to be a fraction of
313the input size less than approximately 0.5. A \emph{fingerprint}
314function is a hashing function for fixed-length strings for which
315collisions are unlikely. The algorithm uses a hashed index of the
316value of a fingerprint function at regular offsets in the \emph{From}
317data to perform string matching. It then scans the \emph{To} file
318performing the greedy algorithm. The approximation arises from hash
319and fingerprint collisions, and the approximate nature of the
320string-matching function.
321
322For some constant $s$ chosen to be a small power of 2, the algorithm
323computes a fingerprint on segments of length $s$ in each file $f$ at
324all offsets $i$ divisible by $s$ except, possibly, the last if $s$
325does not divide $\size(f)$---in this case the segment is too short.
326The fingerprint function $a_{fi} = \fingerprint(f, i)$ is evaluated in
327each file and inserted into a hash table, $B$, with hash function $H$.
328The number of such records is denoted $\records(F) = \sum_{f \in F}
329\lfloor \frac{\size(f)}{s} \rfloor$. The hash table does not chain
330hash collisions. Only a single $(f,i)$ pair or $\nil$ is recorded for
331each bucket. The hash table is implemented as an array of 32-bit
332words of length $\records(F)$. The $\nil$ value is encoded as the
333value 0, and $(f,i)$ is mapped into the remaining values. Since $i$
334is bounded by $\lfloor \frac{\size(f)}{s} \rfloor$, $(f,i)$ can be
335easily fit into a 32-bit word provided that the number of files in $F$
336is less than $s$ and the length of $f$ is less than $2^{32}$. Another
337array of words $c_{f}$ is used for each file to index $c_{f}[i] =
338a_{fi}$ so that a fingerprint collision can be easily detected. The
339sum of lengths for these arrays is also $\records(F)$, so in bytes the
340algorithm requires:
341
342\begin{equation}
343O\left(\sum_{f \in F} 8 \lfloor \frac{\size(f)}{s} \rfloor\right)
344\end{equation}
345
346\noindent for the two arrays, where 8 is the sum of 4 bytes per 32-bit
347word for each of the separate data structures. The choice of $s$ will
348be discussed later, but should be chosen to be at least $2^4$, so the
349space required to run the algorithm is bounded by:
350
351\begin{equation}
352O\left(\frac{8 \cdot \size(F)}{s}\right) \le O\left(\frac{\size(F)}{2}\right) = O(\size(F)) \label{action-bound}
353\end{equation}
354
355Algorithm \ref{alg:match} locates matching strings at each offset in
356the \emph{To} file, supplying the match function used in algorithm
357\ref{alg:generate}.
358
359\begin{alg}\label{alg:match}
360Compute $(m,o,l) = \lmat (F,t,i)$.
361\end{alg}
362
363\begin{figure*}
364\begin{program}
365ma\=tc\=h($t^d$, $F^d$) \\
366 \> $x \leftarrow \fingerprint(t,i)$ \> \hspace{9cm} \= $\triangleright$ \hbox{Step 1: Fingerprint. } \\
367 \> if ($B[H(x)] = \nil$) \>\> $\triangleright$ \hbox{Step 2: Lookup.} \\
368 \>\> \textrm{\emph{return no match}} \\
369 \> else \\
370 \>\> $(m,o) \leftarrow B[H(x)]$ \\
371 \> if ($c_{f_m}[o] \not = x$) \textrm{\emph{return no match}} \>\> $\triangleright$ \hbox{Step 3: Test for collision.} \\
372 \> $l \leftarrow$ \textrm{\emph{length of longest matching substring at offsets $o$ and $i$}} \>\> $\triangleright$ \hbox{Step 4: Grow.} \\
373 \> if ($l < s$) \textrm{\emph{return no} match} \\
374 \> \textrm{\emph{return}} $(m,o,l)$ \\
375\end{program}
376\caption{Algorithm \ref{alg:match}}\label{fig:match}
377\end{figure*}
378
379The fingerprint can be efficiently computed incrementally while
380advancing through the \emph{To} file. The two characters entering and
381leaving the fingerprint range are used to advance the result in $O(1)$
382steps. Locating string matches at each index takes, in the worst
383case, $O(s) = O(1)$ steps for a failed match and $O(\size(t))$ for a
384successful one, but the total number of steps expended during all
385successful matches is bounded by $O(\size(t))$. Using the result of
386\S\ref{sec:greedy}, this gives a total time complexity of
387$O(\size(t))$ for scanning the \emph{To} input, plus $O(\size(F))$ for
388constructing the index.
389
390\xd {} uses the \texttt{adler32} fingerprint function originally used
391in gzip \cite{Rsync}.
392
393\subsection{Analysis}
394
395A large value of $s$ reduces the work done and space used by the
396algorithm, but will locate fewer matches. Too small a value of $s$
397can lead to copies so small that they they are less efficient than an
398equivalent insert encoding. This last consideration gives a lower
399bound on $s$:
400
401\begin{align}
402m (\iins{s}) &> m (\icpy{f}{o}{s}) \\
4038 s &> \lceil{\lg k^d}\rceil + \lceil{\lg o}\rceil \label{eqn:s}
404\end{align}
405
406\noindent The right-hand-side of (\ref{eqn:s}) is bounded by $\lceil
407\lg \size(F) \rceil$, yielding $s > \frac{1}{8}\lceil \lg \size(F)
408\rceil$.
409
410Assuming the inputs, hash values, and fingerprint values have uniform
411distributions, the approximations made so far can be expected to
412perform well, as I will show. The key insight is that if a long match
413fails at one position due to a hashing collision, then it is likely to
414succeed at the next matching offsets. That is, a failure to match
415$t[i \ldots i+s-1]$ at $f_m[sk \ldots s(k+1)-1]$ because $(m,k)$ is
416collides in the hash table is not a disaster because the next matching
417pair $t[i+s \ldots i+2s-1]$ and $f_m[s(k+1) \ldots s(k+2)-1]$ may
418succeed. The expected number of misses for a long match is
419proportional to the expected number of hash collisions, and therefore,
420the match is expected to fail asymptotically $O(1)$ times before the
421match is discovered. This causes an expected degradation that is
422linear only in the number of instructions.
423
424The hash function and fingerprint function, composed, reduce segments
425in $F$ to integers less than $\records(F)$, which is chosen as the
426table size. When a conflict occurs during hashing, the algorithm must
427choose a winner. Several policies could be chosen. For example, a
428match appearing first in a file is potentially more valuable to the
429matching procedure since it may locate a match that contains
430colliding matches that occur later in the same file. Here, I will
431analyze a uniform random trial to decide whether to replace the
432incumbent record or not. By selecting the winner at random, the
433distribution of the hashing functions discussed above is not altered.
434Contrary to this analysis, however, simpler policies that never or
435always replace the colliding record seem to work equally well.
436
437Another array $trials[i]$ is required to contain the number of
438collisions which have occured in the $i^{th}$ bucket. The incumbent
439record or $\nil$ in bucket $j$ is replaced with probability
440$P(\textrm{\emph{replace}}) = \frac{1}{trials[j]+1}$. The additional
441array increases the space required by the algorithm in
442(\ref{action-bound}) by at most a factor of $3/2$, since it brings the
443number of arrays from 2 to 3. The probability $P_k(i)$ represents the
444probability of the $k^{th}$ record surviving the $i^{th}$ trial.
445Then,
446
447\begin{equation}
448P_k(n) = \frac{1}{k} \cdot \frac{k}{k+1} \cdots \frac{n-2}{n-1} \cdot \frac{n-1}{n} = \frac{1}{n}
449\end{equation}
450
451\noindent so the probability of survival is uniform.
452
453The string matching function \emph{fails} when a record that would
454have matched was discarded in a collision. The probability of failure
455is determined by assuming the hash functions behave randomly and
456computing the expected number of hash collisions. After hashing $M =
457\records(F)$ records into $N$ buckets, the expected number of of empty
458buckets is:
459
460\begin{equation}
461E(\emph{\# of empty buckets}) = N \left( 1 - \frac{1}{N} \right)
462\end{equation}
463
464\noindent By choosing $N=M$, the expected number of empty buckets, and
465therefore collisions, is asymptotically $N \inv{e} \approx 0.63 N$.
466The expected number of trials before a successful match is found is
467the expected number of failures $E(failed) = \frac{e}{e-1}$. For
468files relatively large compared to $s$, the matching algorithm is
469expected to succeed after $\frac{e}{e-1}$ failures.
470
471In addition to losing matches from hash collisions, matches are lost
472from only searching at a fraction of the offsets in $F$. For matches
473of length $l \ge s$, the match can be expected to be discovered at one
474of the $\lfloor \frac{l}{s} \rfloor$ interior points recorded in $F$.
475The first such point may be offset at most $s-1$ bytes from the true
476beginning, and the $q^th$ such point is located at most $s q + s - 1$
477bytes from the true beginning. From the above, we expect $q =
478\frac{e}{e-1}$, so the approximations produce matches which are
479expected to shorter than their true length by $\frac{s e}{e-1} - s -
4801$ bytes due to hash collisions. Thus, the expected penalty is linear
481in the number of copies, not the length of the inputs.
482
483\subsection{Inversion of Copy/Insert Deltas} \label{sec:invert}
484
485Given file $f$ and paired delta $d$ that computes $t$ from $f$, we
486would like to compute a delta $\inv{d}$ that computes $f$ from $t$.
487The solution will set up more general, direct delta manipulation in
488the next section. One might possess $f$ and $d$, and want to inform a
489peer possessing $t$ how to construct $f$ by sending $\inv{d}$.
490
491\begin{alg}\label{alg:invert}
492Compute $\inv{d}$ from $d$ and $f$.
493\end{alg}
494
495I use a balanced interval tree to construct the reverse mapping for
496copy instructions in $d$. The tree supports insertion, deletion, and
497location of elements in $O(\lg V)$ steps for $V$, the number of
498intervals (see, for example, Cormen, Leiserson, and Rivest
499\cite{clr}). The program in Figure \ref{fig:invert} computes the
500interval table $R$.
501
502\begin{figure*}
503\begin{program}
504in\= ve\= rt\= Copies ($f$, $d$) \\
505 \> $i \leftarrow 0$ \>\> \hspace{6cm} \= $\triangleright$ \hbox{Current instruction in $d$.} \\
506 \> $o_t \leftarrow 0$ \>\>\> $\triangleright$ \hbox{Current offset in $t$.} \\
507 \> $R \leftarrow \textrm{\emph{empth}}$ \>\>\> $\triangleright$ \hbox{Empty interval tree.} \\
508 \> while ($i < z^d$) \\
509 \>\> if ($c_i^d = \icpy{f}{o}{l}$) \\
510 \>\>\> $R([o_t \ldots o_t + l)) \leftarrow [o \ldots o + l)$ \\
511 \>\>\> $o_t \leftarrow o_t + l$; $i \leftarrow i + 1$ \\
512 \>\> else ($c_i^d = \iins{l}$) \\
513 \>\>\> $o_t \leftarrow o_t + l$; $i \leftarrow i + 1$ \\
514\end{program}
515\caption{Invert Copies in $d$ from $f$}\label{fig:invert}
516\end{figure*}
517
518Using \texttt{invertCopies} to construct $R$, $\inv{d}$ is constructed
519with an in-order traversal of $R$. Each range $r$ records a mapping
520from $[o_f \ldots o_f + l)$ in $f$ to $[o_t \ldots o_t + l)$ in $t$.
521Each such range may be used to construct $\icpy{t}{o_t}{l}$. Insert
522instructions are generated for all ranges not covered by $R$.
523
524The performance of this algorithm depends on $z^d$, $z^{\inv{d}}$, and
525the $\size(I^{\inv{d}})$. First, however, $z^d$ and $z^{\inv{d}}$ can
526be related.
527
528\begin{thrm} \label{thrm:zrel}
529$z^{\inv{d}}$ is bounded according to:
530\begin{equation}
531z^{\inv{d}} \le 2 z^d + 1
532\end{equation}
533\end{thrm}
534
535{\sc Proof} Let $z^{\inv{d}}_i$ by the number of instructions in
536$\inv{d}$ as a function of the number of instructions $i$ processed so
537far in $d$. Observe that $z^{\inv{d}}_0 = 1$, corresponding to a
538single insert instruction in $\inv{d}$. In the worst case, each
539copied range may remove one existing instruction and create three; the
540induction hypothesis is $z^{\inv{d}}_{i+1} = 2 + z^{\inv{d}}_{i}$. \qed
541
542The algorithm given does not produce an optimal delta, however. Its
543performance degrades when $t$'s copied segments overlap in $f$--the
544previous analysis also suffers from repeated segments of length
545greater than $s$. Neglecting this case, the size of the delta is
546$\size(\inv{d}) \approx \size(f) - (\size(t) - \size(d))$.
547
548The \texttt{invertCopies} procedure executes a loop $z^d$ times, each
549requiring $O(\lg z^d)$ steps. The final construction, given $R$,
550requires $O(z^{\inv{d}} + \size(I^{\inv{d}}))$ steps to compute the
551instructions in $\inv{d}$. Together, and using the results of theorem
552\ref{thrm:zrel}, the algorithm requires $O(z^d \lg z^d +
553\size(I^{\inv{d}}))$. This time bound is acceptable, since $z^d$ is
554expected to be small--it corresponds to the number of non-overlapping,
555longest matching substrings between $t$ and $f$.
556
557\subsection{Applying Copy/Insert Deltas}
558
559A simple implementation of \emph{apply} for copy/insert deltas is
560straightforward and requires $O(\size(t))$ steps to apply $d$. The
561\emph{reconstruct} operation takes a number of deltas and applies them
562all at once. Reconstruct accepts a tree of deltas in which each leaf
563is represented by a literal file and each internal node is represented
564by a delta, and constructs the file that the root node's delta
565constructs. It can be easily extended to operate on DAGs.
566Reconstruct can be considerably more efficient than simply applying
567each delta in sequence.
568
569The technique for reconstruction resembles the inversion algorithm
570above. Suppose that $t_r$ is being reconstructed from the delta tree
571rooted at $d_r$, where interior delta nodes are denoted $d_i$ and
572leaf, literal nodes are denoted $l_i$. Algorithm
573\ref{alg:reconstruct} computes an interval tree mapping ranges in
574$t_r$ to the literal data it is ultimately constructed from: files
575$l_i$ and insert data $I^{d_i}$. It computes in a bottom-up traversal
576of the tree. A range $[l \ldots h)_{f,o_f}$ indicates the mapping
577from $[l \ldots h)$ to $[o_f \ldots o_f + h - l)$ in $f$, where $f$
578can also be the insert-data of some delta $I^d_i$, which is treated as
579just another literal file. Finally, the computed interval tree for
580$d_r$ is used to write out the result in $O(\size(t_r))$ steps.
581
582\begin{alg}\label{alg:reconstruct}
583Reconstruct $t_r$ from $d_r$.
584\end{alg}
585
586The program for computing $t_r$ is given in Figure
587\ref{fig:reconstruct}. The function \texttt{translate} translates the
588interval $[o \ldots o + l)$ from interval tree $R_f$ to interval tree
589$R_t$. Each call to \texttt{reconstructRange} requires, in addition
590to the recursive calls, $O(z \lg z)$ steps and $O(z)$ space to insert
591$z$ ranges into the resulting interval tree. For literal files, the
592call executes in constant time. For each delta $d$, $z$ is bounded by
593$z^d$ times the maximum of the number of ranges in each child's
594interval map.
595
596The maximum number of ranges for delta $d_1$ due to the path $d_1
597\rightarrow \ldots d_n \rightarrow l_i$ is $\prod_{i=1}^{n}{z^i}$, but
598is bounded by $O(\size(t^{d_1}))$ since there are only so many
599intervals. The worst case occurs when a copy instruction copies from
600a range being constructed from the child delta which includes the
601range of every copy instruction in the child, and is unlikely in
602practice.
603
604Let value $z^*$ be the maximum such product for $d_r$. The
605intermediate storage required is the size of the largest interval
606table, which is $O(z^*)$. The time to reconstruct $t_r$ from a tree
607of $n$ deltas is $O(n z^* \lg z^* + \size(t_r))$. This time
608complexity will be further examined for the archival scheme based upon
609it which follows.
610
611\begin{figure*}
612\begin{program}
613re\= construct($d_r$) \\
614 \> $R$ = reconstructRange($d_r$) \\
615 \> fo\= r (increasing ranges $r = [r_l \ldots r_h)_{l_r}$ in $R$) \\
616 \>\> output the segment beginning at $r_l$ in $l_r$ \\
617re\= co\= ns\= tructRange($d_i$) \hspace{3cm} \= $\triangleright$ \hbox{for a delta} \\
618\> $R =$ \textrm{\emph{empty interval tree}} \\
619\> $o_i = 0$ \>\>\> $\triangleright$ \hbox{offset in $I^{d_i}$} \\
620\> $o_t = 0$ \>\>\> $\triangleright$ \hbox{offset in $t^{d_i}$} \\
621\> for ($f \in F^{d_i}$) \\
622\>\> $\intervals[f] =$ reconstructRange($f$) \\
623\> for (each instruction $c_i$) \\
624\>\> if ($c_i = \icpy{f}{o}{l}$) \\
625\>\>\> translate ($R, intervals[f], o, l$) \\
626\>\>\> $o_t = o_t + l$ \\
627\>\> else if ($c_i = \iins{l}$) \\
628\>\>\> insert ($R$, $[o_t \ldots o_t + l)_{I^{d_i},o_i}$) \\
629\>\>\> $o_i = o_i + l$ \\
630\>\>\> $o_t = o_t + l$ \\
631\> for ($f \in F^{d_i}$) \\
632\>\> free $\intervals[f]$ \>\> $\triangleright$ \hbox{no longer required} \\
633re\= co\> ns\> tructRange($l_i$) \> $\triangleright$ \hbox{for a literal file} \\
634\> $R$ = \textrm{\emph{empty interval tree}} \\
635\> insert ($R, [0 \ldots \size(l_i))_{l_i,0}$) \\
636\> return $R$ \\
637\end{program}
638\caption{Reconstruct}\label{fig:reconstruct}
639\end{figure*}
640
641Observe that this procedure allows a version to be partially
642extracted. The time complexity to extract a partial version of length
643$p$ is still governed by $\size(t)$ from the $z^* \lg z^*$ term, but
644only in the worst cast. Otherwise, the additional $\size(t)$ term is
645reduced to $\size(p)$, which is potentially significant.
646
647\subsection{Experimental Results}
648
649Several programs for computing file deltas are compared to evaluate
650their performance relative to the copy/insert metric $m$ defined in
651\S\ref{sec:metrics}. A total of 25584 file pairs that changed
652in the Linux kernel releases between versions 2.1.0 and 2.1.28 were
653used; both forward and reverse deltas were computed and the ratio of a
654program's delta size to the metric is plotted against the \emph{To}
655file size in Figure \ref{sizes}. The results are averaged on the
656graph, with error bars indicating the standard deviation.
657
658For the purposes of this abstract, only the results \xd {} and
659\emph{vdelta} are shown.
660
661\medfigure{sizes}{Relative delta sizes.}
662
663For small files, \emph{vdelta} outperforms \xd, but as the file size
664increases its performance degrades. In fact, \xd's relative
665performance continues to improve as input size grows, but the
666copy/insert metric was too expensive to compute for larger files so
667these results could not be included in the same plot. The performance
668of \xd {} and \emph{vdelta} are, therefore, directly compared in Figure
669\ref{bigsizes} for files from 25 to 30 megabytes in size. These
670files were the tarred contents of each of the Linux kernel releases
671used above. This test is especially relevant for determining how
672practical it is to release software package changes as a delta against
673the previous release, not on a file-by-file basis, but from the old
674package to the new package.
675
676\medfigure{bigsizes}{Delta sizes for large files.}
677
678The linear-space approach has paid off on large input files.
679\emph{Vdelta}'s delta size is close to the compressed size of the
680\emph{To} file for many of the files in Figure \ref{bigsizes}, little
681space has been saved over simply compressing the \emph{To} file. This
682is likely to be a result of the constant-space assumptions failing,
683and because the contents of the files may have been reordered.
684
685\emph{Unfinished}.
686
687\subsection{Future Work}
688
689Improvements in the space required by multi-input delta functions are
690necessary future work.
691
692The reconstruct algorithm given has a similarity to the nearly linear
693time scheme presented for an editor with built-in version control by
694Fraser and Myers \cite{Myers:Editor}, though it does not directly
695apply.
696
697The results achieved by the \emph{vdelta} algorithm are very
698promising, but do not directly extend to all of the techniques
699presented here. Along these lines, the techniques presented below
700suggest that considering the delta problem in isolation is not the
701best way to proceed. There are strong connections to data compression
702and text retrieval, here; these can be taken advantage of when
703applying delta algorithms to particular application domains.
704
705\section{Versioned-File Archives}\label{sec:archival}
706
707A versioned file archive supports the \emph{get}, \emph{put}, and
708\emph{delete} operations. \emph{Put} inserts a file into the archive,
709returning a name by which to retrieve it, and \emph{get} retrieves the
710file. \emph{Delete} indicates that a file will never be required
711again and that it's storage may be reclaimed.
712
713The archive stores multiple versions of a \emph{family} of files that
714are expected to be similar. Typically, an ancestry tree is imposed
715upon the archive; every version except the root has a parent. Changes
716between parent and child are stored as a delta. Requiring an
717application to know the ancestry proves difficult and inefficient, as
718this information is not always available and the storage model can
719lead to unpredictable performance. This mechanism has succeeded
720because the version control utilities which use it trusts users make
721the right decision by understanding the model, version naming
722conventions, and performance implications. Implementing efficient
723storage management on top of RCS, for example, proves difficult for
724these reasons \cite{MacDonald:1998:SCM}.
725
726The goal is to reduce the space required to store many versions in a
727family by taking advantage of their similarity and possibly their
728ancestry, while maintaining high performance and reliability for the
729\emph{get}, \emph{put}, and \emph{delete} operations.
730
731\subsection{Related Work}
732
733Compact, versioned-file archiving can be achieved by storing literal
734files along with delta chains or trees, but other solutions are
735possible. Techniques for storing multiple versions have been studied
736and applied in several application areas: database management systems,
737programming language environments, version-control, and file-backup.
738
739Both SCCS and RCS store an ancestry tree of versions where each vertex
740represents a version and each edge represents a delta. One version is
741stored as a literal file $L$ and the rest are reconstructed by the
742application of deltas to the literal file. An archive using this
743organization often has unpredictable performance because the
744efficiency of an operation often depends on its distance from $L$.
745
746SCCS doesn't actually store a literal file with separate deltas, but
747merges them together. Any version can be extracted in a single pass
748through the archive, collecting only those lines that are present in
749the version being extracted. This requires time linear in the size of
750the archive, including all deltas, not the file being extracted.
751
752RCS improves upon this model by storing the literal file and deltas
753separately. The literal file is chosen to be a particular leaf node,
754causing retrieval and insertion on other branches to be much more
755expensive than on the distinguished \emph{trunk}, which contains the
756literal file. Accessing any other branch requires the application of
757a series of deltas---the reconstruct problem. RCS builds a data
758structure representing a series of lines and applies each delta in
759succession. Let $L$ be the sum of line counts for the deltas being
760applied. Reconstruct requires at least $O(L \lg L)$ steps using a
761balanced tree, though RCS in fact uses an $O(L^2)$ algorithm for
762simplicity\cite{Yu:1994:LTS}.
763
764Rosenkrantz and Yu demonstrate a reconstruct algorithm requiring
765$O(L)$ steps by computing a special form of the insert/delete delta
766\cite{Yu:1994:LTS}.
767
768Severance and Lohman show how to use file deltas for the storage of
769versions of large objects in databases and, more generally, for
770implementing transactions \cite{Severance:1976:TODS}. Alderson
771presents a space-efficient technique based on B-trees and file deltas
772that allows partial records to be retrieved without fully constructing
773the entire record, and for which the get operation has a predictable
774time-complexity for all versions \cite{Alderson:1988:JSE}. Fraser and
775Myers demonstrate an editor with built-in version-control capabilities
776that uses AVL dags. It too has a nearly linear-time reconstruct
777operation \cite{Myers:Editor}. These other storage schemes apply
778equally well to the file-archiving problem as presented, but
779constructing an archive out of deltas allows for the efficient
780transfer of archive components.
781
782Burns and Long describe a technique for distributed backup based on
783delta compression \cite{Burns:Backup}. Instead of a version tree,
784however, they use a technique called \emph{version jumping} which
785involves storing a number of \emph{clusters} consisting of one
786literal file and unit-length delta chains. This allows them to
787guarantee a file can be reconstructed with only two file accesses,
788which is important when slow storage is used. Analysis is performed
789to decide when a new literal file should be created, rather than a
790delta.
791
792%\subsection{Problems With RCS}
793
794%PRCS uses RCS to implement efficient storage for a higher-level
795%version control system. During its development, many problems with
796%RCS were encountered.
797
798%The \emph{version tree} storage model is flawed for two reasons:
799
800%\begin{itemize}
801%\item It discriminates against versions which are not $L$'s direct
802%ancestors. The cost of inserting or extracting a file depends upon
803%its ancestry, not its age. This can often be integrated into the
804%application so that the user is aware of the penalties, as with RCS,
805%but just as often not.
806%\item Higher level version control utilities which do not wish to
807%present this implementation detail and performance penalty to the user
808%must arbitrarily choose new versions, as it cannot guess what the user
809%will do in the future from the previous insertion or retrieval
810%operations.
811%\end{itemize}
812
813%\noindent The semantics of a version tree do not make for a good
814%implementation of the required interface since the performance is
815%unpredictable. In addition to problems with the version tree storage
816%model:
817
818%\begin{itemize}
819%\item The delta mechanism is line-oriented and therefore unacceptable
820%\item Until the recently there was no complete library implementation
821%of RCS. Even so, the interface is cluttered by features implementing
822%a particular version control policy
823%\item Archive compression is expensive to achieve, since RCS does not
824%directly support compression. An archive could be compressed in such
825%a way that only the necessary portions needed uncompression
826%\item There is no guarantee that deleted space is reclaimed. A
827%version may remain necessary because it is on a path linking other,
828%live versions. Though it may be desirable to automatically discard
829%versions as they reach a certain age, this restriction makes it
830%difficult.
831%\end{itemize}
832
833%\noindent These considerations and more to come called for a new
834%archival technique.
835
836\subsection{File Archiving With \xd}
837
838The \xd {} archive organization was originally designed as a
839replacement for RCS to be used in a distributed version control
840system. It stores a DAG of both literal files and deltas. Using an
841extension to the techniques discussed in \S\ref{sec:delta}, it
842also allows new versions to be efficiently transferred between
843archives as deltas. The internal organization is described here, and
844network communication is described in the next section.
845
846\xd {} does not depend on a file's ancestry for organizational
847purposes. The archive consists only of a series of versions in
848increasing order of age. As branches of the family tree diverge, even
849though deltas between a version and its parent may be small, deltas
850between two leaves of the family tree may be quite large. Therefore,
851storing deltas in a simple series threatens to be quite inefficient
852since these \emph{branch-crossing} deltas between leaves may require
853much more storage than the equivalent encoding using only deltas
854between parent and child. However, performance is critical, so
855storing versions as a simple series is appealing because it makes the
856time to retrieve a version to grow with its age, not as a function of
857its ancestry.
858
859This suggests the organization of the \xd {} archive--simply a series
860\emph{clusters} as in the \emph{version-jumping} technique. The
861organization allows the time to retrieve any version to be bounded,
862while still addressing the diverging branch issue, using a combination
863of version-jumping and DAGs of deltas. When the time to retrieve the
864eldest version in a cluster reaches some threshold, its growth is
865halted. As with version-jumping, new literal files are occasionally
866introduced into storage to maintain several invariants.
867
868\bigfigure{dependency}{Sample \xd {} Cluster}
869
870When inserting a version, either a \emph{forward} delta is inserted to
871produce the new version from the most recent literal file in the
872archive, or the new version becomes the literal file and a
873\emph{reverse} delta replaces the previous literal file. The decision
874to choose one over the other will be addressed later. In either case,
875the contents of the insert-data of recent deltas are used as
876additional sources for \emph{copy} instructions for the new delta, as
877illustrated in Figure \ref{dependency}.
878
879\bigfigure{onestep}{Sample Deltas}
880
881Figure \ref{onestep} illustrates the process on eight string versions
882$F1 \ldots F8$. The one literal file is $F7$. For demonstration, the
883example uses a simpler delta algorithm that only copies similar
884characters when they occur at the same offset in both files. In a
885realistic example, each character would also be represented by a
886longer, matching segment. The first column represents the full text
887of each string; these strings were derived according to the ancestry
888tree in Figure \ref{strings}--each parent-child relation contains at
889least six matching characters.
890
891\bigfigure{strings}{String Relations in Figure \ref{onestep}}
892
893When the first version is inserted into the archive, it becomes the
894literal file. Subsequent versions produce reverse deltas for some
895period of time until the time to extract the first file becomes
896excessive, at which point the literal file is \emph{frozen}. Forward
897deltas may then be inserted until the storage efficiency degrades, as
898measured by relative delta size, for example.
899
900The time required to insert a version is always just the time to
901compute a single delta. Deletion requires $O(1)$ time. Retrieval is
902implemented with reconstruct, whose time complexity is $O(n z^* \lg
903z^* + \size(t))$ to compute version $t$ from $n$ deltas, where $z^*$
904is bounded by the maximum product of the instruction counts on all
905paths from root to leaf and also by $\size(t)$. Even assuming a small
906number of changes in each version, the time to retrieve a version is
907still $O(n \size(t))$, which is an unacceptable rate of growth, left
908unchecked. The maximum depth of a reverse delta DAG effects the time
909required to retrieve the oldest version in a cluster, and therefore
910determines when the literal file should be frozen.
911
912Burns and Long show that version jumping does not result in a great
913loss of storage efficiency \cite{Burns:Backup}, and derive a
914worst-case analytic point at which storing a new literal file should
915be introduced as a function of the \emph{compressibility}, or
916fractional size, of the delta. A simple heuristic for deciding to
917introduce a new literal file is used: introduce a new literal file
918when inserting a delta will increase the compression ratio of the
919cluster measured as the total size of all versions divided by the
920total size of all deltas and the literal file. The cycle of reverse
921deltas, followed by a literal file, followed by forward deltas,
922followed by a version jump repeats indefinitely.
923
924%The storage efficiency in \xd {} is improved over the version jumping
925%scheme, and slightly different, since previous deltas' insert-data
926%were not used in Burn's calculations--these only improve forward delta
927%storage efficiency.
928
929In Figure \ref{onestep}, the columns illustrate the relation between
930each file and the delta that constitutes it. In the control and
931insert-data columns, a shaded region indicates that the text is either
932copied or inserted at that position in the file. In the control
933column, two shadings are used to distinguish copies from the
934subsequent literal file and copies from previous deltas. For
935instance, the characters \texttt{EN} in \texttt{ESSELENIAN} are copied
936from the insert-data segment of the delta representing
937\texttt{DISELENIDE}. The \texttt{DIS} in \texttt{DISELENIDE} is
938copied from the literal file \texttt{DISULPHONE} which follows it.
939This illustrates how using previous deltas handles diverging files.
940The intervening insertion of \texttt{DISULPHINE}, on a different
941branch, does not disturb the encoding efficiency. The number of
942previous deltas used must be somehow chosen and limited in number. A
943window size $w$ is chosen according to available space. Increasing
944$w$ promises more available matches, but at the same time unrelated
945data threatens to evict matching data from the hash table. The
946previous deltas chosen are the most recent, but other strategies for
947locating possibly related files can be used. The ancestry of a
948version can be used, in addition, to select the most recent delta
949computed \emph{to} an ancestor of the one being inserted, it is likely
950related.
951
952In addition to these properties,
953
954\begin{itemize}
955\item \xd {} uses an efficient, non-line-oriented delta mechanism
956\item The archive can trade time for space by precomputing and
957adjusting the delta DAG depth
958\item The number of deltas that must be applied to retrieve a version
959is proportional to the number of put operations since that version was
960created; RCS does not have this property, for example
961\item Knowledge of a versions ancestry is not required for
962organizational purposes
963\item Partial compression is possible--older versions may be
964compressed without affecting the retrieval time of newer versions, and
965when combined with precomputed indices, they may be lazily
966uncompressed
967\item Obsolete deltas may be simply deleted as soon as no other live
968deltas reference their insert-data.
969\end{itemize}
970
971%\item Higher level tools are free from organizational concerns when a version's ancestry is unavailable
972%\item The implementation was designed for use as a library, and includes no policy
973
974\subsection{Experimental Results}
975
976\emph{Unfinished}.
977
978%%Ideally: Compare storage, put, and get measurements for my scheme
979%%vs. version jumping vs. forward/reverse chaining vs. store each. on
980%%branch, off branch, other positions. compressed or uncompressed. On
981%%two random, evolving files, then on the FreeBSD source dir.
982
983%%Begin with an RCS file.
984%%Run once compressed, once uncompressed.
985%%Have an API for each checkin. One client per policy.
986%%The API computes the scores.
987
988%An experiment was done comparing the RCS and {\sc Xdelta} archives for
989%each of the RCS files extracted from FreeBSD's CVS repository in the
990%\texttt{src/sys/vm} subdirectory, taken on May 3, 1998. The
991%collection totaled 35 files and 1608 versions, of which only 134
992%versions were off the RCS trunk. The average number of versions per
993%file is 45.9, with a standard deviation of 39.6. The resulting
994%uncompressed archive sizes are as follows:
995
996%\begin{center}
997%\begin{tabular}{|l|l|} \hline
998%Archive size & (bytes) \\ \hline
999%RCS & 1617850 \\ \hline
1000%{\sc Xdelta} $(w=10)$ & 1686808 \\ \hline
1001%\end{tabular}
1002%\end{center}
1003
1004%Due to space limitations in the abstract, more complete results are
1005%omitted. The results show that the new scheme is not much worse than
1006%RCS in terms of storage space, yet the \xd {} archive can exploit
1007%compression, where RCS cannot.
1008
1009%The results show that for an uncompressed archive, the performance of
1010%{\sc Xdelta} is not much worse than RCS. However, {\sc Xdelta} is
1011%capable of efficiently operating on compressed archives and RCS is
1012%not, so the advantages seem to outweigh the disadvantages. The
1013%difference in compressed archive sizes is so great because the
1014%compression of many small files is not likely to be as good as the
1015%single compression of one large file.
1016
1017\subsection{Future Work}
1018
1019Delta compression techniques have proven successful, but archival
1020techniques have received little exploration. As computers become more
1021and more dependent upon network communication and distributed data,
1022distributed file-archival techniques will increase in importance.
1023
1024A popular method for viewing the history of a version-controlled
1025document involves attributing each line with the name of the author
1026and how recently it was changed or introduced. Directly constructing
1027such an annotation from copy/insert deltas is not as
1028straight-forward, and more difficult to present since it is not
1029line-oriented. Another type of annotation allows a file to be viewed
1030in a particular context, allowing not only how each line was authored,
1031but the author of the next modification or deletion. More advanced
1032tools for viewing (or querying) relations between files in a
1033file-archive are needed.
1034
1035The windowing technique technique presented for determining a set of
1036input files could be replaced with a coarse text retrieval algorithm
1037to determine the set of files likely to contain substrings of the
1038output file.
1039
1040\section{Distribution Protocols}\label{sec:distribution}
1041
1042There is a broad class of applications that operate on large
1043quantities of data, often highly similar or version controlled, and
1044need to move that data across slow networks frequently. Delta
1045compression can be used both for versioned file archival, for reducing
1046network transmission, as a network data cache. The effort required to
1047implement these operations efficiently, however, is considerable, and
1048has hindered advances so far. In this section, I propose a simple,
1049yet powerful, abstraction for the purposes of constructing application
1050protocols, according to the following considerations:
1051
1052\begin{itemize}
1053\item Data should be named by content. The MD5 checksum
1054\cite{RFC1321}, for example, can be used to name a file; doing so
1055removes the need for any global consistency.
1056\item Versions are read-only and should be highly available; therefore
1057replication is required
1058\item Disk space is more available than network bandwidth
1059\item A moderate amount of computation for each client connection is
1060permitted, but should be minimized
1061\item Compressing data on a per-connection, per-transfer basis heavily
1062loads a server, and is undesirable, as evidenced by the maintainers of
1063popular CVS servers \cite{mozillaCvs}
1064\item Each server should be autonomous, so there are no global
1065consistency issues; deltas must be receivable out of order
1066\item Servers must be allowed to store disjoint sets of files
1067\item Servers should transfer files using a minimum of network
1068bandwidth
1069\item Pairwise peer synchronization should be used to exchange archive
1070contents; at the application level, synchronization can be pushed or
1071pulled, since the protocol is symmetric
1072\item A server should be easily usable as a proxy-cache.
1073\end{itemize}
1074
1075\noindent A scheme that allows the direct exchange of pre-compressed
1076deltas is desirable. Each archive maintains a set of versions for
1077each family in a hierarchically named set of file families. The
1078application is responsible for deciding which files should be stored
1079at each server. The underlying storage mechanism only provides
1080efficient delta-storage and push/pull delta-transfer. Aside from
1081efficiency issues, this type of service resembles the operation of
1082NNTP servers for news transport as described in RFC 1036
1083\cite{RFC1036}. This is a nice abstraction for building application
1084servers; an application may co-reside with a distribution server,
1085leaving the details of efficient transfer to the abstraction and only
1086implementing application specific control and policy. Since the
1087service can be easily proxied, it reside on a client machine or a slow
1088network boundary. This allows all the details of efficient transport
1089to be left to a decentralized, and thus locally administered, service,
1090so client to server protocols need not be effected.
1091
1092All of this requires a small modification to the copy/insert delta
1093format, described next.
1094
1095\subsection{Normalized Copy/Insert Deltas}
1096
1097According to the above list of considerations, each server may store a
1098different set of files, and have received them in a different order
1099from everyone else. Deltas depending on the insert-data of other
1100deltas, however, cannot be easily exchanged because a server's peer is
1101not guaranteed to have the same set of deltas, or to have received its
1102versions in the same order. A \emph{normalized} copy/insert delta
1103includes additional information to avoid this problem. The header for
1104delta $d$ names each dependent file $f^d_i \in F^d$ by its MD5
1105checksum. Additionally, when $f^d_i$ is the insert-data of delta
1106$d_i$, it also includes the MD5 checksum of the file constructed by
1107$d_i$, $t^{d_i}$. An alternate sequence of copy instructions is
1108included for each copy instruction in $d_i$, allowing the copy to be
1109performed either from the insert-data of the delta or the literal
1110file, whichever is available. This allows, in many cases, a server to
1111send its peer a version by simply sending its existing delta, perhaps
1112pre-compressed.
1113
1114These modifications increases the cost of a copy instruction by a
1115small constant factor, except in pathological cases where one version
1116contains literal copies of another delta in the archive. A single
1117copy instruction may be followed by one or more normalized copy
1118instructions because copies from the insert-data of a delta may be
1119fragmented in the file it constructs.
1120
1121\subsection{Related Work}
1122
1123Douglis and others have studied the addition of delta compression to
1124\texttt{http} \cite{SIGCOMM97*181}. Their results are encouraging,
1125showing substantial decreases in both end-to-end latency and network
1126transmission for several delta transfer strategies. There is an
1127official W3 Consortium proposal for the distribution and replication
1128of \texttt{http} \cite{w3}. It includes the specification of a
1129standard copy/insert delta format for exchange \cite{gdiff}. The
1130protocol includes extension for replicating content versions using
1131delta transfers. Content is also named by a configurable message
1132digest, such as MD5. This work has not dealt directly with
1133implementation issues, but has specified an exchange protocol.
1134
1135The \emph{rsync} algorithm, due to Tridgell and Mackerras, is for
1136remotely synchronizing the contents of a pair of files \cite{Rsync}.
1137It does this using a computation similar to algorithm
1138\ref{alg:generate}, but transfers a table of checksums for one file to
1139the peer who performs string matching in the other file using MD5
1140checksums rather than direct string comparison. The peer then replies
1141with a request for the list of blocks that it is missing. This is
1142quite effective for synchronizing files between two peers that do not
1143share any versions in common.
1144
1145\emph{CVSup} \cite{Polstra96} is a distribution protocol for CVS that
1146globally synchronizes the contents of client CVS repositories with a
1147mirror or the master repository. This is accomplished primarily by
1148decomposing RCS files in the repository and transferring only the
1149deltas that are missing on the client side. This model requires
1150centralized control.
1151
1152\subsection{A Distributed Archive}
1153
1154A distributed archive consists of a network of autonomous archives as
1155described above. An application is responsible for controlling each
1156archive appropriately. I'll analyze a simple arrangement first, as it
1157demonstrates an important special case. Once the simple arrangement
1158has been described, I will extend the results for less constrained
1159circumstances.
1160
1161Suppose that for a file family being archived, the policy of the
1162application running on client $S_c$ is to replicate every version in
1163server $S_s$. Then $S_s$ can efficiently send $S_c$ new versions as a
1164delta with little computation. Only the literal file, for which no
1165delta is immediately available, requires processing, and the result
1166can be cached. If the version being sent is already available as a
1167delta, it can just be sent. If the distributed storage can be
1168arranged as a tree in which each child replicates at least its
1169parent's set of versions, this situation applies.
1170
1171All of this relies on the normalized delta--it allows copies from both
1172a \emph{site-specific}, readily available segment and a
1173\emph{universal}, but perhaps not physically present, segment. When
1174transferring a delta the site-specific segment may be missing at the
1175receiver. All the sender need do is verify that the receiver can
1176construct each of the necessary universal segments, allowing it to
1177internalize the delta by translating it to depend upon its own
1178site-specific segments. The client, therefore, is responsible for the
1179majority of the work required to receive. Suppose that before
1180synchronization $S_c$ contains the set of versions $F_c$, and $S_s$
1181contains the set of versions $F_s$. $S_c$ requests a transfer of the
1182difference $F_t = F_s - F_c$.
1183
1184\begin{clm}
1185For each version $f$ to be sent, if $S_s$ is storing $f$ as delta
1186$d_f$ it can simply send $d_f$. Otherwise $f$ is stored as a literal
1187file, and $S_s$ can compute and send a forward delta $f \ominus f_c$,
1188for some recent $f_c \in F_c$.
1189\end{clm}
1190
1191{\sc Proof} Each delta that was sent must be applicable by the
1192receiver after the complete transmission. Since the client requested
1193all versions, those that were stored and sent as deltas depend on
1194either a version that the client already has, one of the other deltas
1195that was sent, or a literal file for which a forward delta was sent.
1196Since the forward deltas that were computed depend only on versions
1197already in $F_c$, no cyclic dependencies are introduced at the
1198client. \qed
1199
1200Assuming archives synchronize with each other with period $p$ and
1201versions are deleted when their age surpasses $a$, then an archive may
1202pre-compute only a single, forward delta for each literal file in the
1203archive. The \emph{From} input for this computation should be the
1204first version whose age is greater than $p$ and less than $a-p$. Each
1205server can also keep a record of its peers' contents to allow
1206incremental log updates and each archive to compute a forward delta
1207that the greatest number of its peers will be capable of applying.
1208
1209\subsection{Arbitrary Policies}
1210
1211The previous section dealt only with the case where the client's
1212policy is to archive every file archived by the server. This special
1213case allows many new deltas to be sent uninterpreted because the
1214client replicates every version in the server. The case of a literal
1215file is no different, but when a server must send an existing delta to
1216a peer replicating fewer versions than itself, it must translate out
1217the peer's missing references before sending. Suppose that $S_c$
1218requests $F_t$, where $F_t \cup F_c$ is a subset of the server's set
1219of files $F_s$ and therefore $S_s$ may not be able to directly send a
1220delta.
1221
1222Computing such a delta is essentially similar to the reconstruct
1223operation. First, \texttt{reconstructRange} is used to construct an
1224interval tree $R$. Each copied range in $R$ is used to either
1225construct a copy instruction, if $S_s$ has the necessary reference, or
1226is translated into an insert instruction if $S_s$ does not have the
1227reference. This procedure reduces to the above special case when the
1228client has requested every file that the server contains. Again, the
1229time complexity does not directly depend on the size of the version
1230involved, but on the number of changes and deltas between them.
1231
1232\subsection{Receiving Normalized Deltas}
1233
1234It is guaranteed that when an archive receives a delta from a peer, it
1235can apply that delta, though not as efficiently as possible. In fact,
1236\texttt{reconstruct} will operate as given by simply using the
1237normalized copy indices when a segment is missing. However, the
1238reconstruct algorithm given assumed that all cross-edges in the DAG's
1239depth-first-subtree were directed at literal files, allowing the
1240recursive algorithm to free a node's interval table immediately after
1241its parent has used it. Foreign deltas do not maintain this
1242invariant; so an efficient implementation of \texttt{reconstructRange}
1243must instead compute interval trees in a bottom-up DAG traversal; each
1244node's interval tree can be discarded after each parent's
1245interval-tree has been computed. This increases the space required by
1246the algorithm by, at most, a factor of 2, since one additional
1247interval-tree may required.
1248
1249Given an implementation of \texttt{reconstructRange}, a delta can be
1250internalized by computing the range table mapping copy ranges to local
1251segment ranges, and re-generated as in algorithm \ref{alg:invert}.
1252
1253\subsection{Future Work}
1254
1255I have implemented the system described as the basis of a distributed
1256version-control system. The synchronize operation is extended to use
1257the \emph{rsync} algorithm when peers share no files in common, and to
1258send the literal file when one peer contains no files. Future work
1259will include a complete experimental analysis of the system's
1260performance and behavior. Making such an archive operate securely and
1261with minimum trust requirement is a future challenge.
1262
1263\section{Conclusion}
1264
1265The file delta problem and several applications have been examined.
1266Many applications desires both compression, differential compression,
1267and other features which complicate the direct application of
1268available delta algorithms. These additional considerations
1269influenced the design of a new system with a new delta algorithm.
1270
1271The \xd {} delta algorithm requires linear space, but requires less space
1272than the size of the inputs, meaning the algorithm is feasible for
1273files which are required to reside in memory by other applications.
1274The algorithm trades space to improve delta size, and approximates the
1275exact algorithm to reduce execution space and time. It handles
1276multiple inputs, a subject which has not previously been studied, and
1277performs especially well on large inputs.
1278
1279The \xd {} archiving scheme was designed as a replacement for RCS with
1280network distribution in mind. It replaces the ancestry tree with a
1281serial model using a combination of version-jumping, forward deltas,
1282and reverse deltas. Multiple \emph{From} inputs are used when
1283computing deltas, allowing the contents of more than one previous
1284version to be referenced by copy instructions.
1285
1286Finally, a scheme for decentralized network file archiving was
1287presented. The copy/insert delta encoding is altered so that each
1288copy instruction is replaced by two sets of instructions, allowing a
1289two machines to directly exchange deltas without any computation in
1290some cases. I propose the distributed file archive as a abstraction
1291for efficiently implementing certain types of distributed
1292applications, such as version-control, software-update, groupware, and
1293\texttt{http} caching and replication.
1294
1295\bibliography{dcc99}
1296
1297\end{document}
diff --git a/xdelta1/doc/old/dcc99/dead.code b/xdelta1/doc/old/dcc99/dead.code
new file mode 100755
index 0000000..340b151
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/dead.code
@@ -0,0 +1,518 @@
1The first technique for computing file deltas was based upon finding
2the longest common subsequence (LCS) of two files \cite{Hunt77}.
3Improvements to the file delta problem have been influenced by
4compression techniques, but have been much slower in being adopted for
5file-archival and transmition, perhaps because the market for such
6improvements has been small. Recently, these techniques have become
7feasible and the growth of the internet has renewed interest in these
8approaches.
9
10Systems for distributed file-backup have been built upon the storage
11of file deltas \cite{Burns:Backup}, this work applies for a single,
12centralized server. Protocols for the delta-based distribution and
13replication of \texttt{http} have been proposed \cite{w3}. The
14present work describes a decentralized protocol with several features
15required for an efficient implementation. These compressed transport
16protocols have applications to version control, file backup,
17\texttt{http}, software update, groupware applications, and many more.
18
19
20\begin{appendix}
21\section{Optimality of Algorithm \ref{alg:generate}} \label{app:proof}
22
23This is B.S.
24
25You know that the new encoding is not optimal because copies are not
26unit cost. BUT, we do know that this encoding is no more than a
27factor of $min(s)$ greater than a similar metric for the unit-cost
28solution.
29
30Also, for the min copy length solution, its another factor of $s$
31worst, PER INSTRUCTION, this is good.
32
33The proof uses the number of copy instructions encoded by a greedy
34algorithm $g$ and an optimal algorithm $h$ for prefixes of the file
35being constructed. $g_i$ and $h_i$ are partial solutions which
36consist of a sequence of instructions which contains exactly $i$ copy
37instructions and no more than $i+1$ insert instructions. $m$ is the
38copy/insert metric for delta size developed in section
39\ref{sec:greedy} and $e(g_i)$ denotes the sum of the length operands
40to each instruction. Initially, we know:
41
42\begin{align}
43m(g_0) &= 0 \\
44m(h_0) &= 0 \\
45e(g_0) &= 0 \\
46e(h_0) &= 0
47\end{align}
48
49\noindent and the following lemma:
50
51\begin{lemm}
52Suppose that $e(g_i) = e(h_j)$ and $m(g_i) \le m(h_j)$. Then for all
53$k>i$, $l>j$ such that $e(g_k) = e(h_l)$, $m(g_k) \le m(h_l)$ must
54hold.
55\end{lemm}
56
57\noindent {\sc Proof} This is demonstrated by case analysis. FILL ME
58IN: PICTURES HELP!
59
60\end{appendix}
61
62
63
64
65A distributed \xd {} file-archive is set of \xd {} file-archives. These
66archives may require significant space, and should be placed at the
67border of a slow network link to reduce communication across the slow
68link. The archive stores multiple file families named in a
69hierarchical fashion. Versions inside a particular family are named
70by their MD5 checksum. The contents of each of the archives may be
71disjoint--the application must decide at each particular node which
72versions of which families should be stored, but the distributed
73archive does not, as presented, require any centralized control.
74
75This model suggests a two-level transport protocol: an efficient
76server-to-server communication is used to reduce transport over slow
77links, while a simpler protocol is used for the client-server
78interaction. This greatly reduces application complexity, and fits
79common network topologies--server-proxies should be placed at the
80gateway between a high-speed LAN and a slow internet or modem link.
81
82A \emph{synchronize} operation between two servers allows them to
83exchange each other's state and request copies of desired files.
84Since it is a symmetric operation, it allows for both push and pull
85configurations. The goal is to implement synchronize efficiently and
86minimize network transfer.
87
88There is an immediate obstacle. Since the set of files and order they
89were received in may differ on each server, they cannot simply
90exchange their deltas. We would like to synchronize servers by
91exchanging as many un-interpreted files as possible, as they can be
92efficiently copied to the network. Ideally, each server would simply
93send a precomputed delta for each file the peer is lacking, but the
94deltas cannot be easily exchanged because they depend on \emph{other}
95deltas which the peer may not have.
96A \emph{normalized copy/insert delta} contains additional information
97for each instruction which copies from another delta. Each delta
98contains the MD5 checksum of each input file, and for each input file
99which is also a delta, the MD5 checksum of the file the delta
100represents. This allows the normalized delta $d_1$ which copies from
101another delta $d_2$ to be applied by someone who posseses either the
102actual delta $d_2$ or the file which $d_2$ constructs. The copy
103instruction for $d_2$ is followed by an alternate instruction sequence
104to be used when $d_2$ is not present, these index the actual file.
105
106
107A normalized copy/insert delta can be transmitted if the receiving
108peer will, at the end of the transmission, have enough files to apply
109it. The resulting protocol places most of the computation required to
110accept a new file version on the receiver-side of the connection.
111
112At synchronization, each server sends an incremental log update of
113file additions since the last synchronize. Global deletion policy
114must be handled by the application. After synchronizing logs, each
115server transmits a list of file versions it wants to receive. For
116each family requested, the server knows: $S$, the set of versions it
117has; $P_b$, the set of versions the peer has before the transfer; $W$,
118the set of files the peer wants; and $P_a = P_b+W$, the set of files
119the peer will have after the transfer. Then, for each file $f$ in
120$W$, it computes a strategy for sending $f$:
121
122\begin{itemize}
123\item If $f$ is not stored literally, then it is stored as a reverse
124delta $d$. If $P_a$ contains every MD5 checksum that $d$ depends on,
125then send the literal delta (or a pre-compressed copy).
126\item If $f$ is stored literally, and $P_b \cap S \not = \emptyset$, a
127forward delta must be computed for sending the peer. The server is
128required to reconstruct a recent version which the peer has then
129compute the forward delta. This forward delta may be cached, and the
130number of such forward deltas required is limited by how recently its
131peers last synchronized.
132\item If $S$ and $P_b$ contain no common elements and $P_b$ is not
133empty, the rsync algorithm may be applied.
134\item Otherwise, the literal file must be sent.
135\end{itemize}
136
137For a peer who's policy is to request every file version in $S-P_b$,
138sending $n$ file versions from the same family always results in
139sending at least $n-1$ pre-computed deltas and at most one forward
140delta (which can be cached). This suggests that a tree network
141topology where each file archive contains at least the contents of its
142parent will produce efficient delta transfers.
143
144
145
146
147
148
149
150
151
152
153
154Network transmissions can be reduced in size by sending file deltas
155rather than literal files. It can improve protocols for file-backup,
156software-update, distributed version-control, and http. This section
157will describe a protocol for the efficient peer-to-peer
158synchronization of two \xd {} file archives. This suggests a framework
159for implementing the server and proxy-cache of a generic application
160requiring delta communication, high availability, and replicated,
161compressed file-archival.
162
163
164There are two modes of operation possible, one when forward deltas are
165being inserted and one
166
167Instead of using a version tree organization, it stores only the
168youngest version of the file family and reverse deltas. Since there
169are no branches, each version of a file is simply identified by a
170serial number. The deltas computed are not the same as the reverse
171deltas used in RCS, instead they are computed from the set consisting
172of the youngest file and a window of previous deltas' insert-data to
173the second youngest file. Figure \ref{fig:onestep} illustrates this
174process. Each delta encodes the residual data required to construct
175it from the deltas which came before it and the version which follows
176it in time. Suppose the archive $A$ consists of an ordered set of $n$
177versions labelled $a_i$. For each $0 \le i < n-1$, $a_i$ is stored as
178a delta $d_i$, otherwise it is stored as the literal file $a_{n-1}$.
179Logically, the $A$ contains each of $n$ files, but is physically
180stored as $n-1$ deltas and a literal file.
181
182\begin{equation}
183d_i = generate ( \left\{ d_j | j < i \wedge j \ge i-w \right\} \cup a_{i+1}, a_i )
184\end{equation}
185
186Here, $w$ is the \emph{window-size} parameter, and limits the number
187of deltas presented to {\tt generate}. Conceptually, files are
188retrieved by the repeated application of these deltas. The $i^{th}$
189version put into an archive of $n$ versions requires the application
190of $n-i$ deltas.
191
192$O(\underset{\textrm{\emph{all paths}} d_r \rightarrow d_1 \rightarrow \ldots d_n \rightarrow l_i}{\max} 1)$.
193
194The implementation of apply is straightforward. Reconstruct can be
195made quite efficient. When multiple from inputs are allowed to the
196delta algorithm, a delta chain measured in length becomes a delta-dag
197measured in depth. For the purposes of analysis, let $copies(d)$ be
198the number of copy instructions in delta $d$, $inserts(d)$ be the
199number of insert instructions, and $instructions(d)$ be the sum.
200
201An interval tree $intervals(d)$ can be built for locating the
202instruction of a particular offset in the file $d$ constructs. In
203addition, it maps each insert-instruction into an appropriate offset
204in the delta's insert-data. Constructing the interval table requires
205in $O(instructions(d) \lg instructions(d))$ steps and
206$O(instructions(d))$ space \cite{clr}.
207
208A recursive function Reconstruct-Range outputs
209
210$(d_i, r_l, r_h)$
211outputs a range $r_l \ldots r_h$ from file $f_i$ which is represented
212by delta $d_i$. $f_0$ is represented by a literal file.
213
214Reconstruct-Range(
215
216
217
218
219
220For each instruction in $d_i$ containing elements in the range,
221
222\begin{itemize}
223\item If the instruction is $\texttt{copy} \; f_k \; o_k \; l_k$ and
224$k > 0$ recurse on the appropriate offset and length in $d_k$,
225otherwise copy the appropriate range out of the literal file $f_0$.
226\item If the instruction is $\texttt{insert} \; l$, output the
227appropriate range in $d_i$'s insert-data.
228\end{itemize}
229
230It takes $O(\lg instructions(d))$ steps to locate the instruction
231containing $r_l$. If the instruction is {\tt copy},
232
233
234We can compute $reconstruct(d_1 \ldots
235d_n)$ with the following function:
236
237\begin{tabbing}
238reconstructRange (d, o, l) \{ \\
239 /* Output length $l$ beginning at offset $o$ from the file \\
240 * which delta $d$ constructs. */ \\
241\\
242 while (l > 0) \{ \\
243 $i \leftarrow \emph{instruction containing} o$ \\
244 if ($i = \texttt{copy} \; f \; o_f \; l_f$) \{ \\
245 reconstructRange (deltaWhichConstructs(f),
246
247
248
249\end{tabbing}
250An additional operation $index$ precomputes an index for the set of
251input files the {\tt generate} operation will later use. The $index$
252operation computes the $adler32$ function on short segments of each $f
253\in F$. The checksum length $l$ is chosen as a small power of
2542--values of between $2^4$ and $2^7$ have been used. An array of
255checksum values $c_{f}[i]$ is built for each $f$ where $i$ indexes the
256checksum beginning at an offset $il$. For each distinct set $F$ that
257will be used during {\tt generate}, an additional hash table is built.
258The table $t_F$ contains the data $(f,i)$ for each checksum offset $i$
259in $f$ keyed by $c_{f}[i]$. The table is easy to compute from the $c$
260arrays so it is often left until {\tt generate}.
261
262During {\tt generate}, the file $t$ is scanned. At each offset $j$
263the same checksum is computed and tested in the table. When a match
264for $(f,i)$ is found the files are compared at offset $f$'s offset
265$il$ and $t$'s offset $j$. A record of the match is constructed out
266of the longest matching substrings of $f$ and $t$ at those alignments.
267These records are used to emit a sequence of instructions for
268constructing $t$ from $p$ and $F$ and the scan is resumed after the
269match. For each match $(f, t, i, j)$ a {\tt copy} instruction is
270emitted, and for each range $k..l$ that was not matched an
271{\tt insert} instruction is emitted along with the missing segment.
272
273\subsection{Encoding}
274
275% informal here...
276
277So far, the issue of encoding has not been raised. Since there are
278many encoding approaches and I must choose one to measure with, I will
279define a class of {\tt generate} functions that produce patches for
280the pre-defined instruction set of a standard apply function. This is
281a fair assumption, as it has arisen in practice \cite{w3} and since it
282is simple to implement {\tt apply}, making applications of the delta
283algorithm easier to write and standardize.
284
285Abstractly, the \emph{copy/insert} class of deltas are represented by
286a sequence of instructions and a segment, {\tt insert-data}. For
287these deltas, {\tt apply} constructs its output by executing a
288sequence of the following instructions:
289
290\begin{itemize}
291\item {\tt copy} $f$ $o$ $l$
292
293Copy $l$ bytes at offset $o$ of file $f$ into the output file.
294\item {\tt insert} $l$
295
296Read $l$ bytes from {\tt insert-data} and insert them into the output
297file.
298\end{itemize}
299
300For reasons that will be discussed in the following section, \xd
301encodes deltas in two seperate parts: the control instructions, and
302{\tt insert-data}, the concatenation of each {\tt insert}
303instruction's data. This turns out to be useful in two ways: {\tt
304insert-data} may be treated as a file for inputs to other
305computations, and {\tt apply} can efficiently produce a partial output
306by seeking through the control segment without reading the entire data
307segment. This does not exactly specify a format for the
308\emph{copy/insert} delta, leaving the exact storage up to the
309application. Another encoding that appears in the W3 Consortium's
310proposed standard delta format, named \emph{GDIFF}, is to simply
311append the data for each {\tt insert} instruction after the
312instruction itself, making the delta a single stream. Other encodings
313are more compressed, such the one used by Vo's \emph{vdelta}
314algorithm. Again, using a simple, uncompressed format proves useful
315for file-archival, suggesting that general compression techniques be
316used orthogonally to delta-encoding for a complete system.
317
318\subsection{Analysis}
319
320% need some diagrams here
321
322By pre-defining an abstract delta format the comparison of algorithms
323is much easier. The algorithm described above computes a
324\emph{copy/insert} delta. {\tt index} first computes an array for
325each file then the hash table.
326
327\begin{tabbing}
328preprocess ($F$) \\
329 $T \leftarrow$ \emph{empty hash table}
330 for each $f \in F$ \\
331 $c_f$ = generateChecksums ($f$) \\
332 for each $f \in F$ \\
333 addToTable ($T$, $c_f$, $f$) \\
334\\
335generateChecksums($f$) \\
336 $count \leftarrow (length(f)-1)/l$ \\
337 $array \leftarrow new checksum[count]$ \\
338 for $i = 0..count$ \\
339 $array[i] \leftarrow$ adler32 ($f$, $i*l$, $l$) \\
340 return $array$ \\
341addToTable($T$, $c$, $f$) \\
342 $count \leftarrow (length(f)-1)/l$ \\
343 for $i = 0..count$ \\
344 $insert (T, c[i], [i,f])$
345\end{tabbing}
346
347The {\tt generateChecksums} function fills in an array of length
348$floor(length(f) / l)$. Each entry is the 32-bit adler32 checksum for
349the range of length $l$ for a particular offset. Let $length(F) =
350\sum_{f \in F} length(f)$. This step has $O(length(F))$ time
351complexity and requires $length(F)/l = O(length(F))$ space.
352
353The {\tt addToTable} function inserts $length(F)/l$ checksums into a
354table in $length(F)/l$ time and space as well. All together, {\tt
355apreprocess} requires $O(length(F)/l)$ time and space and has small
356coefficients.
357
358% Take a look at how rsync deals with this.
359
360\begin{tabbing}
361generate ($F$, $t$) \\
362 for $i = 0..length(t)-l$ \\
363 $a \leftarrow $ adler32($t$, $i$, $l$) \\
364 if ($(f, j) \leftarrow$ lookup ($T$, $a$) $\wedge$ \\
365 $c_f[j] = a$ $\wedge$ \\
366 $f$ and $t$ match at $jl$ and $i$) \\
367 emitMatch ($f$, $t$, $jl$, $i$)
368\end{tabbing}
369
370The {\tt generate} operation searches for matching checksums in $t$.
371It requires constant additional space and $length(t)$ operations to
372scan $t$ and in the worse case, $2 length(t)$ operations for finding
373matches by literally comparing files. The resulting
374\emph{copy/insert} {\tt generate} algorithm is linear in both time and
375space. The linear space requirement is not ideal. For $l=16$, the
376algorithm requires a memory approximately $1/2$ the size of the
377inputs.
378
379In practice, {\tt generate} is implemented in a single page-by-page
380pass through $t$. Therefore, when a partial match is found, the match
381is grown as far forward in the files as possible, but will only grow
382backwards up to the first page boundary.
383
384For speed and space concerns, the hash table is implemented as a
385single integer array with length chosen to be approximately the size
386of the input. Each bucket contains $f$ and $i$, and no duplicate
387records are kept. This leads to a clobbering decision--how to handle
388multiple checksums with the same hash code. By keeping only one
389record for each bucket the inner {\tt generate} loop is quite
390efficient and lengthy, repeated segments in the inputs do not produce
391over-full buckets. Several policies have been used:
392
393\begin{itemize}
394\item ordered winner
395
396If the checksums are in the same file, the first to appear wins,
397otherwise an arbitrary order is placed on $F$ to determine the winner.
398
399\item random winner
400
401At each collision, a random trial is performed to determine the
402winner. By setting the probability of clobbering in the $k^{th}$
403trial to $P(k) = 1/(k+1)$, the winner is uniformely distributed over
404all like checksum hash values.
405
406\item weighted winner
407
408A match occuring earlier in a file rather than later is desirable
409since matches grow foward and not backward. This can be encoded in
410the above decision's trial probability to favor earlier matches, for
411example.
412\end{itemize}
413
414How confident can we be that this algorithm computes a compact delta?
415There are many approximations and assumptions that have been made, but
416the following property may be shown:
417
418\begin{theorem}
419For a match to be discovered between files $f$ and $t$ of length $k
420\ge 2l$, the probability of emitting a copy instruction is
421$\frac{1}{number of}$.
422\end{theorem}
423
424[I'd like to show that it is not much worse than optimal.] And since
425it is fast and performs well in practice, it seems very good.
426
427\subsection{The \emph{copy/insert} Delta}\label{sec:copyinsert}
428
429% Move this section? Pull it out of analysis?
430
431Deletions are cheap, insertion is expensive. This could be done as a
432better dynamic program, but more expensive than the LCS algorithms.
433
434This simple encoding
435
436
437
438
439
440
441
442
443
444
445
446
447
448storage mechanism does not use branches and never
449stores forward deltas. To avoid accumulating multiple copies of
450deltas transforming one diverging branch into another, {\sc Xdelta}
451computes a new delta based not only on two input files, but on
452previous deltas as well. The equivalent {\sc Xdelta} encoding is
453illustrated in figure \ref{xdelta}. The delta algorithm employed by
454{\sc Xdelta} encodes deltas as a sequence of \texttt{copy} and
455\texttt{insert} instructions. A copy instruction occupies $O(1)$
456space, while an insertion of length $N$ requires $O(N)$ space. Note
457that forward insertions are encoded as reverse deletions and forward
458deletions are encoded as reverse insertions. We are only concerned
459with insertions, since deletions are not reflected in the sequence of
460\texttt{copy} and \texttt{insert} instructions.
461
462%RCS succeeds at efficiently storing
463%these five versions because files on the $1.1.1.x$ branch do not
464%interfere with deltas computed for files on the $1.x$ branch. The
465%next delta computed on either branch is not affected by the
466%differences between files at the head of either branch. In this way,
467%parallel development does not impact the storage mechanism. The RCS
468%mechanism does, however, have a great impact on the amount of work
469%required to extract each version: files checked in on the $1.x$ branch
470%are available in time proportional to the distance from the head,
471%while files checked in on the $1.1.1.x$ branch are available in time
472%proportional to the distance from the root version ($1.1$) plus the
473%number of files on the $1.x$ branch. Unfortunately, this type of
474%scenario degrades the performance of the RCS storage mechanism and is
475%exactly what version control utilities are designed to handle. This
476%feature of the RCS storage mechanism makes efficient allocation of new
477%version numbers difficult for both users and higher level version
478%control utilities.
479
480%\section{Delta Algorithms}
481
482%\section{And Compression...}
483
484%\section{Encoding/Matching (Empirical) Gripe}
485
486%\section{Delta Algorithm}
487
488%\section{Empirical Results on Delta Algorithm}
489
490%\section{Storage Model}
491
492%\section{Empirical Results on Storage Model}
493
494%\section{Comparison to RCS}
495
496%* Ability to delete old files
497%* Usage of a binary delta
498%* Freedom from version tree:
499% performance implications
500% lack of information
501%* Available as a library without the clutter
502%* file retrieval time is always proportional to its age, not ancestry
503%* partial compression, late decompression
504%* cached indices
505
506%\section{Distribution Model}
507
508%What to solve. What are the network applications.
509
510%\section{Normalized Deltas}
511
512%How to achive it.
513
514%\section{Implementation of DRP}
515
516%Complete 4-method protocol description.
517
518%\section{Conclusion}
diff --git a/xdelta1/doc/old/dcc99/exact-delta/CVS/Entries b/xdelta1/doc/old/dcc99/exact-delta/CVS/Entries
new file mode 100755
index 0000000..ae08c72
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/exact-delta/CVS/Entries
@@ -0,0 +1,4 @@
1/delta.cc/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
2/suffix.cc/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
3/suffix.h/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
4D
diff --git a/xdelta1/doc/old/dcc99/exact-delta/CVS/Repository b/xdelta1/doc/old/dcc99/exact-delta/CVS/Repository
new file mode 100755
index 0000000..ef5ef48
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/exact-delta/CVS/Repository
@@ -0,0 +1 @@
xdelta11/xdelta11/doc/dcc99/exact-delta
diff --git a/xdelta1/doc/old/dcc99/exact-delta/CVS/Root b/xdelta1/doc/old/dcc99/exact-delta/CVS/Root
new file mode 100755
index 0000000..645ccf1
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/exact-delta/CVS/Root
@@ -0,0 +1 @@
:ext:jmacd@cvs.xdelta.sourceforge.net:/cvsroot/xdelta
diff --git a/xdelta1/doc/old/dcc99/exact-delta/delta.cc b/xdelta1/doc/old/dcc99/exact-delta/delta.cc
new file mode 100755
index 0000000..ed27060
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/exact-delta/delta.cc
@@ -0,0 +1,176 @@
1/* $Header: /home/tully/hilfingr/work/delta/RCS/delta.cc,v 1.6 1995/08/11 02:06:27 hilfingr Exp $ */
2/* delta.c: Produce a delta indicating how to convert one file to */
3/* another. */
4
5/* Copyright (C) 1995, Paul N. Hilfinger. All Rights Reserved. */
6
7#include <stdio.h>
8#include <sys/types.h>
9#include <sys/stat.h>
10#include <iostream.h>
11#include <fstream.h>
12#include <strstream.h>
13#include "suffix.h"
14
15int/*waslong*/ cim = 0;
16int/*waslong*/ ilen = 0;
17
18int/*waslong*/
19ilog2 (int/*waslong*/ arg)
20{
21 int/*waslong*/ log = 0;
22
23 while (arg >>= 1) log += 1;
24
25 return log;
26}
27
28void
29measureInsert (int/*waslong*/ len)
30{
31 ilen += len;
32}
33
34void
35measureCopy (int/*waslong*/ len, int/*waslong*/ at)
36{
37 if (ilen > 0)
38 {
39 cim += 1 + ilog2 (ilen) + 8*ilen;
40#if 0
41 printf ("insert %ld %ld\n", ilen, cim);
42#endif
43 ilen = 0;
44 }
45
46 if (len > 0)
47 {
48 cim += 1 + ilog2 (len) + ilog2(at);
49#if 0
50 printf ("copy %ld %ld\n", len, cim);
51#endif
52 }
53}
54
55/* Usage: */
56/* delta file1 file2 */
57/* Produces on standard output a sequence of commands for converting */
58/* the contents of FILE1 to those of FILE2. Each command has the */
59/* following form: */
60/* <p><n0><n1><x> */
61/* where <p> is a signed number, <n0> and <n1> are nonnegative */
62/* numbers, and <x> is a sequence of <n1> characters. This command */
63/* means "Append <x> and then append <n0> characters starting from */
64/* position P+<p> in FILE1. Set P to P+<p>+<n0>." Initially, P is 0 */
65/* (characters in FILE1 are numbered from 0). Numbers are */
66/* represented in base 32 (see num32.h and num32.cc). */
67
68/* Don't bother to generate a move for any block less than */
69/* MOVE_THRESHOLD long. */
70const int/*waslong*/ MOVE_THRESHOLD = 6;
71
72/* Output on cout the delta between the string */
73/* T.string()[0..T.length()-1] and S1[0..N1-1], using P0 as the value */
74/* of P (above), and setting it to the final value of P when done. */
75/* Add OFFST to the positions of moved strings within S0. */
76void diffSegment(SuffixTree& T, const byte* S1, int N1,
77 int /*waslong*/ offst, int /*waslong*/& P0)
78{
79 int /*waslong*/ P;
80 int L;
81
82 P = P0;
83 L = N1;
84 while (L > 0) {
85 int/*waslong*/ start;
86 int/*waslong*/ len, i;
87
88 i = 0;
89 while (true) {
90 start = P - offst; len = 0;
91 if (i >= L)
92 break;
93 T.longestPrefix(S1+i, L-i, start, len);
94 if (len >= MOVE_THRESHOLD)
95 break;
96 i += 1;
97 }
98
99 measureInsert (i);
100 measureCopy (len, start + offst + P);
101
102 L -= i;
103 while (i > 0) {
104 S1 += 1; i -= 1;
105 }
106 S1 += len;
107 L -= len;
108 P = start + offst + len;
109 }
110
111 P0 = P;
112}
113
114
115main(int argc, char* argv[])
116{
117 ifstream F1, F2;
118 byte *S1;
119 byte *S2;
120 int /*waslong*/ N1, N2;
121 int /*waslong*/ P, offst;
122 struct stat buf1, buf2;
123 SuffixTree T;
124
125 if (argc < 3) {
126 cerr << "Usage: " << argv[0] << " from to" << "\n";
127 exit(1);
128 }
129
130 F1.open(argv[1]);
131 if (F1.fail()) {
132 cerr << "Could not open " << argv[1] << ".\n";
133 exit(1);
134 }
135
136 F2.open(argv[2]);
137 if (F2.fail()) {
138 cerr << "Could not open " << argv[2] << ".\n";
139 exit(1);
140 }
141
142 if (stat (argv[1], &buf1)) {
143 cerr << "Could not stat " << argv[1] << ".\n";
144 exit(1);
145 }
146
147 if (stat (argv[2], &buf2)) {
148 cerr << "Could not stat " << argv[2] << ".\n";
149 exit(1);
150 }
151
152 N1 = buf1.st_size;
153 N2 = buf2.st_size;
154
155 S1 = (byte*)allocate(N1);
156 S2 = (byte*)allocate(N2);
157
158 F1.read(S1, N1);
159 F2.read(S2, N2);
160
161 if (F2.fail() || F1.fail()) {
162 cerr << "Read failed.\n";
163 exit(1);
164 }
165
166 P = 0; offst = 0;
167 T.init(S1, N1);
168
169 diffSegment(T, S2, N2, 0, P);
170
171 measureCopy (0, 0);
172
173 printf ("%d\n", (cim+4)/8); /* into bytes */
174
175 exit(0);
176}
diff --git a/xdelta1/doc/old/dcc99/exact-delta/suffix.cc b/xdelta1/doc/old/dcc99/exact-delta/suffix.cc
new file mode 100755
index 0000000..cf31e90
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/exact-delta/suffix.cc
@@ -0,0 +1,427 @@
1/* $Header: /home/tully/hilfingr/work/delta/RCS/suffix.cc,v 1.6 1995/08/11 07:24:10 hilfingr Exp hilfingr $ */
2/* suffix.cc: */
3
4/* Copyright (C) 1995, Paul N. Hilfinger. All Rights Reserved. */
5
6#include <iostream.h>
7
8#include <stdio.h>
9#include <stddef.h>
10#include <stdlib.h>
11#include <limits.h>
12#include <string.h>
13#include "suffix.h"
14
15/* This file has been grossly hacked by Josh. */
16
17/* Notionally, the string theString has appended to it a sentinel */
18/* character that is unequal to any other character. This value can't */
19/* be represented directly in a byte, however, so we must take care */
20/* throughout to avoid actually trying to look at or compare the */
21/* sentinel character directly. */
22
23/* Each SuffixTree contains nonterminal nodes identified by integers */
24/* in the range 0 .. N and terminal nodes identified by integers in */
25/* the range N+1 .. 2N. Each node represents a string, and is said to */
26/* be the LOCUS of that string. Nonterminal node 0 represents the */
27/* null string. Nonterminal node k>1, if it exists, is the locus of */
28/* the longest prefix of theString[k-1 .. N-1] that is present in */
29/* theString[j..N-1], 0<=j<k-1; there is at most one nonterminal node */
30/* for each prefix. The prefix itself (whether or not a nonterminal */
31/* node exists for it) is called head(k). Terminal node N+k, k>0, */
32/* represents the suffix theString[k-1..N-1]. There is one terminal */
33/* node for each suffix. */
34
35/* The EXTENDED LOCUS of a string is the locus of the shortest string */
36/* in the tree that has that string as a prefix. The CONTRACTED LOCUS */
37/* of a string is the locus of the longest string in the tree that is */
38/* a prefix of that string. */
39
40/* Each edge of the tree is labeled with a non-null string such that */
41/* the concatenation of the strings on all edges leading from the root */
42/* to a node is the string represented by that node. For each */
43/* nonterminal node k, inArcLen[k] is the length of the string */
44/* labeling the edge incoming to k. All nonterminal nodes have at */
45/* least two edges leading from them, each beginning with a distinct */
46/* character. */
47
48/* For nonterminal node m and character c, the hash table edgeMap maps */
49/* (m,c) to the edge from m whose label begins with c, if there is */
50/* one. The member array edges contains all edges, and each edge is */
51/* represented by its index in edges. Each bin in edgeMap is linked */
52/* through the next fields of the edges. The hash function is such */
53/* that at most one entry whose source is a given node can appear on a */
54/* given hash chain. */
55
56/* This data structure and the algorithm for createSuffixTree, below, */
57/* were originally described in Edward M. McCreight, ``A */
58/* Space-Economical Suffix Tree Construction Algorithm'', JACM 23, 2 */
59/* (April, 1976), pp 262-272. */
60
61const NodeNum Root = 0;
62const int TERMINAL_FLAG = 0x40000000;
63const xbyte SENTINEL_CHAR = 0x1ff;
64
65void bail (void)
66{
67 printf ("-1\n");
68 exit (2);
69}
70
71void* allocate(int size)
72{
73 void* p = malloc (size);
74 static int total = 0;
75
76 total += size;
77
78 if (total >= 1<<30)
79 bail ();
80
81 if (! p)
82 bail ();
83
84 return p;
85}
86
87extern Edge _NULL_EDGE;
88Edge _NULL_EDGE(Root, Root, -1);
89static Edge* const NULL_EDGE = &_NULL_EDGE;
90
91inline NodeNum hash(xbyte c, NodeNum n)
92{
93 return (c | (c << 8)) ^ n;
94}
95
96#define member SuffixTree::
97
98member SuffixTree()
99{
100 theString = (byte*) "";
101 N = 1;
102 inArcLen = NULL;
103 nextEdge = NULL;
104 edges = NULL;
105 edgeMap = NULL;
106}
107
108member ~SuffixTree()
109{
110 delete [] inArcLen;
111 delete [] edges;
112 delete [] edgeMap;
113 inArcLen = NULL; edges = NULL; edgeMap = NULL;
114}
115
116void member init(const byte* S, int/*waslong*/ L)
117{
118 this->~SuffixTree();
119
120 N = L + 1;
121 theString = S;
122
123 createSuffixTree();
124}
125
126/* The step (in createSuffixTree: see below) at which node M>0 was */
127/* created. Step k>0 considers the suffix beginning at theString[k-1]. */
128inline int member toStep(NodeNum m) const
129{
130 return m & ~TERMINAL_FLAG;
131}
132
133/* The leaf node corresponding to the suffix beginning at character M. */
134inline NodeNum member toLeaf(int m) const
135{
136 return m | TERMINAL_FLAG;
137}
138
139
140/* The length of a suffix of which node M is a part. If M is a */
141/* terminal node, there is only one such suffix. */
142inline Length member suffixLength(NodeNum m) const
143{
144 return N - toStep(m) + 1;
145}
146
147/* True iff M is a terminal node */
148inline bool member isTerminal(NodeNum M) const
149{
150 return (M & TERMINAL_FLAG) != 0;
151}
152
153/* The length of the arc incoming to M, given that L is the length of */
154/* the string associated with M's parent. */
155inline Length member inLength(NodeNum m, Length L) const
156{
157 if (isTerminal(m))
158 return suffixLength(m) - L;
159 else
160 return inArcLen[m];
161}
162
163/* The starting position in string() of the string associated with */
164/* m>0. */
165inline int member suffixStart(NodeNum m) const
166{
167 return toStep(m)-1;
168}
169
170/* Create a new edge from n0 to n1 whose label begins with string x. */
171inline void member createEdge(NodeNum n0, NodeNum n1, xbyte x)
172{
173 assert (n0 >= 0 && n1 >= 0);
174 assert (nextNode(n0, x) == Root);
175 assert (nextEdge - edges < 2*N);
176 int h = hash(x, n0);
177
178 if (edgeMap[h] == NULL_EDGE)
179 *nextEdge = Edge(n0, n1, -1);
180 else
181 *nextEdge = Edge(n0, n1, edgeMap[h] - edges);
182
183 edgeMap[h] = nextEdge;
184
185 nextEdge += 1;
186}
187
188/* Insert new node N2 on edge E, where the source of E */
189/* represents a string of length L0 and L2 is the length of the string */
190/* between the source of E and N2. */
191inline void member splitEdge(Edge* e, NodeNum n2, Length L0, Length L2)
192{
193 NodeNum n0 = e->from, n1 = e->to;
194
195 assert( e != NULL_EDGE && ! isTerminal(n0) &&
196 ! isTerminal(n2) && L2 < inLength(n1, L0));
197
198 assert (n0 >= 0 && n1 >= 0 && n2 >= 0);
199
200 inArcLen[n2] = L2;
201 if (! isTerminal(n1))
202 inArcLen[n1] -= L2;
203 e->to = n2;
204 createEdge(n2, n1, theString[suffixStart(n1) + L0 + L2]);
205}
206
207/* Insert edge to new leaf node N1 from N0, where N0 represents a */
208/* string of length L. */
209inline void member addLeaf(NodeNum n0, NodeNum n1, Length L)
210{
211 assert(isTerminal(n1) && ! isTerminal(n0) && suffixStart(n1)+L < N);
212 assert (n0 >= 0);
213 assert (n1 >= 0);
214 if (suffixStart(n1) + L == N-1)
215 createEdge(n0, n1, SENTINEL_CHAR);
216 else
217 createEdge(n0, n1, theString[suffixStart(n1)+L]);
218}
219
220/* The edge from SRC labeled with a string beginning with C, if any, */
221/* or NULL_EDGE otherwise. */
222inline Edge* edge(NodeNum src, xbyte c, Edge* const edgeMap[], Edge* edges)
223{
224 Edge* e;
225
226 e = edgeMap[hash(c, src)];
227
228 for (;; e = edges + e->next)
229 {
230 if (e->from == src)
231 return e;
232
233 if (e->next == -1)
234 return NULL_EDGE;
235 }
236
237 return NULL_EDGE;
238}
239
240/* Node arrived at by following the arc whose label begins with C, if */
241/* any, from nonterminal node SRC. Returns Root if there is no such */
242/* node. */
243inline NodeNum member nextNode(NodeNum src, xbyte c) const
244{
245 return edge(src, c, edgeMap, edges) -> to;
246}
247
248void member longestPrefix(const byte* S1, int/*waslong*/ N1,
249 int/*waslong*/& start, int/*waslong*/& length) const
250{
251 int N0 = N-1;
252 int L; /* Length of S1 scanned so far. */
253 NodeNum m; /* Extended locus of S1[0..L-1]. */
254 int r; /* Characters remaining in current arc */
255 /* (incoming to node m). */
256 int s; /* Start of current prefix in S. */
257
258 L = 0; r = 0; m = Root; s = 0;
259 while (true) {
260 while (r > 0) {
261 if (S1[L] != theString[s+L]) {
262 start = s; length = L;
263 return;
264 }
265 r -= 1; L += 1;
266 }
267
268 if (L == N1 || s+L == N0) {
269 start = s; length = L;
270 return;
271 }
272
273 m = nextNode(m, S1[L]);
274 if (m == Root) {
275 start = s; length = L;
276 return;
277 } else if (isTerminal(m))
278 /* r := remaining length - 2 (so as not to include the */
279 /* sentinel character or the first character on the arc). */
280 r = suffixLength(m) - L - 2;
281 else
282 /* r := arc length - 1 (so as not to include the first */
283 /* character on the arc). */
284 r = inArcLen[m] - 1;
285 s = suffixStart(m);
286 L += 1; /* Skip first character on arc. */
287 if (L+r > N1)
288 r = N1 - L;
289 }
290}
291
292/* Assuming that N and theString are set correctly, set edgeMap, */
293/* edges, and inArcLen to represent a tree corresponding to the */
294/* suffixes of theString, as described above. */
295void member createSuffixTree()
296{
297 if (N == 1)
298 return;
299
300 inArcLen = (Length*) allocate (sizeof(Length) * (N+1));
301 nextEdge = edges = (Edge*) allocate (sizeof(Edge) * (2*N));
302 edgeMap = (Edge**) allocate (sizeof(Edge*) * (0x20000+N+1));
303
304 /* For nonterminal node 0<m<k-1 (where k is the current step in the */
305 /* algorithm---the step at which node k or node N+k is created), */
306 /* with m the locus of string xS (x a character, S a string), */
307 /* suffix[m] is the locus of S. */
308 NodeNum* suffix = (NodeNum*) allocate (sizeof(NodeNum) * (N+1));
309 memset(suffix, '\000', sizeof(NodeNum) * (N+1));
310
311 for (int/*waslong*/ y = 0x20000+N+1; y >= 0; y -= 1)
312 edgeMap[y] = NULL_EDGE;
313 inArcLen[Root] = 0;
314
315 /* Step 1. */
316 addLeaf(Root, toLeaf(1), 0);
317 /* The tree now contains the trivial suffix theString[0..N-1]. */
318
319 NodeNum nextPrefix; /* At the beginning of step k, a */
320 /* nonterminal node representing a prefix */
321 /* of head(k). */
322 int nextPrefixLen; /* At the beginning of step k, the */
323 /* length of the prefix denoted by */
324 /* nextPrefix. */
325 NodeNum lastHead; /* At the beginning of step k, the */
326 /* locus of head(k-1). */
327 int lastHeadLen; /* At the beginning of step k, the */
328 /* length of head(k-1). */
329
330
331 lastHead = Root; lastHeadLen = 0;
332 nextPrefix = Root; nextPrefixLen = 0;
333 /* Steps 2 to N. */
334 for (NodeNum k = 2; k <= N; k += 1) {
335 /* The tree now contains the strings theString[j..N-1], */
336 /* 0 <= j< k-1 (call this tree T(k-1)). */
337 NodeNum d0, d1;
338 int/*waslong*/ r, L;
339
340 /* The suffix theString[k-1..N-1]; */
341 const byte* const suff_k = theString+k-1;
342 /* Its length. */
343 const int/*waslong*/ suff_k_len = N - k;
344
345 /* tail(head(k-1)) == theString[k-1 .. k-3+lastHeadLen] is */
346 /* guaranteed to be a prefix of some string currently in the */
347 /* tree. Rescan to find (or if necessary, create) the locus */
348 /* of tail(head(k-1)) in the tree, setting d1 to that locus. */
349 /* Set nextPrefix and nextPrefixLen for the next iteration. */
350 /* The sentinel character is guaranteed not to be a part of */
351 /* head(k-1). */
352
353 d0 = d1= nextPrefix;
354 L = nextPrefixLen;
355 nextPrefix = Root; nextPrefixLen = 0;
356 while (L < lastHeadLen-1) {
357 Edge* e = edge(d0, suff_k[L], edgeMap, edges);
358 assert(e != NULL_EDGE);
359 d1 = e->to;
360 assert (d1 != Root);
361 r = inLength(d1, L);
362 if (r + L >= lastHeadLen) {
363 r = lastHeadLen - 1 - L;
364 splitEdge(e, k, L, r);
365 d1 = k;
366 break;
367 }
368 L += r;
369 d0 = d1;
370 assert (d1 <= N);
371 nextPrefix = suffix[d1];
372 nextPrefixLen = L-1;
373 assert(! isTerminal(nextPrefix) &&
374 (nextPrefix == Root) == (nextPrefixLen == 0));
375 }
376
377 /* Estabish the suffix link for head(k-1). */
378 assert (lastHead <= N);
379 if (suffix[lastHead] == Root) {
380 assert( !isTerminal(d1));
381 suffix[lastHead] = d1;
382 }
383
384 /* Now scan down the tree from d1 until we "fall out" of the */
385 /* tree. Insert a new leaf pointer (to a node representing */
386 /* suff_k) at that point, also creating, if necessary, a */
387 /* new nonterminal node if we fall out in the middle of an */
388 /* edge. The node from which we insert the new leaf pointer */
389 /* is the locus of head(k). Here, it is possible to run off */
390 /* the end of suff_k. When this happens, we act as if */
391 /* SENTINEL_CHAR were the offending character. */
392 L = lastHeadLen == 0 ? 0 : lastHeadLen - 1;
393 d0 = d1;
394 while (true) {
395 int r0, i;
396
397 Edge* e = edge(d0, suff_k[L], edgeMap, edges);
398 d1 = e->to;
399 if (d1 == Root)
400 break;
401 r0 = inLength(d1, L);
402
403 if (r0+L > suff_k_len)
404 r = suff_k_len - L;
405 else
406 r = r0;
407 const byte* const suff_d1 = theString + suffixStart(d1);
408 for (i = 1; i < r && suff_k[L+i] == suff_d1[L+i]; i += 1)
409 {}
410 if (i == r0) {
411 L += r;
412 d0 = d1;
413 assert (d1 <= N);
414 nextPrefix = suffix[d1]; nextPrefixLen = L-1;
415 } else {
416 splitEdge(e, k, L, i);
417 d0 = d1 = k;
418 L += i;
419 break;
420 }
421 }
422 addLeaf(d0, toLeaf(k), L);
423 lastHead = d0; lastHeadLen = L;
424 }
425
426 delete [] suffix;
427}
diff --git a/xdelta1/doc/old/dcc99/exact-delta/suffix.h b/xdelta1/doc/old/dcc99/exact-delta/suffix.h
new file mode 100755
index 0000000..249f0ad
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/exact-delta/suffix.h
@@ -0,0 +1,117 @@
1/* -*-Mode: c++;-*- */
2
3/* $Header: /home/tully/hilfingr/work/delta/RCS/suffix.h,v 1.6 1995/08/11 07:24:10 hilfingr Exp $ */
4/* suffix.h: Definitions for suffix-tree data type. */
5
6/* Copyright (C) 1995, Paul N. Hilfinger. All Rights Reserved. */
7
8
9#ifndef _SUFFIX_H_
10#define _SUFFIX_H_
11
12#include <assert.h>
13
14typedef unsigned char byte;
15
16class Edge; /* Edge between two nodes. */
17
18void* allocate(int size);
19
20class SuffixTree {
21 /* A suffix tree is the set of all suffixes of a particular string. */
22public:
23 /* The set { "" } (all suffixes of the empty string). Sets */
24 /* string() to "" and length() to 0. */
25 SuffixTree();
26
27 SuffixTree(const SuffixTree& T);
28
29 ~SuffixTree();
30
31 /* Set *this to a suffix tree for S[0..L-1]. */
32 /* The string S must continue to exist and its contents remain */
33 /* unchanged until the next application of init or until *this is */
34 /* destroyed. Sets string() to S and length() to L. */
35 void init(const byte* S, int/*waslong*/ L);
36
37 /* See definitions of default constructor and init (above). */
38 const byte* string() const;
39 const int/*waslong*/ length() const;
40
41 /* Set LENGTH to the length of the longest prefix of S1[0..N1-1] that */
42 /* occurs in string(), and START to an index in S1 of the */
43 /* beginning of that prefix. */
44 void longestPrefix(const byte* S1, int/*waslong*/ N1,
45 int/*waslong*/& start, int/*waslong*/& length) const;
46private:
47
48 /* See suffix.cc for an explanation of the data structure. */
49
50 typedef int/*waslong*/ NodeNum;
51 typedef int/*waslong*/ Length;
52
53 /* Extended bytes: Includes the notional end-of-string character. */
54 typedef int xbyte;
55
56 const byte* theString;
57 /* Value of string(). */
58
59 int N; /* strlen(theString)+1. */
60
61 Length* inArcLen; /* inArcLen[k] is the length of the */
62 /* string labeling the arc leading to */
63 /* nonterminal node k. */
64
65 Edge* edges; /* Array of all edges */
66 Edge* nextEdge; /* Next free edge in edges */
67 Edge** edgeMap; /* Hash table: NodeNum x char -> NodeNum. */
68
69 /* See definitions in suffix.cc */
70
71 Length suffixLength(NodeNum m) const;
72 bool isTerminal(NodeNum m) const;
73 int toStep(NodeNum m) const;
74 NodeNum toLeaf(int m) const;
75 Length inLength(NodeNum m, Length L) const;
76 NodeNum nextNode(NodeNum src, xbyte c) const;
77 int suffixStart(NodeNum m) const;
78 void splitEdge(Edge* e, NodeNum n2, Length L0, Length L2);
79 void addLeaf(NodeNum n0, NodeNum n1, Length L);
80 void createEdge(NodeNum n0, NodeNum n1, xbyte x);
81
82 void createSuffixTree();
83};
84
85inline const byte* SuffixTree::string() const
86{
87 return theString;
88}
89
90void bail (void);
91
92inline const int/*waslong*/ SuffixTree::length() const
93{
94 return N-1;
95}
96
97typedef SuffixTree::NodeNum NodeNum;
98typedef SuffixTree::xbyte xbyte;
99typedef SuffixTree::Length Length;
100
101class Edge {
102public:
103 Edge() {}
104 Edge(NodeNum from0, NodeNum to0, int next0)
105 : from(from0), to(to0), next(next0)
106 {
107 assert (to0 >= 0);
108 assert (from0 >= 0);
109 }
110
111 NodeNum from, to; /* Source and sink nodes. */
112
113 int next;
114};
115
116
117#endif
diff --git a/xdelta1/doc/old/dcc99/figs/CVS/Entries b/xdelta1/doc/old/dcc99/figs/CVS/Entries
new file mode 100755
index 0000000..ee36796
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/figs/CVS/Entries
@@ -0,0 +1,23 @@
1/bigsizes.eps/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
2/dependency.eps/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
3/dependency.fig/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
4/dependency.fig.normalsize/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
5/jumping.eps/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
6/jumping.fig/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
7/normalize.fig/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
8/onestep.eps/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
9/onestep.fig/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
10/onestep.fig.normalsize/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
11/rcs.eps/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
12/rcs.fig/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
13/sizes.eps/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
14/strings.eps/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
15/strings.fig/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
16/strings.fig.normalsize/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
17/strings.fig.normalsize.eps/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
18/xdarchive.eps/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
19/xdarchive.fig/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
20/xdarchive.fig.normalsize/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
21/xdelta.eps/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
22/xdelta.fig/1.1.1.1/Tue Jun 12 03:16:40 2001/-ko/
23D
diff --git a/xdelta1/doc/old/dcc99/figs/CVS/Repository b/xdelta1/doc/old/dcc99/figs/CVS/Repository
new file mode 100755
index 0000000..878929c
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/figs/CVS/Repository
@@ -0,0 +1 @@
xdelta11/xdelta11/doc/dcc99/figs
diff --git a/xdelta1/doc/old/dcc99/figs/CVS/Root b/xdelta1/doc/old/dcc99/figs/CVS/Root
new file mode 100755
index 0000000..645ccf1
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/figs/CVS/Root
@@ -0,0 +1 @@
:ext:jmacd@cvs.xdelta.sourceforge.net:/cvsroot/xdelta
diff --git a/xdelta1/doc/old/dcc99/figs/bigsizes.eps b/xdelta1/doc/old/dcc99/figs/bigsizes.eps
new file mode 100755
index 0000000..271f7f9
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/figs/bigsizes.eps
@@ -0,0 +1,766 @@
1%!PS-Adobe-3.0 EPSF-3.0
2%%Creator: MATLAB, The Mathworks, Inc.
3%%Title: ../figs/bigsizes.eps
4%%CreationDate: 11/14/98 05:04:11
5%%DocumentNeededFonts: Helvetica
6%%DocumentProcessColors: Cyan Magenta Yellow Black
7%%LanguageLevel: 2
8%%Pages: 1
9%%BoundingBox: 70 196 550 600
10%%EndComments
11
12%%BeginProlog
13
14% MathWorks dictionary
15/MathWorks 150 dict begin
16
17% definition operators
18/bdef {bind def} bind def
19/ldef {load def} bind def
20/xdef {exch def} bdef
21/xstore {exch store} bdef
22
23% operator abbreviations
24/c /clip ldef
25/cc /concat ldef
26/cp /closepath ldef
27/gr /grestore ldef
28/gs /gsave ldef
29/mt /moveto ldef
30/np /newpath ldef
31/cm /currentmatrix ldef
32/sm /setmatrix ldef
33/rc {rectclip} bdef
34/rf {rectfill} bdef
35/rm /rmoveto ldef
36/rl /rlineto ldef
37/s /show ldef
38/sc {setcmykcolor} bdef
39/sr /setrgbcolor ldef
40/sg /setgray ldef
41/w /setlinewidth ldef
42/j /setlinejoin ldef
43/cap /setlinecap ldef
44
45% page state control
46/pgsv () def
47/bpage {/pgsv save def} bdef
48/epage {pgsv restore} bdef
49/bplot /gsave ldef
50/eplot {stroke grestore} bdef
51
52% orientation switch
53/portraitMode 0 def
54/landscapeMode 1 def
55
56% coordinate system mappings
57/dpi2point 0 def
58
59% font control
60/FontSize 0 def
61/FMS {
62 /FontSize xstore %save size off stack
63 findfont
64 [FontSize 0 0 FontSize neg 0 0]
65 makefont
66 setfont
67 }bdef
68
69/reencode {
70exch dup where
71{pop load} {pop StandardEncoding} ifelse
72exch
73dup 3 1 roll
74findfont dup length dict begin
75 { 1 index /FID ne {def}{pop pop} ifelse } forall
76 /Encoding exch def
77 currentdict
78end
79definefont pop
80} bdef
81
82/isroman {
83findfont /CharStrings get
84/Agrave known
85} bdef
86
87/FMSR {
883 1 roll 1 index
89dup isroman
90{reencode} {pop pop} ifelse
91exch FMS
92} bdef
93
94/csm {
95 1 dpi2point div -1 dpi2point div scale
96 neg translate
97 landscapeMode eq {90 rotate} if
98 } bdef
99
100% line types: solid, dotted, dashed, dotdash
101/SO { [] 0 setdash } bdef
102/DO { [.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef
103/DA { [6 dpi2point mul] 0 setdash } bdef
104/DD { [.5 dpi2point mul 4 dpi2point mul 6 dpi2point mul 4 dpi2point mul] 0 setdash } bdef
105
106% macros for lines and objects
107/L {
108 lineto
109 stroke
110 } bdef
111/MP {
112 3 1 roll moveto
113 1 sub {rlineto} repeat
114 } bdef
115/AP {
116 {rlineto} repeat
117 } bdef
118/PP {
119 closepath eofill
120 } bdef
121/DP {
122 closepath stroke
123 } bdef
124/MR {
125 4 -2 roll moveto
126 dup 0 exch rlineto
127 exch 0 rlineto
128 neg 0 exch rlineto
129 closepath
130 } bdef
131/FR {
132 MR stroke
133 } bdef
134/PR {
135 MR fill
136 } bdef
137/L1i {
138 { currentfile picstr readhexstring pop } image
139 } bdef
140
141/tMatrix matrix def
142/MakeOval {
143 newpath
144 tMatrix currentmatrix pop
145 translate scale
146 0 0 1 0 360 arc
147 tMatrix setmatrix
148 } bdef
149/FO {
150 MakeOval
151 stroke
152 } bdef
153/PO {
154 MakeOval
155 fill
156 } bdef
157
158/PD {
159 currentlinecap 1 setlinecap 3 1 roll 2 copy moveto lineto stroke setlinecap
160 } bdef
161
162/FA {
163 newpath
164 tMatrix currentmatrix pop
165 translate scale
166 0 0 1 5 -2 roll arc
167 tMatrix setmatrix
168 stroke
169 } bdef
170/PA {
171 newpath
172 tMatrix currentmatrix pop
173 translate 0 0 moveto scale
174 0 0 1 5 -2 roll arc
175 closepath
176 tMatrix setmatrix
177 fill
178 } bdef
179
180
181/FAn {
182 newpath
183 tMatrix currentmatrix pop
184 translate scale
185 0 0 1 5 -2 roll arcn
186 tMatrix setmatrix
187 stroke
188 } bdef
189/PAn {
190 newpath
191 tMatrix currentmatrix pop
192 translate 0 0 moveto scale
193 0 0 1 5 -2 roll arcn
194 closepath
195 tMatrix setmatrix
196 fill
197 } bdef
198
199
200
201currentdict end def
202%%EndProlog
203
204%%BeginSetup
205MathWorks begin
206
2070 cap
208
209end
210%%EndSetup
211
212%%Page: 1 1
213%%BeginPageSetup
214%%PageBoundingBox: 70 196 550 600
215MathWorks begin
216bpage
217%%EndPageSetup
218
219%%BeginObject: graph1 1
220bplot
221
222/dpi2point 12 def
223portraitMode 0216 7344 csm
224
225 633 133 5756 4856 rc
22688 dict begin %Colortable dictionary
227/c0 { 0 0 0 sr} bdef
228/c1 { 1 1 1 sr} bdef
229/c2 { 1 0 0 sr} bdef
230/c3 { 0 1 0 sr} bdef
231/c4 { 0 0 1 sr} bdef
232/c5 { 1 1 0 sr} bdef
233/c6 { 1 0 1 sr} bdef
234/c7 { 0 1 1 sr} bdef
2351 j
2361 sg
237 0 0 6916 5185 rf
2386 w
2390 4225 5358 0 0 -4225 899 4613 4 MP
240PP
241-5358 0 0 4225 5358 0 0 -4225 899 4613 5 MP stroke
242DO
2434 w
244SO
2456 w
2460 sg
247 899 4613 mt 6257 4613 L
248 899 388 mt 6257 388 L
249 899 4613 mt 899 388 L
2506257 4613 mt 6257 388 L
251 899 4613 mt 6257 4613 L
252 899 4613 mt 899 388 L
253 899 4613 mt 899 4559 L
254 899 388 mt 899 442 L
255%%IncludeResource: font Helvetica
256/Helvetica /ISOLatin1Encoding 120 FMSR
257
258 816 4759 mt
259(2.4) s
2601664 4613 mt 1664 4559 L
2611664 388 mt 1664 442 L
2621581 4759 mt
263(2.5) s
2642430 4613 mt 2430 4559 L
2652430 388 mt 2430 442 L
2662347 4759 mt
267(2.6) s
2683195 4613 mt 3195 4559 L
2693195 388 mt 3195 442 L
2703112 4759 mt
271(2.7) s
2723961 4613 mt 3961 4559 L
2733961 388 mt 3961 442 L
2743878 4759 mt
275(2.8) s
2764726 4613 mt 4726 4559 L
2774726 388 mt 4726 442 L
2784643 4759 mt
279(2.9) s
2805492 4613 mt 5492 4559 L
2815492 388 mt 5492 442 L
2825459 4759 mt
283(3) s
2846257 4613 mt 6257 4559 L
2856257 388 mt 6257 442 L
2866174 4759 mt
287(3.1) s
2885987 4961 mt
289(x 10) s
290%%IncludeResource: font Helvetica
291/Helvetica /ISOLatin1Encoding 80 FMSR
292
2936213 4887 mt
294(7) s
295 899 4613 mt 953 4613 L
2966257 4613 mt 6203 4613 L
297%%IncludeResource: font Helvetica
298/Helvetica /ISOLatin1Encoding 120 FMSR
299
300 798 4657 mt
301(0) s
302 899 4085 mt 953 4085 L
3036257 4085 mt 6203 4085 L
304 798 4129 mt
305(1) s
306 899 3557 mt 953 3557 L
3076257 3557 mt 6203 3557 L
308 798 3601 mt
309(2) s
310 899 3029 mt 953 3029 L
3116257 3029 mt 6203 3029 L
312 798 3073 mt
313(3) s
314 899 2501 mt 953 2501 L
3156257 2501 mt 6203 2501 L
316 798 2545 mt
317(4) s
318 899 1972 mt 953 1972 L
3196257 1972 mt 6203 1972 L
320 798 2016 mt
321(5) s
322 899 1444 mt 953 1444 L
3236257 1444 mt 6203 1444 L
324 798 1488 mt
325(6) s
326 899 916 mt 953 916 L
3276257 916 mt 6203 916 L
328 798 960 mt
329(7) s
330 899 388 mt 953 388 L
3316257 388 mt 6203 388 L
332 798 432 mt
333(8) s
334 899 334 mt
335(x 10) s
336%%IncludeResource: font Helvetica
337/Helvetica /ISOLatin1Encoding 80 FMSR
338
3391125 260 mt
340(6) s
341 899 4613 mt 6257 4613 L
342 899 388 mt 6257 388 L
343 899 4613 mt 899 388 L
3446257 4613 mt 6257 388 L
345gs 899 388 5359 4226 rc
346
347gr
348/c8 { 1.000000 0.000000 0.000000 sr} bdef
349c8
350 36 36 1316 4567 FO
351 36 36 1309 4567 FO
352 36 36 1316 4567 FO
353 36 36 1309 4567 FO
354 36 36 1332 4306 FO
355 36 36 1316 4299 FO
356 36 36 1332 4306 FO
357 36 36 1316 4299 FO
358 36 36 1340 4312 FO
359 36 36 1332 4298 FO
360 36 36 1340 4312 FO
361 36 36 1332 4298 FO
362 36 36 1371 3970 FO
363 36 36 1340 3954 FO
364 36 36 1371 3970 FO
365 36 36 1340 3954 FO
366 36 36 1410 3648 FO
367 36 36 1371 3626 FO
368 36 36 1410 3648 FO
369 36 36 1371 3626 FO
370 36 36 1418 4170 FO
371 36 36 1410 4172 FO
372 36 36 1418 4170 FO
373 36 36 1410 4172 FO
374 36 36 1497 2565 FO
375 36 36 1418 2544 FO
376 36 36 1497 2565 FO
377 36 36 1418 2544 FO
378 36 36 1794 3218 FO
379 36 36 1497 3247 FO
380 36 36 1794 3218 FO
381 36 36 1497 3247 FO
382 36 36 2116 1054 FO
383 36 36 1794 1092 FO
384 36 36 2116 1054 FO
385 36 36 1794 1092 FO
386 36 36 2116 4064 FO
387 36 36 2116 4083 FO
388 36 36 2116 4064 FO
389 36 36 2116 4083 FO
390 36 36 2265 2045 FO
391 36 36 2116 2040 FO
392 36 36 2265 2045 FO
393 36 36 2116 2040 FO
394 36 36 2288 4268 FO
395 36 36 2265 4259 FO
396 36 36 2288 4268 FO
397 36 36 2265 4259 FO
398 36 36 2280 4535 FO
399 36 36 2288 4540 FO
400 36 36 2280 4535 FO
401 36 36 2288 4540 FO
402 36 36 2273 4211 FO
403 36 36 2280 4204 FO
404 36 36 2273 4211 FO
405 36 36 2280 4204 FO
406 36 36 2876 1293 FO
407 36 36 2273 1396 FO
408 36 36 2876 1293 FO
409 36 36 2273 1396 FO
410 36 36 3621 962 FO
411 36 36 2876 1071 FO
412 36 36 3621 962 FO
413 36 36 2876 1071 FO
414 36 36 4162 856 FO
415 36 36 3621 925 FO
416 36 36 4162 856 FO
417 36 36 3621 925 FO
418 36 36 4154 4334 FO
419 36 36 4162 4325 FO
420 36 36 4154 4334 FO
421 36 36 4162 4325 FO
422 36 36 4444 1191 FO
423 36 36 4154 1222 FO
424 36 36 4444 1191 FO
425 36 36 4154 1222 FO
426 36 36 4538 3486 FO
427 36 36 4444 3467 FO
428 36 36 4538 3486 FO
429 36 36 4444 3467 FO
430 36 36 4459 3361 FO
431 36 36 4538 3360 FO
432 36 36 4459 3361 FO
433 36 36 4538 3360 FO
434 36 36 4467 4222 FO
435 36 36 4459 4215 FO
436 36 36 4467 4222 FO
437 36 36 4459 4215 FO
438 36 36 4875 604 FO
439 36 36 4467 650 FO
440 36 36 4875 604 FO
441 36 36 4467 650 FO
442 36 36 4875 4589 FO
443 36 36 4875 4588 FO
444 36 36 4875 4589 FO
445 36 36 4875 4588 FO
446 36 36 5212 1088 FO
447 36 36 4875 1134 FO
448 36 36 5212 1088 FO
449 36 36 4875 1134 FO
450 36 36 5212 4554 FO
451 36 36 5212 4552 FO
452 36 36 5212 4554 FO
453 36 36 5212 4552 FO
454 36 36 5627 1945 FO
455 36 36 5212 1983 FO
456 36 36 5627 1945 FO
457 36 36 5212 1983 FO
458 36 36 5996 2577 FO
459 36 36 5627 2616 FO
460 36 36 5996 2577 FO
461 36 36 5627 2616 FO
462 36 36 6168 1397 FO
463 36 36 5996 1388 FO
464gs 899 388 5359 4226 rc
465
466gr
4670 j
4680 -58 -58 0 0 58 58 0 1287 4576 5 MP
469/c9 { 0.000000 0.000000 1.000000 sr} bdef
470c9
471DP
4720 -58 -58 0 0 58 58 0 1280 4577 5 MP
473DP
4740 -58 -58 0 0 58 58 0 1287 4576 5 MP
475DP
4760 -58 -58 0 0 58 58 0 1280 4577 5 MP
477DP
4780 -58 -58 0 0 58 58 0 1303 4571 5 MP
479DP
4800 -58 -58 0 0 58 58 0 1287 4574 5 MP
481DP
4820 -58 -58 0 0 58 58 0 1303 4571 5 MP
483DP
4840 -58 -58 0 0 58 58 0 1287 4574 5 MP
485DP
4860 -58 -58 0 0 58 58 0 1311 4576 5 MP
487DP
4880 -58 -58 0 0 58 58 0 1303 4578 5 MP
489DP
4900 -58 -58 0 0 58 58 0 1311 4576 5 MP
491DP
4920 -58 -58 0 0 58 58 0 1303 4578 5 MP
493DP
4940 -58 -58 0 0 58 58 0 1342 4552 5 MP
495DP
4960 -58 -58 0 0 58 58 0 1311 4558 5 MP
497DP
4980 -58 -58 0 0 58 58 0 1342 4552 5 MP
499DP
5000 -58 -58 0 0 58 58 0 1311 4558 5 MP
501DP
5020 -58 -58 0 0 58 58 0 1381 4576 5 MP
503DP
5040 -58 -58 0 0 58 58 0 1342 4581 5 MP
505DP
5060 -58 -58 0 0 58 58 0 1381 4576 5 MP
507DP
5080 -58 -58 0 0 58 58 0 1342 4581 5 MP
509DP
5100 -58 -58 0 0 58 58 0 1389 4527 5 MP
511DP
5120 -58 -58 0 0 58 58 0 1381 4532 5 MP
513DP
5140 -58 -58 0 0 58 58 0 1389 4527 5 MP
515DP
5160 -58 -58 0 0 58 58 0 1381 4532 5 MP
517DP
5180 -58 -58 0 0 58 58 0 1468 4562 5 MP
519DP
5200 -58 -58 0 0 58 58 0 1389 4571 5 MP
521DP
5220 -58 -58 0 0 58 58 0 1468 4562 5 MP
523DP
5240 -58 -58 0 0 58 58 0 1389 4571 5 MP
525DP
5260 -58 -58 0 0 58 58 0 1765 4493 5 MP
527DP
5280 -58 -58 0 0 58 58 0 1468 4538 5 MP
529DP
5300 -58 -58 0 0 58 58 0 1765 4493 5 MP
531DP
5320 -58 -58 0 0 58 58 0 1468 4538 5 MP
533DP
5340 -58 -58 0 0 58 58 0 2087 4489 5 MP
535DP
5360 -58 -58 0 0 58 58 0 1765 4538 5 MP
537DP
5380 -58 -58 0 0 58 58 0 2087 4489 5 MP
539DP
5400 -58 -58 0 0 58 58 0 1765 4538 5 MP
541DP
5420 -58 -58 0 0 58 58 0 2087 4565 5 MP
543DP
5440 -58 -58 0 0 58 58 0 2087 4563 5 MP
545DP
5460 -58 -58 0 0 58 58 0 2087 4565 5 MP
547DP
5480 -58 -58 0 0 58 58 0 2087 4563 5 MP
549DP
5500 -58 -58 0 0 58 58 0 2236 4546 5 MP
551DP
5520 -58 -58 0 0 58 58 0 2087 4573 5 MP
553DP
5540 -58 -58 0 0 58 58 0 2236 4546 5 MP
555DP
5560 -58 -58 0 0 58 58 0 2087 4573 5 MP
557DP
5580 -58 -58 0 0 58 58 0 2259 4568 5 MP
559DP
5600 -58 -58 0 0 58 58 0 2236 4571 5 MP
561DP
5620 -58 -58 0 0 58 58 0 2259 4568 5 MP
563DP
5640 -58 -58 0 0 58 58 0 2236 4571 5 MP
565DP
5660 -58 -58 0 0 58 58 0 2251 4578 5 MP
567DP
5680 -58 -58 0 0 58 58 0 2259 4576 5 MP
569DP
5700 -58 -58 0 0 58 58 0 2251 4578 5 MP
571DP
5720 -58 -58 0 0 58 58 0 2259 4576 5 MP
573DP
5740 -58 -58 0 0 58 58 0 2244 4561 5 MP
575DP
5760 -58 -58 0 0 58 58 0 2251 4561 5 MP
577DP
5780 -58 -58 0 0 58 58 0 2244 4561 5 MP
579DP
5800 -58 -58 0 0 58 58 0 2251 4561 5 MP
581DP
5820 -58 -58 0 0 58 58 0 2847 4416 5 MP
583DP
5840 -58 -58 0 0 58 58 0 2244 4502 5 MP
585DP
5860 -58 -58 0 0 58 58 0 2847 4416 5 MP
587DP
5880 -58 -58 0 0 58 58 0 2244 4502 5 MP
589DP
5900 -58 -58 0 0 58 58 0 3592 4417 5 MP
591DP
5920 -58 -58 0 0 58 58 0 2847 4524 5 MP
593DP
5940 -58 -58 0 0 58 58 0 3592 4417 5 MP
595DP
5960 -58 -58 0 0 58 58 0 2847 4524 5 MP
597DP
5980 -58 -58 0 0 58 58 0 4133 4428 5 MP
599DP
6000 -58 -58 0 0 58 58 0 3592 4505 5 MP
601DP
6020 -58 -58 0 0 58 58 0 4133 4428 5 MP
603DP
6040 -58 -58 0 0 58 58 0 3592 4505 5 MP
605DP
6060 -58 -58 0 0 58 58 0 4125 4553 5 MP
607DP
6080 -58 -58 0 0 58 58 0 4133 4550 5 MP
609DP
6100 -58 -58 0 0 58 58 0 4125 4553 5 MP
611DP
6120 -58 -58 0 0 58 58 0 4133 4550 5 MP
613DP
6140 -58 -58 0 0 58 58 0 4415 4546 5 MP
615DP
6160 -58 -58 0 0 58 58 0 4125 4560 5 MP
617DP
6180 -58 -58 0 0 58 58 0 4415 4546 5 MP
619DP
6200 -58 -58 0 0 58 58 0 4125 4560 5 MP
621DP
6220 -58 -58 0 0 58 58 0 4509 4537 5 MP
623DP
6240 -58 -58 0 0 58 58 0 4415 4550 5 MP
625DP
6260 -58 -58 0 0 58 58 0 4509 4537 5 MP
627DP
6280 -58 -58 0 0 58 58 0 4415 4550 5 MP
629DP
6300 -58 -58 0 0 58 58 0 4430 4568 5 MP
631DP
6320 -58 -58 0 0 58 58 0 4509 4560 5 MP
633DP
6340 -58 -58 0 0 58 58 0 4430 4568 5 MP
635DP
6360 -58 -58 0 0 58 58 0 4509 4560 5 MP
637DP
6380 -58 -58 0 0 58 58 0 4438 4554 5 MP
639DP
6400 -58 -58 0 0 58 58 0 4430 4556 5 MP
641DP
6420 -58 -58 0 0 58 58 0 4438 4554 5 MP
643DP
6440 -58 -58 0 0 58 58 0 4430 4556 5 MP
645DP
6460 -58 -58 0 0 58 58 0 4846 4459 5 MP
647DP
6480 -58 -58 0 0 58 58 0 4438 4529 5 MP
649DP
6500 -58 -58 0 0 58 58 0 4846 4459 5 MP
651DP
6520 -58 -58 0 0 58 58 0 4438 4529 5 MP
653DP
6540 -58 -58 0 0 58 58 0 4846 4578 5 MP
655DP
6560 -58 -58 0 0 58 58 0 4846 4579 5 MP
657DP
6580 -58 -58 0 0 58 58 0 4846 4578 5 MP
659DP
6600 -58 -58 0 0 58 58 0 4846 4579 5 MP
661DP
6620 -58 -58 0 0 58 58 0 5183 4487 5 MP
663DP
6640 -58 -58 0 0 58 58 0 4846 4545 5 MP
665DP
6660 -58 -58 0 0 58 58 0 5183 4487 5 MP
667DP
6680 -58 -58 0 0 58 58 0 4846 4545 5 MP
669DP
6700 -58 -58 0 0 58 58 0 5183 4574 5 MP
671DP
6720 -58 -58 0 0 58 58 0 5183 4575 5 MP
673DP
6740 -58 -58 0 0 58 58 0 5183 4574 5 MP
675DP
6760 -58 -58 0 0 58 58 0 5183 4575 5 MP
677DP
6780 -58 -58 0 0 58 58 0 5598 4482 5 MP
679DP
6800 -58 -58 0 0 58 58 0 5183 4534 5 MP
681DP
6820 -58 -58 0 0 58 58 0 5598 4482 5 MP
683DP
6840 -58 -58 0 0 58 58 0 5183 4534 5 MP
685DP
6860 -58 -58 0 0 58 58 0 5967 4487 5 MP
687DP
6880 -58 -58 0 0 58 58 0 5598 4541 5 MP
689DP
6900 -58 -58 0 0 58 58 0 5967 4487 5 MP
691DP
6920 -58 -58 0 0 58 58 0 5598 4541 5 MP
693DP
6940 -58 -58 0 0 58 58 0 6139 4533 5 MP
695DP
6960 -58 -58 0 0 58 58 0 5967 4560 5 MP
697DP
698gs 899 388 5359 4226 rc
699
700gr
7010 sg
702%%IncludeResource: font Helvetica
703/Helvetica /ISOLatin1Encoding 120 FMSR
704
705 744 2970 mt -90 rotate
706(Delta Size \(bytes\)) s
70790 rotate
7083066 4901 mt
709(To File Size \(bytes\)) s
7101 sg
7110 369 1239 0 0 -369 4880 861 4 MP
712PP
713-1239 0 0 369 1239 0 0 -369 4880 861 5 MP stroke
714DO
7154 w
716SO
7176 w
7180 sg
7194880 861 mt 6119 861 L
7204880 492 mt 6119 492 L
7214880 861 mt 4880 492 L
7226119 861 mt 6119 492 L
7234880 861 mt 6119 861 L
7244880 861 mt 4880 492 L
7254880 861 mt 6119 861 L
7264880 492 mt 6119 492 L
7274880 861 mt 4880 492 L
7286119 861 mt 6119 492 L
7295683 659 mt
730(Vdelta) s
731gs 4880 492 1240 370 rc
732
733gr
734c8
735 36 36 4987 615 FO
736 36 36 5415 615 FO
737gs 4880 492 1240 370 rc
738
739gr
7400 sg
7415683 782 mt
742(Xdelta) s
743gs 4880 492 1240 370 rc
744
745gr
7460 -58 -58 0 0 58 58 0 4958 709 5 MP
747c9
748DP
7490 -58 -58 0 0 58 58 0 5386 709 5 MP
750DP
751gs 4880 492 1240 370 rc
752
753gr
754
755end
756
757eplot
758%%EndObject graph 1
759
760epage
761end
762
763showpage
764
765%%Trailer
766%%EOF
diff --git a/xdelta1/doc/old/dcc99/figs/dependency.eps b/xdelta1/doc/old/dcc99/figs/dependency.eps
new file mode 100755
index 0000000..7a04029
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/figs/dependency.eps
@@ -0,0 +1,463 @@
1%!PS-Adobe-2.0 EPSF-2.0
2%%Title: dependency.fig
3%%Creator: fig2dev Version 3.1 Patchlevel 2
4%%CreationDate: Sun Nov 8 19:15:14 1998
5%%For: jmacd@axis.hip.berkeley.edu (Josh)
6%%Orientation: Portrait
7%%BoundingBox: 0 0 282 272
8%%Pages: 0
9%%BeginSetup
10%%IncludeFeature: *PageSize Letter
11%%EndSetup
12%Magnification: 1.00
13%%EndComments
14/$F2psDict 200 dict def
15$F2psDict begin
16$F2psDict /mtrx matrix put
17/col-1 {0 setgray} bind def
18/col0 {0.000 0.000 0.000 srgb} bind def
19/col1 {0.000 0.000 1.000 srgb} bind def
20/col2 {0.000 1.000 0.000 srgb} bind def
21/col3 {0.000 1.000 1.000 srgb} bind def
22/col4 {1.000 0.000 0.000 srgb} bind def
23/col5 {1.000 0.000 1.000 srgb} bind def
24/col6 {1.000 1.000 0.000 srgb} bind def
25/col7 {1.000 1.000 1.000 srgb} bind def
26/col8 {0.000 0.000 0.560 srgb} bind def
27/col9 {0.000 0.000 0.690 srgb} bind def
28/col10 {0.000 0.000 0.820 srgb} bind def
29/col11 {0.530 0.810 1.000 srgb} bind def
30/col12 {0.000 0.560 0.000 srgb} bind def
31/col13 {0.000 0.690 0.000 srgb} bind def
32/col14 {0.000 0.820 0.000 srgb} bind def
33/col15 {0.000 0.560 0.560 srgb} bind def
34/col16 {0.000 0.690 0.690 srgb} bind def
35/col17 {0.000 0.820 0.820 srgb} bind def
36/col18 {0.560 0.000 0.000 srgb} bind def
37/col19 {0.690 0.000 0.000 srgb} bind def
38/col20 {0.820 0.000 0.000 srgb} bind def
39/col21 {0.560 0.000 0.560 srgb} bind def
40/col22 {0.690 0.000 0.690 srgb} bind def
41/col23 {0.820 0.000 0.820 srgb} bind def
42/col24 {0.500 0.190 0.000 srgb} bind def
43/col25 {0.630 0.250 0.000 srgb} bind def
44/col26 {0.750 0.380 0.000 srgb} bind def
45/col27 {1.000 0.500 0.500 srgb} bind def
46/col28 {1.000 0.630 0.630 srgb} bind def
47/col29 {1.000 0.750 0.750 srgb} bind def
48/col30 {1.000 0.880 0.880 srgb} bind def
49/col31 {1.000 0.840 0.000 srgb} bind def
50
51end
52save
530.0 271.0 translate
541 -1 scale
55
56/cp {closepath} bind def
57/ef {eofill} bind def
58/gr {grestore} bind def
59/gs {gsave} bind def
60/sa {save} bind def
61/rs {restore} bind def
62/l {lineto} bind def
63/m {moveto} bind def
64/rm {rmoveto} bind def
65/n {newpath} bind def
66/s {stroke} bind def
67/sh {show} bind def
68/slc {setlinecap} bind def
69/slj {setlinejoin} bind def
70/slw {setlinewidth} bind def
71/srgb {setrgbcolor} bind def
72/rot {rotate} bind def
73/sc {scale} bind def
74/sd {setdash} bind def
75/ff {findfont} bind def
76/sf {setfont} bind def
77/scf {scalefont} bind def
78/sw {stringwidth} bind def
79/tr {translate} bind def
80/tnt {dup dup currentrgbcolor
81 4 -2 roll dup 1 exch sub 3 -1 roll mul add
82 4 -2 roll dup 1 exch sub 3 -1 roll mul add
83 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
84 bind def
85/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
86 4 -2 roll mul srgb} bind def
87 /DrawEllipse {
88 /endangle exch def
89 /startangle exch def
90 /yrad exch def
91 /xrad exch def
92 /y exch def
93 /x exch def
94 /savematrix mtrx currentmatrix def
95 x y tr xrad yrad sc 0 0 1 startangle endangle arc
96 closepath
97 savematrix setmatrix
98 } def
99
100/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
101/$F2psEnd {$F2psEnteredState restore end} def
102%%EndProlog
103
104$F2psBegin
10510 setmiterlimit
106n 0 792 m 0 0 l 612 0 l 612 792 l cp clip
107 0.06000 0.06000 sc
108/Times-Roman ff 165.00 scf sf
109286 4486 m
110gs 1 -1 sc (contents) col-1 sh gr
1117.500 slw
112% Polyline
113gs clippath
1142888 314 m 2983 235 l 2936 350 l 3033 220 l 2985 184 l cp clip
115n 2143 1357 m 3000 214 l gs col7 0.75 shd ef gr gs col-1 s gr gr
116
117% arrowhead
118n 2888 314 m 2983 235 l 2936 350 l 2912 332 l 2888 314 l cp gs 0.00 setgray ef gr col-1 s
119% Polyline
120gs clippath
1212867 279 m 2983 236 l 2900 329 l 3035 239 l 3002 189 l cp clip
122n 2148 794 m 3006 222 l gs col7 0.75 shd ef gr gs col-1 s gr gr
123
124% arrowhead
125n 2867 279 m 2983 236 l 2900 329 l 2884 304 l 2867 279 l cp gs 0.00 setgray ef gr col-1 s
126% Polyline
127gs clippath
1282935 349 m 2993 240 l 2993 364 l 3033 207 l 2975 192 l cp clip
129n 2143 3643 m 3000 214 l gs col7 0.75 shd ef gr gs col-1 s gr gr
130
131% arrowhead
132n 2935 349 m 2993 240 l 2993 364 l 2964 357 l 2935 349 l cp gs 0.00 setgray ef gr col-1 s
133% Polyline
134gs clippath
1352929 346 m 2992 239 l 2986 363 l 3033 208 l 2976 191 l cp clip
136n 2143 3071 m 3000 214 l gs col7 0.75 shd ef gr gs col-1 s gr gr
137
138% arrowhead
139n 2929 346 m 2992 239 l 2986 363 l 2958 355 l 2929 346 l cp gs 0.00 setgray ef gr col-1 s
140% Polyline
141gs clippath
1422920 341 m 2990 239 l 2976 362 l 3033 210 l 2977 189 l cp clip
143n 2143 2500 m 3000 214 l gs col7 0.75 shd ef gr gs col-1 s gr gr
144
145% arrowhead
146n 2920 341 m 2990 239 l 2976 362 l 2948 352 l 2920 341 l cp gs 0.00 setgray ef gr col-1 s
147% Polyline
148gs clippath
1492853 2470 m 2973 2500 l 2853 2530 l 3015 2530 l 3015 2470 l cp clip
150n 2143 2500 m 3000 2500 l gs col7 0.75 shd ef gr gs col-1 s gr gr
151
152% arrowhead
153n 2853 2470 m 2973 2500 l 2853 2530 l 2853 2500 l 2853 2470 l cp gs 0.00 setgray ef gr col-1 s
154% Polyline
155gs clippath
1562888 2600 m 2983 2521 l 2936 2636 l 3033 2506 l 2985 2470 l cp clip
157n 2143 3643 m 3000 2500 l gs col7 0.75 shd ef gr gs col-1 s gr gr
158
159% arrowhead
160n 2888 2600 m 2983 2521 l 2936 2636 l 2912 2618 l 2888 2600 l cp gs 0.00 setgray ef gr col-1 s
161% Polyline
162gs clippath
1632867 2565 m 2983 2522 l 2900 2615 l 3035 2525 l 3002 2475 l cp clip
164n 2148 3080 m 3006 2508 l gs col7 0.75 shd ef gr gs col-1 s gr gr
165
166% arrowhead
167n 2867 2565 m 2983 2522 l 2900 2615 l 2884 2590 l 2867 2565 l cp gs 0.00 setgray ef gr col-1 s
168% Polyline
169gs clippath
1702853 756 m 2973 786 l 2853 816 l 3015 816 l 3015 756 l cp clip
171n 2143 786 m 3000 786 l gs col7 0.75 shd ef gr gs col-1 s gr gr
172
173% arrowhead
174n 2853 756 m 2973 786 l 2853 816 l 2853 786 l 2853 756 l cp gs 0.00 setgray ef gr col-1 s
175% Polyline
176gs clippath
1772867 850 m 2983 808 l 2900 900 l 3035 811 l 3002 761 l cp clip
178n 2148 1365 m 3006 794 l gs col7 0.75 shd ef gr gs col-1 s gr gr
179
180% arrowhead
181n 2867 850 m 2983 808 l 2900 900 l 2884 875 l 2867 850 l cp gs 0.00 setgray ef gr col-1 s
182% Polyline
183gs clippath
1842929 918 m 2992 811 l 2986 935 l 3033 780 l 2976 763 l cp clip
185n 2143 3643 m 3000 786 l gs col7 0.75 shd ef gr gs col-1 s gr gr
186
187% arrowhead
188n 2929 918 m 2992 811 l 2986 935 l 2958 927 l 2929 918 l cp gs 0.00 setgray ef gr col-1 s
189% Polyline
190gs clippath
1912920 913 m 2990 811 l 2976 934 l 3033 782 l 2977 761 l cp clip
192n 2143 3071 m 3000 786 l gs col7 0.75 shd ef gr gs col-1 s gr gr
193
194% arrowhead
195n 2920 913 m 2990 811 l 2976 934 l 2948 924 l 2920 913 l cp gs 0.00 setgray ef gr col-1 s
196% Polyline
197gs clippath
1982853 1327 m 2973 1357 l 2853 1387 l 3015 1387 l 3015 1327 l cp clip
199n 2143 1357 m 3000 1357 l gs col7 0.75 shd ef gr gs col-1 s gr gr
200
201% arrowhead
202n 2853 1327 m 2973 1357 l 2853 1387 l 2853 1357 l 2853 1327 l cp gs 0.00 setgray ef gr col-1 s
203% Polyline
204gs clippath
2052888 1457 m 2983 1378 l 2936 1493 l 3033 1363 l 2985 1327 l cp clip
206n 2143 2500 m 3000 1357 l gs col7 0.75 shd ef gr gs col-1 s gr gr
207
208% arrowhead
209n 2888 1457 m 2983 1378 l 2936 1493 l 2912 1475 l 2888 1457 l cp gs 0.00 setgray ef gr col-1 s
210% Polyline
211gs clippath
2122920 1484 m 2990 1382 l 2976 1505 l 3033 1353 l 2977 1332 l cp clip
213n 2143 3643 m 3000 1357 l gs col7 0.75 shd ef gr gs col-1 s gr gr
214
215% arrowhead
216n 2920 1484 m 2990 1382 l 2976 1505 l 2948 1495 l 2920 1484 l cp gs 0.00 setgray ef gr col-1 s
217% Polyline
218gs clippath
2192853 3041 m 2973 3071 l 2853 3101 l 3015 3101 l 3015 3041 l cp clip
220n 2143 3071 m 3000 3071 l gs col7 0.75 shd ef gr gs col-1 s gr gr
221
222% arrowhead
223n 2853 3041 m 2973 3071 l 2853 3101 l 2853 3071 l 2853 3041 l cp gs 0.00 setgray ef gr col-1 s
224% Polyline
225gs clippath
2262867 3136 m 2983 3094 l 2900 3186 l 3035 3097 l 3002 3047 l cp clip
227n 2148 3651 m 3006 3080 l gs col7 0.75 shd ef gr gs col-1 s gr gr
228
229% arrowhead
230n 2867 3136 m 2983 3094 l 2900 3186 l 2884 3161 l 2867 3136 l cp gs 0.00 setgray ef gr col-1 s
231% Polyline
232gs clippath
2332853 3613 m 2973 3643 l 2853 3673 l 3015 3673 l 3015 3613 l cp clip
234n 2143 3643 m 3000 3643 l gs col7 0.75 shd ef gr gs col-1 s gr gr
235
236% arrowhead
237n 2853 3613 m 2973 3643 l 2853 3673 l 2853 3643 l 2853 3613 l cp gs 0.00 setgray ef gr col-1 s
238% Ellipse
239n 2071 214 80 80 0 360 DrawEllipse gs col-1 s gr
240
241% Ellipse
242n 2071 786 80 80 0 360 DrawEllipse gs col-1 s gr
243
244% Ellipse
245n 2071 1357 80 80 0 360 DrawEllipse gs col-1 s gr
246
247% Ellipse
248n 2071 2500 80 80 0 360 DrawEllipse gs col-1 s gr
249
250% Ellipse
251n 2071 3071 80 80 0 360 DrawEllipse gs col-1 s gr
252
253% Ellipse
254n 2071 3643 80 80 0 360 DrawEllipse gs col-1 s gr
255
256% Polyline
257n 286 143 m 1143 143 l 1143 286 l 286 286 l cp gs col-1 s gr
258% Polyline
259n 286 714 m 1143 714 l 1143 857 l 286 857 l cp gs col-1 s gr
260% Polyline
261n 286 1286 m 1143 1286 l 1143 1429 l 286 1429 l cp gs col-1 s gr
262% Polyline
263n 286 2429 m 1143 2429 l 1143 2571 l 286 2571 l cp gs col-1 s gr
264% Polyline
265n 286 3000 m 1143 3000 l 1143 3143 l 286 3143 l cp gs col-1 s gr
266% Polyline
267n 286 3571 m 1143 3571 l 1143 3714 l 286 3714 l cp gs col-1 s gr
268% Polyline
269n 3000 143 m 3428 143 l 3428 286 l 3000 286 l cp gs col7 0.75 shd ef gr gs col-1 s gr
270% Polyline
271n 3000 714 m 3428 714 l 3428 857 l 3000 857 l cp gs col7 0.75 shd ef gr gs col-1 s gr
272% Polyline
273n 3000 1286 m 3428 1286 l 3428 1429 l 3000 1429 l cp gs col7 0.75 shd ef gr gs col-1 s gr
274% Polyline
275n 3000 2429 m 3428 2429 l 3428 2571 l 3000 2571 l cp gs col7 0.75 shd ef gr gs col-1 s gr
276% Polyline
277n 3000 3000 m 3428 3000 l 3428 3143 l 3000 3143 l cp gs col7 0.75 shd ef gr gs col-1 s gr
278% Polyline
279n 3000 3571 m 3428 3571 l 3428 3714 l 3000 3714 l cp gs col7 0.75 shd ef gr gs col-1 s gr
280% Polyline
281gs clippath
2821282 729 m 1165 771 l 1249 679 l 1114 769 l 1147 819 l cp clip
283n 2000 214 m 1143 786 l gs col7 0.75 shd ef gr gs col-1 s gr gr
284
285% arrowhead
286n 1282 729 m 1165 771 l 1249 679 l 1265 704 l 1282 729 l cp gs 0.00 setgray ef gr col-1 s
287% Polyline
288gs clippath
2891282 1300 m 1165 1342 l 1249 1251 l 1114 1340 l 1147 1390 l cp clip
290n 2000 786 m 1143 1357 l gs col7 0.75 shd ef gr gs col-1 s gr gr
291
292% arrowhead
293n 1282 1300 m 1165 1342 l 1249 1251 l 1265 1275 l 1282 1300 l cp gs 0.00 setgray ef gr col-1 s
294% Polyline
295gs clippath
2961282 1872 m 1165 1914 l 1249 1822 l 1114 1912 l 1147 1962 l cp clip
297n 2000 1357 m 1143 1929 l gs col7 0.75 shd ef gr gs col-1 s gr gr
298
299% arrowhead
300n 1282 1872 m 1165 1914 l 1249 1822 l 1265 1847 l 1282 1872 l cp gs 0.00 setgray ef gr col-1 s
301% Polyline
302gs clippath
3031249 2035 m 1165 1943 l 1282 1986 l 1147 1896 l 1114 1946 l cp clip
304n 2000 2500 m 1143 1929 l gs col7 0.75 shd ef gr gs col-1 s gr gr
305
306% arrowhead
307n 1249 2035 m 1165 1943 l 1282 1986 l 1265 2011 l 1249 2035 l cp gs 0.00 setgray ef gr col-1 s
308% Polyline
309gs clippath
3101207 2065 m 1159 1950 l 1255 2029 l 1158 1899 l 1110 1935 l cp clip
311n 2000 3071 m 1143 1929 l gs col7 0.75 shd ef gr gs col-1 s gr gr
312
313% arrowhead
314n 1207 2065 m 1159 1950 l 1255 2029 l 1231 2047 l 1207 2065 l cp gs 0.00 setgray ef gr col-1 s
315% Polyline
316gs clippath
3171182 2074 m 1155 1953 l 1236 2047 l 1163 1902 l 1109 1929 l cp clip
318n 2000 3643 m 1143 1929 l gs col7 0.75 shd ef gr gs col-1 s gr gr
319
320% arrowhead
321n 1182 2074 m 1155 1953 l 1236 2047 l 1209 2060 l 1182 2074 l cp gs 0.00 setgray ef gr col-1 s
322% Polyline
323n 286 1857 m 1143 1857 l 1143 2000 l 286 2000 l cp gs col7 0.75 shd ef gr gs col-1 s gr
324% Polyline
325gs clippath
3264291 1147 m 4321 1027 l 4351 1147 l 4351 985 l 4291 985 l cp clip
327n 4321 1286 m 4321 1000 l gs col7 0.75 shd ef gr gs col-1 s gr gr
328
329% arrowhead
330n 4291 1147 m 4321 1027 l 4351 1147 l 4321 1147 l 4291 1147 l cp gs 0.00 setgray ef gr col-1 s
331% Polyline
332gs clippath
3334351 2746 m 4321 2866 l 4291 2746 l 4291 2908 l 4351 2908 l cp clip
334n 4321 2893 m 4321 2607 l gs col7 0.75 shd ef gr gs col-1 s gr gr
335
336% arrowhead
337n 4351 2746 m 4321 2866 l 4291 2746 l 4321 2746 l 4351 2746 l cp gs 0.00 setgray ef gr col-1 s
338/Times-Roman ff 165.00 scf sf
3394143 1429 m
340gs 1 -1 sc (reverse) col-1 sh gr
341/Times-Roman ff 165.00 scf sf
3424143 2571 m
343gs 1 -1 sc (forward) col-1 sh gr
344/Times-Roman ff 165.00 scf sf
3454143 2000 m
346gs 1 -1 sc (literal) col-1 sh gr
347% Polyline
348n 1902 0 m 1857 0 1857 384 45 arcto 4 {pop} repeat
349 1857 429 3526 429 45 arcto 4 {pop} repeat
350 3571 429 3571 45 45 arcto 4 {pop} repeat
351 3571 0 1902 0 45 arcto 4 {pop} repeat
352 cp gs col-1 s gr
353% Polyline
354n 1902 571 m 1857 571 1857 955 45 arcto 4 {pop} repeat
355 1857 1000 3526 1000 45 arcto 4 {pop} repeat
356 3571 1000 3571 616 45 arcto 4 {pop} repeat
357 3571 571 1902 571 45 arcto 4 {pop} repeat
358 cp gs col-1 s gr
359% Polyline
360n 1902 1143 m 1857 1143 1857 1526 45 arcto 4 {pop} repeat
361 1857 1571 3526 1571 45 arcto 4 {pop} repeat
362 3571 1571 3571 1188 45 arcto 4 {pop} repeat
363 3571 1143 1902 1143 45 arcto 4 {pop} repeat
364 cp gs col-1 s gr
365% Polyline
366n 1902 2286 m 1857 2286 1857 2669 45 arcto 4 {pop} repeat
367 1857 2714 3526 2714 45 arcto 4 {pop} repeat
368 3571 2714 3571 2331 45 arcto 4 {pop} repeat
369 3571 2286 1902 2286 45 arcto 4 {pop} repeat
370 cp gs col-1 s gr
371% Polyline
372n 1902 2857 m 1857 2857 1857 3241 45 arcto 4 {pop} repeat
373 1857 3286 3526 3286 45 arcto 4 {pop} repeat
374 3571 3286 3571 2902 45 arcto 4 {pop} repeat
375 3571 2857 1902 2857 45 arcto 4 {pop} repeat
376 cp gs col-1 s gr
377% Polyline
378n 1902 3429 m 1857 3429 1857 3812 45 arcto 4 {pop} repeat
379 1857 3857 3526 3857 45 arcto 4 {pop} repeat
380 3571 3857 3571 3474 45 arcto 4 {pop} repeat
381 3571 3429 1902 3429 45 arcto 4 {pop} repeat
382 cp gs col-1 s gr
383/Times-Roman ff 165.00 scf sf
3840 286 m
385gs 1 -1 sc (F1) col-1 sh gr
386/Times-Roman ff 165.00 scf sf
3870 857 m
388gs 1 -1 sc (F2) col-1 sh gr
389/Times-Roman ff 165.00 scf sf
3900 1429 m
391gs 1 -1 sc (F3) col-1 sh gr
392/Times-Roman ff 165.00 scf sf
3930 2000 m
394gs 1 -1 sc (F4) col-1 sh gr
395/Times-Roman ff 165.00 scf sf
3960 2571 m
397gs 1 -1 sc (F5) col-1 sh gr
398/Times-Roman ff 165.00 scf sf
3990 3143 m
400gs 1 -1 sc (F6) col-1 sh gr
401/Times-Roman ff 165.00 scf sf
4020 3714 m
403gs 1 -1 sc (F7) col-1 sh gr
404/Times-Roman ff 165.00 scf sf
4053714 286 m
406gs 1 -1 sc (D1) col-1 sh gr
407/Times-Roman ff 165.00 scf sf
4083714 857 m
409gs 1 -1 sc (D2) col-1 sh gr
410/Times-Roman ff 165.00 scf sf
4113714 1429 m
412gs 1 -1 sc (D3) col-1 sh gr
413/Times-Roman ff 165.00 scf sf
4143714 2571 m
415gs 1 -1 sc (D5) col-1 sh gr
416/Times-Roman ff 165.00 scf sf
4173714 3143 m
418gs 1 -1 sc (D6) col-1 sh gr
419/Times-Roman ff 165.00 scf sf
4203714 3714 m
421gs 1 -1 sc (D7) col-1 sh gr
422% Polyline
423gs clippath
4242041 3861 m 2071 3741 l 2101 3861 l 2101 3699 l 2041 3699 l cp clip
425n 2071 4143 m 2071 3714 l gs col-1 s gr gr
426
427% arrowhead
428n 2041 3861 m 2071 3741 l 2101 3861 l 2071 3861 l 2041 3861 l cp gs 0.00 setgray ef gr col-1 s
429% Polyline
430gs clippath
4313041 3861 m 3071 3741 l 3101 3861 l 3101 3699 l 3041 3699 l cp clip
432n 3071 4143 m 3071 3714 l gs col-1 s gr gr
433
434% arrowhead
435n 3041 3861 m 3071 3741 l 3101 3861 l 3071 3861 l 3041 3861 l cp gs 0.00 setgray ef gr col-1 s
436% Polyline
437gs clippath
438327 3861 m 357 3741 l 387 3861 l 387 3699 l 327 3699 l cp clip
439n 357 4143 m 357 3714 l gs col-1 s gr gr
440
441% arrowhead
442n 327 3861 m 357 3741 l 387 3861 l 357 3861 l 327 3861 l cp gs 0.00 setgray ef gr col-1 s
443/Times-Roman ff 165.00 scf sf
4442000 4286 m
445gs 1 -1 sc (control) col-1 sh gr
446/Times-Roman ff 165.00 scf sf
4473000 4486 m
448gs 1 -1 sc (data) col-1 sh gr
449/Times-Roman ff 165.00 scf sf
4503000 4286 m
451gs 1 -1 sc (insert) col-1 sh gr
452/Times-Roman ff 165.00 scf sf
453286 4286 m
454gs 1 -1 sc (version) col-1 sh gr
455% Polyline
456gs clippath
4572853 184 m 2973 214 l 2853 244 l 3015 244 l 3015 184 l cp clip
458n 2143 214 m 3000 214 l gs col7 0.75 shd ef gr gs col-1 s gr gr
459
460% arrowhead
461n 2853 184 m 2973 214 l 2853 244 l 2853 214 l 2853 184 l cp gs 0.00 setgray ef gr col-1 s
462$F2psEnd
463rs
diff --git a/xdelta1/doc/old/dcc99/figs/dependency.fig b/xdelta1/doc/old/dcc99/figs/dependency.fig
new file mode 100755
index 0000000..eaf2e6f
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/figs/dependency.fig
@@ -0,0 +1,174 @@
1#FIG 3.1
2Portrait
3Center
4Inches
51200 2
66 0 0 4714 4500
76 0 0 4714 3857
86 286 0 3428 3857
96 2143 179 3036 3679
106 2143 179 3036 3643
112 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
12 1 1 1.00 60.00 120.00
13 2143 214 3000 214
142 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
15 1 1 1.00 60.00 120.00
16 2143 1357 3000 214
172 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
18 1 1 1.00 60.00 120.00
19 2148 794 3006 222
202 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
21 1 1 1.00 60.00 120.00
22 2143 3643 3000 214
232 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
24 1 1 1.00 60.00 120.00
25 2143 3071 3000 214
262 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
27 1 1 1.00 60.00 120.00
28 2143 2500 3000 214
29-6
306 2143 2464 3036 3643
312 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
32 1 1 1.00 60.00 120.00
33 2143 2500 3000 2500
342 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
35 1 1 1.00 60.00 120.00
36 2143 3643 3000 2500
372 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
38 1 1 1.00 60.00 120.00
39 2148 3080 3006 2508
40-6
412 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
42 1 1 1.00 60.00 120.00
43 2143 786 3000 786
442 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
45 1 1 1.00 60.00 120.00
46 2148 1365 3006 794
472 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
48 1 1 1.00 60.00 120.00
49 2143 3643 3000 786
502 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
51 1 1 1.00 60.00 120.00
52 2143 3071 3000 786
532 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
54 1 1 1.00 60.00 120.00
55 2143 1357 3000 1357
562 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
57 1 1 1.00 60.00 120.00
58 2143 2500 3000 1357
592 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
60 1 1 1.00 60.00 120.00
61 2143 3643 3000 1357
622 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
63 1 1 1.00 60.00 120.00
64 2143 3071 3000 3071
652 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
66 1 1 1.00 60.00 120.00
67 2148 3651 3006 3080
682 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
69 1 1 1.00 60.00 120.00
70 2143 3643 3000 3643
71-6
721 3 0 1 -1 7 0 0 -1 0.000 1 0.0000 2071 214 80 80 2071 214 2107 286
731 3 0 1 -1 7 0 0 -1 0.000 1 0.0000 2071 786 80 80 2071 786 2107 857
741 3 0 1 -1 7 0 0 -1 0.000 1 0.0000 2071 1357 80 80 2071 1357 2107 1429
751 3 0 1 -1 7 0 0 -1 0.000 1 0.0000 2071 2500 80 80 2071 2500 2107 2571
761 3 0 1 -1 7 0 0 -1 0.000 1 0.0000 2071 3071 80 80 2071 3071 2107 3143
771 3 0 1 -1 7 0 0 -1 0.000 1 0.0000 2071 3643 80 80 2071 3643 2107 3714
782 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
79 286 143 1143 143 1143 286 286 286 286 143
802 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
81 286 714 1143 714 1143 857 286 857 286 714
822 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
83 286 1286 1143 1286 1143 1429 286 1429 286 1286
842 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
85 286 2429 1143 2429 1143 2571 286 2571 286 2429
862 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
87 286 3000 1143 3000 1143 3143 286 3143 286 3000
882 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
89 286 3571 1143 3571 1143 3714 286 3714 286 3571
902 2 0 1 -1 7 0 0 15 0.000 0 0 -1 0 0 5
91 3000 143 3428 143 3428 286 3000 286 3000 143
922 2 0 1 -1 7 0 0 15 0.000 0 0 -1 0 0 5
93 3000 714 3428 714 3428 857 3000 857 3000 714
942 2 0 1 -1 7 0 0 15 0.000 0 0 -1 0 0 5
95 3000 1286 3428 1286 3428 1429 3000 1429 3000 1286
962 2 0 1 -1 7 0 0 15 0.000 0 0 -1 0 0 5
97 3000 2429 3428 2429 3428 2571 3000 2571 3000 2429
982 2 0 1 -1 7 0 0 15 0.000 0 0 -1 0 0 5
99 3000 3000 3428 3000 3428 3143 3000 3143 3000 3000
1002 2 0 1 -1 7 0 0 15 0.000 0 0 -1 0 0 5
101 3000 3571 3428 3571 3428 3714 3000 3714 3000 3571
1022 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
103 1 1 1.00 60.00 120.00
104 2000 214 1143 786
1052 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
106 1 1 1.00 60.00 120.00
107 2000 786 1143 1357
1082 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
109 1 1 1.00 60.00 120.00
110 2000 1357 1143 1929
1112 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
112 1 1 1.00 60.00 120.00
113 2000 2500 1143 1929
1142 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
115 1 1 1.00 60.00 120.00
116 2000 3071 1143 1929
1172 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
118 1 1 1.00 60.00 120.00
119 2000 3643 1143 1929
1202 2 0 1 -1 7 0 0 15 0.000 0 0 -1 0 0 5
121 286 1857 1143 1857 1143 2000 286 2000 286 1857
122-6
1236 4143 857 4714 3000
1242 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
125 1 1 1.00 60.00 120.00
126 4321 1286 4321 1000
1272 1 0 1 -1 7 0 0 15 0.000 0 0 -1 0 1 2
128 1 1 1.00 60.00 120.00
129 4321 2893 4321 2607
1304 0 -1 0 0 0 11 0.0000 0 86 500 4143 1429 reverse\001
1314 0 -1 0 0 0 11 0.0000 0 121 536 4143 2571 forward\001
1324 0 -1 0 0 0 11 0.0000 0 121 393 4143 2000 literal\001
133-6
1342 4 0 1 -1 7 0 0 -1 0.000 0 0 3 0 0 5
135 3571 429 3571 0 1857 0 1857 429 3571 429
1362 4 0 1 -1 7 0 0 -1 0.000 0 0 3 0 0 5
137 3571 1000 3571 571 1857 571 1857 1000 3571 1000
1382 4 0 1 -1 7 0 0 -1 0.000 0 0 3 0 0 5
139 3571 1571 3571 1143 1857 1143 1857 1571 3571 1571
1402 4 0 1 -1 7 0 0 -1 0.000 0 0 3 0 0 5
141 3571 2714 3571 2286 1857 2286 1857 2714 3571 2714
1422 4 0 1 -1 7 0 0 -1 0.000 0 0 3 0 0 5
143 3571 3286 3571 2857 1857 2857 1857 3286 3571 3286
1442 4 0 1 -1 7 0 0 -1 0.000 0 0 3 0 0 5
145 3571 3857 3571 3429 1857 3429 1857 3857 3571 3857
1464 0 -1 0 0 0 11 0.0000 0 121 186 0 286 F1\001
1474 0 -1 0 0 0 11 0.0000 0 121 186 0 857 F2\001
1484 0 -1 0 0 0 11 0.0000 0 121 186 0 1429 F3\001
1494 0 -1 0 0 0 11 0.0000 0 121 186 0 2000 F4\001
1504 0 -1 0 0 0 11 0.0000 0 121 186 0 2571 F5\001
1514 0 -1 0 0 0 11 0.0000 0 121 186 0 3143 F6\001
1524 0 -1 0 0 0 11 0.0000 0 121 186 0 3714 F7\001
1534 0 -1 0 0 0 11 0.0000 0 121 207 3714 286 D1\001
1544 0 -1 0 0 0 11 0.0000 0 121 207 3714 857 D2\001
1554 0 -1 0 0 0 11 0.0000 0 121 207 3714 1429 D3\001
1564 0 -1 0 0 0 11 0.0000 0 121 207 3714 2571 D5\001
1574 0 -1 0 0 0 11 0.0000 0 121 207 3714 3143 D6\001
1584 0 -1 0 0 0 11 0.0000 0 121 207 3714 3714 D7\001
159-6
1602 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
161 1 1 1.00 60.00 120.00
162 2071 4143 2071 3714
1632 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
164 1 1 1.00 60.00 120.00
165 3071 4143 3071 3714
1662 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
167 1 1 1.00 60.00 120.00
168 357 4143 357 3714
1694 0 -1 0 0 0 11 0.0000 0 121 493 2000 4286 control\001
1704 0 -1 0 0 0 11 0.0000 0 121 293 3000 4486 data\001
1714 0 -1 0 0 0 11 0.0000 0 121 393 3000 4286 insert\001
1724 0 -1 0 0 0 11 0.0000 0 121 507 286 4286 version\001
1734 0 -1 0 0 0 11 0.0000 0 107 600 286 4486 contents\001
174-6
diff --git a/xdelta1/doc/old/dcc99/figs/dependency.fig.normalsize b/xdelta1/doc/old/dcc99/figs/dependency.fig.normalsize
new file mode 100755
index 0000000..83ce9ea
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/figs/dependency.fig.normalsize
@@ -0,0 +1,174 @@
1#FIG 3.1
2Landscape
3Center
4Inches
51200 2
66 0 0 9900 9450
76 0 0 9900 8100
86 600 0 7200 8100
96 4500 375 6375 7725
106 4500 375 6375 7650
112 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
12 1 1 1.00 60.00 120.00
13 4500 450 6300 450
142 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
15 1 1 1.00 60.00 120.00
16 4500 2850 6300 450
172 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
18 1 1 1.00 60.00 120.00
19 4512 1667 6312 467
202 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
21 1 1 1.00 60.00 120.00
22 4500 7650 6300 450
232 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
24 1 1 1.00 60.00 120.00
25 4500 6450 6300 450
262 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
27 1 1 1.00 60.00 120.00
28 4500 5250 6300 450
29-6
306 4500 5175 6375 7650
312 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
32 1 1 1.00 60.00 120.00
33 4500 5250 6300 5250
342 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
35 1 1 1.00 60.00 120.00
36 4500 7650 6300 5250
372 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
38 1 1 1.00 60.00 120.00
39 4512 6467 6312 5267
40-6
412 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
42 1 1 1.00 60.00 120.00
43 4500 1650 6300 1650
442 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
45 1 1 1.00 60.00 120.00
46 4512 2867 6312 1667
472 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
48 1 1 1.00 60.00 120.00
49 4500 7650 6300 1650
502 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
51 1 1 1.00 60.00 120.00
52 4500 6450 6300 1650
532 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
54 1 1 1.00 60.00 120.00
55 4500 2850 6300 2850
562 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
57 1 1 1.00 60.00 120.00
58 4500 5250 6300 2850
592 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
60 1 1 1.00 60.00 120.00
61 4500 7650 6300 2850
622 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
63 1 1 1.00 60.00 120.00
64 4500 6450 6300 6450
652 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
66 1 1 1.00 60.00 120.00
67 4512 7667 6312 6467
682 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
69 1 1 1.00 60.00 120.00
70 4500 7650 6300 7650
71-6
721 3 0 1 -1 7 0 0 -1 0.000 1 0.0000 4350 450 168 168 4350 450 4425 600
731 3 0 1 -1 7 0 0 -1 0.000 1 0.0000 4350 1650 168 168 4350 1650 4425 1800
741 3 0 1 -1 7 0 0 -1 0.000 1 0.0000 4350 2850 168 168 4350 2850 4425 3000
751 3 0 1 -1 7 0 0 -1 0.000 1 0.0000 4350 5250 168 168 4350 5250 4425 5400
761 3 0 1 -1 7 0 0 -1 0.000 1 0.0000 4350 6450 168 168 4350 6450 4425 6600
771 3 0 1 -1 7 0 0 -1 0.000 1 0.0000 4350 7650 168 168 4350 7650 4425 7800
782 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
79 600 300 2400 300 2400 600 600 600 600 300
802 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
81 600 1500 2400 1500 2400 1800 600 1800 600 1500
822 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
83 600 2700 2400 2700 2400 3000 600 3000 600 2700
842 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
85 600 5100 2400 5100 2400 5400 600 5400 600 5100
862 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
87 600 6300 2400 6300 2400 6600 600 6600 600 6300
882 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
89 600 7500 2400 7500 2400 7800 600 7800 600 7500
902 2 0 1 -1 7 0 0 15 0.000 0 0 -1 0 0 5
91 6300 300 7200 300 7200 600 6300 600 6300 300
922 2 0 1 -1 7 0 0 15 0.000 0 0 -1 0 0 5
93 6300 1500 7200 1500 7200 1800 6300 1800 6300 1500
942 2 0 1 -1 7 0 0 15 0.000 0 0 -1 0 0 5
95 6300 2700 7200 2700 7200 3000 6300 3000 6300 2700
962 2 0 1 -1 7 0 0 15 0.000 0 0 -1 0 0 5
97 6300 5100 7200 5100 7200 5400 6300 5400 6300 5100
982 2 0 1 -1 7 0 0 15 0.000 0 0 -1 0 0 5
99 6300 6300 7200 6300 7200 6600 6300 6600 6300 6300
1002 2 0 1 -1 7 0 0 15 0.000 0 0 -1 0 0 5
101 6300 7500 7200 7500 7200 7800 6300 7800 6300 7500
1022 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
103 1 1 1.00 60.00 120.00
104 4200 450 2400 1650
1052 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
106 1 1 1.00 60.00 120.00
107 4200 1650 2400 2850
1082 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
109 1 1 1.00 60.00 120.00
110 4200 2850 2400 4050
1112 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
112 1 1 1.00 60.00 120.00
113 4200 5250 2400 4050
1142 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
115 1 1 1.00 60.00 120.00
116 4200 6450 2400 4050
1172 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
118 1 1 1.00 60.00 120.00
119 4200 7650 2400 4050
1202 2 0 1 -1 7 0 0 15 0.000 0 0 -1 0 0 5
121 600 3900 2400 3900 2400 4200 600 4200 600 3900
122-6
1236 8700 1800 9900 6300
1242 1 0 1 -1 7 0 0 15 0.000 0 0 -1 1 0 2
125 1 1 1.00 60.00 120.00
126 9075 2700 9075 2100
1272 1 0 1 -1 7 0 0 15 0.000 0 0 -1 0 1 2
128 1 1 1.00 60.00 120.00
129 9075 6075 9075 5475
1304 0 -1 0 0 0 24 0.0000 0 180 1050 8700 3000 reverse\001
1314 0 -1 0 0 0 24 0.0000 0 255 1125 8700 5400 forward\001
1324 0 -1 0 0 0 24 0.0000 0 255 825 8700 4200 literal\001
133-6
1342 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5
135 7500 900 7500 0 3900 0 3900 900 7500 900
1362 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5
137 7500 2100 7500 1200 3900 1200 3900 2100 7500 2100
1382 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5
139 7500 3300 7500 2400 3900 2400 3900 3300 7500 3300
1402 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5
141 7500 5700 7500 4800 3900 4800 3900 5700 7500 5700
1422 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5
143 7500 6900 7500 6000 3900 6000 3900 6900 7500 6900
1442 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5
145 7500 8100 7500 7200 3900 7200 3900 8100 7500 8100
1464 0 -1 0 0 0 24 0.0000 0 255 390 0 600 F1\001
1474 0 -1 0 0 0 24 0.0000 0 255 390 0 1800 F2\001
1484 0 -1 0 0 0 24 0.0000 0 255 390 0 3000 F3\001
1494 0 -1 0 0 0 24 0.0000 0 255 390 0 4200 F4\001
1504 0 -1 0 0 0 24 0.0000 0 255 390 0 5400 F5\001
1514 0 -1 0 0 0 24 0.0000 0 255 390 0 6600 F6\001
1524 0 -1 0 0 0 24 0.0000 0 255 390 0 7800 F7\001
1534 0 -1 0 0 0 24 0.0000 0 255 435 7800 600 D1\001
1544 0 -1 0 0 0 24 0.0000 0 255 435 7800 1800 D2\001
1554 0 -1 0 0 0 24 0.0000 0 255 435 7800 3000 D3\001
1564 0 -1 0 0 0 24 0.0000 0 255 435 7800 5400 D5\001
1574 0 -1 0 0 0 24 0.0000 0 255 435 7800 6600 D6\001
1584 0 -1 0 0 0 24 0.0000 0 255 435 7800 7800 D7\001
159-6
1602 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
161 1 1 1.00 60.00 120.00
162 4350 8700 4350 7800
1632 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
164 1 1 1.00 60.00 120.00
165 6450 8700 6450 7800
1662 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
167 1 1 1.00 60.00 120.00
168 750 8700 750 7800
1694 0 -1 0 0 0 24 0.0000 0 255 1035 4200 9000 control\001
1704 0 -1 0 0 0 24 0.0000 0 255 615 6300 9420 data\001
1714 0 -1 0 0 0 24 0.0000 0 255 825 6300 9000 insert\001
1724 0 -1 0 0 0 24 0.0000 0 255 1065 600 9000 version\001
1734 0 -1 0 0 0 24 0.0000 0 225 1260 600 9420 contents\001
174-6
diff --git a/xdelta1/doc/old/dcc99/figs/jumping.eps b/xdelta1/doc/old/dcc99/figs/jumping.eps
new file mode 100755
index 0000000..f3e3715
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/figs/jumping.eps
@@ -0,0 +1,154 @@
1%!PS-Adobe-2.0 EPSF-2.0
2%%Title: jumping.fig
3%%Creator: fig2dev Version 3.1 Patchlevel 2
4%%CreationDate: Sun Nov 8 08:25:36 1998
5%%For: jmacd@axis.hip.berkeley.edu (Josh)
6%%Orientation: Portrait
7%%BoundingBox: 0 0 194 30
8%%Pages: 0
9%%BeginSetup
10%%IncludeFeature: *PageSize Letter
11%%EndSetup
12%Magnification: 1.00
13%%EndComments
14/$F2psDict 200 dict def
15$F2psDict begin
16$F2psDict /mtrx matrix put
17/col-1 {0 setgray} bind def
18/col0 {0.000 0.000 0.000 srgb} bind def
19/col1 {0.000 0.000 1.000 srgb} bind def
20/col2 {0.000 1.000 0.000 srgb} bind def
21/col3 {0.000 1.000 1.000 srgb} bind def
22/col4 {1.000 0.000 0.000 srgb} bind def
23/col5 {1.000 0.000 1.000 srgb} bind def
24/col6 {1.000 1.000 0.000 srgb} bind def
25/col7 {1.000 1.000 1.000 srgb} bind def
26/col8 {0.000 0.000 0.560 srgb} bind def
27/col9 {0.000 0.000 0.690 srgb} bind def
28/col10 {0.000 0.000 0.820 srgb} bind def
29/col11 {0.530 0.810 1.000 srgb} bind def
30/col12 {0.000 0.560 0.000 srgb} bind def
31/col13 {0.000 0.690 0.000 srgb} bind def
32/col14 {0.000 0.820 0.000 srgb} bind def
33/col15 {0.000 0.560 0.560 srgb} bind def
34/col16 {0.000 0.690 0.690 srgb} bind def
35/col17 {0.000 0.820 0.820 srgb} bind def
36/col18 {0.560 0.000 0.000 srgb} bind def
37/col19 {0.690 0.000 0.000 srgb} bind def
38/col20 {0.820 0.000 0.000 srgb} bind def
39/col21 {0.560 0.000 0.560 srgb} bind def
40/col22 {0.690 0.000 0.690 srgb} bind def
41/col23 {0.820 0.000 0.820 srgb} bind def
42/col24 {0.500 0.190 0.000 srgb} bind def
43/col25 {0.630 0.250 0.000 srgb} bind def
44/col26 {0.750 0.380 0.000 srgb} bind def
45/col27 {1.000 0.500 0.500 srgb} bind def
46/col28 {1.000 0.630 0.630 srgb} bind def
47/col29 {1.000 0.750 0.750 srgb} bind def
48/col30 {1.000 0.880 0.880 srgb} bind def
49/col31 {1.000 0.840 0.000 srgb} bind def
50
51end
52save
531.0 29.0 translate
541 -1 scale
55
56/cp {closepath} bind def
57/ef {eofill} bind def
58/gr {grestore} bind def
59/gs {gsave} bind def
60/sa {save} bind def
61/rs {restore} bind def
62/l {lineto} bind def
63/m {moveto} bind def
64/rm {rmoveto} bind def
65/n {newpath} bind def
66/s {stroke} bind def
67/sh {show} bind def
68/slc {setlinecap} bind def
69/slj {setlinejoin} bind def
70/slw {setlinewidth} bind def
71/srgb {setrgbcolor} bind def
72/rot {rotate} bind def
73/sc {scale} bind def
74/sd {setdash} bind def
75/ff {findfont} bind def
76/sf {setfont} bind def
77/scf {scalefont} bind def
78/sw {stringwidth} bind def
79/tr {translate} bind def
80/tnt {dup dup currentrgbcolor
81 4 -2 roll dup 1 exch sub 3 -1 roll mul add
82 4 -2 roll dup 1 exch sub 3 -1 roll mul add
83 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
84 bind def
85/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
86 4 -2 roll mul srgb} bind def
87/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
88/$F2psEnd {$F2psEnteredState restore end} def
89%%EndProlog
90
91$F2psBegin
9210 setmiterlimit
93n 0 792 m 0 0 l 612 0 l 612 792 l cp clip
94 0.06000 0.06000 sc
957.500 slw
96% Polyline
97gs clippath
982737 425 m 2857 455 l 2737 485 l 2899 485 l 2899 425 l cp clip
99n 304 455 m 2884 455 l gs col-1 s gr gr
100
101% arrowhead
102n 2737 425 m 2857 455 l 2737 485 l 2737 455 l 2737 425 l cp gs 0.00 setgray ef gr col-1 s
103/Times-Roman ff 255.00 scf sf
104382 227 m
105gs 1 -1 sc (R) col-1 sh gr
106% Polyline
107n 609 0 m 915 0 l 915 303 l 609 303 l cp gs col-1 s gr
108/Times-Roman ff 255.00 scf sf
109685 227 m
110gs 1 -1 sc (L) col-1 sh gr
111% Polyline
112n 915 0 m 1221 0 l 1221 303 l 915 303 l cp gs col-1 s gr
113/Times-Roman ff 255.00 scf sf
114992 227 m
115gs 1 -1 sc (F) col-1 sh gr
116% Polyline
117n 0 0 m 306 0 l 306 303 l 0 303 l cp gs col-1 s gr
118/Times-Roman ff 255.00 scf sf
11976 227 m
120gs 1 -1 sc (R) col-1 sh gr
121% Polyline
122n 1221 0 m 1527 0 l 1527 303 l 1221 303 l cp gs col-1 s gr
123/Times-Roman ff 255.00 scf sf
1241297 227 m
125gs 1 -1 sc (F) col-1 sh gr
126% Polyline
127n 1983 0 m 2289 0 l 2289 303 l 1983 303 l cp gs col-1 s gr
128/Times-Roman ff 255.00 scf sf
1292059 227 m
130gs 1 -1 sc (R) col-1 sh gr
131% Polyline
132n 2289 0 m 2595 0 l 2595 303 l 2289 303 l cp gs col-1 s gr
133/Times-Roman ff 255.00 scf sf
1342365 227 m
135gs 1 -1 sc (L) col-1 sh gr
136% Polyline
137n 2595 0 m 2898 0 l 2898 303 l 2595 303 l cp gs col-1 s gr
138/Times-Roman ff 255.00 scf sf
1392669 227 m
140gs 1 -1 sc (F) col-1 sh gr
141% Polyline
142n 1677 0 m 1983 0 l 1983 303 l 1677 303 l cp gs col-1 s gr
143/Times-Roman ff 255.00 scf sf
1441753 227 m
145gs 1 -1 sc (R) col-1 sh gr
146% Polyline
147n 2898 0 m 3204 0 l 3204 303 l 2898 303 l cp gs col-1 s gr
148/Times-Roman ff 255.00 scf sf
1492975 227 m
150gs 1 -1 sc (F) col-1 sh gr
151% Polyline
152n 306 0 m 609 0 l 609 303 l 306 303 l cp gs col-1 s gr
153$F2psEnd
154rs
diff --git a/xdelta1/doc/old/dcc99/figs/jumping.fig b/xdelta1/doc/old/dcc99/figs/jumping.fig
new file mode 100755
index 0000000..7157399
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/figs/jumping.fig
@@ -0,0 +1,70 @@
1#FIG 3.1
2Portrait
3Center
4Inches
51200 2
66 0 0 3225 493
76 0 0 3204 303
86 0 0 1527 303
96 0 0 1527 303
106 306 0 609 303
112 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
12 306 0 609 0 609 303 306 303 306 0
134 0 -1 0 0 0 17 0.0000 0 177 168 382 227 R\001
14-6
156 609 0 915 303
162 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
17 609 0 915 0 915 303 609 303 609 0
184 0 -1 0 0 0 17 0.0000 0 177 153 685 227 L\001
19-6
206 915 0 1221 303
212 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
22 915 0 1221 0 1221 303 915 303 915 0
234 0 -1 0 0 0 17 0.0000 0 177 137 992 227 F\001
24-6
256 0 0 306 303
262 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
27 0 0 306 0 306 303 0 303 0 0
284 0 -1 0 0 0 17 0.0000 0 177 168 76 227 R\001
29-6
306 1221 0 1527 303
312 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
32 1221 0 1527 0 1527 303 1221 303 1221 0
334 0 -1 0 0 0 17 0.0000 0 177 137 1297 227 F\001
34-6
35-6
36-6
376 1677 0 3204 303
386 1677 0 3204 303
396 1983 0 2289 303
402 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
41 1983 0 2289 0 2289 303 1983 303 1983 0
424 0 -1 0 0 0 17 0.0000 0 177 168 2059 227 R\001
43-6
446 2289 0 2595 303
452 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
46 2289 0 2595 0 2595 303 2289 303 2289 0
474 0 -1 0 0 0 17 0.0000 0 177 153 2365 227 L\001
48-6
496 2595 0 2898 303
502 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
51 2595 0 2898 0 2898 303 2595 303 2595 0
524 0 -1 0 0 0 17 0.0000 0 177 137 2669 227 F\001
53-6
546 1677 0 1983 303
552 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
56 1677 0 1983 0 1983 303 1677 303 1677 0
574 0 -1 0 0 0 17 0.0000 0 177 168 1753 227 R\001
58-6
596 2898 0 3204 303
602 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
61 2898 0 3204 0 3204 303 2898 303 2898 0
624 0 -1 0 0 0 17 0.0000 0 177 137 2975 227 F\001
63-6
64-6
65-6
66-6
672 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
68 1 1 1.00 60.00 120.00
69 304 455 2884 455
70-6
diff --git a/xdelta1/doc/old/dcc99/figs/normalize.fig b/xdelta1/doc/old/dcc99/figs/normalize.fig
new file mode 100755
index 0000000..4bcf428
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/figs/normalize.fig
@@ -0,0 +1,256 @@
1#FIG 3.1
2Landscape
3Center
4Inches
51200 2
66 2100 9900 15300 10875
74 0 -1 0 0 12 34 0.0000 4 300 2100 2100 10275 Actual \001
84 0 -1 0 0 12 34 0.0000 4 300 1200 2100 10755 File\001
94 0 -1 0 0 12 34 0.0000 4 375 1200 5700 10275 Copy\001
104 0 -1 0 0 12 34 0.0000 4 375 2400 5700 10755 Segments\001
114 0 -1 0 0 12 34 0.0000 4 285 1800 9300 10200 Insert\001
124 0 -1 0 0 12 34 0.0000 4 375 2400 9300 10680 Segments\001
134 0 -1 0 0 12 34 0.0000 4 390 2400 12900 10275 Physical\001
144 0 -1 0 0 12 34 0.0000 4 375 2100 12900 10755 Storage\001
15-6
162 2 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 5
17 1500 600 4500 600 4500 1200 1500 1200 1500 600
182 2 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 5
19 1500 1800 4500 1800 4500 2400 1500 2400 1500 1800
202 2 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 5
21 1500 3000 4500 3000 4500 3600 1500 3600 1500 3000
222 2 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 5
23 1500 4200 4500 4200 4500 4800 1500 4800 1500 4200
242 2 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 5
25 1500 5400 4500 5400 4500 6000 1500 6000 1500 5400
262 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
27 1500 5400 4500 5400 4500 6000 1500 6000 1500 5400
282 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
29 1500 4200 4500 4200 4500 4800 1500 4800 1500 4200
302 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
31 1500 3000 4500 3000 4500 3600 1500 3600 1500 3000
322 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
33 1500 1800 4500 1800 4500 2400 1500 2400 1500 1800
342 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
35 1500 600 4500 600 4500 1200 1500 1200 1500 600
362 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
37 1500 6600 4500 6600 4500 7200 1500 7200 1500 6600
382 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
39 5100 600 8100 600 8100 1200 5100 1200 5100 600
402 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
41 5100 1800 8100 1800 8100 2400 5100 2400 5100 1800
422 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
43 5100 3000 8100 3000 8100 3600 5100 3600 5100 3000
442 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
45 5100 4200 8100 4200 8100 4800 5100 4800 5100 4200
462 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
47 5100 5400 8100 5400 8100 6000 5100 6000 5100 5400
482 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
49 5100 6600 8100 6600 8100 7200 5100 7200 5100 6600
502 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
51 8700 600 11700 600 11700 1200 8700 1200 8700 600
522 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
53 8700 1800 11700 1800 11700 2400 8700 2400 8700 1800
542 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
55 8700 3000 11700 3000 11700 3600 8700 3600 8700 3000
562 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
57 8700 4200 11700 4200 11700 4800 8700 4800 8700 4200
582 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
59 8700 5400 11700 5400 11700 6000 8700 6000 8700 5400
602 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
61 8700 6600 11700 6600 11700 7200 8700 7200 8700 6600
622 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
63 5400 600 8100 600 8100 1200 5400 1200 5400 600
642 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
65 8700 600 9000 600 9000 1200 8700 1200 8700 600
662 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
67 5400 1800 6000 1800 6000 2400 5400 2400 5400 1800
682 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
69 6300 1800 6600 1800 6600 2400 6300 2400 6300 1800
702 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
71 7200 1800 8100 1800 8100 2400 7200 2400 7200 1800
722 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
73 8700 1800 9000 1800 9000 2400 8700 2400 8700 1800
742 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
75 9600 1800 9900 1800 9900 2400 9600 2400 9600 1800
762 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
77 10200 1800 10800 1800 10800 2400 10200 2400 10200 1800
782 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
79 5100 3000 6000 3000 6000 3600 5100 3600 5100 3000
802 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
81 6300 3000 6600 3000 6600 3600 6300 3600 6300 3000
822 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
83 7200 3000 7500 3000 7500 3600 7200 3600 7200 3000
842 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
85 7800 3000 8100 3000 8100 3600 7800 3600 7800 3000
862 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
87 9600 3000 9900 3000 9900 3600 9600 3600 9600 3000
882 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
89 10200 3000 10800 3000 10800 3600 10200 3600 10200 3000
902 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
91 11100 3000 11400 3000 11400 3600 11100 3600 11100 3000
922 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
93 6900 4200 7200 4200 7200 4200 6900 4200 6900 4200
942 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
95 5700 4200 6000 4200 6000 4800 5700 4800 5700 4200
962 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
97 6300 4200 6600 4200 6600 4800 6300 4800 6300 4200
982 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
99 5100 4200 5400 4200 5400 4800 5100 4800 5100 4200
1002 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
101 7200 4200 7500 4200 7500 4800 7200 4800 7200 4200
1022 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
103 6000 4200 6300 4200 6300 4800 6000 4800 6000 4200
1042 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
105 6600 4200 7200 4200 7200 4800 6600 4800 6600 4200
1062 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
107 5700 5400 6000 5400 6000 6000 5700 6000 5700 5400
1082 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
109 6300 5400 6600 5400 6600 6000 6300 6000 6300 5400
1102 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
111 6000 5400 6300 5400 6300 6000 6000 6000 6000 5400
1122 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
113 6600 5400 7200 5400 7200 6000 6600 6000 6600 5400
1142 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
115 10800 5400 11700 5400 11700 6000 10800 6000 10800 5400
1162 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
117 8700 5400 9300 5400 9300 6000 8700 6000 8700 5400
1182 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
119 11100 4200 11700 4200 11700 4800 11100 4800 11100 4200
1202 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
121 5100 6600 5400 6600 5400 7200 5100 7200 5100 6600
1222 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
123 6000 6600 6300 6600 6300 7200 6000 7200 6000 6600
1242 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
125 6600 7200 7200 7200 7200 6600 6600 6600 6600 7200
1262 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
127 7500 6600 8100 6600 8100 7200 7500 7200 7500 6600
1282 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
129 9000 6600 9600 6600 9600 7200 9000 7200 9000 6600
1302 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
131 9900 6600 10200 6600 10200 7200 9900 7200 9900 6600
1322 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
133 10800 6600 11100 6600 11100 7200 10800 7200 10800 6600
1342 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
135 12300 6600 13500 6600 13500 7200 12300 7200 12300 6600
1362 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
137 12300 4800 12900 4800 12900 4200 12300 4200 12300 4800
1382 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
139 12300 3600 13500 3600 13500 3000 12300 3000 12300 3600
1402 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
141 12300 2400 13500 2400 13500 1800 12300 1800 12300 2400
1422 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
143 12300 600 12600 600 12600 1200 12300 1200 12300 600
1442 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
145 1500 7800 4500 7800 4500 8400 1500 8400 1500 7800
1462 2 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 5
147 1500 7800 4500 7800 4500 8400 1500 8400 1500 7800
1482 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
149 1500 7800 4500 7800 4500 8400 1500 8400 1500 7800
1502 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
151 5100 7800 8100 7800 8100 8400 5100 8400 5100 7800
1522 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
153 8700 7800 11700 7800 11700 8400 8700 8400 8700 7800
1542 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
155 8700 7800 11700 7800 11700 8400 8700 8400 8700 7800
1562 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
157 12300 7800 15300 7800 15300 8400 12300 8400 12300 7800
1582 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
159 1496 8996 4496 8996 4496 9596 1496 9596 1496 8996
1602 2 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 5
161 1496 8996 4496 8996 4496 9596 1496 9596 1496 8996
1622 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
163 5096 8996 8096 8996 8096 9596 5096 9596 5096 8996
1642 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
165 1496 8996 4496 8996 4496 9596 1496 9596 1496 8996
1662 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
167 5100 9000 5400 9000 5400 9600 5100 9600 5100 9000
1682 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
169 5400 9000 5700 9000 5700 9600 5400 9600 5400 9000
1702 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
171 5700 9000 6000 9000 6000 9600 5700 9600 5700 9000
1722 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
173 6000 9000 6300 9000 6300 9600 6000 9600 6000 9000
1742 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
175 6600 9000 7200 9000 7200 9600 6600 9600 6600 9000
1762 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
177 9900 9000 10200 9000 10200 9600 9900 9600 9900 9000
1782 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
179 7200 9000 7500 9000 7500 9600 7200 9600 7200 9000
1802 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
181 11100 9000 11700 9000 11700 9600 11100 9600 11100 9000
1822 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
183 12300 9000 13200 9000 13200 9600 12300 9600 12300 9000
1842 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
185 8696 8996 11696 8996 11696 9596 8696 9596 8696 8996
1862 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
187 12300 5400 13800 5400 13800 6000 12300 6000 12300 5400
1882 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5
189 13950 6150 13950 450 4950 450 4950 6150 13950 6150
1904 0 -1 0 0 0 34 0.0000 0 345 1035 300 8250 F7 = \001
1914 0 -1 0 0 0 34 0.0000 0 345 915 300 7050 F6 =\001
1924 0 -1 0 0 0 34 0.0000 0 345 915 300 5850 F5 =\001
1934 0 -1 0 0 0 34 0.0000 0 345 915 300 3450 F3 =\001
1944 0 -1 0 0 0 34 0.0000 0 345 915 300 2250 F2 =\001
1954 0 -1 0 0 0 34 0.0000 0 345 915 300 1050 F1 =\001
1964 0 -1 0 0 0 34 0.0000 0 345 915 300 9450 F8 =\001
1974 0 -1 0 0 5 34 0.0000 0 285 3000 1500 1200 DISULPHIDE\001
1984 0 -1 0 0 5 34 0.0000 0 285 3000 1500 2400 BISULPHIDE\001
1994 0 -1 0 0 5 34 0.0000 0 285 3000 1500 3600 DISELENIDE\001
2004 0 -1 0 0 5 34 0.0000 0 285 3000 1500 4800 DISULPHINE\001
2014 0 -1 0 0 5 34 0.0000 0 285 3000 1500 6000 ESSELENIAN\001
2024 0 -1 0 0 5 34 0.0000 0 285 3000 1500 7200 DISULPHONE\001
2034 0 -1 0 0 5 34 0.0000 0 285 2700 5400 1200 ISULPHIDE\001
2044 0 -1 0 0 5 34 0.0000 0 285 300 8700 1200 D\001
2054 0 -1 0 0 5 34 0.0000 0 285 600 5400 2400 IS\001
2064 0 -1 0 0 5 34 0.0000 0 285 300 6300 2400 L\001
2074 0 -1 0 0 5 34 0.0000 0 285 900 7200 2400 IDE\001
2084 0 -1 0 0 5 34 0.0000 0 285 300 8700 2400 B\001
2094 0 -1 0 0 5 34 0.0000 0 285 300 9600 2400 U\001
2104 0 -1 0 0 5 34 0.0000 0 285 600 10200 2400 PH\001
2114 0 -1 0 0 5 34 0.0000 0 285 1800 9600 3600 E EN D\001
2124 0 -1 0 0 5 34 0.0000 0 285 3000 5100 3600 DIS L I E\001
2134 0 -1 0 0 5 34 0.0000 0 285 600 8700 6000 ES\001
2144 0 -1 0 0 5 34 0.0000 0 285 900 10800 6000 IAN\001
2154 0 -1 0 0 5 34 0.0000 0 285 1500 5700 6000 SELEN\001
2164 0 -1 0 0 5 34 0.0000 0 285 2400 5100 4800 DISULPHI\001
2174 0 -1 0 0 5 34 0.0000 0 285 600 11100 4800 NE\001
2184 0 -1 0 0 5 34 0.0000 0 285 3000 5100 7200 D U PH NE\001
2194 0 -1 0 0 5 34 0.0000 0 285 2400 8700 7200 IS U O\001
2204 0 -1 0 0 5 34 0.0000 0 285 3000 1500 8400 TROEZENIAN\001
2214 0 -1 0 0 5 34 0.0000 0 285 3000 8700 8400 TROEZENIAN\001
2224 0 -1 0 0 12 34 0.0000 4 285 3000 1496 9521 ESSELENIST\001
2234 0 -1 0 0 0 34 0.0000 0 135 285 4650 9450 =\001
2244 0 -1 0 0 0 34 0.0000 0 135 285 4650 8250 =\001
2254 0 -1 0 0 0 34 0.0000 0 135 285 4650 7050 =\001
2264 0 -1 0 0 0 34 0.0000 0 135 285 4650 5850 =\001
2274 0 -1 0 0 0 34 0.0000 0 135 285 4650 4650 =\001
2284 0 -1 0 0 0 34 0.0000 0 135 285 4650 3450 =\001
2294 0 -1 0 0 0 34 0.0000 0 135 285 4650 2250 =\001
2304 0 -1 0 0 0 34 0.0000 0 135 285 4650 1050 =\001
2314 0 -1 0 0 0 34 0.0000 0 240 285 8250 9450 +\001
2324 0 -1 0 0 0 34 0.0000 0 240 285 8250 7050 +\001
2334 0 -1 0 0 0 34 0.0000 0 240 285 8250 5850 +\001
2344 0 -1 0 0 0 34 0.0000 0 240 285 8250 4650 +\001
2354 0 -1 0 0 0 34 0.0000 0 240 285 8250 3450 +\001
2364 0 -1 0 0 0 34 0.0000 0 240 285 8250 2250 +\001
2374 0 -1 0 0 0 34 0.0000 0 240 285 8250 1050 +\001
2384 0 -1 0 0 0 34 0.0000 0 240 285 8250 8250 +\001
2394 0 -1 0 0 0 34 0.0000 0 345 915 300 4650 F4 =\001
2404 0 -1 0 0 0 34 0.0000 0 135 285 11850 9450 =\001
2414 0 -1 0 0 0 34 0.0000 0 135 285 11850 8250 =\001
2424 0 -1 0 0 0 34 0.0000 0 135 285 11850 6975 =\001
2434 0 -1 0 0 0 34 0.0000 0 135 285 11850 5850 =\001
2444 0 -1 0 0 0 34 0.0000 0 135 285 11850 4575 =\001
2454 0 -1 0 0 0 34 0.0000 0 135 285 11850 3450 =\001
2464 0 -1 0 0 0 34 0.0000 0 135 285 11850 2250 =\001
2474 0 -1 0 0 0 34 0.0000 0 135 285 11850 1050 =\001
2484 0 -1 0 0 5 34 0.0000 0 285 6600 5100 9600 ESSE ENI L ST\001
2494 0 -1 0 0 5 34 0.0000 0 285 300 12300 1200 D\001
2504 0 -1 0 0 5 34 0.0000 0 285 1200 12300 2400 BUPH\001
2514 0 -1 0 0 5 34 0.0000 0 285 1200 12300 3600 EEND\001
2524 0 -1 0 0 5 34 0.0000 0 285 600 12300 4800 NE\001
2534 0 -1 0 0 5 34 0.0000 0 285 1500 12300 6000 ESIAN\001
2544 0 -1 0 0 5 34 0.0000 0 285 1200 12300 7200 ISUO\001
2554 0 -1 0 0 5 34 0.0000 0 285 3000 12300 8400 TROEZENIAN\001
2564 0 -1 0 0 5 34 0.0000 0 285 900 12300 9600 LST\001
diff --git a/xdelta1/doc/old/dcc99/figs/onestep.eps b/xdelta1/doc/old/dcc99/figs/onestep.eps
new file mode 100755
index 0000000..80f4ed8
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/figs/onestep.eps
@@ -0,0 +1,930 @@
1%!PS-Adobe-2.0 EPSF-2.0
2%%Title: onestep.fig
3%%Creator: fig2dev Version 3.1 Patchlevel 2
4%%CreationDate: Sun Nov 8 03:20:13 1998
5%%For: jmacd@axis.hip.berkeley.edu (Josh)
6%%Orientation: Portrait
7%%BoundingBox: 0 0 336 229
8%%Pages: 0
9%%BeginSetup
10%%IncludeFeature: *PageSize Letter
11%%EndSetup
12%Magnification: 1.00
13%%EndComments
14/MyAppDict 100 dict dup begin def
15/$F2psDict 200 dict def
16$F2psDict begin
17$F2psDict /mtrx matrix put
18/col-1 {0 setgray} bind def
19/col0 {0.000 0.000 0.000 srgb} bind def
20/col1 {0.000 0.000 1.000 srgb} bind def
21/col2 {0.000 1.000 0.000 srgb} bind def
22/col3 {0.000 1.000 1.000 srgb} bind def
23/col4 {1.000 0.000 0.000 srgb} bind def
24/col5 {1.000 0.000 1.000 srgb} bind def
25/col6 {1.000 1.000 0.000 srgb} bind def
26/col7 {1.000 1.000 1.000 srgb} bind def
27/col8 {0.000 0.000 0.560 srgb} bind def
28/col9 {0.000 0.000 0.690 srgb} bind def
29/col10 {0.000 0.000 0.820 srgb} bind def
30/col11 {0.530 0.810 1.000 srgb} bind def
31/col12 {0.000 0.560 0.000 srgb} bind def
32/col13 {0.000 0.690 0.000 srgb} bind def
33/col14 {0.000 0.820 0.000 srgb} bind def
34/col15 {0.000 0.560 0.560 srgb} bind def
35/col16 {0.000 0.690 0.690 srgb} bind def
36/col17 {0.000 0.820 0.820 srgb} bind def
37/col18 {0.560 0.000 0.000 srgb} bind def
38/col19 {0.690 0.000 0.000 srgb} bind def
39/col20 {0.820 0.000 0.000 srgb} bind def
40/col21 {0.560 0.000 0.560 srgb} bind def
41/col22 {0.690 0.000 0.690 srgb} bind def
42/col23 {0.820 0.000 0.820 srgb} bind def
43/col24 {0.500 0.190 0.000 srgb} bind def
44/col25 {0.630 0.250 0.000 srgb} bind def
45/col26 {0.750 0.380 0.000 srgb} bind def
46/col27 {1.000 0.500 0.500 srgb} bind def
47/col28 {1.000 0.630 0.630 srgb} bind def
48/col29 {1.000 0.750 0.750 srgb} bind def
49/col30 {1.000 0.880 0.880 srgb} bind def
50/col31 {1.000 0.840 0.000 srgb} bind def
51
52end
53save
540.0 228.0 translate
551 -1 scale
56.9 .9 scale % to make patterns same scale as in xfig
57
58% This junk string is used by the show operators
59/PATsstr 1 string def
60/PATawidthshow { % cx cy cchar rx ry string
61 % Loop over each character in the string
62 { % cx cy cchar rx ry char
63 % Show the character
64 dup % cx cy cchar rx ry char char
65 PATsstr dup 0 4 -1 roll put % cx cy cchar rx ry char (char)
66 false charpath % cx cy cchar rx ry char
67 /clip load PATdraw
68 % Move past the character (charpath modified the
69 % current point)
70 currentpoint % cx cy cchar rx ry char x y
71 newpath
72 moveto % cx cy cchar rx ry char
73 % Reposition by cx,cy if the character in the string is cchar
74 3 index eq { % cx cy cchar rx ry
75 4 index 4 index rmoveto
76 } if
77 % Reposition all characters by rx ry
78 2 copy rmoveto % cx cy cchar rx ry
79 } forall
80 pop pop pop pop pop % -
81 currentpoint
82 newpath
83 moveto
84} bind def
85/PATcg {
86 7 dict dup begin
87 /lw currentlinewidth def
88 /lc currentlinecap def
89 /lj currentlinejoin def
90 /ml currentmiterlimit def
91 /ds [ currentdash ] def
92 /cc [ currentrgbcolor ] def
93 /cm matrix currentmatrix def
94 end
95} bind def
96% PATdraw - calculates the boundaries of the object and
97% fills it with the current pattern
98/PATdraw { % proc
99 save exch
100 PATpcalc % proc nw nh px py
101 5 -1 roll exec % nw nh px py
102 newpath
103 PATfill % -
104 restore
105} bind def
106% PATfill - performs the tiling for the shape
107/PATfill { % nw nh px py PATfill -
108 PATDict /CurrentPattern get dup begin
109 setfont
110 % Set the coordinate system to Pattern Space
111 PatternGState PATsg
112 % Set the color for uncolored pattezns
113 PaintType 2 eq { PATDict /PColor get PATsc } if
114 % Create the string for showing
115 3 index string % nw nh px py str
116 % Loop for each of the pattern sources
117 0 1 Multi 1 sub { % nw nh px py str source
118 % Move to the starting location
119 3 index 3 index % nw nh px py str source px py
120 moveto % nw nh px py str source
121 % For multiple sources, set the appropriate color
122 Multi 1 ne { dup PC exch get PATsc } if
123 % Set the appropriate string for the source
124 0 1 7 index 1 sub { 2 index exch 2 index put } for pop
125 % Loop over the number of vertical cells
126 3 index % nw nh px py str nh
127 { % nw nh px py str
128 currentpoint % nw nh px py str cx cy
129 2 index show % nw nh px py str cx cy
130 YStep add moveto % nw nh px py str
131 } repeat % nw nh px py str
132 } for
133 5 { pop } repeat
134 end
135} bind def
136
137% PATkshow - kshow with the current pattezn
138/PATkshow { % proc string
139 exch bind % string proc
140 1 index 0 get % string proc char
141 % Loop over all but the last character in the string
142 0 1 4 index length 2 sub {
143 % string proc char idx
144 % Find the n+1th character in the string
145 3 index exch 1 add get % string proe char char+1
146 exch 2 copy % strinq proc char+1 char char+1 char
147 % Now show the nth character
148 PATsstr dup 0 4 -1 roll put % string proc chr+1 chr chr+1 (chr)
149 false charpath % string proc char+1 char char+1
150 /clip load PATdraw
151 % Move past the character (charpath modified the current point)
152 currentpoint newpath moveto
153 % Execute the user proc (should consume char and char+1)
154 mark 3 1 roll % string proc char+1 mark char char+1
155 4 index exec % string proc char+1 mark...
156 cleartomark % string proc char+1
157 } for
158 % Now display the last character
159 PATsstr dup 0 4 -1 roll put % string proc (char+1)
160 false charpath % string proc
161 /clip load PATdraw
162 neewath
163 pop pop % -
164} bind def
165% PATmp - the makepattern equivalent
166/PATmp { % patdict patmtx PATmp patinstance
167 exch dup length 7 add % We will add 6 new entries plus 1 FID
168 dict copy % Create a new dictionary
169 begin
170 % Matrix to install when painting the pattern
171 TilingType PATtcalc
172 /PatternGState PATcg def
173 PatternGState /cm 3 -1 roll put
174 % Check for multi pattern sources (Level 1 fast color patterns)
175 currentdict /Multi known not { /Multi 1 def } if
176 % Font dictionary definitions
177 /FontType 3 def
178 % Create a dummy encoding vector
179 /Encoding 256 array def
180 3 string 0 1 255 {
181 Encoding exch dup 3 index cvs cvn put } for pop
182 /FontMatrix matrix def
183 /FontBBox BBox def
184 /BuildChar {
185 mark 3 1 roll % mark dict char
186 exch begin
187 Multi 1 ne {PaintData exch get}{pop} ifelse % mark [paintdata]
188 PaintType 2 eq Multi 1 ne or
189 { XStep 0 FontBBox aload pop setcachedevice }
190 { XStep 0 setcharwidth } ifelse
191 currentdict % mark [paintdata] dict
192 /PaintProc load % mark [paintdata] dict paintproc
193 end
194 gsave
195 false PATredef exec true PATredef
196 grestore
197 cleartomark % -
198 } bind def
199 currentdict
200 end % newdict
201 /foo exch % /foo newlict
202 definefont % newfont
203} bind def
204% PATpcalc - calculates the starting point and width/height
205% of the tile fill for the shape
206/PATpcalc { % - PATpcalc nw nh px py
207 PATDict /CurrentPattern get begin
208 gsave
209 % Set up the coordinate system to Pattern Space
210 % and lock down pattern
211 PatternGState /cm get setmatrix
212 BBox aload pop pop pop translate
213 % Determine the bounding box of the shape
214 pathbbox % llx lly urx ury
215 grestore
216 % Determine (nw, nh) the # of cells to paint width and height
217 PatHeight div ceiling % llx lly urx qh
218 4 1 roll % qh llx lly urx
219 PatWidth div ceiling % qh llx lly qw
220 4 1 roll % qw qh llx lly
221 PatHeight div floor % qw qh llx ph
222 4 1 roll % ph qw qh llx
223 PatWidth div floor % ph qw qh pw
224 4 1 roll % pw ph qw qh
225 2 index sub cvi abs % pw ph qs qh-ph
226 exch 3 index sub cvi abs exch % pw ph nw=qw-pw nh=qh-ph
227 % Determine the starting point of the pattern fill
228 %(px, py)
229 4 2 roll % nw nh pw ph
230 PatHeight mul % nw nh pw py
231 exch % nw nh py pw
232 PatWidth mul exch % nw nh px py
233 end
234} bind def
235
236% Save the original routines so that we can use them later on
237/oldfill /fill load def
238/oldeofill /eofill load def
239/oldstroke /stroke load def
240/oldshow /show load def
241/oldashow /ashow load def
242/oldwidthshow /widthshow load def
243/oldawidthshow /awidthshow load def
244/oldkshow /kshow load def
245
246% These defs are necessary so that subsequent procs don't bind in
247% the originals
248/fill { oldfill } bind def
249/eofill { oldeofill } bind def
250/stroke { oldstroke } bind def
251/show { oldshow } bind def
252/ashow { oldashow } bind def
253/widthshow { oldwidthshow } bind def
254/awidthshow { oldawidthshow } bind def
255/kshow { oldkshow } bind def
256/PATredef {
257 MyAppDict begin
258 {
259 /fill { /clip load PATdraw newpath } bind def
260 /eofill { /eoclip load PATdraw newpath } bind def
261 /stroke { PATstroke } bind def
262 /show { 0 0 null 0 0 6 -1 roll PATawidthshow } bind def
263 /ashow { 0 0 null 6 3 roll PATawidthshow }
264 bind def
265 /widthshow { 0 0 3 -1 roll PATawidthshow }
266 bind def
267 /awidthshow { PATawidthshow } bind def
268 /kshow { PATkshow } bind def
269 } {
270 /fill { oldfill } bind def
271 /eofill { oldeofill } bind def
272 /stroke { oldstroke } bind def
273 /show { oldshow } bind def
274 /ashow { oldashow } bind def
275 /widthshow { oldwidthshow } bind def
276 /awidthshow { oldawidthshow } bind def
277 /kshow { oldkshow } bind def
278 } ifelse
279 end
280} bind def
281false PATredef
282% Conditionally define setcmykcolor if not available
283/setcmykcolor where { pop } {
284 /setcmykcolor {
285 1 sub 4 1 roll
286 3 {
287 3 index add neg dup 0 lt { pop 0 } if 3 1 roll
288 } repeat
289 setrgbcolor - pop
290 } bind def
291} ifelse
292/PATsc { % colorarray
293 aload length % c1 ... cn length
294 dup 1 eq { pop setgray } { 3 eq { setrgbcolor } { setcmykcolor
295 } ifelse } ifelse
296} bind def
297/PATsg { % dict
298 begin
299 lw setlinewidth
300 lc setlinecap
301 lj setlinejoin
302 ml setmiterlimit
303 ds aload pop setdash
304 cc aload pop setrgbcolor
305 cm setmatrix
306 end
307} bind def
308
309/PATDict 3 dict def
310/PATsp {
311 true PATredef
312 PATDict begin
313 /CurrentPattern exch def
314 % If it's an uncolored pattern, save the color
315 CurrentPattern /PaintType get 2 eq {
316 /PColor exch def
317 } if
318 /CColor [ currentrgbcolor ] def
319 end
320} bind def
321% PATstroke - stroke with the current pattern
322/PATstroke {
323 countdictstack
324 save
325 mark
326 {
327 currentpoint strokepath moveto
328 PATpcalc % proc nw nh px py
329 clip newpath PATfill
330 } stopped {
331 (*** PATstroke Warning: Path is too complex, stroking
332 with gray) =
333 cleartomark
334 restore
335 countdictstack exch sub dup 0 gt
336 { { end } repeat } { pop } ifelse
337 gsave 0.5 setgray oldstroke grestore
338 } { pop restore pop } ifelse
339 newpath
340} bind def
341/PATtcalc { % modmtx tilingtype PATtcalc tilematrix
342 % Note: tiling types 2 and 3 are not supported
343 gsave
344 exch concat % tilingtype
345 matrix currentmatrix exch % cmtx tilingtype
346 % Tiling type 1 and 3: constant spacing
347 2 ne {
348 % Distort the pattern so that it occupies
349 % an integral number of device pixels
350 dup 4 get exch dup 5 get exch % tx ty cmtx
351 XStep 0 dtransform
352 round exch round exch % tx ty cmtx dx.x dx.y
353 XStep div exch XStep div exch % tx ty cmtx a b
354 0 YStep dtransform
355 round exch round exch % tx ty cmtx a b dy.x dy.y
356 YStep div exch YStep div exch % tx ty cmtx a b c d
357 7 -3 roll astore % { a b c d tx ty }
358 } if
359 grestore
360} bind def
361/PATusp {
362 false PATredef
363 PATDict begin
364 CColor PATsc
365 end
366} bind def
367
368% this is the pattern fill program from the Second edition Reference Manual
369% with changes to call the above pattern fill
370% left30
37111 dict begin
372/PaintType 1 def
373/PatternType 1 def
374/TilingType 1 def
375/BBox [0 0 1 1] def
376/XStep 1 def
377/YStep 1 def
378/PatWidth 1 def
379/PatHeight 1 def
380/Multi 2 def
381/PaintData [
382 { clippath } bind
383 { 32 16 true [ 32 0 0 -16 0 16 ]
384 {<c000c000300030000c000c000300030000c000c000300030
385 000c000c00030003c000c000300030000c000c0003000300
386 00c000c000300030000c000c00030003>}
387 imagemask } bind
388] def
389/PaintProc {
390 pop
391 exec fill
392} def
393currentdict
394end
395/P1 exch def
396
397% horizontal sawtooth lines
39811 dict begin
399/PaintType 1 def
400/PatternType 1 def
401/TilingType 1 def
402/BBox [0 0 1 1] def
403/XStep 1 def
404/YStep 1 def
405/PatWidth 1 def
406/PatHeight 1 def
407/Multi 2 def
408/PaintData [
409 { clippath } bind
410 { 32 16 true [ 32 0 0 -16 0 16 ]
411 {<000000000000000000000000000000000000000000000000
412 000000000100010002800280044004400820082010101010
413 20082008400440048002800200010001>}
414 imagemask } bind
415] def
416/PaintProc {
417 pop
418 exec fill
419} def
420currentdict
421end
422/P21 exch def
4231.1111 1.1111 scale %restore scale
424
425/cp {closepath} bind def
426/ef {eofill} bind def
427/gr {grestore} bind def
428/gs {gsave} bind def
429/sa {save} bind def
430/rs {restore} bind def
431/l {lineto} bind def
432/m {moveto} bind def
433/rm {rmoveto} bind def
434/n {newpath} bind def
435/s {stroke} bind def
436/sh {show} bind def
437/slc {setlinecap} bind def
438/slj {setlinejoin} bind def
439/slw {setlinewidth} bind def
440/srgb {setrgbcolor} bind def
441/rot {rotate} bind def
442/sc {scale} bind def
443/sd {setdash} bind def
444/ff {findfont} bind def
445/sf {setfont} bind def
446/scf {scalefont} bind def
447/sw {stringwidth} bind def
448/tr {translate} bind def
449/tnt {dup dup currentrgbcolor
450 4 -2 roll dup 1 exch sub 3 -1 roll mul add
451 4 -2 roll dup 1 exch sub 3 -1 roll mul add
452 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
453 bind def
454/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
455 4 -2 roll mul srgb} bind def
456/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
457/$F2psEnd {$F2psEnteredState restore end} def
458%%EndProlog
459
460$F2psBegin
46110 setmiterlimit
462n 0 792 m 0 0 l 612 0 l 612 792 l cp clip
463 0.06000 0.06000 sc
464/Courier ff 195.00 scf sf
4654457 3343 m
466gs 1 -1 sc (LST) col-1 sh gr
467/Courier ff 195.00 scf sf
468669 3772 m
469gs 1 -1 sc (File) col-1 sh gr
470/Courier ff 195.00 scf sf
4712006 3594 m
472gs 1 -1 sc (Copy) col-1 sh gr
473/Courier ff 195.00 scf sf
4742006 3772 m
475gs 1 -1 sc (Segments) col-1 sh gr
476/Courier ff 195.00 scf sf
4773343 3566 m
478gs 1 -1 sc (Insert) col-1 sh gr
479/Courier ff 195.00 scf sf
4803343 3744 m
481gs 1 -1 sc (Segments) col-1 sh gr
482/Courier ff 195.00 scf sf
4834680 3594 m
484gs 1 -1 sc (Physical) col-1 sh gr
485/Courier ff 195.00 scf sf
4864680 3772 m
487gs 1 -1 sc (Storage) col-1 sh gr
4887.500 slw
489% Polyline
490 [15 50.0] 50.0 sd
491n 446 0 m 1560 0 l 1560 223 l 446 223 l cp gs col-1 s gr [] 0 sd
492% Polyline
493 [15 50.0] 50.0 sd
494n 446 446 m 1560 446 l 1560 669 l 446 669 l cp gs col-1 s gr [] 0 sd
495% Polyline
496 [15 50.0] 50.0 sd
497n 446 891 m 1560 891 l 1560 1114 l 446 1114 l cp gs col-1 s gr [] 0 sd
498% Polyline
499 [15 50.0] 50.0 sd
500n 446 1337 m 1560 1337 l 1560 1560 l 446 1560 l cp gs col-1 s gr [] 0 sd
501% Polyline
502 [15 50.0] 50.0 sd
503n 446 1783 m 1560 1783 l 1560 2006 l 446 2006 l cp gs col-1 s gr [] 0 sd
504% Polyline
505n 446 1783 m 1560 1783 l 1560 2006 l 446 2006 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
50615.00 15.00 sc P1 [16 0 0 -8 29.73 118.87] PATmp PATsp ef gr PATusp gs col-1 s gr
507% Polyline
508n 446 1337 m 1560 1337 l 1560 1560 l 446 1560 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
50915.00 15.00 sc P1 [16 0 0 -8 29.73 89.13] PATmp PATsp ef gr PATusp gs col-1 s gr
510% Polyline
511n 446 891 m 1560 891 l 1560 1114 l 446 1114 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
51215.00 15.00 sc P1 [16 0 0 -8 29.73 59.40] PATmp PATsp ef gr PATusp gs col-1 s gr
513% Polyline
514n 446 446 m 1560 446 l 1560 669 l 446 669 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
51515.00 15.00 sc P1 [16 0 0 -8 29.73 29.73] PATmp PATsp ef gr PATusp gs col-1 s gr
516% Polyline
517n 446 0 m 1560 0 l 1560 223 l 446 223 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
51815.00 15.00 sc P1 [16 0 0 -8 29.73 0.00] PATmp PATsp ef gr PATusp gs col-1 s gr
519% Polyline
520n 446 2229 m 1560 2229 l 1560 2451 l 446 2451 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
52115.00 15.00 sc P1 [16 0 0 -8 29.73 148.60] PATmp PATsp ef gr PATusp gs col-1 s gr
522% Polyline
523n 1783 0 m 2897 0 l 2897 223 l 1783 223 l cp gs col-1 s gr
524% Polyline
525n 1783 446 m 2897 446 l 2897 669 l 1783 669 l cp gs col-1 s gr
526% Polyline
527n 1783 891 m 2897 891 l 2897 1114 l 1783 1114 l cp gs col-1 s gr
528% Polyline
529n 1783 1337 m 2897 1337 l 2897 1560 l 1783 1560 l cp gs col-1 s gr
530% Polyline
531n 1783 1783 m 2897 1783 l 2897 2006 l 1783 2006 l cp gs col-1 s gr
532% Polyline
533n 1783 2229 m 2897 2229 l 2897 2451 l 1783 2451 l cp gs col-1 s gr
534% Polyline
535n 3120 0 m 4234 0 l 4234 223 l 3120 223 l cp gs col-1 s gr
536% Polyline
537n 3120 446 m 4234 446 l 4234 669 l 3120 669 l cp gs col-1 s gr
538% Polyline
539n 3120 891 m 4234 891 l 4234 1114 l 3120 1114 l cp gs col-1 s gr
540% Polyline
541n 3120 1337 m 4234 1337 l 4234 1560 l 3120 1560 l cp gs col-1 s gr
542% Polyline
543n 3120 1783 m 4234 1783 l 4234 2006 l 3120 2006 l cp gs col-1 s gr
544% Polyline
545n 3120 2229 m 4234 2229 l 4234 2451 l 3120 2451 l cp gs col-1 s gr
546% Polyline
547n 1894 0 m 2897 0 l 2897 223 l 1894 223 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
54815.00 15.00 sc P1 [16 0 0 -8 126.27 0.00] PATmp PATsp ef gr PATusp gs col-1 s gr
549% Polyline
550n 3120 0 m 3231 0 l 3231 223 l 3120 223 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
55115.00 15.00 sc P1 [16 0 0 -8 208.00 0.00] PATmp PATsp ef gr PATusp gs col-1 s gr
552% Polyline
553n 1894 446 m 2117 446 l 2117 669 l 1894 669 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
55415.00 15.00 sc P1 [16 0 0 -8 126.27 29.73] PATmp PATsp ef gr PATusp gs col-1 s gr
555% Polyline
556n 2228 446 m 2340 446 l 2340 669 l 2228 669 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
55715.00 15.00 sc P1 [16 0 0 -8 148.53 29.73] PATmp PATsp ef gr PATusp gs col-1 s gr
558% Polyline
559n 2563 446 m 2897 446 l 2897 669 l 2563 669 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
56015.00 15.00 sc P1 [16 0 0 -8 170.87 29.73] PATmp PATsp ef gr PATusp gs col-1 s gr
561% Polyline
562n 3120 446 m 3231 446 l 3231 669 l 3120 669 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
56315.00 15.00 sc P1 [16 0 0 -8 208.00 29.73] PATmp PATsp ef gr PATusp gs col-1 s gr
564% Polyline
565n 3454 446 m 3565 446 l 3565 669 l 3454 669 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
56615.00 15.00 sc P1 [16 0 0 -8 230.27 29.73] PATmp PATsp ef gr PATusp gs col-1 s gr
567% Polyline
568n 3677 446 m 3900 446 l 3900 669 l 3677 669 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
56915.00 15.00 sc P1 [16 0 0 -8 245.13 29.73] PATmp PATsp ef gr PATusp gs col-1 s gr
570% Polyline
571n 1783 891 m 2117 891 l 2117 1114 l 1783 1114 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
57215.00 15.00 sc P1 [16 0 0 -8 118.87 59.40] PATmp PATsp ef gr PATusp gs col-1 s gr
573% Polyline
574n 2228 891 m 2340 891 l 2340 1114 l 2228 1114 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
57515.00 15.00 sc P1 [16 0 0 -8 148.53 59.40] PATmp PATsp ef gr PATusp gs col-1 s gr
576% Polyline
577n 2563 891 m 2674 891 l 2674 1114 l 2563 1114 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
57815.00 15.00 sc P1 [16 0 0 -8 170.87 59.40] PATmp PATsp ef gr PATusp gs col-1 s gr
579% Polyline
580n 2785 891 m 2897 891 l 2897 1114 l 2785 1114 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
58115.00 15.00 sc P1 [16 0 0 -8 185.67 59.40] PATmp PATsp ef gr PATusp gs col-1 s gr
582% Polyline
583n 3454 891 m 3565 891 l 3565 1114 l 3454 1114 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
58415.00 15.00 sc P1 [16 0 0 -8 230.27 59.40] PATmp PATsp ef gr PATusp gs col-1 s gr
585% Polyline
586n 3677 891 m 3900 891 l 3900 1114 l 3677 1114 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
58715.00 15.00 sc P1 [16 0 0 -8 245.13 59.40] PATmp PATsp ef gr PATusp gs col-1 s gr
588% Polyline
589n 4011 891 m 4123 891 l 4123 1114 l 4011 1114 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
59015.00 15.00 sc P1 [16 0 0 -8 267.40 59.40] PATmp PATsp ef gr PATusp gs col-1 s gr
591% Polyline
592n 2451 1337 m 2563 1337 l 2563 1337 l 2451 1337 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
59315.00 15.00 sc P1 [16 0 0 -8 163.40 89.13] PATmp PATsp ef gr PATusp gs col-1 s gr
594% Polyline
595n 2006 1337 m 2117 1337 l 2117 1560 l 2006 1560 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
59615.00 15.00 sc P1 [16 0 0 -8 133.73 89.13] PATmp PATsp ef gr PATusp gs col-1 s gr
597% Polyline
598n 2228 1337 m 2340 1337 l 2340 1560 l 2228 1560 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
59915.00 15.00 sc P1 [16 0 0 -8 148.53 89.13] PATmp PATsp ef gr PATusp gs col-1 s gr
600% Polyline
601n 1783 1337 m 1894 1337 l 1894 1560 l 1783 1560 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
60215.00 15.00 sc P21 [16 0 0 -8 118.87 89.13] PATmp PATsp ef gr PATusp gs col-1 s gr
603% Polyline
604n 2563 1337 m 2674 1337 l 2674 1560 l 2563 1560 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
60515.00 15.00 sc P1 [16 0 0 -8 170.87 89.13] PATmp PATsp ef gr PATusp gs col-1 s gr
606% Polyline
607n 2117 1337 m 2228 1337 l 2228 1560 l 2117 1560 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
60815.00 15.00 sc P21 [16 0 0 -8 141.13 89.13] PATmp PATsp ef gr PATusp gs col-1 s gr
609% Polyline
610n 2340 1337 m 2563 1337 l 2563 1560 l 2340 1560 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
61115.00 15.00 sc P21 [16 0 0 -8 156.00 89.13] PATmp PATsp ef gr PATusp gs col-1 s gr
612% Polyline
613n 2006 1783 m 2117 1783 l 2117 2006 l 2006 2006 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
61415.00 15.00 sc P1 [16 0 0 -8 133.73 118.87] PATmp PATsp ef gr PATusp gs col-1 s gr
615% Polyline
616n 2228 1783 m 2340 1783 l 2340 2006 l 2228 2006 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
61715.00 15.00 sc P1 [16 0 0 -8 148.53 118.87] PATmp PATsp ef gr PATusp gs col-1 s gr
618% Polyline
619n 2117 1783 m 2228 1783 l 2228 2006 l 2117 2006 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
62015.00 15.00 sc P21 [16 0 0 -8 141.13 118.87] PATmp PATsp ef gr PATusp gs col-1 s gr
621% Polyline
622n 2340 1783 m 2563 1783 l 2563 2006 l 2340 2006 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
62315.00 15.00 sc P21 [16 0 0 -8 156.00 118.87] PATmp PATsp ef gr PATusp gs col-1 s gr
624% Polyline
625n 3900 1783 m 4234 1783 l 4234 2006 l 3900 2006 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
62615.00 15.00 sc P1 [16 0 0 -8 260.00 118.87] PATmp PATsp ef gr PATusp gs col-1 s gr
627% Polyline
628n 3120 1783 m 3343 1783 l 3343 2006 l 3120 2006 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
62915.00 15.00 sc P1 [16 0 0 -8 208.00 118.87] PATmp PATsp ef gr PATusp gs col-1 s gr
630% Polyline
631n 4011 1337 m 4234 1337 l 4234 1560 l 4011 1560 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
63215.00 15.00 sc P1 [16 0 0 -8 267.40 89.13] PATmp PATsp ef gr PATusp gs col-1 s gr
633% Polyline
634n 1783 2229 m 1894 2229 l 1894 2451 l 1783 2451 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
63515.00 15.00 sc P21 [16 0 0 -8 118.87 148.60] PATmp PATsp ef gr PATusp gs col-1 s gr
636% Polyline
637n 2117 2229 m 2228 2229 l 2228 2451 l 2117 2451 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
63815.00 15.00 sc P21 [16 0 0 -8 141.13 148.60] PATmp PATsp ef gr PATusp gs col-1 s gr
639% Polyline
640n 2340 2451 m 2563 2451 l 2563 2229 l 2340 2229 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
64115.00 15.00 sc P21 [16 0 0 -8 156.00 148.60] PATmp PATsp ef gr PATusp gs col-1 s gr
642% Polyline
643n 2674 2229 m 2897 2229 l 2897 2451 l 2674 2451 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
64415.00 15.00 sc P21 [16 0 0 -8 178.27 148.60] PATmp PATsp ef gr PATusp gs col-1 s gr
645% Polyline
646n 3231 2229 m 3454 2229 l 3454 2451 l 3231 2451 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
64715.00 15.00 sc P1 [16 0 0 -8 215.40 148.60] PATmp PATsp ef gr PATusp gs col-1 s gr
648% Polyline
649n 3565 2229 m 3677 2229 l 3677 2451 l 3565 2451 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
65015.00 15.00 sc P1 [16 0 0 -8 237.67 148.60] PATmp PATsp ef gr PATusp gs col-1 s gr
651% Polyline
652n 3900 2229 m 4011 2229 l 4011 2451 l 3900 2451 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
65315.00 15.00 sc P1 [16 0 0 -8 260.00 148.60] PATmp PATsp ef gr PATusp gs col-1 s gr
654% Polyline
655n 4457 2229 m 4902 2229 l 4902 2451 l 4457 2451 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
65615.00 15.00 sc P1 [16 0 0 -8 297.13 148.60] PATmp PATsp ef gr PATusp gs col-1 s gr
657% Polyline
658n 4457 1560 m 4680 1560 l 4680 1337 l 4457 1337 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
65915.00 15.00 sc P1 [16 0 0 -8 297.13 89.13] PATmp PATsp ef gr PATusp gs col-1 s gr
660% Polyline
661n 4457 1114 m 4902 1114 l 4902 891 l 4457 891 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
66215.00 15.00 sc P1 [16 0 0 -8 297.13 59.40] PATmp PATsp ef gr PATusp gs col-1 s gr
663% Polyline
664n 4457 669 m 4902 669 l 4902 446 l 4457 446 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
66515.00 15.00 sc P1 [16 0 0 -8 297.13 29.73] PATmp PATsp ef gr PATusp gs col-1 s gr
666% Polyline
667n 4457 0 m 4568 0 l 4568 223 l 4457 223 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
66815.00 15.00 sc P1 [16 0 0 -8 297.13 0.00] PATmp PATsp ef gr PATusp gs col-1 s gr
669% Polyline
670n 446 2674 m 1560 2674 l 1560 2897 l 446 2897 l cp gs col-1 s gr
671% Polyline
672n 446 2674 m 1560 2674 l 1560 2897 l 446 2897 l cp gs col7 1.00 shd ef gr gs col-1 s gr
673% Polyline
674n 446 2674 m 1560 2674 l 1560 2897 l 446 2897 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
67515.00 15.00 sc P1 [16 0 0 -8 29.73 178.27] PATmp PATsp ef gr PATusp gs col-1 s gr
676% Polyline
677n 1783 2674 m 2897 2674 l 2897 2897 l 1783 2897 l cp gs col-1 s gr
678% Polyline
679n 3120 2674 m 4234 2674 l 4234 2897 l 3120 2897 l cp gs col-1 s gr
680% Polyline
681n 3120 2674 m 4234 2674 l 4234 2897 l 3120 2897 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
68215.00 15.00 sc P1 [16 0 0 -8 208.00 178.27] PATmp PATsp ef gr PATusp gs col-1 s gr
683% Polyline
684n 4457 2674 m 5571 2674 l 5571 2897 l 4457 2897 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
68515.00 15.00 sc P1 [16 0 0 -8 297.13 178.27] PATmp PATsp ef gr PATusp gs col-1 s gr
686% Polyline
687n 444 3118 m 1558 3118 l 1558 3341 l 444 3341 l cp gs col-1 s gr
688% Polyline
689n 444 3118 m 1558 3118 l 1558 3341 l 444 3341 l cp gs col7 1.00 shd ef gr gs col-1 s gr
690% Polyline
691n 1781 3118 m 2895 3118 l 2895 3341 l 1781 3341 l cp gs col-1 s gr
692% Polyline
693n 444 3118 m 1558 3118 l 1558 3341 l 444 3341 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
69415.00 15.00 sc P1 [16 0 0 -8 29.60 207.87] PATmp PATsp ef gr PATusp gs col-1 s gr
695% Polyline
696n 1783 3120 m 1894 3120 l 1894 3343 l 1783 3343 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
69715.00 15.00 sc P21 [16 0 0 -8 118.87 208.00] PATmp PATsp ef gr PATusp gs col-1 s gr
698% Polyline
699n 1894 3120 m 2006 3120 l 2006 3343 l 1894 3343 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
70015.00 15.00 sc P21 [16 0 0 -8 126.27 208.00] PATmp PATsp ef gr PATusp gs col-1 s gr
701% Polyline
702n 2006 3120 m 2117 3120 l 2117 3343 l 2006 3343 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
70315.00 15.00 sc P21 [16 0 0 -8 133.73 208.00] PATmp PATsp ef gr PATusp gs col-1 s gr
704% Polyline
705n 2117 3120 m 2228 3120 l 2228 3343 l 2117 3343 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
70615.00 15.00 sc P21 [16 0 0 -8 141.13 208.00] PATmp PATsp ef gr PATusp gs col-1 s gr
707% Polyline
708n 2340 3120 m 2563 3120 l 2563 3343 l 2340 3343 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
70915.00 15.00 sc P21 [16 0 0 -8 156.00 208.00] PATmp PATsp ef gr PATusp gs col-1 s gr
710% Polyline
711n 3565 3120 m 3677 3120 l 3677 3343 l 3565 3343 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
71215.00 15.00 sc P1 [16 0 0 -8 237.67 208.00] PATmp PATsp ef gr PATusp gs col-1 s gr
713% Polyline
714n 2563 3120 m 2674 3120 l 2674 3343 l 2563 3343 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
71515.00 15.00 sc P21 [16 0 0 -8 170.87 208.00] PATmp PATsp ef gr PATusp gs col-1 s gr
716% Polyline
717n 4011 3120 m 4234 3120 l 4234 3343 l 4011 3343 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
71815.00 15.00 sc P1 [16 0 0 -8 267.40 208.00] PATmp PATsp ef gr PATusp gs col-1 s gr
719% Polyline
720n 4457 3120 m 4791 3120 l 4791 3343 l 4457 3343 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
72115.00 15.00 sc P1 [16 0 0 -8 297.13 208.00] PATmp PATsp ef gr PATusp gs col-1 s gr
722% Polyline
723n 3118 3118 m 4232 3118 l 4232 3341 l 3118 3341 l cp gs col-1 s gr
724% Polyline
725n 4457 1783 m 5014 1783 l 5014 2006 l 4457 2006 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
72615.00 15.00 sc P1 [16 0 0 -8 297.13 118.87] PATmp PATsp ef gr PATusp gs col-1 s gr
727/Times-Roman ff 195.00 scf sf
7280 2841 m
729gs 1 -1 sc (F7 = ) col-1 sh gr
730/Times-Roman ff 195.00 scf sf
7310 2396 m
732gs 1 -1 sc (F6 =) col-1 sh gr
733/Times-Roman ff 195.00 scf sf
7340 1950 m
735gs 1 -1 sc (F5 =) col-1 sh gr
736/Times-Roman ff 195.00 scf sf
7370 1059 m
738gs 1 -1 sc (F3 =) col-1 sh gr
739/Times-Roman ff 195.00 scf sf
7400 613 m
741gs 1 -1 sc (F2 =) col-1 sh gr
742/Times-Roman ff 195.00 scf sf
7430 167 m
744gs 1 -1 sc (F1 =) col-1 sh gr
745/Times-Roman ff 195.00 scf sf
7460 3287 m
747gs 1 -1 sc (F8 =) col-1 sh gr
748/Courier ff 195.00 scf sf
749446 223 m
750gs 1 -1 sc (DISULPHIDE) col-1 sh gr
751/Courier ff 195.00 scf sf
752446 669 m
753gs 1 -1 sc (BISULPHIDE) col-1 sh gr
754/Courier ff 195.00 scf sf
755446 1114 m
756gs 1 -1 sc (DISELENIDE) col-1 sh gr
757/Courier ff 195.00 scf sf
758446 1560 m
759gs 1 -1 sc (DISULPHINE) col-1 sh gr
760/Courier ff 195.00 scf sf
761446 2006 m
762gs 1 -1 sc (ESSELENIAN) col-1 sh gr
763/Courier ff 195.00 scf sf
764446 2451 m
765gs 1 -1 sc (DISULPHONE) col-1 sh gr
766/Courier ff 195.00 scf sf
7671894 223 m
768gs 1 -1 sc (ISULPHIDE) col-1 sh gr
769/Courier ff 195.00 scf sf
7703120 223 m
771gs 1 -1 sc (D) col-1 sh gr
772/Courier ff 195.00 scf sf
7731894 669 m
774gs 1 -1 sc (IS) col-1 sh gr
775/Courier ff 195.00 scf sf
7762228 669 m
777gs 1 -1 sc (L) col-1 sh gr
778/Courier ff 195.00 scf sf
7792563 669 m
780gs 1 -1 sc (IDE) col-1 sh gr
781/Courier ff 195.00 scf sf
7823120 669 m
783gs 1 -1 sc (B) col-1 sh gr
784/Courier ff 195.00 scf sf
7853454 669 m
786gs 1 -1 sc (U) col-1 sh gr
787/Courier ff 195.00 scf sf
7883677 669 m
789gs 1 -1 sc (PH) col-1 sh gr
790/Courier ff 195.00 scf sf
7913454 1114 m
792gs 1 -1 sc (E EN D) col-1 sh gr
793/Courier ff 195.00 scf sf
7941783 1114 m
795gs 1 -1 sc (DIS L I E) col-1 sh gr
796/Courier ff 195.00 scf sf
7973120 2006 m
798gs 1 -1 sc (ES) col-1 sh gr
799/Courier ff 195.00 scf sf
8003900 2006 m
801gs 1 -1 sc (IAN) col-1 sh gr
802/Courier ff 195.00 scf sf
8032006 2006 m
804gs 1 -1 sc (SELEN) col-1 sh gr
805/Courier ff 195.00 scf sf
8061783 1560 m
807gs 1 -1 sc (DISULPHI) col-1 sh gr
808/Courier ff 195.00 scf sf
8094011 1560 m
810gs 1 -1 sc (NE) col-1 sh gr
811/Courier ff 195.00 scf sf
8121783 2451 m
813gs 1 -1 sc (D U PH NE) col-1 sh gr
814/Courier ff 195.00 scf sf
8153120 2451 m
816gs 1 -1 sc ( IS U O) col-1 sh gr
817/Courier ff 195.00 scf sf
818446 2897 m
819gs 1 -1 sc (TROEZENIAN) col-1 sh gr
820/Courier ff 195.00 scf sf
8213120 2897 m
822gs 1 -1 sc (TROEZENIAN) col-1 sh gr
823/Courier ff 195.00 scf sf
824444 3313 m
825gs 1 -1 sc (ESSELENIST) col-1 sh gr
826/Times-Roman ff 195.00 scf sf
8271616 3287 m
828gs 1 -1 sc (=) col-1 sh gr
829/Times-Roman ff 195.00 scf sf
8301616 2841 m
831gs 1 -1 sc (=) col-1 sh gr
832/Times-Roman ff 195.00 scf sf
8331616 2396 m
834gs 1 -1 sc (=) col-1 sh gr
835/Times-Roman ff 195.00 scf sf
8361616 1950 m
837gs 1 -1 sc (=) col-1 sh gr
838/Times-Roman ff 195.00 scf sf
8391616 1504 m
840gs 1 -1 sc (=) col-1 sh gr
841/Times-Roman ff 195.00 scf sf
8421616 1059 m
843gs 1 -1 sc (=) col-1 sh gr
844/Times-Roman ff 195.00 scf sf
8451616 613 m
846gs 1 -1 sc (=) col-1 sh gr
847/Times-Roman ff 195.00 scf sf
8481616 167 m
849gs 1 -1 sc (=) col-1 sh gr
850/Times-Roman ff 195.00 scf sf
8512953 3287 m
852gs 1 -1 sc (+) col-1 sh gr
853/Times-Roman ff 195.00 scf sf
8542953 2396 m
855gs 1 -1 sc (+) col-1 sh gr
856/Times-Roman ff 195.00 scf sf
8572953 1950 m
858gs 1 -1 sc (+) col-1 sh gr
859/Times-Roman ff 195.00 scf sf
8602953 1504 m
861gs 1 -1 sc (+) col-1 sh gr
862/Times-Roman ff 195.00 scf sf
8632953 1059 m
864gs 1 -1 sc (+) col-1 sh gr
865/Times-Roman ff 195.00 scf sf
8662953 613 m
867gs 1 -1 sc (+) col-1 sh gr
868/Times-Roman ff 195.00 scf sf
8692953 167 m
870gs 1 -1 sc (+) col-1 sh gr
871/Times-Roman ff 195.00 scf sf
8722953 2841 m
873gs 1 -1 sc (+) col-1 sh gr
874/Times-Roman ff 195.00 scf sf
8750 1504 m
876gs 1 -1 sc (F4 =) col-1 sh gr
877/Times-Roman ff 195.00 scf sf
8784290 3287 m
879gs 1 -1 sc (=) col-1 sh gr
880/Times-Roman ff 195.00 scf sf
8814290 2841 m
882gs 1 -1 sc (=) col-1 sh gr
883/Times-Roman ff 195.00 scf sf
8844290 2368 m
885gs 1 -1 sc (=) col-1 sh gr
886/Times-Roman ff 195.00 scf sf
8874290 1950 m
888gs 1 -1 sc (=) col-1 sh gr
889/Times-Roman ff 195.00 scf sf
8904290 1476 m
891gs 1 -1 sc (=) col-1 sh gr
892/Times-Roman ff 195.00 scf sf
8934290 1059 m
894gs 1 -1 sc (=) col-1 sh gr
895/Times-Roman ff 195.00 scf sf
8964290 613 m
897gs 1 -1 sc (=) col-1 sh gr
898/Times-Roman ff 195.00 scf sf
8994290 167 m
900gs 1 -1 sc (=) col-1 sh gr
901/Courier ff 195.00 scf sf
9021783 3343 m
903gs 1 -1 sc (ESSE ENI L ST) col-1 sh gr
904/Courier ff 195.00 scf sf
9054457 223 m
906gs 1 -1 sc (D) col-1 sh gr
907/Courier ff 195.00 scf sf
9084457 669 m
909gs 1 -1 sc (BUPH) col-1 sh gr
910/Courier ff 195.00 scf sf
9114457 1114 m
912gs 1 -1 sc (EEND) col-1 sh gr
913/Courier ff 195.00 scf sf
9144457 1560 m
915gs 1 -1 sc (NE) col-1 sh gr
916/Courier ff 195.00 scf sf
9174457 2006 m
918gs 1 -1 sc (ESIAN) col-1 sh gr
919/Courier ff 195.00 scf sf
9204457 2451 m
921gs 1 -1 sc (ISUO) col-1 sh gr
922/Courier ff 195.00 scf sf
9234457 2897 m
924gs 1 -1 sc (TROEZENIAN) col-1 sh gr
925/Courier ff 195.00 scf sf
926669 3594 m
927gs 1 -1 sc (Actual ) col-1 sh gr
928$F2psEnd
929rs
930end
diff --git a/xdelta1/doc/old/dcc99/figs/onestep.fig b/xdelta1/doc/old/dcc99/figs/onestep.fig
new file mode 100755
index 0000000..48c1a5b
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/figs/onestep.fig
@@ -0,0 +1,256 @@
1#FIG 3.1
2Portrait
3Center
4Inches
51200 2
66 0 0 5571 3900
76 669 3454 5571 3816
84 0 -1 0 0 12 13 0.0000 4 111 780 669 3594 Actual \001
94 0 -1 0 0 12 13 0.0000 4 111 446 669 3772 File\001
104 0 -1 0 0 12 13 0.0000 4 139 446 2006 3594 Copy\001
114 0 -1 0 0 12 13 0.0000 4 139 891 2006 3772 Segments\001
124 0 -1 0 0 12 13 0.0000 4 106 669 3343 3566 Insert\001
134 0 -1 0 0 12 13 0.0000 4 139 891 3343 3744 Segments\001
144 0 -1 0 0 12 13 0.0000 4 144 891 4680 3594 Physical\001
154 0 -1 0 0 12 13 0.0000 4 139 780 4680 3772 Storage\001
16-6
172 2 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 5
18 446 0 1560 0 1560 223 446 223 446 0
192 2 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 5
20 446 446 1560 446 1560 669 446 669 446 446
212 2 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 5
22 446 891 1560 891 1560 1114 446 1114 446 891
232 2 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 5
24 446 1337 1560 1337 1560 1560 446 1560 446 1337
252 2 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 5
26 446 1783 1560 1783 1560 2006 446 2006 446 1783
272 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
28 446 1783 1560 1783 1560 2006 446 2006 446 1783
292 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
30 446 1337 1560 1337 1560 1560 446 1560 446 1337
312 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
32 446 891 1560 891 1560 1114 446 1114 446 891
332 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
34 446 446 1560 446 1560 669 446 669 446 446
352 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
36 446 0 1560 0 1560 223 446 223 446 0
372 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
38 446 2229 1560 2229 1560 2451 446 2451 446 2229
392 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
40 1783 0 2897 0 2897 223 1783 223 1783 0
412 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
42 1783 446 2897 446 2897 669 1783 669 1783 446
432 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
44 1783 891 2897 891 2897 1114 1783 1114 1783 891
452 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
46 1783 1337 2897 1337 2897 1560 1783 1560 1783 1337
472 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
48 1783 1783 2897 1783 2897 2006 1783 2006 1783 1783
492 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
50 1783 2229 2897 2229 2897 2451 1783 2451 1783 2229
512 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
52 3120 0 4234 0 4234 223 3120 223 3120 0
532 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
54 3120 446 4234 446 4234 669 3120 669 3120 446
552 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
56 3120 891 4234 891 4234 1114 3120 1114 3120 891
572 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
58 3120 1337 4234 1337 4234 1560 3120 1560 3120 1337
592 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
60 3120 1783 4234 1783 4234 2006 3120 2006 3120 1783
612 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
62 3120 2229 4234 2229 4234 2451 3120 2451 3120 2229
632 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
64 1894 0 2897 0 2897 223 1894 223 1894 0
652 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
66 3120 0 3231 0 3231 223 3120 223 3120 0
672 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
68 1894 446 2117 446 2117 669 1894 669 1894 446
692 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
70 2228 446 2340 446 2340 669 2228 669 2228 446
712 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
72 2563 446 2897 446 2897 669 2563 669 2563 446
732 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
74 3120 446 3231 446 3231 669 3120 669 3120 446
752 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
76 3454 446 3565 446 3565 669 3454 669 3454 446
772 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
78 3677 446 3900 446 3900 669 3677 669 3677 446
792 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
80 1783 891 2117 891 2117 1114 1783 1114 1783 891
812 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
82 2228 891 2340 891 2340 1114 2228 1114 2228 891
832 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
84 2563 891 2674 891 2674 1114 2563 1114 2563 891
852 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
86 2785 891 2897 891 2897 1114 2785 1114 2785 891
872 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
88 3454 891 3565 891 3565 1114 3454 1114 3454 891
892 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
90 3677 891 3900 891 3900 1114 3677 1114 3677 891
912 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
92 4011 891 4123 891 4123 1114 4011 1114 4011 891
932 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
94 2451 1337 2563 1337 2563 1337 2451 1337 2451 1337
952 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
96 2006 1337 2117 1337 2117 1560 2006 1560 2006 1337
972 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
98 2228 1337 2340 1337 2340 1560 2228 1560 2228 1337
992 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
100 1783 1337 1894 1337 1894 1560 1783 1560 1783 1337
1012 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
102 2563 1337 2674 1337 2674 1560 2563 1560 2563 1337
1032 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
104 2117 1337 2228 1337 2228 1560 2117 1560 2117 1337
1052 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
106 2340 1337 2563 1337 2563 1560 2340 1560 2340 1337
1072 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
108 2006 1783 2117 1783 2117 2006 2006 2006 2006 1783
1092 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
110 2228 1783 2340 1783 2340 2006 2228 2006 2228 1783
1112 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
112 2117 1783 2228 1783 2228 2006 2117 2006 2117 1783
1132 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
114 2340 1783 2563 1783 2563 2006 2340 2006 2340 1783
1152 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
116 3900 1783 4234 1783 4234 2006 3900 2006 3900 1783
1172 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
118 3120 1783 3343 1783 3343 2006 3120 2006 3120 1783
1192 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
120 4011 1337 4234 1337 4234 1560 4011 1560 4011 1337
1212 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
122 1783 2229 1894 2229 1894 2451 1783 2451 1783 2229
1232 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
124 2117 2229 2228 2229 2228 2451 2117 2451 2117 2229
1252 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
126 2340 2451 2563 2451 2563 2229 2340 2229 2340 2451
1272 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
128 2674 2229 2897 2229 2897 2451 2674 2451 2674 2229
1292 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
130 3231 2229 3454 2229 3454 2451 3231 2451 3231 2229
1312 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
132 3565 2229 3677 2229 3677 2451 3565 2451 3565 2229
1332 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
134 3900 2229 4011 2229 4011 2451 3900 2451 3900 2229
1352 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
136 4457 2229 4902 2229 4902 2451 4457 2451 4457 2229
1372 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
138 4457 1560 4680 1560 4680 1337 4457 1337 4457 1560
1392 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
140 4457 1114 4902 1114 4902 891 4457 891 4457 1114
1412 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
142 4457 669 4902 669 4902 446 4457 446 4457 669
1432 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
144 4457 0 4568 0 4568 223 4457 223 4457 0
1452 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
146 446 2674 1560 2674 1560 2897 446 2897 446 2674
1472 2 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 5
148 446 2674 1560 2674 1560 2897 446 2897 446 2674
1492 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
150 446 2674 1560 2674 1560 2897 446 2897 446 2674
1512 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
152 1783 2674 2897 2674 2897 2897 1783 2897 1783 2674
1532 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
154 3120 2674 4234 2674 4234 2897 3120 2897 3120 2674
1552 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
156 3120 2674 4234 2674 4234 2897 3120 2897 3120 2674
1572 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
158 4457 2674 5571 2674 5571 2897 4457 2897 4457 2674
1592 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
160 444 3118 1558 3118 1558 3341 444 3341 444 3118
1612 2 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 5
162 444 3118 1558 3118 1558 3341 444 3341 444 3118
1632 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
164 1781 3118 2895 3118 2895 3341 1781 3341 1781 3118
1652 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
166 444 3118 1558 3118 1558 3341 444 3341 444 3118
1672 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
168 1783 3120 1894 3120 1894 3343 1783 3343 1783 3120
1692 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
170 1894 3120 2006 3120 2006 3343 1894 3343 1894 3120
1712 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
172 2006 3120 2117 3120 2117 3343 2006 3343 2006 3120
1732 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
174 2117 3120 2228 3120 2228 3343 2117 3343 2117 3120
1752 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
176 2340 3120 2563 3120 2563 3343 2340 3343 2340 3120
1772 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
178 3565 3120 3677 3120 3677 3343 3565 3343 3565 3120
1792 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
180 2563 3120 2674 3120 2674 3343 2563 3343 2563 3120
1812 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
182 4011 3120 4234 3120 4234 3343 4011 3343 4011 3120
1832 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
184 4457 3120 4791 3120 4791 3343 4457 3343 4457 3120
1852 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
186 3118 3118 4232 3118 4232 3341 3118 3341 3118 3118
1872 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
188 4457 1783 5014 1783 5014 2006 4457 2006 4457 1783
1894 0 -1 0 0 0 13 0.0000 0 128 384 0 2841 F7 = \001
1904 0 -1 0 0 0 13 0.0000 0 128 340 0 2396 F6 =\001
1914 0 -1 0 0 0 13 0.0000 0 128 340 0 1950 F5 =\001
1924 0 -1 0 0 0 13 0.0000 0 128 340 0 1059 F3 =\001
1934 0 -1 0 0 0 13 0.0000 0 128 340 0 613 F2 =\001
1944 0 -1 0 0 0 13 0.0000 0 128 340 0 167 F1 =\001
1954 0 -1 0 0 0 13 0.0000 0 128 340 0 3287 F8 =\001
1964 0 -1 0 0 5 13 0.0000 0 106 1114 446 223 DISULPHIDE\001
1974 0 -1 0 0 5 13 0.0000 0 106 1114 446 669 BISULPHIDE\001
1984 0 -1 0 0 5 13 0.0000 0 106 1114 446 1114 DISELENIDE\001
1994 0 -1 0 0 5 13 0.0000 0 106 1114 446 1560 DISULPHINE\001
2004 0 -1 0 0 5 13 0.0000 0 106 1114 446 2006 ESSELENIAN\001
2014 0 -1 0 0 5 13 0.0000 0 106 1114 446 2451 DISULPHONE\001
2024 0 -1 0 0 5 13 0.0000 0 106 1003 1894 223 ISULPHIDE\001
2034 0 -1 0 0 5 13 0.0000 0 106 111 3120 223 D\001
2044 0 -1 0 0 5 13 0.0000 0 106 223 1894 669 IS\001
2054 0 -1 0 0 5 13 0.0000 0 106 111 2228 669 L\001
2064 0 -1 0 0 5 13 0.0000 0 106 334 2563 669 IDE\001
2074 0 -1 0 0 5 13 0.0000 0 106 111 3120 669 B\001
2084 0 -1 0 0 5 13 0.0000 0 106 111 3454 669 U\001
2094 0 -1 0 0 5 13 0.0000 0 106 223 3677 669 PH\001
2104 0 -1 0 0 5 13 0.0000 0 106 669 3454 1114 E EN D\001
2114 0 -1 0 0 5 13 0.0000 0 106 1114 1783 1114 DIS L I E\001
2124 0 -1 0 0 5 13 0.0000 0 106 223 3120 2006 ES\001
2134 0 -1 0 0 5 13 0.0000 0 106 334 3900 2006 IAN\001
2144 0 -1 0 0 5 13 0.0000 0 106 557 2006 2006 SELEN\001
2154 0 -1 0 0 5 13 0.0000 0 106 891 1783 1560 DISULPHI\001
2164 0 -1 0 0 5 13 0.0000 0 106 223 4011 1560 NE\001
2174 0 -1 0 0 5 13 0.0000 0 106 1114 1783 2451 D U PH NE\001
2184 0 -1 0 0 5 13 0.0000 0 106 891 3120 2451 IS U O\001
2194 0 -1 0 0 5 13 0.0000 0 106 1114 446 2897 TROEZENIAN\001
2204 0 -1 0 0 5 13 0.0000 0 106 1114 3120 2897 TROEZENIAN\001
2214 0 -1 0 0 12 13 0.0000 4 106 1114 444 3313 ESSELENIST\001
2224 0 -1 0 0 0 13 0.0000 0 50 106 1616 3287 =\001
2234 0 -1 0 0 0 13 0.0000 0 50 106 1616 2841 =\001
2244 0 -1 0 0 0 13 0.0000 0 50 106 1616 2396 =\001
2254 0 -1 0 0 0 13 0.0000 0 50 106 1616 1950 =\001
2264 0 -1 0 0 0 13 0.0000 0 50 106 1616 1504 =\001
2274 0 -1 0 0 0 13 0.0000 0 50 106 1616 1059 =\001
2284 0 -1 0 0 0 13 0.0000 0 50 106 1616 613 =\001
2294 0 -1 0 0 0 13 0.0000 0 50 106 1616 167 =\001
2304 0 -1 0 0 0 13 0.0000 0 89 106 2953 3287 +\001
2314 0 -1 0 0 0 13 0.0000 0 89 106 2953 2396 +\001
2324 0 -1 0 0 0 13 0.0000 0 89 106 2953 1950 +\001
2334 0 -1 0 0 0 13 0.0000 0 89 106 2953 1504 +\001
2344 0 -1 0 0 0 13 0.0000 0 89 106 2953 1059 +\001
2354 0 -1 0 0 0 13 0.0000 0 89 106 2953 613 +\001
2364 0 -1 0 0 0 13 0.0000 0 89 106 2953 167 +\001
2374 0 -1 0 0 0 13 0.0000 0 89 106 2953 2841 +\001
2384 0 -1 0 0 0 13 0.0000 0 128 340 0 1504 F4 =\001
2394 0 -1 0 0 0 13 0.0000 0 50 106 4290 3287 =\001
2404 0 -1 0 0 0 13 0.0000 0 50 106 4290 2841 =\001
2414 0 -1 0 0 0 13 0.0000 0 50 106 4290 2368 =\001
2424 0 -1 0 0 0 13 0.0000 0 50 106 4290 1950 =\001
2434 0 -1 0 0 0 13 0.0000 0 50 106 4290 1476 =\001
2444 0 -1 0 0 0 13 0.0000 0 50 106 4290 1059 =\001
2454 0 -1 0 0 0 13 0.0000 0 50 106 4290 613 =\001
2464 0 -1 0 0 0 13 0.0000 0 50 106 4290 167 =\001
2474 0 -1 0 0 5 13 0.0000 0 106 2451 1783 3343 ESSE ENI L ST\001
2484 0 -1 0 0 5 13 0.0000 0 106 111 4457 223 D\001
2494 0 -1 0 0 5 13 0.0000 0 106 446 4457 669 BUPH\001
2504 0 -1 0 0 5 13 0.0000 0 106 446 4457 1114 EEND\001
2514 0 -1 0 0 5 13 0.0000 0 106 223 4457 1560 NE\001
2524 0 -1 0 0 5 13 0.0000 0 106 557 4457 2006 ESIAN\001
2534 0 -1 0 0 5 13 0.0000 0 106 446 4457 2451 ISUO\001
2544 0 -1 0 0 5 13 0.0000 0 106 1114 4457 2897 TROEZENIAN\001
2554 0 -1 0 0 5 13 0.0000 0 106 334 4457 3343 LST\001
256-6
diff --git a/xdelta1/doc/old/dcc99/figs/onestep.fig.normalsize b/xdelta1/doc/old/dcc99/figs/onestep.fig.normalsize
new file mode 100755
index 0000000..75d6712
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/figs/onestep.fig.normalsize
@@ -0,0 +1,254 @@
1#FIG 3.1
2Landscape
3Center
4Inches
51200 2
66 2100 9900 15300 10875
74 0 -1 0 0 12 34 0.0000 4 300 2100 2100 10275 Actual \001
84 0 -1 0 0 12 34 0.0000 4 300 1200 2100 10755 File\001
94 0 -1 0 0 12 34 0.0000 4 375 1200 5700 10275 Copy\001
104 0 -1 0 0 12 34 0.0000 4 375 2400 5700 10755 Segments\001
114 0 -1 0 0 12 34 0.0000 4 285 1800 9300 10200 Insert\001
124 0 -1 0 0 12 34 0.0000 4 375 2400 9300 10680 Segments\001
134 0 -1 0 0 12 34 0.0000 4 390 2400 12900 10275 Physical\001
144 0 -1 0 0 12 34 0.0000 4 375 2100 12900 10755 Storage\001
15-6
162 2 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 5
17 1500 600 4500 600 4500 1200 1500 1200 1500 600
182 2 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 5
19 1500 1800 4500 1800 4500 2400 1500 2400 1500 1800
202 2 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 5
21 1500 3000 4500 3000 4500 3600 1500 3600 1500 3000
222 2 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 5
23 1500 4200 4500 4200 4500 4800 1500 4800 1500 4200
242 2 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 5
25 1500 5400 4500 5400 4500 6000 1500 6000 1500 5400
262 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
27 1500 5400 4500 5400 4500 6000 1500 6000 1500 5400
282 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
29 1500 4200 4500 4200 4500 4800 1500 4800 1500 4200
302 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
31 1500 3000 4500 3000 4500 3600 1500 3600 1500 3000
322 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
33 1500 1800 4500 1800 4500 2400 1500 2400 1500 1800
342 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
35 1500 600 4500 600 4500 1200 1500 1200 1500 600
362 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
37 1500 6600 4500 6600 4500 7200 1500 7200 1500 6600
382 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
39 5100 600 8100 600 8100 1200 5100 1200 5100 600
402 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
41 5100 1800 8100 1800 8100 2400 5100 2400 5100 1800
422 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
43 5100 3000 8100 3000 8100 3600 5100 3600 5100 3000
442 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
45 5100 4200 8100 4200 8100 4800 5100 4800 5100 4200
462 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
47 5100 5400 8100 5400 8100 6000 5100 6000 5100 5400
482 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
49 5100 6600 8100 6600 8100 7200 5100 7200 5100 6600
502 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
51 8700 600 11700 600 11700 1200 8700 1200 8700 600
522 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
53 8700 1800 11700 1800 11700 2400 8700 2400 8700 1800
542 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
55 8700 3000 11700 3000 11700 3600 8700 3600 8700 3000
562 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
57 8700 4200 11700 4200 11700 4800 8700 4800 8700 4200
582 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
59 8700 5400 11700 5400 11700 6000 8700 6000 8700 5400
602 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
61 8700 6600 11700 6600 11700 7200 8700 7200 8700 6600
622 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
63 5400 600 8100 600 8100 1200 5400 1200 5400 600
642 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
65 8700 600 9000 600 9000 1200 8700 1200 8700 600
662 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
67 5400 1800 6000 1800 6000 2400 5400 2400 5400 1800
682 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
69 6300 1800 6600 1800 6600 2400 6300 2400 6300 1800
702 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
71 7200 1800 8100 1800 8100 2400 7200 2400 7200 1800
722 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
73 8700 1800 9000 1800 9000 2400 8700 2400 8700 1800
742 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
75 9600 1800 9900 1800 9900 2400 9600 2400 9600 1800
762 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
77 10200 1800 10800 1800 10800 2400 10200 2400 10200 1800
782 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
79 5100 3000 6000 3000 6000 3600 5100 3600 5100 3000
802 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
81 6300 3000 6600 3000 6600 3600 6300 3600 6300 3000
822 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
83 7200 3000 7500 3000 7500 3600 7200 3600 7200 3000
842 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
85 7800 3000 8100 3000 8100 3600 7800 3600 7800 3000
862 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
87 9600 3000 9900 3000 9900 3600 9600 3600 9600 3000
882 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
89 10200 3000 10800 3000 10800 3600 10200 3600 10200 3000
902 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
91 11100 3000 11400 3000 11400 3600 11100 3600 11100 3000
922 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
93 6900 4200 7200 4200 7200 4200 6900 4200 6900 4200
942 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
95 5700 4200 6000 4200 6000 4800 5700 4800 5700 4200
962 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
97 6300 4200 6600 4200 6600 4800 6300 4800 6300 4200
982 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
99 5100 4200 5400 4200 5400 4800 5100 4800 5100 4200
1002 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
101 7200 4200 7500 4200 7500 4800 7200 4800 7200 4200
1022 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
103 6000 4200 6300 4200 6300 4800 6000 4800 6000 4200
1042 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
105 6600 4200 7200 4200 7200 4800 6600 4800 6600 4200
1062 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
107 5700 5400 6000 5400 6000 6000 5700 6000 5700 5400
1082 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
109 6300 5400 6600 5400 6600 6000 6300 6000 6300 5400
1102 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
111 6000 5400 6300 5400 6300 6000 6000 6000 6000 5400
1122 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
113 6600 5400 7200 5400 7200 6000 6600 6000 6600 5400
1142 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
115 10800 5400 11700 5400 11700 6000 10800 6000 10800 5400
1162 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
117 8700 5400 9300 5400 9300 6000 8700 6000 8700 5400
1182 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
119 11100 4200 11700 4200 11700 4800 11100 4800 11100 4200
1202 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
121 5100 6600 5400 6600 5400 7200 5100 7200 5100 6600
1222 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
123 6000 6600 6300 6600 6300 7200 6000 7200 6000 6600
1242 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
125 6600 7200 7200 7200 7200 6600 6600 6600 6600 7200
1262 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
127 7500 6600 8100 6600 8100 7200 7500 7200 7500 6600
1282 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
129 9000 6600 9600 6600 9600 7200 9000 7200 9000 6600
1302 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
131 9900 6600 10200 6600 10200 7200 9900 7200 9900 6600
1322 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
133 10800 6600 11100 6600 11100 7200 10800 7200 10800 6600
1342 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
135 12300 6600 13500 6600 13500 7200 12300 7200 12300 6600
1362 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
137 12300 4800 12900 4800 12900 4200 12300 4200 12300 4800
1382 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
139 12300 3600 13500 3600 13500 3000 12300 3000 12300 3600
1402 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
141 12300 2400 13500 2400 13500 1800 12300 1800 12300 2400
1422 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
143 12300 600 12600 600 12600 1200 12300 1200 12300 600
1442 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
145 1500 7800 4500 7800 4500 8400 1500 8400 1500 7800
1462 2 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 5
147 1500 7800 4500 7800 4500 8400 1500 8400 1500 7800
1482 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
149 1500 7800 4500 7800 4500 8400 1500 8400 1500 7800
1502 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
151 5100 7800 8100 7800 8100 8400 5100 8400 5100 7800
1522 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
153 8700 7800 11700 7800 11700 8400 8700 8400 8700 7800
1542 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
155 8700 7800 11700 7800 11700 8400 8700 8400 8700 7800
1562 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
157 12300 7800 15300 7800 15300 8400 12300 8400 12300 7800
1582 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
159 1496 8996 4496 8996 4496 9596 1496 9596 1496 8996
1602 2 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 5
161 1496 8996 4496 8996 4496 9596 1496 9596 1496 8996
1622 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
163 5096 8996 8096 8996 8096 9596 5096 9596 5096 8996
1642 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
165 1496 8996 4496 8996 4496 9596 1496 9596 1496 8996
1662 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
167 5100 9000 5400 9000 5400 9600 5100 9600 5100 9000
1682 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
169 5400 9000 5700 9000 5700 9600 5400 9600 5400 9000
1702 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
171 5700 9000 6000 9000 6000 9600 5700 9600 5700 9000
1722 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
173 6000 9000 6300 9000 6300 9600 6000 9600 6000 9000
1742 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
175 6600 9000 7200 9000 7200 9600 6600 9600 6600 9000
1762 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
177 9900 9000 10200 9000 10200 9600 9900 9600 9900 9000
1782 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
179 7200 9000 7500 9000 7500 9600 7200 9600 7200 9000
1802 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
181 11100 9000 11700 9000 11700 9600 11100 9600 11100 9000
1822 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
183 12300 9000 13200 9000 13200 9600 12300 9600 12300 9000
1842 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
185 8696 8996 11696 8996 11696 9596 8696 9596 8696 8996
1862 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
187 12300 5400 13800 5400 13800 6000 12300 6000 12300 5400
1884 0 -1 0 0 0 34 0.0000 0 345 1035 300 8250 F7 = \001
1894 0 -1 0 0 0 34 0.0000 0 345 915 300 7050 F6 =\001
1904 0 -1 0 0 0 34 0.0000 0 345 915 300 5850 F5 =\001
1914 0 -1 0 0 0 34 0.0000 0 345 915 300 3450 F3 =\001
1924 0 -1 0 0 0 34 0.0000 0 345 915 300 2250 F2 =\001
1934 0 -1 0 0 0 34 0.0000 0 345 915 300 1050 F1 =\001
1944 0 -1 0 0 0 34 0.0000 0 345 915 300 9450 F8 =\001
1954 0 -1 0 0 5 34 0.0000 0 285 3000 1500 1200 DISULPHIDE\001
1964 0 -1 0 0 5 34 0.0000 0 285 3000 1500 2400 BISULPHIDE\001
1974 0 -1 0 0 5 34 0.0000 0 285 3000 1500 3600 DISELENIDE\001
1984 0 -1 0 0 5 34 0.0000 0 285 3000 1500 4800 DISULPHINE\001
1994 0 -1 0 0 5 34 0.0000 0 285 3000 1500 6000 ESSELENIAN\001
2004 0 -1 0 0 5 34 0.0000 0 285 3000 1500 7200 DISULPHONE\001
2014 0 -1 0 0 5 34 0.0000 0 285 2700 5400 1200 ISULPHIDE\001
2024 0 -1 0 0 5 34 0.0000 0 285 300 8700 1200 D\001
2034 0 -1 0 0 5 34 0.0000 0 285 600 5400 2400 IS\001
2044 0 -1 0 0 5 34 0.0000 0 285 300 6300 2400 L\001
2054 0 -1 0 0 5 34 0.0000 0 285 900 7200 2400 IDE\001
2064 0 -1 0 0 5 34 0.0000 0 285 300 8700 2400 B\001
2074 0 -1 0 0 5 34 0.0000 0 285 300 9600 2400 U\001
2084 0 -1 0 0 5 34 0.0000 0 285 600 10200 2400 PH\001
2094 0 -1 0 0 5 34 0.0000 0 285 1800 9600 3600 E EN D\001
2104 0 -1 0 0 5 34 0.0000 0 285 3000 5100 3600 DIS L I E\001
2114 0 -1 0 0 5 34 0.0000 0 285 600 8700 6000 ES\001
2124 0 -1 0 0 5 34 0.0000 0 285 900 10800 6000 IAN\001
2134 0 -1 0 0 5 34 0.0000 0 285 1500 5700 6000 SELEN\001
2144 0 -1 0 0 5 34 0.0000 0 285 2400 5100 4800 DISULPHI\001
2154 0 -1 0 0 5 34 0.0000 0 285 600 11100 4800 NE\001
2164 0 -1 0 0 5 34 0.0000 0 285 3000 5100 7200 D U PH NE\001
2174 0 -1 0 0 5 34 0.0000 0 285 2400 8700 7200 IS U O\001
2184 0 -1 0 0 5 34 0.0000 0 285 3000 1500 8400 TROEZENIAN\001
2194 0 -1 0 0 5 34 0.0000 0 285 3000 8700 8400 TROEZENIAN\001
2204 0 -1 0 0 12 34 0.0000 4 285 3000 1496 9521 ESSELENIST\001
2214 0 -1 0 0 0 34 0.0000 0 135 285 4650 9450 =\001
2224 0 -1 0 0 0 34 0.0000 0 135 285 4650 8250 =\001
2234 0 -1 0 0 0 34 0.0000 0 135 285 4650 7050 =\001
2244 0 -1 0 0 0 34 0.0000 0 135 285 4650 5850 =\001
2254 0 -1 0 0 0 34 0.0000 0 135 285 4650 4650 =\001
2264 0 -1 0 0 0 34 0.0000 0 135 285 4650 3450 =\001
2274 0 -1 0 0 0 34 0.0000 0 135 285 4650 2250 =\001
2284 0 -1 0 0 0 34 0.0000 0 135 285 4650 1050 =\001
2294 0 -1 0 0 0 34 0.0000 0 240 285 8250 9450 +\001
2304 0 -1 0 0 0 34 0.0000 0 240 285 8250 7050 +\001
2314 0 -1 0 0 0 34 0.0000 0 240 285 8250 5850 +\001
2324 0 -1 0 0 0 34 0.0000 0 240 285 8250 4650 +\001
2334 0 -1 0 0 0 34 0.0000 0 240 285 8250 3450 +\001
2344 0 -1 0 0 0 34 0.0000 0 240 285 8250 2250 +\001
2354 0 -1 0 0 0 34 0.0000 0 240 285 8250 1050 +\001
2364 0 -1 0 0 0 34 0.0000 0 240 285 8250 8250 +\001
2374 0 -1 0 0 0 34 0.0000 0 345 915 300 4650 F4 =\001
2384 0 -1 0 0 0 34 0.0000 0 135 285 11850 9450 =\001
2394 0 -1 0 0 0 34 0.0000 0 135 285 11850 8250 =\001
2404 0 -1 0 0 0 34 0.0000 0 135 285 11850 6975 =\001
2414 0 -1 0 0 0 34 0.0000 0 135 285 11850 5850 =\001
2424 0 -1 0 0 0 34 0.0000 0 135 285 11850 4575 =\001
2434 0 -1 0 0 0 34 0.0000 0 135 285 11850 3450 =\001
2444 0 -1 0 0 0 34 0.0000 0 135 285 11850 2250 =\001
2454 0 -1 0 0 0 34 0.0000 0 135 285 11850 1050 =\001
2464 0 -1 0 0 5 34 0.0000 0 285 6600 5100 9600 ESSE ENI L ST\001
2474 0 -1 0 0 5 34 0.0000 0 285 300 12300 1200 D\001
2484 0 -1 0 0 5 34 0.0000 0 285 1200 12300 2400 BUPH\001
2494 0 -1 0 0 5 34 0.0000 0 285 1200 12300 3600 EEND\001
2504 0 -1 0 0 5 34 0.0000 0 285 600 12300 4800 NE\001
2514 0 -1 0 0 5 34 0.0000 0 285 1500 12300 6000 ESIAN\001
2524 0 -1 0 0 5 34 0.0000 0 285 1200 12300 7200 ISUO\001
2534 0 -1 0 0 5 34 0.0000 0 285 3000 12300 8400 TROEZENIAN\001
2544 0 -1 0 0 5 34 0.0000 0 285 900 12300 9600 LST\001
diff --git a/xdelta1/doc/old/dcc99/figs/rcs.eps b/xdelta1/doc/old/dcc99/figs/rcs.eps
new file mode 100755
index 0000000..4a07e10
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/figs/rcs.eps
@@ -0,0 +1,180 @@
1%!PS-Adobe-2.0 EPSF-2.0
2%%Title: rcs.fig
3%%Creator: fig2dev Version 3.1 Patchlevel 2
4%%CreationDate: Mon May 4 03:13:08 1998
5%%For: jmacd@icw.EECS.Berkeley.EDU (Josh MacDonald,,,,ARN)
6%Magnification: 1.00
7%%Orientation: Portrait
8%%BoundingBox: 0 0 121 162
9%%Pages: 0
10%%BeginSetup
11%%IncludeFeature: *PageSize Letter
12%%EndSetup
13%%EndComments
14/$F2psDict 200 dict def
15$F2psDict begin
16$F2psDict /mtrx matrix put
17/col-1 {0 setgray} bind def
18/col0 {0.000 0.000 0.000 srgb} bind def
19/col1 {0.000 0.000 1.000 srgb} bind def
20/col2 {0.000 1.000 0.000 srgb} bind def
21/col3 {0.000 1.000 1.000 srgb} bind def
22/col4 {1.000 0.000 0.000 srgb} bind def
23/col5 {1.000 0.000 1.000 srgb} bind def
24/col6 {1.000 1.000 0.000 srgb} bind def
25/col7 {1.000 1.000 1.000 srgb} bind def
26/col8 {0.000 0.000 0.560 srgb} bind def
27/col9 {0.000 0.000 0.690 srgb} bind def
28/col10 {0.000 0.000 0.820 srgb} bind def
29/col11 {0.530 0.810 1.000 srgb} bind def
30/col12 {0.000 0.560 0.000 srgb} bind def
31/col13 {0.000 0.690 0.000 srgb} bind def
32/col14 {0.000 0.820 0.000 srgb} bind def
33/col15 {0.000 0.560 0.560 srgb} bind def
34/col16 {0.000 0.690 0.690 srgb} bind def
35/col17 {0.000 0.820 0.820 srgb} bind def
36/col18 {0.560 0.000 0.000 srgb} bind def
37/col19 {0.690 0.000 0.000 srgb} bind def
38/col20 {0.820 0.000 0.000 srgb} bind def
39/col21 {0.560 0.000 0.560 srgb} bind def
40/col22 {0.690 0.000 0.690 srgb} bind def
41/col23 {0.820 0.000 0.820 srgb} bind def
42/col24 {0.500 0.190 0.000 srgb} bind def
43/col25 {0.630 0.250 0.000 srgb} bind def
44/col26 {0.750 0.380 0.000 srgb} bind def
45/col27 {1.000 0.500 0.500 srgb} bind def
46/col28 {1.000 0.630 0.630 srgb} bind def
47/col29 {1.000 0.750 0.750 srgb} bind def
48/col30 {1.000 0.880 0.880 srgb} bind def
49/col31 {1.000 0.840 0.000 srgb} bind def
50
51end
52save
53-31.0 178.0 translate
541 -1 scale
55
56/cp {closepath} bind def
57/ef {eofill} bind def
58/gr {grestore} bind def
59/gs {gsave} bind def
60/sa {save} bind def
61/rs {restore} bind def
62/l {lineto} bind def
63/m {moveto} bind def
64/rm {rmoveto} bind def
65/n {newpath} bind def
66/s {stroke} bind def
67/sh {show} bind def
68/slc {setlinecap} bind def
69/slj {setlinejoin} bind def
70/slw {setlinewidth} bind def
71/srgb {setrgbcolor} bind def
72/rot {rotate} bind def
73/sc {scale} bind def
74/sd {setdash} bind def
75/ff {findfont} bind def
76/sf {setfont} bind def
77/scf {scalefont} bind def
78/sw {stringwidth} bind def
79/tr {translate} bind def
80/tnt {dup dup currentrgbcolor
81 4 -2 roll dup 1 exch sub 3 -1 roll mul add
82 4 -2 roll dup 1 exch sub 3 -1 roll mul add
83 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
84 bind def
85/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
86 4 -2 roll mul srgb} bind def
87 /DrawEllipse {
88 /endangle exch def
89 /startangle exch def
90 /yrad exch def
91 /xrad exch def
92 /y exch def
93 /x exch def
94 /savematrix mtrx currentmatrix def
95 x y tr xrad yrad sc 0 0 1 startangle endangle arc
96 closepath
97 savematrix setmatrix
98 } def
99
100/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
101/$F2psEnd {$F2psEnteredState restore end} def
102%%EndProlog
103
104$F2psBegin
10510 setmiterlimit
106n 0 792 m 0 0 l 612 0 l 612 792 l cp clip
107 0.06000 0.06000 sc
1087.500 slw
109% Ellipse
110n 742 2767 54 54 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr
111
112% Ellipse
113n 764 418 54 54 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr
114
115% Ellipse
116n 1942 1582 54 54 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr
117
118% Ellipse
119n 1950 360 54 54 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr
120
121% Ellipse
122n 742 1567 54 54 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr
123
124% Polyline
125gs clippath
126780 2628 m 750 2748 l 720 2628 l 720 2790 l 780 2790 l cp clip
127n 750 2775 m 750 1650 l gs col7 0.00 shd ef gr gs col-1 s gr gr
128
129% arrowhead
130n 780 2628 m 750 2748 l 720 2628 l 750 2628 l 780 2628 l cp gs 0.00 setgray ef gr col-1 s
131% Polyline
132gs clippath
133780 1428 m 750 1548 l 720 1428 l 720 1590 l 780 1590 l cp clip
134n 750 1575 m 750 450 l gs col7 0.00 shd ef gr gs col-1 s gr gr
135
136% arrowhead
137n 780 1428 m 750 1548 l 720 1428 l 750 1428 l 780 1428 l cp gs 0.00 setgray ef gr col-1 s
138% Polyline
139gs clippath
1401920 522 m 1950 402 l 1980 522 l 1980 360 l 1920 360 l cp clip
141n 1950 1500 m 1950 375 l gs col7 0.00 shd ef gr gs col-1 s gr gr
142
143% arrowhead
144n 1920 522 m 1950 402 l 1980 522 l 1950 522 l 1920 522 l cp gs 0.00 setgray ef gr col-1 s
145% Polyline
146gs clippath
1471765 1703 m 1870 1639 l 1807 1745 l 1922 1631 l 1879 1588 l cp clip
148n 765 2745 m 1890 1620 l gs col7 0.00 shd ef gr gs col-1 s gr gr
149
150% arrowhead
151n 1765 1703 m 1870 1639 l 1807 1745 l 1786 1724 l 1765 1703 l cp gs 0.00 setgray ef gr col-1 s
152/Times-Roman ff 180.00 scf sf
153825 2925 m
154gs 1 -1 sc (1.1) col-1 sh gr
155/Times-Roman ff 180.00 scf sf
1562025 1575 m
157gs 1 -1 sc (1.1.1.1) col-1 sh gr
158/Times-Roman ff 180.00 scf sf
1592025 375 m
160gs 1 -1 sc (1.1.1.2) col-1 sh gr
161/Times-Roman ff 180.00 scf sf
162825 375 m
163gs 1 -1 sc (1.3) col-1 sh gr
164/Times-Roman ff 180.00 scf sf
165825 1575 m
166gs 1 -1 sc (1.2) col-1 sh gr
167/Times-Roman ff 180.00 scf sf
168525 2100 m
169gs 1 -1 sc (d1) col-1 sh gr
170/Times-Roman ff 180.00 scf sf
1711500 2325 m
172gs 1 -1 sc (d2) col-1 sh gr
173/Times-Roman ff 180.00 scf sf
174525 975 m
175gs 1 -1 sc (d3) col-1 sh gr
176/Times-Roman ff 180.00 scf sf
1772025 975 m
178gs 1 -1 sc (d4) col-1 sh gr
179$F2psEnd
180rs
diff --git a/xdelta1/doc/old/dcc99/figs/rcs.fig b/xdelta1/doc/old/dcc99/figs/rcs.fig
new file mode 100755
index 0000000..94004af
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/figs/rcs.fig
@@ -0,0 +1,31 @@
1#FIG 3.1
2Portrait
3Center
4Inches
51200 2
61 4 0 1 -1 7 0 0 0 0.000 1 0.0000 742 2767 54 54 705 2730 780 2805
71 4 0 1 -1 7 0 0 0 0.000 1 0.0000 764 418 54 54 727 381 802 456
81 4 0 1 -1 7 0 0 0 0.000 1 0.0000 1942 1582 54 54 1905 1545 1980 1620
91 4 0 1 -1 7 0 0 0 0.000 1 0.0000 1950 360 54 54 1913 323 1988 398
101 4 0 1 -1 7 0 0 0 0.000 1 0.0000 742 1567 54 54 705 1530 780 1605
112 1 0 1 -1 7 0 0 0 0.000 0 0 -1 0 1 2
12 1 1 1.00 60.00 120.00
13 750 2775 750 1650
142 1 0 1 -1 7 0 0 0 0.000 0 0 -1 0 1 2
15 1 1 1.00 60.00 120.00
16 750 1575 750 450
172 1 0 1 -1 7 0 0 0 0.000 0 0 -1 1 0 2
18 1 1 1.00 60.00 120.00
19 1950 1500 1950 375
202 1 0 1 -1 7 0 0 0 0.000 0 0 -1 1 0 2
21 1 1 1.00 60.00 120.00
22 765 2745 1890 1620
234 0 -1 0 0 0 12 0.0000 4 135 225 825 2925 1.1\001
244 0 -1 0 0 0 12 0.0000 4 135 495 2025 1575 1.1.1.1\001
254 0 -1 0 0 0 12 0.0000 4 135 495 2025 375 1.1.1.2\001
264 0 -1 0 0 0 12 0.0000 4 135 225 825 375 1.3\001
274 0 -1 0 0 0 12 0.0000 4 135 225 825 1575 1.2\001
284 0 -1 0 0 0 12 0.0000 4 135 180 525 2100 d1\001
294 0 -1 0 0 0 12 0.0000 4 135 180 1500 2325 d2\001
304 0 -1 0 0 0 12 0.0000 4 135 180 525 975 d3\001
314 0 -1 0 0 0 12 0.0000 4 135 180 2025 975 d4\001
diff --git a/xdelta1/doc/old/dcc99/figs/sizes.eps b/xdelta1/doc/old/dcc99/figs/sizes.eps
new file mode 100755
index 0000000..b1183e1
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/figs/sizes.eps
@@ -0,0 +1,707 @@
1%!PS-Adobe-3.0 EPSF-3.0
2%%Creator: MATLAB, The Mathworks, Inc.
3%%Title: ../figs/sizes.eps
4%%CreationDate: 11/14/98 04:51:39
5%%DocumentNeededFonts: Helvetica
6%%DocumentProcessColors: Cyan Magenta Yellow Black
7%%LanguageLevel: 2
8%%Pages: 1
9%%BoundingBox: 65 196 560 616
10%%EndComments
11
12%%BeginProlog
13
14% MathWorks dictionary
15/MathWorks 150 dict begin
16
17% definition operators
18/bdef {bind def} bind def
19/ldef {load def} bind def
20/xdef {exch def} bdef
21/xstore {exch store} bdef
22
23% operator abbreviations
24/c /clip ldef
25/cc /concat ldef
26/cp /closepath ldef
27/gr /grestore ldef
28/gs /gsave ldef
29/mt /moveto ldef
30/np /newpath ldef
31/cm /currentmatrix ldef
32/sm /setmatrix ldef
33/rc {rectclip} bdef
34/rf {rectfill} bdef
35/rm /rmoveto ldef
36/rl /rlineto ldef
37/s /show ldef
38/sc {setcmykcolor} bdef
39/sr /setrgbcolor ldef
40/sg /setgray ldef
41/w /setlinewidth ldef
42/j /setlinejoin ldef
43/cap /setlinecap ldef
44
45% page state control
46/pgsv () def
47/bpage {/pgsv save def} bdef
48/epage {pgsv restore} bdef
49/bplot /gsave ldef
50/eplot {stroke grestore} bdef
51
52% orientation switch
53/portraitMode 0 def
54/landscapeMode 1 def
55
56% coordinate system mappings
57/dpi2point 0 def
58
59% font control
60/FontSize 0 def
61/FMS {
62 /FontSize xstore %save size off stack
63 findfont
64 [FontSize 0 0 FontSize neg 0 0]
65 makefont
66 setfont
67 }bdef
68
69/reencode {
70exch dup where
71{pop load} {pop StandardEncoding} ifelse
72exch
73dup 3 1 roll
74findfont dup length dict begin
75 { 1 index /FID ne {def}{pop pop} ifelse } forall
76 /Encoding exch def
77 currentdict
78end
79definefont pop
80} bdef
81
82/isroman {
83findfont /CharStrings get
84/Agrave known
85} bdef
86
87/FMSR {
883 1 roll 1 index
89dup isroman
90{reencode} {pop pop} ifelse
91exch FMS
92} bdef
93
94/csm {
95 1 dpi2point div -1 dpi2point div scale
96 neg translate
97 landscapeMode eq {90 rotate} if
98 } bdef
99
100% line types: solid, dotted, dashed, dotdash
101/SO { [] 0 setdash } bdef
102/DO { [.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef
103/DA { [6 dpi2point mul] 0 setdash } bdef
104/DD { [.5 dpi2point mul 4 dpi2point mul 6 dpi2point mul 4 dpi2point mul] 0 setdash } bdef
105
106% macros for lines and objects
107/L {
108 lineto
109 stroke
110 } bdef
111/MP {
112 3 1 roll moveto
113 1 sub {rlineto} repeat
114 } bdef
115/AP {
116 {rlineto} repeat
117 } bdef
118/PP {
119 closepath eofill
120 } bdef
121/DP {
122 closepath stroke
123 } bdef
124/MR {
125 4 -2 roll moveto
126 dup 0 exch rlineto
127 exch 0 rlineto
128 neg 0 exch rlineto
129 closepath
130 } bdef
131/FR {
132 MR stroke
133 } bdef
134/PR {
135 MR fill
136 } bdef
137/L1i {
138 { currentfile picstr readhexstring pop } image
139 } bdef
140
141/tMatrix matrix def
142/MakeOval {
143 newpath
144 tMatrix currentmatrix pop
145 translate scale
146 0 0 1 0 360 arc
147 tMatrix setmatrix
148 } bdef
149/FO {
150 MakeOval
151 stroke
152 } bdef
153/PO {
154 MakeOval
155 fill
156 } bdef
157
158/PD {
159 currentlinecap 1 setlinecap 3 1 roll 2 copy moveto lineto stroke setlinecap
160 } bdef
161
162/FA {
163 newpath
164 tMatrix currentmatrix pop
165 translate scale
166 0 0 1 5 -2 roll arc
167 tMatrix setmatrix
168 stroke
169 } bdef
170/PA {
171 newpath
172 tMatrix currentmatrix pop
173 translate 0 0 moveto scale
174 0 0 1 5 -2 roll arc
175 closepath
176 tMatrix setmatrix
177 fill
178 } bdef
179
180
181/FAn {
182 newpath
183 tMatrix currentmatrix pop
184 translate scale
185 0 0 1 5 -2 roll arcn
186 tMatrix setmatrix
187 stroke
188 } bdef
189/PAn {
190 newpath
191 tMatrix currentmatrix pop
192 translate 0 0 moveto scale
193 0 0 1 5 -2 roll arcn
194 closepath
195 tMatrix setmatrix
196 fill
197 } bdef
198
199
200
201currentdict end def
202%%EndProlog
203
204%%BeginSetup
205MathWorks begin
206
2070 cap
208
209end
210%%EndSetup
211
212%%Page: 1 1
213%%BeginPageSetup
214%%PageBoundingBox: 65 196 560 616
215MathWorks begin
216bpage
217%%EndPageSetup
218
219%%BeginObject: graph1 1
220bplot
221
222/dpi2point 12 def
223portraitMode 0216 7344 csm
224
225 566 -48 5940 5037 rc
22688 dict begin %Colortable dictionary
227/c0 { 0 0 0 sr} bdef
228/c1 { 1 1 1 sr} bdef
229/c2 { 1 0 0 sr} bdef
230/c3 { 0 1 0 sr} bdef
231/c4 { 0 0 1 sr} bdef
232/c5 { 1 1 0 sr} bdef
233/c6 { 1 0 1 sr} bdef
234/c7 { 0 1 1 sr} bdef
2351 j
2361 sg
237 0 0 6916 5185 rf
2386 w
2390 4225 5358 0 0 -4225 899 4613 4 MP
240PP
241-5358 0 0 4225 5358 0 0 -4225 899 4613 5 MP stroke
242DO
2434 w
244SO
2456 w
2460 sg
247 899 4613 mt 6257 4613 L
248 899 388 mt 6257 388 L
249 899 4613 mt 899 388 L
2506257 4613 mt 6257 388 L
251 899 4613 mt 6257 4613 L
252 899 4613 mt 899 388 L
253 899 4613 mt 899 4559 L
254 899 388 mt 899 442 L
255%%IncludeResource: font Helvetica
256/Helvetica /ISOLatin1Encoding 120 FMSR
257
258 866 4759 mt
259(0) s
2601569 4613 mt 1569 4559 L
2611569 388 mt 1569 442 L
2621403 4759 mt
263(50000) s
2642239 4613 mt 2239 4559 L
2652239 388 mt 2239 442 L
2662039 4759 mt
267(100000) s
2682908 4613 mt 2908 4559 L
2692908 388 mt 2908 442 L
2702708 4759 mt
271(150000) s
2723578 4613 mt 3578 4559 L
2733578 388 mt 3578 442 L
2743378 4759 mt
275(200000) s
2764248 4613 mt 4248 4559 L
2774248 388 mt 4248 442 L
2784048 4759 mt
279(250000) s
2804918 4613 mt 4918 4559 L
2814918 388 mt 4918 442 L
2824718 4759 mt
283(300000) s
2845587 4613 mt 5587 4559 L
2855587 388 mt 5587 442 L
2865387 4759 mt
287(350000) s
2886257 4613 mt 6257 4559 L
2896257 388 mt 6257 442 L
2906057 4759 mt
291(400000) s
292 899 4613 mt 953 4613 L
2936257 4613 mt 6203 4613 L
294 798 4657 mt
295(0) s
296 899 4144 mt 953 4144 L
2976257 4144 mt 6203 4144 L
298 798 4188 mt
299(2) s
300 899 3674 mt 953 3674 L
3016257 3674 mt 6203 3674 L
302 798 3718 mt
303(4) s
304 899 3205 mt 953 3205 L
3056257 3205 mt 6203 3205 L
306 798 3249 mt
307(6) s
308 899 2735 mt 953 2735 L
3096257 2735 mt 6203 2735 L
310 798 2779 mt
311(8) s
312 899 2266 mt 953 2266 L
3136257 2266 mt 6203 2266 L
314 731 2310 mt
315(10) s
316 899 1796 mt 953 1796 L
3176257 1796 mt 6203 1796 L
318 731 1840 mt
319(12) s
320 899 1327 mt 953 1327 L
3216257 1327 mt 6203 1327 L
322 731 1371 mt
323(14) s
324 899 857 mt 953 857 L
3256257 857 mt 6203 857 L
326 731 901 mt
327(16) s
328 899 388 mt 953 388 L
3296257 388 mt 6203 388 L
330 731 432 mt
331(18) s
332 899 4613 mt 6257 4613 L
333 899 388 mt 6257 388 L
334 899 4613 mt 899 388 L
3356257 4613 mt 6257 388 L
336gs 899 388 5359 4226 rc
337/c8 { 1.000000 0.000000 0.000000 sr} bdef
338c8
3390 701 939 3735 2 MP stroke
34094 0 892 3735 2 MP stroke
34194 0 892 4436 2 MP stroke
3420 520 1073 3899 2 MP stroke
34394 0 1026 3899 2 MP stroke
34494 0 1026 4419 2 MP stroke
3450 565 1207 3863 2 MP stroke
34694 0 1160 3863 2 MP stroke
34794 0 1160 4428 2 MP stroke
3480 524 1341 3912 2 MP stroke
34994 0 1294 3912 2 MP stroke
35094 0 1294 4436 2 MP stroke
3510 537 1475 3911 2 MP stroke
35294 0 1428 3911 2 MP stroke
35394 0 1428 4448 2 MP stroke
3540 531 1609 3932 2 MP stroke
35594 0 1562 3932 2 MP stroke
35694 0 1562 4463 2 MP stroke
3570 429 1743 4033 2 MP stroke
35894 0 1696 4033 2 MP stroke
35994 0 1696 4462 2 MP stroke
3600 469 1877 3999 2 MP stroke
36194 0 1830 3999 2 MP stroke
36294 0 1830 4468 2 MP stroke
3630 475 2011 3947 2 MP stroke
36494 0 1964 3947 2 MP stroke
36594 0 1964 4422 2 MP stroke
3660 537 2145 3952 2 MP stroke
36794 0 2098 3952 2 MP stroke
36894 0 2098 4489 2 MP stroke
3690 643 2279 3785 2 MP stroke
37094 0 2232 3785 2 MP stroke
37194 0 2232 4428 2 MP stroke
3720 289 2413 4149 2 MP stroke
37394 0 2366 4149 2 MP stroke
37494 0 2366 4438 2 MP stroke
3750 398 2547 4055 2 MP stroke
37693 0 2500 4055 2 MP stroke
37793 0 2500 4453 2 MP stroke
3780 117 2681 4306 2 MP stroke
37993 0 2634 4306 2 MP stroke
38093 0 2634 4423 2 MP stroke
3810 787 2814 3762 2 MP stroke
38293 0 2768 3762 2 MP stroke
38393 0 2768 4549 2 MP stroke
3840 1316 2948 3182 2 MP stroke
38593 0 2902 3182 2 MP stroke
38693 0 2902 4498 2 MP stroke
3870 992 3082 3621 2 MP stroke
38893 0 3036 3621 2 MP stroke
38993 0 3036 4613 2 MP stroke
3900 678 3216 3863 2 MP stroke
39194 0 3169 3863 2 MP stroke
39294 0 3169 4541 2 MP stroke
3930 766 3350 3847 2 MP stroke
39494 0 3303 3847 2 MP stroke
39594 0 3303 4613 2 MP stroke
3960 101 3484 4280 2 MP stroke
39794 0 3437 4280 2 MP stroke
39894 0 3437 4381 2 MP stroke
3990 2112 3618 2501 2 MP stroke
40094 0 3571 2501 2 MP stroke
40194 0 3571 4613 2 MP stroke
4020 260 3752 4096 2 MP stroke
40394 0 3705 4096 2 MP stroke
40494 0 3705 4356 2 MP stroke
4050 4112 4020 501 2 MP stroke
40694 0 3973 501 2 MP stroke
40794 0 3973 4613 2 MP stroke
4080 887 4154 3567 2 MP stroke
40994 0 4107 3567 2 MP stroke
41094 0 4107 4454 2 MP stroke
4110 311 4288 4104 2 MP stroke
41294 0 4241 4104 2 MP stroke
41394 0 4241 4415 2 MP stroke
4140 1338 4422 3219 2 MP stroke
41594 0 4375 3219 2 MP stroke
41694 0 4375 4557 2 MP stroke
4170 1935 5226 2678 2 MP stroke
41893 0 5179 2678 2 MP stroke
41993 0 5179 4613 2 MP stroke
4200 343 5360 4087 2 MP stroke
42193 0 5313 4087 2 MP stroke
42293 0 5313 4430 2 MP stroke
4230 118 5627 4495 2 MP stroke
42493 0 5581 4495 2 MP stroke
42593 0 5581 4613 2 MP stroke
426
427gr
428c8
429 36 36 939 4085 FO
430 36 36 1073 4159 FO
431 36 36 1207 4145 FO
432 36 36 1341 4174 FO
433 36 36 1475 4179 FO
434 36 36 1609 4197 FO
435 36 36 1743 4248 FO
436 36 36 1877 4234 FO
437 36 36 2011 4184 FO
438 36 36 2145 4221 FO
439 36 36 2279 4106 FO
440 36 36 2413 4294 FO
441 36 36 2547 4254 FO
442 36 36 2681 4364 FO
443 36 36 2814 4155 FO
444 36 36 2948 3840 FO
445 36 36 3082 4117 FO
446 36 36 3216 4202 FO
447 36 36 3350 4230 FO
448 36 36 3484 4331 FO
449 36 36 3618 3822 FO
450 36 36 3752 4226 FO
451 36 36 4020 3285 FO
452 36 36 4154 4011 FO
453 36 36 4288 4259 FO
454 36 36 4422 3888 FO
455 36 36 5226 3645 FO
456 36 36 5360 4258 FO
457 36 36 5627 4554 FO
458gs 899 388 5359 4226 rc
459/c9 { 0.000000 0.000000 1.000000 sr} bdef
460c9
4610 1803 966 2652 2 MP stroke
46294 0 919 2652 2 MP stroke
46394 0 919 4455 2 MP stroke
4640 1317 1100 3068 2 MP stroke
46594 0 1053 3068 2 MP stroke
46694 0 1053 4385 2 MP stroke
4670 1366 1234 3010 2 MP stroke
46894 0 1187 3010 2 MP stroke
46994 0 1187 4376 2 MP stroke
4700 1304 1368 3094 2 MP stroke
47194 0 1321 3094 2 MP stroke
47294 0 1321 4398 2 MP stroke
4730 1078 1502 3280 2 MP stroke
47494 0 1455 3280 2 MP stroke
47594 0 1455 4358 2 MP stroke
4760 1155 1636 3247 2 MP stroke
47794 0 1589 3247 2 MP stroke
47894 0 1589 4402 2 MP stroke
4790 913 1770 3473 2 MP stroke
48094 0 1723 3473 2 MP stroke
48194 0 1723 4386 2 MP stroke
4820 868 1904 3503 2 MP stroke
48394 0 1857 3503 2 MP stroke
48494 0 1857 4371 2 MP stroke
4850 972 2038 3322 2 MP stroke
48693 0 1991 3322 2 MP stroke
48793 0 1991 4294 2 MP stroke
4880 950 2172 3448 2 MP stroke
48993 0 2125 3448 2 MP stroke
49093 0 2125 4398 2 MP stroke
4910 955 2305 3287 2 MP stroke
49293 0 2259 3287 2 MP stroke
49393 0 2259 4242 2 MP stroke
4940 922 2439 3553 2 MP stroke
49593 0 2393 3553 2 MP stroke
49693 0 2393 4475 2 MP stroke
4970 946 2573 3449 2 MP stroke
49894 0 2526 3449 2 MP stroke
49994 0 2526 4395 2 MP stroke
5000 356 2707 4083 2 MP stroke
50194 0 2660 4083 2 MP stroke
50294 0 2660 4439 2 MP stroke
5030 1027 2841 3442 2 MP stroke
50494 0 2794 3442 2 MP stroke
50594 0 2794 4469 2 MP stroke
5060 940 2975 3239 2 MP stroke
50794 0 2928 3239 2 MP stroke
50894 0 2928 4179 2 MP stroke
5090 923 3109 3690 2 MP stroke
51094 0 3062 3690 2 MP stroke
51194 0 3062 4613 2 MP stroke
5120 1293 3243 3297 2 MP stroke
51394 0 3196 3297 2 MP stroke
51494 0 3196 4590 2 MP stroke
5150 686 3377 3927 2 MP stroke
51694 0 3330 3927 2 MP stroke
51794 0 3330 4613 2 MP stroke
5180 383 3511 4010 2 MP stroke
51994 0 3464 4010 2 MP stroke
52094 0 3464 4393 2 MP stroke
5210 1395 3645 3036 2 MP stroke
52294 0 3598 3036 2 MP stroke
52394 0 3598 4431 2 MP stroke
5240 157 3779 4122 2 MP stroke
52594 0 3732 4122 2 MP stroke
52694 0 3732 4279 2 MP stroke
5270 881 4047 3563 2 MP stroke
52894 0 4000 3563 2 MP stroke
52994 0 4000 4444 2 MP stroke
5300 1226 4181 3089 2 MP stroke
53194 0 4134 3089 2 MP stroke
53294 0 4134 4315 2 MP stroke
5330 254 4315 4090 2 MP stroke
53494 0 4268 4090 2 MP stroke
53594 0 4268 4344 2 MP stroke
5360 489 4449 3828 2 MP stroke
53794 0 4402 3828 2 MP stroke
53894 0 4402 4317 2 MP stroke
5390 1007 5252 3606 2 MP stroke
54094 0 5205 3606 2 MP stroke
54194 0 5205 4613 2 MP stroke
5420 216 5386 4142 2 MP stroke
54394 0 5339 4142 2 MP stroke
54494 0 5339 4358 2 MP stroke
5450 86 5654 4527 2 MP stroke
54694 0 5607 4527 2 MP stroke
54794 0 5607 4613 2 MP stroke
548
549gr
550c9
5510 j
5520 -58 -58 0 0 58 58 0 937 3525 5 MP
553DP
5540 -58 -58 0 0 58 58 0 1071 3698 5 MP
555DP
5560 -58 -58 0 0 58 58 0 1205 3664 5 MP
557DP
5580 -58 -58 0 0 58 58 0 1339 3717 5 MP
559DP
5600 -58 -58 0 0 58 58 0 1473 3790 5 MP
561DP
5620 -58 -58 0 0 58 58 0 1607 3796 5 MP
563DP
5640 -58 -58 0 0 58 58 0 1741 3901 5 MP
565DP
5660 -58 -58 0 0 58 58 0 1875 3908 5 MP
567DP
5680 -58 -58 0 0 58 58 0 2009 3779 5 MP
569DP
5700 -58 -58 0 0 58 58 0 2143 3894 5 MP
571DP
5720 -58 -58 0 0 58 58 0 2276 3736 5 MP
573DP
5740 -58 -58 0 0 58 58 0 2410 3985 5 MP
575DP
5760 -58 -58 0 0 58 58 0 2544 3893 5 MP
577DP
5780 -58 -58 0 0 58 58 0 2678 4232 5 MP
579DP
5800 -58 -58 0 0 58 58 0 2812 3927 5 MP
581DP
5820 -58 -58 0 0 58 58 0 2946 3680 5 MP
583DP
5840 -58 -58 0 0 58 58 0 3080 4122 5 MP
585DP
5860 -58 -58 0 0 58 58 0 3214 3915 5 MP
587DP
5880 -58 -58 0 0 58 58 0 3348 4241 5 MP
589DP
5900 -58 -58 0 0 58 58 0 3482 4172 5 MP
591DP
5920 -58 -58 0 0 58 58 0 3616 3704 5 MP
593DP
5940 -58 -58 0 0 58 58 0 3750 4172 5 MP
595DP
5960 -58 -58 0 0 58 58 0 4018 3974 5 MP
597DP
5980 -58 -58 0 0 58 58 0 4152 3673 5 MP
599DP
6000 -58 -58 0 0 58 58 0 4286 4188 5 MP
601DP
6020 -58 -58 0 0 58 58 0 4420 4043 5 MP
603DP
6040 -58 -58 0 0 58 58 0 5223 4081 5 MP
605DP
6060 -58 -58 0 0 58 58 0 5357 4221 5 MP
607DP
6080 -58 -58 0 0 58 58 0 5625 4541 5 MP
609DP
610gs 899 388 5359 4226 rc
611
612gr
6130 sg
614 677 2927 mt -90 rotate
615(Delta Size Ratio) s
61690 rotate
6173066 4901 mt
618(To File Size \(bytes\)) s
619gs 899 388 5359 4226 rc
620c8
621267 296 134 613 804 -243 134 -371 134 248 134 726 268 -941 134 404
622134 -509 134 101 134 28 134 85 134 277 134 -315 133 -209 134 110
623134 -40 134 188 134 -115 134 37 134 -50 134 -14 134 51 134 18
624134 5 134 29 134 -14 134 74 939 4085 29 MP stroke
625c9
626268 320 134 140 803 38 134 -145 134 515 134 -301 268 -198 134 468
627134 -468 134 -69 134 326 134 -207 134 442 134 -247 134 -305 134 339
628134 -92 134 249 133 -158 134 115 134 -129 134 7 134 105 134 6
629134 73 134 53 134 -34 134 173 966 3554 29 MP stroke
630
631gr
632c9
6331 sg
6340 710 2338 0 0 -710 3781 1202 4 MP
635PP
636-2338 0 0 710 2338 0 0 -710 3781 1202 5 MP stroke
637DO
6384 w
639SO
6406 w
6410 sg
6423781 1202 mt 6119 1202 L
6433781 492 mt 6119 492 L
6443781 1202 mt 3781 492 L
6456119 1202 mt 6119 492 L
6463781 1202 mt 6119 1202 L
6473781 1202 mt 3781 492 L
6483781 1202 mt 6119 1202 L
6493781 492 mt 6119 492 L
6503781 1202 mt 3781 492 L
6516119 1202 mt 6119 492 L
6524584 678 mt
653(Vdelta standard deviation) s
654gs 3781 492 2339 711 rc
655c8
656429 0 3888 634 2 MP stroke
657
658gr
659c8
6600 sg
6614584 820 mt
662(Vdelta mean ) s
663gs 3781 492 2339 711 rc
664
665gr
666c8
667 36 36 3888 776 FO
668 36 36 4317 776 FO
669gs 3781 492 2339 711 rc
670
671gr
6720 sg
6734584 962 mt
674(Xdelta standard deviation) s
675gs 3781 492 2339 711 rc
676c9
677429 0 3888 918 2 MP stroke
678
679gr
680c9
6810 sg
6824584 1104 mt
683(Xdelta mean ) s
684gs 3781 492 2339 711 rc
685
686gr
6870 -58 -58 0 0 58 58 0 3859 1031 5 MP
688c9
689DP
6900 -58 -58 0 0 58 58 0 4288 1031 5 MP
691DP
692gs 3781 492 2339 711 rc
693
694gr
695
696end
697
698eplot
699%%EndObject graph 1
700
701epage
702end
703
704showpage
705
706%%Trailer
707%%EOF
diff --git a/xdelta1/doc/old/dcc99/figs/strings.eps b/xdelta1/doc/old/dcc99/figs/strings.eps
new file mode 100755
index 0000000..ef2c00a
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/figs/strings.eps
@@ -0,0 +1,194 @@
1%!PS-Adobe-2.0 EPSF-2.0
2%%Title: strings.fig.normalsize
3%%Creator: fig2dev Version 3.1 Patchlevel 2
4%%CreationDate: Sun Nov 8 04:04:15 1998
5%%For: jmacd@axis.hip.berkeley.edu (Josh)
6%%Orientation: Portrait
7%%BoundingBox: 0 0 161 153
8%%Pages: 0
9%%BeginSetup
10%%IncludeFeature: *PageSize Letter
11%%EndSetup
12%Magnification: 1.00
13%%EndComments
14/$F2psDict 200 dict def
15$F2psDict begin
16$F2psDict /mtrx matrix put
17/col-1 {0 setgray} bind def
18/col0 {0.000 0.000 0.000 srgb} bind def
19/col1 {0.000 0.000 1.000 srgb} bind def
20/col2 {0.000 1.000 0.000 srgb} bind def
21/col3 {0.000 1.000 1.000 srgb} bind def
22/col4 {1.000 0.000 0.000 srgb} bind def
23/col5 {1.000 0.000 1.000 srgb} bind def
24/col6 {1.000 1.000 0.000 srgb} bind def
25/col7 {1.000 1.000 1.000 srgb} bind def
26/col8 {0.000 0.000 0.560 srgb} bind def
27/col9 {0.000 0.000 0.690 srgb} bind def
28/col10 {0.000 0.000 0.820 srgb} bind def
29/col11 {0.530 0.810 1.000 srgb} bind def
30/col12 {0.000 0.560 0.000 srgb} bind def
31/col13 {0.000 0.690 0.000 srgb} bind def
32/col14 {0.000 0.820 0.000 srgb} bind def
33/col15 {0.000 0.560 0.560 srgb} bind def
34/col16 {0.000 0.690 0.690 srgb} bind def
35/col17 {0.000 0.820 0.820 srgb} bind def
36/col18 {0.560 0.000 0.000 srgb} bind def
37/col19 {0.690 0.000 0.000 srgb} bind def
38/col20 {0.820 0.000 0.000 srgb} bind def
39/col21 {0.560 0.000 0.560 srgb} bind def
40/col22 {0.690 0.000 0.690 srgb} bind def
41/col23 {0.820 0.000 0.820 srgb} bind def
42/col24 {0.500 0.190 0.000 srgb} bind def
43/col25 {0.630 0.250 0.000 srgb} bind def
44/col26 {0.750 0.380 0.000 srgb} bind def
45/col27 {1.000 0.500 0.500 srgb} bind def
46/col28 {1.000 0.630 0.630 srgb} bind def
47/col29 {1.000 0.750 0.750 srgb} bind def
48/col30 {1.000 0.880 0.880 srgb} bind def
49/col31 {1.000 0.840 0.000 srgb} bind def
50
51end
52save
530.0 155.0 translate
541 -1 scale
55
56/cp {closepath} bind def
57/ef {eofill} bind def
58/gr {grestore} bind def
59/gs {gsave} bind def
60/sa {save} bind def
61/rs {restore} bind def
62/l {lineto} bind def
63/m {moveto} bind def
64/rm {rmoveto} bind def
65/n {newpath} bind def
66/s {stroke} bind def
67/sh {show} bind def
68/slc {setlinecap} bind def
69/slj {setlinejoin} bind def
70/slw {setlinewidth} bind def
71/srgb {setrgbcolor} bind def
72/rot {rotate} bind def
73/sc {scale} bind def
74/sd {setdash} bind def
75/ff {findfont} bind def
76/sf {setfont} bind def
77/scf {scalefont} bind def
78/sw {stringwidth} bind def
79/tr {translate} bind def
80/tnt {dup dup currentrgbcolor
81 4 -2 roll dup 1 exch sub 3 -1 roll mul add
82 4 -2 roll dup 1 exch sub 3 -1 roll mul add
83 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
84 bind def
85/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
86 4 -2 roll mul srgb} bind def
87/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
88/$F2psEnd {$F2psEnteredState restore end} def
89%%EndProlog
90
91$F2psBegin
9210 setmiterlimit
93n 0 792 m 0 0 l 612 0 l 612 792 l cp clip
94 0.06000 0.06000 sc
95/Times-Roman ff 135.00 scf sf
961579 1135 m
97gs 1 -1 sc (DISULPHONE) col-1 sh gr
987.500 slw
99% Polyline
100gs clippath
101326 1339 m 262 1233 l 368 1297 l 254 1182 l 211 1225 l cp clip
102n 479 1450 m 243 1214 l gs col-1 s gr gr
103
104% arrowhead
105n 326 1339 m 262 1233 l 368 1297 l 347 1318 l 326 1339 l cp gs 0.00 setgray ef gr col-1 s
106% Polyline
107gs clippath
1081690 1768 m 1795 1704 l 1732 1810 l 1847 1696 l 1804 1653 l cp clip
109n 1579 1921 m 1815 1685 l gs col-1 s gr gr
110
111% arrowhead
112n 1690 1768 m 1795 1704 l 1732 1810 l 1711 1789 l 1690 1768 l cp gs 0.00 setgray ef gr col-1 s
113% Polyline
114gs clippath
115354 746 m 459 682 l 396 788 l 511 674 l 468 631 l cp clip
116n 243 899 m 479 663 l gs col-1 s gr gr
117
118% arrowhead
119n 354 746 m 459 682 l 396 788 l 375 767 l 354 746 l cp gs 0.00 setgray ef gr col-1 s
120% Polyline
121gs clippath
1221741 1339 m 1677 1233 l 1783 1297 l 1669 1182 l 1626 1225 l cp clip
123n 1894 1450 m 1658 1214 l gs col-1 s gr gr
124
125% arrowhead
126n 1741 1339 m 1677 1233 l 1783 1297 l 1762 1318 l 1741 1339 l cp gs 0.00 setgray ef gr col-1 s
127% Polyline
128gs clippath
129606 339 m 636 219 l 666 339 l 666 177 l 606 177 l cp clip
130n 636 428 m 636 192 l gs col-1 s gr gr
131
132% arrowhead
133n 606 339 m 636 219 l 666 339 l 636 339 l 606 339 l cp gs 0.00 setgray ef gr col-1 s
134% Polyline
135gs clippath
1361078 2275 m 1014 2169 l 1120 2233 l 1006 2118 l 963 2161 l cp clip
137n 1231 2386 m 995 2150 l gs col-1 s gr gr
138
139% arrowhead
140n 1078 2275 m 1014 2169 l 1120 2233 l 1099 2254 l 1078 2275 l cp gs 0.00 setgray ef gr col-1 s
141/Times-Roman ff 135.00 scf sf
14215 1131 m
143gs 1 -1 sc (5.) col-1 sh gr
144/Times-Roman ff 135.00 scf sf
1451410 1123 m
146gs 1 -1 sc (6.) col-1 sh gr
147/Times-Roman ff 135.00 scf sf
148381 1607 m
149gs 1 -1 sc (3.) col-1 sh gr
150/Times-Roman ff 135.00 scf sf
1511725 1607 m
152gs 1 -1 sc (4.) col-1 sh gr
153/Times-Roman ff 135.00 scf sf
154715 2067 m
155gs 1 -1 sc (2.) col-1 sh gr
156/Times-Roman ff 135.00 scf sf
1571033 2542 m
158gs 1 -1 sc (1.) col-1 sh gr
159/Times-Roman ff 135.00 scf sf
160420 585 m
161gs 1 -1 sc (7.) col-1 sh gr
162/Times-Roman ff 135.00 scf sf
163388 109 m
164gs 1 -1 sc (8.) col-1 sh gr
165/Times-Roman ff 135.00 scf sf
166557 113 m
167gs 1 -1 sc (ESSELENIST) col-1 sh gr
168/Times-Roman ff 135.00 scf sf
169557 1607 m
170gs 1 -1 sc (DISELENIDE) col-1 sh gr
171/Times-Roman ff 135.00 scf sf
172872 2078 m
173gs 1 -1 sc (BISULPHIDE) col-1 sh gr
174/Times-Roman ff 135.00 scf sf
1751186 2550 m
176gs 1 -1 sc (DISULPHIDE) col-1 sh gr
177/Times-Roman ff 135.00 scf sf
178164 1135 m
179gs 1 -1 sc (ESSELENIAN) col-1 sh gr
180/Times-Roman ff 135.00 scf sf
1811894 1607 m
182gs 1 -1 sc (DISULPHINE) col-1 sh gr
183/Times-Roman ff 135.00 scf sf
184557 585 m
185gs 1 -1 sc (TROEZENIAN) col-1 sh gr
186% Polyline
187gs clippath
188719 1810 m 655 1704 l 761 1768 l 647 1653 l 604 1696 l cp clip
189n 872 1921 m 636 1685 l gs col-1 s gr gr
190
191% arrowhead
192n 719 1810 m 655 1704 l 761 1768 l 740 1789 l 719 1810 l cp gs 0.00 setgray ef gr col-1 s
193$F2psEnd
194rs
diff --git a/xdelta1/doc/old/dcc99/figs/strings.fig b/xdelta1/doc/old/dcc99/figs/strings.fig
new file mode 100755
index 0000000..f8c8fb0
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/figs/strings.fig
@@ -0,0 +1,36 @@
1#FIG 3.1
2Portrait
3Center
4Inches
51200 2
66 0 0 2658 2700
72 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
8 0 0 1.00 60.00 120.00
9 1088 2533 837 2281
102 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
11 1 1 1.00 60.00 120.00
12 753 2030 502 1779
132 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
14 1 1 1.00 60.00 120.00
15 335 1528 84 1277
162 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
17 1 1 1.00 60.00 120.00
18 1507 2030 1758 1779
192 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
20 1 1 1.00 60.00 120.00
21 84 942 335 691
222 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
23 1 1 1.00 60.00 120.00
24 1842 1528 1591 1277
252 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
26 1 1 1.00 60.00 120.00
27 502 440 502 188
284 0 -1 0 0 0 9 0.0000 0 96 791 419 105 ESSELENIST\001
294 0 -1 0 0 0 9 0.0000 0 96 804 419 1695 DISELENIDE\001
304 0 -1 0 0 0 9 0.0000 0 96 804 753 2198 BISULPHIDE\001
314 0 -1 0 0 0 9 0.0000 0 96 812 1088 2700 DISULPHIDE\001
324 0 -1 0 0 0 9 0.0000 0 96 833 0 1193 ESSELENIAN\001
334 0 -1 0 0 0 9 0.0000 0 96 812 1842 1695 DISULPHINE\001
344 0 -1 0 0 0 9 0.0000 0 96 875 419 607 TROEZENIAN\001
354 0 -1 0 0 0 9 0.0000 0 96 866 1507 1193 DISULPHONE\001
36-6
diff --git a/xdelta1/doc/old/dcc99/figs/strings.fig.normalsize b/xdelta1/doc/old/dcc99/figs/strings.fig.normalsize
new file mode 100755
index 0000000..175f721
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/figs/strings.fig.normalsize
@@ -0,0 +1,42 @@
1#FIG 3.1
2Portrait
3Center
4Inches
51200 2
62 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
7 1 1 1.00 60.00 120.00
8 872 1921 636 1685
92 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
10 1 1 1.00 60.00 120.00
11 479 1450 243 1214
122 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
13 1 1 1.00 60.00 120.00
14 1579 1921 1815 1685
152 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
16 1 1 1.00 60.00 120.00
17 243 899 479 663
182 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
19 1 1 1.00 60.00 120.00
20 1894 1450 1658 1214
212 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
22 1 1 1.00 60.00 120.00
23 636 428 636 192
242 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
25 1 1 1.00 60.00 120.00
26 1231 2386 995 2150
274 0 -1 0 0 0 9 0.0000 0 90 94 15 1131 5.\001
284 0 -1 0 0 0 9 0.0000 0 90 94 1410 1123 6.\001
294 0 -1 0 0 0 9 0.0000 0 90 94 381 1607 3.\001
304 0 -1 0 0 0 9 0.0000 0 90 94 1725 1607 4.\001
314 0 -1 0 0 0 9 0.0000 0 90 94 715 2067 2.\001
324 0 -1 0 0 0 9 0.0000 0 90 94 1033 2542 1.\001
334 0 -1 0 0 0 9 0.0000 0 90 94 420 585 7.\001
344 0 -1 0 0 0 9 0.0000 0 90 94 388 109 8.\001
354 0 -1 0 0 0 9 0.0000 0 90 743 557 113 ESSELENIST\001
364 0 -1 0 0 0 9 0.0000 0 90 755 557 1607 DISELENIDE\001
374 0 -1 0 0 0 9 0.0000 0 90 755 872 2078 BISULPHIDE\001
384 0 -1 0 0 0 9 0.0000 0 90 762 1186 2550 DISULPHIDE\001
394 0 -1 0 0 0 9 0.0000 0 90 782 164 1135 ESSELENIAN\001
404 0 -1 0 0 0 9 0.0000 0 90 762 1894 1607 DISULPHINE\001
414 0 -1 0 0 0 9 0.0000 0 90 821 557 585 TROEZENIAN\001
424 0 -1 0 0 0 9 0.0000 0 90 814 1579 1135 DISULPHONE\001
diff --git a/xdelta1/doc/old/dcc99/figs/strings.fig.normalsize.eps b/xdelta1/doc/old/dcc99/figs/strings.fig.normalsize.eps
new file mode 100755
index 0000000..dcd9f79
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/figs/strings.fig.normalsize.eps
@@ -0,0 +1,194 @@
1%!PS-Adobe-2.0 EPSF-2.0
2%%Title: strings.fig.normalsize
3%%Creator: fig2dev Version 3.1 Patchlevel 2
4%%CreationDate: Sun Nov 8 04:02:56 1998
5%%For: jmacd@axis.hip.berkeley.edu (Josh)
6%%Orientation: Portrait
7%%BoundingBox: 0 0 161 153
8%%Pages: 0
9%%BeginSetup
10%%IncludeFeature: *PageSize Letter
11%%EndSetup
12%Magnification: 1.00
13%%EndComments
14/$F2psDict 200 dict def
15$F2psDict begin
16$F2psDict /mtrx matrix put
17/col-1 {0 setgray} bind def
18/col0 {0.000 0.000 0.000 srgb} bind def
19/col1 {0.000 0.000 1.000 srgb} bind def
20/col2 {0.000 1.000 0.000 srgb} bind def
21/col3 {0.000 1.000 1.000 srgb} bind def
22/col4 {1.000 0.000 0.000 srgb} bind def
23/col5 {1.000 0.000 1.000 srgb} bind def
24/col6 {1.000 1.000 0.000 srgb} bind def
25/col7 {1.000 1.000 1.000 srgb} bind def
26/col8 {0.000 0.000 0.560 srgb} bind def
27/col9 {0.000 0.000 0.690 srgb} bind def
28/col10 {0.000 0.000 0.820 srgb} bind def
29/col11 {0.530 0.810 1.000 srgb} bind def
30/col12 {0.000 0.560 0.000 srgb} bind def
31/col13 {0.000 0.690 0.000 srgb} bind def
32/col14 {0.000 0.820 0.000 srgb} bind def
33/col15 {0.000 0.560 0.560 srgb} bind def
34/col16 {0.000 0.690 0.690 srgb} bind def
35/col17 {0.000 0.820 0.820 srgb} bind def
36/col18 {0.560 0.000 0.000 srgb} bind def
37/col19 {0.690 0.000 0.000 srgb} bind def
38/col20 {0.820 0.000 0.000 srgb} bind def
39/col21 {0.560 0.000 0.560 srgb} bind def
40/col22 {0.690 0.000 0.690 srgb} bind def
41/col23 {0.820 0.000 0.820 srgb} bind def
42/col24 {0.500 0.190 0.000 srgb} bind def
43/col25 {0.630 0.250 0.000 srgb} bind def
44/col26 {0.750 0.380 0.000 srgb} bind def
45/col27 {1.000 0.500 0.500 srgb} bind def
46/col28 {1.000 0.630 0.630 srgb} bind def
47/col29 {1.000 0.750 0.750 srgb} bind def
48/col30 {1.000 0.880 0.880 srgb} bind def
49/col31 {1.000 0.840 0.000 srgb} bind def
50
51end
52save
530.0 155.0 translate
541 -1 scale
55
56/cp {closepath} bind def
57/ef {eofill} bind def
58/gr {grestore} bind def
59/gs {gsave} bind def
60/sa {save} bind def
61/rs {restore} bind def
62/l {lineto} bind def
63/m {moveto} bind def
64/rm {rmoveto} bind def
65/n {newpath} bind def
66/s {stroke} bind def
67/sh {show} bind def
68/slc {setlinecap} bind def
69/slj {setlinejoin} bind def
70/slw {setlinewidth} bind def
71/srgb {setrgbcolor} bind def
72/rot {rotate} bind def
73/sc {scale} bind def
74/sd {setdash} bind def
75/ff {findfont} bind def
76/sf {setfont} bind def
77/scf {scalefont} bind def
78/sw {stringwidth} bind def
79/tr {translate} bind def
80/tnt {dup dup currentrgbcolor
81 4 -2 roll dup 1 exch sub 3 -1 roll mul add
82 4 -2 roll dup 1 exch sub 3 -1 roll mul add
83 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
84 bind def
85/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
86 4 -2 roll mul srgb} bind def
87/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
88/$F2psEnd {$F2psEnteredState restore end} def
89%%EndProlog
90
91$F2psBegin
9210 setmiterlimit
93n 0 792 m 0 0 l 612 0 l 612 792 l cp clip
94 0.06000 0.06000 sc
95/Times-Roman ff 135.00 scf sf
96388 109 m
97gs 1 -1 sc (8.) col-1 sh gr
987.500 slw
99% Polyline
100gs clippath
101719 1810 m 655 1704 l 761 1768 l 647 1653 l 604 1696 l cp clip
102n 872 1921 m 636 1685 l gs col-1 s gr gr
103
104% arrowhead
105n 719 1810 m 655 1704 l 761 1768 l 740 1789 l 719 1810 l cp gs 0.00 setgray ef gr col-1 s
106% Polyline
107gs clippath
108326 1339 m 262 1233 l 368 1297 l 254 1182 l 211 1225 l cp clip
109n 479 1450 m 243 1214 l gs col-1 s gr gr
110
111% arrowhead
112n 326 1339 m 262 1233 l 368 1297 l 347 1318 l 326 1339 l cp gs 0.00 setgray ef gr col-1 s
113% Polyline
114gs clippath
1151690 1768 m 1795 1704 l 1732 1810 l 1847 1696 l 1804 1653 l cp clip
116n 1579 1921 m 1815 1685 l gs col-1 s gr gr
117
118% arrowhead
119n 1690 1768 m 1795 1704 l 1732 1810 l 1711 1789 l 1690 1768 l cp gs 0.00 setgray ef gr col-1 s
120% Polyline
121gs clippath
122354 746 m 459 682 l 396 788 l 511 674 l 468 631 l cp clip
123n 243 899 m 479 663 l gs col-1 s gr gr
124
125% arrowhead
126n 354 746 m 459 682 l 396 788 l 375 767 l 354 746 l cp gs 0.00 setgray ef gr col-1 s
127% Polyline
128gs clippath
1291741 1339 m 1677 1233 l 1783 1297 l 1669 1182 l 1626 1225 l cp clip
130n 1894 1450 m 1658 1214 l gs col-1 s gr gr
131
132% arrowhead
133n 1741 1339 m 1677 1233 l 1783 1297 l 1762 1318 l 1741 1339 l cp gs 0.00 setgray ef gr col-1 s
134% Polyline
135gs clippath
136606 339 m 636 219 l 666 339 l 666 177 l 606 177 l cp clip
137n 636 428 m 636 192 l gs col-1 s gr gr
138
139% arrowhead
140n 606 339 m 636 219 l 666 339 l 636 339 l 606 339 l cp gs 0.00 setgray ef gr col-1 s
141/Times-Roman ff 135.00 scf sf
142557 113 m
143gs 1 -1 sc (ESSELENIST) col-1 sh gr
144/Times-Roman ff 135.00 scf sf
145557 1607 m
146gs 1 -1 sc (DISELENIDE) col-1 sh gr
147/Times-Roman ff 135.00 scf sf
148872 2078 m
149gs 1 -1 sc (BISULPHIDE) col-1 sh gr
150/Times-Roman ff 135.00 scf sf
1511186 2550 m
152gs 1 -1 sc (DISULPHIDE) col-1 sh gr
153/Times-Roman ff 135.00 scf sf
154164 1135 m
155gs 1 -1 sc (ESSELENIAN) col-1 sh gr
156/Times-Roman ff 135.00 scf sf
1571894 1607 m
158gs 1 -1 sc (DISULPHINE) col-1 sh gr
159/Times-Roman ff 135.00 scf sf
160557 585 m
161gs 1 -1 sc (TROEZENIAN) col-1 sh gr
162/Times-Roman ff 135.00 scf sf
1631579 1135 m
164gs 1 -1 sc (DISULPHONE) col-1 sh gr
165/Times-Roman ff 135.00 scf sf
16615 1131 m
167gs 1 -1 sc (5.) col-1 sh gr
168/Times-Roman ff 135.00 scf sf
1691410 1123 m
170gs 1 -1 sc (6.) col-1 sh gr
171/Times-Roman ff 135.00 scf sf
172381 1607 m
173gs 1 -1 sc (3.) col-1 sh gr
174/Times-Roman ff 135.00 scf sf
1751725 1607 m
176gs 1 -1 sc (4.) col-1 sh gr
177/Times-Roman ff 135.00 scf sf
178715 2067 m
179gs 1 -1 sc (2.) col-1 sh gr
180/Times-Roman ff 135.00 scf sf
1811033 2542 m
182gs 1 -1 sc (1.) col-1 sh gr
183/Times-Roman ff 135.00 scf sf
184420 585 m
185gs 1 -1 sc (7.) col-1 sh gr
186% Polyline
187gs clippath
1881033 2282 m 969 2176 l 1075 2240 l 961 2125 l 918 2168 l cp clip
189n 1186 2393 m 950 2157 l gs col-1 s gr gr
190
191% arrowhead
192n 1033 2282 m 969 2176 l 1075 2240 l col-1 s
193$F2psEnd
194rs
diff --git a/xdelta1/doc/old/dcc99/figs/xdarchive.eps b/xdelta1/doc/old/dcc99/figs/xdarchive.eps
new file mode 100755
index 0000000..5d70278
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/figs/xdarchive.eps
@@ -0,0 +1,808 @@
1%!PS-Adobe-2.0 EPSF-2.0
2%%Title: xdarchive.fig
3%%Creator: fig2dev Version 3.1 Patchlevel 2
4%%CreationDate: Sat Nov 7 02:45:24 1998
5%%For: jmacd@axis.hip.berkeley.edu (Josh)
6%%Orientation: Portrait
7%%BoundingBox: 0 0 285 182
8%%Pages: 0
9%%BeginSetup
10%%IncludeFeature: *PageSize Letter
11%%EndSetup
12%Magnification: 1.00
13%%EndComments
14/MyAppDict 100 dict dup begin def
15/$F2psDict 200 dict def
16$F2psDict begin
17$F2psDict /mtrx matrix put
18/col-1 {0 setgray} bind def
19/col0 {0.000 0.000 0.000 srgb} bind def
20/col1 {0.000 0.000 1.000 srgb} bind def
21/col2 {0.000 1.000 0.000 srgb} bind def
22/col3 {0.000 1.000 1.000 srgb} bind def
23/col4 {1.000 0.000 0.000 srgb} bind def
24/col5 {1.000 0.000 1.000 srgb} bind def
25/col6 {1.000 1.000 0.000 srgb} bind def
26/col7 {1.000 1.000 1.000 srgb} bind def
27/col8 {0.000 0.000 0.560 srgb} bind def
28/col9 {0.000 0.000 0.690 srgb} bind def
29/col10 {0.000 0.000 0.820 srgb} bind def
30/col11 {0.530 0.810 1.000 srgb} bind def
31/col12 {0.000 0.560 0.000 srgb} bind def
32/col13 {0.000 0.690 0.000 srgb} bind def
33/col14 {0.000 0.820 0.000 srgb} bind def
34/col15 {0.000 0.560 0.560 srgb} bind def
35/col16 {0.000 0.690 0.690 srgb} bind def
36/col17 {0.000 0.820 0.820 srgb} bind def
37/col18 {0.560 0.000 0.000 srgb} bind def
38/col19 {0.690 0.000 0.000 srgb} bind def
39/col20 {0.820 0.000 0.000 srgb} bind def
40/col21 {0.560 0.000 0.560 srgb} bind def
41/col22 {0.690 0.000 0.690 srgb} bind def
42/col23 {0.820 0.000 0.820 srgb} bind def
43/col24 {0.500 0.190 0.000 srgb} bind def
44/col25 {0.630 0.250 0.000 srgb} bind def
45/col26 {0.750 0.380 0.000 srgb} bind def
46/col27 {1.000 0.500 0.500 srgb} bind def
47/col28 {1.000 0.630 0.630 srgb} bind def
48/col29 {1.000 0.750 0.750 srgb} bind def
49/col30 {1.000 0.880 0.880 srgb} bind def
50/col31 {1.000 0.840 0.000 srgb} bind def
51
52end
53save
540.0 184.0 translate
551 -1 scale
56.9 .9 scale % to make patterns same scale as in xfig
57
58% This junk string is used by the show operators
59/PATsstr 1 string def
60/PATawidthshow { % cx cy cchar rx ry string
61 % Loop over each character in the string
62 { % cx cy cchar rx ry char
63 % Show the character
64 dup % cx cy cchar rx ry char char
65 PATsstr dup 0 4 -1 roll put % cx cy cchar rx ry char (char)
66 false charpath % cx cy cchar rx ry char
67 /clip load PATdraw
68 % Move past the character (charpath modified the
69 % current point)
70 currentpoint % cx cy cchar rx ry char x y
71 newpath
72 moveto % cx cy cchar rx ry char
73 % Reposition by cx,cy if the character in the string is cchar
74 3 index eq { % cx cy cchar rx ry
75 4 index 4 index rmoveto
76 } if
77 % Reposition all characters by rx ry
78 2 copy rmoveto % cx cy cchar rx ry
79 } forall
80 pop pop pop pop pop % -
81 currentpoint
82 newpath
83 moveto
84} bind def
85/PATcg {
86 7 dict dup begin
87 /lw currentlinewidth def
88 /lc currentlinecap def
89 /lj currentlinejoin def
90 /ml currentmiterlimit def
91 /ds [ currentdash ] def
92 /cc [ currentrgbcolor ] def
93 /cm matrix currentmatrix def
94 end
95} bind def
96% PATdraw - calculates the boundaries of the object and
97% fills it with the current pattern
98/PATdraw { % proc
99 save exch
100 PATpcalc % proc nw nh px py
101 5 -1 roll exec % nw nh px py
102 newpath
103 PATfill % -
104 restore
105} bind def
106% PATfill - performs the tiling for the shape
107/PATfill { % nw nh px py PATfill -
108 PATDict /CurrentPattern get dup begin
109 setfont
110 % Set the coordinate system to Pattern Space
111 PatternGState PATsg
112 % Set the color for uncolored pattezns
113 PaintType 2 eq { PATDict /PColor get PATsc } if
114 % Create the string for showing
115 3 index string % nw nh px py str
116 % Loop for each of the pattern sources
117 0 1 Multi 1 sub { % nw nh px py str source
118 % Move to the starting location
119 3 index 3 index % nw nh px py str source px py
120 moveto % nw nh px py str source
121 % For multiple sources, set the appropriate color
122 Multi 1 ne { dup PC exch get PATsc } if
123 % Set the appropriate string for the source
124 0 1 7 index 1 sub { 2 index exch 2 index put } for pop
125 % Loop over the number of vertical cells
126 3 index % nw nh px py str nh
127 { % nw nh px py str
128 currentpoint % nw nh px py str cx cy
129 2 index show % nw nh px py str cx cy
130 YStep add moveto % nw nh px py str
131 } repeat % nw nh px py str
132 } for
133 5 { pop } repeat
134 end
135} bind def
136
137% PATkshow - kshow with the current pattezn
138/PATkshow { % proc string
139 exch bind % string proc
140 1 index 0 get % string proc char
141 % Loop over all but the last character in the string
142 0 1 4 index length 2 sub {
143 % string proc char idx
144 % Find the n+1th character in the string
145 3 index exch 1 add get % string proe char char+1
146 exch 2 copy % strinq proc char+1 char char+1 char
147 % Now show the nth character
148 PATsstr dup 0 4 -1 roll put % string proc chr+1 chr chr+1 (chr)
149 false charpath % string proc char+1 char char+1
150 /clip load PATdraw
151 % Move past the character (charpath modified the current point)
152 currentpoint newpath moveto
153 % Execute the user proc (should consume char and char+1)
154 mark 3 1 roll % string proc char+1 mark char char+1
155 4 index exec % string proc char+1 mark...
156 cleartomark % string proc char+1
157 } for
158 % Now display the last character
159 PATsstr dup 0 4 -1 roll put % string proc (char+1)
160 false charpath % string proc
161 /clip load PATdraw
162 neewath
163 pop pop % -
164} bind def
165% PATmp - the makepattern equivalent
166/PATmp { % patdict patmtx PATmp patinstance
167 exch dup length 7 add % We will add 6 new entries plus 1 FID
168 dict copy % Create a new dictionary
169 begin
170 % Matrix to install when painting the pattern
171 TilingType PATtcalc
172 /PatternGState PATcg def
173 PatternGState /cm 3 -1 roll put
174 % Check for multi pattern sources (Level 1 fast color patterns)
175 currentdict /Multi known not { /Multi 1 def } if
176 % Font dictionary definitions
177 /FontType 3 def
178 % Create a dummy encoding vector
179 /Encoding 256 array def
180 3 string 0 1 255 {
181 Encoding exch dup 3 index cvs cvn put } for pop
182 /FontMatrix matrix def
183 /FontBBox BBox def
184 /BuildChar {
185 mark 3 1 roll % mark dict char
186 exch begin
187 Multi 1 ne {PaintData exch get}{pop} ifelse % mark [paintdata]
188 PaintType 2 eq Multi 1 ne or
189 { XStep 0 FontBBox aload pop setcachedevice }
190 { XStep 0 setcharwidth } ifelse
191 currentdict % mark [paintdata] dict
192 /PaintProc load % mark [paintdata] dict paintproc
193 end
194 gsave
195 false PATredef exec true PATredef
196 grestore
197 cleartomark % -
198 } bind def
199 currentdict
200 end % newdict
201 /foo exch % /foo newlict
202 definefont % newfont
203} bind def
204% PATpcalc - calculates the starting point and width/height
205% of the tile fill for the shape
206/PATpcalc { % - PATpcalc nw nh px py
207 PATDict /CurrentPattern get begin
208 gsave
209 % Set up the coordinate system to Pattern Space
210 % and lock down pattern
211 PatternGState /cm get setmatrix
212 BBox aload pop pop pop translate
213 % Determine the bounding box of the shape
214 pathbbox % llx lly urx ury
215 grestore
216 % Determine (nw, nh) the # of cells to paint width and height
217 PatHeight div ceiling % llx lly urx qh
218 4 1 roll % qh llx lly urx
219 PatWidth div ceiling % qh llx lly qw
220 4 1 roll % qw qh llx lly
221 PatHeight div floor % qw qh llx ph
222 4 1 roll % ph qw qh llx
223 PatWidth div floor % ph qw qh pw
224 4 1 roll % pw ph qw qh
225 2 index sub cvi abs % pw ph qs qh-ph
226 exch 3 index sub cvi abs exch % pw ph nw=qw-pw nh=qh-ph
227 % Determine the starting point of the pattern fill
228 %(px, py)
229 4 2 roll % nw nh pw ph
230 PatHeight mul % nw nh pw py
231 exch % nw nh py pw
232 PatWidth mul exch % nw nh px py
233 end
234} bind def
235
236% Save the original routines so that we can use them later on
237/oldfill /fill load def
238/oldeofill /eofill load def
239/oldstroke /stroke load def
240/oldshow /show load def
241/oldashow /ashow load def
242/oldwidthshow /widthshow load def
243/oldawidthshow /awidthshow load def
244/oldkshow /kshow load def
245
246% These defs are necessary so that subsequent procs don't bind in
247% the originals
248/fill { oldfill } bind def
249/eofill { oldeofill } bind def
250/stroke { oldstroke } bind def
251/show { oldshow } bind def
252/ashow { oldashow } bind def
253/widthshow { oldwidthshow } bind def
254/awidthshow { oldawidthshow } bind def
255/kshow { oldkshow } bind def
256/PATredef {
257 MyAppDict begin
258 {
259 /fill { /clip load PATdraw newpath } bind def
260 /eofill { /eoclip load PATdraw newpath } bind def
261 /stroke { PATstroke } bind def
262 /show { 0 0 null 0 0 6 -1 roll PATawidthshow } bind def
263 /ashow { 0 0 null 6 3 roll PATawidthshow }
264 bind def
265 /widthshow { 0 0 3 -1 roll PATawidthshow }
266 bind def
267 /awidthshow { PATawidthshow } bind def
268 /kshow { PATkshow } bind def
269 } {
270 /fill { oldfill } bind def
271 /eofill { oldeofill } bind def
272 /stroke { oldstroke } bind def
273 /show { oldshow } bind def
274 /ashow { oldashow } bind def
275 /widthshow { oldwidthshow } bind def
276 /awidthshow { oldawidthshow } bind def
277 /kshow { oldkshow } bind def
278 } ifelse
279 end
280} bind def
281false PATredef
282% Conditionally define setcmykcolor if not available
283/setcmykcolor where { pop } {
284 /setcmykcolor {
285 1 sub 4 1 roll
286 3 {
287 3 index add neg dup 0 lt { pop 0 } if 3 1 roll
288 } repeat
289 setrgbcolor - pop
290 } bind def
291} ifelse
292/PATsc { % colorarray
293 aload length % c1 ... cn length
294 dup 1 eq { pop setgray } { 3 eq { setrgbcolor } { setcmykcolor
295 } ifelse } ifelse
296} bind def
297/PATsg { % dict
298 begin
299 lw setlinewidth
300 lc setlinecap
301 lj setlinejoin
302 ml setmiterlimit
303 ds aload pop setdash
304 cc aload pop setrgbcolor
305 cm setmatrix
306 end
307} bind def
308
309/PATDict 3 dict def
310/PATsp {
311 true PATredef
312 PATDict begin
313 /CurrentPattern exch def
314 % If it's an uncolored pattern, save the color
315 CurrentPattern /PaintType get 2 eq {
316 /PColor exch def
317 } if
318 /CColor [ currentrgbcolor ] def
319 end
320} bind def
321% PATstroke - stroke with the current pattern
322/PATstroke {
323 countdictstack
324 save
325 mark
326 {
327 currentpoint strokepath moveto
328 PATpcalc % proc nw nh px py
329 clip newpath PATfill
330 } stopped {
331 (*** PATstroke Warning: Path is too complex, stroking
332 with gray) =
333 cleartomark
334 restore
335 countdictstack exch sub dup 0 gt
336 { { end } repeat } { pop } ifelse
337 gsave 0.5 setgray oldstroke grestore
338 } { pop restore pop } ifelse
339 newpath
340} bind def
341/PATtcalc { % modmtx tilingtype PATtcalc tilematrix
342 % Note: tiling types 2 and 3 are not supported
343 gsave
344 exch concat % tilingtype
345 matrix currentmatrix exch % cmtx tilingtype
346 % Tiling type 1 and 3: constant spacing
347 2 ne {
348 % Distort the pattern so that it occupies
349 % an integral number of device pixels
350 dup 4 get exch dup 5 get exch % tx ty cmtx
351 XStep 0 dtransform
352 round exch round exch % tx ty cmtx dx.x dx.y
353 XStep div exch XStep div exch % tx ty cmtx a b
354 0 YStep dtransform
355 round exch round exch % tx ty cmtx a b dy.x dy.y
356 YStep div exch YStep div exch % tx ty cmtx a b c d
357 7 -3 roll astore % { a b c d tx ty }
358 } if
359 grestore
360} bind def
361/PATusp {
362 false PATredef
363 PATDict begin
364 CColor PATsc
365 end
366} bind def
367
368% this is the pattern fill program from the Second edition Reference Manual
369% with changes to call the above pattern fill
370% left30
37111 dict begin
372/PaintType 1 def
373/PatternType 1 def
374/TilingType 1 def
375/BBox [0 0 1 1] def
376/XStep 1 def
377/YStep 1 def
378/PatWidth 1 def
379/PatHeight 1 def
380/Multi 2 def
381/PaintData [
382 { clippath } bind
383 { 32 16 true [ 32 0 0 -16 0 16 ]
384 {<c000c000300030000c000c000300030000c000c000300030
385 000c000c00030003c000c000300030000c000c0003000300
386 00c000c000300030000c000c00030003>}
387 imagemask } bind
388] def
389/PaintProc {
390 pop
391 exec fill
392} def
393currentdict
394end
395/P1 exch def
396
397% horizontal sawtooth lines
39811 dict begin
399/PaintType 1 def
400/PatternType 1 def
401/TilingType 1 def
402/BBox [0 0 1 1] def
403/XStep 1 def
404/YStep 1 def
405/PatWidth 1 def
406/PatHeight 1 def
407/Multi 2 def
408/PaintData [
409 { clippath } bind
410 { 32 16 true [ 32 0 0 -16 0 16 ]
411 {<000000000000000000000000000000000000000000000000
412 000000000100010002800280044004400820082010101010
413 20082008400440048002800200010001>}
414 imagemask } bind
415] def
416/PaintProc {
417 pop
418 exec fill
419} def
420currentdict
421end
422/P21 exch def
4231.1111 1.1111 scale %restore scale
424
425/cp {closepath} bind def
426/ef {eofill} bind def
427/gr {grestore} bind def
428/gs {gsave} bind def
429/sa {save} bind def
430/rs {restore} bind def
431/l {lineto} bind def
432/m {moveto} bind def
433/rm {rmoveto} bind def
434/n {newpath} bind def
435/s {stroke} bind def
436/sh {show} bind def
437/slc {setlinecap} bind def
438/slj {setlinejoin} bind def
439/slw {setlinewidth} bind def
440/srgb {setrgbcolor} bind def
441/rot {rotate} bind def
442/sc {scale} bind def
443/sd {setdash} bind def
444/ff {findfont} bind def
445/sf {setfont} bind def
446/scf {scalefont} bind def
447/sw {stringwidth} bind def
448/tr {translate} bind def
449/tnt {dup dup currentrgbcolor
450 4 -2 roll dup 1 exch sub 3 -1 roll mul add
451 4 -2 roll dup 1 exch sub 3 -1 roll mul add
452 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
453 bind def
454/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
455 4 -2 roll mul srgb} bind def
456/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
457/$F2psEnd {$F2psEnteredState restore end} def
458%%EndProlog
459
460$F2psBegin
46110 setmiterlimit
462n 0 792 m 0 0 l 612 0 l 612 792 l cp clip
463 0.06000 0.06000 sc
464/Courier ff 165.00 scf sf
4653921 3035 m
466gs 1 -1 sc (Storage) col-1 sh gr
4677.500 slw
468% Polyline
469 [15 50.0] 50.0 sd
470n 101 461 m 1105 461 l 1105 662 l 101 662 l cp gs col-1 s gr [] 0 sd
471% Polyline
472 [15 50.0] 50.0 sd
473n 101 863 m 1105 863 l 1105 1064 l 101 1064 l cp gs col-1 s gr [] 0 sd
474% Polyline
475 [15 50.0] 50.0 sd
476n 101 1265 m 1105 1265 l 1105 1466 l 101 1466 l cp gs col-1 s gr [] 0 sd
477% Polyline
478 [15 50.0] 50.0 sd
479n 101 1668 m 1105 1668 l 1105 1869 l 101 1869 l cp gs col-1 s gr [] 0 sd
480% Polyline
481n 101 2472 m 1105 2472 l 1105 2673 l 101 2673 l cp gs col-1 s gr
482% Polyline
483n 101 1668 m 1105 1668 l 1105 1869 l 101 1869 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
48415.00 15.00 sc P1 [16 0 0 -8 6.73 111.20] PATmp PATsp ef gr PATusp gs col-1 s gr
485% Polyline
486n 101 1265 m 1105 1265 l 1105 1466 l 101 1466 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
48715.00 15.00 sc P1 [16 0 0 -8 6.73 84.33] PATmp PATsp ef gr PATusp gs col-1 s gr
488% Polyline
489n 101 863 m 1105 863 l 1105 1064 l 101 1064 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
49015.00 15.00 sc P1 [16 0 0 -8 6.73 57.53] PATmp PATsp ef gr PATusp gs col-1 s gr
491% Polyline
492n 101 461 m 1105 461 l 1105 662 l 101 662 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
49315.00 15.00 sc P1 [16 0 0 -8 6.73 30.73] PATmp PATsp ef gr PATusp gs col-1 s gr
494% Polyline
495n 101 59 m 1105 59 l 1105 260 l 101 260 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
49615.00 15.00 sc P1 [16 0 0 -8 6.73 3.93] PATmp PATsp ef gr PATusp gs col-1 s gr
497% Polyline
498n 101 2472 m 1105 2472 l 1105 2673 l 101 2673 l cp gs col7 1.00 shd ef gr gs col-1 s gr
499% Polyline
500n 101 2472 m 1105 2472 l 1105 2673 l 101 2673 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
50115.00 15.00 sc P1 [16 0 0 -8 6.73 164.80] PATmp PATsp ef gr PATusp gs col-1 s gr
502% Polyline
503n 101 2070 m 1105 2070 l 1105 2271 l 101 2271 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
50415.00 15.00 sc P1 [16 0 0 -8 6.73 138.00] PATmp PATsp ef gr PATusp gs col-1 s gr
505% Polyline
506n 1306 59 m 2312 59 l 2312 260 l 1306 260 l cp gs col-1 s gr
507% Polyline
508n 1306 461 m 2312 461 l 2312 662 l 1306 662 l cp gs col-1 s gr
509% Polyline
510n 1306 863 m 2312 863 l 2312 1064 l 1306 1064 l cp gs col-1 s gr
511% Polyline
512n 1306 1265 m 2312 1265 l 2312 1466 l 1306 1466 l cp gs col-1 s gr
513% Polyline
514n 1306 1668 m 2312 1668 l 2312 1869 l 1306 1869 l cp gs col-1 s gr
515% Polyline
516n 1306 2070 m 2312 2070 l 2312 2271 l 1306 2271 l cp gs col-1 s gr
517% Polyline
518n 1306 2472 m 2312 2472 l 2312 2673 l 1306 2673 l cp gs col-1 s gr
519% Polyline
520n 2513 59 m 3518 59 l 3518 260 l 2513 260 l cp gs col-1 s gr
521% Polyline
522n 2513 461 m 3518 461 l 3518 662 l 2513 662 l cp gs col-1 s gr
523% Polyline
524n 2513 863 m 3518 863 l 3518 1064 l 2513 1064 l cp gs col-1 s gr
525% Polyline
526n 2513 1265 m 3518 1265 l 3518 1466 l 2513 1466 l cp gs col-1 s gr
527% Polyline
528n 2513 1668 m 3518 1668 l 3518 1869 l 2513 1869 l cp gs col-1 s gr
529% Polyline
530n 2513 2070 m 3518 2070 l 3518 2271 l 2513 2271 l cp gs col-1 s gr
531% Polyline
532n 2513 2472 m 3518 2472 l 3518 2673 l 2513 2673 l cp gs col-1 s gr
533% Polyline
534n 1408 59 m 2312 59 l 2312 260 l 1408 260 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
53515.00 15.00 sc P1 [16 0 0 -8 93.87 3.93] PATmp PATsp ef gr PATusp gs col-1 s gr
536% Polyline
537n 2513 59 m 2614 59 l 2614 260 l 2513 260 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
53815.00 15.00 sc P1 [16 0 0 -8 167.53 3.93] PATmp PATsp ef gr PATusp gs col-1 s gr
539% Polyline
540n 1408 461 m 1609 461 l 1609 662 l 1408 662 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
54115.00 15.00 sc P1 [16 0 0 -8 93.87 30.73] PATmp PATsp ef gr PATusp gs col-1 s gr
542% Polyline
543n 1709 461 m 1810 461 l 1810 662 l 1709 662 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
54415.00 15.00 sc P1 [16 0 0 -8 113.93 30.73] PATmp PATsp ef gr PATusp gs col-1 s gr
545% Polyline
546n 2011 461 m 2312 461 l 2312 662 l 2011 662 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
54715.00 15.00 sc P1 [16 0 0 -8 134.07 30.73] PATmp PATsp ef gr PATusp gs col-1 s gr
548% Polyline
549n 2513 461 m 2614 461 l 2614 662 l 2513 662 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
55015.00 15.00 sc P1 [16 0 0 -8 167.53 30.73] PATmp PATsp ef gr PATusp gs col-1 s gr
551% Polyline
552n 2815 461 m 2915 461 l 2915 662 l 2815 662 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
55315.00 15.00 sc P1 [16 0 0 -8 187.67 30.73] PATmp PATsp ef gr PATusp gs col-1 s gr
554% Polyline
555n 3016 461 m 3218 461 l 3218 662 l 3016 662 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
55615.00 15.00 sc P1 [16 0 0 -8 201.07 30.73] PATmp PATsp ef gr PATusp gs col-1 s gr
557% Polyline
558n 1306 863 m 1609 863 l 1609 1064 l 1306 1064 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
55915.00 15.00 sc P1 [16 0 0 -8 87.07 57.53] PATmp PATsp ef gr PATusp gs col-1 s gr
560% Polyline
561n 1709 863 m 1810 863 l 1810 1064 l 1709 1064 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
56215.00 15.00 sc P1 [16 0 0 -8 113.93 57.53] PATmp PATsp ef gr PATusp gs col-1 s gr
563% Polyline
564n 2011 863 m 2111 863 l 2111 1064 l 2011 1064 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
56515.00 15.00 sc P1 [16 0 0 -8 134.07 57.53] PATmp PATsp ef gr PATusp gs col-1 s gr
566% Polyline
567n 2212 863 m 2312 863 l 2312 1064 l 2212 1064 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
56815.00 15.00 sc P1 [16 0 0 -8 147.47 57.53] PATmp PATsp ef gr PATusp gs col-1 s gr
569% Polyline
570n 2815 863 m 2915 863 l 2915 1064 l 2815 1064 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
57115.00 15.00 sc P1 [16 0 0 -8 187.67 57.53] PATmp PATsp ef gr PATusp gs col-1 s gr
572% Polyline
573n 3016 863 m 3218 863 l 3218 1064 l 3016 1064 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
57415.00 15.00 sc P1 [16 0 0 -8 201.07 57.53] PATmp PATsp ef gr PATusp gs col-1 s gr
575% Polyline
576n 3317 863 m 3419 863 l 3419 1064 l 3317 1064 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
57715.00 15.00 sc P1 [16 0 0 -8 221.13 57.53] PATmp PATsp ef gr PATusp gs col-1 s gr
578% Polyline
579n 1910 1265 m 2011 1265 l 2011 1265 l 1910 1265 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
58015.00 15.00 sc P1 [16 0 0 -8 127.33 84.33] PATmp PATsp ef gr PATusp gs col-1 s gr
581% Polyline
582n 2513 2472 m 3518 2472 l 3518 2673 l 2513 2673 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
58315.00 15.00 sc P1 [16 0 0 -8 167.53 164.80] PATmp PATsp ef gr PATusp gs col-1 s gr
584% Polyline
585n 1507 1265 m 1609 1265 l 1609 1466 l 1507 1466 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
58615.00 15.00 sc P1 [16 0 0 -8 100.47 84.33] PATmp PATsp ef gr PATusp gs col-1 s gr
587% Polyline
588n 1709 1265 m 1810 1265 l 1810 1466 l 1709 1466 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
58915.00 15.00 sc P1 [16 0 0 -8 113.93 84.33] PATmp PATsp ef gr PATusp gs col-1 s gr
590% Polyline
591n 1306 1265 m 1408 1265 l 1408 1466 l 1306 1466 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
59215.00 15.00 sc P21 [16 0 0 -8 87.07 84.33] PATmp PATsp ef gr PATusp gs col-1 s gr
593% Polyline
594n 2011 1265 m 2111 1265 l 2111 1466 l 2011 1466 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
59515.00 15.00 sc P1 [16 0 0 -8 134.07 84.33] PATmp PATsp ef gr PATusp gs col-1 s gr
596% Polyline
597n 1609 1265 m 1709 1265 l 1709 1466 l 1609 1466 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
59815.00 15.00 sc P21 [16 0 0 -8 107.27 84.33] PATmp PATsp ef gr PATusp gs col-1 s gr
599% Polyline
600n 1810 1265 m 2011 1265 l 2011 1466 l 1810 1466 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
60115.00 15.00 sc P21 [16 0 0 -8 120.67 84.33] PATmp PATsp ef gr PATusp gs col-1 s gr
602% Polyline
603n 1507 1668 m 1609 1668 l 1609 1869 l 1507 1869 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
60415.00 15.00 sc P1 [16 0 0 -8 100.47 111.20] PATmp PATsp ef gr PATusp gs col-1 s gr
605% Polyline
606n 1709 1668 m 1810 1668 l 1810 1869 l 1709 1869 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
60715.00 15.00 sc P1 [16 0 0 -8 113.93 111.20] PATmp PATsp ef gr PATusp gs col-1 s gr
608% Polyline
609n 1609 1668 m 1709 1668 l 1709 1869 l 1609 1869 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
61015.00 15.00 sc P21 [16 0 0 -8 107.27 111.20] PATmp PATsp ef gr PATusp gs col-1 s gr
611% Polyline
612n 1810 1668 m 2011 1668 l 2011 1869 l 1810 1869 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
61315.00 15.00 sc P21 [16 0 0 -8 120.67 111.20] PATmp PATsp ef gr PATusp gs col-1 s gr
614% Polyline
615n 3218 1668 m 3518 1668 l 3518 1869 l 3218 1869 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
61615.00 15.00 sc P1 [16 0 0 -8 214.53 111.20] PATmp PATsp ef gr PATusp gs col-1 s gr
617% Polyline
618n 2513 1668 m 2714 1668 l 2714 1869 l 2513 1869 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
61915.00 15.00 sc P1 [16 0 0 -8 167.53 111.20] PATmp PATsp ef gr PATusp gs col-1 s gr
620% Polyline
621n 3317 1265 m 3518 1265 l 3518 1466 l 3317 1466 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
62215.00 15.00 sc P1 [16 0 0 -8 221.13 84.33] PATmp PATsp ef gr PATusp gs col-1 s gr
623% Polyline
624n 1306 2070 m 1408 2070 l 1408 2271 l 1306 2271 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
62515.00 15.00 sc P21 [16 0 0 -8 87.07 138.00] PATmp PATsp ef gr PATusp gs col-1 s gr
626% Polyline
627n 1609 2070 m 1709 2070 l 1709 2271 l 1609 2271 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
62815.00 15.00 sc P21 [16 0 0 -8 107.27 138.00] PATmp PATsp ef gr PATusp gs col-1 s gr
629% Polyline
630n 1810 2271 m 2011 2271 l 2011 2070 l 1810 2070 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
63115.00 15.00 sc P21 [16 0 0 -8 120.67 138.00] PATmp PATsp ef gr PATusp gs col-1 s gr
632% Polyline
633n 2111 2070 m 2312 2070 l 2312 2271 l 2111 2271 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
63415.00 15.00 sc P21 [16 0 0 -8 140.73 138.00] PATmp PATsp ef gr PATusp gs col-1 s gr
635% Polyline
636n 2614 2070 m 2815 2070 l 2815 2271 l 2614 2271 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
63715.00 15.00 sc P1 [16 0 0 -8 174.27 138.00] PATmp PATsp ef gr PATusp gs col-1 s gr
638% Polyline
639n 2915 2070 m 3016 2070 l 3016 2271 l 2915 2271 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
64015.00 15.00 sc P1 [16 0 0 -8 194.33 138.00] PATmp PATsp ef gr PATusp gs col-1 s gr
641% Polyline
642n 3218 2070 m 3317 2070 l 3317 2271 l 3218 2271 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
64315.00 15.00 sc P1 [16 0 0 -8 214.53 138.00] PATmp PATsp ef gr PATusp gs col-1 s gr
644% Polyline
645n 3720 2472 m 4725 2472 l 4725 2673 l 3720 2673 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
64615.00 15.00 sc P1 [16 0 0 -8 248.00 164.80] PATmp PATsp ef gr PATusp gs col-1 s gr
647% Polyline
648n 3720 2070 m 4122 2070 l 4122 2271 l 3720 2271 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
64915.00 15.00 sc P1 [16 0 0 -8 248.00 138.00] PATmp PATsp ef gr PATusp gs col-1 s gr
650% Polyline
651n 3720 1869 m 4122 1869 l 4122 1668 l 3720 1668 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
65215.00 15.00 sc P1 [16 0 0 -8 248.00 111.20] PATmp PATsp ef gr PATusp gs col-1 s gr
653% Polyline
654n 3720 1466 m 3921 1466 l 3921 1265 l 3720 1265 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
65515.00 15.00 sc P1 [16 0 0 -8 248.00 84.33] PATmp PATsp ef gr PATusp gs col-1 s gr
656% Polyline
657n 3720 1064 m 4122 1064 l 4122 863 l 3720 863 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
65815.00 15.00 sc P1 [16 0 0 -8 248.00 57.53] PATmp PATsp ef gr PATusp gs col-1 s gr
659% Polyline
660n 3720 662 m 4122 662 l 4122 461 l 3720 461 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
66115.00 15.00 sc P1 [16 0 0 -8 248.00 30.73] PATmp PATsp ef gr PATusp gs col-1 s gr
662% Polyline
663n 3720 59 m 3820 59 l 3820 260 l 3720 260 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
66415.00 15.00 sc P1 [16 0 0 -8 248.00 3.93] PATmp PATsp ef gr PATusp gs col-1 s gr
665/Times-Roman ff 60.00 scf sf
6661207 2170 m
667gs 1 -1 sc (=) col-1 sh gr
668/Times-Roman ff 60.00 scf sf
6691207 1768 m
670gs 1 -1 sc (=) col-1 sh gr
671/Times-Roman ff 60.00 scf sf
6721207 1366 m
673gs 1 -1 sc (=) col-1 sh gr
674/Times-Roman ff 60.00 scf sf
6751207 964 m
676gs 1 -1 sc (=) col-1 sh gr
677/Times-Roman ff 60.00 scf sf
6781207 562 m
679gs 1 -1 sc (=) col-1 sh gr
680/Times-Roman ff 60.00 scf sf
6811207 160 m
682gs 1 -1 sc (=) col-1 sh gr
683/Times-Roman ff 60.00 scf sf
6840 160 m
685gs 1 -1 sc (F0) col-1 sh gr
686/Times-Roman ff 60.00 scf sf
6870 562 m
688gs 1 -1 sc (F1) col-1 sh gr
689/Times-Roman ff 60.00 scf sf
6900 964 m
691gs 1 -1 sc (F2) col-1 sh gr
692/Times-Roman ff 60.00 scf sf
6930 1366 m
694gs 1 -1 sc (F4) col-1 sh gr
695/Times-Roman ff 60.00 scf sf
6960 1768 m
697gs 1 -1 sc (F5) col-1 sh gr
698/Times-Roman ff 60.00 scf sf
6990 2170 m
700gs 1 -1 sc (F6) col-1 sh gr
701/Times-Roman ff 60.00 scf sf
7020 2572 m
703gs 1 -1 sc (F7) col-1 sh gr
704/Times-Roman ff 60.00 scf sf
7051207 2572 m
706gs 1 -1 sc (=) col-1 sh gr
707/Courier ff 165.00 scf sf
708101 260 m
709gs 1 -1 sc (DISULPHIDE) col-1 sh gr
710/Courier ff 165.00 scf sf
711101 662 m
712gs 1 -1 sc (BISULPHIDE) col-1 sh gr
713/Courier ff 165.00 scf sf
714101 1064 m
715gs 1 -1 sc (DISELENIDE) col-1 sh gr
716/Courier ff 165.00 scf sf
717101 1466 m
718gs 1 -1 sc (DISULPHINE) col-1 sh gr
719/Courier ff 165.00 scf sf
720101 1869 m
721gs 1 -1 sc (ESSELENIAN) col-1 sh gr
722/Courier ff 165.00 scf sf
723101 2271 m
724gs 1 -1 sc (DISULPHONE) col-1 sh gr
725/Courier ff 165.00 scf sf
726101 2673 m
727gs 1 -1 sc (TROEZENIAN) col-1 sh gr
728/Courier ff 165.00 scf sf
7291408 260 m
730gs 1 -1 sc (ISULPHIDE) col-1 sh gr
731/Courier ff 165.00 scf sf
7322513 260 m
733gs 1 -1 sc (D) col-1 sh gr
734/Courier ff 165.00 scf sf
7351408 662 m
736gs 1 -1 sc (IS) col-1 sh gr
737/Courier ff 165.00 scf sf
7381709 662 m
739gs 1 -1 sc (L) col-1 sh gr
740/Courier ff 165.00 scf sf
7412011 662 m
742gs 1 -1 sc (IDE) col-1 sh gr
743/Courier ff 165.00 scf sf
7442513 662 m
745gs 1 -1 sc (B) col-1 sh gr
746/Courier ff 165.00 scf sf
7472815 662 m
748gs 1 -1 sc (U) col-1 sh gr
749/Courier ff 165.00 scf sf
7503016 662 m
751gs 1 -1 sc (PH) col-1 sh gr
752/Courier ff 165.00 scf sf
7532815 1064 m
754gs 1 -1 sc (E EN D) col-1 sh gr
755/Courier ff 165.00 scf sf
7561306 1064 m
757gs 1 -1 sc (DIS L I E) col-1 sh gr
758/Courier ff 165.00 scf sf
7592513 2673 m
760gs 1 -1 sc (TROEZENIAN) col-1 sh gr
761/Courier ff 165.00 scf sf
7622513 1869 m
763gs 1 -1 sc (ES) col-1 sh gr
764/Courier ff 165.00 scf sf
7653218 1869 m
766gs 1 -1 sc (IAN) col-1 sh gr
767/Courier ff 165.00 scf sf
7681507 1869 m
769gs 1 -1 sc (SELEN) col-1 sh gr
770/Courier ff 165.00 scf sf
7711306 1466 m
772gs 1 -1 sc (DISULPHI) col-1 sh gr
773/Courier ff 165.00 scf sf
7743317 1466 m
775gs 1 -1 sc (NE) col-1 sh gr
776/Courier ff 165.00 scf sf
7771306 2271 m
778gs 1 -1 sc (D U PH NE) col-1 sh gr
779/Courier ff 165.00 scf sf
7802513 2271 m
781gs 1 -1 sc ( IS U O) col-1 sh gr
782/Courier ff 165.00 scf sf
783302 2874 m
784gs 1 -1 sc (Actual ) col-1 sh gr
785/Courier ff 165.00 scf sf
786302 3035 m
787gs 1 -1 sc (File) col-1 sh gr
788/Courier ff 165.00 scf sf
7891507 2874 m
790gs 1 -1 sc (Copy) col-1 sh gr
791/Courier ff 165.00 scf sf
7921507 3035 m
793gs 1 -1 sc (Segments) col-1 sh gr
794/Courier ff 165.00 scf sf
7952714 2849 m
796gs 1 -1 sc (Insert) col-1 sh gr
797/Courier ff 165.00 scf sf
7982714 3010 m
799gs 1 -1 sc (Segments) col-1 sh gr
800/Courier ff 165.00 scf sf
8013921 2874 m
802gs 1 -1 sc (Physical) col-1 sh gr
803% Polyline
804 [15 50.0] 50.0 sd
805n 101 59 m 1105 59 l 1105 260 l 101 260 l cp gs col-1 s gr [] 0 sd
806$F2psEnd
807rs
808end
diff --git a/xdelta1/doc/old/dcc99/figs/xdarchive.fig b/xdelta1/doc/old/dcc99/figs/xdarchive.fig
new file mode 100755
index 0000000..238b675
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/figs/xdarchive.fig
@@ -0,0 +1,198 @@
1#FIG 3.1
2Portrait
3Center
4Inches
51200 2
66 0 59 4725 3075
72 2 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 5
8 101 59 1105 59 1105 260 101 260 101 59
92 2 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 5
10 101 461 1105 461 1105 662 101 662 101 461
112 2 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 5
12 101 863 1105 863 1105 1064 101 1064 101 863
132 2 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 5
14 101 1265 1105 1265 1105 1466 101 1466 101 1265
152 2 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 5
16 101 1668 1105 1668 1105 1869 101 1869 101 1668
172 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
18 101 2472 1105 2472 1105 2673 101 2673 101 2472
192 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
20 101 1668 1105 1668 1105 1869 101 1869 101 1668
212 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
22 101 1265 1105 1265 1105 1466 101 1466 101 1265
232 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
24 101 863 1105 863 1105 1064 101 1064 101 863
252 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
26 101 461 1105 461 1105 662 101 662 101 461
272 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
28 101 59 1105 59 1105 260 101 260 101 59
292 2 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 5
30 101 2472 1105 2472 1105 2673 101 2673 101 2472
312 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
32 101 2472 1105 2472 1105 2673 101 2673 101 2472
332 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
34 101 2070 1105 2070 1105 2271 101 2271 101 2070
352 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
36 1306 59 2312 59 2312 260 1306 260 1306 59
372 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
38 1306 461 2312 461 2312 662 1306 662 1306 461
392 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
40 1306 863 2312 863 2312 1064 1306 1064 1306 863
412 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
42 1306 1265 2312 1265 2312 1466 1306 1466 1306 1265
432 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
44 1306 1668 2312 1668 2312 1869 1306 1869 1306 1668
452 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
46 1306 2070 2312 2070 2312 2271 1306 2271 1306 2070
472 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
48 1306 2472 2312 2472 2312 2673 1306 2673 1306 2472
492 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
50 2513 59 3518 59 3518 260 2513 260 2513 59
512 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
52 2513 461 3518 461 3518 662 2513 662 2513 461
532 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
54 2513 863 3518 863 3518 1064 2513 1064 2513 863
552 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
56 2513 1265 3518 1265 3518 1466 2513 1466 2513 1265
572 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
58 2513 1668 3518 1668 3518 1869 2513 1869 2513 1668
592 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
60 2513 2070 3518 2070 3518 2271 2513 2271 2513 2070
612 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
62 2513 2472 3518 2472 3518 2673 2513 2673 2513 2472
632 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
64 1408 59 2312 59 2312 260 1408 260 1408 59
652 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
66 2513 59 2614 59 2614 260 2513 260 2513 59
672 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
68 1408 461 1609 461 1609 662 1408 662 1408 461
692 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
70 1709 461 1810 461 1810 662 1709 662 1709 461
712 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
72 2011 461 2312 461 2312 662 2011 662 2011 461
732 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
74 2513 461 2614 461 2614 662 2513 662 2513 461
752 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
76 2815 461 2915 461 2915 662 2815 662 2815 461
772 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
78 3016 461 3218 461 3218 662 3016 662 3016 461
792 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
80 1306 863 1609 863 1609 1064 1306 1064 1306 863
812 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
82 1709 863 1810 863 1810 1064 1709 1064 1709 863
832 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
84 2011 863 2111 863 2111 1064 2011 1064 2011 863
852 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
86 2212 863 2312 863 2312 1064 2212 1064 2212 863
872 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
88 2815 863 2915 863 2915 1064 2815 1064 2815 863
892 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
90 3016 863 3218 863 3218 1064 3016 1064 3016 863
912 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
92 3317 863 3419 863 3419 1064 3317 1064 3317 863
932 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
94 1910 1265 2011 1265 2011 1265 1910 1265 1910 1265
952 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
96 2513 2472 3518 2472 3518 2673 2513 2673 2513 2472
972 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
98 1507 1265 1609 1265 1609 1466 1507 1466 1507 1265
992 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
100 1709 1265 1810 1265 1810 1466 1709 1466 1709 1265
1012 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
102 1306 1265 1408 1265 1408 1466 1306 1466 1306 1265
1032 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
104 2011 1265 2111 1265 2111 1466 2011 1466 2011 1265
1052 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
106 1609 1265 1709 1265 1709 1466 1609 1466 1609 1265
1072 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
108 1810 1265 2011 1265 2011 1466 1810 1466 1810 1265
1092 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
110 1507 1668 1609 1668 1609 1869 1507 1869 1507 1668
1112 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
112 1709 1668 1810 1668 1810 1869 1709 1869 1709 1668
1132 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
114 1609 1668 1709 1668 1709 1869 1609 1869 1609 1668
1152 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
116 1810 1668 2011 1668 2011 1869 1810 1869 1810 1668
1172 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
118 3218 1668 3518 1668 3518 1869 3218 1869 3218 1668
1192 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
120 2513 1668 2714 1668 2714 1869 2513 1869 2513 1668
1212 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
122 3317 1265 3518 1265 3518 1466 3317 1466 3317 1265
1232 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
124 1306 2070 1408 2070 1408 2271 1306 2271 1306 2070
1252 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
126 1609 2070 1709 2070 1709 2271 1609 2271 1609 2070
1272 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
128 1810 2271 2011 2271 2011 2070 1810 2070 1810 2271
1292 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
130 2111 2070 2312 2070 2312 2271 2111 2271 2111 2070
1312 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
132 2614 2070 2815 2070 2815 2271 2614 2271 2614 2070
1332 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
134 2915 2070 3016 2070 3016 2271 2915 2271 2915 2070
1352 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
136 3218 2070 3317 2070 3317 2271 3218 2271 3218 2070
1372 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
138 3720 2472 4725 2472 4725 2673 3720 2673 3720 2472
1392 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
140 3720 2070 4122 2070 4122 2271 3720 2271 3720 2070
1412 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
142 3720 1869 4122 1869 4122 1668 3720 1668 3720 1869
1432 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
144 3720 1466 3921 1466 3921 1265 3720 1265 3720 1466
1452 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
146 3720 1064 4122 1064 4122 863 3720 863 3720 1064
1472 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
148 3720 662 4122 662 4122 461 3720 461 3720 662
1492 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
150 3720 59 3820 59 3820 260 3720 260 3720 59
1514 0 -1 0 0 0 4 0.0000 4 15 36 1207 2170 =\001
1524 0 -1 0 0 0 4 0.0000 4 15 36 1207 1768 =\001
1534 0 -1 0 0 0 4 0.0000 4 15 36 1207 1366 =\001
1544 0 -1 0 0 0 4 0.0000 4 15 36 1207 964 =\001
1554 0 -1 0 0 0 4 0.0000 4 15 36 1207 562 =\001
1564 0 -1 0 0 0 4 0.0000 4 15 36 1207 160 =\001
1574 0 -1 0 0 0 4 0.0000 4 46 65 0 160 F0\001
1584 0 -1 0 0 0 4 0.0000 4 46 65 0 562 F1\001
1594 0 -1 0 0 0 4 0.0000 4 46 65 0 964 F2\001
1604 0 -1 0 0 0 4 0.0000 4 46 65 0 1366 F4\001
1614 0 -1 0 0 0 4 0.0000 4 46 65 0 1768 F5\001
1624 0 -1 0 0 0 4 0.0000 4 46 65 0 2170 F6\001
1634 0 -1 0 0 0 4 0.0000 4 46 65 0 2572 F7\001
1644 0 -1 0 0 0 4 0.0000 4 15 36 1207 2572 =\001
1654 0 -1 0 0 5 11 0.0000 0 95 1005 101 260 DISULPHIDE\001
1664 0 -1 0 0 5 11 0.0000 0 95 1005 101 662 BISULPHIDE\001
1674 0 -1 0 0 5 11 0.0000 0 95 1005 101 1064 DISELENIDE\001
1684 0 -1 0 0 5 11 0.0000 0 95 1005 101 1466 DISULPHINE\001
1694 0 -1 0 0 5 11 0.0000 0 95 1005 101 1869 ESSELENIAN\001
1704 0 -1 0 0 5 11 0.0000 0 95 1005 101 2271 DISULPHONE\001
1714 0 -1 0 0 5 11 0.0000 0 95 1005 101 2673 TROEZENIAN\001
1724 0 -1 0 0 5 11 0.0000 0 95 905 1408 260 ISULPHIDE\001
1734 0 -1 0 0 5 11 0.0000 0 95 101 2513 260 D\001
1744 0 -1 0 0 5 11 0.0000 0 95 201 1408 662 IS\001
1754 0 -1 0 0 5 11 0.0000 0 95 101 1709 662 L\001
1764 0 -1 0 0 5 11 0.0000 0 95 302 2011 662 IDE\001
1774 0 -1 0 0 5 11 0.0000 0 95 101 2513 662 B\001
1784 0 -1 0 0 5 11 0.0000 0 95 101 2815 662 U\001
1794 0 -1 0 0 5 11 0.0000 0 95 201 3016 662 PH\001
1804 0 -1 0 0 5 11 0.0000 0 95 603 2815 1064 E EN D\001
1814 0 -1 0 0 5 11 0.0000 0 95 1005 1306 1064 DIS L I E\001
1824 0 -1 0 0 5 11 0.0000 0 95 1005 2513 2673 TROEZENIAN\001
1834 0 -1 0 0 5 11 0.0000 0 95 201 2513 1869 ES\001
1844 0 -1 0 0 5 11 0.0000 0 95 302 3218 1869 IAN\001
1854 0 -1 0 0 5 11 0.0000 0 95 503 1507 1869 SELEN\001
1864 0 -1 0 0 5 11 0.0000 0 95 804 1306 1466 DISULPHI\001
1874 0 -1 0 0 5 11 0.0000 0 95 201 3317 1466 NE\001
1884 0 -1 0 0 5 11 0.0000 0 95 1005 1306 2271 D U PH NE\001
1894 0 -1 0 0 5 11 0.0000 0 95 804 2513 2271 IS U O\001
1904 0 -1 0 0 12 11 0.0000 4 101 704 302 2874 Actual \001
1914 0 -1 0 0 12 11 0.0000 4 101 402 302 3035 File\001
1924 0 -1 0 0 12 11 0.0000 4 125 402 1507 2874 Copy\001
1934 0 -1 0 0 12 11 0.0000 4 125 804 1507 3035 Segments\001
1944 0 -1 0 0 12 11 0.0000 4 95 603 2714 2849 Insert\001
1954 0 -1 0 0 12 11 0.0000 4 125 804 2714 3010 Segments\001
1964 0 -1 0 0 12 11 0.0000 4 131 804 3921 2874 Physical\001
1974 0 -1 0 0 12 11 0.0000 4 125 704 3921 3035 Storage\001
198-6
diff --git a/xdelta1/doc/old/dcc99/figs/xdarchive.fig.normalsize b/xdelta1/doc/old/dcc99/figs/xdarchive.fig.normalsize
new file mode 100755
index 0000000..2a97991
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/figs/xdarchive.fig.normalsize
@@ -0,0 +1,196 @@
1#FIG 3.1
2Landscape
3Center
4Inches
51200 2
62 2 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 5
7 600 600 3600 600 3600 1200 600 1200 600 600
82 2 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 5
9 600 1800 3600 1800 3600 2400 600 2400 600 1800
102 2 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 5
11 600 3000 3600 3000 3600 3600 600 3600 600 3000
122 2 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 5
13 600 4200 3600 4200 3600 4800 600 4800 600 4200
142 2 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 5
15 600 5400 3600 5400 3600 6000 600 6000 600 5400
162 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
17 600 7800 3600 7800 3600 8400 600 8400 600 7800
182 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
19 600 5400 3600 5400 3600 6000 600 6000 600 5400
202 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
21 600 4200 3600 4200 3600 4800 600 4800 600 4200
222 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
23 600 3000 3600 3000 3600 3600 600 3600 600 3000
242 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
25 600 1800 3600 1800 3600 2400 600 2400 600 1800
262 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
27 600 600 3600 600 3600 1200 600 1200 600 600
282 2 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 5
29 600 7800 3600 7800 3600 8400 600 8400 600 7800
302 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
31 600 7800 3600 7800 3600 8400 600 8400 600 7800
322 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
33 600 6600 3600 6600 3600 7200 600 7200 600 6600
342 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
35 4200 600 7200 600 7200 1200 4200 1200 4200 600
362 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
37 4200 1800 7200 1800 7200 2400 4200 2400 4200 1800
382 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
39 4200 3000 7200 3000 7200 3600 4200 3600 4200 3000
402 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
41 4200 4200 7200 4200 7200 4800 4200 4800 4200 4200
422 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
43 4200 5400 7200 5400 7200 6000 4200 6000 4200 5400
442 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
45 4200 6600 7200 6600 7200 7200 4200 7200 4200 6600
462 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
47 4200 7800 7200 7800 7200 8400 4200 8400 4200 7800
482 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
49 7800 600 10800 600 10800 1200 7800 1200 7800 600
502 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
51 7800 1800 10800 1800 10800 2400 7800 2400 7800 1800
522 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
53 7800 3000 10800 3000 10800 3600 7800 3600 7800 3000
542 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
55 7800 4200 10800 4200 10800 4800 7800 4800 7800 4200
562 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
57 7800 5400 10800 5400 10800 6000 7800 6000 7800 5400
582 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
59 7800 6600 10800 6600 10800 7200 7800 7200 7800 6600
602 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
61 7800 7800 10800 7800 10800 8400 7800 8400 7800 7800
622 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
63 4500 600 7200 600 7200 1200 4500 1200 4500 600
642 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
65 7800 600 8100 600 8100 1200 7800 1200 7800 600
662 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
67 4500 1800 5100 1800 5100 2400 4500 2400 4500 1800
682 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
69 5400 1800 5700 1800 5700 2400 5400 2400 5400 1800
702 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
71 6300 1800 7200 1800 7200 2400 6300 2400 6300 1800
722 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
73 7800 1800 8100 1800 8100 2400 7800 2400 7800 1800
742 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
75 8700 1800 9000 1800 9000 2400 8700 2400 8700 1800
762 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
77 9300 1800 9900 1800 9900 2400 9300 2400 9300 1800
782 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
79 4200 3000 5100 3000 5100 3600 4200 3600 4200 3000
802 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
81 5400 3000 5700 3000 5700 3600 5400 3600 5400 3000
822 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
83 6300 3000 6600 3000 6600 3600 6300 3600 6300 3000
842 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
85 6900 3000 7200 3000 7200 3600 6900 3600 6900 3000
862 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
87 8700 3000 9000 3000 9000 3600 8700 3600 8700 3000
882 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
89 9300 3000 9900 3000 9900 3600 9300 3600 9300 3000
902 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
91 10200 3000 10500 3000 10500 3600 10200 3600 10200 3000
922 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
93 6000 4200 6300 4200 6300 4200 6000 4200 6000 4200
942 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
95 7800 7800 10800 7800 10800 8400 7800 8400 7800 7800
962 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
97 4800 4200 5100 4200 5100 4800 4800 4800 4800 4200
982 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
99 5400 4200 5700 4200 5700 4800 5400 4800 5400 4200
1002 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
101 4200 4200 4500 4200 4500 4800 4200 4800 4200 4200
1022 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
103 6300 4200 6600 4200 6600 4800 6300 4800 6300 4200
1042 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
105 5100 4200 5400 4200 5400 4800 5100 4800 5100 4200
1062 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
107 5700 4200 6300 4200 6300 4800 5700 4800 5700 4200
1082 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
109 4800 5400 5100 5400 5100 6000 4800 6000 4800 5400
1102 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
111 5400 5400 5700 5400 5700 6000 5400 6000 5400 5400
1122 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
113 5100 5400 5400 5400 5400 6000 5100 6000 5100 5400
1142 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
115 5700 5400 6300 5400 6300 6000 5700 6000 5700 5400
1162 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
117 9900 5400 10800 5400 10800 6000 9900 6000 9900 5400
1182 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
119 7800 5400 8400 5400 8400 6000 7800 6000 7800 5400
1202 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
121 10200 4200 10800 4200 10800 4800 10200 4800 10200 4200
1222 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
123 4200 6600 4500 6600 4500 7200 4200 7200 4200 6600
1242 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
125 5100 6600 5400 6600 5400 7200 5100 7200 5100 6600
1262 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
127 5700 7200 6300 7200 6300 6600 5700 6600 5700 7200
1282 2 0 1 -1 7 0 0 61 0.000 0 0 -1 0 0 5
129 6600 6600 7200 6600 7200 7200 6600 7200 6600 6600
1302 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
131 8100 6600 8700 6600 8700 7200 8100 7200 8100 6600
1322 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
133 9000 6600 9300 6600 9300 7200 9000 7200 9000 6600
1342 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
135 9900 6600 10200 6600 10200 7200 9900 7200 9900 6600
1362 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
137 11400 7800 14400 7800 14400 8400 11400 8400 11400 7800
1382 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
139 11400 6600 12600 6600 12600 7200 11400 7200 11400 6600
1402 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
141 11400 6000 12600 6000 12600 5400 11400 5400 11400 6000
1422 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
143 11400 4800 12000 4800 12000 4200 11400 4200 11400 4800
1442 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
145 11400 3600 12600 3600 12600 3000 11400 3000 11400 3600
1462 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
147 11400 2400 12600 2400 12600 1800 11400 1800 11400 2400
1482 2 0 1 -1 7 0 0 41 0.000 0 0 -1 0 0 5
149 11400 600 11700 600 11700 1200 11400 1200 11400 600
1504 0 -1 0 0 0 12 0.0000 4 45 105 3900 6900 =\001
1514 0 -1 0 0 0 12 0.0000 4 45 105 3900 5700 =\001
1524 0 -1 0 0 0 12 0.0000 4 45 105 3900 4500 =\001
1534 0 -1 0 0 0 12 0.0000 4 45 105 3900 3300 =\001
1544 0 -1 0 0 0 12 0.0000 4 45 105 3900 2100 =\001
1554 0 -1 0 0 0 12 0.0000 4 45 105 3900 900 =\001
1564 0 -1 0 0 0 12 0.0000 4 135 195 300 900 F0\001
1574 0 -1 0 0 0 12 0.0000 4 135 195 300 2100 F1\001
1584 0 -1 0 0 0 12 0.0000 4 135 195 300 3300 F2\001
1594 0 -1 0 0 0 12 0.0000 4 135 195 300 4500 F4\001
1604 0 -1 0 0 0 12 0.0000 4 135 195 300 5700 F5\001
1614 0 -1 0 0 0 12 0.0000 4 135 195 300 6900 F6\001
1624 0 -1 0 0 0 12 0.0000 4 135 195 300 8100 F7\001
1634 0 -1 0 0 0 12 0.0000 4 45 105 3900 8100 =\001
1644 0 -1 0 0 5 34 0.0000 0 285 3000 600 1200 DISULPHIDE\001
1654 0 -1 0 0 5 34 0.0000 0 285 3000 600 2400 BISULPHIDE\001
1664 0 -1 0 0 5 34 0.0000 0 285 3000 600 3600 DISELENIDE\001
1674 0 -1 0 0 5 34 0.0000 0 285 3000 600 4800 DISULPHINE\001
1684 0 -1 0 0 5 34 0.0000 0 285 3000 600 6000 ESSELENIAN\001
1694 0 -1 0 0 5 34 0.0000 0 285 3000 600 7200 DISULPHONE\001
1704 0 -1 0 0 5 34 0.0000 0 285 3000 600 8400 TROEZENIAN\001
1714 0 -1 0 0 5 34 0.0000 0 285 2700 4500 1200 ISULPHIDE\001
1724 0 -1 0 0 5 34 0.0000 0 285 300 7800 1200 D\001
1734 0 -1 0 0 5 34 0.0000 0 285 600 4500 2400 IS\001
1744 0 -1 0 0 5 34 0.0000 0 285 300 5400 2400 L\001
1754 0 -1 0 0 5 34 0.0000 0 285 900 6300 2400 IDE\001
1764 0 -1 0 0 5 34 0.0000 0 285 300 7800 2400 B\001
1774 0 -1 0 0 5 34 0.0000 0 285 300 8700 2400 U\001
1784 0 -1 0 0 5 34 0.0000 0 285 600 9300 2400 PH\001
1794 0 -1 0 0 5 34 0.0000 0 285 1800 8700 3600 E EN D\001
1804 0 -1 0 0 5 34 0.0000 0 285 3000 4200 3600 DIS L I E\001
1814 0 -1 0 0 5 34 0.0000 0 285 3000 7800 8400 TROEZENIAN\001
1824 0 -1 0 0 5 34 0.0000 0 285 600 7800 6000 ES\001
1834 0 -1 0 0 5 34 0.0000 0 285 900 9900 6000 IAN\001
1844 0 -1 0 0 5 34 0.0000 0 285 1500 4800 6000 SELEN\001
1854 0 -1 0 0 5 34 0.0000 0 285 2400 4200 4800 DISULPHI\001
1864 0 -1 0 0 5 34 0.0000 0 285 600 10200 4800 NE\001
1874 0 -1 0 0 5 34 0.0000 0 285 3000 4200 7200 D U PH NE\001
1884 0 -1 0 0 5 34 0.0000 0 285 2400 7800 7200 IS U O\001
1894 0 -1 0 0 12 34 0.0000 4 300 2100 1200 9000 Actual \001
1904 0 -1 0 0 12 34 0.0000 4 300 1200 1200 9480 File\001
1914 0 -1 0 0 12 34 0.0000 4 375 1200 4800 9000 Copy\001
1924 0 -1 0 0 12 34 0.0000 4 375 2400 4800 9480 Segments\001
1934 0 -1 0 0 12 34 0.0000 4 285 1800 8400 8925 Insert\001
1944 0 -1 0 0 12 34 0.0000 4 375 2400 8400 9405 Segments\001
1954 0 -1 0 0 12 34 0.0000 4 390 2400 12000 9000 Physical\001
1964 0 -1 0 0 12 34 0.0000 4 375 2100 12000 9480 Storage\001
diff --git a/xdelta1/doc/old/dcc99/figs/xdelta.eps b/xdelta1/doc/old/dcc99/figs/xdelta.eps
new file mode 100755
index 0000000..7950f15
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/figs/xdelta.eps
@@ -0,0 +1,200 @@
1%!PS-Adobe-2.0 EPSF-2.0
2%%Title: xdelta.fig
3%%Creator: fig2dev Version 3.1 Patchlevel 2
4%%CreationDate: Mon May 4 03:46:54 1998
5%%For: jmacd@icw.EECS.Berkeley.EDU (Josh MacDonald,,,,ARN)
6%Magnification: 1.00
7%%Orientation: Portrait
8%%BoundingBox: 0 0 302 29
9%%Pages: 0
10%%BeginSetup
11%%IncludeFeature: *PageSize Letter
12%%EndSetup
13%%EndComments
14/$F2psDict 200 dict def
15$F2psDict begin
16$F2psDict /mtrx matrix put
17/col-1 {0 setgray} bind def
18/col0 {0.000 0.000 0.000 srgb} bind def
19/col1 {0.000 0.000 1.000 srgb} bind def
20/col2 {0.000 1.000 0.000 srgb} bind def
21/col3 {0.000 1.000 1.000 srgb} bind def
22/col4 {1.000 0.000 0.000 srgb} bind def
23/col5 {1.000 0.000 1.000 srgb} bind def
24/col6 {1.000 1.000 0.000 srgb} bind def
25/col7 {1.000 1.000 1.000 srgb} bind def
26/col8 {0.000 0.000 0.560 srgb} bind def
27/col9 {0.000 0.000 0.690 srgb} bind def
28/col10 {0.000 0.000 0.820 srgb} bind def
29/col11 {0.530 0.810 1.000 srgb} bind def
30/col12 {0.000 0.560 0.000 srgb} bind def
31/col13 {0.000 0.690 0.000 srgb} bind def
32/col14 {0.000 0.820 0.000 srgb} bind def
33/col15 {0.000 0.560 0.560 srgb} bind def
34/col16 {0.000 0.690 0.690 srgb} bind def
35/col17 {0.000 0.820 0.820 srgb} bind def
36/col18 {0.560 0.000 0.000 srgb} bind def
37/col19 {0.690 0.000 0.000 srgb} bind def
38/col20 {0.820 0.000 0.000 srgb} bind def
39/col21 {0.560 0.000 0.560 srgb} bind def
40/col22 {0.690 0.000 0.690 srgb} bind def
41/col23 {0.820 0.000 0.820 srgb} bind def
42/col24 {0.500 0.190 0.000 srgb} bind def
43/col25 {0.630 0.250 0.000 srgb} bind def
44/col26 {0.750 0.380 0.000 srgb} bind def
45/col27 {1.000 0.500 0.500 srgb} bind def
46/col28 {1.000 0.630 0.630 srgb} bind def
47/col29 {1.000 0.750 0.750 srgb} bind def
48/col30 {1.000 0.880 0.880 srgb} bind def
49/col31 {1.000 0.840 0.000 srgb} bind def
50
51end
52save
53-8.0 39.0 translate
541 -1 scale
55
56/cp {closepath} bind def
57/ef {eofill} bind def
58/gr {grestore} bind def
59/gs {gsave} bind def
60/sa {save} bind def
61/rs {restore} bind def
62/l {lineto} bind def
63/m {moveto} bind def
64/rm {rmoveto} bind def
65/n {newpath} bind def
66/s {stroke} bind def
67/sh {show} bind def
68/slc {setlinecap} bind def
69/slj {setlinejoin} bind def
70/slw {setlinewidth} bind def
71/srgb {setrgbcolor} bind def
72/rot {rotate} bind def
73/sc {scale} bind def
74/sd {setdash} bind def
75/ff {findfont} bind def
76/sf {setfont} bind def
77/scf {scalefont} bind def
78/sw {stringwidth} bind def
79/tr {translate} bind def
80/tnt {dup dup currentrgbcolor
81 4 -2 roll dup 1 exch sub 3 -1 roll mul add
82 4 -2 roll dup 1 exch sub 3 -1 roll mul add
83 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
84 bind def
85/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
86 4 -2 roll mul srgb} bind def
87 /DrawEllipse {
88 /endangle exch def
89 /startangle exch def
90 /yrad exch def
91 /xrad exch def
92 /y exch def
93 /x exch def
94 /savematrix mtrx currentmatrix def
95 x y tr xrad yrad sc 0 0 1 startangle endangle arc
96 closepath
97 savematrix setmatrix
98 } def
99
100/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
101/$F2psEnd {$F2psEnteredState restore end} def
102%%EndProlog
103
104$F2psBegin
10510 setmiterlimit
106n 0 792 m 0 0 l 612 0 l 612 792 l cp clip
107 0.06000 0.06000 sc
1087.500 slw
109% Rotated Ellipse
110gs
111265 433 tr
112-90.000 rot
113n 0 0 54 54 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr
114gr
115
116% Rotated Ellipse
117gs
1181432 435 tr
119-90.000 rot
120n 0 0 54 54 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr
121gr
122
123% Rotated Ellipse
124gs
1252632 435 tr
126-90.000 rot
127n 0 0 54 54 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr
128gr
129
130% Rotated Ellipse
131gs
1323832 427 tr
133-90.000 rot
134n 0 0 54 54 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr
135gr
136
137% Rotated Ellipse
138gs
1395039 428 tr
140-90.000 rot
141n 0 0 54 54 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr
142gr
143
144% Polyline
145gs clippath
1464825 390 m 4945 420 l 4825 450 l 4987 450 l 4987 390 l cp clip
147n 4972 420 m 3847 420 l gs col7 0.00 shd ef gr gs col-1 s gr gr
148
149% arrowhead
150n 4825 390 m 4945 420 l 4825 450 l 4825 420 l 4825 390 l cp gs 0.00 setgray ef gr col-1 s
151% Polyline
152gs clippath
1533625 390 m 3745 420 l 3625 450 l 3787 450 l 3787 390 l cp clip
154n 3772 420 m 2647 420 l gs col7 0.00 shd ef gr gs col-1 s gr gr
155
156% arrowhead
157n 3625 390 m 3745 420 l 3625 450 l 3625 420 l 3625 390 l cp gs 0.00 setgray ef gr col-1 s
158% Polyline
159gs clippath
1602425 390 m 2545 420 l 2425 450 l 2587 450 l 2587 390 l cp clip
161n 2572 420 m 1447 420 l gs col7 0.00 shd ef gr gs col-1 s gr gr
162
163% arrowhead
164n 2425 390 m 2545 420 l 2425 450 l 2425 420 l 2425 390 l cp gs 0.00 setgray ef gr col-1 s
165% Polyline
166gs clippath
1671225 390 m 1345 420 l 1225 450 l 1387 450 l 1387 390 l cp clip
168n 1372 420 m 247 420 l gs col7 0.00 shd ef gr gs col-1 s gr gr
169
170% arrowhead
171n 1225 390 m 1345 420 l 1225 450 l 1225 420 l 1225 390 l cp gs 0.00 setgray ef gr col-1 s
172/Times-Roman ff 180.00 scf sf
1731957 615 m
174gs 1 -1 sc (d3) col-1 sh gr
175/Times-Roman ff 180.00 scf sf
176750 607 m
177gs 1 -1 sc (d4) col-1 sh gr
178/Times-Roman ff 180.00 scf sf
1793157 607 m
180gs 1 -1 sc (d2) col-1 sh gr
181/Times-Roman ff 180.00 scf sf
1824349 608 m
183gs 1 -1 sc (d1) col-1 sh gr
184/Times-Roman ff 180.00 scf sf
1852527 277 m
186gs 1 -1 sc (1.2) col-1 sh gr
187/Times-Roman ff 180.00 scf sf
1881200 286 m
189gs 1 -1 sc (1.1.1.2) col-1 sh gr
190/Times-Roman ff 180.00 scf sf
191135 285 m
192gs 1 -1 sc (1.3) col-1 sh gr
193/Times-Roman ff 180.00 scf sf
1943599 285 m
195gs 1 -1 sc (1.1.1.1) col-1 sh gr
196/Times-Roman ff 180.00 scf sf
1974934 293 m
198gs 1 -1 sc (1.1) col-1 sh gr
199$F2psEnd
200rs
diff --git a/xdelta1/doc/old/dcc99/figs/xdelta.fig b/xdelta1/doc/old/dcc99/figs/xdelta.fig
new file mode 100755
index 0000000..7562273
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/figs/xdelta.fig
@@ -0,0 +1,33 @@
1#FIG 3.1
2Landscape
3Center
4Inches
51200 2
66 135 142 5159 615
71 4 0 1 -1 7 0 0 0 0.000 1 1.5708 265 433 54 54 228 470 303 395
81 4 0 1 -1 7 0 0 0 0.000 1 1.5708 1432 435 54 54 1395 472 1470 397
91 4 0 1 -1 7 0 0 0 0.000 1 1.5708 2632 435 54 54 2595 472 2670 397
101 4 0 1 -1 7 0 0 0 0.000 1 1.5708 3832 427 54 54 3795 464 3870 389
111 4 0 1 -1 7 0 0 0 0.000 1 1.5708 5039 428 54 54 5002 465 5077 390
122 1 0 1 -1 7 0 0 0 0.000 0 0 -1 0 1 2
13 1 1 1.00 60.00 120.00
14 4972 420 3847 420
152 1 0 1 -1 7 0 0 0 0.000 0 0 -1 0 1 2
16 1 1 1.00 60.00 120.00
17 3772 420 2647 420
182 1 0 1 -1 7 0 0 0 0.000 0 0 -1 0 1 2
19 1 1 1.00 60.00 120.00
20 2572 420 1447 420
212 1 0 1 -1 7 0 0 0 0.000 0 0 -1 0 1 2
22 1 1 1.00 60.00 120.00
23 1372 420 247 420
244 0 -1 0 0 0 12 0.0000 4 135 180 1957 615 d3\001
254 0 -1 0 0 0 12 0.0000 4 135 180 750 607 d4\001
264 0 -1 0 0 0 12 0.0000 4 135 180 3157 607 d2\001
274 0 -1 0 0 0 12 0.0000 4 135 180 4349 608 d1\001
284 0 -1 0 0 0 12 0.0000 4 135 225 2527 277 1.2\001
294 0 -1 0 0 0 12 0.0000 4 135 495 1200 286 1.1.1.2\001
304 0 -1 0 0 0 12 0.0000 4 135 225 135 285 1.3\001
314 0 -1 0 0 0 12 0.0000 4 135 495 3599 285 1.1.1.1\001
324 0 -1 0 0 0 12 0.0000 4 135 225 4934 293 1.1\001
33-6
diff --git a/xdelta1/doc/old/dcc99/lcs.c b/xdelta1/doc/old/dcc99/lcs.c
new file mode 100755
index 0000000..438a78f
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/lcs.c
@@ -0,0 +1,159 @@
1/* * Last edited: Jun 9 11:06 1997 (jjh) */
2/* computes the length of the longest common subsequence of two files,
3 byte by byte. Outputs the length of the two files, the length
4 of the LCS, and the fragmentation of both files.
5*/
6
7#include <stdlib.h>
8#include <stdio.h>
9#include <sys/types.h>
10#include <sys/stat.h>
11#include <malloc.h>
12
13#define EXIT_FAILURE 1
14#define EXIT_SUCCESS 0
15
16main(int argc, char *argv[])
17{
18 FILE *file1, *file2;
19 struct stat file1_stat, file2_stat;
20 off_t j, file1_size, file2_size;
21 off_t file1_fragmentation, file2_fragmentation;
22 int fileswitched; /* indicates whether the order of files was changed.*/
23
24 unsigned char *file1_data;
25 off_t *LCS;
26 off_t oldbest;
27 register off_t newbest;
28 register int ci;
29
30 if (argc != 3)
31 {
32 fprintf(stderr, "%s file1 file2\n", argv[0]);
33 fprintf(stderr, "outputs on stdout the lengths of file1 and file2, \n");
34 fprintf(stderr, "followed by the length of the ");
35 fprintf(stderr, "longest common subsequence of file1 and file2,\n");
36 fprintf(stderr, "followed by the fragmentation (number of segments)\n");
37 fprintf(stderr,
38 "induced by the longest common subsequence on both files.\n");
39 exit(EXIT_FAILURE);
40 }
41 else if ((file1 = fopen(argv[1],"r")) == NULL)
42 {
43 fprintf(stderr, "Can't open %s\n", argv[1]);
44 exit(EXIT_FAILURE);
45 }
46 else if ((file2 = fopen(argv[2],"r")) == NULL)
47 {
48 fprintf(stderr,"Can't open %s\n",argv[2]);
49 exit(EXIT_FAILURE);
50 }
51
52 fstat(fileno(file1),&file1_stat);
53 fstat(fileno(file2),&file2_stat);
54 file1_size=file1_stat.st_size;
55 file2_size=file2_stat.st_size;
56
57 if (file1_stat.st_size > file2_stat.st_size)
58 {
59 /* swap file to save space--size of file1 determines the space */
60 FILE *filetmp;
61 off_t filetmp_size;
62 filetmp = file1; file1 = file2; file2 = filetmp;
63 filetmp_size = file1_size; file1_size = file2_size;
64 file2_size = filetmp_size;
65 fileswitched = 1;
66 }
67 else
68 {
69 fileswitched = 0;
70 }
71
72 if ((NULL == (LCS = (off_t *)malloc((unsigned)((file1_size + 1) *
73 sizeof(off_t))))))
74 {
75 fprintf(stderr,"Can't allocate enough space (%d bytes needed)\n",
76 (file1_size + 1)*sizeof(off_t));
77 exit(EXIT_FAILURE);
78 }
79 else if (NULL == (file1_data=(unsigned char *)malloc((unsigned)file1_size)))
80 {
81 fprintf(stderr,"Can't allocate enough space to load file.\n");
82 exit(EXIT_FAILURE);
83 }
84 else if (fread(file1_data, 1, file1_size, file1) != file1_size)
85 {
86 fprintf(stderr, "File reading failed\n");
87 exit(EXIT_FAILURE);
88 }
89
90 /* here starts the LCS algorithm */
91
92
93 /* Initialize the array for computing the length */
94 for (j = 0; j <= file1_size; j++) LCS[j] = 0;
95 file1_fragmentation = file2_fragmentation = 1;
96 oldbest = 1; /* sentinel to control counting of fragmentation */
97
98# ifdef DEBUG
99 printf(" ");
100 for (j = 0; j <= file1_size; j++) printf("%3c", file1_data[j]);
101 printf(" segments\n ");
102 for (j = 0; j <= file1_size; j++) printf("%3d", LCS[j]);
103 putchar('\n');
104# endif
105
106 while ((ci = getc(file2)) != EOF)
107 {
108 register off_t *jptr;
109 register unsigned char *current, *stop;
110
111 newbest = 0;
112 jptr = LCS;
113# ifdef DEBUG
114 printf("%c %3d",ci,newbest);
115# endif
116 for (current = file1_data, stop = file1_data + file1_size;
117 current < stop;
118 current++)
119 {
120 register off_t extendlength;
121 extendlength = *jptr + (ci == *current);
122 *jptr = newbest; /* write best value from last iter. */
123 if (newbest < extendlength) newbest = extendlength;
124 jptr++;
125 if (newbest < *jptr) newbest = *jptr;
126# ifdef DEBUG
127 printf("%3d", newbest);
128# endif
129 }
130
131 /* update fragmentation of file2 */
132 if (((*jptr == newbest) && (oldbest<*jptr)) ||
133 ((*jptr < newbest) && (oldbest == *jptr)))
134 file2_fragmentation++;
135
136 oldbest = *jptr;
137 *jptr = newbest;
138# ifdef DEBUG
139 printf(" %3d\n", file2_fragmentation);
140# endif
141 }
142
143 /* determine fragmentation of file1*/
144 for (j = 1;j<file1_size;j++)
145 {
146 if (((LCS[j] == LCS[j + 1]) && (LCS[j - 1] != LCS[j])) ||
147 ((LCS[j] != LCS[j + 1]) && (LCS[j - 1] == LCS[j])))
148 file1_fragmentation++;
149 }
150
151 if (!fileswitched)
152 printf("%d %d %d %d %d\n", file1_size, file2_size,
153 newbest, file1_fragmentation, file2_fragmentation);
154 else
155 printf("%d %d %d %d %d\n", file2_size, file1_size,
156 newbest, file2_fragmentation, file1_fragmentation);
157
158 exit(EXIT_SUCCESS);
159}
diff --git a/xdelta1/doc/old/dcc99/llncs.cls b/xdelta1/doc/old/dcc99/llncs.cls
new file mode 100755
index 0000000..9a8d63b
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/llncs.cls
@@ -0,0 +1,1004 @@
1% LLNCS DOCUMENT CLASS -- version 2.3
2% for LaTeX2e
3%
4\NeedsTeXFormat{LaTeX2e}[1995/12/01]
5\ProvidesClass{llncs}[1998/03/25 v2.3
6^^JLaTeX document class for Lecture Notes in Computer Science]
7% Options
8\let\if@envcntreset\iffalse
9\DeclareOption{envcountreset}{\let\if@envcntreset\iftrue}
10\DeclareOption{citeauthoryear}{\let\citeauthoryear=Y}
11\DeclareOption{oribibl}{\let\oribibl=Y}
12\let\if@envcntsame\iffalse
13\DeclareOption{envcountsame}{\let\if@envcntsame\iftrue}
14\let\if@envcntsect\iffalse
15\DeclareOption{envcountsect}{\let\if@envcntsect\iftrue}
16\let\if@runhead\iffalse
17\DeclareOption{runningheads}{\let\if@runhead\iftrue}
18
19\let\if@openbib\iffalse
20\DeclareOption{openbib}{\let\if@openbib\iftrue}
21
22\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
23
24\ProcessOptions
25
26\LoadClass[twoside]{article}
27\RequirePackage{multicol} % needed for the list of participants, index
28
29\setlength{\textwidth}{12.2cm}
30\setlength{\textheight}{19.3cm}
31
32\renewcommand\small{%
33 \@setfontsize\small\@ixpt{11}%
34 \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@
35 \abovedisplayshortskip \z@ \@plus2\p@
36 \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
37 \def\@listi{\leftmargin\leftmargini
38 \parsep 0\p@ \@plus1\p@ \@minus\p@
39 \topsep 8\p@ \@plus2\p@ \@minus4\p@
40 \itemsep0\p@}%
41 \belowdisplayskip \abovedisplayskip
42}
43
44\frenchspacing
45\widowpenalty=10000
46\clubpenalty=10000
47
48\setlength\oddsidemargin {63\p@}
49\setlength\evensidemargin {63\p@}
50\setlength\marginparwidth {90\p@}
51
52\setlength\headsep {16\p@}
53
54\setlength\footnotesep{7.7\p@}
55\setlength\textfloatsep{8mm\@plus 2\p@ \@minus 4\p@}
56\setlength\intextsep {8mm\@plus 2\p@ \@minus 2\p@}
57
58
59%% JOSH SAYS
60\setlength{\oddsidemargin}{0in}
61\setlength{\evensidemargin}{0in}
62\setlength{\headsep}{0pt}
63\setlength{\topmargin}{0in}
64\setlength{\textheight}{8.75in}
65\setlength{\textwidth}{6.5in}
66\setlength{\parindent}{1em}
67\setlength{\parskip}{0.5ex}
68%% END JOSH SAYS
69
70\setcounter{secnumdepth}{2}
71
72\newcounter {chapter}
73\renewcommand\thechapter {\@arabic\c@chapter}
74
75\newif\if@mainmatter \@mainmattertrue
76\newcommand\frontmatter{\cleardoublepage
77 \@mainmatterfalse\pagenumbering{Roman}}
78\newcommand\mainmatter{\cleardoublepage
79 \@mainmattertrue\pagenumbering{arabic}}
80\newcommand\backmatter{\if@openright\cleardoublepage\else\clearpage\fi
81 \@mainmatterfalse}
82
83\renewcommand\part{\cleardoublepage
84 \thispagestyle{empty}%
85 \if@twocolumn
86 \onecolumn
87 \@tempswatrue
88 \else
89 \@tempswafalse
90 \fi
91 \null\vfil
92 \secdef\@part\@spart}
93
94\def\@part[#1]#2{%
95 \ifnum \c@secnumdepth >-2\relax
96 \refstepcounter{part}%
97 \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
98 \else
99 \addcontentsline{toc}{part}{#1}%
100 \fi
101 \markboth{}{}%
102 {\centering
103 \interlinepenalty \@M
104 \normalfont
105 \ifnum \c@secnumdepth >-2\relax
106 \huge\bfseries \partname~\thepart
107 \par
108 \vskip 20\p@
109 \fi
110 \Huge \bfseries #2\par}%
111 \@endpart}
112\def\@spart#1{%
113 {\centering
114 \interlinepenalty \@M
115 \normalfont
116 \Huge \bfseries #1\par}%
117 \@endpart}
118\def\@endpart{\vfil\newpage
119 \if@twoside
120 \null
121 \thispagestyle{empty}%
122 \newpage
123 \fi
124 \if@tempswa
125 \twocolumn
126 \fi}
127
128\newcommand\chapter{\clearpage
129 \thispagestyle{empty}%
130 \global\@topnum\z@
131 \@afterindentfalse
132 \secdef\@chapter\@schapter}
133\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
134 \if@mainmatter
135 \refstepcounter{chapter}%
136 \typeout{\@chapapp\space\thechapter.}%
137 \addcontentsline{toc}{chapter}%
138 {\protect\numberline{\thechapter}#1}%
139 \else
140 \addcontentsline{toc}{chapter}{#1}%
141 \fi
142 \else
143 \addcontentsline{toc}{chapter}{#1}%
144 \fi
145 \chaptermark{#1}%
146 \addtocontents{lof}{\protect\addvspace{10\p@}}%
147 \addtocontents{lot}{\protect\addvspace{10\p@}}%
148 \if@twocolumn
149 \@topnewpage[\@makechapterhead{#2}]%
150 \else
151 \@makechapterhead{#2}%
152 \@afterheading
153 \fi}
154\def\@makechapterhead#1{%
155% \vspace*{50\p@}%
156 {\centering
157 \ifnum \c@secnumdepth >\m@ne
158 \if@mainmatter
159 \large\bfseries \@chapapp{} \thechapter
160 \par\nobreak
161 \vskip 20\p@
162 \fi
163 \fi
164 \interlinepenalty\@M
165 \Large \bfseries #1\par\nobreak
166 \vskip 40\p@
167 }}
168\def\@schapter#1{\if@twocolumn
169 \@topnewpage[\@makeschapterhead{#1}]%
170 \else
171 \@makeschapterhead{#1}%
172 \@afterheading
173 \fi}
174\def\@makeschapterhead#1{%
175% \vspace*{50\p@}%
176 {\centering
177 \normalfont
178 \interlinepenalty\@M
179 \Large \bfseries #1\par\nobreak
180 \vskip 40\p@
181 }}
182
183\renewcommand\section{\@startsection{section}{1}{\z@}%
184 {-18\p@ \@plus -4\p@ \@minus -4\p@}%
185 {12\p@ \@plus 4\p@ \@minus 4\p@}%
186 {\normalfont\large\bfseries\boldmath
187 \rightskip=\z@ \@plus 8em\pretolerance=10000 }}
188\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
189 {-18\p@ \@plus -4\p@ \@minus -4\p@}%
190 {8\p@ \@plus 4\p@ \@minus 4\p@}%
191 {\normalfont\normalsize\bfseries\boldmath
192 \rightskip=\z@ \@plus 8em\pretolerance=10000 }}
193\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
194 {-18\p@ \@plus -4\p@ \@minus -4\p@}%
195 {-0.5em \@plus -0.22em \@minus -0.1em}%
196 {\normalfont\normalsize\bfseries\boldmath}}
197\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
198 {-12\p@ \@plus -4\p@ \@minus -4\p@}%
199 {-0.5em \@plus -0.22em \@minus -0.1em}%
200 {\normalfont\normalsize\itshape}}
201\renewcommand\subparagraph[1]{\typeout{LLNCS warning: You should not use
202 \string\subparagraph\space with this class}\vskip0.5cm
203You should not use \verb|\subparagraph| with this class.\vskip0.5cm}
204
205\DeclareMathSymbol{\Gamma}{\mathalpha}{letters}{"00}
206\DeclareMathSymbol{\Delta}{\mathalpha}{letters}{"01}
207\DeclareMathSymbol{\Theta}{\mathalpha}{letters}{"02}
208\DeclareMathSymbol{\Lambda}{\mathalpha}{letters}{"03}
209\DeclareMathSymbol{\Xi}{\mathalpha}{letters}{"04}
210\DeclareMathSymbol{\Pi}{\mathalpha}{letters}{"05}
211\DeclareMathSymbol{\Sigma}{\mathalpha}{letters}{"06}
212\DeclareMathSymbol{\Upsilon}{\mathalpha}{letters}{"07}
213\DeclareMathSymbol{\Phi}{\mathalpha}{letters}{"08}
214\DeclareMathSymbol{\Psi}{\mathalpha}{letters}{"09}
215\DeclareMathSymbol{\Omega}{\mathalpha}{letters}{"0A}
216
217\let\footnotesize\small
218
219\def\vec#1{\mathchoice{\mbox{\boldmath$\displaystyle#1$}}
220{\mbox{\boldmath$\textstyle#1$}}
221{\mbox{\boldmath$\scriptstyle#1$}}
222{\mbox{\boldmath$\scriptscriptstyle#1$}}}
223
224\def\squareforqed{\hbox{\rlap{$\sqcap$}$\sqcup$}}
225\def\qed{\ifmmode\squareforqed\else{\unskip\nobreak\hfil
226\penalty50\hskip1em\null\nobreak\hfil\squareforqed
227\parfillskip=0pt\finalhyphendemerits=0\endgraf}\fi}
228
229\def\getsto{\mathrel{\mathchoice {\vcenter{\offinterlineskip
230\halign{\hfil
231$\displaystyle##$\hfil\cr\gets\cr\to\cr}}}
232{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr\gets
233\cr\to\cr}}}
234{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr\gets
235\cr\to\cr}}}
236{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
237\gets\cr\to\cr}}}}}
238\def\lid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
239$\displaystyle##$\hfil\cr<\cr\noalign{\vskip1.2pt}=\cr}}}
240{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr<\cr
241\noalign{\vskip1.2pt}=\cr}}}
242{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr<\cr
243\noalign{\vskip1pt}=\cr}}}
244{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
245<\cr
246\noalign{\vskip0.9pt}=\cr}}}}}
247\def\gid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
248$\displaystyle##$\hfil\cr>\cr\noalign{\vskip1.2pt}=\cr}}}
249{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr>\cr
250\noalign{\vskip1.2pt}=\cr}}}
251{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr>\cr
252\noalign{\vskip1pt}=\cr}}}
253{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
254>\cr
255\noalign{\vskip0.9pt}=\cr}}}}}
256\def\grole{\mathrel{\mathchoice {\vcenter{\offinterlineskip
257\halign{\hfil
258$\displaystyle##$\hfil\cr>\cr\noalign{\vskip-1pt}<\cr}}}
259{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr
260>\cr\noalign{\vskip-1pt}<\cr}}}
261{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr
262>\cr\noalign{\vskip-0.8pt}<\cr}}}
263{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
264>\cr\noalign{\vskip-0.3pt}<\cr}}}}}
265\def\bbbr{{\rm I\!R}} %reelle Zahlen
266\def\bbbm{{\rm I\!M}}
267\def\bbbn{{\rm I\!N}} %natuerliche Zahlen
268\def\bbbf{{\rm I\!F}}
269\def\bbbh{{\rm I\!H}}
270\def\bbbk{{\rm I\!K}}
271\def\bbbp{{\rm I\!P}}
272\def\bbbone{{\mathchoice {\rm 1\mskip-4mu l} {\rm 1\mskip-4mu l}
273{\rm 1\mskip-4.5mu l} {\rm 1\mskip-5mu l}}}
274\def\bbbc{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm C$}\hbox{\hbox
275to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}
276{\setbox0=\hbox{$\textstyle\rm C$}\hbox{\hbox
277to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}
278{\setbox0=\hbox{$\scriptstyle\rm C$}\hbox{\hbox
279to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}
280{\setbox0=\hbox{$\scriptscriptstyle\rm C$}\hbox{\hbox
281to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}}}
282\def\bbbq{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm
283Q$}\hbox{\raise
2840.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}}
285{\setbox0=\hbox{$\textstyle\rm Q$}\hbox{\raise
2860.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}}
287{\setbox0=\hbox{$\scriptstyle\rm Q$}\hbox{\raise
2880.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}}
289{\setbox0=\hbox{$\scriptscriptstyle\rm Q$}\hbox{\raise
2900.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}}}}
291\def\bbbt{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm
292T$}\hbox{\hbox to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}
293{\setbox0=\hbox{$\textstyle\rm T$}\hbox{\hbox
294to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}
295{\setbox0=\hbox{$\scriptstyle\rm T$}\hbox{\hbox
296to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}
297{\setbox0=\hbox{$\scriptscriptstyle\rm T$}\hbox{\hbox
298to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}}}
299\def\bbbs{{\mathchoice
300{\setbox0=\hbox{$\displaystyle \rm S$}\hbox{\raise0.5\ht0\hbox
301to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox
302to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}}
303{\setbox0=\hbox{$\textstyle \rm S$}\hbox{\raise0.5\ht0\hbox
304to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox
305to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}}
306{\setbox0=\hbox{$\scriptstyle \rm S$}\hbox{\raise0.5\ht0\hbox
307to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox
308to0pt{\kern0.5\wd0\vrule height0.45\ht0\hss}\box0}}
309{\setbox0=\hbox{$\scriptscriptstyle\rm S$}\hbox{\raise0.5\ht0\hbox
310to0pt{\kern0.4\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox
311to0pt{\kern0.55\wd0\vrule height0.45\ht0\hss}\box0}}}}
312\def\bbbz{{\mathchoice {\hbox{$\mathsf\textstyle Z\kern-0.4em Z$}}
313{\hbox{$\mathsf\textstyle Z\kern-0.4em Z$}}
314{\hbox{$\mathsf\scriptstyle Z\kern-0.3em Z$}}
315{\hbox{$\mathsf\scriptscriptstyle Z\kern-0.2em Z$}}}}
316
317\let\ts\,
318
319\setlength\leftmargini {17\p@}
320\setlength\leftmargin {\leftmargini}
321\setlength\leftmarginii {\leftmargini}
322\setlength\leftmarginiii {\leftmargini}
323\setlength\leftmarginiv {\leftmargini}
324\setlength \labelsep {.5em}
325\setlength \labelwidth{\leftmargini}
326\addtolength\labelwidth{-\labelsep}
327
328\def\@listI{\leftmargin\leftmargini
329 \parsep 0\p@ \@plus1\p@ \@minus\p@
330 \topsep 8\p@ \@plus2\p@ \@minus4\p@
331 \itemsep0\p@}
332\let\@listi\@listI
333\@listi
334\def\@listii {\leftmargin\leftmarginii
335 \labelwidth\leftmarginii
336 \advance\labelwidth-\labelsep
337 \topsep 0\p@ \@plus2\p@ \@minus\p@}
338\def\@listiii{\leftmargin\leftmarginiii
339 \labelwidth\leftmarginiii
340 \advance\labelwidth-\labelsep
341 \topsep 0\p@ \@plus\p@\@minus\p@
342 \parsep \z@
343 \partopsep \p@ \@plus\z@ \@minus\p@}
344
345\renewcommand\labelitemi{\normalfont\bfseries --}
346\renewcommand\labelitemii{$\m@th\bullet$}
347
348\setlength\arraycolsep{1.4\p@}
349\setlength\tabcolsep{1.4\p@}
350
351\def\tableofcontents{\chapter*{\contentsname\@mkboth{{\contentsname}}%
352 {{\contentsname}}}
353 \def\authcount##1{\setcounter{auco}{##1}\setcounter{@auth}{1}}
354 \def\lastand{\ifnum\value{auco}=2\relax
355 \unskip{} \andname\
356 \else
357 \unskip \lastandname\
358 \fi}%
359 \def\and{\stepcounter{@auth}\relax
360 \ifnum\value{@auth}=\value{auco}%
361 \lastand
362 \else
363 \unskip,
364 \fi}%
365 \@starttoc{toc}\if@restonecol\twocolumn\fi}
366
367\def\l@part#1#2{\addpenalty{\@secpenalty}%
368 \addvspace{2em plus\p@}% % space above part line
369 \begingroup
370 \parindent \z@
371 \rightskip \z@ plus 5em
372 \hrule\vskip5pt
373 \bfseries\boldmath % set line in boldface
374 \leavevmode % TeX command to enter horizontal mode.
375 #1\par
376 \vskip5pt
377 \hrule
378 \vskip1pt
379 \nobreak % Never break after part entry
380 \endgroup}
381
382\def\@dotsep{2}
383
384\def\hyperhrefextend{\ifx\hyper@anchor\@undefined\else
385{chapter.\thechapter}\fi}
386
387\def\addnumcontentsmark#1#2#3{%
388\addtocontents{#1}{\protect\contentsline{#2}{\protect\numberline
389 {\thechapter}#3}{\thepage}\hyperhrefextend}}
390\def\addcontentsmark#1#2#3{%
391\addtocontents{#1}{\protect\contentsline{#2}{#3}{\thepage}\hyperhrefextend}}
392\def\addcontentsmarkwop#1#2#3{%
393\addtocontents{#1}{\protect\contentsline{#2}{#3}{0}\hyperhrefextend}}
394
395\def\@adcmk[#1]{\ifcase #1 \or
396\def\@gtempa{\addnumcontentsmark}%
397 \or \def\@gtempa{\addcontentsmark}%
398 \or \def\@gtempa{\addcontentsmarkwop}%
399 \fi\@gtempa{toc}{chapter}}
400\def\addtocmark{\@ifnextchar[{\@adcmk}{\@adcmk[3]}}
401
402\def\l@chapter#1#2{\addpenalty{-\@highpenalty}
403 \vskip 1.0em plus 1pt \@tempdima 1.5em \begingroup
404 \parindent \z@ \rightskip \@pnumwidth
405 \parfillskip -\@pnumwidth
406 \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip
407 {\large\bfseries\boldmath#1}\ifx0#2\hfil\null
408 \else
409 \nobreak
410 \leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern
411 \@dotsep mu$}\hfill
412 \nobreak\hbox to\@pnumwidth{\hss #2}%
413 \fi\par
414 \penalty\@highpenalty \endgroup}
415
416\def\l@title#1#2{\addpenalty{-\@highpenalty}
417 \addvspace{8pt plus 1pt}
418 \@tempdima \z@
419 \begingroup
420 \parindent \z@ \rightskip \@tocrmarg
421 \parfillskip -\@tocrmarg
422 \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip
423 #1\nobreak
424 \leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern
425 \@dotsep mu$}\hfill
426 \nobreak\hbox to\@pnumwidth{\hss #2}\par
427 \penalty\@highpenalty \endgroup}
428
429\setcounter{tocdepth}{0}
430\newdimen\tocchpnum
431\newdimen\tocsecnum
432\newdimen\tocsectotal
433\newdimen\tocsubsecnum
434\newdimen\tocsubsectotal
435\newdimen\tocsubsubsecnum
436\newdimen\tocsubsubsectotal
437\newdimen\tocparanum
438\newdimen\tocparatotal
439\newdimen\tocsubparanum
440\tocchpnum=\z@ % no chapter numbers
441\tocsecnum=15\p@ % section 88. plus 2.222pt
442\tocsubsecnum=23\p@ % subsection 88.8 plus 2.222pt
443\tocsubsubsecnum=27\p@ % subsubsection 88.8.8 plus 1.444pt
444\tocparanum=35\p@ % paragraph 88.8.8.8 plus 1.666pt
445\tocsubparanum=43\p@ % subparagraph 88.8.8.8.8 plus 1.888pt
446\def\calctocindent{%
447\tocsectotal=\tocchpnum
448\advance\tocsectotal by\tocsecnum
449\tocsubsectotal=\tocsectotal
450\advance\tocsubsectotal by\tocsubsecnum
451\tocsubsubsectotal=\tocsubsectotal
452\advance\tocsubsubsectotal by\tocsubsubsecnum
453\tocparatotal=\tocsubsubsectotal
454\advance\tocparatotal by\tocparanum}
455\calctocindent
456
457\def\l@section{\@dottedtocline{1}{\tocchpnum}{\tocsecnum}}
458\def\l@subsection{\@dottedtocline{2}{\tocsectotal}{\tocsubsecnum}}
459\def\l@subsubsection{\@dottedtocline{3}{\tocsubsectotal}{\tocsubsubsecnum}}
460\def\l@paragraph{\@dottedtocline{4}{\tocsubsubsectotal}{\tocparanum}}
461\def\l@subparagraph{\@dottedtocline{5}{\tocparatotal}{\tocsubparanum}}
462
463\def\listoffigures{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
464 \fi\section*{\listfigurename\@mkboth{{\listfigurename}}{{\listfigurename}}}
465 \@starttoc{lof}\if@restonecol\twocolumn\fi}
466\def\l@figure{\@dottedtocline{1}{0em}{1.5em}}
467
468\def\listoftables{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
469 \fi\section*{\listtablename\@mkboth{{\listtablename}}{{\listtablename}}}
470 \@starttoc{lot}\if@restonecol\twocolumn\fi}
471\let\l@table\l@figure
472
473\renewcommand\listoffigures{%
474 \section*{\listfigurename
475 \@mkboth{\listfigurename}{\listfigurename}}%
476 \@starttoc{lof}%
477 }
478
479\renewcommand\listoftables{%
480 \section*{\listtablename
481 \@mkboth{\listtablename}{\listtablename}}%
482 \@starttoc{lot}%
483 }
484
485\ifx\oribibl\undefined
486\ifx\citeauthoryear\undefined
487\renewenvironment{thebibliography}[1]
488 {\section*{\refname}
489 \def\@biblabel##1{##1.}
490 \small
491 \list{\@biblabel{\@arabic\c@enumiv}}%
492 {\settowidth\labelwidth{\@biblabel{#1}}%
493 \leftmargin\labelwidth
494 \advance\leftmargin\labelsep
495 \if@openbib
496 \advance\leftmargin\bibindent
497 \itemindent -\bibindent
498 \listparindent \itemindent
499 \parsep \z@
500 \fi
501 \usecounter{enumiv}%
502 \let\p@enumiv\@empty
503 \renewcommand\theenumiv{\@arabic\c@enumiv}}%
504 \if@openbib
505 \renewcommand\newblock{\par}%
506 \else
507 \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}%
508 \fi
509 \sloppy\clubpenalty4000\widowpenalty4000%
510 \sfcode`\.=\@m}
511 {\def\@noitemerr
512 {\@latex@warning{Empty `thebibliography' environment}}%
513 \endlist}
514\def\@lbibitem[#1]#2{\item[{[#1]}\hfill]\if@filesw
515 {\let\protect\noexpand\immediate
516 \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces}
517\newcount\@tempcntc
518\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
519 \@tempcnta\z@\@tempcntb\m@ne\def\@citea{}\@cite{\@for\@citeb:=#2\do
520 {\@ifundefined
521 {b@\@citeb}{\@citeo\@tempcntb\m@ne\@citea\def\@citea{,}{\bfseries
522 ?}\@warning
523 {Citation `\@citeb' on page \thepage \space undefined}}%
524 {\setbox\z@\hbox{\global\@tempcntc0\csname b@\@citeb\endcsname\relax}%
525 \ifnum\@tempcntc=\z@ \@citeo\@tempcntb\m@ne
526 \@citea\def\@citea{,}\hbox{\csname b@\@citeb\endcsname}%
527 \else
528 \advance\@tempcntb\@ne
529 \ifnum\@tempcntb=\@tempcntc
530 \else\advance\@tempcntb\m@ne\@citeo
531 \@tempcnta\@tempcntc\@tempcntb\@tempcntc\fi\fi}}\@citeo}{#1}}
532\def\@citeo{\ifnum\@tempcnta>\@tempcntb\else
533 \@citea\def\@citea{,\,\hskip\z@skip}%
534 \ifnum\@tempcnta=\@tempcntb\the\@tempcnta\else
535 {\advance\@tempcnta\@ne\ifnum\@tempcnta=\@tempcntb \else
536 \def\@citea{--}\fi
537 \advance\@tempcnta\m@ne\the\@tempcnta\@citea\the\@tempcntb}\fi\fi}
538\else
539\renewenvironment{thebibliography}[1]
540 {\section*{\refname}
541 \small
542 \list{}%
543 {\settowidth\labelwidth{}%
544 \leftmargin\parindent
545 \itemindent=-\parindent
546 \labelsep=\z@
547 \if@openbib
548 \advance\leftmargin\bibindent
549 \itemindent -\bibindent
550 \listparindent \itemindent
551 \parsep \z@
552 \fi
553 \usecounter{enumiv}%
554 \let\p@enumiv\@empty
555 \renewcommand\theenumiv{}}%
556 \if@openbib
557 \renewcommand\newblock{\par}%
558 \else
559 \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}%
560 \fi
561 \sloppy\clubpenalty4000\widowpenalty4000%
562 \sfcode`\.=\@m}
563 {\def\@noitemerr
564 {\@latex@warning{Empty `thebibliography' environment}}%
565 \endlist}
566 \def\@cite#1{#1}%
567 \def\@lbibitem[#1]#2{\item[]\if@filesw
568 {\def\protect##1{\string ##1\space}\immediate
569 \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces}
570 \fi
571\else
572\@cons\@openbib@code{\noexpand\small}
573\fi
574
575\def\idxquad{\hskip 10\p@}% space that divides entry from number
576
577\def\@idxitem{\par\hangindent 10\p@}
578
579\def\subitem{\par\setbox0=\hbox{--\enspace}% second order
580 \noindent\hangindent\wd0\box0}% index entry
581
582\def\subsubitem{\par\setbox0=\hbox{--\,--\enspace}% third
583 \noindent\hangindent\wd0\box0}% order index entry
584
585\def\indexspace{\par \vskip 10\p@ plus5\p@ minus3\p@\relax}
586
587\renewenvironment{theindex}
588 {\@mkboth{\indexname}{\indexname}%
589 \thispagestyle{empty}\parindent\z@
590 \parskip\z@ \@plus .3\p@\relax
591 \let\item\par
592 \def\,{\relax\ifmmode\mskip\thinmuskip
593 \else\hskip0.2em\ignorespaces\fi}%
594 \normalfont\small
595 \begin{multicols}{2}[\@makeschapterhead{\indexname}]%
596 }
597 {\end{multicols}}
598
599\renewcommand\footnoterule{%
600 \kern-3\p@
601 \hrule\@width 2truecm
602 \kern2.6\p@}
603\long\def\@makefntext#1{%
604 \parindent 1em%
605 \leftskip 1em%
606 \noindent
607 \llap{\hb@xt@1em{\hss\@makefnmark\ }}\ignorespaces#1}
608
609\long\def\@makecaption#1#2{%
610 \vskip\abovecaptionskip
611 \sbox\@tempboxa{{\bfseries #1.} #2}%
612 \ifdim \wd\@tempboxa >\hsize
613 {\bfseries #1.} #2\par
614 \else
615 \global \@minipagefalse
616 \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
617 \fi
618 \vskip\belowcaptionskip}
619
620\def\fps@figure{htbp}
621\def\fnum@figure{\figurename\thefigure}
622\def \@floatboxreset {%
623 \reset@font
624 \small
625 \@setnobreak
626 \@setminipage
627}
628\def\fps@table{htbp}
629\def\fnum@table{\tablename\thetable}
630\renewenvironment{table}
631 {\setlength\abovecaptionskip{0\p@}%
632 \setlength\belowcaptionskip{10\p@}%
633 \@float{table}}
634 {\end@float}
635\renewenvironment{table*}
636 {\setlength\abovecaptionskip{0\p@}%
637 \setlength\belowcaptionskip{10\p@}%
638 \@dblfloat{table}}
639 {\end@dblfloat}
640
641\long\def\@caption#1[#2]#3{\par\addcontentsline{\csname
642 ext@#1\endcsname}{#1}{\protect\numberline{\csname
643 the#1\endcsname}{\ignorespaces #2}}\begingroup
644 \@parboxrestore
645 \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
646 \endgroup}
647
648% LaTeX does not provide a command to enter the authors institute
649% addresses. The \institute command is defined here.
650
651\newcounter{@inst}
652\newcounter{@auth}
653\newcounter{auco}
654\def\andname{and}
655\def\lastandname{\unskip, and}
656\newdimen\instindent
657\newbox\authrun
658\newtoks\authorrunning
659\newtoks\tocauthor
660\newbox\titrun
661\newtoks\titlerunning
662\newtoks\toctitle
663
664\def\clearheadinfo{\gdef\@author{No Author Given}%
665 \gdef\@title{No Title Given}%
666 \gdef\@subtitle{}%
667 \gdef\@institute{No Institute Given}%
668 \gdef\@thanks{}%
669 \global\titlerunning={}\global\authorrunning={}%
670 \global\toctitle={}\global\tocauthor={}}
671
672\def\institute#1{\gdef\@institute{#1}}
673
674\def\institutename{\par
675 \begingroup
676 \parskip=\z@
677 \parindent=\z@
678 \setcounter{@inst}{1}%
679 \def\and{\par\stepcounter{@inst}%
680 \noindent$^{\the@inst}$\enspace\ignorespaces}%
681 \setbox0=\vbox{\def\thanks##1{}\@institute}%
682 \ifnum\c@@inst=1\relax
683 \else
684 \setcounter{footnote}{\c@@inst}%
685 \setcounter{@inst}{1}%
686 \noindent$^{\the@inst}$\enspace
687 \fi
688 \ignorespaces
689 \@institute\par
690 \endgroup}
691
692\def\@fnsymbol#1{\ensuremath{\ifcase#1\or\star\or{\star\star}\or
693 {\star\star\star}\or \dagger\or \ddagger\or
694 \mathchar "278\or \mathchar "27B\or \|\or **\or \dagger\dagger
695 \or \ddagger\ddagger \else\@ctrerr\fi}}
696
697\def\inst#1{\unskip$^{#1}$}
698\def\fnmsep{\unskip$^,$}
699\def\email#1{{\tt#1}}
700\def\homedir{\~{ }}
701
702\def\subtitle#1{\gdef\@subtitle{#1}}
703\clearheadinfo
704
705\renewcommand\maketitle{\newpage
706 \refstepcounter{chapter}%
707 \stepcounter{section}%
708 \setcounter{section}{0}%
709 \setcounter{subsection}{0}%
710 \setcounter{figure}{0}
711 \setcounter{table}{0}
712 \setcounter{equation}{0}
713 \setcounter{footnote}{0}%
714 \begingroup
715 \parindent=\z@
716 \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
717 \if@twocolumn
718 \ifnum \col@number=\@ne
719 \@maketitle
720 \else
721 \twocolumn[\@maketitle]%
722 \fi
723 \else
724 \newpage
725 \global\@topnum\z@ % Prevents figures from going at top of page.
726 \@maketitle
727 \fi
728 \thispagestyle{empty}\@thanks
729%
730 \def\\{\unskip\ \ignorespaces}\def\inst##1{\unskip{}}%
731 \def\thanks##1{\unskip{}}\def\fnmsep{\unskip}%
732 \instindent=\hsize
733 \advance\instindent by-\headlineindent
734 \if!\the\toctitle!\addcontentsline{toc}{title}{\@title}\else
735 \addcontentsline{toc}{title}{\the\toctitle}\fi
736 \if@runhead
737 \if!\the\titlerunning!\else
738 \edef\@title{\the\titlerunning}%
739 \fi
740 \global\setbox\titrun=\hbox{\small\rm\unboldmath\ignorespaces\@title}%
741 \ifdim\wd\titrun>\instindent
742 \typeout{Title too long for running head. Please supply}%
743 \typeout{a shorter form with \string\titlerunning\space prior to
744 \string\maketitle}%
745 \global\setbox\titrun=\hbox{\small\rm
746 Title Suppressed Due to Excessive Length}%
747 \fi
748 \xdef\@title{\copy\titrun}%
749 \fi
750%
751 \if!\the\tocauthor!\relax
752 {\def\and{\noexpand\protect\noexpand\and}%
753 \protected@xdef\toc@uthor{\@author}}%
754 \else
755 \def\\{\noexpand\protect\noexpand\newline}%
756 \protected@xdef\scratch{\the\tocauthor}%
757 \protected@xdef\toc@uthor{\scratch}%
758 \fi
759 \addtocontents{toc}{{\protect\raggedright\protect\leftskip15\p@
760 \protect\rightskip\@tocrmarg
761 \protect\itshape\toc@uthor\protect\endgraf}}%
762 \if@runhead
763 \if!\the\authorrunning!
764 \value{@inst}=\value{@auth}%
765 \setcounter{@auth}{1}%
766 \else
767 \edef\@author{\the\authorrunning}%
768 \fi
769 \global\setbox\authrun=\hbox{\small\unboldmath\@author\unskip}%
770 \ifdim\wd\authrun>\instindent
771 \typeout{Names of authors too long for running head. Please supply}%
772 \typeout{a shorter form with \string\authorrunning\space prior to
773 \string\maketitle}%
774 \global\setbox\authrun=\hbox{\small\rm
775 Authors Suppressed Due to Excessive Length}%
776 \fi
777 \xdef\@author{\copy\authrun}%
778 \markboth{\@author}{\@title}%
779 \fi
780 \endgroup
781 \setcounter{footnote}{0}%
782 \clearheadinfo}
783%
784\def\@maketitle{\newpage
785 \markboth{}{}%
786 \def\lastand{\ifnum\value{@inst}=2\relax
787 \unskip{} \andname\
788 \else
789 \unskip \lastandname\
790 \fi}%
791 \def\and{\stepcounter{@auth}\relax
792 \ifnum\value{@auth}=\value{@inst}%
793 \lastand
794 \else
795 \unskip,
796 \fi}%
797 \begin{center}%
798 {\Large \bfseries\boldmath
799 \pretolerance=10000
800 \@title \par}\vskip .8cm
801\if!\@subtitle!\else {\large \bfseries\boldmath
802 \vskip -.65cm
803 \pretolerance=10000
804 \@subtitle \par}\vskip .8cm\fi
805 \setbox0=\vbox{\setcounter{@auth}{1}\def\and{\stepcounter{@auth}}%
806 \def\thanks##1{}\@author}%
807 \global\value{@inst}=\value{@auth}%
808 \global\value{auco}=\value{@auth}%
809 \setcounter{@auth}{1}%
810{\lineskip .5em
811\noindent\ignorespaces
812\@author\vskip.35cm}
813 {\small\institutename}
814 \end{center}%
815 }
816
817% definition of the "\spnewtheorem" command.
818%
819% Usage:
820%
821% \spnewtheorem{env_nam}{caption}[within]{cap_font}{body_font}
822% or \spnewtheorem{env_nam}[numbered_like]{caption}{cap_font}{body_font}
823% or \spnewtheorem*{env_nam}{caption}{cap_font}{body_font}
824%
825% New is "cap_font" and "body_font". It stands for
826% fontdefinition of the caption and the text itself.
827%
828% "\spnewtheorem*" gives a theorem without number.
829%
830% A defined spnewthoerem environment is used as described
831% by Lamport.
832%
833%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
834
835\def\@thmcountersep{}
836\def\@thmcounterend{.}
837
838\def\spnewtheorem{\@ifstar{\@sthm}{\@Sthm}}
839
840% definition of \spnewtheorem with number
841
842\def\@spnthm#1#2{%
843 \@ifnextchar[{\@spxnthm{#1}{#2}}{\@spynthm{#1}{#2}}}
844\def\@Sthm#1{\@ifnextchar[{\@spothm{#1}}{\@spnthm{#1}}}
845
846\def\@spxnthm#1#2[#3]#4#5{\expandafter\@ifdefinable\csname #1\endcsname
847 {\@definecounter{#1}\@addtoreset{#1}{#3}%
848 \expandafter\xdef\csname the#1\endcsname{\expandafter\noexpand
849 \csname the#3\endcsname \noexpand\@thmcountersep \@thmcounter{#1}}%
850 \expandafter\xdef\csname #1name\endcsname{#2}%
851 \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#4}{#5}}%
852 \global\@namedef{end#1}{\@endtheorem}}}
853
854\def\@spynthm#1#2#3#4{\expandafter\@ifdefinable\csname #1\endcsname
855 {\@definecounter{#1}%
856 \expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}%
857 \expandafter\xdef\csname #1name\endcsname{#2}%
858 \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#3}{#4}}%
859 \global\@namedef{end#1}{\@endtheorem}}}
860
861\def\@spothm#1[#2]#3#4#5{%
862 \@ifundefined{c@#2}{\@latexerr{No theorem environment `#2' defined}\@eha}%
863 {\expandafter\@ifdefinable\csname #1\endcsname
864 {\global\@namedef{the#1}{\@nameuse{the#2}}%
865 \expandafter\xdef\csname #1name\endcsname{#3}%
866 \global\@namedef{#1}{\@spthm{#2}{\csname #1name\endcsname}{#4}{#5}}%
867 \global\@namedef{end#1}{\@endtheorem}}}}
868
869\def\@spthm#1#2#3#4{\topsep 7\p@ \@plus2\p@ \@minus4\p@
870\refstepcounter{#1}%
871\@ifnextchar[{\@spythm{#1}{#2}{#3}{#4}}{\@spxthm{#1}{#2}{#3}{#4}}}
872
873\def\@spxthm#1#2#3#4{\@spbegintheorem{#2}{\csname the#1\endcsname}{#3}{#4}%
874 \ignorespaces}
875
876\def\@spythm#1#2#3#4[#5]{\@spopargbegintheorem{#2}{\csname
877 the#1\endcsname}{#5}{#3}{#4}\ignorespaces}
878
879\def\@spbegintheorem#1#2#3#4{\trivlist
880 \item[\hskip\labelsep{#3#1\ #2\@thmcounterend}]#4}
881
882\def\@spopargbegintheorem#1#2#3#4#5{\trivlist
883 \item[\hskip\labelsep{#4#1\ #2}]{#4(#3)\@thmcounterend\ }#5}
884
885% definition of \spnewtheorem* without number
886
887\def\@sthm#1#2{\@Ynthm{#1}{#2}}
888
889\def\@Ynthm#1#2#3#4{\expandafter\@ifdefinable\csname #1\endcsname
890 {\global\@namedef{#1}{\@Thm{\csname #1name\endcsname}{#3}{#4}}%
891 \expandafter\xdef\csname #1name\endcsname{#2}%
892 \global\@namedef{end#1}{\@endtheorem}}}
893
894\def\@Thm#1#2#3{\topsep 7\p@ \@plus2\p@ \@minus4\p@
895\@ifnextchar[{\@Ythm{#1}{#2}{#3}}{\@Xthm{#1}{#2}{#3}}}
896
897\def\@Xthm#1#2#3{\@Begintheorem{#1}{#2}{#3}\ignorespaces}
898
899\def\@Ythm#1#2#3[#4]{\@Opargbegintheorem{#1}
900 {#4}{#2}{#3}\ignorespaces}
901
902\def\@Begintheorem#1#2#3{#3\trivlist
903 \item[\hskip\labelsep{#2#1\@thmcounterend}]}
904
905\def\@Opargbegintheorem#1#2#3#4{#4\trivlist
906 \item[\hskip\labelsep{#3#1}]{#3(#2)\@thmcounterend\ }}
907
908\if@envcntsect
909 \def\@thmcountersep{.}
910 \spnewtheorem{theorem}{Theorem}[section]{\bfseries}{\itshape}
911\else
912 \spnewtheorem{theorem}{Theorem}{\bfseries}{\itshape}
913 \if@envcntreset
914 \@addtoreset{theorem}{section}
915 \else
916 \@addtoreset{theorem}{chapter}
917 \fi
918\fi
919
920%definition of divers theorem environments
921\spnewtheorem*{claim}{Claim}{\itshape}{\rmfamily}
922\spnewtheorem*{proof}{Proof}{\itshape}{\rmfamily}
923\if@envcntsame % alle Umgebungen wie Theorem.
924 \def\spn@wtheorem#1#2#3#4{\@spothm{#1}[theorem]{#2}{#3}{#4}}
925\else % alle Umgebungen mit eigenem Zaehler
926 \if@envcntsect % mit section numeriert
927 \def\spn@wtheorem#1#2#3#4{\@spxnthm{#1}{#2}[section]{#3}{#4}}
928 \else % nicht mit section numeriert
929 \if@envcntreset
930 \def\spn@wtheorem#1#2#3#4{\@spynthm{#1}{#2}{#3}{#4}
931 \@addtoreset{#1}{section}}
932 \else
933 \let\spn@wtheorem=\@spynthm
934 \fi
935 \fi
936\fi
937\spn@wtheorem{case}{Case}{\itshape}{\rmfamily}
938\spn@wtheorem{conjecture}{Conjecture}{\itshape}{\rmfamily}
939\spn@wtheorem{corollary}{Corollary}{\bfseries}{\itshape}
940\spn@wtheorem{definition}{Definition}{\bfseries}{\itshape}
941\spn@wtheorem{example}{Example}{\itshape}{\rmfamily}
942\spn@wtheorem{exercise}{Exercise}{\itshape}{\rmfamily}
943\spn@wtheorem{lemma}{Lemma}{\bfseries}{\itshape}
944\spn@wtheorem{note}{Note}{\itshape}{\rmfamily}
945\spn@wtheorem{problem}{Problem}{\itshape}{\rmfamily}
946\spn@wtheorem{property}{Property}{\itshape}{\rmfamily}
947\spn@wtheorem{proposition}{Proposition}{\bfseries}{\itshape}
948\spn@wtheorem{question}{Question}{\itshape}{\rmfamily}
949\spn@wtheorem{solution}{Solution}{\itshape}{\rmfamily}
950\spn@wtheorem{remark}{Remark}{\itshape}{\rmfamily}
951
952\def\@takefromreset#1#2{%
953 \def\@tempa{#1}%
954 \let\@tempd\@elt
955 \def\@elt##1{%
956 \def\@tempb{##1}%
957 \ifx\@tempa\@tempb\else
958 \@addtoreset{##1}{#2}%
959 \fi}%
960 \expandafter\expandafter\let\expandafter\@tempc\csname cl@#2\endcsname
961 \expandafter\def\csname cl@#2\endcsname{}%
962 \@tempc
963 \let\@elt\@tempd}
964
965\def\theopargself{\def\@spopargbegintheorem##1##2##3##4##5{\trivlist
966 \item[\hskip\labelsep{##4##1\ ##2}]{##4##3\@thmcounterend\ }##5}
967 \def\@Opargbegintheorem##1##2##3##4{##4\trivlist
968 \item[\hskip\labelsep{##3##1}]{##3##2\@thmcounterend\ }}
969 }
970
971\renewenvironment{abstract}{%
972 \list{}{\advance\topsep by0.35cm\relax\small
973 \leftmargin=1cm
974 \labelwidth=\z@
975 \listparindent=\z@
976 \itemindent\listparindent
977 \rightmargin\leftmargin}\item[\hskip\labelsep
978 \bfseries\abstractname]}
979 {\endlist}
980\renewcommand{\abstractname}{Abstract.}
981\renewcommand{\contentsname}{Table of Contents}
982\renewcommand{\figurename}{Fig.\thinspace}
983\renewcommand{\tablename}{Table~}
984
985\newdimen\headlineindent % dimension for space between
986\headlineindent=1.166cm % number and text of headings.
987
988\def\ps@headings{\let\@mkboth\@gobbletwo
989 \let\@oddfoot\@empty\let\@evenfoot\@empty
990 \def\@evenhead{\normalfont\small\rlap{\thepage}\hspace{\headlineindent}%
991 \leftmark\hfil}
992 \def\@oddhead{\normalfont\small\hfil\rightmark\hspace{\headlineindent}%
993 \llap{\thepage}}
994 \def\chaptermark##1{}%
995 \def\sectionmark##1{}%
996 \def\subsectionmark##1{}}
997
998\if@runhead\ps@headings\else
999\ps@empty\fi
1000
1001\setlength\arraycolsep{1.4\p@}
1002\setlength\tabcolsep{1.4\p@}
1003
1004\endinput
diff --git a/xdelta1/doc/old/dcc99/mkex.c b/xdelta1/doc/old/dcc99/mkex.c
new file mode 100755
index 0000000..5daf003
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/mkex.c
@@ -0,0 +1,118 @@
1#include <stdio.h>
2#include <stdlib.h>
3#include <glib.h>
4#include <ctype.h>
5
6#define LEN 10
7#define COUNT 7
8#define THRESH 5
9
10char example[LEN+1][COUNT];
11int example_no;
12
13char* words[1<<20];
14int word_no;
15
16int frag_count = 2;
17
18int main()
19{
20 int i, j, k;
21 char * buf = g_new0 (char,2048);
22
23 example_no = 1;
24 g_assert (strlen ("difference") == LEN);
25 memcpy (example[0], "difference", LEN);
26
27 while (fgets (buf, 2048, stdin))
28 {
29 if (strlen(buf) < (LEN+1))
30 continue;
31
32 buf[LEN] = 0;
33
34 for (i = 0; i < LEN; i += 1)
35 buf[i] = tolower(buf[i]);
36
37 words[word_no++] = g_strdup (buf);
38 }
39
40 for (i = 0; i < word_no; i += 1)
41 {
42 for (j = 0; j < word_no; j += 1)
43 {
44 char* w1 = words[i];
45 char* w2 = words[j];
46 int in_match = TRUE, m = 0, f = 0;
47
48 if (i == j)
49 continue;
50
51 if (w1[0] == w2[0])
52 continue;
53
54 for (k = 0; k < LEN; k += 1)
55 {
56 if (w1[k] == w2[k])
57 {
58 if (! in_match)
59 f += 1;
60
61 m += 1;
62 in_match = TRUE;
63 }
64 else
65 in_match = FALSE;
66 }
67
68 if (f == frag_count && m > THRESH && m < LEN)
69 {
70 if (frag_count == 3)
71 frag_count = 1;
72 else
73 frag_count += 1;
74
75 printf ("%s %s\n", w1, w2);
76 }
77 }
78 }
79
80#if 0
81 for (i = 0; example_no < COUNT; i = (i + 1) % word_no)
82 {
83 int k = 0, m = 0, f = 0;
84 int in_match = TRUE;
85 char* w;
86
87 w = example[i];
88
89 if (buf[0] == w[0])
90 continue;
91
92 for (; k < LEN; k += 1)
93 {
94 if (buf[k] == w[k])
95 {
96 if (! in_match)
97 f += 1;
98
99 m += 1;
100 in_match = TRUE;
101 }
102 else
103 in_match = FALSE;
104 }
105
106 if (m > 2)
107 printf ("m is %d\n", m);
108
109 if (m >= THRESH && m < LEN && f == frag_count)
110 {
111 printf ("frag_count was: %d\n", frag_count);
112 frag_count = 1 + (frag_count + 1) % 2;
113 printf ("frag_count now: %d\n\n", frag_count);
114 }
115 }
116#endif
117 exit (0);
118}
diff --git a/xdelta1/doc/old/dcc99/mkex2.c b/xdelta1/doc/old/dcc99/mkex2.c
new file mode 100755
index 0000000..d48d196
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/mkex2.c
@@ -0,0 +1,242 @@
1#include <stdio.h>
2#include <string.h>
3#include <stdlib.h>
4#include <glib.h>
5#include <ctype.h>
6
7GHashTable* node_table;
8GStringChunk* chunk;
9
10typedef struct _Node Node;
11typedef struct _IntPair IntPair;
12typedef struct _Edge Edge;
13
14struct _IntPair {
15 int d1;
16 int d2;
17};
18
19struct _Node {
20 int mark[3];
21 int finish;
22 char *name;
23 Edge *edges;
24};
25
26struct _Edge {
27 char* pict;
28 int frags;
29 int copy;
30 Node* node;
31 Edge* next;
32};
33
34Node* get_node (char* name)
35{
36 Node* n = g_hash_table_lookup (node_table, name);
37
38 if (n)
39 return n;
40
41 n = g_new0 (Node, 1);
42 n->name = name;
43
44 g_hash_table_insert (node_table, name, n);
45
46 return n;
47}
48
49void connect (Node* n1, Node* n2)
50{
51 Edge* nedge = g_new0 (Edge, 1);
52
53 nedge->node = n1;
54 nedge->next = n2->edges;
55 n2->edges = nedge;
56
57 nedge = g_new0 (Edge, 1);
58
59 nedge->node = n2;
60 nedge->next = n1->edges;
61 n1->edges = nedge;
62}
63
64int global_count = 0;
65int global_e_count = 0;
66int global_depth = 0;
67int global_fragments = 0;
68int global_longest = 0;
69int global_longest2 = 0;
70
71void
72count_fragments (Node* n1, Node* n2, Edge* e)
73{
74 int i, l = strlen (n1->name);
75 int in_match = TRUE;
76 int m = 0, f = 0;
77 char buf1[16];
78
79 memset (buf1, ' ', l);
80
81 buf1[l] = 0;
82
83 for (i = 0; i < l; i += 1)
84 {
85 if (n1->name[i] == n2->name[i])
86 {
87 if (! in_match)
88 {
89 global_fragments += 1;
90 f += 1;
91 }
92
93 in_match = TRUE;
94 m += 1;
95 buf1[i] = 'x';
96 }
97 else
98 in_match = FALSE;
99 }
100
101 e->pict = g_strdup (buf1);
102 e->copy = m;
103 e->frags = f;
104}
105
106int
107dfs (Node* n, gint phase, gint print, gint depth)
108{
109 int d1 = 0, d2 = 0, c;
110 Edge* e;
111
112 global_depth = MAX(depth, global_depth);
113
114 if (n->mark[phase])
115 {
116 return 1;
117 }
118
119 n->mark[phase] = TRUE;
120
121 for (e = n->edges; e; e = e->next)
122 {
123 int od1;
124
125 global_e_count += 1;
126
127 count_fragments (n, e->node, e);
128
129 c = dfs (e->node, phase, print, depth + 1);
130
131 od1 = d1;
132 d1 = MAX (d1, c);
133
134 if (d1 == od1)
135 {
136 d2 = MAX (d2, c);
137 }
138 else
139 d2 = od1;
140 }
141
142 global_count += 1;
143
144 if (print)
145 {
146 g_print ("%s ->\n", n->name);
147
148 for (e = n->edges; e; e = e->next)
149 g_print (" %s %s %d %d\n", e->node->name, e->pict, e->copy, e->frags);
150
151 g_print ("\n\n");
152 }
153
154 if (! print && depth == 0 && d1 + d2 == 8)
155 {
156 g_print ("found a graph of size nodes=%d, edges=%d, depth=%d, frags=%d:\n", global_count, global_e_count, d1+d2, global_fragments);
157
158 dfs (n, 1, TRUE, 0);
159
160 g_print ("\n");
161 g_print ("\n");
162 }
163
164 return d1 + 1;
165}
166
167void
168find (gpointer key,
169 gpointer value,
170 gpointer user_data)
171{
172 Node* n = value;
173
174 global_fragments = 0;
175 global_count = 0;
176 global_e_count = 0;
177 global_depth = 0;
178
179 dfs (n, 0, FALSE, 0);
180
181 global_e_count /= 2;
182
183 if (global_count == 0)
184 return;
185
186 /*g_assert (global_count != global_e_count);*/
187
188 if (FALSE && global_depth > 7)
189 {
190 g_print ("found a graph of size nodes=%d, edges=%d, depth=%d, %d:\n", global_count, global_e_count, global_depth, global_fragments);
191
192 dfs (n, 1, TRUE, 0);
193
194 g_print ("\n");
195 g_print ("\n");
196 }
197}
198
199int main()
200{
201 char from_buf[2048];
202 char to_buf[2048];
203
204 node_table = g_hash_table_new (g_direct_hash, g_direct_equal);
205 chunk = g_string_chunk_new (1024);
206
207 while (scanf ("%s %s", from_buf, to_buf) == 2)
208 {
209 Node* nfrom;
210 Node* nto;
211 Edge* e;
212
213 char* from = g_string_chunk_insert_const (chunk, from_buf);
214 char* to = g_string_chunk_insert_const (chunk, to_buf);
215
216 nfrom = get_node (from);
217 nto = get_node (to);
218
219 if (! nfrom->edges)
220 {
221 connect (nfrom, nto);
222 continue;
223 }
224
225 for (e = nfrom->edges; e; e = e->next)
226 {
227 if (e->node == nto)
228 {
229 break;
230 }
231
232 if (e->next == NULL)
233 {
234 connect (nfrom, nto);
235 }
236 }
237 }
238
239 g_hash_table_foreach (node_table, find, NULL);
240
241 exit (1);
242}
diff --git a/xdelta1/doc/old/dcc99/vdelta b/xdelta1/doc/old/dcc99/vdelta
new file mode 100755
index 0000000..82f8246
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/vdelta
Binary files differ
diff --git a/xdelta1/doc/old/dcc99/vupdate b/xdelta1/doc/old/dcc99/vupdate
new file mode 100755
index 0000000..6b5009d
--- /dev/null
+++ b/xdelta1/doc/old/dcc99/vupdate
Binary files differ
diff --git a/xdelta1/doc/old/xdelta.gif b/xdelta1/doc/old/xdelta.gif
new file mode 100755
index 0000000..4eb1c74
--- /dev/null
+++ b/xdelta1/doc/old/xdelta.gif
Binary files differ
diff --git a/xdelta1/doc/old/xdelta.html b/xdelta1/doc/old/xdelta.html
new file mode 100755
index 0000000..919752a
--- /dev/null
+++ b/xdelta1/doc/old/xdelta.html
@@ -0,0 +1,183 @@
1<html> <head>
2<title>Xdelta</title>
3</head>
4
5<body bgcolor="#ffffff" text="#000000">
6<center><img src="xdelta.gif" alt="Xdelta"></center>
7
8<center><h1>News</h1></center>
9
10Version 1.1 has been released, see the <A
11HREF="ftp://ftp.xcf.berkeley.edu/pub/xdelta/NEWS">NEWS</A>.
12<P>
13
14As of version 1.0.5, Xdelta supports Windows. A pre-built version is
15available <A
16HREF="ftp://ftp.xcf.berkeley.edu/pub/xdelta/xdelta-1.0.5.win32.zip">
17here.</A>. <P>
18
19You can see a draft of a paper describing Xdelta <A
20HREF="ftp://ftp.xcf.berkeley.edu/pub/xdelta/xdelta.ps"> here</A>.
21
22<center><h1>About</h1></center>
23
24Xdelta is a binary delta generator library. It was begun in February
251997 as an experiment with the intent of replacing RCS in a future
26version of <A HREF="http://www.xcf.berkeley.edu/~jmacd/prcs.html">PRCS</A>.
27The 0.x series of releases were the resulting, experimental code base.
28Several algorithms were experimented with; the final algorithm
29resembles the Rsync algorithm (due to Andrew Tridgell and Paul
30Mackerras), though implementation and interface considerations leave
31the two programs quite distinct. Xdelta uses a fast, linear algorithm
32and performs well on both binary and text files.
33<P>
34
35Xdelta is a library interface and application program designed to
36compute changes between files. These changes (deltas) are similar to
37the output of the "diff" program in that they may be used to store and
38transmit only the changes between files. However, unlike diff, the
39output of Xdelta is not expressed in a human-readable format and
40cannot be reversed. Xdelta can also also apply these deltas to a copy
41of the original file(s). Xdelta also includes a simple implementation
42of the Rsync algorithm and several advanced features for implementing
43RCS-like file-archival with.
44<P>
45
46Version 1.0, released on October 3, 1998, is greatly refined: It is
47smaller, optimized, and has a clean interface. This version is a
48complete rewrite, and uses less than 50% of the memory require by the
490.x series, even greater reductions are seen in the application for
50compressed files. Files are now stream-processed when possible, and
51paged when seeking is required. The application now features a
52--maxmem option to set the size of the internal buffers. No files are
53ever completely read into memory. In addition, many features in the
540.x series have been removed, leaving only the delta and patch
55functions. The GDBM-archive support code has been reimplemented in
56the new version of PRCS.
57<P>
58
59A file archival system has been built upon Xdelta. The 0.x series of
60releases included a prototype of this system, which has since been
61greatly improved. The original system used GDBM to store deltas.
62GDBM was abandoned because it typically requires 5-10 times as much
63space as actual data contained in its database, rendering all
64advantages of delta-compression lost. The file archival system does
65not use branches to store deltas according to their logical ancestry,
66instead it uses a linear delta encoding and past deltas are included
67as inputs to future delta computation. Though this may sound bad at
68first, it actually works because past deltas contain the missing
69branch's data. Conceptually, imagine computing a (reverse) delta
70between the previous head (a literal file) and the new file plus the
71old deltas (the entire archive). Computing a delta between the a file
72and the entire archive relieves the branching requirement. This
73process is described in more detail in this <A href="prcs2.ps">paper</A>.
74It has many improvements over RCS, aside from the fact that RCS was
75simply not designed to be used as a library. These are:
76<P>
77
78<ul>
79<li>
80The ability to easily discard old versions in date order, regardless
81of ancestry.
82</li>
83<li>
84The ability to retrieve all versions in time proportional to their age,
85not ancestry.
86</li>
87<li>
88Using a new file format allows individual deltas to be compressed as they age,
89the entire archive need not be compressed at once.
90</li>
91<li>
92Higher level applications (such as PRCS) are free from the hidden
93performance implications of version-number allocation, since these tools
94do not, in general, have enough information to make a good decision.
95</li>
96</ul>
97<P>
98
99The 0.x series had a <A HREF="http://www.gimp.org">GIMP</A> plugin
100that stores multiple versions of an image in any Gimp-supported image
101format. This plugin has not been ported to version 1.0, since 1.0
102removed the GDBM archival features. Interested parties may contact me
103for help updating this plugin.
104
105<P>
106<center><h1>Simple Command-Line Use</h1></center>
107
108To generate a delta between files <em>FROM</em> and <em>TO</em> and
109write the delta to the file named <em>OUT</em>, run the command:
110<P>
111
112$ xdelta delta [options] FROM TO OUT
113<P>
114
115If you supply no options, the internals of OUT are compressed using
116zlib's default compression. You do not need to post-compress its
117output! The compression level can be set with the arguments -0
118through -9, with 0 indicating no compression. To apply the previously
119generated delta with a copy of <em>FROM</em> and <em>OUT</em>:
120<P>
121
122$ xdelta patch [options] OUT FROM TO.RECONSTRUCTED
123<P>
124
125This will produce the file <em>TO.RECONSTRUCTED</em>. If this command
126succeeds then you can be confident that Xdelta produced an exact copy
127of the original file because it verifies the MD5 checksum of its
128output. You can list information about a delta with the command:
129<P>
130
131$ xdelta info OUT
132<P>
133
134Sample output:
135<P>
136
137xdelta: version 1.1.0 found patch version 1.1 in out (compressed) <br>
138xdelta: generated with a gzipped FROM file <br>
139xdelta: generated with a gzipped TO file <br>
140xdelta: output name: xdelta-1.0.1.tar.gz <br>
141xdelta: output length: 798720 <br>
142xdelta: output md5: c33f043e276ff3986dbab99f14213c44 <br>
143xdelta: patch from segments: 2 <br>
144xdelta: MD5 Length Copies Used Seq? Name <br>
145xdelta: 11b99054e237b611db7d2ee7b090b4a4 16309 736 16309 yes (patch data) <br>
146xdelta: 641b34f2630d66a346cee9893cfc01a6 788480 1550 782411 no xdelta-1.0.0.tar.gz <br>
147
148<center><h1>Downloading</h1></center>
149
150Xdelta is available <A
151HREF="ftp://ftp.xcf.berkeley.edu/pub/xdelta">here</A>. The Xdelta
152library is very portable. Xdelta depends on <A HREF="ftp://ftp.cdrom.com/pub/infozip/zlib">Zlib 1.1.x</A>
153and <A HREF="ftp://ftp.gtk.org/pub/gtk/v1.1">GLIB 1.3.0</A>.
154<P>
155
156The latest version of Xdelta is version
157<!-- $Format: "$ReleaseVersion$." $ -->
1581.1.2.
159see the <A HREF="ftp://ftp.xcf.berkeley.edu/pub/xdelta/NEWS">NEWS</A>. <P>
160<P>
161
162Thanks to <A HREF="mailto:aklikins@eos.ncsu.edu">Adrian Likins</A> for the artwork.
163
164<P>
165
166<hr>
167<center>
168This page has been accessed
169<IMG
170SRC="/cgi-bin/Count.cgi?ft=0|frgb=0;0;0|tr=0|trgb=0;0;0|wxh=15;20|md=7|dd=B|st=1|sh=1|df=xdelta.dat"
171ALT="a whole bunch of">
172times.
173<!-- since August 16, 1998-->
174<hr>
175<!-- hhmts start -->
176Last modified: Wed Apr 7 00:36:07 PDT 1999
177<!-- hhmts end --><br>
178<a href="http://www.xcf.berkeley.edu/~jmacd/">Josh MacDonald</a> /
179<i><a
180HREF="mailto:jmacd@cs.berkeley.edu">jmacd@cs.berkeley.edu</a></i>
181</center>
182<img align=right src="gbg.gif" alt="">
183</body> </html>
diff --git a/xdelta1/doc/xdelta.1 b/xdelta1/doc/xdelta.1
new file mode 100755
index 0000000..ec6a6d0
--- /dev/null
+++ b/xdelta1/doc/xdelta.1
@@ -0,0 +1,201 @@
1.ds p \&\s-1Xdelta\s0
2.if n .ds - \%--
3.if t .ds - \(em
4.if !\n(.g \{\
5. if !\w|\*(lq| \{\
6. ds lq ``
7. if \w'\(lq' .ds lq "\(lq
8. \}
9. if !\w|\*(rq| \{\
10. ds rq ''
11. if \w'\(rq' .ds rq "\(rq
12. \}
13.\}
14.de PE
15.sp \\n()Pu
16.ne 2
17.nf
18.IP
19..
20.de EP
21.fi
22.PP
23.sp \\n()Pu
24..
25.TH Xdelta 1
26.SH NAME
27xdelta \- Invoke Xdelta
28.SH SYNOPSIS
29.B xdelta
30.I subcommand
31[
32.IR option ".\|.\|.
33] [
34.IR operand .\|.\|.
35]
36.SH DESCRIPTION
37Xdelta provides the ability to generate deltas between a pair of files
38and later apply those deltas. It operates similar to the
39.B diff
40and
41.B patch
42commands, but works on binary files and does not produce a human
43readable output.
44.PP
45
46Xdelta has three subcommands, delta, patch, and info. Delta accepts
47two file versions and produces a delta, while patch accepts the
48original file version and delta and produces the second version. The
49info command prints useful information about a delta. Each subcommand
50will be detailed seperately.
51
52.SS Gzip processing
53Attempting to compute a delta between compressed input files usually
54results in poor compression. This is because small differences
55between the original contents causes changes in the compression of
56whole blocks of data. To simplify things, Xdelta implements a special
57case for
58.IR gzip (1)
59compressed files. If any version input to the delta command is
60recognized as having gzip compression, it will be automatically
61decompressed into a temporary location prior to comparison. This
62temporary location is either the value of the
63.IR TMPDIR
64environment variable, if set, otherwise "/tmp".
65
66The Xdelta patch header contains a flag indicating that the
67reconstructed version should be recompressed after applying the
68patch. In general, this allows Xdelta to operate transparently on
69gzip compressed inputs.
70
71There is one potential problem when automatically processing gzip
72compressed files, which is that the recompressed content does not
73always match byte-for-byte with the original compressed content. The
74uncompressed content still matches, but if there is an external
75integrity check such as cryptographic signature verification, it may
76fail. To prevent this from happening, the --pristine option disables
77automatic gzip processing.
78
79.SS MD5 integrity check
80By default, Xdelta always verifies the MD5 checksum of the files it
81reconstructs. This prevents you from supplying an incorrect input
82during patch, which would result in corrupt output. Because of this
83feature, you can feel confident that patch has produced valid results.
84The --noverify option disables MD5 verification, but this is only
85recommended for performance testing.
86
87.SS Compressed patch format
88Xdelta uses a fairly simple encoding for its delta, then applies zlib
89compression to the result. You should not have to post-compress an
90Xdelta delta.
91
92.SS Delta
93The delta subcommand has the following synopsis:
94
95.B xdelta
96.I delta
97[
98.IR option ".\|.\|.
99]
100.IR fromfile
101.IR tofile
102.IR patchout
103
104Computes a delta from
105.IR fromfile
106to
107.IR tofile
108and writes it to
109.IR patchout
110
111.SS Patch
112The patch subcommand has the following synopsis:
113
114.B xdelta
115.I patch
116[
117.IR option ".\|.\|.
118]
119.IR patchin
120[
121.IR fromfile
122[
123.IR tofile
124]]
125
126Applies
127.IR patchin
128to
129.IR fromfile
130and produces a reconstructed version of
131.IR tofile.
132
133If fromfile was omitted, Xdelta attempts to use the original fromfile
134name, which is stored in the delta. The from file must be identical
135to the one used to create the delta. If its length or MD5 checksum
136differs, patch will abort with an error message.
137
138If tofile was omitted, Xdelta attempts to use the original tofile
139name, which is also stored in the delta. If the original tofile name
140already exists, a unique filename extension will be added to avoid
141destroying any existing data.
142
143.SS Info
144The info subcommand has the following synopsis:
145
146.B xdelta
147.I info
148.IR patchinfo
149
150Prints information about
151.IR patchinfo
152and the version it reconstructs, including file names, lengths, and
153MD5 checksums.
154
155.SS Options
156
157.IP -0..9
158Set the zlib compression level. Zero indicates no compression. Nine
159indicates maximum compression.
160
161.IP "-h, --help"
162Print a short help message and exit.
163
164.IP "-q, --quiet"
165Quiet. Surpresses several warning messages.
166
167.IP "-v, --version"
168Print the Xdelta version number and exit.
169
170.IP "-V, --verbose"
171Verbose. Prints a bit of extra information.
172
173.IP "-n, --noverify"
174No verify. Turns off MD5 checksum verification of the input and
175output files.
176
177.IP "-m=SIZE, --maxmem=SIZE"
178Set an upper bound on the size of an in-memory page cache. For
179example, --maxmem=32M will use a 32 megabyte page cache.
180
181.IP "-s=BLOCK_SIZE"
182Set the block size, unless it was hard coded (20% speed improvement).
183Should be a power of 2.
184
185.IP "-p, --pristine"
186Disable the automatic decompression of gzipped inputs, to prevent
187unexpected differences in the re-compressed content.
188
189.SH RETURN VALUES
190The delta command exits with status 0 to indicate that no differences
191were found, with status 1 to indicate that some differences were
192found, and with status 2 to indicate an error of some kind. The patch
193and info commands exit with status 0 on success and 2 on failure.
194
195.SH IDENTIFICATION
196Author: Joshua P. MacDonald, jmacd@cs.berkeley.edu
197.br
198.\" $Format: "Manual Page Revision: $Revision$; Release Date: $ProjectDate$."$
199Manual Page Revision: 1.5; Release Date: Fri, 29 Jun 2001 06:01:08 -0700.
200.br
201Copyright \(co 1997, 1998, 1999, 2000, 2001
diff --git a/xdelta1/doc/xdelta.cat b/xdelta1/doc/xdelta.cat
new file mode 100755
index 0000000..7bc1ed6
--- /dev/null
+++ b/xdelta1/doc/xdelta.cat
@@ -0,0 +1,138 @@
1Xdelta(1) Xdelta(1)
2
3NAME
4 xdelta - Invoke Xdelta
5
6SYNOPSIS
7 xdelta subcommand [ option... ] [ operand... ]
8
9DESCRIPTION
10
11 Xdelta provides the ability to generate deltas between a pair
12 of files and later apply those deltas. It operates similar to
13 the diff and patch commands, but works on binary files and does
14 not produce a human readable output.
15
16 Xdelta has three subcommands, delta, patch, and info. Delta
17 accepts two file versions and produces a delta, while patch
18 accepts the original file version and delta and produces the
19 second version. The info command prints useful information
20 about a delta. Each subcommand will be detailed seperately.
21
22 Gzip processing
23
24 Attempting to compute a delta between compressed input files
25 usually results in poor compression. This is because small
26 differences between the original contents causes changes in the
27 compression of whole blocks of data. To simplify things,
28 Xdelta implements a special case for gzip(1) compressed files.
29 If any version input to the delta command is recognized as
30 having gzip compression, it will be automatically decompressed
31 into a temporary location prior to comparison. This temporary
32 location is either the value of the TMPDIR environment
33 variable, if set, otherwise "/tmp".
34
35 The Xdelta patch header contains a flag indicating that the
36 reconstructed version should be recompressed after applying
37 the patch. In general, this allows Xdelta to operate
38 transparently on gzip compressed inputs.
39
40 There is one potential problem when automatically processing
41 gzip compressed files, which is that the recompressed content
42 does not always match byte-for-byte with the original
43 compressed content. The uncompressed content still matches,
44 but if there is an external integrity check such as
45 cryptographic signature verification, it may fail. To prevent
46 this from happening, the --pristine option disables automatic
47 gzip processing.
48
49 MD5 integrity check
50
51 By default, Xdelta always verifies the MD5 checksum of the
52 files it reconstructs. This prevents you from supplying an
53 incorrect input during patch, which would result in corrupt
54 output. Because of this feature, you can feel confident that
55 patch has produced valid results. The --noverify option
56 disables MD5 verification, but this is only recommended for
57 performance testing.
58
59 Compressed patch format
60
61 Xdelta uses a fairly simple encoding for its delta, then
62 applies zlib compression to the result. You should not have to
63 post-compress an Xdelta delta.
64
65 Delta
66
67 The delta subcommand has the following synopsis:
68
69 xdelta delta [ option... ] fromfile tofile patchout
70
71 Computes a delta from fromfile to tofile and writes it to patchout
72
73 Patch
74
75 The patch subcommand has the following synopsis:
76
77 xdelta patch [ option... ] patchin [ fromfile [ tofile ]]
78
79 Applies patchin to fromfile and produces a reconstructed
80 version of tofile.
81
82 If fromfile was omitted, Xdelta attempts to use the original
83 fromfile name, which is stored in the delta. The from file
84 must be identical to the one used to create the delta. If its
85 length or MD5 checksum differs, patch will abort with an error
86 message.
87
88 If tofile was omitted, Xdelta attempts to use the original
89 tofile name, which is also stored in the delta. If the
90 original tofile name already exists, a unique filename
91 extension will be added to avoid destroying any existing data.
92
93 Info
94 The info subcommand has the following synopsis:
95
96 xdelta info patchinfo
97
98 Prints information about patchinfo and the version it
99 reconstructs, including file names, lengths, and MD5 checksums.
100
101 Options
102 -0..9 Set the zlib compression level. Zero indicates no
103 compression. Nine indicates maximum compression.
104
105 -h, --help
106 Print a short help message and exit.
107
108 -q, --quiet
109 Quiet. Surpresses several warning messages.
110
111 -v, --version
112 Print the Xdelta version number and exit.
113
114 -V, --verbose
115 Verbose. Prints a bit of extra information.
116
117 -n, --noverify
118 No verify. Turns off MD5 checksum verification of the
119 input and output files.
120
121 -m=SIZE, --maxmem=SIZE
122 Set an upper bound on the size of an in-memory page
123 cache. For example, --maxmem=32M will use a 32 megabyte
124 page cache.
125
126 -s=BLOCK_SIZE
127 Set the block size, unless it was hard coded (20% speed
128 improvement). Should be a power of 2.
129
130 -p, --pristine
131 Disable the automatic decompression of gzipped
132 inputs, to prevent unexpected differences in the
133 re-compressed content.
134
135IDENTIFICATION
136 Author: Joshua P. MacDonald, jmacd@cs.berkeley.edu
137 Manual Page Revision: 1.2; Release Date: Mon, 11 Jun 2001 03:39:53 -0700.
138 Copyright © 1997, 1998, 1999, 2000, 2001