purged website sources
authorhaftmann
Wed, 12 Jul 2006 17:40:52 +0200
changeset 20110 c2ffa1783319
parent 20109 47fef41c68fb
child 20111 ba1676dd3546
purged website sources
Admin/website/.cvsignore
Admin/website/README
Admin/website/TODO
Admin/website/build/.cvsignore
Admin/website/build/cl-1.0.1.pl
Admin/website/build/img.memo.txt
Admin/website/build/localconf.at.template.mak
Admin/website/build/localconf.sun.template.mak
Admin/website/build/main.mak
Admin/website/build/make_dep.bash
Admin/website/build/mkcontents.pl
Admin/website/build/obfusmail.py
Admin/website/build/project.mak
Admin/website/build/pypager.py
Admin/website/build/set_perm.bash
Admin/website/build/xhtmlparse.py
Admin/website/community.html
Admin/website/conf/.cvsignore
Admin/website/conf/distinfo.mak
Admin/website/css/aelfwine.css
Admin/website/css/isabelle_base.css
Admin/website/css/isabelle_print.css
Admin/website/css/isabelle_screen.css
Admin/website/documentation.html
Admin/website/download.html
Admin/website/download_past.html
Admin/website/dtd/xhtml-lat1.ent
Admin/website/dtd/xhtml-special.ent
Admin/website/dtd/xhtml-symbol.ent
Admin/website/dtd/xhtml1-frameset.dtd
Admin/website/dtd/xhtml1-strict.dtd
Admin/website/dtd/xhtml1-transitional.dtd
Admin/website/faq.html
Admin/website/img/favicon.ico
Admin/website/img/isabelle.gif
Admin/website/img/isabelle_logo.gif
Admin/website/img/screenshot_isabelle_macos.gif
Admin/website/img/screenshot_isabelle_pg.png
Admin/website/img/tutorial_cover_big.gif
Admin/website/img/tutorial_cover_small.gif
Admin/website/img/univ_cambridge.gif
Admin/website/img/univ_tum.gif
Admin/website/img/world_map.gif
Admin/website/img/world_map_large.gif
Admin/website/include/documentationdist.include.html
Admin/website/include/downloadtable.include.html
Admin/website/include/footer.include.html
Admin/website/include/header.include.html
Admin/website/include/htmlheader.include.html
Admin/website/include/mirrorlist.include.html
Admin/website/include/navigation.include.html
Admin/website/index.html
Admin/website/installation.html
Admin/website/installation_macos_emacs.html
Admin/website/installation_notes_cygwin.html
Admin/website/js/overlib.js
Admin/website/js/world_map_data.js
Admin/website/logics.html
Admin/website/makefile
Admin/website/media/pg_preview.pdf
Admin/website/misc/isabelle_droplet.dmg
Admin/website/overview.html
Admin/website/redirect.html
Admin/website/world_map.html
Admin/website/world_map_large.html
--- a/Admin/website/.cvsignore	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-conf
--- a/Admin/website/README	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +0,0 @@
-The Isabelle Webpage
-====================
-
-(1) philosophy
-==============
-
-The webpage sources consist of three different layers:
-
-a) the presentation layer
--------------------------
-
-This is was the user actually sees; the slogan is
-
-    "structural XHTML plus CSS"
-
-There are three different groups of end-user agents (browsers)
-
- 1) "practical non-CSS" browsers (lynx, netscape4)
-    These just display plain HTML.
- 2) "more-or-less-w3c-CSS" browsers (KHTML/Konqueror/Safari, Internet Explorer)
-    These are able to display the pages almost as they should be,
-    but perhaps with some minor warts.
- 3) "almost-w3-CSS" browsers (Mozilla/Firefox/Galeone)
-    These are the "reference implementation" for the layout.
-
-b) the project layer
---------------------
-
-This manages the dependencies between files; the tool of choice
-is
-
-    "(g)make plus shell scripting"
-
-Project settings may be configured using a seperate configuration
-file.
-
-c) the preprocessing layer
---------------------------
-
-This allows to use things like includes, current date, and so on:
-
-    "XHTML plus processing instructions"
-
-Note that this is almost not interwoven with b), to keep it as robust
-and simple as possible.
-
-The layer itself is implemented by a small tool "pypager", written in python.
-
-
-(2) writing your own pages
-==========================
-
-You may add arbitrary files to the dir structure, but adhere to the following:
-* use XHTML, not loose HTML
-* only structural markup; if you need layout effects, use CSS
-  (browse the existing files to get some inspirations)
-* any files ending with .html are considered as HTML files and are implicitly
-  processed by the preprocessing layer
-* for HTML includes, it is most convenient to name them *.include.html to
-  avoid them to be processed stand-alone by the preprocessing layer
-* whole dirs maybe selected for statically copying them to the
-  target destination by configuring the project layer
-* for attributes etc. referencing file locations, there is a convenient
-  abbreviation: "//" at the beginning of a path is translated to the root,
-  but expressed relatively to the current location, e. g.
-
-  in abc/def/itsme.html: <a href="//abc/ghi/itsyou.html">
-                becomes: <a href="../def/itsyou.html">
-
-  Further, targets are checked for existence.
-  This is a simple yet powerful thing easing to keep the pages consistent.
-* for the semantics of the processing instructions, see build/pypager.py
-  source code
-
-
-(3) using the project layer framework
-=====================================
-
-To configure it the first time after checkout, just type
-> gmake phase=init
-
-Not: on GNU systems, just type make instead of gmake.
-
-Then, you may edit the project configuration file conf/localconf.mak.
-After a correct configuration, the build process may be started by
-> gmake
-
-The project layer tries to be smart about dependencies, but includes,
-embedded images and so on are not tracked; to built dependencies anew,
-do
-> gmake depends
-
-After adding or deleting files, an
-> gmake depends
-may also be neccessary. The same after changing something in the configuration.
-
-If nothing seems to be sensible any more, try
-> gmake clean
-> gmake depends
-> gmake
-
-
-(4) project-specific remarks
-============================
-
-The whole thing should fit neatlessly into the Isabelle distribution and
-regression framework; this may explain some "features" which seem to be
-enigmatic.
-
-
-(5) the website build bed on sunbroy2
-=====================================
-
-For convenience, there is a completely configured
-website build bed on sunbroy2:
-* log in to sunbroy2
-* go to ~isabelle/website_build
-* there do an CVS update if desired
-* do "gmake perms" to set file owner group (isabelle) and permissions
-  (rw-rw-r--, rwxrwsr-x)
-* do your changes
-* just type gmake - the website is built to the website synchronization cache
-* then do CVS commit
-* for updating the webpage in Munich, just use Admin/mirror-website
-* if the Isabelle distribution files themselves change, some handwired updating
-  is necessary; however, for casual content changes the build bed should work
-  properly.
--- a/Admin/website/TODO	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-- a gentle intro enumeration on Home - "Why Isabelle?"
-    * stably running, mature system
-    * (something to say about Isar?)
-    * big library
-    * big community
-    * it's free
-    * ...
-  (to discuss)
-- clarify relationship of "overview" and "logics":
-    * overview: Isabelle/HOL   
-    * logics:   Isabelle system
-  (to discuss)
-
-- world_map: automated generation from coordinate data
-- world_map: more content in HTML, less in java script
\ No newline at end of file
--- a/Admin/website/build/.cvsignore	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-*.pyc
--- a/Admin/website/build/cl-1.0.1.pl	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2112 +0,0 @@
-#!/usr/local/bin/perl
-#
-#   Checklinks 1.0.1
-#
-#     Starting at one or more seed HTML files, recursively check the
-#     validity of all links on the site.  Major features:
-#
-#       * Local URLs are read from the filesystem when possible (much
-#           faster than going through HTTP server).
-#       * Basic server-side includes (aka SSI or SHTML) are checked.
-#       * Latest standards are supported-- HTML 4.0, HTTP 1.1, URIs
-#           according to RFC 2396.
-#       * Links are traversed breadth-first.
-#
-#   To list command-line options, run "cl -?" or see &usage() below.
-#
-#   TO CONFIGURE: 
-#
-#   1) Set $LOCAL_HOST and $DOCUMENT_ROOT, just below.  If you don't, the
-#      program will try to guess them in set_needed_globals(), but it's more
-#      reliable if you enter them here.
-#
-#   2) If needed, set any further server configuration below-- things like
-#      path aliases and so forth.  If you have the srm.conf file, you can 
-#      feed it into this script with "-c srm.conf"; otherwise, the default 
-#      settings will probably work OK.
-#
-#   You can set a few parameters with the undocumented "-D <name=value>"
-#   command-line option, e.g. "-D LOCAL_HOST=www.myhost.com".
-#
-#   Further comments, including an overview of script internals, are at
-#   the end of this file.
-#
-#   Copyright (C) 1998, 2000 by James Marshall, james@jmarshall.com
-#   see http://www.jmarshall.com/tools/cl/ for more info
-#
-#
-#   CHANGES IN 1.0.1:
-#
-#     This is just a bug fix release.  Fixes include:
-#       . Aliases are handled correctly now.  Sorry 'bout that.
-#       . A redirect + relative URL no longer results in infinitely
-#           recursing URLs.
-#       . More HTML tags are searched for links.
-#       . Non-HTML files are no longer searched for links.
-#       . There were other minor bug fixes.
-#
-#----------------------------------------------------------------------
-
-#use strict ;
-
-my( $LOCAL_HOST, $DOCUMENT_ROOT, $USER_DIR, @DIRECTORY_INDEX,
-    %ALIAS, %ALIAS_MATCH, %SCRIPT_ALIAS, %SCRIPT_ALIAS_MATCH, %UN_ALIAS,
-    @SHTML_EXTENSIONS, @CGI_EXTENSIONS, @INCLUDE_PATTERNS, @EXCLUDE_PATTERNS,
-          @INCLUDE_STATUS, @EXCLUDE_STATUS,
-    $verbose_report, $max_depth, $file_check, $full_http_check,
-    $MAX_REDIRECTS, $MAX_ATTEMPTS, $HTML_BY_NAME, $SUPPORT_NCSA_BUG,
-    @NO_PROXY, $DOC_ROOT_DEV, $DOC_ROOT_INODE, $DOC_ROOT_EXISTS, $CWD,
-    %html_urls, %non_html_urls, %e_to_ch,
-
-    %home_dir, %dir_to_user, %inode_to_user,
-
-    %url, @urlstoget, 
-
-    $debug, $CL_VERSION,
-  ) ;
-
-
-#----- User Configuration ---------------------------------------------
-
-# This should be 'localhost', or a hostname of the Web server.  URLs at
-#   this host will be assumed to be local; URLs not at this host will not be
-#   traversed into. If this names a remote host, the program will not work.
-# Note that 'localhost' doesn't necessarily point to your local Web server.
-
-# $LOCAL_HOST= 'localhost' ;
-# $LOCAL_HOST= 'www.example.com' ;
-$LOCAL_HOST='isabelle.in.tum.de';
-
-# This is your root Web directory, i.e. the directory that the Web server
-#   sends the user if the URL "http://$LOCAL_HOST" is requested.  It's in
-#   the configuration file srm.conf (and is read by -c option).
-# If you don't know the document root of your server, but you don't need
-#   it because you're only checking URLs whose path starts with ~, put a
-#   non-existent path here rather than leave it blank (a hack).
-
-# $DOCUMENT_ROOT= '/home/www/htdocs' ;
-$DOCUMENT_ROOT='/home/proj/isabelle';
-
-#----- variables equivalent to srm.conf entries 
-
-# These globals are from the equivalent entries in srm.conf, etc.
-# See the command-line option -c <config-file>, to read values directly 
-#   from srm.conf instead.
-
-# $USER_DIR= 'public_html' ;
-$USER_DIR='.html-data';
-@DIRECTORY_INDEX= qw( index.html index.cgi index.shtml ) ;
-
-# Used in &url_to_filename(), and possibly elsewhere
-# Note that ALIAS_MATCH and SCRIPT_ALIAS_MATCH use Perl (not standard) regexps.
-# If order of multiple e.g. "Alias" directives is important, this may not work.
-%ALIAS= () ;
-%ALIAS_MATCH= () ;
-%SCRIPT_ALIAS= () ;
-%SCRIPT_ALIAS_MATCH= () ;
-
-# The list of file extensions to interpret as CGI scripts or
-#   server-parsed HTML files.
-# These are not specific settings in srm.conf, but are combinations of
-#   AddHandler directives and possibly AddType directives.
-@CGI_EXTENSIONS=   qw( .cgi ) ;
-@SHTML_EXTENSIONS= qw( .shtml ) ;
-
-#----- end of variables equivalent to srm.conf entries 
-
-# Specify patterns here to only include URLs that match at least one
-#   pattern.  As a special case, an empty list includes all URLs, i.e.
-#   does not restrict URLs by name (except perhaps by @EXCLUDE_PATTERNS).
-# This can be added to or cleared with the -I command-line option.
-@INCLUDE_PATTERNS= () ;
-
-# Specify patterns here to cause matching URLs to be excluded,
-#   e.g. '\?' means ignore all URLs that query.
-# This can be added to or cleared with the -X command-line option.
-# @EXCLUDE_PATTERNS=  qw( \? ) ;
-
-# Only report URLs whose status codes start with one of these patterns.
-#   As a special case, an empty list reports all URLs, i.e. does not 
-#   restrict URLs by status code (except perhaps by @EXCLUDE_STATUS).
-# This can be added to or cleared with the -i command-line option.
-@INCLUDE_STATUS= () ;
-
-# Don't report URLs whose status codes start with these patterns.  Default
-#   is qw( 200 ).
-# This can be added to or cleared with the -x command-line option.
-@EXCLUDE_STATUS= qw( 200 ) ;
-
-# For 302 or 303 HTTP redirection, redirect no more than this many times.
-$MAX_REDIRECTS= 5 ;
-
-# If a connection times out, etc., attempt no more than this many times.
-$MAX_ATTEMPTS= 5 ;
-
-# The old version determined whether a file was HTML by the -T test (text
-#   file), and so traversed all HTML-like links in any text file that wasn't
-#   a CGI script.  It's probably more appropriate to check the file
-#   extension, to exclude source code, .txt files, etc.  Leave $HTML_BY_NAME
-#   set to use the filename, or unset it to traverse all HTML-like links in
-#   any text files, as the old version did.
-$HTML_BY_NAME= 1 ;
-
-# Some old NCSA servers, including 1.5.2, don't report the HTTP version
-#   correctly in the status line; they return e.g. "HTTP 200 OK".  To allow
-#   this, leave the variable here set.
-$SUPPORT_NCSA_BUG= 1 ;
-
-
-#----- DO NOT CHANGE ANYTHING BELOW THIS LINE, unless you want to... ---
-
-#----- Further Global Variable Initialization --------------------------
-
-$CL_VERSION= '1.0.1' ;
-
-$ENV{'http_proxy'}||= $ENV{'HTTP_PROXY'} ;
-@NO_PROXY= split(/[\s,]+/, $ENV{'no_proxy'} || $ENV{'NO_PROXY'} ) ;
-
-
-# If output's not going directly to terminal, this ensures autoflushing.
-$|= 1 ;
-
-#----- End of Configuration --------------------------------------------
-
-use strict 'vars' ;
-use IO::Socket ;
-
-&usage unless @ARGV ;
-
-# Process command-line options
-&getopts ;
-
-# Make any final needed adjustments to globals, after the hard-coded
-#   values above and any options have been processed.
-&adjust_all_globals ;
-
-# Default to "." if no starting filenames given.
-# 3-6-98: Anh, decided against it.
-#@ARGV= ('.') unless @ARGV ;
-
-# &add_url() sets $url{$_} and pushes to @urlstoget, only if not already
-#   added, plus any other initialization.
-# Only add a file if it can be accessed with a URL.
-foreach my $arg (@ARGV) {
-    if ($arg=~ m#^http://#i) {
-        &add_url($arg, '-', 0) ;
-    } else {
-        my($URL)= &filename_to_url($arg, $CWD) ;
-        if (defined($URL)) {
-            &add_url($URL, '-', 0) ;
-        } else {
-	    die "ERROR: $arg is not accessible through the Web server.\n" ;
-        }
-    }
-}
-
-
-# Check the URLs, in order.  @urlstoget may grow and rearrange.
-while (@urlstoget) {
-    my($url)= shift(@urlstoget) ;
-    if ( !$url->{'ishtml'} or !$url->{'islocal'} or $url->{'dontfollow'}
-         or (length($max_depth) and $url->{'depth'} > $max_depth ) ) {
-        &verify_url($url) ;    # may set ishtml=true
-    }
-    if ( $url->{'ishtml'} and $url->{'islocal'} and !$url->{'dontfollow'}
-         and (!length($max_depth) or $url->{'depth'} <= $max_depth ) ) {
-        my($HTML)= &load_url($url) ;  # may set ishtml=false
-        # 11-30-99 JSM: fixed to handle rel URLs in redirected pages correctly
-        my($base_url)= $url->{'location'} || $url->{'URL'} ;
-        &extract_urls($HTML, $base_url, $url->{'URL'}, $url->{'depth'}+1) 
-            if $url->{'ishtml'} ;      # big, calls &add_url()
-    }
-
-    # If we get an error response that may be corrected with another
-    #   attempt, put it back in the queue.  Such errors include 408,
-    #   503, 504, and the homegrown codes 600, 601, 602, and 603.
-    if ($url->{'status'}=~ /^(408|503|504|600|601|602|603)\b/ ) {
-        push(@urlstoget, $url) if ( $url->{'numtries'} < $MAX_ATTEMPTS ) ;
-    }
-
-}
-
-&make_report() ;
-
-exit ;
-
-
-
-#----- Process command-line options -----------------------------------
-
-# Process any command-line options.
-sub getopts {
-    my($opt, $param) ;
-    while ($ARGV[0]=~ /^-/) {
-        $opt= shift(@ARGV) ;
-        ($opt, $param)= $opt=~ /^-(.)(.*)/ ;
-
-        # Turn on verbose reporting
-        if ($opt eq 'v') {
-            $verbose_report= ($param ne '-') ;
-
-        # User-specified patterns to exclude ('' to clear list)
-        } elsif ($opt eq 'I') {
-            $param= shift(@ARGV) unless length($param) ;
-            if (length($param)) { push(@INCLUDE_PATTERNS, $param) }
-            else { @INCLUDE_PATTERNS= () }
-
-        # User-specified patterns to exclude ('' to clear list)
-        } elsif ($opt eq 'X') {
-            $param= shift(@ARGV) unless length($param) ;
-            if (length($param)) { push(@EXCLUDE_PATTERNS, $param) }
-            else { @EXCLUDE_PATTERNS= () }
-
-        # User-specified response codes to ignore ('' to clear list)
-        } elsif ($opt eq 'i') {
-            $param= shift(@ARGV) unless length($param) ;
-            if (length($param)) { push(@INCLUDE_STATUS, $param) }
-            else { @INCLUDE_STATUS= () }
-
-        # User-specified response codes to ignore ('' to clear list)
-        } elsif ($opt eq 'x') {
-            $param= shift(@ARGV) unless length($param) ;
-            if (length($param)) { push(@EXCLUDE_STATUS, $param) }
-            else { @EXCLUDE_STATUS= () }
-
-        # Maximum traversal depth
-        } elsif ($opt eq 'd') {
-            $param= shift(@ARGV) unless length($param) ;
-            $max_depth= $param ;
-
-        # Make it a "file check"-- only read local files, do not use HTTP
-        } elsif ($opt eq 'f') {
-            $file_check= ($param ne '-') ;
-
-        # Use HTTP for all URL's, even local files
-        } elsif ($opt eq 'h') {
-            $full_http_check= ($param ne '-') ;
-
-        # Read configuration parameters from srm.conf-like file
-        } elsif ($opt eq 'c') {
-            $param= shift(@ARGV) unless length($param) ;
-            &read_srm_conf($param) ;
-            
-        # Print current configuration parameters
-        } elsif ($opt eq 'q') {
-            &print_config ;
-            exit ;   # jsm-- should we exit?
-
-        # Allow certain parameters to be defined via the command line
-        } elsif ($opt eq 'D') {
-            $param= shift(@ARGV) unless length($param) ;
-            $debug=1, unshift(@ARGV,$param), next if $param=~ /^-/ ;
-            my($name,$value)= split(/=/, $param, 2) ;
-            $value= 1 unless length($value) ;
-            if ($name=~ /^(LOCAL_HOST|DOCUMENT_ROOT|USER_DIR|DEBUG|debug)$/) {
-                eval "\$$name= \$value" ;
-                #$$name= $value ;  # this doesn't work, because of initial my()
-            }
-
-        } elsif ($opt eq '?') {
-            &usage ;
-
-        # End command-line option processing on "--"
-        } elsif ($opt eq '-') {
-            return ;
-
-        } else {
-            print STDERR 
-                "Illegal option-- '$opt'.  Enter \"$0 -?\" for help.\n" ;
-            exit ;
-        }
-
-    }
-
-    if ($file_check and $full_http_check) {
-        print STDERR "You cannot use both the -f and the -h options.\n" ;
-        exit ;
-    }
-
-}
-
-
-# Read appropriate values from the given file, typically srm.conf.  If a
-#   directory is named, default to filename "srm.conf".
-# Note that opening "-" will open STDIN.
-sub read_srm_conf {
-    my($fname)= @_ ;
-    local(*SRM) ;
-
-    # default to srm.conf if only a directory is named
-    if (-d $fname) {
-        $fname=~ s#/$## ;
-        $fname.= "/srm.conf" ;
-    }
-
-    # Clear old values
-    $DOCUMENT_ROOT= $USER_DIR= '' ;
-    @DIRECTORY_INDEX= @CGI_EXTENSIONS= @SHTML_EXTENSIONS= () ;
-    %ALIAS= %ALIAS_MATCH= %SCRIPT_ALIAS= %SCRIPT_ALIAS_MATCH= () ;
-
-    open(SRM, "<$fname") || die "Can't open $fname: $!" ;
-    while (<SRM>) {
-        s/#.*// ;
-        next unless /\S/ ;
-        my($name, @param)= /(\S+)/g ;
-
-        if ($name eq 'DocumentRoot') {
-            $DOCUMENT_ROOT= $param[0] ;
-
-        } elsif ($name eq 'UserDir') {
-            $USER_DIR= $param[0] ;
-
-        } elsif ($name eq 'DirectoryIndex') {
-            @DIRECTORY_INDEX= @param ;
-
-        } elsif ($name eq 'Alias') {
-            $ALIAS{$param[0]}= $param[1] ;
-
-        } elsif ($name eq 'AliasMatch') {
-            $ALIAS_MATCH{$param[0]}= $param[1] ;
-
-        } elsif ($name eq 'ScriptAlias') {
-            $SCRIPT_ALIAS{$param[0]}= $param[1] ;
-
-        } elsif ($name eq 'ScriptAliasMatch') {
-            $SCRIPT_ALIAS_MATCH{$param[0]}= $param[1] ;
-
-        } elsif ($name eq 'AddHandler') {
-            if ($param[0] eq 'cgi-script') {
-                push(@CGI_EXTENSIONS, $param[1]) ;
-            } elsif ($param[0] eq 'server-parsed') {
-                push(@SHTML_EXTENSIONS, $param[1]) ;
-            }
-        }
-
-    }
-    close(SRM) ;
-}
-
-
-# Make any final settings to global variables, after the hard-coded values
-#   and command-line options have been processed.
-# Most non-user-configurable globals are also set here.
-sub adjust_all_globals {
-
-    # Standardize $USER_DIR to never have trailing slash
-    $USER_DIR=~ s#/$## ;
-
-    # If no $LOCAL_HOST set, try to read it from first URL in list, or
-    #   use the string 'localhost' if that URL contains no hostname.
-    unless (length($LOCAL_HOST)) {
-        $LOCAL_HOST= (&parse_url($ARGV[0]))[1] || 'localhost' ;
-        print STDERR "LOCAL_HOST set to \"\L$LOCAL_HOST\E\"\n" ;
-    }
-    $LOCAL_HOST= lc($LOCAL_HOST) ;
-
-    # If no $DOCUMENT_ROOT, try to guess it from $HOME, username, $USER_DIR.
-    unless (length($DOCUMENT_ROOT)) {
-        my($home) ;
-        unless ($home= $ENV{'HOME'}) {
-            my($uname)= getpwuid($<) || $ENV{'USER'} || `whoami` || `id -un` ;
-            chomp($uname) ;
-            &read_home_dirs unless %home_dir ;   # only read when needed
-            $home= $home_dir{$uname} ;
-        }
-        $DOCUMENT_ROOT= "$home/$USER_DIR" ;
-
-        die "Could not determine DOCUMENT_ROOT; edit the $0 script to set it.\n"
-            unless (-d $DOCUMENT_ROOT) ;
-
-        print STDERR "DOCUMENT_ROOT set to \"$DOCUMENT_ROOT\"\n" ;
-    }
-    $DOCUMENT_ROOT=~ s#/$## ;
-
-    # Allows &filename_to_url() to unalias as best as possible.  Note that 
-    #   use of &filename_to_url() can be avoided by the user; see note in 
-    #   that routine.
-    %UN_ALIAS= (reverse (%ALIAS, %SCRIPT_ALIAS) ) ;
-
-    # These are to compare equivalency to later, in &filename_to_url().
-    ($DOC_ROOT_DEV, $DOC_ROOT_INODE)= stat("$DOCUMENT_ROOT/.") ;
-    
-    $DOC_ROOT_EXISTS= -e _ ;
-    
-    # Set CWD from shell variable, else from `pwd`.
-    $CWD= $ENV{'PWD'} || `pwd` || die "couldn't run pwd: $!" ;
-    chomp($CWD) ;
-
-
-    # These are used by &extract_urls().
-    # This is a complete list of URL-type attributes defined in HTML 4.0,
-    #   plus any others I found, like nonstandard ones or from an earlier HTML.
-    # Only a few of these are commonly used, as of early 1998.
-    # The set in %html_urls could possibly link to HTML resources, while the
-    #   set in %non_html_urls could not.  The %special(.*) sets, here for 
-    #   reference only, include URL attributes that require special handling.
-
-    %html_urls= ( 'a'          => [ 'href' ],
-                  'area'       => [ 'href' ],
-                  'frame'      => [ 'src', 'longdesc' ],
-                  'link'       => [ 'href', 'urn' ],
-                  'img'        => [ 'longdesc', 'usemap' ],
-                  'q'          => [ 'cite' ],
-                  'blockquote' => [ 'cite' ],
-                  'ins'        => [ 'cite' ],
-                  'del'        => [ 'cite' ],
-                  'object'     => [ 'usemap' ],
-                  'input'      => [ 'usemap' ],
-                  'iframe'     => [ 'src', 'longdesc' ],
-		  'ilayer'     => [ 'src' ],
-		  'layer'      => [ 'src' ],
-		  'fig'        => [ 'imagemap' ],
-		  'overlay'    => [ 'imagemap' ],
-		  'meta'       => [ 'url' ],
-		  'note'       => [ 'src' ],
-                ) ;
-
-    %non_html_urls= ( 'body'    => [ 'background' ], 
-                      'img'     => [ 'src', 'lowsrc', 'dynsrc' ],
-                      'input'   => [ 'src' ],
-                      'script'  => [ 'src', 'for' ],
-
-		      'fig'     => [ 'src' ],
-		      'overlay' => [ 'src' ],
-		      'select'  => [ 'src' ],
-		      'ul'      => [ 'src' ],
-		      'h1'      => [ 'src' ],
-		      'h2'      => [ 'src' ],
-		      'h3'      => [ 'src' ],
-		      'h4'      => [ 'src' ],
-		      'h5'      => [ 'src' ],
-		      'h6'      => [ 'src' ],
-		      'hr'      => [ 'src' ],
-		      'table'   => [ 'src' ],
-		      'td'      => [ 'src' ],
-		      'th'      => [ 'src' ],
-		      'tr'      => [ 'src' ],
-
-		      'bgsound' => [ 'src' ],
-		      'embed'   => [ 'src' ],
-                  ) ;
-
-    # %special_urls= ( 'base' => [ 'href' ] ) ;
-    #
-    # %special_html_urls= ( 'object' => [ 'codebase', 'data' ] ) ;
-    #
-    # %special_non_html_urls=
-    #      ( 'head'   => [ 'profile' ],
-    #        'object' => [ 'codebase', 'archive', 'classid' ],
-    #        'applet' => [ 'codebase', 'code', 'object', 'archive' ],
-    #        'form'   => [ 'action', 'script' ]
-    #      ) ;
-
-
-    # This is a translation from entity character references to characters, 
-    #   used in &HTMLunescape().
-    # This simplified version only supports &quot; &lt; &gt; &amp;, but that
-    #   should be enough for URL-type attributes.
-    # See http://www.w3.org/TR/REC-html40/sgml/entities.html for full entity 
-    #   list.
-
-    %e_to_ch= (quot => '"', 
-               'lt' => '<', 
-               'gt' => '>', 
-               amp  => '&') ;
-
-}
-
-
-#----------------------------------------------------------------------
-
-# Add the URL to our data structures; specifically, to %url and @urlstoget.
-# Returns a pointer to the structure in %url, or undef if already defined
-#   or on error.
-# Currently, this always receives the URL with the host name lowercase,
-#   either from &absolute_url() or from using $LOCAL_HOST.
-sub add_url {
-    my($URL, $referer, $depth, $ishtml, $iscgi, $dontfollow)= @_ ;
-
-    # Allow the user to restrict URL patterns:  URLs must be in 
-    #   @INCLUDE_PATTERNS but not in @EXCLUDE_PATTERNS (but only restrict 
-    #   by @INCLUDE_PATTERNS if it's not empty).
-    return undef if @INCLUDE_PATTERNS &&
-                    !grep( $URL=~ /$_/, @INCLUDE_PATTERNS ) ;
-    return undef if grep( $URL=~ /$_/, @EXCLUDE_PATTERNS ) ;
-
-    # Canonicalize URL, so we don't get a page multiple times
-    $URL= &canonicalize($URL) ;
-    
-    # for obscure case involving a <form action=___.cgi>-extracted URL being
-    #   overwritten by <a href=___.cgi> extraction (don't fret over this)
-    $url{$URL}{'dontfollow'}&&= $dontfollow if $url{$URL} ;
-
-    # Don't add the record a second time!  Or will infinitely traverse.
-    return undef if $url{$URL} ;  # or add to @referers, for 301 correction...?
-
-    # Only HTTP URLs are currently supported
-    return undef unless $URL=~ /^http:/i ;
-
-    # Any self-referral here indicates a bug in the program.  It's happened.
-    die "PROGRAM ERROR: $URL shows its first referer as itself.\n"
-        if $referer eq $URL ;
-
-    my(%u) ;
-    @u{qw(URL referer depth ishtml iscgi dontfollow)}= 
-        ($URL, $referer, $depth, $ishtml, $iscgi, $dontfollow) ;
-    $u{'islocal'}= ($URL=~ m#^http://\Q$LOCAL_HOST\E/#io) + 0 ; # make length>0
-    if ($u{'islocal'}) {
-#        $u{'filename'}= &url_to_filename($URL) ;
-        @u{'filename', 'location'}= &url_to_filename($URL) ;
-        $u{'iscgi'}= &is_cgi($u{'filename'}, $URL)  if $u{'iscgi'} eq '' ;
-
-	# 2-27-00 JSM:  Detect ishtml by filename, not -T test.
-	if ( $u{'ishtml'} eq '' ) {
-	    $u{'ishtml'}=  $HTML_BY_NAME
-		?  ( !$u{'iscgi'} && -e $u{'filename'} && 
-		     $u{'filename'}=~ /\.html?$/i ) + 0
-		:  (!$u{'iscgi'} && -e $u{'filename'} && -T _) + 0 ;
-	}
-#        $u{'ishtml'}= (!$u{'iscgi'} && -e $u{'filename'} && -T _) + 0
-#            unless length($u{'ishtml'}) ;
-
-    }
-
-    #  If we're only doing a file check, don't add URLs that require HTTP
-    return undef if ($file_check and (!$u{'islocal'} or $u{'iscgi'}) ) ;
-
-    push(@urlstoget, \%u) ;
-    $url{$URL}= \%u ;
-
-    # return \%u ;   # unneeded because of previous statement
-}
-
-
-# Guess if a file is a CGI script or not.  Returns true if the (regular) file
-#   is executable, has one of @CGI_EXTENSIONS, or if the URL is in a 
-#   ScriptAlias'ed directory.
-# $fname must be absolute path, but $URL is optional (saves time if available).
-# Note that URLs like "/path/script.cgi?a=b" are handled correctly-- the
-#   previously extracted filename is tested for CGI-ness, while the URL is
-#   checked for ScriptAlias matching (which is unaffected by final query
-#   strings or PATH_INFO).
-sub is_cgi {
-    my($fname, $URL)= @_ ;
-    return 1 if (-x $fname && ! -d _ ) ;   # should we really do this?
-    foreach (@CGI_EXTENSIONS) { return 1 if $fname=~ /\Q$_\E$/i }
-
-    $URL= &filename_to_url($fname) unless length($URL) ;  # currently unused
-    my($URLpath)= $URL=~ m#^http://[^/]*(.*)#i ;
-    foreach (keys %SCRIPT_ALIAS)        { return 1 if $URLpath=~ /^\Q$_\E/ }
-    foreach (keys %SCRIPT_ALIAS_MATCH)  { return 1 if $URLpath=~ /^$_/ }
-
-    return 0 ;
-}
-   
-
-# Put the URL in such a form that two URLs that point to the same resource
-#   have the same URL, to avoid superfluous retrievals.
-# Host name is lowercased elsewhere-- this routine is only called from
-#   &add_url; see note there.  To lowercase the host name here would be
-#   inefficient.
-sub canonicalize {
-    my($URL)= @_ ;
-
-    $URL=~ s/#.*// ;    # remove any "#" fragment from end of URL
-
-    return $URL ;
-}
-
-
-#----- File reading/downloading routines (includes networking) --------
-
-# Verify that a URL exists, and set $url->{'status'} accordingly.  Do
-#   this either by checking the local filesystem or by using the HTTP HEAD 
-#   method for remote sites or CGI scripts.
-# Set $url->{'ishtml'} accordingly if discovered from Content-Type:.
-# This does not support various Redirect directives in srm.conf.
-sub verify_url {
-    my($url)= @_ ;
-
-    print STDERR "verifying $url->{'URL'}\n" if $debug ;
-
-
-    # Depending on the state of $url->{islocal, iscgi, dontfollow} and
-    #   $full_http_check, take appropriate actions to check/set the
-    #   status code for this URL.
-    
-    # NOTE: In some situations, specifically when checking a CGI script
-    #   named in a <form action> (thus implying that dontfollow is set),
-    #   and using HTTP to check the URL (because the script is remote or
-    #   $full_http_check is set), the HTTP response code may not be
-    #   accurate.  This is because there is no form data sent with the
-    #   request, as there normally would be.  In these cases, a cautionary
-    #   note is appended to $url->{'status'}.  Additionally, an empty 
-    #   $url->{'status'} is changed to an explanatory note (maybe we should
-    #   do that in load_url() too?).
-
-    # Use HEAD if file is remote, or if $full_http_check is set.
-    if (!$url->{'islocal'} or $full_http_check) {
-        &load_url_using_HTTP($url, 'HEAD') ;
-        $url->{'status'}= '[no status returned]'
-            unless length($url->{'status'}) ;
-        $url->{'status'}.= ' (NOTE: Form was not submitted normally)'
-            if $url->{'dontfollow'} ;
-
-    # URL is local:  If it's not CGI, do a normal local file check
-    } elsif (!$url->{'iscgi'}) {
-        $url->{'status'}= (-e $url->{'filename'})  
-            ? "200 Local File Exists"  : "404 File Not Found" ;
-
-    # URL is local CGI:  Use HEAD unless dontfollow is set
-    } elsif (!$url->{'dontfollow'}) {
-        &load_url_using_HTTP($url, 'HEAD') ;
-
-    # Else it's a local CGI with dontfollow set:  Check for executable file
-    } else {
-        $url->{'status'}= 
-             (! -e $url->{'filename'})  ? "404 File Not Found"
-           : (! -x $url->{'filename'})  ? "403 Local File Is Not Executable"
-           :                              "200 Local Executable File Exists"
-
-    }
-        
-
-# Old verify routine below:
-#
-#    # If is a local non-CGI file, check it directly from the filesystem
-#    if ($url->{'islocal'} and !$url->{'iscgi'} and !$full_http_check) {
-#        $url->{'status'}= (-e $url->{'filename'})  
-#            ? "200 Local File Exists"  : "404 File Not Found" ;
-#
-#    # Otherwise, download its HEAD from its HTTP server
-#    } else {
-#        &load_url_using_HTTP($url, 'HEAD') ;
-#    }
-
-
-}
-
-
-
-# Load entire file/resource and return its contents, setting $url->{'status'}
-#    accordingly.  Do this either by checking the local filesystem or by 
-#    using the HTTP GET method for remote sites or CGI scripts.
-# Set $url->{'ishtml'} accordingly if discovered from Content-Type:.
-# This does not support various Redirect directives in srm.conf.
-sub load_url {
-    my($url)= @_ ;
-    my($HTML) ;
-
-    print STDERR "loading $url->{'URL'}\n" if $debug ;
-
-    # If is a local non-CGI file, read it directly from the filesystem
-    if ($url->{'islocal'} and !$url->{'iscgi'} and !$full_http_check) {
-        my($iscgi) ;
-        ($HTML, $url->{'ssierrs'}, $iscgi)= 
-            &read_expanded_file($url->{'filename'}, $url->{'URL'}) ;
-        $url->{'status'}= 
-            !defined($HTML)
-                  ? sprintf("450 Can't read file: %s (%s)", $!, $!+0)
-            : @{$url->{'ssierrs'}}
-                  ? sprintf("451 SSI Error(s) (%s total)",
-                            scalar @{$url->{'ssierrs'}})
-
-            :       "200 Local File Read OK" ;
-
-        # $url->{'iscgi'} may be set if an SHTML file included CGI calls.
-        # Don't set it if we're doing a file check, in which case we'll
-        #   keep whatever $HTML we could get.
-        $url->{'iscgi'}= $iscgi unless $file_check ;
-    }
-
-    # Otherwise (or if rereckoned), download the resource from its HTTP server
-    if (!$url->{'islocal'} or $url->{'iscgi'} or $full_http_check) {
-        (undef, undef, $HTML)= &load_url_using_HTTP($url, 'GET') ;
-    }
-
-    # Note that this will be set even when URL is to be reloaded, like
-    #   for a 601 (timeout) response.
-    $url->{'hasbeenloaded'}= 1 ;
-    return $HTML ;
-}
-
-
-# Read a local file and return its contents.  If a file is SSI (aka SHTML),
-#   expand any SSI <!--#include--> directives as needed, recursively 
-#   including nested files.
-# This is used for all local reads, SHTML or not, but the vast bulk of this
-#   routine is for SHTML files.
-#
-# If file is SHTML, this routine also returns a structure of error data,
-#   and a boolean saying if this file needs to be downloaded via HTTP
-#   for a complete check (e.g. includes CGI calls).
-#
-# $fname must be canonicalized absolute path, but $URL parameter is optional.
-# %$parents contains all "include"-ancestors of the file, to prevent loops.
-#   If omitted, assumes no ancestors (and a fresh hash is started).
-#
-# This routine seems much bigger and more complex than it needs to be.
-#   It could be one third the size and much simpler if we didn't have to
-#   worry about full error reporting on nested includes.
-#
-# Note: This routine was made to mimic what Apache would return to a client.
-#   However, the result differs from Apache's in two slight ways, both
-#   involving nested SSI within <!--#include file="..." -->, and both
-#   apparent bugs in Apache 1.1 (may be fixed in later versions):
-#
-#   1) If a <file="..."> value contains no "/" (i.e. in current directory),
-#      then Apache always parses the included file as SHTML, regardless of
-#      extension.  This routine checks @SHTML_EXTENSIONS for all included
-#      files.
-#   2) If a <file="..."> value containing a "/" loads an SHTML file  
-#      containing a <virtual="..."> tag with a relative path, the directive
-#      fails in Apache.  This routine tries to guess the correct path/URL.
-#
-#
-# Notes on this routine, and SHTML files in general:
-#
-# At first thought, it seems like we could load each included file
-# only once, instead of once for every file that includes it.
-# However, because of the fact that relative URLs are resolved
-# relative to the top-level including file, the top-level file will
-# need to be expanded every time.  (It's legal (though of questionable
-# wisdom) to include a file from e.g. both /a/index.shtml and
-# /b/index.shtml, so links from the included file point to different
-# URLs.)
-#
-# Note that while URLs in included files (e.g. <a href="...">) are
-# resolved relative to the top-level including file, nested include tags
-# are resolved relative to the direct includer.
-#
-# We could possibly be more efficient in time (but costly in memory)
-# by storing the expanded contents and $errlist of each included file,
-# since those will be constant (except $errlist's include-loop
-# reporting might vary somewhat).  There are probably other ways to
-# eek out savings of time and memory, at the cost of complexity.
-#
-# The main loop here is inside of an s/// statement.  Unusual, but it's an
-# appropriate way to handle the recursion. Recursion is needed, since each
-# included file may or may not be SHTML.
-#
-# $iscgi is set if a file includes "<!--#exec", or if it contains an
-#   <!--#include virtual="..." --> tag that points to a CGI file, or if 
-#   any of its include-children sets $iscgi.
-#
-#
-# Notes to help clarify data structures, if (God forbid) you have to modify 
-# this routine:
-#
-# Each error is a list of files in an "include chain", and $errlist is a
-# list of errors.  $errlist is associated with the current $HTML.  Each
-# error in $errlist is associated with some tag in $HTML, as iterated in
-# the s/// loop.  When this routine returns ($HTML, $errlist), the
-# errors in $errlist should all have as their first element tags that
-# were found in $HTML.
-#
-# Each error's final element (the "leaf") is associated with a tag that
-# tried to load an invalid file.  Each leaf will always be the complete 
-# set of errors for that tag (i.e. it has no children, since it couldn't
-# load the file).
-#
-# If the file can be validly loaded, then we may have 0 or multiple errors
-# associated with this file/tag (and returned from this routine).  Each
-# file's $errlist is an accumulation of all of its children's $errlist's.
-#
-# Errors that come from loading a child are associated with the child's
-# $HTML and tags.  Before adding them to the parent's (current) $errlist,
-# they must have the CHILD's path/tag unshifted onto the front of the 
-# include chain; all errors are then added to the current $errlist.
-# This ensures that:
-#   a) The errors are now all associated with the tag that loaded the child.
-#   b) The errors in the current $errlist are always associated with tags
-#      from the current $HTML.
-#
-
-sub read_expanded_file {
-    my($fname, $URL, $parents)= @_ ;
-    my($HTML, $errlist, $iscgi) ;
-    my($isshtml) ;
-
-    $parents->{$fname}= 1 ;
-
-    $HTML= &read_file($fname) ;
-    return(undef) unless defined($HTML) ;
-
-    foreach (@SHTML_EXTENSIONS) {
-        $isshtml= 1, last if ($fname=~ /\Q$_\E$/i) ;
-    }
-
-    if ($isshtml) {
-        $errlist= [] ;
-        $iscgi= ($HTML=~ /<!--#exec\b/i) ;
-
-        $HTML=~ s{(<!--#include\b.*?>)} {
-            do {
-                my($childfname, $childURL) ;
-                my($childHTML, $childerrlist, $childiscgi) ;
-                my($tagst) = $1 ;
-                my($tag)= &parse_tag($tagst) ;
-              GET_CHILD: {
-                  if (length($tag->{'attrib'}{'virtual'})) {
-                      $URL= &filename_to_url($fname) unless length($URL) ;
-                      $childURL= 
-                          &absolute_url($tag->{'attrib'}{'virtual'}, $URL) ;
-                      ($childfname)= &url_to_filename($childURL) ;
-
-                      # If it's a CGI, don't follow it, but no error either
-                      if (&is_cgi($childfname, $childURL)) {
-                          $iscgi= 1 ;
-                          last GET_CHILD ;
-                      }
-
-                  } elsif (length($tag->{'attrib'}{'file'})) {
-                      $childfname= $tag->{'attrib'}{'file'} ;
-                      if ($childfname=~ m#^(/|~)#) {
-                          push(@$errlist, [ {'path' => $childfname, 
-                                             'tag' => $tagst, 'errmsg' =>
-                                  'Absolute paths are not allowed in '
-                                . '<!--#include file="..." -->.'}]);
-                          last GET_CHILD ;
-                      }
-                      if ($childfname=~ m#\.\.(/|$)#) {
-                          push(@$errlist, [ {'path' => $childfname, 
-                                             'tag' => $tagst, 'errmsg' =>
-                                  'Paths can not contain "../" in '
-                                . '<!--#include file="..." -->.'}]);
-                          last GET_CHILD ;
-                      }
-                      $childfname= ($fname=~ m#(.*/)#)[0] . $childfname ;
-
-                  } else {
-                      push(@$errlist, [ {'path' => '',
-                                         'tag' => $tagst, 'errmsg' =>
-                              'Tag must contain either the "file" or '
-                            . '"virtual" attribute.'}]);
-                      last GET_CHILD ;
-
-                  }
-
-                  # canonicalize filename for %$parents
-                  1 while $childfname=~ s#/\.(/|$)#/# ;
-                  1 while $childfname=~ s#/(?!\.\./)[^/]+/\.\.(/|$)#/# ;
-
-                  # Guarantee that file exists, is regular, and is readable
-                  unless (-e $childfname) {
-                      push(@$errlist, [{'path' => $childfname, 'tag' => $tagst,
-                                        'errmsg' => 'File not found'} ] ) ;
-                      last GET_CHILD ;
-                  }
-                  unless (-f $childfname) {
-                      push(@$errlist, [{'path' => $childfname, 'tag' => $tagst,
-                                        'errmsg' => 'File is not a regular'
-                                            . ' file.' } ] ) ;
-                      last GET_CHILD ;
-                  }
-                  unless (-r $childfname) {
-                      push(@$errlist, [{'path' => $childfname, 'tag' => $tagst,
-                                        'errmsg' => 'File is not readable by'
-                                            . ' current user.' } ] ) ;
-                      last GET_CHILD ;
-                  }
-
-                  # Guard against include loops
-                  if ($parents->{$childfname}) {
-                      push(@$errlist, [{'path' => $childfname, 'tag' => $tagst,
-                                        'errmsg' => 'An "include" loop exists'
-                                            . ' involving this file.' } ] ) ;
-                      last GET_CHILD ;
-                  }
-
-
-                  # Get the included file, with any error data
-                  ($childHTML, $childerrlist, $childiscgi)= 
-                      &read_expanded_file($childfname, $childURL, $parents) ;
-
-                  # Log if there was any error reading the file
-                  push(@$errlist, [{'path' => $childfname, 'tag' => $tagst,
-                                    'errmsg' => "Can't read file: $!." } ] )
-                      unless defined($childHTML) ;
-
-                  # Add any errors to the current (parent) error list
-                  foreach my $error (@$childerrlist) {
-                      unshift(@$error, 
-                              { 'path' => $childfname, 'tag' => $tagst } ) ;
-                  }
-                  push(@$errlist, @$childerrlist) ;
-
-                  # Parent is a CGI if any of its children is a CGI
-                  $iscgi||= $childiscgi ;
-            
-              }   # GET_CHILD
-
-
-              $childHTML ;   # final value to replace in main s/// construct
-
-          }   # do {}
-
-        }gie ;   # $HTML=~ s{} {}
-
-    } # if ($isshtml)
-
-    delete $parents->{$fname} ;
-
-    return($HTML, $errlist, $iscgi) ;
-}
-
-
-
-# Returns the contents of the named file, or undef on error.
-sub read_file {
-    my($fname)= @_ ;
-    local(*F, $/) ;
- 
-    undef $/ ;
-    open(F, "<$fname") || return undef ;
-    my($ret)= <F> ;
-    close(F) ;
-    
-    return $ret ;
-}
-
-
-# Try to get the given URL with the given HTTP method, and return the
-#   status line, headers, and body.
-# Set $url->{'status'} accordingly, and set $url->{'ishtml'} accordingly
-#   if Content-Type: header is returned.
-# This is specific to this program, and calls the more general &get_url().
-# This could be slightly more efficient if 302 or 303 was handled in the
-#   calling routine, where it could take advantage of a new URL being local.
-sub load_url_using_HTTP {
-    my($url, $method)= @_ ;
-    my($status_line, $headers, $body) ;
-
-    # We should not get here if $file_check is set
-    die "mistakenly called load_url_using_HTTP($url->{'URL'})" if $file_check ;
-
-    GETFILE: {
-        ($status_line, $headers, $body)=
-            &get_url( ($url->{'location'} || $url->{'URL'}), $method) ;
-
-        # If HEAD failed (as on some servers), sigh and use GET
-        ($status_line, $headers, $body)=
-            &get_url( ($url->{'location'} || $url->{'URL'}), 'GET')
-                unless length($status_line) ;
-
-        ($url->{'status'})=  $status_line=~ m#^HTTP/[\d.]+\s+(.*)# ;
-
-	# 2-27-00 JSM:  Allow old NCSA servers to not include the HTTP version.
-	if ($SUPPORT_NCSA_BUG and $url->{'status'} eq '') {
-	    ($url->{'status'})=  $status_line=~ m#^HTTP(?:/[\d.]+)?\s+(.*)# ;
-	}
-
-        # Redirect to new location if status is 302 or 303
-        if ($url->{'status'}=~ /^(301|302|303)\b/) {
-            ($url->{'location'})= $headers=~ m#^Location:[ \t]+(\S+)#im ;
-            last GETFILE unless length($url->{'location'}) ;
-            $url->{'location'}= 
-                &absolute_url($url->{'location'}, $url->{'URL'}) ;
-            redo GETFILE
-                if    ($url->{'status'}=~ /^(302|303)\b/)
-                   && (++$url->{'numredirects'} <= $MAX_REDIRECTS) ;
-        }
-    }
-
-    $url->{'numtries'}++ ;
-    $url->{'lasttried'}= time ;
-
-    # If successful response included Content-Type:, set ishtml accordingly
-    $url->{'ishtml'}= (lc($1) eq 'text/html') + 0
-        if $url->{'status'}=~ /^2/
-           and $headers=~ m#^content-type:[ \t]*(\S+)#im ;
-
-    print STDERR "status: $status_line\n" if $debug ;
-
-    return($status_line, $headers, $body) ;
-}
-
-
-# Request the HTTP resource at the given absolute URL using the given method,
-#   and return the response status line, headers, and body.
-# jsm-- in the future, this should support downloading to a file, in case
-#   the download is too large to fit in memory.
-sub get_url {
-    my($URL, $method)= @_ ;
-    my($host, $uri, $endhost) ;
-    my($S, $rin) ;
-    my($response, $status_line, $headers, $body, $status_code) ;
-    my($content_length) ;
-    $method= uc($method) ;
-    $method= 'GET' unless length($method) ;
-
-    ($host, $uri)= $URL=~ m#^http://([^/]*)(.*)$#i ;
-    $uri= '/' unless length($uri) ;
-    $endhost= $host ;
-
-    # use an HTTP proxy if $ENV{'http_proxy'} is set
-    USEPROXY: {
-        last USEPROXY unless $host=~ /\./ ;
-        if (length($ENV{'http_proxy'})) {
-            foreach (@NO_PROXY) {
-                last USEPROXY if $host=~ /$_$/i ;
-            }
-            ($host)= $ENV{'http_proxy'}=~ m#^(?:http://)?([^/]*)#i ;
-            $uri= $URL ;
-        }
-    }
-
-    # Open socket
-    $S= IO::Socket::INET->new(PeerAddr => $host,  # may contain :port
-                              PeerPort => 80,     # default if none in PeerAddr
-                              Proto => 'tcp') ;
-    return("HTTP/1.1 600 Can't create socket: $@") unless defined($S) ;
-    $S->autoflush() ;   # very important!!
-
-    # Send HTTP 1.1 request
-    print $S "$method $uri HTTP/1.1\015\012",
-             "Host: $endhost\015\012",
-             "Connection: close\015\012",
-             "User-agent: CheckLinks/$CL_VERSION\015\012",
-             "\015\012" ;
-
-    # Wait for socket response with select()
-    vec($rin= '', fileno($S), 1)= 1 ;
-    select($rin, undef, undef, 60) 
-        || return("HTTP/1.1 601 Connection timed out") ;
-
-    local($/)= "\012" ;
-
-    # Handle "100 Continue" responses for HTTP 1.1: loop until non-1xx.
-    do {
-        $status_line= <$S> ;
-        $status_line=~ s/\015?\012$// ;
-        ($status_code)= $status_line=~ m#^HTTP/\d+\.\d+\s+(\d+)# ;
-
-        $headers= '' ;
-        while (<$S>) {
-            last if /^\015?\012/ ;
-            $headers.= $_ ;
-        }
-        $headers=~ s/\015?\012[ \t]+/ /g ;
-    } until $status_code!~ /^1/ ;
-
-    # Body length is determined by HTTP 1.1 spec, section 4.4:  these
-    #   certain conditions implying no body, then chunked encoding,
-    #   then Content-length: header, then server closing connection.
-    if ($method eq 'HEAD' or $status_code=~ /^(1|204\b|304\b)/) {
-        $body= undef ;
-
-    # else chunked encoding
-    } elsif ($headers=~ /^transfer-encoding:[ \t]*chunked\b/im) {
-        # 7-16-99:  Old code was only saving last chunk.  Fix using
-        #   $this_chunk contributed by Mark Trotter.
-        my($this_chunk, $chunk_size, $readsofar, $thisread) ;
-        while ($chunk_size= hex(<$S>)) {
-            $readsofar= 0 ;
-            while ($readsofar!=$chunk_size) {
-                last unless $thisread=
-                    read($S, $this_chunk, $chunk_size-$readsofar, $readsofar) ;
-                $readsofar+= $thisread ;
-            }
-            return("HTTP/1.1 603 Incomplete chunked response", $headers, $body)
-                if $readsofar!=$chunk_size ;
-            $_= <$S> ;    # clear CRLF after chunk
-            $body.= $this_chunk ;
-        }
-
-        # Read footers if they exist
-        while (<$S>) {
-            last if /^\015?\012/ ;
-            $headers.= $_ ;
-        }
-        $headers=~ s/\015?\012[ \t]+/ /g ;
-
-
-    # else body length given in Content-length:
-    } elsif (($content_length)= $headers=~ /^content-length:[ \t]*(\d+)/im) {
-        my($readsofar, $thisread) ;
-        while ($readsofar!=$content_length) {
-            last unless $thisread=
-                read($S, $body, $content_length-$readsofar, $readsofar) ;
-            $readsofar+= $thisread ;
-        }
-        return(sprintf("HTTP/1.1 602 Incomplete response (%s of %s bytes)",
-                       $readsofar+0, $content_length),
-               $headers, $body)
-            if $readsofar!=$content_length ;
-
-
-    # else body is entire socket output
-    } else {
-        local($/)= undef ;
-        $body= <$S> ;
-    }
-
-    close($S) ;
-
-    return($status_line, $headers, $body) ;
-}
-
-
-#----- URL-parsing routines -------------------------------------------
-
-# The routines parse_url(), unparse_url(), and absolute_url() are based on
-#   different sections in the Internet Draft "Uniform Resource Identifiers
-#   (URI): Generic Syntax and Semantics", 11-18-97, by Berners-Lee,
-#   Fielding, and Masinter, filename draft-fielding-uri-syntax-01.
-
-# Parse a URL into its components, according to URI draft, sections 4.3, 4.4.
-# This regular expression is straight from Appendix B, modified to use Perl 5.
-# Returns scheme, site, path, query, and fragment.  All but path may have
-#   the undefined value.
-sub parse_url {
-    my($URL)= @_ ;
-    my($scheme, $site, $path, $query, $fragment)=
-        ($URL=~ m{^(?:    ([^:/?\#]+):)?
-                   (?: // ([^/?\#]*))?
-                          ([^?\#]*)
-                   (?: \? ([^\#]*))?
-                   (?: \# (.*))?
-                 }x
-        ) ;
-        
-        
-    # Un-URL-encode the path, to equivalate things like %7E --> ~
-    # Note that in some situations, this may cause problems with URLs that
-    #   contain the % character: if the unescaped URL is then used in 
-    #   relative URL calculation, it may be unescaped again (rare).
-    $path=~ s/\+/ /g ;
-    $path=~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/ge ;
-
-    # Note that in HTTP, the presence of a host implies a path beginning with
-    #   '/', so $path should be '/' for URLs like "http://www.somehost.com"
-    $path= '/' if !length($path) && length($site) && lc($scheme) eq 'http' ;
-
-    return($scheme, $site, $path, $query, $fragment) ;
-
-}
-
-
-# Returns a full URL string, given its components
-# The full procedure is described in the URI draft, section 5.2, step 7.
-sub unparse_url {
-    my($scheme, $site, $path, $query, $fragment)= @_ ;
-    my($URL) ;
-
-    $URL= "$scheme:"    if defined($scheme) ;
-    $URL.= "//$site"    if defined($site) ;
-    $URL.= $path ;
-    $URL.= "?$query"    if defined($query) ;
-    $URL.= "#$fragment" if defined($fragment) ;
-
-    return $URL ;
-}
-
-
-# Returns a canonicalized absolute URL, given a relative URL and a base URL.
-# The full procedure is described in the URI draft, section 5.2.
-# Note that a relative URI of "#fragment" should be resolved to "the current
-#   document", not to an absolute URL.  This presents a quandary for this
-#   routine:  should it always return an absolute URL, thus violating the
-#   spec, or should it not always return an absolute URL, thus requiring any
-#   caller to check for this special case?  This routine leaves that up to
-#   the caller, with $return_rel_fragment-- if set, stick to the spec;
-#   otherwise, always return an absolute URL.  See section G.4 of the draft.
-# Note that the pathname reduction in steps 6.c-f messes up any PATH_INFO
-#   that has ./ or ../ in it, which may be a bug in the spec.
-sub absolute_url {
-    my($relurl, $baseurl, $return_rel_fragment)= @_ ;
-    my(@relurl, @baseurl) ;
-
-    # parse_url() returns scheme, site, path, query, fragment
-    @relurl= &parse_url($relurl) ;      # Step 1
-    @baseurl= &parse_url($baseurl) ;
-
-    COMBINE: {
-
-        # Step 2
-        # See note above about $return_rel_fragment
-        if (  $relurl[2] eq '' && 
-              !defined($relurl[0]) &&
-              !defined($relurl[1]) &&
-              !defined($relurl[3]) ) {
-            @relurl[0..3]= @baseurl[0..3] ;
-            return $relurl if $return_rel_fragment ;   # see note above
-            last COMBINE ;
-        }
-
-        last COMBINE if defined($relurl[0]) ;    # Step 3
-        $relurl[0]= $baseurl[0] ;
-
-        last COMBINE if defined($relurl[1]) ;    # Step 4
-        $relurl[1]= $baseurl[1] ;
-
-        last COMBINE if $relurl[2]=~ m#^/# ;     # Step 5
-
-        # Step 6-- resolve relative path
-        my($path)= $baseurl[2]=~ m#^(.*/)# ;     # Step 6.a
-        $relurl[2]= $path . $relurl[2] ;         # Step 6.b
-        
-    } # COMBINE
-
-    # Put the remaining steps outside of the block to canonicalize the path.
-    # Arguably, this is not allowed.  To avoid such arguments at the expense of
-    #   path canonicalization, put steps 6.c-f back in the COMBINE block.
-
-    1 while $relurl[2]=~ s#(^|/)\./#$1# ;    # Step 6.c
-    $relurl[2]=~ s#(^|/)\.$#$1# ;            # Step 6.d
-
-    # Step 6.e
-    my($oldpath) ;
-    while ($relurl[2]=~ s#(([^/]+)/\.\./)# ($2 eq '..')  ? $1  : '' #ge) {
-        last if ($relurl[2] eq $oldpath) ;
-        $oldpath= $relurl[2] ;
-    }
-
-    # Step 6.f
-    $relurl[2]=~ s#(([^/]+)/\.\.$)# ($2 eq '..')  ? $1  : '' #ge ;
-
-    # Step 6.g: allow leading ".." segments to remain in path
-    # Step 6.h: relurl[2] is already the buffer string
-
-    # To canonicalize further, lowercase the hostname (is this valid for all
-    #   schemes?)
-    $relurl[1]= lc($relurl[1]) if defined($relurl[1]) ;
-
-    return &unparse_url(@relurl) ;                  # Step 7
-}
-
-
-
-# Convert a local URL into a canonicalized absolute path, or undef if
-#   not on this host or other error.
-# Result should only be used as filename.
-# Supports UserDir (e.g. public_html) for "/~username/path/file" URLs.
-# Supports Alias, AliasMatch, ScriptAlias, and ScriptAliasMatch from srm.conf
-#   (but note use of Perl regex's instead of standard regex's).
-# Inserts index.html, etc. (from @DIRECTORY_INDEX) if result is a directory,
-#   but just return directory name (ending in '/') if none of those exists.
-# Removes PATH_INFO, if any, from filename.
-# Directory names are always returned with trailing slash (which would not
-#   be appropriate if PATH_INFO was to be retained).
-# While this routines makes some tests (e.g. if the file is a directory),
-#   it does not verify that file at the resulting $filename exists.
-# Note that not all URLs point to files, so this routine is not always
-#   appropriate.  In this program, the result from this routine is only
-#   used when we know the URL is not a CGI script (and is therefore a file),
-#   except in &is_cgi() itself, which tests if a file is a CGI script.
-#   If it weren't for &is_cgi(), we could ignore cases when the URL isn't
-#   a file.
-# 12-1-99 JSM:  Changed to also return "redirected" location, in case URL
-#   is a directory but not ending in a slash, so relative URLs will resolve
-#   correctly against the redirected URL.
-sub url_to_filename {
-    my($URL)= @_ ;
-    my($URLpath, $path, $location, $docroot, $user) ;
-    return undef unless $URL=~ m#^http://\Q$LOCAL_HOST\E/#io ;
-    $URLpath= (&parse_url($URL))[2] ;
-    die "couldn't get path from [$URL]" unless length($URLpath) ;
-
-    # Note minor security hole:  if this script is run setuid, then any 
-    #   file on the system could be read by using an ALIAS to point to the 
-    #   file.  Note also that if a $URLpath such as "/alias/dir/../.." is
-    #   passed to this routine, the alias will be substituted BEFORE the
-    #   ".." path segments are traversed.  A case like this probably a
-    #   mistake in the URL anyway.
-
-    # Make no more than one alias substitution-- is there a precedence order?
-    # Note that %(.*)_MATCH use Perl regex's, not standard regex's.
-    # 3-29-99 JSM:  These all alias to actual directory, not to a resulting
-    #   URL, so no further conversion should be done if one of these matches.
-    # 3-29-99 JSM:  Changed ALIAS_MATCH and SCRIPT_ALIAS_MATCH blocks to
-    #   allow $1-type substitution in targets; MUST TEST!
-    ALIAS: {
-        foreach (keys %ALIAS) 
-            { $path= $URLpath, last ALIAS 
-                  if $URLpath=~ s/^\Q$_\E/$ALIAS{$_}/ }
-        foreach (keys %ALIAS_MATCH) 
-            { $path= $URLpath, last ALIAS 
-                  if eval "\$URLpath=~ s/^\$_/$ALIAS_MATCH{$_}/" }
-        foreach (keys %SCRIPT_ALIAS) 
-            { $path= $URLpath, last ALIAS 
-                  if $URLpath=~ s/^\Q$_\E/$SCRIPT_ALIAS{$_}/ }
-        foreach (keys %SCRIPT_ALIAS_MATCH) 
-            { $path= $URLpath, last ALIAS 
-                  if eval "\$URLpath=~ s/^\$_/$SCRIPT_ALIAS_MATCH{$_}/" }
-    }
-
-
-    # If $path has been set in above ALIAS block, no further conversion is
-    #   needed.  
-    if ($path eq '') {
-
-        # Must check for ^/.. before PATH_INFO check, in case $URL's path
-        #   is e.g. '/../conf/access.conf'
-        return undef if $URLpath=~ m#^/\.\.(/|$)# ;   # ^/.. is not allowed
-
-        # Set $docroot and $path for this file, based on the URL (contains '~' ?)
-        if (length($USER_DIR) and ($user,$path)= $URLpath=~ m#^/~([^/]+)(.*)# ) {
-            &read_home_dirs unless %home_dir ;   # only read when needed
-            return undef unless length($home_dir{$user}) ;
-            $docroot= "$home_dir{$user}/$USER_DIR" ;
-            $path= '/' unless length($path) ;
-        } else {
-            # If we have no $DOCUMENT_ROOT, we can't handle URLs without ~.
-            return undef unless $DOC_ROOT_EXISTS ;
-            $docroot= $DOCUMENT_ROOT ;
-            $path= $URLpath ;
-        }
-
-        # Handle PATH_INFO: remove path segments until an existing file is named.
-        # Note that directories cannot have PATH_INFO after them.
-        unless (-e "$docroot$path") {
-            for (my($path2)= $path ; $path2=~ m#/# ; $path2=~ s#/[^/]*$##) {
-                 last if -d "$docroot$path2" ;
-                 $path= $path2, last if -e "$docroot$path2" ;
-             }
-        }
-
-        # canonicalize path, and recheck for ^/.. (handles an obscure error,
-        #   when $URL's path is e.g. '/a/b/../../..'; but must canonicalize
-        #   after PATH_INFO check, in case path is e.g. '/a/b.cgi/../../..').
-        1 while $path=~ s#/\.(/|$)#/# ;
-        1 while $path=~ s#/(?!\.\./)[^/]+/\.\.(/|$)#/# ;
-        return undef if $path=~ m#^/\.\.(/|$)# ;   # ^/.. is not allowed
-
-        $path= "$docroot$path" ;
-
-    }
-
-
-    # Add "index.html", etc. if appropriate
-    if (-d $path) {
-        $path.= '/' unless $path=~ m#/$# ;
-        # 12-1-99 JSM: set "redirected" location also
-        $location= "$URL/" unless $URL=~ m#/$# ;
-        foreach (@DIRECTORY_INDEX) {
-            $path.= $_, last if -f "$path$_" ;
-        }
-    }
-    return ($path, $location) ;
-}
-
-
-# Convert a local (possibly relative) pathname into a canonicalized URL.
-# If filename is relative and no $basepath is given, assume it's in the 
-#   current directory.
-# Supports UserDir (e.g. public_html) for "/~username/path/file" URLs.
-# Each path segment is checked to see if it's the same as $DOCUMENT_ROOT,
-#   by comparing inodes.  When a match is found, it's cut off the front,
-#   and an absolute URL is constructed.  If $DOCUMENT_ROOT is never matched,
-#   then $USER_DIR is scanned for.  If that doesn't match (i.e. the file 
-#   is not served to the Web), undef is returned.
-# Note that $DOC_ROOT_DEV and $DOC_ROOT_INODE are set at the start of the
-#   program for efficiency, but are an integral part of this routine.
-# %ALIAS is supported using %UN_ALIAS, as best as possible.  See next note
-#   on avoiding use of this routine.
-# This is currently only used when parsing command-line filenames, and when
-#   an <!--#include file="..." --> includes an <!--#include virtual="..." -->
-#   (which may be an error anyway).  Thus, it can be avoided if needed, such
-#   as when complex aliasing makes results ambiguous.
-# jsm-- should this add/remove @DIRECTORY_INDEX, to avoid some duplication?
-# 3-29-99 JSM:  Changed UNALIAS handling-- if it's unaliased, then no other
-#   conversion is necessary.
-sub filename_to_url {
-    my($path, $basepath)= @_ ;
-    my($URLpath) ;
-    unless ($path=~ m#^/#) {
-        $basepath= $CWD unless length($basepath) ;
-        $basepath.= '/' if -d $basepath && $basepath!~ m#/$# ;
-        $basepath=~ s#/[^/]*$#/# ;
-        $path= "$basepath$path"  ;
-    }
-
-    # canonicalize filename by removing ./ and ../ where appropriate
-    1 while $path=~ s#/\.(/|$)#/# ;
-    1 while $path=~ s#/(?!\.\./)[^/]+/\.\.(/|$)#/# ;
-
-    # canonicalize directory to include final /
-    $path.= '/' if -d $path && $path!~ m#/$# ;
-
-    # First, if path can be unaliased, return that.
-    # (Added 3-29-99 by JSM.)
-    foreach (keys %UN_ALIAS) 
-        { $URLpath= $path, last if $path=~ s/^\Q$_\E/$UN_ALIAS{$_}/ }
-    return "http://\L$LOCAL_HOST\E$URLpath" if $URLpath ne '' ;
-
-    # Then, check if file is under $DOCUMENT_ROOT tree, and convert if so.
-    if ($DOC_ROOT_EXISTS) {
-        my($doc_root)= $path ;
-        while ($doc_root=~ s#/[^/]*$##) {
-            my($dev,$inode)= stat("$doc_root/.") ;
-            if ( ($dev==$DOC_ROOT_DEV) && ($inode==$DOC_ROOT_INODE) ) {
-                $path=~ s/^$doc_root// ;
-#                foreach (keys %UN_ALIAS) 
-#                    { last if $path=~ s/^\Q$_\E/$UN_ALIAS{$_}/ }
-                return "http://\L$LOCAL_HOST\E$path" ;
-            }
-        }
-    }
-
-    # Handle possible case of "~username/$USER_DIR/$path"
-    # I don't think %ALIAS applies here, does it?
-    # This misses some when $HOME/$USER_DIR points through a symbolic link,
-    #   and $CWD isn't set to match %dir_to_user.  Work around by avoiding
-    #   this routine, e.g. using only URLs on command line.
-    if (length($USER_DIR)) {
-        if ($path=~ m#^(.*?)/$USER_DIR(/.*)# ) {
-            # First, see if path is in %dir_to_user
-            &read_home_dirs unless %dir_to_user ;   # only read when needed
-            return "http://\L$LOCAL_HOST\E/~$dir_to_user{$1}$2"
-                if length($dir_to_user{$1}) ;
-
-            # If not, then we must check inodes to equivalate directories
-            &read_inode_to_user unless %inode_to_user ; # only read when needed
-            my($dev,$inode)= stat("$1/.") ;
-            return "http://\L$LOCAL_HOST\E/~$inode_to_user{$dev}{$inode}$2"
-                if length($inode_to_user{$dev}{$inode}) ;
-        }
-    }
-
-    return undef ;
-}
-
-
-
-# Reads all users' home directory into %home_dir, from /etc/passwd.
-# Also creates %dir_to_user, which is faster than %inode_to_user (below).
-# Only used when $USER_DIR is used, for "/~username/path/file" URLs.
-# 2-27-00 JSM:  Changed to use getpwent, instead of reading /etc/passwd.
-sub read_home_dirs {
-    my($user, $homedir) ;
-
-    setpwent ;   # to rewind, in case getpwent has already been used
-    while ( ($user, $homedir)= (getpwent)[0,7] ) {
-        $home_dir{$user}= $homedir ;
-        $dir_to_user{$homedir}= $user
-            unless $dir_to_user{$homedir} ne '' ;
-    }
-    endpwent ;   # clean way to end getpwent processing
-}
-
-
-# Reads home directory inode information into %inode_to_user, from /etc/passwd.
-# Because this is time-consuming, it is only called if needed, and only once.
-# Only used when $USER_DIR is used, for "/~username/path/file" URLs.
-# On SPARCstation-10 with 3000 /etc/passwd records, this takes ~2 seconds.
-# 2-27-00 JSM:  Changed to use already-existing %home_dir, instead of reading
-#   /etc/passwd again.
-sub read_inode_to_user {
-    my($user, $homedir) ;
-    my($dev, $inode) ;
-    &read_home_dirs unless %home_dir ;   # only read when needed
-
-    while ( ($user, $homedir)= each %home_dir ) {
-        ($dev,$inode)= stat("$homedir/.") ;
-        $inode_to_user{$dev}{$inode}= $user 
-            unless $inode_to_user{$dev}{$inode} ne '' ;
-    }
-}
-
-
-
-#----- Extracting URLs from HTML ------------------------------------
-
-
-# Parse an SGML tag, and return a hash structure with a "name" scalar and
-#   an "attrib" hash.
-# Parses first tag in string, ignoring all surrounding text.
-# Results are canonicalized to lower case wherever case-insensitive.
-sub parse_tag {
-    my($tag)= @_ ;       # will be mangled
-    my($tagname,%attrib) ;
-
-    # only parse first tag in string
-    ($tag)= split(/>/, $tag) ;  # remove all after >
-    $tag=~ s/^([^<]*<)?\s*// ;  # remove pre-<, <, and leading blanks
-    ($tagname,$tag)= split(/\s+/, $tag, 2) ;        # split out tag name
-
-    # Extract name/value (possibly quoted), lowercase name, set $attrib{}.
-    # If quoted, is delimited by quotes; if not, delimited by whitespace.
-    $attrib{lc($1)}= &HTMLunescape($+)
-        while ($tag=~ s/\s*(\w+)\s*=\s*(([^"']\S*)|"([^"]*)"?|'([^']*)'?)//) ;
-
-    # now, get remaining non-valued (boolean) attributes
-    $tag=~ s/^\s*|\s*$//g ;             # skip leading/trailing blanks
-    foreach (split(/\s+/, $tag)) {
-        $_= lc($_) ;
-        $attrib{$_}= $_ ;   # booleans have values equal to their name
-    }
-
-    return { 'name'   => lc($tagname), 
-             'attrib' => \%attrib       } ;
-}
-
-
-# Unescape any HTML character references and return resulting string.
-# Support entity character references in %e_to_ch (which is incomplete),
-#   plus "$#ddd;" and "&#xdd;" forms for values<256.
-# Note that not decoding a valid character is erroneous, in that a
-#   subsequent re-escaping will not return the original string, because
-#   of the ampersand.  Nonetheless, that's preferable to losing the data.
-#   Q:  Is there an appropriate general way to represent an unescaped string?
-sub HTMLunescape {
-    my($s)= @_ ;
-
-    # Try alpha, decimal, and hex representations, only substituting if valid
-    $s=~ s/&(([a-zA-Z][a-zA-Z0-9.-]*);?|#([0-9]+);?|#[Xx]([0-9a-fA-F]+);?)/
-              length($2)   ? ( defined($e_to_ch{$2}) ? $e_to_ch{$2}  : "&$1" )
-            : length($3)   ? ( $3 < 256              ? chr($3)       : "&$1" )
-            : length($4)   ? ( hex($4) < 256         ? chr(hex($4))  : "&$1" )
-                           :   "&$1"
-          /ge ;
-
-    return $s ;
-}
-
-
-# Given a block of HTML, extracts all URLs referenced in it, and adds them
-#   to our data structures to be downloaded or checked (i.e. calls 
-#   &add_url()).
-# Note that %html_urls and %non_html_urls are set at the start of the
-#   program for efficiency, but are an integral part of this routine.
-# Currently, this extracts all <.*?> patterns, which may not be valid if
-#   "<" or ">" characters are e.g. inside a <script> element.
-sub extract_urls {
-    my($HTML, $baseurl, $referer, $depth)= @_ ;
-    my(@tags) ;
-
-    # Remove comments before extracting links, as pointed out by Tim Hunter.
-    $HTML=~ s/<!--.*?--.*?>//gs ;
-
-    # We must look for <base> tag before all the work, so we must parse
-    #   all tags first.  :(  Therefore, we save this large array of
-    #   structures for efficiency, hoping we don't run out of memory.
-    my($i)= -1 ;  # to start at array element 0
-
-    foreach ($HTML=~ /(<.*?>)/gs) {
-        $tags[++$i]= &parse_tag($_) ;
-        $baseurl= $tags[$i]{'attrib'}{'href'}
-            if ($tags[$i]{'name'} eq 'base') 
-                and (length($tags[$i]{'attrib'}{'href'})) ;
-    }
-
-    # For each tag, call &add_url() for each URL in the tag
-    foreach my $tag (@tags) {
-        next if $tag->{'name'}=~ m#^/# ;
-
-        # Handle the "regular" tag-attributes, in %html_urls and %non_html_urls
-
-        foreach (@{$html_urls{$tag->{'name'}}}) {
-            &add_url(&absolute_url($tag->{'attrib'}{$_}, $baseurl), 
-                     $referer, $depth) 
-                if length($tag->{'attrib'}{$_}) ;
-        }
-
-        foreach (@{$non_html_urls{$tag->{'name'}}}) {
-            &add_url(&absolute_url($tag->{'attrib'}{$_}, $baseurl), 
-                     $referer, $depth, 0) 
-                if length($tag->{'attrib'}{$_}) ;
-        }
-
-        # Now handle each tag-attribute that needs special attention
-
-        if ($tag->{'name'} eq 'object') {
-            my($codebase)=
-                &absolute_url($tag->{'attrib'}{'codebase'}, $baseurl) ;
-
-            &add_url(&absolute_url($tag->{'attrib'}{'data'}, $codebase),
-                     $referer, $depth)
-                if length($tag->{'attrib'}{'data'}) ;
-
-            # There seems to be a contradiction between the HTML 4.0 spec
-            #   section 13.3.3 and RFC 1808 section 4 step 2b regarding
-            #   the URL resolution of e.g. classid="java:program.start".
-            #   For now, we'll stick with the RFC 1808 method.
-            &add_url(&absolute_url($tag->{'attrib'}{'classid'}, $codebase),
-                     $referer, $depth, 0)
-                if length($tag->{'attrib'}{'classid'}) ;
-
-            # <object> tag's "archive" attribute is a space-separated list
-            foreach (split(/\s+/, $tag->{'attrib'}{'archive'})) {
-                &add_url(&absolute_url($_, $codebase), $referer, $depth, 0) ;
-            }
-
-        } elsif ($tag->{'name'} eq 'head') {
-            # "profile" attribute is a space-separated list
-            foreach (split(/\s+/, $tag->{'attrib'}{'profile'})) {
-                &add_url(&absolute_url($_, $baseurl), $referer, $depth, 0) ;
-            }
-
-        } elsif ($tag->{'name'} eq 'applet') {
-            my($codebase)=
-                &absolute_url($tag->{'attrib'}{'codebase'}, $baseurl) ;
-
-            &add_url(&absolute_url($tag->{'attrib'}{'code'}, $codebase),
-                     $referer, $depth, 0)
-                if length($tag->{'attrib'}{'code'}) ;
-
-            &add_url(&absolute_url($tag->{'attrib'}{'object'}, $codebase),
-                     $referer, $depth, 0)
-                if length($tag->{'attrib'}{'object'}) ;
-
-            # <applet> tag's "archive" attribute is a comma-separated list
-            foreach (split(/\s*,\s*/, $tag->{'attrib'}{'archive'})) {
-                &add_url(&absolute_url($_, $codebase), $referer, $depth, 0) ;
-            }
-
-        # Check form script for existence only, but don't follow hyperlinks.
-        # Handles the unlikely case when a CGI is referred to by both a
-        #   <form action=___.cgi> tag and an <a href=___.cgi> tag: If a CGI
-        #   is only pointed to by <form action>, then don't follow the link
-        #   (i.e. set $url->{'dontfollow'} to verify, not load).  If a CGI
-        #   is called by at least one <a href> tag, then do follow the link.
-        } elsif ($tag->{'name'} eq 'form') {
-            &add_url(&absolute_url($tag->{'attrib'}{'action'}, $baseurl),
-                     $referer, $depth, undef, 1, 1)
-                if length($tag->{'attrib'}{'action'}) ;
-
-        }   # if ($tag->{'name'} eq '...')
-
-
-    }   # foreach $tag (@tags)
-
-}   # &extract_urls()
-
-
-
-#----- output routines ------------------------------------------------
-
-# Generate final report
-sub make_report {
-    if ($verbose_report) { &make_verbose_report }
-    else                 { &make_short_report }
-}
-
-
-
-# Generate a verbose report of all URLs that have been checked
-sub make_verbose_report {
-    my($rootlist)= join("\n    ", @ARGV) ;
-    my($numurls)= scalar keys %url ;
-
-    print <<EOH ;
-======================================================================
-Report of invalid links on $LOCAL_HOST, 
-recursively followed starting with the files/URLs:
-
-    $rootlist
-
-EOH
-
-    if (@INCLUDE_PATTERNS) {
-        my($includelist)= join("\n    ", @INCLUDE_PATTERNS) ;
-        print <<EOH ;
-Only including URLs matching at least one of the following patterns:
-    $includelist
-
-EOH
-    }
-
-    if (@EXCLUDE_PATTERNS) {
-        my($excludelist)= join("\n    ", @EXCLUDE_PATTERNS) ;
-        print <<EOH ;
-Excluding URLs matching any of the following patterns:
-    $excludelist
-
-EOH
-    }
-
-    print "Total URLs checked: $numurls\n\n" ;
-
-    print( "Only reporting response codes beginning with: ", 
-           join(", ", @INCLUDE_STATUS), "\n" )
-        if @INCLUDE_STATUS ;
-
-    print( "Excluding response codes beginning with: ",
-           join(", ", @EXCLUDE_STATUS), "\n" )
-        if @EXCLUDE_STATUS ;
-
-    print "Maximum traversal depth: $max_depth\n" if length($max_depth) ;
-    print "Only local files were checked; no CGI scripts were invoked.\n"
-        if $file_check ;
-    print "Local URLs were read from the filesystem where possible.\n"
-        unless $full_http_check ;
-
-    print "\n" ;
-
-    # Only report status errors if there are any.
-    # Using grep()s is slightly inefficient, but a *lot* cleaner.
-    my($has_statuserrs) ;
-    foreach my $URL (sort keys %url) {
-        next if @INCLUDE_STATUS &&
-                !grep($url{$URL}{'status'}=~ /^$_/, @INCLUDE_STATUS) ;
-        next if grep($url{$URL}{'status'}=~ /^$_/, @EXCLUDE_STATUS) ;
-
-        $has_statuserrs=1, last ;
-    }
-
-
-    if ($has_statuserrs) {
-        print <<EOH ;
-======================================================================
-
-RESULTS FROM ALL URLS WITH SELECTED RESPONSE STATUS CODES
-------------------------------------------------------------
-
-EOH
-
-        foreach (sort keys %url) {
-            my($u)= $url{$_} ;
-
-            next if @INCLUDE_STATUS &&
-                    !grep($u->{'status'}=~ /^$_/, @INCLUDE_STATUS) ;
-            next if grep($u->{'status'}=~ /^$_/, @EXCLUDE_STATUS) ;
-
-            print "$u->{'URL'}\n", '-' x 50, "\n" ;
-            print "Status:   $u->{'status'}\n" ;
-            print "Moved to: $u->{'location'}\n" if $u->{'location'} ;
-            print "Depth:    $u->{'depth'}\n" ;
-
-            for (my($URL)= $u->{'referer'}, my($tab)= '  ' ;
-                 length($url{$URL}) ;
-                 $URL= $url{$URL}{'referer'}, $tab.= '  ' )
-            {
-                print "${tab}referred by $url{$URL}{'URL'}\n" ;
-                die "PROGRAM ERROR: apparent infinite referer loop.\n"
-                    if length($tab)>200 ;      # simple-minded sanity check
-            }
-
-            print "\n\n" ;
-        }  # URL
-
-    }
-
-
-
-    # Only report SSI errors if there are any
-    my($has_ssierrs) ;
-    foreach (sort keys %url) { 
-        $has_ssierrs=1, last if @{$url{$_}{'ssierrs'}} ;
-    }
-
-
-    if ($has_ssierrs) {
-        print <<EOH ;
-======================================================================
-
-PROBLEMS WITH SERVER-SIDE INCLUDE (AKA SHTML) DIRECTIVES
-------------------------------------------------------------
-
-EOH
-        foreach (sort keys %url) {
-            my($u)= $url{$_} ;
-            if (@{$u->{'ssierrs'}}) {
-                print "$u->{'URL'}\n", '-' x 50, "\n" ;
-                printf "Total %s SSI Errors:\n",  $#{$u->{'ssierrs'}}+1 ;
-                foreach my $i (0..$#{$u->{'ssierrs'}}) {
-                    printf "  %s) ", $i+1 ;
-                    my($tab)= ' ' x (4+length($i+1)) ;
-                    my($tab2) ;
-                    foreach my $level (@{$u->{'ssierrs'}[$i]}) {
-                        print "${tab2}file:   $level->{'path'}\n" ;
-                        print "${tab}in tag: $level->{'tag'}\n" ;
-                        print "${tab}error:  $level->{'errmsg'}\n" 
-                            if $level->{'errmsg'} ;
-                        $tab.= '  ' ;
-                        $tab2= $tab ;
-                    }
-                }
-                print "\n\n" ;
-            }
-        }
-    }
-
-
-    unless ($has_statuserrs or $has_ssierrs) {
-        print <<EOH ;
-======================================================================
-
-                    <<     NO ERRORS FOUND     >>
-
-EOH
-    }
-
-    print '=' x 70, "\n" ;
-
-} # &make_verbose_report()
-
-
-# Generate a one-line-per-URL report
-sub make_short_report {
-    my($numurls)= scalar keys %url ;
-
-    print "Total $numurls URLs checked\n" ;
-    URL: foreach my $URL (sort keys %url) {
-        next if @INCLUDE_STATUS &&
-                !grep($url{$URL}{'status'}=~ /^$_/, @INCLUDE_STATUS) ;
-        next if grep($url{$URL}{'status'}=~ /^$_/, @EXCLUDE_STATUS) ;
-
-        print "$url{$URL}{'URL'}\t$url{$URL}{'status'}\n" ;
-    }  # URL
-}
-
-
-
-# Print a summary of usage and exit
-sub usage {
-    print <<EOF ;
-
-Checklinks $CL_VERSION
-
-To recursively check all HTML links on the local site, enter:
-    $0  <options>  [ start-file | start-URL ] ...
-
-Options include:
-  -v                    Generate full (verbose) report, including full
-                          referral information and detailed SSI error
-                          reporting.
-  -I <include-pattern>  Only check URLs matching <include-pattern>.
-  -X <exclude-pattern>  Don't check URLs matching <exclude-pattern>.
-  -i <include-status>   Only report URLs whose response code starts with
-                          the pattern <include-status>.
-  -x <exclude-status>   Don't report URLs whose response code starts with
-                          the pattern <exclude-status>.  Default is to
-                          exclude "200" responses only (i.e. "-x 200").
-  -d <max-depth>        Traverse links no deeper than <max-depth>.
-  -f                    "File mode"-- only read files from the filesystem;
-                          do not go through the HTTP server at all.  This
-                          will skip all URLs that point to CGI scripts.
-  -h                    "HTTP mode"-- use HTTP to check ALL URLs, even
-                          if they could be read from the filesystem.
-                          Incompatible with "-f" option.
-  -c <config-file>      Read appropriate configuration parameters from
-                          <config-file>, typically srm.conf.  Use '-' to
-                          read from STDIN.  If a directory is named, use
-                          "srm.conf" in that directory.
-  -q                    Print current configuration parameters.
-  -?                    Print this help message.
-  --                    End command-line option processing.
-
-Don't stack options like "-vf"; use "-v -f" instead.
-
-For -I, -X, -i, and -x:
-  Values are interpreted as Perl 5 regular expressions.
-  Use multiple options to build a list (e.g. "-I include1 -I include2").
-  Use a value of '' to clear a list (e.g. -x '' means "report all responses",
-    "-x '' -x 401" means "report all but 401 responses").
-  As a special case, an empty -I or -i list implies no include-restrictions.
-  If an item is in both the include and exclude list, it is excluded.
-  Note that -I and -X restrict which URLs are traversed into, so they may
-    prune large areas of your Web structure.
-
-EOF
-    exit ;
-}
-
-
-#----- debugging routines below ---------------------------------------
-
-# Print current configuration settings
-sub print_config {
-    print "\n----- OPTIONS SPECIFIC TO THIS EXECUTION -----------------------------\n\n" ;
-    
-    print "Include only URLs containing one of the following patterns:\n",
-          ( map { "    $_\n" } @INCLUDE_PATTERNS ),
-          "\n"
-        if @INCLUDE_PATTERNS ;
-
-    print "Exclude URLs containing one of the following patterns:\n",
-          (map { "    $_\n" } @EXCLUDE_PATTERNS ),
-          "\n"
-        if @EXCLUDE_PATTERNS ;
-
-    print "Only report response codes beginning with:  ",
-          join(", ", @INCLUDE_STATUS), "\n"
-        if @INCLUDE_STATUS ;
-
-    print "Don't report response codes beginning with: ",
-          join(", ", @EXCLUDE_STATUS), "\n"
-        if @EXCLUDE_STATUS ;
-
-    print "\nMaximum search depth:  $max_depth\n" if length($max_depth) ;
-
-    print <<EOS ;
-
------ INSTALLATION PARAMETERS ----------------------------------------
-    
-Local Host:           $LOCAL_HOST
-Document Root:        $DOCUMENT_ROOT
-User Web Directory:   $USER_DIR
-Default Filename(s):  @DIRECTORY_INDEX
-
-File extensions indicating a CGI program:       @CGI_EXTENSIONS
-File extensions indicating server-parsed HTML:  @SHTML_EXTENSIONS
-
-EOS
-
-    print "Directory Aliases:\n",
-          map { sprintf("    %15s ==> %s\n", $_, $ALIAS{$_}) }
-              sort keys %ALIAS, 
-          "\n"
-        if keys %ALIAS ;
-
-    print "Directory Regular Expression Aliases:\n", 
-          map { sprintf("    %15s ==> %s\n", $_, $ALIAS_MATCH{$_}) }
-              sort keys %ALIAS_MATCH,
-          "\n"
-        if keys %ALIAS_MATCH ;
-
-    print "Script Directory Aliases:\n", 
-          map { sprintf("    %15s ==> %s\n", $_, $SCRIPT_ALIAS{$_}) }
-              sort keys %SCRIPT_ALIAS,
-          "\n"
-        if keys %SCRIPT_ALIAS ;
-
-    print "Script Directory Regular Expression Aliases:\n", 
-          map { sprintf("    %15s ==> %s\n", $_, $SCRIPT_ALIAS_MATCH{$_}) }
-              sort keys %SCRIPT_ALIAS_MATCH,
-          "\n"
-        if keys %SCRIPT_ALIAS_MATCH ;
-
-    if ($ENV{'http_proxy'}) {
-        print "HTTP Proxy:  $ENV{'http_proxy'}\n" ;
-        print "Except to hosts ending in:  $ENV{'no_proxy'}\n" 
-            if $ENV{'no_proxy'} ;
-        print "\n" ;
-    } else {
-        print "Not using any HTTP Proxy.\n" ;
-    }
-
-    print "Maximum HTTP redirections allowed for a URL:  $MAX_REDIRECTS\n",
-          "Maximum number of tries to get a single URL:  $MAX_ATTEMPTS\n\n";
-          
-    print '-' x 70, "\n\n" ;
-
-}
-
-
-
-# print configuration, in a style more for debugging (mostly from srm.conf)
-sub print_debug_config {
-    print <<EOF ;
-DOCUMENT_ROOT=    [$DOCUMENT_ROOT]
-USER_DIR=         [$USER_DIR]
-DIRECTORY_INDEX=  [@DIRECTORY_INDEX]
-
-CGI_EXTENSIONS=   [@CGI_EXTENSIONS]
-SHTML_EXTENSIONS= [@SHTML_EXTENSIONS]
-
-EOF
-
-    foreach (sort keys %ALIAS) 
-        { print "ALIAS{$_}= [$ALIAS{$_}]\n" }
-    foreach (sort keys %ALIAS_MATCH) 
-        { print "ALIAS_MATCH{$_}= [$ALIAS_MATCH{$_}]\n" }
-    foreach (sort keys %SCRIPT_ALIAS) 
-        { print "SCRIPT_ALIAS{$_}= [$SCRIPT_ALIAS{$_}]\n" }
-    foreach (sort keys %SCRIPT_ALIAS_MATCH) 
-        { print "SCRIPT_ALIAS_MATCH{$_}= [$SCRIPT_ALIAS_MATCH{$_}]\n" }
-
-}
-
-
-#----------------------------------------------------------------------
-#
-#   SPARSE DOCUMENTATION ON PROGRAM INTERNALS:
-#
-#----------------------------------------------------------------------
-#
-#   URLs are read directly from the local filesystem if possible, or
-#   downloaded or checked with HTTP GET and HEAD methods if not.  CGI
-#   scripts are called through the HTTP server, even if local (since the
-#   resource their URLs refer to are not files).
-#
-#
-#   Global variables:
-#
-#     %url holds all data regarding all URLs, using the text URL as the key:
-#
-#     %url{$URL}{qw( URL filename referer depth
-#                    ishtml iscgi islocal dontfollow
-#                    status location numredirects numtries lasttried
-#                    ssierrs
-#                    hasbeenloaded)}  <== only for testing
-#         URL is same as hash key
-#         ishtml means is type text/html; links MAY be extracted.  (Used in
-#           main loop.)
-#         iscgi means is a CGI script; MUST NOT be read directly from 
-#           filesystem. (Used in verify_url() and load_url().)
-#         islocal means served by local server:
-#             a) MAY be read directly from filesystem
-#             b) links MAY be extracted
-#         dontfollow means links MUST NOT be extracted.
-#         status begins with a number, but may have text afterward.
-#
-#         islocal= (URL=~ m#^http://$LOCAL_HOST/#i) , i.e. redundant.
-#         ishtml and iscgi are guesses, may be 0, 1, or '' for unset.
-#         iscgi only matters for local URLs, but may safely be set for 
-#           remote URLs.
-#         dontfollow is a hack to handle an obscure CGI-related situation.
-#
-#     In addition to the standard HTTP status codes, 'status' may take one
-#     of the following values:
-#         450 Can't read file: $!
-#         451 SSI Error(s) (__ total)
-#         600 Can't create socket: $@
-#         601 Connection timed out
-#         602 Incomplete response (%s of %s bytes)
-#         603 Incomplete chunked response
-#
-#     Handling of 602 and 603 is somewhat hackish-- overwrites real status
-#       line with artificial one.
-#
-#     $url->{'ssierrs'} is a list of errors relating to SSI includes.
-#       Each error has a list of filenames representing the include
-#       chain.  Each element in the chain stores the absolute
-#       pathname, the <!--#include--> tag which called it, and
-#       possibly an error message (usually only on the last file in
-#       the include-chain).  Thus, the entire structure is
-#
-#         $url->{'ssierrs'}[$errid][$levelsdeep]{qw( path tag errmsg )}
-#
-#       This is only a memory hog with many errors of deeply nested files.
-#
-#
-#     @urlstoget: canonicalized list of URLs left to get, in order
-#         of appearance.  List elements are pointers to %url elements.
-#         This array may grow from &extract_urls(), or be rearranged when
-#         a URL needs to be retried.
-#
-#   Note that $url is normally a pointer, and $URL is normally a string.
-#
-#   Files/paths are canonicalized by removing unneeded "./" and "../"
-#     segments.
-#   Directories are canonicalized to always end in "/", including in URLs;
-#     note that some system variables and local directory variables aren't so.
-#   URLs that point to "/" end in "/", e.g. "http://www.foo.com/".
-#
-#
-#   This program has a lot of unused functionality for possible extension,
-#   so don't get confused by routines that do more than they are used for.
-#
-#----------------------------------------------------------------------
-#
-# To do:
-#
-#   * If you want a different output format (like in HTML), it should 
-#       be easy enough to add.
-#   * This could be extended to check remote sites without much trouble.
-#   * Should probably support directories that don't have index.html.
-#   * Check that pointed-to fragments exist in target files
-#   * keep track of servers and don't hit them too often
-#   * support robots.txt
-#   * add option to read list of URLs from file
-#   * support HTTP Basic Authentication somehow.  Note that currently, this
-#       reads local files even when they should be protected by .htaccess
-#       (unless using -h option).
-#   * Read list of local host names from gethostbyname() ?
-#   * check read permissions on files?
-#   * In the event multiple URLs redirect to the same URL, this could be a
-#       little more efficient if it saved the redirected loads/downloads.
-#
-#----------------------------------------------------------------------
--- a/Admin/website/build/img.memo.txt	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-mogrify -interlace line -strip -trim screenshot_isabelle_macos.gif
-convert -interlace line -scale x55 univ_tum_proto.gif univ_tum.gif
-convert -interlace line -scale x55 univ_cambridge_proto.gif univ_cambridge.gif
-convert -interlace line -scale x100 isabelle.gif isabelle_logo.gif
-convert -interlace line -scale '16x16!' isabelle.gif favicon.gif
-convert -interlace line -scale x125 tutorial_cover_big.gif tutorial_cover_small.gif
-convert -interlace line -scale 250x isabelle_pg_screenshot_big.png isabelle_pg_screenshot_small.png
--- a/Admin/website/build/localconf.at.template.mak	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-# isaweb configuration
-# $Id$
-
-# build target (attention: ~ will not work!)
-OUTPUTROOT=$(HOME)/isabelle/website_test
-#~ OUTPUTROOT=/home/proj/isabelle/website
-
-# location of isabelle distribution packages
-ISABELLE_DIST=$(DISTBASE)
-
-# location of doc content file
-ISABELLE_DOC_CONTENT_FILE=$(DISTBASE)/$(DISTNAME)/doc/Contents
-
-# umask/group for target files
-TARGET_UMASK_FILE=u=rw,g=rw,o=r
-TARGET_UMASK_DIR=u=rwx,g=rwx,o=rx,g+s
-TARGET_GROUP=isabelle
-LOCAL_UMASK_FILE=u=rw,g=rw,o=r
-LOCAL_UMASK_DIR=u=rwx,g=rwx,o=rx,g+s
-LOCAL_GROUP=isabelle
-
-# python interpreter (>= 2.3)
-PYTHON=python
-
-# GNU find
-FIND=find
-
-# GNU copy
-COPY=cp
-
-# HTML tidy (needs not to be set if tidy usage is disabled, see below)
-TIDY=tidy
-
-# rsync (if not set, use dumb cp instead)
-RSYNC=rsync
-
-# set to a true value to use the "pypager iso-8859-1" hack
-# (may be neccessary for older versions of HTML tidy)
-FORCE_ISO_8859_1=
-
-# set to a true value to disable html tidy postprocessing
-DISABLE_TIDY=
--- a/Admin/website/build/localconf.sun.template.mak	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-# isaweb configuration
-# $Id$
-
-# build target (attention: ~ will not work!)
-OUTPUTROOT=$(HOME)/isabelle/website_test
-#~ OUTPUTROOT=/home/proj/isabelle/website
-
-# location of isabelle distribution packages
-ISABELLE_DIST=$(DISTBASE)
-
-# location of doc content file
-ISABELLE_DOC_CONTENT_FILE=$(DISTBASE)/$(DISTNAME)/doc/Contents
-
-# umask/group for target files
-TARGET_UMASK_FILE=u=rw,g=rw,o=r
-TARGET_UMASK_DIR=u=rwx,g=rwx,o=rx,g+s
-TARGET_GROUP=isabelle
-LOCAL_UMASK_FILE=u=rw,g=rw,o=r
-LOCAL_UMASK_DIR=u=rwx,g=rwx,o=rx,g+s
-LOCAL_GROUP=isabelle
-
-# python interpreter (>= 2.3)
-PYTHON=python2.3
-
-# GNU find
-FIND=gfind
-
-# GNU copy
-COPY=gcp
-
-# HTML tidy (needs not to be set if tidy usage is disabled, see below)
-TIDY=tidy
-
-# rsync (if not set, use dumb cp instead)
-RSYNC=rsync
-
-# set to a true value to use the "pypager iso-8859-1" hack
-# (may be neccessary for older versions of HTML tidy)
-FORCE_ISO_8859_1=
-
-# set to a true value to disable html tidy postprocessing
-DISABLE_TIDY=
--- a/Admin/website/build/main.mak	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-# isaweb makefile
-# $Id$
-
-# force shell
-SHELL=bash
-
-# some global variables
-CONF=conf/localconf.mak
-
-# configuration switch
-ifeq ($(phase), init)
-
-# allocate configuration
-init:
-	mkdir -p conf
-	case $$HOSTNAME in sunbroy*) ARCH=sun;; *) ARCH=at;; esac; \
-	sed 's/# $$Id.*//g' build/localconf.$$ARCH.template.mak > $(CONF)
-	$$EDITOR $(CONF)
-	@false
-.PHONY: init
-
-else
-
-# default target
-default: project
-
-# check configuration
-include $(CONF)
-$(CONF):
-	@if [ ! -e $(CONF) ]; \
-	then \
-		echo 'Framework not configured yet; set EDITOR environment variable'; \
-		echo 'to your favorite editor and type'; \
-		echo; \
-		echo '    make phase=init'; \
-		echo; \
-		echo 'to configure it'; \
-		false; \
-	else \
-		:; \
-	fi
-
-# tidy handling
-ifeq ($(DISABLE_TIDY),)
-TIDYCMD=$(TIDY) -q -i -asxhtml --output-xhtml true \
-                --doctype auto \
-                --literal-attributes true \
-                --wrap 0 \
-                --indent auto --indent-spaces 2 \
-                --input-encoding utf8 --output-encoding latin1 \
-                --logical-emphasis yes --gnu-emacs yes --write-back yes
-else
-TIDYCMD=:
-endif
-
-# dependencies
-DEP_FILE=conf/depends.mak
-site: $(DEP_FILE) allsite
-.PHONY: site
-
-# import dependencies
-include $(DEP_FILE)
-endif
-
-# pypager iso-8859-1 hack
-ifneq ($(FORCE_ISO_8859_1),)
-FORCE_ENC_CMD=--encodinghtml "iso-8859-1"
-else
-FORCE_ENC_CMD=
-endif
-
-# import project-specific dependencies
-include build/project.mak
-
-# build dependencies
-$(DEP_FILE): $(CONF)
-	build/make_dep.bash "$(FIND)" "$(OUTPUTROOT)" "$(DEP_FILE)" "$(STATICDIRS)" "$(STATICFILES)"
-
-# build dependencies explicitly
-depends:
-	rm -f $(DEP_FILE)
-	$(MAKE) $(DEP_FILE)
-.PHONY: depends
-
-# clean build files
-clean:
-	rm -f $(DEP_FILE)
-.PHONY: clean
--- a/Admin/website/build/make_dep.bash	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-#!/usr/bin/env bash
-# $Id$
-
-# build make dependency file
-
-# parameters
-FIND="$1"
-OUTPUTROOT="$2"
-DEP_FILE="$3"
-STATICDIRS="$4"
-STATICFILES="$5"
-
-rm -f "$DEP_FILE"
-touch "$DEP_FILE"
-echo '# This is a generated file; do not edit' >> "$DEP_FILE"
-echo >> "$DEP_FILE"
-allstatic=''
-for dir in $STATICDIRS
-do
-    for file in $("$FIND" "$dir" -follow -type f -a ! -path "*/CVS/*" -a ! -path "*/.svn/*")
-    do
-        outputfile="\$(OUTPUTROOT)/$file"
-        echo "$outputfile: $file" >> "$DEP_FILE"
-        echo '	mkdir -p $(dir $@)' >> "$DEP_FILE"
-        echo '	-chmod $(TARGET_UMASK_DIR) $(dir $@)' >> "$DEP_FILE"
-        echo '	-chgrp $(TARGET_GROUP) $(dir $@)' >> "$DEP_FILE"
-        echo '	-[ -e $@ ] && rm $@' >> "$DEP_FILE"
-        echo '	cp $< $@' >> "$DEP_FILE"
-        echo '	chmod $(TARGET_UMASK_FILE) $@' >> "$DEP_FILE"
-        echo '	chgrp $(TARGET_GROUP) $@' >> "$DEP_FILE"
-        allstatic="$allstatic$outputfile "
-        echo >> "$DEP_FILE"
-    done
-done
-echo "DEP_ALLSTATIC=$allstatic" >> "$DEP_FILE"
-echo >> "$DEP_FILE"
-echo 'DEP_HTML=$(DEP_ALLSTATIC) $(STATICFILES) $(DEP_FILE) $(CONF)' >> "$DEP_FILE"
-echo >> "$DEP_FILE"
-allhtml=''
-for html in $("$FIND" . -name "*.html" -a ! -name "*.include.html")
-do
-    outputfile="\$(OUTPUTROOT)/$html"
-    echo "$outputfile: $html \$(DEP_HTML)" >> "$DEP_FILE"
-    echo '	mkdir -p $(dir $@)' >> "$DEP_FILE"
-    echo '	-chmod $(TARGET_UMASK_DIR) $(dir $@)' >> "$DEP_FILE"
-    echo '	-chgrp $(TARGET_GROUP) $(dir $@)' >> "$DEP_FILE"
-    echo '	-[ -e $@ ] && rm $@' >> "$DEP_FILE"
-    echo '	$(PYTHON) build/pypager.py --dtd="dtd/" $(FORCE_ENC_CMD) --srcroot="." --dstroot="$(OUTPUTROOT)" distname="$(DISTNAME)" $< $@' >> "$DEP_FILE"
-    echo '	chmod $(TARGET_UMASK_FILE) $@' >> "$DEP_FILE"
-    echo '	chgrp $(TARGET_GROUP) $@' >> "$DEP_FILE"
-    echo '	$(PYTHON) build/obfusmail.py --dtd="dtd/" $@' >> "$DEP_FILE"
-    echo '	-$(TIDYCMD) $@' >> "$DEP_FILE"
-    allhtml="$allhtml$outputfile "
-    echo >> "$DEP_FILE"
-done
-echo "DEP_ALLHTML=$allhtml" >> "$DEP_FILE"
-echo >> "$DEP_FILE"
-echo 'allsite: $(DEP_ALLHTML) $(DEP_ALLSTATIC)' >> "$DEP_FILE"
-echo ".PHONY: allsite" >> "$DEP_FILE"
--- a/Admin/website/build/mkcontents.pl	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-#!/usr/bin/perl
-
-# mkcontents.pl
-#
-#   $Id$
-#
-#   simple script to create a html version of the Contents file in the
-#   Isabelle documentation directory.
-#
-#   Nov/14/1999 Version 1.0  -  Gerwin Klein <kleing@in.tum.de>
-#
-#   command line:
-#   mkcontent.pl [-p <url-path-prefix>] <Content-file> <output-file>
-#
-
-
-use Getopt::Long ;
-
-$opt_p="";
-$result = GetOptions ("p=s");
-
-$path=$opt_p;
-
-$infile  = $ARGV[0];
-$outfile = $ARGV[1];
-
-$listHeader = "<ul>\n";
-$lineHeader = "  <li>";
-$lineEnd    = "</li>\n";
-$listFooter = "</ul>\n";
-
-$topicStart = "<h3>";
-$topicEnd   = "</h3>\n";
-
-open(IN, "<$infile") || die "cannot read input file <$infile>";
-open(OUT, ">$outfile") || die "cannot write output file <$outfile>";
-
-$first = 1;
-
-print OUT '<?xml version="1.0" encoding="iso-8859-1" ?>' . "\n";
-print OUT '<dummy:wrapper xmlns:dummy="http://nowhere.no">' . "\n";
-
-while (<IN>) {
-  if (/^([^ \t].*)\n/) {
-    if ($first == 1) {
-      $first = 0;
-    }
-    else {
-      print OUT $listFooter;
-    }
-    print OUT $topicStart;
-    print OUT $1;
-    print OUT $topicEnd;
-    print OUT $listHeader;
-  }
-  elsif (/^[ \t]+([^ \t]+)[ \t]+(.+)\n/) {
-    print OUT $lineHeader;
-    print OUT "<a target='_blank' href='$path$1.pdf'>$2</a>";
-    print OUT $lineEnd;
-  }
-}
-
-print OUT $listFooter;
-
-print OUT '</dummy:wrapper>' . "\n";
-
-close(OUT);
-close(IN);
-
-exit(0);
--- a/Admin/website/build/obfusmail.py	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,201 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: Latin-1 -*-
-
-"""
-    Obfucatings mail adresses
-"""
-
-__author__ = 'Florian Haftmann, florian.haftmann@informatik.tu-muenchen.de'
-__revision__ = '$Id$'
-
-import sys
-import os
-from os import path
-import posixpath
-import optparse
-from cStringIO import StringIO
-
-from xml.sax.saxutils import escape
-from xml.sax.saxutils import quoteattr
-
-from xhtmlparse import TransformerHandler, parseWithER
-
-# global configuration
-outputEncoding = 'UTF-8'
-
-def split_mail(mail):
-
-    mail_arg = mail.split("?", 2)
-    if len(mail_arg) == 2:
-        mail, arg = mail_arg
-    else:
-        mail = mail_arg[0]
-        arg = None
-    name, host = mail.split("@", 2) 
-
-    return ((name, host), arg)
-
-class FindHandler(TransformerHandler):
-
-    class DevZero(object):
-
-        def write(self, s):
-
-            pass
-
-    def __init__(self, dtd, mails, enc):
-
-        super(FindHandler, self).__init__(self.DevZero(), 'UTF-8', dtd)
-        self.mails = mails
-        self.enc = enc
-        self.pending_mail = None
-
-    def startElement(self, name, attrs):
-
-        if name == u'a':
-            href = attrs.get(u'href', u'')
-            if href.startswith(u'mailto:'):
-                self.pending_mail = href[7:]
-        super(FindHandler, self).startElement(name, attrs)
-        if name == u'meta' and attrs.get(u'http-equiv', u'').lower() == u'content-type':
-            content = attrs.get(u'content', u'')
-            if content.startswith(u'text/html; charset='):
-                self.enc = content[19:]
-
-    def endElement(self, name):
-
-        if name == u'a':
-            if self.pending_mail is not None:
-                baremail = "%s@%s" % split_mail(self.pending_mail)[0]
-                if self.currentContent() != baremail:
-                    raise Exception("Inconsistent mail address: '%s' vs. '%s'" % (self.currentContent(), baremail))
-                self.mails[self.pending_mail] = True
-                self.pending_mail = None
-        super(FindHandler, self).endElement(name)
-
-    def processingInstruction(self, target, data):
-
-        pass
-
-class ReplaceHandler(TransformerHandler):
-
-    def __init__(self, out, dtd, encoding, mails):
-
-        super(ReplaceHandler, self).__init__(out, encoding, dtd)
-        self.pending_mail = None
-        self.mails = mails
-
-    def startElement(self, name, attrs):
-
-        if name == u'a':
-            href = attrs.get(u'href', u'')
-            if href.startswith(u'mailto:'):
-                self.pending_mail = href[7:]
-                return
-
-        super(ReplaceHandler, self).startElement(name, attrs)
-
-    def endElement(self, name):
-
-        if name == u'a':
-            if self.pending_mail is not None:
-                self.flushCharacterBuffer()
-                self._lastStart = False
-                self._out.write(self.mails[self.pending_mail])
-                self.pending_mail = None
-                return
-
-        super(ReplaceHandler, self).endElement(name)
-
-    def characters(self, content):
-
-        if self.pending_mail is None:
-            super(ReplaceHandler, self).characters(content)
-
-    def processingInstruction(self, target, data):
-
-        pass
-
-def obfuscate(mailaddr, htmlfile):
-
-    def mk_line(s):
-        return u"document.write('%s');" % s.replace("'", "\\'")
-    def mk_script(s):
-        return u'<script type="text/javascript">/*<![CDATA[*/%s/*]]>*/</script>' % s
-    def cmd(s):
-        print "[shell cmd] %s" % s
-        n = os.system(s)
-        if n != 0:
-            raise Exception("shell cmd error: %s" % n)
-
-    ((name, host), arg) = split_mail(mailaddr)
-    baremail = "%s@%s" % (name, host)
-    imgname = (name + "_" + host).replace(".", "_") + ".png"
-    imgfile = path.join(path.split(htmlfile)[0], imgname)
-    mod = os.stat(htmlfile).st_mode
-    gid = os.stat(htmlfile).st_gid
-    cmd("convert label:'%s' '%s'" % (baremail, imgfile))
-    try:
-        os.chmod(imgfile, mod)
-    except OSError:
-        pass
-    try:
-        os.chown(imgfile, -1, gid)
-    except OSError:
-        pass
-    if arg is not None:
-        mailsimple = u"{%s} AT [%s] WITH (%s)" % (name, host, arg)
-        mailscript = u" ".join(map(mk_line, ['<a href="', "mailto:", name, "@", host, "?", arg, '">']));
-    else:
-        mailsimple = u"{%s} AT [%s]" % (name, host)
-        mailscript = u" ".join(map(mk_line, ['<a href="', "mailto:", name, "@", host, '">']));
-    mailimg = '<img src=%s style="vertical-align:middle" alt=%s />' % (quoteattr(imgname), quoteattr(mailsimple))
-
-    result = (mk_script(mailscript) + mailimg + mk_script(mk_line("</a>")))
-    return result
-
-def main():
-
-    # parse command line
-    cmdlineparser = optparse.OptionParser(
-        usage = '%prog [options] htmlfile',
-        conflict_handler = "error",
-        description = '''Protecting mail adresses in html files by obfuscating''',
-        add_help_option = True,
-    )
-    cmdlineparser.add_option("-t", "--dtd",
-        action="store", dest="dtd",
-        type="string", default=".",
-        help="local mirror of XHTML DTDs", metavar='location')
-
-    options, (filename,) = cmdlineparser.parse_args(sys.argv[1:])
-
-    # find mails
-    mails = {}
-    enc = outputEncoding
-    istream = open(filename, 'r')
-    findhandler = FindHandler(options.dtd, mails, enc)
-    parseWithER(istream, findhandler)
-    enc = findhandler.enc
-    istream.close()
-
-    if mails:
-        # transform mails
-        mails_subst = {}
-        for mail in mails.iterkeys():
-            mails_subst[mail] = obfuscate(mail, filename)
-
-        # transform pages
-        istream = StringIO(open(filename, 'r').read())
-        ostream = open(filename, 'wb')
-        print "writing %s with %s" % (filename, enc)
-        replacehandler = ReplaceHandler(ostream, options.dtd, enc, mails_subst)
-        parseWithER(istream, replacehandler)
-        ostream.close()
-        istream.close()
-
-if __name__ == '__main__':
-    main()
-
-__todo__ = '''
-'''
--- a/Admin/website/build/project.mak	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-# isaweb makefile - project-specific dependencies
-# $Id$
-
-include conf/distinfo.mak
-conf/distinfo.mak:
-	@echo 'There is no $@ file; it should have been allocated by makedist.'; \
-	@echo 'If you have no makedist at hand, check out default $@ from CVS'; \
-	@false; \
-
-STATICDIRS=css img media misc js
-STATICFILES=include/documentationdist.include.html
-OUTPUTDIST_REL=dist-$(DISTNAME)
-OUTPUTDIST=$(OUTPUTROOT)/$(OUTPUTDIST_REL)
-
-project: $(OUTPUTDIST) site
-.PHONY: project
-
-cleanproject:
-	rm -rf $(OUTPUTDIST)
-.PHONY: cleanproject
-
-ifeq ($(RSYNC),)
-
-$(OUTPUTDIST): $(ISABELLE_DIST)
-	mkdir -p $@
-	$(COPY) -vRud $</[^w]* $@
-	-chgrp -hR $(TARGET_GROUP) $@
-	-chmod -R u+w,g-w,o-w $@
-	( cd $@ && rm -f Isabelle && ln -s $(DISTNAME) Isabelle )
-	-chgrp -h $(TARGET_GROUP) $@/Isabelle
-	-chmod u+w,g-w,o-w $@/Isabelle
-	( cd $(OUTPUTROOT) && rm -f dist && ln -s $(OUTPUTDIST_REL) dist )
-
-else
-
-$(OUTPUTDIST): $(ISABELLE_DIST) SYNC_ALWAYS
-	mkdir -p $@
-	$(RSYNC) -v --exclude='/website/' -rlt --delete --delete-after $</ $@
-	-chgrp -hR $(TARGET_GROUP) $@
-	-chmod -R u+w,g-w,o-w $@
-	( cd $@ && rm -f Isabelle && ln -s $(DISTNAME) Isabelle )
-	-chgrp -h $(TARGET_GROUP) $@/Isabelle
-	-chmod u+w,g-w,o-w $@/Isabelle
-	( cd $(OUTPUTROOT) && rm -f dist && ln -s $(OUTPUTDIST_REL) dist )
-
-SYNC_ALWAYS:
-
-endif
-
-include/documentationdist.include.html: $(ISABELLE_DOC_CONTENT_FILE)
-	perl build/mkcontents.pl -p '//dist/Isabelle/doc/' $< $@
-
-perms:
-	build/set_perm.bash $(FIND) $(LOCAL_UMASK_FILE) $(LOCAL_UMASK_DIR) $(LOCAL_GROUP)
-.PHONY: perms
\ No newline at end of file
--- a/Admin/website/build/pypager.py	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,389 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: Latin-1 -*-
-
-"""
-    (on available processing instructions, see the Functions class)
-"""
-
-__author__ = 'Florian Haftmann, florian.haftmann@informatik.tu-muenchen.de'
-__revision__ = '$Id$'
-
-# generic imports
-import sys
-import os
-from os import path
-import posixpath
-import shlex
-import optparse
-import time
-
-# xhtml parsing
-from xhtmlparse import TransformerHandler, parseWithER
-
-nbsp = unichr(160)
-
-# global configuration
-outputEncoding = 'UTF-8'
-
-# implement your own functions for PIs here
-class Functions(object):
-
-    def __init__(self, pc, valdict, modtime, encodingMeta):
-
-        self._pc = pc
-        self._valdict = valdict
-        self._modtime = modtime
-        self._encodingMeta = encodingMeta
-
-    def value(self, handler, key):
-
-        """<?value key="..."?> - inserts a property value given on the command line"""
-
-        value = self._valdict[key]
-        handler.characters(value)
-
-    def title(self, handler):
-
-        """<?title?> - inserts the document's title as glimpsed from the <title> tag"""
-
-        handler.characters(handler._title)
-
-    def contentType(self, handler):
-
-        """<?contentType?> - inserts the document's content type/encoding"""
-
-        encoding = self._encodingMeta or handler._encoding
-        attr = {
-            u"http-equiv": u"Content-Type",
-            u"content": u"text/html; charset=%s" % encoding
-        }
-        handler.startElement(u"meta", attr)
-        handler.endElement(u"meta")
-
-    def currentDate(self, handler):
-
-        """<?currentDate?> - inserts the current date"""
-
-        handler.characters(unicode(time.strftime('%Y-%m-%d %H:%M:%S')))
-
-    def modificationDate(self, handler):
-
-        """<?modificationDate?> - inserts the modification date of this file"""
-
-        handler.characters(unicode(time.strftime('%Y-%m-%d %H:%M:%S',
-            time.localtime(self._modtime))))
-
-    def relativeRoot(self, handler, href):
-
-        """<?relativeRoot href="..."?> - inserts the relative path specified by href"""
-
-        handler.characters(self._pc.relDstPathOf('//'+href.encode("latin-1")))
-
-    def include(self, handler, file):
-
-        """<?include file="..."?> - includes an XML file"""
-
-        filename = self._pc.absSrcPathOf(file.encode("latin-1"))
-        self._modtime = max(self._modtime, os.stat(filename).st_mtime)
-        istream = open(filename, "r")
-        parseWithER(istream, handler)
-        istream.close()
-
-    def navitem(self, handler, target, title):
-
-        """<?navitem target="..." title="..."?> - inserts an item in a navigation list,
-            targeting to <target> and entitled <title>"""
-
-        target = self._pc.relDstPathOf(target.encode("latin-1"))
-        if self._pc.isSrc(target):
-            wrapTagname = u"strong"
-        else:
-            wrapTagname = u"span"
-        attr = {}
-        handler.startElement(u"li", attr)
-        handler.startElement(wrapTagname, {})
-        handler.startElement(u"a", {
-            u"href": unicode(target, 'latin-1')
-        })
-        handler.characters(title)
-        handler.endElement(u"a")
-        handler.endElement(wrapTagname)
-        handler.endElement(u"li")
-
-    def downloadLink(self, handler, target, title = None):
-
-        """<?downloadLink target="..." [title="..."]?> - inserts a link to a file
-           to download; if the title is omitted, it is the bare filename itself"""
-
-        targetReal = self._pc.absDstPathOf(target.encode("latin-1"))
-        if not title:
-            title = unicode(posixpath.split(targetReal)[1], 'latin-1')
-        size = os.stat(targetReal).st_size
-        handler.startElement(u"a", {
-            u"href": target
-        })
-        handler.characters(title)
-        handler.endElement(u"a")
-
-    def downloadCells(self, handler, target, title = None):
-
-        """<?downloadCells target="..." [title="..."]?> - like downloadLink, but
-           puts the link into a table cell and appends a table cell displaying the
-           size of the linked file"""
-
-        targetReal = self._pc.absDstPathOf(target.encode("latin-1"))
-        if not title:
-            title = unicode(posixpath.split(targetReal)[1], 'latin-1')
-        size = os.stat(targetReal).st_size
-        handler.startElement(u"td", {})
-        handler.startElement(u"a", {
-            u"href": target
-        })
-        handler.characters(title)
-        handler.endElement(u"a")
-        handler.endElement(u"td")
-        handler.startElement(u"td", {})
-        handler.characters(u"%.1f%sMB" % (size / (1024.0 * 1024), unichr(160)))
-        handler.endElement(u"td")
-
-    def mirror(self, handler, prefix, title, stripprefix = u""):
-
-        """<?mirror prefix="..." title="..." [stripprefix="..."] ?> - generates a mirror switch link,
-           where prefix denotes the base root url of the mirror location
-           and title the visible description"""
-
-        title = title.replace(u" ", unichr(160))
-        thisloc = self._pc.relLocOfThis()
-        if thisloc.startswith(stripprefix):
-            thisloc = thisloc[len(stripprefix):]
-        else:
-            raise Exception("Incompatible mirror (prefix to strip not found): %s" % title.encode("latin-1"))
-        handler.startElement(u"a", {u"href": posixpath.join(prefix, thisloc)})
-        handler.characters(title)
-        handler.endElement(u"a")
-
-    def getPc(self):
-
-        return self._pc
-
-# a notion of paths
-class PathCalculator:
-
-    def __init__(self, srcLoc, srcRoot, dstRoot):
-
-        self._src = path.normpath(path.abspath(srcLoc))
-        srcPath, self._srcName = path.split(self._src)
-        self._srcRoot = path.normpath(path.abspath(srcRoot))
-        self._dstRoot = path.normpath(path.abspath(dstRoot))
-        self._relRoot = ""
-        relLocChain = []
-        diffRoot = srcPath
-        while diffRoot != self._srcRoot:
-            self._relRoot = path.join(self._relRoot, os.pardir)
-            diffRoot, chainPiece = path.split(diffRoot)
-            relLocChain.insert(0, chainPiece)
-        self._relRoot = self._relRoot and self._relRoot + '/'
-        self._relLoc = relLocChain and path.join(*relLocChain) or ""
-
-    def isSrc(self, loc):
-
-        return self.absSrcPathOf(loc) == self._src
-
-    def relRootPath(self):
-
-        return self._relRoot
-
-    def absSrcPathOf(self, loc):
-
-        if loc.startswith("//"):
-            return path.normpath(path.abspath(loc[2:]))
-        else:
-            return path.normpath(path.abspath(path.join(self._relLoc, loc)))
-
-    def absDstPathOf(self, loc):
-
-        if loc.startswith("//"):
-            return path.join(self._dstRoot, loc[2:])
-        elif loc.startswith("http:") or loc.startswith("https:"):
-            return loc
-        else:
-            return path.join(self._dstRoot, self._relLoc, loc)
-
-    def relSrcPathOf(self, loc):
-
-        loc = self.absSrcPathOf(loc)
-        loc = self.stripCommonPrefix(loc, self._srcRoot)
-        loc = self.stripCommonPrefix(loc, self._relLoc)
-        return loc
-
-    def relDstPathOf(self, loc):
-
-        if loc.startswith("http:") or loc.startswith("https:"):
-            return loc
-        else:
-            loc = self.absDstPathOf(loc)
-            loc = self.stripCommonPrefix(loc, self._dstRoot)
-            loc = posixpath.join(self._relRoot, loc)
-            return loc
-
-    def relLocOfThis(self):
-
-        return posixpath.join(self._relLoc, self._srcName)
-
-    def stripCommonPrefix(self, loc, prefix):
-
-        common = self.commonPrefix((loc, prefix))
-        if common:
-            loc = loc[len(common):]
-            if loc and loc[0] == '/':
-                loc = loc[1:]
-        return loc
-
-    def commonPrefix(self, locs):
-
-        common = path.commonprefix(locs)
-        # commonprefix bugs
-        if [ loc for loc in locs if len(loc) != common ] and \
-            [ loc for loc in locs if len(common) < len(loc) and loc[len(common)] != path.sep ]:
-                common = path.split(common)[0]
-        if common and common[-1] == path.sep:
-            common = common[:-1]
-
-        return common or ""
-
-class FunctionsHandler(TransformerHandler):
-
-    def __init__(self, out, encoding, dtd, func):
-
-        super(FunctionsHandler, self).__init__(out, encoding, dtd)
-        self._func = func
-        self._title = None
-
-    def transformAbsPath(self, attrs, attrname):
-
-        pathval = attrs.get(attrname, None)
-        if pathval and pathval.startswith(u"//"):
-            attrs = dict(attrs)
-            pathRel = self._func.getPc().relDstPathOf(pathval)
-            pathDst = self._func.getPc().absDstPathOf(pathval)
-            if not path.exists(pathDst):
-                raise Exception("Path does not exist: %s" % pathDst)
-            attrs[attrname] = pathRel
-            return attrs
-        else:
-            return attrs
-
-    def startElement(self, name, attrs):
-
-        if name == u"dummy:wrapper":
-            return
-        # this list is not exhaustive
-        for tagname, attrname in ((u"a", u"href"), (u"img", u"src"), (u"link", u"href"), (u"script", u"src")):
-            if name == tagname:
-                attrs = self.transformAbsPath(attrs, attrname)
-        super(FunctionsHandler, self).startElement(name, attrs)
-
-    def endElement(self, name):
-
-        if name == u"dummy:wrapper":
-            return
-        elif name == u'title':
-            self._title = u"".join(self._characterBuffer)
-        super(FunctionsHandler, self).endElement(name)
-
-    def processingInstruction(self, target, data):
-
-        self.closeLastStart()
-        self.flushCharacterBuffer()
-        func = getattr(self._func, target)
-        args = {}
-        for keyval in shlex.split(data.encode("utf-8")):
-            key, val = keyval.split("=", 1)
-            args[key] = val
-        func(self, **args)
-
-
-def main():
-
-    # parse command line
-    cmdlineparser = optparse.OptionParser(
-        usage = '%prog [options] [key=value]* src [dst]',
-        conflict_handler = "error",
-        description = '''Leightweight HTML page generation tool''',
-        add_help_option = True,
-    )
-    cmdlineparser.add_option("-s", "--srcroot",
-        action="store", dest="srcroot",
-        type="string", default=".",
-        help="source tree root", metavar='location')
-    cmdlineparser.add_option("-d", "--dstroot",
-        action="store", dest="dstroot",
-        type="string", default=".",
-        help="destination tree root", metavar='location')
-    cmdlineparser.add_option("-t", "--dtd",
-        action="store", dest="dtd",
-        type="string", default=".",
-        help="local mirror of XHTML DTDs", metavar='location')
-    cmdlineparser.add_option("-m", "--encodinghtml",
-        action="store", dest="encodinghtml",
-        type="string", default="",
-        help="force value of html content encoding meta tag", metavar='encoding')
-
-    options, args = cmdlineparser.parse_args(sys.argv[1:])
-
-    # check source
-    if len(args) < 1:
-        cmdlineparser.error("Exactly one soure file must be given")
-
-    # read arguments
-    valdict = {}
-    if len(args) == 1:
-        src = args[0]
-        dst = None
-    else:
-        if "=" in args[-2]:
-            src = args[-1]
-            dst = None
-            vallist = args[:-1]
-        else:
-            src = args[-2]
-            dst = args[-1]
-            if dst == "-":
-                dst = None
-            vallist = args[:-2]
-        for keyval in vallist:
-            key, val = keyval.split("=", 1)
-            valdict[unicode(key, 'latin-1')] = unicode(val, 'latin-1')
-
-    # path calculator
-    pc = PathCalculator(src, options.srcroot, options.dstroot)
-
-    # function space
-    modtime = os.stat(src).st_mtime
-    func = Functions(pc, valdict, modtime, options.encodinghtml)
-
-    # allocate file handles
-    istream = open(src, 'r')
-    if dst is not None:
-        ostream = open(dst, 'wb')
-    else:
-        ostream = sys.stdout
-
-    # process file
-    try:
-        transformer = FunctionsHandler(ostream, outputEncoding, options.dtd, func)
-        parseWithER(istream, transformer)
-    except Exception:
-        if dst is not None:
-            os.unlink(dst)
-        raise
-
-    # close handles
-    ostream.close()
-    istream.close()
-
-if __name__ == '__main__':
-    main()
-
-__todo__ = '''
-'''
--- a/Admin/website/build/set_perm.bash	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#!/usr/bin/env bash
-# $Id$
-
-# set permissions for local files
-
-# parameters
-FIND="$1"
-LOCAL_UMASK_FILE="$2"
-LOCAL_UMASK_DIR="$3"
-LOCAL_GROUP="$4"
-
-for file in $("$FIND" .)
-do
-    if [ -O "$file" ]
-    then
-        echo "$file..."
-        if [ -d "$file" ]
-        then
-            chmod "$LOCAL_UMASK_DIR" "$file"
-        else
-            if [ -x "$file" ]
-            then
-                chmod "$LOCAL_UMASK_FILE",u+x,g+x "$file"
-            else
-                chmod "$LOCAL_UMASK_FILE" "$file"
-            fi
-        fi
-        chgrp "$LOCAL_GROUP" "$file"
-    fi
-done
--- a/Admin/website/build/xhtmlparse.py	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,163 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: Latin-1 -*-
-
-"""
-    Common services for parsing xhtml.
-"""
-
-__all__ = ['TransformerHandler']
-
-__author__ = 'Florian Haftmann, florian.haftmann@informatik.tu-muenchen.de'
-__revision__ = '$Id$'
-
-from os import path
-import codecs
-import posixpath
-from xml.sax.saxutils import escape
-from xml.sax.saxutils import quoteattr
-from xml.sax import make_parser as makeParser
-from xml.sax.handler import ContentHandler
-from xml.sax.handler import EntityResolver
-from xml.sax.xmlreader import AttributesImpl as Attributes
-from xml.sax import SAXException
-from xml.sax import SAXParseException
-
-nbsp = unichr(160)
-
-class TransformerHandler(object, ContentHandler, EntityResolver):
-
-    def __init__(self, out, encoding, dtd):
-
-        ContentHandler.__init__(self)
-        self._out = codecs.getwriter(encoding)(out)
-        self._encoding = encoding
-        self._dtd = dtd
-        self._ns_contexts = [{}] # contains uri -> prefix dicts
-        self._current_context = self._ns_contexts[-1]
-        self._undeclared_ns_maps = []
-        self._characterBuffer = {}
-        self._lastStart = False
-        self._currentXPath = []
-        self._init = False
-
-    def closeLastStart(self):
-
-        if self._lastStart:
-            self._out.write(u'>')
-            self._lastStart = False
-
-    def currentContent(self):
-
-        return u"".join(self._characterBuffer)
-
-    def flushCharacterBuffer(self):
-
-        content = escape(self.currentContent())
-        self._out.write(content)
-        self._characterBuffer = []
-
-    def startDocument(self):
-
-        if not self._init:
-            if self._encoding.upper() != 'UTF-8':
-                self._out.write(u'<?xml version="1.0" encoding="%s"?>\n' %
-                                self._encoding)
-            else:
-                self._out.write(u'<?xml version="1.0"?>\n')
-            self._init = True
-
-    def startPrefixMapping(self, prefix, uri):
-
-        self._ns_contexts.append(self._current_context.copy())
-        self._current_context[uri] = prefix
-        self._undeclared_ns_maps.append((prefix, uri))
-
-    def endPrefixMapping(self, prefix):
-
-        self._current_context = self._ns_contexts[-1]
-        del self._ns_contexts[-1]
-
-    def startElement(self, name, attrs):
-
-        self.closeLastStart()
-        self.flushCharacterBuffer()
-        self._out.write(u'<' + name)
-        for (key, value) in attrs.items():
-            self._out.write(u' %s=%s' % (key, quoteattr(value)))
-        self._currentXPath.append(name)
-        self._lastStart = True
-
-    def endElement(self, name):
-
-        self.flushCharacterBuffer()
-        if self._lastStart:
-            self._out.write(u'/>')
-            self._lastStart = False
-        else:
-            self._out.write('</%s>' % name)
-        self._currentXPath.pop()
-
-    def startElementNS(self, name, qname, attrs):
-
-        self.closeLastStart()
-        self.flushCharacterBuffer()
-        if name[0] is None:
-            # if the name was not namespace-scoped, use the unqualified part
-            name = name[1]
-        else:
-            # else try to restore the original prefix from the namespace
-            name = self._current_context[name[0]] + u":" + name[1]
-        self._out.write(u'<' + name)
-
-        for pair in self._undeclared_ns_maps:
-            self._out.write(u' xmlns:%s="%s"' % pair)
-        self._undeclared_ns_maps = []
-
-        for (name, value) in attrs.items():
-            name = self._current_context[name[0]] + ":" + name[1]
-            self._out.write(' %s=%s' % (name, quoteattr(value)))
-        self._out.write('>')
-        self._currentXPath.append(name)
-
-    def endElementNS(self, name, qname):
-
-        self.flushCharacterBuffer()
-        if name[0] is None:
-            name = name[1]
-        else:
-            name = self._current_context[name[0]] + u":" + name[1]
-        if self._lastStart:
-            self._out.write(u'/>')
-            self._lastStart = False
-        else:
-            self._out.write(u'</%s>' % name)
-        self._currentXPath.pop()
-
-    def characters(self, content):
-
-        self.closeLastStart()
-        self._characterBuffer.append(content)
-
-    def ignorableWhitespace(self, content):
-
-        self.closeLastStart()
-        self.flushCharacterBuffer()
-        self._out.write(content)
-
-    def resolveEntity(self, publicId, systemId):
-
-        loc, name = posixpath.split(systemId)
-        if loc == u"http://www.w3.org/TR/xhtml1/DTD" or loc == u"":
-            systemId = path.abspath(path.join(self._dtd, name))
-        return EntityResolver.resolveEntity(self, publicId, systemId)
-
-    def processingInstruction(self, target, data):
-
-        raise Exception("no handler defined for processing instructions")
-
-def parseWithER(istream, handler):
-
-    parser = makeParser()
-    parser.setContentHandler(handler)
-    parser.setEntityResolver(handler)
-    parser.parse(istream)
--- a/Admin/website/community.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
-    <title>Community</title>
-    <?include file="//include/htmlheader.include.html"?>
-</head>
-
-<body class="main">
-    <?include file="//include/header.include.html"?>
-    <div class="hr"><hr/></div>
-    <?include file="//include/navigation.include.html"?>
-    <div class="hr"><hr/></div>
-    <div id="content">
-
-      <h2>Project partners</h2>
-
-      <p>Isabelle is a joint project between
-      <a href="http://www.cl.cam.ac.uk/users/lcp/">Larry Paulson</a>
-      (<a href="http://www.cl.cam.ac.uk/Research/HVG/Isabelle/cambridge.html">University of Cambridge</a>, UK) and
-      <a href="http://www.in.tum.de/~nipkow/">Tobias Nipkow</a>
-      (<a href="http://www4.in.tum.de/proj/theoremprov/group.html">Technical University of Munich</a>, Germany).</p>
-
-      <p>There is an (incomplete) list of past and present <a href=
-      "http://www.cl.cam.ac.uk/Research/HVG/Isabelle/projects.html">projects</a>
-      undertaken using Isabelle.</p>
-
-      <h2>Isabelle in your neighbourhood</h2>
-
-      <p>Find out on the <a href="//world_map.html">world map</a>!</p>
-
-      <h2>Mailing list</h2> 
-
-      <p>You may use the mailing list <a href=
-          "mailto:isabelle-users@cl.cam.ac.uk">isabelle-users@cl.cam.ac.uk</a> and its
-          <a href="https://lists.cam.ac.uk/pipermail/cl-isabelle-users/index.html">archive</a> to discuss
-          problems and results.
-          Why not <a href="https://lists.cam.ac.uk/mailman/listinfo/cl-isabelle-users">subscribe</a>?
-</p>
-
-      <h2>Contributing theorems</h2>
-
-      <p>Did you have to prove a lemma that should have been part
-      of the Isabelle distribution? Send it to us!</p>
-
-      <p>We will collect theorems sent to <a href=
-      "mailto:isabelle-lemmas@cl.cam.ac.uk">isabelle-lemmas@cl.cam.ac.uk</a>.
-      Accepted material will be included in the Isabelle sources, with credit given
-      to the author. Note that the Isabelle sources are distributed under the BSD
-      license. Lemmas should be general, useful, and not too large. For larger
-      developments you might want to consider a submission to the
-      <a href="http://afp.sf.net">Archive of Formal Proofs</a>.</p>
-
-      <h2 id="afp">The Archive of Formal Proofs (AFP)</h2>
-
-      <p>The <a href="http://afp.sf.net">Archive of Formal Proofs</a> is a collection of proof
-      libraries, examples, and larger scientific developments, mechanically checked
-      in Isabelle. It is organized in the way of a scientific journal. Submissions
-      are refereed.</p>
-
-    </div>
-    <div class="hr"><hr/></div>
-    <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/conf/.cvsignore	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-depends.mak
-localconf.mak
--- a/Admin/website/conf/distinfo.mak	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-# this is a default file
-
-DISTNAME=Isabelle2005
-DISTIDENT=Isabelle2005
-DISTBASE=/home/proj/isabelle/dist/dist-Isabelle2005
--- a/Admin/website/css/aelfwine.css	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,725 +0,0 @@
-/************************************************************
- * Stylesheet AElfwine                                      *
- ************************************************************
- *                                                          *
- * This has been collected from various sources.            *
- *                                                          *
- * Version 1.0 - 2005/05/01 - f.h.                          *
- *                                                          *
- * ...aiming for perfection ;-)                             *
- *                                                          *
- ************************************************************/
-
-@namespace url(http://www.w3.org/1999/xhtml); /* DOES ANYONE KNOW WHAT'S THAT ABOUT!? */
-
-/* base paragraph and heading types */
-h1 {
-    display:            block;
-
-    font-family:        Arial,Helvetica,Verdana,sans-serif;
-    font-style:         normal;
-    font-variant:       normal;
-    font-size:          2.20em;
-    font-weight:        bold;
-    font-stretch:       normal;
-    text-decoration:    none;
-    text-transform:     none;
-    color:              #000000; 
-    text-shadow:        none;
-
-    text-indent:        0.00px;
-    text-align:         center;
-    white-space:        normal;
-
-    margin-top:         0.62em;
-    margin-bottom:      0.31em;
-    margin-left:        0.00px;
-    margin-right:       0.00px;
-}
-
-h2 {
-    display:            block;
-
-    font-family:        Arial,Helvetica,Verdana,sans-serif;
-    font-style:         normal;
-    font-variant:       normal;
-    font-size:          1.77em;
-    font-weight:        bold;
-    font-stretch:       normal;
-    text-decoration:    none;
-    text-transform:     none;
-    color:              #000000; 
-    text-shadow:        none;
-
-    text-indent:        0.00px;
-    text-align:         center;
-    white-space:        normal;
-
-    margin-top:         0.40em;
-    margin-bottom:      0.20em;
-    margin-left:        0.00px;
-    margin-right:       0.00px;
-}
-
-h3 {
-    display:            block;
-
-    font-family:        Arial,Helvetica,Verdana,sans-serif;
-    font-style:         normal;
-    font-variant:       normal;
-    font-size:          1.57em;
-    font-weight:        bold;
-    font-stretch:       normal;
-    text-decoration:    none;
-    text-transform:     none;
-    color:              #000000; 
-    text-shadow:        none;
-
-    text-indent:        0.00px;
-    text-align:         left;
-    white-space:        normal;
-
-    margin-top:         0.32em;
-    margin-bottom:      0.10em;
-    margin-left:        0.00px;
-    margin-right:       0.00px;
-}
-
-h4 {
-    display:            block;
-
-    font-family:        Arial,Helvetica,Verdana,sans-serif;
-    font-style:         normal;
-    font-variant:       normal;
-    font-size:          1.47em;
-    font-weight:        bold;
-    font-stretch:       normal;
-    text-decoration:    none;
-    text-transform:     none;
-    color:              #000000; 
-    text-shadow:        none;
-
-    text-indent:        0.00px;
-    text-align:         left;
-    white-space:        normal;
-
-    margin-top:         0.29em;
-    margin-bottom:      0.05em;
-    margin-left:        0.00px;
-    margin-right:       0.00px;
-}
-
-h5 {
-    display:            block;
-
-    font-family:        Arial,Helvetica,Verdana,sans-serif;
-    font-style:         normal;
-    font-variant:       normal;
-    font-size:          1.18em;
-    font-weight:        bold;
-    font-stretch:       normal;
-    text-decoration:    none;
-    text-transform:     none;
-    color:              #000000; 
-    text-shadow:        none;
-
-    text-indent:        0.00px;
-    text-align:         left;
-    white-space:        normal;
-
-    margin-top:         0.27em;
-    margin-bottom:      0.03em;
-    margin-left:        0.00px;
-    margin-right:       0.00px;
-}
-
-h6 {
-    display:            block;
-
-    font-family:        Arial,Helvetica,Verdana,sans-serif;
-    font-style:         normal;
-    font-variant:       normal;
-    font-size:          1em;
-    font-weight:        bold;
-    font-stretch:       normal;
-    text-decoration:    none;
-    text-transform:     none;
-    color:              #000000; 
-    text-shadow:        none;
-
-    text-indent:        0.00px;
-    text-align:         left;
-    white-space:        normal;
-
-    margin-top:         0.25em;
-    margin-bottom:      0.00em;
-    margin-left:        0.00px;
-    margin-right:       0.00px;
-}
-
-p, body, th, td {
-    display:            block;
-
-    font-family:        Arial,Helvetica,Verdana,sans-serif;
-    font-style:         normal;
-    font-variant:       normal;
-    font-size:          1.00em;
-    font-weight:        normal;
-    font-stretch:       normal;
-    text-decoration:    none;
-    text-transform:     none;
-    color:              #000000; 
-    text-shadow:        none;
-
-    text-indent:        0.00px;
-    white-space:        normal;
-
-}
-
-p {
-    text-align:         justify;
-    margin-top:         0.20em;
-    margin-bottom:      0.20em;
-}
-
-/* text markup */
-
-em {
-    font-style:         italic;
-}
-
-strong {
-    font-weight:        bold;
-}
-
-del {
-    text-decoration:    line-through;
-}
-
-ins {
-    text-decoration:    underline;
-}
-
-/* text format */
-
-sub {
-    vertical-align: sub;
-    font-size: smaller;
-    line-height: normal;
-}
-
-sup {
-    vertical-align: super;
-    font-size: smaller;
-    line-height: normal;
-}
-
-big {
-    font-size: larger;
-}
-
-small {
-    font-size: smaller;
-}
-
-tt {
-    font-family: Courier New,monospace;
-}
-
-pre {
-    display: block;
-    font-family: Courier New,monospace;
-    white-space: pre;
-    margin: 1em 1em;
-}
-
-/* ruler */
-
-hr {
-    display: block;
-    margin: 0 auto 0 auto;
-}
-
-/* document */
-
-html {
-    display:            block;
-}
-
-body {
-    display:            block;
-    /* KHTML background:         #FFFFEE; */
-    margin:             8px;
-}
-
-/* blocks */
-
-div {
-    display:            block;
-}
-
-address {
-    display:            block;
-    font-style:         italic;
-}
-
-blockquote {
-    display:            block;
-    margin:             1em 40px;
-}
-
-blockquote[type=cite] {
-    display:            block;
-    margin:             1em 0em;
-    padding-left:       1em;
-    border-left:        solid;
-    border-color:       blue;
-    border-width:       thin;
-}
-
-/* spans */
-
-span {
-    display:            inline;
-}
-
-abbr, acronym {
-    display:            inline;
-}
-
-cite, q {
-    display:            inline;
-    font-style:         italic;
-}
-
-code, var, kbd {
-    font-family:        Courier New,monospace;
-    display:            inline;
-}
-
-dfn {
-    display:            inline;
-    font-style:         italic;
-    font-weight:        bold;
-}
-
-samp {
-    display:            inline;
-}
-
-/* tables */
-
-table {
-    display:            table;
-    margin:             0px;
-    padding:            0px;
-    border-spacing:     1px;
-    border-collapse:    separate;
-}
-
-table[align="left"] {
-    float:              left;
-}
-
-table[align="right"] {
-    float:              right;
-}
-
-caption {
-    display:            table-caption;
-}
-
-colgroup {
-    display:            table-column-group;
-}
-
-col {
-    display:            table-column;
-}
-
-thead {
-    display:            table-header-group;
-    vertical-align:     middle;
-}
-
-tbody {
-    display:            table-row-group;
-}
-
-tfoot {
-    display:            table-footer-group;
-    vertical-align:     middle;
-}
-
-tr {
-    display:            table-row;
-}
-
-th {
-    display:            table-cell;
-    font-weight:        bold;
-    padding:            1px;
-}
-
-td { 
-    display:            table-cell;
-    padding:            1px;
-}
-
-/* lists */
-
-ul {
-    display:            block;
-    list-style-type:    disc;
-    margin:             1em 0em;
-    padding-left:       40px;
-}
-
-ol {
-    display:            block;
-    list-style-type:    decimal;
-    margin:             1em 0em;
-    padding-left:       40px;
-}
-
-dl {
-    display:            block;
-    margin:             1em 0em;
-}
-
-dt {
-    display:            block;
-    margin-left:        1em;
-}
-
-dd {
-    display:            block;
-    margin-left:        3em;
-}
-
-li {
-    display:            list-item;
-}
-
-/* nested lists have no top/bottom margins */
-ul ul, ul ol, ul dl,
-ol ul, ol ol, ol dl,
-dl ul, dl ol, dl dl {
-    margin-top:         0;
-    margin-bottom:      0;
-}
-
-/* 2 deep unordered lists use a circle */
-ol ul, ul ul {
-    list-style-type:    circle;
-}
-
-/* 3 deep (or more) unordered lists use a square */
-ol ol ul, ol ul ul,
-ul ol ul, ul ul ul {
-  list-style-type:      square;
-}
-
-/* hyperlinks */
-
-a:link {
-    color:              #FF0000;
-}
-
-a:visited {
-    color:              #FF6600;
-}
-
-a:hover {
-    color:              #FF0000;
-}
-
-a:active {
-    color:              #FF0000;
-}
-
-a:focus {
-    color:              #FF0000;
-}
-
-a[name]:link, a[id]:link:not([href]) {
-    color:              #000000;
-}
-
-a[name]:hover, a[id]:hover:not([href]) {
-    color:              #000000;
-}
-
-a[name]:active, a[id]:active:not([href]) {
-    color:              #000000;
-}
-
-a[name]:focus, a[id]:focus:not([href]) {
-    color:              #000000;
-}
-
-a img {
-    border:             none;
-}
-
-/* hidden elements */
-area, base, basefont, head, meta, script, style, title,
-noembed, noframes, noscript, param {
-    display:            none;
-}
-
-/* forms */
-
-/* misc */
-legend {
-    padding-left:       2px;
-    padding-right:      2px;
-    border:             none;
-}
-
-fieldset {
-    display:            block;
-    margin-left:        2px;
-    margin-right:       2px;
-    padding:            0.75em 0.625em;
-    border:             2px groove ThreeDFace;
-}
-
-label {
-    cursor:             default;
-}
-
-/* default inputs, text inputs, and selects */
-input [type=""], input[type="text"], input[type="password"] {
-    padding:            1px 0px 1px 0px;
-    border:             2px inset ThreeDFace;
-    text-transform:     none;
-    vertical-align:     text-bottom;
-    cursor:             text;
-}
-
-textarea {
-    margin:             1px 0px 1px 0px;
-    border:             2px inset ThreeDFace;
-    font-size:          medium;
-    text-transform:     none;
-    vertical-align:     text-bottom;
-    cursor:             text;
-}
-
-select {
-    margin:             0;
-    border-color:       ThreeDFace;
-    white-space:        nowrap;
-    vertical-align:     text-bottom;
-    cursor:             default;
-    border-width:       2px;
-    border-style:       inset;
-}
-
-select[size] {
-    padding:            1px 0px 1px 0px;
-}
-
-select[size="1"] {
-    padding:            0px;
-}
-
-option {
-    display: block;
-}
-
-option :checked {
-    background-color:   Highlight;
-    color:              HighlightText;
-}
-
-optgroup {
-    display:            block;
-    font-style:         italic;
-    font-weight:        bold;
-}
-
-optgroup > option {
-    padding-left:       20px;
-    font-style:         normal;
-    font-weight:        normal;
-}
-
-optgroup :before {
-    display:            block;
-    content:            attr(label);
-}
-
-option[disabled],
-optgroup[disabled] {
-    background-color:   transparent;
-}
-
-/* hidden inputs */
-input[type="hidden"] {
-    display:            none;
-    padding:            0em;
-    border:             0em;
-    cursor:             auto;
-}
-
-/* image buttons */
-input[type="image"] {
-    padding:            0em;
-    border:             none;
-    background-color:   transparent;
-    vertical-align:     baseline;
-    font-family:        sans-serif;
-    font-size:          small;
-    cursor:             pointer;
-}
-
-input[type="image"][disabled] {
-    cursor:             default;
-}
-
-/* file selector */
-input[type="file"] {
-    white-space:        nowrap;
-    cursor:             default;
-    padding:            0px;
-    border-style:       none;
-}
-
-/* radio buttons and check boxes*/
-input[type="radio"] {
-    width:              13px;
-    height:             13px;
-    margin:             3px 3px 0px 5px;
-    padding:            0px;
-    vertical-align:     baseline;
-    cursor:             default;
-}
-
-/* check boxes */
-input[type="checkbox"] {
-    width:              13px;
-    height:             13px;
-    margin:             3px 3px 3px 4px;
-    padding:            0px;
-    vertical-align:     text-bottom;
-    cursor:             default;
-}
-
-input[type="checkbox"]:focus,
-input[type="radio"]:focus {
-    border-style: groove;
-}
-
-input[type="checkbox"]:hover:active,
-input[type="radio"]:hover:active {
-    background-color:   ThreeDFace;
-    border-style:       inset;
-}
-
-/* buttons */
-button, 
-input[type="reset"],
-input[type="button"],
-input[type="submit"] { 
-    text-transform:     none;
-    padding:            2px 0 2px 0;
-    border:             2px outset ButtonFace;
-    background-color:   ButtonFace;
-    color:              ButtonText; 
-    white-space:        pre;
-    vertical-align:     text-bottom;
-    cursor:             default;
-}
-
-button:active:hover,
-input[type="reset"]:active:hover,
-input[type="button"]:active:hover,
-input[type="submit"]:active:hover {
-    padding:            3px 0 1px 0;
-    border-style:       inset;
-}
-
-/* disables inputs */
-
-input[disabled],
-textarea[disabled],
-option[disabled],
-optgroup[disabled],
-select[disabled] {
-    color:              GrayText;
-    background-color:   ThreeDFace;
-    cursor:             default;
-}
-
-input[type="radio"][disabled],
-input[type="radio"][disabled]:active,
-input[type="radio"][disabled]:hover,
-input[type="radio"][disabled]:hover:active,
-input[type="checkbox"][disabled],
-input[type="checkbox"][disabled]:active,
-input[type="checkbox"][disabled]:hover,
-input[type="checkbox"][disabled]:hover:active {
-    padding:            1px;
-    border:             1px inset ThreeDShadow;
-    color:              GrayText;
-    background-color:   ThreeDFace;
-}
-
-button[disabled]:active, button[disabled],
-input[type="reset"][disabled]:active,
-input[type="reset"][disabled],
-input[type="button"][disabled]:active,
-input[type="button"][disabled],
-select[disabled] > input[type="button"],
-select[disabled] > input[type="button"]:active,
-input[type="submit"][disabled]:active,
-input[type="submit"][disabled] {
-    padding:            3px 1px 3px 1px;
-    border:             1px outset ButtonShadow;
-    color:              GrayText;
-}
-
-/* DocBook-XSLT-specific extensions */
-
-div.figure {
-    margin-top: 1.9ex;
-}
-
-div.note {
-    margin-top: 1.0ex;
-    margin-bottom: 1.0ex;
-}
-
-div.tip {
-    margin-top: 1.0ex;
-    margin-bottom: 1.0ex;
-}
-
-div.warning {
-    margin-top: 1.0ex;
-    margin-bottom: 1.0ex;
-}
-
-div.caution {
-    margin-top: 1.0ex;
-    margin-bottom: 1.0ex;
-}
-
-div.important {
-    margin-top: 1.0ex;
-    margin-bottom: 1.0ex;
-}
-
-div.figure {
-    margin-bottom: 0.8ex;
-}
-
-div.example {
-    margin-bottom: 0.8ex;
-}
-
-div.equation {
-    margin-bottom: 0.8ex;
-}
--- a/Admin/website/css/isabelle_base.css	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,224 +0,0 @@
-/************************************************************
- * Stylesheet Isabelle (all-media basics)                   *
- ************************************************************/
-
-/* $Id$ */
-
-@namespace url(http://www.w3.org/1999/xhtml); /* DOES ANYONE KNOW WHAT'S THAT ABOUT!? */
-
-/* generic color settings */
-body {
-    background-color: #FFFFFF;
-}
-
-a:link {
-    color: #0000A0;
-}
-
-a:visited {
-    color: #5050A0;
-}
-
-a:hover {
-    color: #FFFFFF;
-    background-color: #0000FF;
-}
-
-a:hover img {
-    /* gets rid of some of hover highlight */
-    background-color: #FFFFFF;
-}
-
-a:active {
-    color: #00DDFF;
-}
-
-a:focus {
-    color: #00DDFF;
-}
-
-img {
-    border: none;
-}
-
-/* generic formatting */
-h1 { 
-    margin-top: 2em;
-    font-size: 230%;
-}
-
-h2 {
-    margin-top: 1em;
-    font-size: x-large;
-    text-align: left;
-    background-color: #8080F0;
-}
-
-h3 {
-    margin-top: 0.7em;
-    font-size: medium;
-    text-align: left;
-    background-color: #8080F0;
-}
-
-p {
-    margin-top: 0.3em;
-    margin-bottom: 0.4em;
-}
-
-/* indendation of following paragraphs */
-/* p + p {
-  text-indent: 0.8em;
-} */
-
-/* navigation layout */
-div#navigation ul {
-    list-style-type: none;
-    margin: 0em;
-    padding: 0em;
-    width: 100%;
-}
-
-div#navigation ul li {
-    margin: 0em;
-    padding: 0em;
-}
-
-div#navigation ul li span {
-    display: block;
-    margin: 1ex 0em;
-    padding: 1ex 0em;
-    text-align: center;
-    vertical-align: middle;
-    background-color: #E0E0F0;
-    border-left: 7px solid #FFFFFF;
-}
-
-div#navigation ul li strong {
-    display: block;
-    font-weight: normal;
-    margin: 1ex 0em;
-    padding: 1ex 0em;
-    text-align: center;
-    vertical-align: middle;
-    background-color: #E0E0F0;
-    border-left: 7px solid #0000A0;
-}
-
-/* footer layout */
-div#footer p {
-    text-align: right;
-    font-size: x-small;
-}
-
-/* embedded images */
-img.left {
-    margin-right: 8pt;
-    float: left;
-}
-
-img.right {
-    margin-left: 8pt;
-    float: right;
-}
-
-/* shell commands */
-tt.shellcmd {
-    font-family: monospace;
-}
-
-ul.shellcmd {
-    background-color: #C0C0E0;
-    font-family: monospace;
-    list-style-type: none;
-    margin-top: 1ex;
-    margin-bottom: 1ex;
-    margin-left: 4em;
-    margin-right: 4em;
-    padding-left: 0pt;
-}
-
-ul.shellcmd li:before {
-    content: "$ ";
-    font-weight: bold;
-}
-
-/* faqs */
-dl.faq dt {
-    background-color: #8080F0;
-    padding: 3px;
-    margin-top: 12px;
-    font-weight: bold;
-}
-
-dl.faq dd {
-    padding: 3px;
-    margin-top: 3px;
-}
-
-/* faked columns */
-table.column {
-    margin: 0px;
-    padding: 0px;
-    width: 100%;
-    border-collapse: collapse;
-}
-
-table.column tr td.column {
-    width: 50%;
-    vertical-align: top;
-    padding: 1em;
-}
-
-/* centered areas */
-div.center {
-    position: relative;
-    text-align: center;
-    width: 100%;
-}
-
-/* generic celled tables */
-table.celled {
-    margin-top: 2ex;
-    margin-left: auto;
-    margin-right: auto;
-    text-align: center;
-    border-spacing: 4px;
-}
-
-table.celled tr td {
-    text-align: left;
-    background-color: #C0C0E0;
-    padding: 0.4ex 1em 0.4ex 1em;
-}
-
-/* download tables */
-table.download {
-    margin-top: 2ex;
-    margin-left: auto;
-    margin-right: auto;
-    text-align: center;
-    border-spacing: 4px;
-}
-
-table.download tr td {
-    text-align: left;
-    background-color: #C0C0E0;
-    padding: 0.4ex 1em 0.4ex 1em;
-}
-
-table.download tr td.downloadheader {
-    text-align: left;
-    font-weight: bold;
-    background-color: #8080F0;
-    /* margin-top doesn't seem to work */
-    border-top: 1ex solid #E0E0F0;
-}
-
-table.download tr td + td + td {
-    text-align: right;
-}
-
-table.download tr.rowspan td + td {
-    text-align: right;
-}
--- a/Admin/website/css/isabelle_print.css	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-/************************************************************
- * Stylesheet Isabelle (print media)                        *
- ************************************************************/
-
-/* $Id$ */
-
-@namespace url(http://www.w3.org/1999/xhtml); /* DOES ANYONE KNOW WHAT'S THAT ABOUT!? */
-
-/* use times font for floating text */
-p, body, th, td {
-    font-family: Times New Roman,times,serif;
-}
-
-/* body margin */
-body {
-    margin: 4pt;
-}
-
-/* no rulers (they are just a supplemental for non-css browsers) */
-hr {
-    display: none;
-    visibility: hidden;
-    height: 0pt;
-    width: 0pt;
-}
-
-/* header layout */
-div#header {
-    position: relative;
-    height: 94px; 
-    background-color: #FFFFFF;
-}
-
-div#header h1 {
-    position: absolute;
-    top: 0px;
-    left: 0px;
-    margin: 0px;
-}
-
-div#header a#isabelle_logo {
-    position: absolute;
-    right: 0px;
-}
-
-div#header a#univ_tum {
-    display: none;
-}
-
-div#header a#univ_cambridge {
-    display: none;
-}
-
-div#header span.headersep {
-    display: none;
-}
-
-/* navigation layout */
-div#navigation {
-    display: none;
-}
-
-/* footer layout */
-div#footer {
-    position: relative;
-    top: 8px;
-    clear: both;
-    border-top: 2px solid #000000;
-}
-
-/* mirrorlist layout */
-div.mirrorlist {
-    display: none;
-}
-
-/* thesis announcement */
-body.thesis {
-    margin: 0cm;
-    padding: 0cm;
-}
-
-body.thesis div#header {
-    height: 108px;
-}
-
-body.thesis div#header p {
-    font-family: Arial,Helvetica,Verdana,sans-serif;
-    font-style: italic;
-    font-size: 10px;
-    position: absolute;
-    top: 0px;
-    left: 115px;
-    right: 115px;
-    margin: 0px;
-}
-
-body.thesis div#header h1 {
-    position: absolute;
-    top: 20px;
-    left: 115px;
-    right: 115px;
-    margin: 0px;
-    font-size: 2.8ex;
-}
-
-body.thesis div#header a#info_logo {
-    position: absolute;
-    left: 0px;
-}
-
-body.thesis h2 {
-    font-size: 2.4ex;
-}
-
-body.thesis dl dt {
-    font-weight: bold;
-}
--- a/Admin/website/css/isabelle_screen.css	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,160 +0,0 @@
-/************************************************************
- * Stylesheet Isabelle (screen media)                       *
- ************************************************************/
-
-/* $Id$ */
-
-@namespace url(http://www.w3.org/1999/xhtml); /* DOES ANYONE KNOW WHAT'S THAT ABOUT!? */
-
-/* no rulers (they are just a supplemental for non-css browsers) */
-hr {
-    display: none;
-    visibility: hidden;
-    height: 0pt;
-    width: 0pt;
-}
-
-div.hr {
-    /* a special for KHTML */
-    display: none;
-}
-
-/* header layout */
-div#header {
-    position: relative;
-    height: 90pt; 
-    background-color: #FFFFFF;
-}
-
-div#header h1 {
-    /* center between logos */
-    position: absolute;
-    top: 27px;
-    left: 200px;
-    right: 270px;
-    margin: 0px;
-}
-
-div#header a#isabelle_logo {
-    position: absolute;
-    top: 10px;
-    left: 3.2ex;
-}
-
-div#header a#univ_tum {
-    position: absolute;
-    top: 25px;
-    right: 40px;
-}
-
-body.thesis div#header a#info_logo {
-    position: absolute;
-    top: 25px;
-    right: 40px;
-}
-
-div#header a#univ_cambridge {
-    position: absolute;
-    top: 25px;
-    right: 130px;
-}
-
-div#header span.headersep {
-    display: none;
-}
-
-/* navigation layout */
-div#navigation {
-    position: relative;
-    top: 2em;
-    left: 1ex;
-    bottom: 4px;
-    padding: 0.5em 0.5em;
-    float: left;
-    width: 17ex;
-    background-color: #FFFFFF;
-    border-top: 2px solid #0000A0;
-    border-bottom: 2px solid #0000A0;
-}
-
-div#navigation h2 {
-    display: none;
-}
-
-/* footer layout */
-div#footer {
-    margin-top: 2em;
-}
-
-/* content layout */
-div#content {
-    position: static;
-    left: 4px;
-    margin-left: 23ex;
-    margin-right: 3%;
-    background-color: #E0E0F0;
-    padding-left: 20px;
-    padding-right: 20px;
-    padding-bottom: 20px;
-}
-
-div#content h2 { 
-    margin-left: -20px;
-    margin-right: -20px;
-    padding-left: 20px;
-    padding-top: 0.2ex;
-    padding-bottom: 0.2ex;
-    border-bottom: 1ex solid #E0E0F0;
-}
-
-div#content h3 { 
-    margin-right: -20px;
-    padding-top: 0.4ex;
-    padding-bottom: 0.2ex;
-    padding-left: 10px;
-}
-
-/* mirror switch layout */
-div.mirrorlist {
-    margin: 1ex 0em;
-    padding: 2pt;
-    background-color: #E0E0F0;
-    text-align: left;
-    border-left: 7px solid #FFFFFF;
-}
-
-div.mirrorlist h3 {
-    margin: 1pt;
-    padding: 1pt;
-    border: none;
-    background-color: #FFFFFF;
-    color: #0000A0;
-    font-size: 11pt;
-    text-align: left;
-}
-
-div.mirrorlist ul {
-    margin: 1pt 1pt 1pt 1em;
-    padding: 0pt;
-}
-
-div.mirrorlist ul li {
-    font-size: 8pt;
-    font-style: italic;
-    padding: 0pt 12pt 0pt 0pt;
-}
-
-/* people list */
-dl.people dt {
-    background-color: #EEEEEE;
-    padding: 2px;
-    margin-top: 8px;
-    height: 50px;
-}
-
-dl.people dd img {
-    float: right;
-    position: relative;
-    margin-right: 3px;
-    top: -52px;
-}
--- a/Admin/website/documentation.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
-    <title>Documentation</title>
-    <?include file="//include/htmlheader.include.html"?>
-</head>
-
-<body>
-    <?include file="//include/header.include.html"?>
-    <div class="hr"><hr/></div>
-    <?include file="//include/navigation.include.html"?>
-    <div class="hr"><hr/></div>
-
-    <div id="content">
-
-        <h2>Getting started</h2>
-
-        <a href="//img/tutorial_cover_big.gif">
-            <img class="right" src="//img/tutorial_cover_small.gif" alt="Cover " 
-                width="83" height="125"/>
-        </a>
-        <p>For getting started with Isabelle quickly, we recommend the <a href=
-        "//dist/Isabelle/doc/tutorial.pdf">Tutorial on
-        Isabelle/HOL</a> (published by Springer Verlag as <a href=
-        "http://www4.in.tum.de/~nipkow/LNCS2283/">LNCS 2283</a>) and the <a href=
-        "#course_material">course material</a>.</p>
-        <br clear="right" />
-
-        <h2>Mailing list and FAQ</h2>
-    
-          <p>You may use the mailing list <a href=
-          "mailto:isabelle-users@cl.cam.ac.uk">isabelle-users@cl.cam.ac.uk</a> and its
-          <a href="https://lists.cam.ac.uk/pipermail/cl-isabelle-users/index.html">archive</a> to discuss
-          problems and results.
-          Why not <a href="https://lists.cam.ac.uk/mailman/listinfo/cl-isabelle-users">subscribe</a>?
-</p>
-        <p>Please consult the <a href="http://isabelle.in.tum.de/faq.html">FAQ</a> for answers to frequent
-        problems.</p>
-
-        <h2>Isabelle Documentation</h2>
-
-        <p><?value key="distname"?> documentation is
-        included here as browsable PDF for convenience. These documents are also part
-        of the standard Isabelle distribution.</p>
-
-        <?include file="//include/documentationdist.include.html"?>
-
-        <h3>Release notes</h3>
-
-          <ul>
-            <li><a href="//dist/Isabelle/ANNOUNCE">ANNOUNCE</a></li>
-            <li><a href="//dist/Isabelle/README.html">README</a></li>
-            <li><a href="//dist/Isabelle/INSTALL">INSTALL</a></li>
-            <li><a href="//dist/Isabelle/NEWS">NEWS</a></li>
-            <li><a href="//dist/Isabelle/COPYRIGHT">COPYRIGHT</a></li>
-            <li><a href="//dist/Isabelle/CONTRIBUTORS">CONTRIBUTORS</a></li>
-          </ul>
-
-        <h2 id="course_material">Course Material and Exercises</h2>
-        <p>The <a href=
-            "http://isabelle.in.tum.de/coursematerial/">course material</a> page makes
-        slides, demos, and exercises of a growing number of Isabelle courses
-        available. It is meant as a resource for people who would like to learn
-        Isabelle as well as for those who would like to teach it.</p>
-
-    </div>
-    <div class="hr"><hr/></div>
-    <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/download.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
-    <title>Download</title>
-    <?include file="//include/htmlheader.include.html"?>
-</head>
-
-<body>
-    <?include file="//include/header.include.html"?>
-    <div class="hr"><hr/></div>
-    <?include file="//include/navigation.include.html"?>
-    <div class="hr"><hr/></div>
-
-    <div id="content">
-
-        <h2><?value key="distname"?></h2>
-
-        <p>The following source and binary packages of <?value key="distname"?>
-        provide everything required for easy installation of the full Isabelle
-        working environment on common Unix platforms (e.g. Linux, MacOS X,
-        Solaris). We provide a complete set of packages for Isabelle, Proof
-        General, and PolyML.</p>
-    
-        <p>While XEmacs 21 is not included here, most operating system
-        distributions already provide a suitable package. Some of the
-        packages below are platform dependent; we include binaries for
-        Linux/x86, Solaris/Sparc, and Darwin/PPC (MacOS X).</p>
-    
-        <p>Please see the <a href="installation.html">installation instructions</a>
-        for which packages to download and for more information.</p>
-
-        <?include file="//include/downloadtable.include.html"?>
-
-        <h2>Development snapshot</h2>
-
-        <p>For the curious we provide a nightly generated
-        CVS <a href="http://isabelle.in.tum.de/devel/">development snapshot</a> of
-        Isabelle. <em>Use at your own risk!</em></p>
-
-        <h2>Past releases</h2>
-
-        <p>Past releases are available from the <a href="download_past.html">archive</a>.</p>
-
-    </div>
-    <div class="hr"><hr/></div>
-    <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/download_past.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
-    <title>Older Isabelle Releases</title>
-    <?include file="//include/htmlheader.include.html"?>
-</head>
-
-<body class="dist">
-    <?include file="//include/header.include.html"?>
-    <div class="hr"><hr/></div>
-    <?include file="//include/navigation.include.html"?>
-    <div class="hr"><hr/></div>
-
-    <div id="content">
-
-        <h2>Archive</h2>
-
-        Past releases of Isabelle are available from the Cambridge
-        archive:
-        <ul>
-            <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle2004.tar.gz">Isabelle2004</a></li>
-            <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle2003.tar.gz">Isabelle2003</a></li>
-            <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle2002.tar.gz">Isabelle2002</a></li>
-            <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle99-2.tar.gz">Isabelle99-2</a></li>
-            <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle99-1.tar.gz">Isabelle99-1</a></li>
-            <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle99.tar.gz">Isabelle99</a></li>
-            <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle98-1.tar.gz">Isabelle98-1</a></li>
-            <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle98.tar.gz">Isabelle98</a></li>
-            <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle94-8.tar.gz">Isabelle94-8</a></li>
-            <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle94-7.tar.gz">Isabelle94-7</a></li>
-            <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle94-6.tar.gz">Isabelle94-6</a></li>
-            <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle94.tar.gz">Isabelle94</a></li>
-            <li><a href="http://www.cl.cam.ac.uk/users/lcp/archive/Isabelle93.tar.gz">Isabelle93</a></li>
-        </ul>
-
-    </div>
-    <div class="hr"><hr/></div>
-    <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/dtd/xhtml-lat1.ent	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,196 +0,0 @@
-<!-- Portions (C) International Organization for Standardization 1986
-     Permission to copy in any form is granted for use with
-     conforming SGML systems and applications as defined in
-     ISO 8879, provided this notice is included in all copies.
--->
-<!-- Character entity set. Typical invocation:
-    <!ENTITY % HTMLlat1 PUBLIC
-       "-//W3C//ENTITIES Latin 1 for XHTML//EN"
-       "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
-    %HTMLlat1;
--->
-
-<!ENTITY nbsp   "&#160;"> <!-- no-break space = non-breaking space,
-                                  U+00A0 ISOnum -->
-<!ENTITY iexcl  "&#161;"> <!-- inverted exclamation mark, U+00A1 ISOnum -->
-<!ENTITY cent   "&#162;"> <!-- cent sign, U+00A2 ISOnum -->
-<!ENTITY pound  "&#163;"> <!-- pound sign, U+00A3 ISOnum -->
-<!ENTITY curren "&#164;"> <!-- currency sign, U+00A4 ISOnum -->
-<!ENTITY yen    "&#165;"> <!-- yen sign = yuan sign, U+00A5 ISOnum -->
-<!ENTITY brvbar "&#166;"> <!-- broken bar = broken vertical bar,
-                                  U+00A6 ISOnum -->
-<!ENTITY sect   "&#167;"> <!-- section sign, U+00A7 ISOnum -->
-<!ENTITY uml    "&#168;"> <!-- diaeresis = spacing diaeresis,
-                                  U+00A8 ISOdia -->
-<!ENTITY copy   "&#169;"> <!-- copyright sign, U+00A9 ISOnum -->
-<!ENTITY ordf   "&#170;"> <!-- feminine ordinal indicator, U+00AA ISOnum -->
-<!ENTITY laquo  "&#171;"> <!-- left-pointing double angle quotation mark
-                                  = left pointing guillemet, U+00AB ISOnum -->
-<!ENTITY not    "&#172;"> <!-- not sign = angled dash,
-                                  U+00AC ISOnum -->
-<!ENTITY shy    "&#173;"> <!-- soft hyphen = discretionary hyphen,
-                                  U+00AD ISOnum -->
-<!ENTITY reg    "&#174;"> <!-- registered sign = registered trade mark sign,
-                                  U+00AE ISOnum -->
-<!ENTITY macr   "&#175;"> <!-- macron = spacing macron = overline
-                                  = APL overbar, U+00AF ISOdia -->
-<!ENTITY deg    "&#176;"> <!-- degree sign, U+00B0 ISOnum -->
-<!ENTITY plusmn "&#177;"> <!-- plus-minus sign = plus-or-minus sign,
-                                  U+00B1 ISOnum -->
-<!ENTITY sup2   "&#178;"> <!-- superscript two = superscript digit two
-                                  = squared, U+00B2 ISOnum -->
-<!ENTITY sup3   "&#179;"> <!-- superscript three = superscript digit three
-                                  = cubed, U+00B3 ISOnum -->
-<!ENTITY acute  "&#180;"> <!-- acute accent = spacing acute,
-                                  U+00B4 ISOdia -->
-<!ENTITY micro  "&#181;"> <!-- micro sign, U+00B5 ISOnum -->
-<!ENTITY para   "&#182;"> <!-- pilcrow sign = paragraph sign,
-                                  U+00B6 ISOnum -->
-<!ENTITY middot "&#183;"> <!-- middle dot = Georgian comma
-                                  = Greek middle dot, U+00B7 ISOnum -->
-<!ENTITY cedil  "&#184;"> <!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
-<!ENTITY sup1   "&#185;"> <!-- superscript one = superscript digit one,
-                                  U+00B9 ISOnum -->
-<!ENTITY ordm   "&#186;"> <!-- masculine ordinal indicator,
-                                  U+00BA ISOnum -->
-<!ENTITY raquo  "&#187;"> <!-- right-pointing double angle quotation mark
-                                  = right pointing guillemet, U+00BB ISOnum -->
-<!ENTITY frac14 "&#188;"> <!-- vulgar fraction one quarter
-                                  = fraction one quarter, U+00BC ISOnum -->
-<!ENTITY frac12 "&#189;"> <!-- vulgar fraction one half
-                                  = fraction one half, U+00BD ISOnum -->
-<!ENTITY frac34 "&#190;"> <!-- vulgar fraction three quarters
-                                  = fraction three quarters, U+00BE ISOnum -->
-<!ENTITY iquest "&#191;"> <!-- inverted question mark
-                                  = turned question mark, U+00BF ISOnum -->
-<!ENTITY Agrave "&#192;"> <!-- latin capital letter A with grave
-                                  = latin capital letter A grave,
-                                  U+00C0 ISOlat1 -->
-<!ENTITY Aacute "&#193;"> <!-- latin capital letter A with acute,
-                                  U+00C1 ISOlat1 -->
-<!ENTITY Acirc  "&#194;"> <!-- latin capital letter A with circumflex,
-                                  U+00C2 ISOlat1 -->
-<!ENTITY Atilde "&#195;"> <!-- latin capital letter A with tilde,
-                                  U+00C3 ISOlat1 -->
-<!ENTITY Auml   "&#196;"> <!-- latin capital letter A with diaeresis,
-                                  U+00C4 ISOlat1 -->
-<!ENTITY Aring  "&#197;"> <!-- latin capital letter A with ring above
-                                  = latin capital letter A ring,
-                                  U+00C5 ISOlat1 -->
-<!ENTITY AElig  "&#198;"> <!-- latin capital letter AE
-                                  = latin capital ligature AE,
-                                  U+00C6 ISOlat1 -->
-<!ENTITY Ccedil "&#199;"> <!-- latin capital letter C with cedilla,
-                                  U+00C7 ISOlat1 -->
-<!ENTITY Egrave "&#200;"> <!-- latin capital letter E with grave,
-                                  U+00C8 ISOlat1 -->
-<!ENTITY Eacute "&#201;"> <!-- latin capital letter E with acute,
-                                  U+00C9 ISOlat1 -->
-<!ENTITY Ecirc  "&#202;"> <!-- latin capital letter E with circumflex,
-                                  U+00CA ISOlat1 -->
-<!ENTITY Euml   "&#203;"> <!-- latin capital letter E with diaeresis,
-                                  U+00CB ISOlat1 -->
-<!ENTITY Igrave "&#204;"> <!-- latin capital letter I with grave,
-                                  U+00CC ISOlat1 -->
-<!ENTITY Iacute "&#205;"> <!-- latin capital letter I with acute,
-                                  U+00CD ISOlat1 -->
-<!ENTITY Icirc  "&#206;"> <!-- latin capital letter I with circumflex,
-                                  U+00CE ISOlat1 -->
-<!ENTITY Iuml   "&#207;"> <!-- latin capital letter I with diaeresis,
-                                  U+00CF ISOlat1 -->
-<!ENTITY ETH    "&#208;"> <!-- latin capital letter ETH, U+00D0 ISOlat1 -->
-<!ENTITY Ntilde "&#209;"> <!-- latin capital letter N with tilde,
-                                  U+00D1 ISOlat1 -->
-<!ENTITY Ograve "&#210;"> <!-- latin capital letter O with grave,
-                                  U+00D2 ISOlat1 -->
-<!ENTITY Oacute "&#211;"> <!-- latin capital letter O with acute,
-                                  U+00D3 ISOlat1 -->
-<!ENTITY Ocirc  "&#212;"> <!-- latin capital letter O with circumflex,
-                                  U+00D4 ISOlat1 -->
-<!ENTITY Otilde "&#213;"> <!-- latin capital letter O with tilde,
-                                  U+00D5 ISOlat1 -->
-<!ENTITY Ouml   "&#214;"> <!-- latin capital letter O with diaeresis,
-                                  U+00D6 ISOlat1 -->
-<!ENTITY times  "&#215;"> <!-- multiplication sign, U+00D7 ISOnum -->
-<!ENTITY Oslash "&#216;"> <!-- latin capital letter O with stroke
-                                  = latin capital letter O slash,
-                                  U+00D8 ISOlat1 -->
-<!ENTITY Ugrave "&#217;"> <!-- latin capital letter U with grave,
-                                  U+00D9 ISOlat1 -->
-<!ENTITY Uacute "&#218;"> <!-- latin capital letter U with acute,
-                                  U+00DA ISOlat1 -->
-<!ENTITY Ucirc  "&#219;"> <!-- latin capital letter U with circumflex,
-                                  U+00DB ISOlat1 -->
-<!ENTITY Uuml   "&#220;"> <!-- latin capital letter U with diaeresis,
-                                  U+00DC ISOlat1 -->
-<!ENTITY Yacute "&#221;"> <!-- latin capital letter Y with acute,
-                                  U+00DD ISOlat1 -->
-<!ENTITY THORN  "&#222;"> <!-- latin capital letter THORN,
-                                  U+00DE ISOlat1 -->
-<!ENTITY szlig  "&#223;"> <!-- latin small letter sharp s = ess-zed,
-                                  U+00DF ISOlat1 -->
-<!ENTITY agrave "&#224;"> <!-- latin small letter a with grave
-                                  = latin small letter a grave,
-                                  U+00E0 ISOlat1 -->
-<!ENTITY aacute "&#225;"> <!-- latin small letter a with acute,
-                                  U+00E1 ISOlat1 -->
-<!ENTITY acirc  "&#226;"> <!-- latin small letter a with circumflex,
-                                  U+00E2 ISOlat1 -->
-<!ENTITY atilde "&#227;"> <!-- latin small letter a with tilde,
-                                  U+00E3 ISOlat1 -->
-<!ENTITY auml   "&#228;"> <!-- latin small letter a with diaeresis,
-                                  U+00E4 ISOlat1 -->
-<!ENTITY aring  "&#229;"> <!-- latin small letter a with ring above
-                                  = latin small letter a ring,
-                                  U+00E5 ISOlat1 -->
-<!ENTITY aelig  "&#230;"> <!-- latin small letter ae
-                                  = latin small ligature ae, U+00E6 ISOlat1 -->
-<!ENTITY ccedil "&#231;"> <!-- latin small letter c with cedilla,
-                                  U+00E7 ISOlat1 -->
-<!ENTITY egrave "&#232;"> <!-- latin small letter e with grave,
-                                  U+00E8 ISOlat1 -->
-<!ENTITY eacute "&#233;"> <!-- latin small letter e with acute,
-                                  U+00E9 ISOlat1 -->
-<!ENTITY ecirc  "&#234;"> <!-- latin small letter e with circumflex,
-                                  U+00EA ISOlat1 -->
-<!ENTITY euml   "&#235;"> <!-- latin small letter e with diaeresis,
-                                  U+00EB ISOlat1 -->
-<!ENTITY igrave "&#236;"> <!-- latin small letter i with grave,
-                                  U+00EC ISOlat1 -->
-<!ENTITY iacute "&#237;"> <!-- latin small letter i with acute,
-                                  U+00ED ISOlat1 -->
-<!ENTITY icirc  "&#238;"> <!-- latin small letter i with circumflex,
-                                  U+00EE ISOlat1 -->
-<!ENTITY iuml   "&#239;"> <!-- latin small letter i with diaeresis,
-                                  U+00EF ISOlat1 -->
-<!ENTITY eth    "&#240;"> <!-- latin small letter eth, U+00F0 ISOlat1 -->
-<!ENTITY ntilde "&#241;"> <!-- latin small letter n with tilde,
-                                  U+00F1 ISOlat1 -->
-<!ENTITY ograve "&#242;"> <!-- latin small letter o with grave,
-                                  U+00F2 ISOlat1 -->
-<!ENTITY oacute "&#243;"> <!-- latin small letter o with acute,
-                                  U+00F3 ISOlat1 -->
-<!ENTITY ocirc  "&#244;"> <!-- latin small letter o with circumflex,
-                                  U+00F4 ISOlat1 -->
-<!ENTITY otilde "&#245;"> <!-- latin small letter o with tilde,
-                                  U+00F5 ISOlat1 -->
-<!ENTITY ouml   "&#246;"> <!-- latin small letter o with diaeresis,
-                                  U+00F6 ISOlat1 -->
-<!ENTITY divide "&#247;"> <!-- division sign, U+00F7 ISOnum -->
-<!ENTITY oslash "&#248;"> <!-- latin small letter o with stroke,
-                                  = latin small letter o slash,
-                                  U+00F8 ISOlat1 -->
-<!ENTITY ugrave "&#249;"> <!-- latin small letter u with grave,
-                                  U+00F9 ISOlat1 -->
-<!ENTITY uacute "&#250;"> <!-- latin small letter u with acute,
-                                  U+00FA ISOlat1 -->
-<!ENTITY ucirc  "&#251;"> <!-- latin small letter u with circumflex,
-                                  U+00FB ISOlat1 -->
-<!ENTITY uuml   "&#252;"> <!-- latin small letter u with diaeresis,
-                                  U+00FC ISOlat1 -->
-<!ENTITY yacute "&#253;"> <!-- latin small letter y with acute,
-                                  U+00FD ISOlat1 -->
-<!ENTITY thorn  "&#254;"> <!-- latin small letter thorn,
-                                  U+00FE ISOlat1 -->
-<!ENTITY yuml   "&#255;"> <!-- latin small letter y with diaeresis,
-                                  U+00FF ISOlat1 -->
--- a/Admin/website/dtd/xhtml-special.ent	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-<!-- Special characters for XHTML -->
-
-<!-- Character entity set. Typical invocation:
-     <!ENTITY % HTMLspecial PUBLIC
-        "-//W3C//ENTITIES Special for XHTML//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
-     %HTMLspecial;
--->
-
-<!-- Portions (C) International Organization for Standardization 1986:
-     Permission to copy in any form is granted for use with
-     conforming SGML systems and applications as defined in
-     ISO 8879, provided this notice is included in all copies.
--->
-
-<!-- Relevant ISO entity set is given unless names are newly introduced.
-     New names (i.e., not in ISO 8879 list) do not clash with any
-     existing ISO 8879 entity names. ISO 10646 character numbers
-     are given for each character, in hex. values are decimal
-     conversions of the ISO 10646 values and refer to the document
-     character set. Names are Unicode names. 
--->
-
-<!-- C0 Controls and Basic Latin -->
-<!ENTITY quot    "&#34;"> <!--  quotation mark, U+0022 ISOnum -->
-<!ENTITY amp     "&#38;#38;"> <!--  ampersand, U+0026 ISOnum -->
-<!ENTITY lt      "&#38;#60;"> <!--  less-than sign, U+003C ISOnum -->
-<!ENTITY gt      "&#62;"> <!--  greater-than sign, U+003E ISOnum -->
-<!ENTITY apos	 "&#39;"> <!--  apostrophe = APL quote, U+0027 ISOnum -->
-
-<!-- Latin Extended-A -->
-<!ENTITY OElig   "&#338;"> <!--  latin capital ligature OE,
-                                    U+0152 ISOlat2 -->
-<!ENTITY oelig   "&#339;"> <!--  latin small ligature oe, U+0153 ISOlat2 -->
-<!-- ligature is a misnomer, this is a separate character in some languages -->
-<!ENTITY Scaron  "&#352;"> <!--  latin capital letter S with caron,
-                                    U+0160 ISOlat2 -->
-<!ENTITY scaron  "&#353;"> <!--  latin small letter s with caron,
-                                    U+0161 ISOlat2 -->
-<!ENTITY Yuml    "&#376;"> <!--  latin capital letter Y with diaeresis,
-                                    U+0178 ISOlat2 -->
-
-<!-- Spacing Modifier Letters -->
-<!ENTITY circ    "&#710;"> <!--  modifier letter circumflex accent,
-                                    U+02C6 ISOpub -->
-<!ENTITY tilde   "&#732;"> <!--  small tilde, U+02DC ISOdia -->
-
-<!-- General Punctuation -->
-<!ENTITY ensp    "&#8194;"> <!-- en space, U+2002 ISOpub -->
-<!ENTITY emsp    "&#8195;"> <!-- em space, U+2003 ISOpub -->
-<!ENTITY thinsp  "&#8201;"> <!-- thin space, U+2009 ISOpub -->
-<!ENTITY zwnj    "&#8204;"> <!-- zero width non-joiner,
-                                    U+200C NEW RFC 2070 -->
-<!ENTITY zwj     "&#8205;"> <!-- zero width joiner, U+200D NEW RFC 2070 -->
-<!ENTITY lrm     "&#8206;"> <!-- left-to-right mark, U+200E NEW RFC 2070 -->
-<!ENTITY rlm     "&#8207;"> <!-- right-to-left mark, U+200F NEW RFC 2070 -->
-<!ENTITY ndash   "&#8211;"> <!-- en dash, U+2013 ISOpub -->
-<!ENTITY mdash   "&#8212;"> <!-- em dash, U+2014 ISOpub -->
-<!ENTITY lsquo   "&#8216;"> <!-- left single quotation mark,
-                                    U+2018 ISOnum -->
-<!ENTITY rsquo   "&#8217;"> <!-- right single quotation mark,
-                                    U+2019 ISOnum -->
-<!ENTITY sbquo   "&#8218;"> <!-- single low-9 quotation mark, U+201A NEW -->
-<!ENTITY ldquo   "&#8220;"> <!-- left double quotation mark,
-                                    U+201C ISOnum -->
-<!ENTITY rdquo   "&#8221;"> <!-- right double quotation mark,
-                                    U+201D ISOnum -->
-<!ENTITY bdquo   "&#8222;"> <!-- double low-9 quotation mark, U+201E NEW -->
-<!ENTITY dagger  "&#8224;"> <!-- dagger, U+2020 ISOpub -->
-<!ENTITY Dagger  "&#8225;"> <!-- double dagger, U+2021 ISOpub -->
-<!ENTITY permil  "&#8240;"> <!-- per mille sign, U+2030 ISOtech -->
-<!ENTITY lsaquo  "&#8249;"> <!-- single left-pointing angle quotation mark,
-                                    U+2039 ISO proposed -->
-<!-- lsaquo is proposed but not yet ISO standardized -->
-<!ENTITY rsaquo  "&#8250;"> <!-- single right-pointing angle quotation mark,
-                                    U+203A ISO proposed -->
-<!-- rsaquo is proposed but not yet ISO standardized -->
-
-<!-- Currency Symbols -->
-<!ENTITY euro   "&#8364;"> <!--  euro sign, U+20AC NEW -->
--- a/Admin/website/dtd/xhtml-symbol.ent	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,237 +0,0 @@
-<!-- Mathematical, Greek and Symbolic characters for XHTML -->
-
-<!-- Character entity set. Typical invocation:
-     <!ENTITY % HTMLsymbol PUBLIC
-        "-//W3C//ENTITIES Symbols for XHTML//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
-     %HTMLsymbol;
--->
-
-<!-- Portions (C) International Organization for Standardization 1986:
-     Permission to copy in any form is granted for use with
-     conforming SGML systems and applications as defined in
-     ISO 8879, provided this notice is included in all copies.
--->
-
-<!-- Relevant ISO entity set is given unless names are newly introduced.
-     New names (i.e., not in ISO 8879 list) do not clash with any
-     existing ISO 8879 entity names. ISO 10646 character numbers
-     are given for each character, in hex. values are decimal
-     conversions of the ISO 10646 values and refer to the document
-     character set. Names are Unicode names. 
--->
-
-<!-- Latin Extended-B -->
-<!ENTITY fnof     "&#402;"> <!-- latin small letter f with hook = function
-                                    = florin, U+0192 ISOtech -->
-
-<!-- Greek -->
-<!ENTITY Alpha    "&#913;"> <!-- greek capital letter alpha, U+0391 -->
-<!ENTITY Beta     "&#914;"> <!-- greek capital letter beta, U+0392 -->
-<!ENTITY Gamma    "&#915;"> <!-- greek capital letter gamma,
-                                    U+0393 ISOgrk3 -->
-<!ENTITY Delta    "&#916;"> <!-- greek capital letter delta,
-                                    U+0394 ISOgrk3 -->
-<!ENTITY Epsilon  "&#917;"> <!-- greek capital letter epsilon, U+0395 -->
-<!ENTITY Zeta     "&#918;"> <!-- greek capital letter zeta, U+0396 -->
-<!ENTITY Eta      "&#919;"> <!-- greek capital letter eta, U+0397 -->
-<!ENTITY Theta    "&#920;"> <!-- greek capital letter theta,
-                                    U+0398 ISOgrk3 -->
-<!ENTITY Iota     "&#921;"> <!-- greek capital letter iota, U+0399 -->
-<!ENTITY Kappa    "&#922;"> <!-- greek capital letter kappa, U+039A -->
-<!ENTITY Lambda   "&#923;"> <!-- greek capital letter lamda,
-                                    U+039B ISOgrk3 -->
-<!ENTITY Mu       "&#924;"> <!-- greek capital letter mu, U+039C -->
-<!ENTITY Nu       "&#925;"> <!-- greek capital letter nu, U+039D -->
-<!ENTITY Xi       "&#926;"> <!-- greek capital letter xi, U+039E ISOgrk3 -->
-<!ENTITY Omicron  "&#927;"> <!-- greek capital letter omicron, U+039F -->
-<!ENTITY Pi       "&#928;"> <!-- greek capital letter pi, U+03A0 ISOgrk3 -->
-<!ENTITY Rho      "&#929;"> <!-- greek capital letter rho, U+03A1 -->
-<!-- there is no Sigmaf, and no U+03A2 character either -->
-<!ENTITY Sigma    "&#931;"> <!-- greek capital letter sigma,
-                                    U+03A3 ISOgrk3 -->
-<!ENTITY Tau      "&#932;"> <!-- greek capital letter tau, U+03A4 -->
-<!ENTITY Upsilon  "&#933;"> <!-- greek capital letter upsilon,
-                                    U+03A5 ISOgrk3 -->
-<!ENTITY Phi      "&#934;"> <!-- greek capital letter phi,
-                                    U+03A6 ISOgrk3 -->
-<!ENTITY Chi      "&#935;"> <!-- greek capital letter chi, U+03A7 -->
-<!ENTITY Psi      "&#936;"> <!-- greek capital letter psi,
-                                    U+03A8 ISOgrk3 -->
-<!ENTITY Omega    "&#937;"> <!-- greek capital letter omega,
-                                    U+03A9 ISOgrk3 -->
-
-<!ENTITY alpha    "&#945;"> <!-- greek small letter alpha,
-                                    U+03B1 ISOgrk3 -->
-<!ENTITY beta     "&#946;"> <!-- greek small letter beta, U+03B2 ISOgrk3 -->
-<!ENTITY gamma    "&#947;"> <!-- greek small letter gamma,
-                                    U+03B3 ISOgrk3 -->
-<!ENTITY delta    "&#948;"> <!-- greek small letter delta,
-                                    U+03B4 ISOgrk3 -->
-<!ENTITY epsilon  "&#949;"> <!-- greek small letter epsilon,
-                                    U+03B5 ISOgrk3 -->
-<!ENTITY zeta     "&#950;"> <!-- greek small letter zeta, U+03B6 ISOgrk3 -->
-<!ENTITY eta      "&#951;"> <!-- greek small letter eta, U+03B7 ISOgrk3 -->
-<!ENTITY theta    "&#952;"> <!-- greek small letter theta,
-                                    U+03B8 ISOgrk3 -->
-<!ENTITY iota     "&#953;"> <!-- greek small letter iota, U+03B9 ISOgrk3 -->
-<!ENTITY kappa    "&#954;"> <!-- greek small letter kappa,
-                                    U+03BA ISOgrk3 -->
-<!ENTITY lambda   "&#955;"> <!-- greek small letter lamda,
-                                    U+03BB ISOgrk3 -->
-<!ENTITY mu       "&#956;"> <!-- greek small letter mu, U+03BC ISOgrk3 -->
-<!ENTITY nu       "&#957;"> <!-- greek small letter nu, U+03BD ISOgrk3 -->
-<!ENTITY xi       "&#958;"> <!-- greek small letter xi, U+03BE ISOgrk3 -->
-<!ENTITY omicron  "&#959;"> <!-- greek small letter omicron, U+03BF NEW -->
-<!ENTITY pi       "&#960;"> <!-- greek small letter pi, U+03C0 ISOgrk3 -->
-<!ENTITY rho      "&#961;"> <!-- greek small letter rho, U+03C1 ISOgrk3 -->
-<!ENTITY sigmaf   "&#962;"> <!-- greek small letter final sigma,
-                                    U+03C2 ISOgrk3 -->
-<!ENTITY sigma    "&#963;"> <!-- greek small letter sigma,
-                                    U+03C3 ISOgrk3 -->
-<!ENTITY tau      "&#964;"> <!-- greek small letter tau, U+03C4 ISOgrk3 -->
-<!ENTITY upsilon  "&#965;"> <!-- greek small letter upsilon,
-                                    U+03C5 ISOgrk3 -->
-<!ENTITY phi      "&#966;"> <!-- greek small letter phi, U+03C6 ISOgrk3 -->
-<!ENTITY chi      "&#967;"> <!-- greek small letter chi, U+03C7 ISOgrk3 -->
-<!ENTITY psi      "&#968;"> <!-- greek small letter psi, U+03C8 ISOgrk3 -->
-<!ENTITY omega    "&#969;"> <!-- greek small letter omega,
-                                    U+03C9 ISOgrk3 -->
-<!ENTITY thetasym "&#977;"> <!-- greek theta symbol,
-                                    U+03D1 NEW -->
-<!ENTITY upsih    "&#978;"> <!-- greek upsilon with hook symbol,
-                                    U+03D2 NEW -->
-<!ENTITY piv      "&#982;"> <!-- greek pi symbol, U+03D6 ISOgrk3 -->
-
-<!-- General Punctuation -->
-<!ENTITY bull     "&#8226;"> <!-- bullet = black small circle,
-                                     U+2022 ISOpub  -->
-<!-- bullet is NOT the same as bullet operator, U+2219 -->
-<!ENTITY hellip   "&#8230;"> <!-- horizontal ellipsis = three dot leader,
-                                     U+2026 ISOpub  -->
-<!ENTITY prime    "&#8242;"> <!-- prime = minutes = feet, U+2032 ISOtech -->
-<!ENTITY Prime    "&#8243;"> <!-- double prime = seconds = inches,
-                                     U+2033 ISOtech -->
-<!ENTITY oline    "&#8254;"> <!-- overline = spacing overscore,
-                                     U+203E NEW -->
-<!ENTITY frasl    "&#8260;"> <!-- fraction slash, U+2044 NEW -->
-
-<!-- Letterlike Symbols -->
-<!ENTITY weierp   "&#8472;"> <!-- script capital P = power set
-                                     = Weierstrass p, U+2118 ISOamso -->
-<!ENTITY image    "&#8465;"> <!-- black-letter capital I = imaginary part,
-                                     U+2111 ISOamso -->
-<!ENTITY real     "&#8476;"> <!-- black-letter capital R = real part symbol,
-                                     U+211C ISOamso -->
-<!ENTITY trade    "&#8482;"> <!-- trade mark sign, U+2122 ISOnum -->
-<!ENTITY alefsym  "&#8501;"> <!-- alef symbol = first transfinite cardinal,
-                                     U+2135 NEW -->
-<!-- alef symbol is NOT the same as hebrew letter alef,
-     U+05D0 although the same glyph could be used to depict both characters -->
-
-<!-- Arrows -->
-<!ENTITY larr     "&#8592;"> <!-- leftwards arrow, U+2190 ISOnum -->
-<!ENTITY uarr     "&#8593;"> <!-- upwards arrow, U+2191 ISOnum-->
-<!ENTITY rarr     "&#8594;"> <!-- rightwards arrow, U+2192 ISOnum -->
-<!ENTITY darr     "&#8595;"> <!-- downwards arrow, U+2193 ISOnum -->
-<!ENTITY harr     "&#8596;"> <!-- left right arrow, U+2194 ISOamsa -->
-<!ENTITY crarr    "&#8629;"> <!-- downwards arrow with corner leftwards
-                                     = carriage return, U+21B5 NEW -->
-<!ENTITY lArr     "&#8656;"> <!-- leftwards double arrow, U+21D0 ISOtech -->
-<!-- Unicode does not say that lArr is the same as the 'is implied by' arrow
-    but also does not have any other character for that function. So lArr can
-    be used for 'is implied by' as ISOtech suggests -->
-<!ENTITY uArr     "&#8657;"> <!-- upwards double arrow, U+21D1 ISOamsa -->
-<!ENTITY rArr     "&#8658;"> <!-- rightwards double arrow,
-                                     U+21D2 ISOtech -->
-<!-- Unicode does not say this is the 'implies' character but does not have 
-     another character with this function so rArr can be used for 'implies'
-     as ISOtech suggests -->
-<!ENTITY dArr     "&#8659;"> <!-- downwards double arrow, U+21D3 ISOamsa -->
-<!ENTITY hArr     "&#8660;"> <!-- left right double arrow,
-                                     U+21D4 ISOamsa -->
-
-<!-- Mathematical Operators -->
-<!ENTITY forall   "&#8704;"> <!-- for all, U+2200 ISOtech -->
-<!ENTITY part     "&#8706;"> <!-- partial differential, U+2202 ISOtech  -->
-<!ENTITY exist    "&#8707;"> <!-- there exists, U+2203 ISOtech -->
-<!ENTITY empty    "&#8709;"> <!-- empty set = null set, U+2205 ISOamso -->
-<!ENTITY nabla    "&#8711;"> <!-- nabla = backward difference,
-                                     U+2207 ISOtech -->
-<!ENTITY isin     "&#8712;"> <!-- element of, U+2208 ISOtech -->
-<!ENTITY notin    "&#8713;"> <!-- not an element of, U+2209 ISOtech -->
-<!ENTITY ni       "&#8715;"> <!-- contains as member, U+220B ISOtech -->
-<!ENTITY prod     "&#8719;"> <!-- n-ary product = product sign,
-                                     U+220F ISOamsb -->
-<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
-     the same glyph might be used for both -->
-<!ENTITY sum      "&#8721;"> <!-- n-ary summation, U+2211 ISOamsb -->
-<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
-     though the same glyph might be used for both -->
-<!ENTITY minus    "&#8722;"> <!-- minus sign, U+2212 ISOtech -->
-<!ENTITY lowast   "&#8727;"> <!-- asterisk operator, U+2217 ISOtech -->
-<!ENTITY radic    "&#8730;"> <!-- square root = radical sign,
-                                     U+221A ISOtech -->
-<!ENTITY prop     "&#8733;"> <!-- proportional to, U+221D ISOtech -->
-<!ENTITY infin    "&#8734;"> <!-- infinity, U+221E ISOtech -->
-<!ENTITY ang      "&#8736;"> <!-- angle, U+2220 ISOamso -->
-<!ENTITY and      "&#8743;"> <!-- logical and = wedge, U+2227 ISOtech -->
-<!ENTITY or       "&#8744;"> <!-- logical or = vee, U+2228 ISOtech -->
-<!ENTITY cap      "&#8745;"> <!-- intersection = cap, U+2229 ISOtech -->
-<!ENTITY cup      "&#8746;"> <!-- union = cup, U+222A ISOtech -->
-<!ENTITY int      "&#8747;"> <!-- integral, U+222B ISOtech -->
-<!ENTITY there4   "&#8756;"> <!-- therefore, U+2234 ISOtech -->
-<!ENTITY sim      "&#8764;"> <!-- tilde operator = varies with = similar to,
-                                     U+223C ISOtech -->
-<!-- tilde operator is NOT the same character as the tilde, U+007E,
-     although the same glyph might be used to represent both  -->
-<!ENTITY cong     "&#8773;"> <!-- approximately equal to, U+2245 ISOtech -->
-<!ENTITY asymp    "&#8776;"> <!-- almost equal to = asymptotic to,
-                                     U+2248 ISOamsr -->
-<!ENTITY ne       "&#8800;"> <!-- not equal to, U+2260 ISOtech -->
-<!ENTITY equiv    "&#8801;"> <!-- identical to, U+2261 ISOtech -->
-<!ENTITY le       "&#8804;"> <!-- less-than or equal to, U+2264 ISOtech -->
-<!ENTITY ge       "&#8805;"> <!-- greater-than or equal to,
-                                     U+2265 ISOtech -->
-<!ENTITY sub      "&#8834;"> <!-- subset of, U+2282 ISOtech -->
-<!ENTITY sup      "&#8835;"> <!-- superset of, U+2283 ISOtech -->
-<!ENTITY nsub     "&#8836;"> <!-- not a subset of, U+2284 ISOamsn -->
-<!ENTITY sube     "&#8838;"> <!-- subset of or equal to, U+2286 ISOtech -->
-<!ENTITY supe     "&#8839;"> <!-- superset of or equal to,
-                                     U+2287 ISOtech -->
-<!ENTITY oplus    "&#8853;"> <!-- circled plus = direct sum,
-                                     U+2295 ISOamsb -->
-<!ENTITY otimes   "&#8855;"> <!-- circled times = vector product,
-                                     U+2297 ISOamsb -->
-<!ENTITY perp     "&#8869;"> <!-- up tack = orthogonal to = perpendicular,
-                                     U+22A5 ISOtech -->
-<!ENTITY sdot     "&#8901;"> <!-- dot operator, U+22C5 ISOamsb -->
-<!-- dot operator is NOT the same character as U+00B7 middle dot -->
-
-<!-- Miscellaneous Technical -->
-<!ENTITY lceil    "&#8968;"> <!-- left ceiling = APL upstile,
-                                     U+2308 ISOamsc  -->
-<!ENTITY rceil    "&#8969;"> <!-- right ceiling, U+2309 ISOamsc  -->
-<!ENTITY lfloor   "&#8970;"> <!-- left floor = APL downstile,
-                                     U+230A ISOamsc  -->
-<!ENTITY rfloor   "&#8971;"> <!-- right floor, U+230B ISOamsc  -->
-<!ENTITY lang     "&#9001;"> <!-- left-pointing angle bracket = bra,
-                                     U+2329 ISOtech -->
-<!-- lang is NOT the same character as U+003C 'less than sign' 
-     or U+2039 'single left-pointing angle quotation mark' -->
-<!ENTITY rang     "&#9002;"> <!-- right-pointing angle bracket = ket,
-                                     U+232A ISOtech -->
-<!-- rang is NOT the same character as U+003E 'greater than sign' 
-     or U+203A 'single right-pointing angle quotation mark' -->
-
-<!-- Geometric Shapes -->
-<!ENTITY loz      "&#9674;"> <!-- lozenge, U+25CA ISOpub -->
-
-<!-- Miscellaneous Symbols -->
-<!ENTITY spades   "&#9824;"> <!-- black spade suit, U+2660 ISOpub -->
-<!-- black here seems to mean filled as opposed to hollow -->
-<!ENTITY clubs    "&#9827;"> <!-- black club suit = shamrock,
-                                     U+2663 ISOpub -->
-<!ENTITY hearts   "&#9829;"> <!-- black heart suit = valentine,
-                                     U+2665 ISOpub -->
-<!ENTITY diams    "&#9830;"> <!-- black diamond suit, U+2666 ISOpub -->
--- a/Admin/website/dtd/xhtml1-frameset.dtd	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1235 +0,0 @@
-<!--
-   Extensible HTML version 1.0 Frameset DTD
-
-   This is the same as HTML 4 Frameset except for
-   changes due to the differences between XML and SGML.
-
-   Namespace = http://www.w3.org/1999/xhtml
-
-   For further information, see: http://www.w3.org/TR/xhtml1
-
-   Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
-   All Rights Reserved. 
-
-   This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-   PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
-   SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"
-
-   $Revision$
-   $Date$
-
--->
-
-<!--================ Character mnemonic entities =========================-->
-
-<!ENTITY % HTMLlat1 PUBLIC
-   "-//W3C//ENTITIES Latin 1 for XHTML//EN"
-   "xhtml-lat1.ent">
-%HTMLlat1;
-
-<!ENTITY % HTMLsymbol PUBLIC
-   "-//W3C//ENTITIES Symbols for XHTML//EN"
-   "xhtml-symbol.ent">
-%HTMLsymbol;
-
-<!ENTITY % HTMLspecial PUBLIC
-   "-//W3C//ENTITIES Special for XHTML//EN"
-   "xhtml-special.ent">
-%HTMLspecial;
-
-<!--================== Imported Names ====================================-->
-
-<!ENTITY % ContentType "CDATA">
-    <!-- media type, as per [RFC2045] -->
-
-<!ENTITY % ContentTypes "CDATA">
-    <!-- comma-separated list of media types, as per [RFC2045] -->
-
-<!ENTITY % Charset "CDATA">
-    <!-- a character encoding, as per [RFC2045] -->
-
-<!ENTITY % Charsets "CDATA">
-    <!-- a space separated list of character encodings, as per [RFC2045] -->
-
-<!ENTITY % LanguageCode "NMTOKEN">
-    <!-- a language code, as per [RFC3066] -->
-
-<!ENTITY % Character "CDATA">
-    <!-- a single character, as per section 2.2 of [XML] -->
-
-<!ENTITY % Number "CDATA">
-    <!-- one or more digits -->
-
-<!ENTITY % LinkTypes "CDATA">
-    <!-- space-separated list of link types -->
-
-<!ENTITY % MediaDesc "CDATA">
-    <!-- single or comma-separated list of media descriptors -->
-
-<!ENTITY % URI "CDATA">
-    <!-- a Uniform Resource Identifier, see [RFC2396] -->
-
-<!ENTITY % UriList "CDATA">
-    <!-- a space separated list of Uniform Resource Identifiers -->
-
-<!ENTITY % Datetime "CDATA">
-    <!-- date and time information. ISO date format -->
-
-<!ENTITY % Script "CDATA">
-    <!-- script expression -->
-
-<!ENTITY % StyleSheet "CDATA">
-    <!-- style sheet data -->
-
-<!ENTITY % Text "CDATA">
-    <!-- used for titles etc. -->
-
-<!ENTITY % FrameTarget "NMTOKEN">
-    <!-- render in this frame -->
-
-<!ENTITY % Length "CDATA">
-    <!-- nn for pixels or nn% for percentage length -->
-
-<!ENTITY % MultiLength "CDATA">
-    <!-- pixel, percentage, or relative -->
-
-<!ENTITY % MultiLengths "CDATA">
-    <!-- comma-separated list of MultiLength -->
-
-<!ENTITY % Pixels "CDATA">
-    <!-- integer representing length in pixels -->
-
-<!-- these are used for image maps -->
-
-<!ENTITY % Shape "(rect|circle|poly|default)">
-
-<!ENTITY % Coords "CDATA">
-    <!-- comma separated list of lengths -->
-
-<!-- used for object, applet, img, input and iframe -->
-<!ENTITY % ImgAlign "(top|middle|bottom|left|right)">
-
-<!-- a color using sRGB: #RRGGBB as Hex values -->
-<!ENTITY % Color "CDATA">
-
-<!-- There are also 16 widely known color names with their sRGB values:
-
-    Black  = #000000    Green  = #008000
-    Silver = #C0C0C0    Lime   = #00FF00
-    Gray   = #808080    Olive  = #808000
-    White  = #FFFFFF    Yellow = #FFFF00
-    Maroon = #800000    Navy   = #000080
-    Red    = #FF0000    Blue   = #0000FF
-    Purple = #800080    Teal   = #008080
-    Fuchsia= #FF00FF    Aqua   = #00FFFF
--->
-
-<!--=================== Generic Attributes ===============================-->
-
-<!-- core attributes common to most elements
-  id       document-wide unique id
-  class    space separated list of classes
-  style    associated style info
-  title    advisory title/amplification
--->
-<!ENTITY % coreattrs
- "id          ID             #IMPLIED
-  class       CDATA          #IMPLIED
-  style       %StyleSheet;   #IMPLIED
-  title       %Text;         #IMPLIED"
-  >
-
-<!-- internationalization attributes
-  lang        language code (backwards compatible)
-  xml:lang    language code (as per XML 1.0 spec)
-  dir         direction for weak/neutral text
--->
-<!ENTITY % i18n
- "lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #IMPLIED"
-  >
-
-<!-- attributes for common UI events
-  onclick     a pointer button was clicked
-  ondblclick  a pointer button was double clicked
-  onmousedown a pointer button was pressed down
-  onmouseup   a pointer button was released
-  onmousemove a pointer was moved onto the element
-  onmouseout  a pointer was moved away from the element
-  onkeypress  a key was pressed and released
-  onkeydown   a key was pressed down
-  onkeyup     a key was released
--->
-<!ENTITY % events
- "onclick     %Script;       #IMPLIED
-  ondblclick  %Script;       #IMPLIED
-  onmousedown %Script;       #IMPLIED
-  onmouseup   %Script;       #IMPLIED
-  onmouseover %Script;       #IMPLIED
-  onmousemove %Script;       #IMPLIED
-  onmouseout  %Script;       #IMPLIED
-  onkeypress  %Script;       #IMPLIED
-  onkeydown   %Script;       #IMPLIED
-  onkeyup     %Script;       #IMPLIED"
-  >
-
-<!-- attributes for elements that can get the focus
-  accesskey   accessibility key character
-  tabindex    position in tabbing order
-  onfocus     the element got the focus
-  onblur      the element lost the focus
--->
-<!ENTITY % focus
- "accesskey   %Character;    #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED"
-  >
-
-<!ENTITY % attrs "%coreattrs; %i18n; %events;">
-
-<!-- text alignment for p, div, h1-h6. The default is
-     align="left" for ltr headings, "right" for rtl -->
-
-<!ENTITY % TextAlign "align (left|center|right|justify) #IMPLIED">
-
-<!--=================== Text Elements ====================================-->
-
-<!ENTITY % special.extra
-   "object | applet | img | map | iframe">
-	
-<!ENTITY % special.basic
-	"br | span | bdo">
-
-<!ENTITY % special
-   "%special.basic; | %special.extra;">
-
-<!ENTITY % fontstyle.extra "big | small | font | basefont">
-
-<!ENTITY % fontstyle.basic "tt | i | b | u
-                      | s | strike ">
-
-<!ENTITY % fontstyle "%fontstyle.basic; | %fontstyle.extra;">
-
-<!ENTITY % phrase.extra "sub | sup">
-<!ENTITY % phrase.basic "em | strong | dfn | code | q |
-                   samp | kbd | var | cite | abbr | acronym">
-
-<!ENTITY % phrase "%phrase.basic; | %phrase.extra;">
-
-<!ENTITY % inline.forms "input | select | textarea | label | button">
-
-<!-- these can occur at block or inline level -->
-<!ENTITY % misc.inline "ins | del | script">
-
-<!-- these can only occur at block level -->
-<!ENTITY % misc "noscript | %misc.inline;">
-
-
-<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
-
-<!-- %Inline; covers inline or "text-level" elements -->
-<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
-
-<!--================== Block level elements ==============================-->
-
-<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
-<!ENTITY % lists "ul | ol | dl | menu | dir">
-<!ENTITY % blocktext "pre | hr | blockquote | address | center">
-
-<!ENTITY % block
-    "p | %heading; | div | %lists; | %blocktext; | isindex | fieldset | table">
-
-<!-- %Flow; mixes block and inline and is used for list items etc. -->
-<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
-
-<!--================== Content models for exclusions =====================-->
-
-<!-- a elements use %Inline; excluding a -->
-
-<!ENTITY % a.content
-   "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">
-
-<!-- pre uses %Inline excluding img, object, applet, big, small,
-     sub, sup, font, or basefont -->
-
-<!ENTITY % pre.content
-   "(#PCDATA | a | %special.basic; | %fontstyle.basic; | %phrase.basic; |
-	   %inline.forms; | %misc.inline;)*">
-
-
-<!-- form uses %Flow; excluding form -->
-
-<!ENTITY % form.content "(#PCDATA | %block; | %inline; | %misc;)*">
-
-<!-- button uses %Flow; but excludes a, form, form controls, iframe -->
-
-<!ENTITY % button.content
-   "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
-      table | br | span | bdo | object | applet | img | map |
-      %fontstyle; | %phrase; | %misc;)*">
-
-<!--================ Document Structure ==================================-->
-
-<!-- the namespace URI designates the document profile -->
-
-<!ELEMENT html (head, frameset)>
-<!ATTLIST html
-  %i18n;
-  id          ID             #IMPLIED
-  xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
-  >
-
-<!--================ Document Head =======================================-->
-
-<!ENTITY % head.misc "(script|style|meta|link|object|isindex)*">
-
-<!-- content model is %head.misc; combined with a single
-     title and an optional base element in any order -->
-
-<!ELEMENT head (%head.misc;,
-     ((title, %head.misc;, (base, %head.misc;)?) |
-      (base, %head.misc;, (title, %head.misc;))))>
-
-<!ATTLIST head
-  %i18n;
-  id          ID             #IMPLIED
-  profile     %URI;          #IMPLIED
-  >
-
-<!-- The title element is not considered part of the flow of text.
-       It should be displayed, for example as the page header or
-       window title. Exactly one title is required per document.
-    -->
-<!ELEMENT title (#PCDATA)>
-<!ATTLIST title 
-  %i18n;
-  id          ID             #IMPLIED
-  >
-
-<!-- document base URI -->
-
-<!ELEMENT base EMPTY>
-<!ATTLIST base
-  id          ID             #IMPLIED
-  href        %URI;          #IMPLIED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!-- generic metainformation -->
-<!ELEMENT meta EMPTY>
-<!ATTLIST meta
-  %i18n;
-  id          ID             #IMPLIED
-  http-equiv  CDATA          #IMPLIED
-  name        CDATA          #IMPLIED
-  content     CDATA          #REQUIRED
-  scheme      CDATA          #IMPLIED
-  >
-
-<!--
-  Relationship values can be used in principle:
-
-   a) for document specific toolbars/menus when used
-      with the link element in document head e.g.
-        start, contents, previous, next, index, end, help
-   b) to link to a separate style sheet (rel="stylesheet")
-   c) to make a link to a script (rel="script")
-   d) by stylesheets to control how collections of
-      html nodes are rendered into printed documents
-   e) to make a link to a printable version of this document
-      e.g. a PostScript or PDF version (rel="alternate" media="print")
--->
-
-<!ELEMENT link EMPTY>
-<!ATTLIST link
-  %attrs;
-  charset     %Charset;      #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  type        %ContentType;  #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  media       %MediaDesc;    #IMPLIED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!-- style info, which may include CDATA sections -->
-<!ELEMENT style (#PCDATA)>
-<!ATTLIST style
-  %i18n;
-  id          ID             #IMPLIED
-  type        %ContentType;  #REQUIRED
-  media       %MediaDesc;    #IMPLIED
-  title       %Text;         #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- script statements, which may include CDATA sections -->
-<!ELEMENT script (#PCDATA)>
-<!ATTLIST script
-  id          ID             #IMPLIED
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #REQUIRED
-  language    CDATA          #IMPLIED
-  src         %URI;          #IMPLIED
-  defer       (defer)        #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- alternate content container for non script-based rendering -->
-
-<!ELEMENT noscript %Flow;>
-<!ATTLIST noscript
-  %attrs;
-  >
-
-<!--======================= Frames =======================================-->
-
-<!-- only one noframes element permitted per document -->
-
-<!ELEMENT frameset (frameset|frame|noframes)*>
-<!ATTLIST frameset
-  %coreattrs;
-  rows        %MultiLengths; #IMPLIED
-  cols        %MultiLengths; #IMPLIED
-  onload      %Script;       #IMPLIED
-  onunload    %Script;       #IMPLIED
-  >
-
-<!-- reserved frame names start with "_" otherwise starts with letter -->
-
-<!-- tiled window within frameset -->
-
-<!ELEMENT frame EMPTY>
-<!ATTLIST frame
-  %coreattrs;
-  longdesc    %URI;          #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  src         %URI;          #IMPLIED
-  frameborder (1|0)          "1"
-  marginwidth %Pixels;       #IMPLIED
-  marginheight %Pixels;      #IMPLIED
-  noresize    (noresize)     #IMPLIED
-  scrolling   (yes|no|auto)  "auto"
-  >
-
-<!-- inline subwindow -->
-
-<!ELEMENT iframe %Flow;>
-<!ATTLIST iframe
-  %coreattrs;
-  longdesc    %URI;          #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  src         %URI;          #IMPLIED
-  frameborder (1|0)          "1"
-  marginwidth %Pixels;       #IMPLIED
-  marginheight %Pixels;      #IMPLIED
-  scrolling   (yes|no|auto)  "auto"
-  align       %ImgAlign;     #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  >
-
-<!-- alternate content container for non frame-based rendering -->
-
-<!ELEMENT noframes (body)>
-<!ATTLIST noframes
-  %attrs;
-  >
-
-<!--=================== Document Body ====================================-->
-
-<!ELEMENT body %Flow;>
-<!ATTLIST body
-  %attrs;
-  onload      %Script;       #IMPLIED
-  onunload    %Script;       #IMPLIED
-  background  %URI;          #IMPLIED
-  bgcolor     %Color;        #IMPLIED
-  text        %Color;        #IMPLIED
-  link        %Color;        #IMPLIED
-  vlink       %Color;        #IMPLIED
-  alink       %Color;        #IMPLIED
-  >
-
-<!ELEMENT div %Flow;>  <!-- generic language/style container -->
-<!ATTLIST div
-  %attrs;
-  %TextAlign;
-  >
-
-<!--=================== Paragraphs =======================================-->
-
-<!ELEMENT p %Inline;>
-<!ATTLIST p
-  %attrs;
-  %TextAlign;
-  >
-
-<!--=================== Headings =========================================-->
-
-<!--
-  There are six levels of headings from h1 (the most important)
-  to h6 (the least important).
--->
-
-<!ELEMENT h1  %Inline;>
-<!ATTLIST h1
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h2 %Inline;>
-<!ATTLIST h2
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h3 %Inline;>
-<!ATTLIST h3
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h4 %Inline;>
-<!ATTLIST h4
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h5 %Inline;>
-<!ATTLIST h5
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h6 %Inline;>
-<!ATTLIST h6
-  %attrs;
-  %TextAlign;
-  >
-
-<!--=================== Lists ============================================-->
-
-<!-- Unordered list bullet styles -->
-
-<!ENTITY % ULStyle "(disc|square|circle)">
-
-<!-- Unordered list -->
-
-<!ELEMENT ul (li)+>
-<!ATTLIST ul
-  %attrs;
-  type        %ULStyle;     #IMPLIED
-  compact     (compact)     #IMPLIED
-  >
-
-<!-- Ordered list numbering style
-
-    1   arabic numbers      1, 2, 3, ...
-    a   lower alpha         a, b, c, ...
-    A   upper alpha         A, B, C, ...
-    i   lower roman         i, ii, iii, ...
-    I   upper roman         I, II, III, ...
-
-    The style is applied to the sequence number which by default
-    is reset to 1 for the first list item in an ordered list.
--->
-<!ENTITY % OLStyle "CDATA">
-
-<!-- Ordered (numbered) list -->
-
-<!ELEMENT ol (li)+>
-<!ATTLIST ol
-  %attrs;
-  type        %OLStyle;      #IMPLIED
-  compact     (compact)      #IMPLIED
-  start       %Number;       #IMPLIED
-  >
-
-<!-- single column list (DEPRECATED) --> 
-<!ELEMENT menu (li)+>
-<!ATTLIST menu
-  %attrs;
-  compact     (compact)     #IMPLIED
-  >
-
-<!-- multiple column list (DEPRECATED) --> 
-<!ELEMENT dir (li)+>
-<!ATTLIST dir
-  %attrs;
-  compact     (compact)     #IMPLIED
-  >
-
-<!-- LIStyle is constrained to: "(%ULStyle;|%OLStyle;)" -->
-<!ENTITY % LIStyle "CDATA">
-
-<!-- list item -->
-
-<!ELEMENT li %Flow;>
-<!ATTLIST li
-  %attrs;
-  type        %LIStyle;      #IMPLIED
-  value       %Number;       #IMPLIED
-  >
-
-<!-- definition lists - dt for term, dd for its definition -->
-
-<!ELEMENT dl (dt|dd)+>
-<!ATTLIST dl
-  %attrs;
-  compact     (compact)      #IMPLIED
-  >
-
-<!ELEMENT dt %Inline;>
-<!ATTLIST dt
-  %attrs;
-  >
-
-<!ELEMENT dd %Flow;>
-<!ATTLIST dd
-  %attrs;
-  >
-
-<!--=================== Address ==========================================-->
-
-<!-- information on author -->
-
-<!ELEMENT address (#PCDATA | %inline; | %misc.inline; | p)*>
-<!ATTLIST address
-  %attrs;
-  >
-
-<!--=================== Horizontal Rule ==================================-->
-
-<!ELEMENT hr EMPTY>
-<!ATTLIST hr
-  %attrs;
-  align       (left|center|right) #IMPLIED
-  noshade     (noshade)      #IMPLIED
-  size        %Pixels;       #IMPLIED
-  width       %Length;       #IMPLIED
-  >
-
-<!--=================== Preformatted Text ================================-->
-
-<!-- content is %Inline; excluding 
-        "img|object|applet|big|small|sub|sup|font|basefont" -->
-
-<!ELEMENT pre %pre.content;>
-<!ATTLIST pre
-  %attrs;
-  width       %Number;      #IMPLIED
-  xml:space   (preserve)    #FIXED 'preserve'
-  >
-
-<!--=================== Block-like Quotes ================================-->
-
-<!ELEMENT blockquote %Flow;>
-<!ATTLIST blockquote
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!--=================== Text alignment ===================================-->
-
-<!-- center content -->
-<!ELEMENT center %Flow;>
-<!ATTLIST center
-  %attrs;
-  >
-
-<!--=================== Inserted/Deleted Text ============================-->
-
-
-<!--
-  ins/del are allowed in block and inline content, but its
-  inappropriate to include block content within an ins element
-  occurring in inline content.
--->
-<!ELEMENT ins %Flow;>
-<!ATTLIST ins
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!ELEMENT del %Flow;>
-<!ATTLIST del
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!--================== The Anchor Element ================================-->
-
-<!-- content is %Inline; except that anchors shouldn't be nested -->
-
-<!ELEMENT a %a.content;>
-<!ATTLIST a
-  %attrs;
-  %focus;
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!--===================== Inline Elements ================================-->
-
-<!ELEMENT span %Inline;> <!-- generic language/style container -->
-<!ATTLIST span
-  %attrs;
-  >
-
-<!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
-<!ATTLIST bdo
-  %coreattrs;
-  %events;
-  lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #REQUIRED
-  >
-
-<!ELEMENT br EMPTY>   <!-- forced line break -->
-<!ATTLIST br
-  %coreattrs;
-  clear       (left|all|right|none) "none"
-  >
-
-<!ELEMENT em %Inline;>   <!-- emphasis -->
-<!ATTLIST em %attrs;>
-
-<!ELEMENT strong %Inline;>   <!-- strong emphasis -->
-<!ATTLIST strong %attrs;>
-
-<!ELEMENT dfn %Inline;>   <!-- definitional -->
-<!ATTLIST dfn %attrs;>
-
-<!ELEMENT code %Inline;>   <!-- program code -->
-<!ATTLIST code %attrs;>
-
-<!ELEMENT samp %Inline;>   <!-- sample -->
-<!ATTLIST samp %attrs;>
-
-<!ELEMENT kbd %Inline;>  <!-- something user would type -->
-<!ATTLIST kbd %attrs;>
-
-<!ELEMENT var %Inline;>   <!-- variable -->
-<!ATTLIST var %attrs;>
-
-<!ELEMENT cite %Inline;>   <!-- citation -->
-<!ATTLIST cite %attrs;>
-
-<!ELEMENT abbr %Inline;>   <!-- abbreviation -->
-<!ATTLIST abbr %attrs;>
-
-<!ELEMENT acronym %Inline;>   <!-- acronym -->
-<!ATTLIST acronym %attrs;>
-
-<!ELEMENT q %Inline;>   <!-- inlined quote -->
-<!ATTLIST q
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!ELEMENT sub %Inline;> <!-- subscript -->
-<!ATTLIST sub %attrs;>
-
-<!ELEMENT sup %Inline;> <!-- superscript -->
-<!ATTLIST sup %attrs;>
-
-<!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
-<!ATTLIST tt %attrs;>
-
-<!ELEMENT i %Inline;>   <!-- italic font -->
-<!ATTLIST i %attrs;>
-
-<!ELEMENT b %Inline;>   <!-- bold font -->
-<!ATTLIST b %attrs;>
-
-<!ELEMENT big %Inline;>   <!-- bigger font -->
-<!ATTLIST big %attrs;>
-
-<!ELEMENT small %Inline;>   <!-- smaller font -->
-<!ATTLIST small %attrs;>
-
-<!ELEMENT u %Inline;>   <!-- underline -->
-<!ATTLIST u %attrs;>
-
-<!ELEMENT s %Inline;>   <!-- strike-through -->
-<!ATTLIST s %attrs;>
-
-<!ELEMENT strike %Inline;>   <!-- strike-through -->
-<!ATTLIST strike %attrs;>
-
-<!ELEMENT basefont EMPTY>  <!-- base font size -->
-<!ATTLIST basefont
-  id          ID             #IMPLIED
-  size        CDATA          #REQUIRED
-  color       %Color;        #IMPLIED
-  face        CDATA          #IMPLIED
-  >
-
-<!ELEMENT font %Inline;> <!-- local change to font -->
-<!ATTLIST font
-  %coreattrs;
-  %i18n;
-  size        CDATA          #IMPLIED
-  color       %Color;        #IMPLIED
-  face        CDATA          #IMPLIED
-  >
-
-<!--==================== Object ======================================-->
-<!--
-  object is used to embed objects as part of HTML pages.
-  param elements should precede other content. Parameters
-  can also be expressed as attribute/value pairs on the
-  object element itself when brevity is desired.
--->
-
-<!ELEMENT object (#PCDATA | param | %block; | form |%inline; | %misc;)*>
-<!ATTLIST object
-  %attrs;
-  declare     (declare)      #IMPLIED
-  classid     %URI;          #IMPLIED
-  codebase    %URI;          #IMPLIED
-  data        %URI;          #IMPLIED
-  type        %ContentType;  #IMPLIED
-  codetype    %ContentType;  #IMPLIED
-  archive     %UriList;      #IMPLIED
-  standby     %Text;         #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  align       %ImgAlign;     #IMPLIED
-  border      %Pixels;       #IMPLIED
-  hspace      %Pixels;       #IMPLIED
-  vspace      %Pixels;       #IMPLIED
-  >
-
-<!--
-  param is used to supply a named property value.
-  In XML it would seem natural to follow RDF and support an
-  abbreviated syntax where the param elements are replaced
-  by attribute value pairs on the object start tag.
--->
-<!ELEMENT param EMPTY>
-<!ATTLIST param
-  id          ID             #IMPLIED
-  name        CDATA          #REQUIRED
-  value       CDATA          #IMPLIED
-  valuetype   (data|ref|object) "data"
-  type        %ContentType;  #IMPLIED
-  >
-
-<!--=================== Java applet ==================================-->
-<!--
-  One of code or object attributes must be present.
-  Place param elements before other content.
--->
-<!ELEMENT applet (#PCDATA | param | %block; | form | %inline; | %misc;)*>
-<!ATTLIST applet
-  %coreattrs;
-  codebase    %URI;          #IMPLIED
-  archive     CDATA          #IMPLIED
-  code        CDATA          #IMPLIED
-  object      CDATA          #IMPLIED
-  alt         %Text;         #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  width       %Length;       #REQUIRED
-  height      %Length;       #REQUIRED
-  align       %ImgAlign;     #IMPLIED
-  hspace      %Pixels;       #IMPLIED
-  vspace      %Pixels;       #IMPLIED
-  >
-
-<!--=================== Images ===========================================-->
-
-<!--
-   To avoid accessibility problems for people who aren't
-   able to see the image, you should provide a text
-   description using the alt and longdesc attributes.
-   In addition, avoid the use of server-side image maps.
--->
-
-<!ELEMENT img EMPTY>
-<!ATTLIST img
-  %attrs;
-  src         %URI;          #REQUIRED
-  alt         %Text;         #REQUIRED
-  name        NMTOKEN        #IMPLIED
-  longdesc    %URI;          #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  ismap       (ismap)        #IMPLIED
-  align       %ImgAlign;     #IMPLIED
-  border      %Pixels;       #IMPLIED
-  hspace      %Pixels;       #IMPLIED
-  vspace      %Pixels;       #IMPLIED
-  >
-
-<!-- usemap points to a map element which may be in this document
-  or an external document, although the latter is not widely supported -->
-
-<!--================== Client-side image maps ============================-->
-
-<!-- These can be placed in the same document or grouped in a
-     separate document although this isn't yet widely supported -->
-
-<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
-<!ATTLIST map
-  %i18n;
-  %events;
-  id          ID             #REQUIRED
-  class       CDATA          #IMPLIED
-  style       %StyleSheet;   #IMPLIED
-  title       %Text;         #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  >
-
-<!ELEMENT area EMPTY>
-<!ATTLIST area
-  %attrs;
-  %focus;
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  href        %URI;          #IMPLIED
-  nohref      (nohref)       #IMPLIED
-  alt         %Text;         #REQUIRED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!--================ Forms ===============================================-->
-
-<!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
-
-<!ATTLIST form
-  %attrs;
-  action      %URI;          #REQUIRED
-  method      (get|post)     "get"
-  name        NMTOKEN        #IMPLIED
-  enctype     %ContentType;  "application/x-www-form-urlencoded"
-  onsubmit    %Script;       #IMPLIED
-  onreset     %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  accept-charset %Charsets;  #IMPLIED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!--
-  Each label must not contain more than ONE field
-  Label elements shouldn't be nested.
--->
-<!ELEMENT label %Inline;>
-<!ATTLIST label
-  %attrs;
-  for         IDREF          #IMPLIED
-  accesskey   %Character;    #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  >
-
-<!ENTITY % InputType
-  "(text | password | checkbox |
-    radio | submit | reset |
-    file | hidden | image | button)"
-   >
-
-<!-- the name attribute is required for all but submit & reset -->
-
-<!ELEMENT input EMPTY>     <!-- form control -->
-<!ATTLIST input
-  %attrs;
-  %focus;
-  type        %InputType;    "text"
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  checked     (checked)      #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  size        CDATA          #IMPLIED
-  maxlength   %Number;       #IMPLIED
-  src         %URI;          #IMPLIED
-  alt         CDATA          #IMPLIED
-  usemap      %URI;          #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  align       %ImgAlign;     #IMPLIED
-  >
-
-<!ELEMENT select (optgroup|option)+>  <!-- option selector -->
-<!ATTLIST select
-  %attrs;
-  name        CDATA          #IMPLIED
-  size        %Number;       #IMPLIED
-  multiple    (multiple)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!ELEMENT optgroup (option)+>   <!-- option group -->
-<!ATTLIST optgroup
-  %attrs;
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #REQUIRED
-  >
-
-<!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
-<!ATTLIST option
-  %attrs;
-  selected    (selected)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #IMPLIED
-  value       CDATA          #IMPLIED
-  >
-
-<!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
-<!ATTLIST textarea
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  rows        %Number;       #REQUIRED
-  cols        %Number;       #REQUIRED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!--
-  The fieldset element is used to group form fields.
-  Only one legend element should occur in the content
-  and if present should only be preceded by whitespace.
--->
-<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
-<!ATTLIST fieldset
-  %attrs;
-  >
-
-<!ENTITY % LAlign "(top|bottom|left|right)">
-
-<!ELEMENT legend %Inline;>     <!-- fieldset label -->
-<!ATTLIST legend
-  %attrs;
-  accesskey   %Character;    #IMPLIED
-  align       %LAlign;       #IMPLIED
-  >
-
-<!--
- Content is %Flow; excluding a, form, form controls, iframe
---> 
-<!ELEMENT button %button.content;>  <!-- push button -->
-<!ATTLIST button
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  type        (button|submit|reset) "submit"
-  disabled    (disabled)     #IMPLIED
-  >
-
-<!-- single-line text input control (DEPRECATED) -->
-<!ELEMENT isindex EMPTY>
-<!ATTLIST isindex
-  %coreattrs;
-  %i18n;
-  prompt      %Text;         #IMPLIED
-  >
-
-<!--======================= Tables =======================================-->
-
-<!-- Derived from IETF HTML table standard, see [RFC1942] -->
-
-<!--
- The border attribute sets the thickness of the frame around the
- table. The default units are screen pixels.
-
- The frame attribute specifies which parts of the frame around
- the table should be rendered. The values are not the same as
- CALS to avoid a name clash with the valign attribute.
--->
-<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
-
-<!--
- The rules attribute defines which rules to draw between cells:
-
- If rules is absent then assume:
-     "none" if border is absent or border="0" otherwise "all"
--->
-
-<!ENTITY % TRules "(none | groups | rows | cols | all)">
-  
-<!-- horizontal placement of table relative to document -->
-<!ENTITY % TAlign "(left|center|right)">
-
-<!-- horizontal alignment attributes for cell contents
-
-  char        alignment char, e.g. char=":"
-  charoff     offset for alignment char
--->
-<!ENTITY % cellhalign
-  "align      (left|center|right|justify|char) #IMPLIED
-   char       %Character;    #IMPLIED
-   charoff    %Length;       #IMPLIED"
-  >
-
-<!-- vertical alignment attributes for cell contents -->
-<!ENTITY % cellvalign
-  "valign     (top|middle|bottom|baseline) #IMPLIED"
-  >
-
-<!ELEMENT table
-     (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
-<!ELEMENT caption  %Inline;>
-<!ELEMENT thead    (tr)+>
-<!ELEMENT tfoot    (tr)+>
-<!ELEMENT tbody    (tr)+>
-<!ELEMENT colgroup (col)*>
-<!ELEMENT col      EMPTY>
-<!ELEMENT tr       (th|td)+>
-<!ELEMENT th       %Flow;>
-<!ELEMENT td       %Flow;>
-
-<!ATTLIST table
-  %attrs;
-  summary     %Text;         #IMPLIED
-  width       %Length;       #IMPLIED
-  border      %Pixels;       #IMPLIED
-  frame       %TFrame;       #IMPLIED
-  rules       %TRules;       #IMPLIED
-  cellspacing %Length;       #IMPLIED
-  cellpadding %Length;       #IMPLIED
-  align       %TAlign;       #IMPLIED
-  bgcolor     %Color;        #IMPLIED
-  >
-
-<!ENTITY % CAlign "(top|bottom|left|right)">
-
-<!ATTLIST caption
-  %attrs;
-  align       %CAlign;       #IMPLIED
-  >
-
-<!--
-colgroup groups a set of col elements. It allows you to group
-several semantically related columns together.
--->
-<!ATTLIST colgroup
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
- col elements define the alignment properties for cells in
- one or more columns.
-
- The width attribute specifies the width of the columns, e.g.
-
-     width=64        width in screen pixels
-     width=0.5*      relative width of 0.5
-
- The span attribute causes the attributes of one
- col element to apply to more than one column.
--->
-<!ATTLIST col
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
-    Use thead to duplicate headers when breaking table
-    across page boundaries, or for static headers when
-    tbody sections are rendered in scrolling panel.
-
-    Use tfoot to duplicate footers when breaking table
-    across page boundaries, or for static footers when
-    tbody sections are rendered in scrolling panel.
-
-    Use multiple tbody sections when rules are needed
-    between groups of table rows.
--->
-<!ATTLIST thead
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tfoot
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tbody
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tr
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  bgcolor     %Color;        #IMPLIED
-  >
-
-<!-- Scope is simpler than headers attribute for common tables -->
-<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
-
-<!-- th is for headers, td for data and for cells acting as both -->
-
-<!ATTLIST th
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  nowrap      (nowrap)       #IMPLIED
-  bgcolor     %Color;        #IMPLIED
-  width       %Pixels;       #IMPLIED
-  height      %Pixels;       #IMPLIED
-  >
-
-<!ATTLIST td
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  nowrap      (nowrap)       #IMPLIED
-  bgcolor     %Color;        #IMPLIED
-  width       %Pixels;       #IMPLIED
-  height      %Pixels;       #IMPLIED
-  >
-
--- a/Admin/website/dtd/xhtml1-strict.dtd	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,978 +0,0 @@
-<!--
-   Extensible HTML version 1.0 Strict DTD
-
-   This is the same as HTML 4 Strict except for
-   changes due to the differences between XML and SGML.
-
-   Namespace = http://www.w3.org/1999/xhtml
-
-   For further information, see: http://www.w3.org/TR/xhtml1
-
-   Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
-   All Rights Reserved. 
-
-   This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-   PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-   SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
-
-   $Revision$
-   $Date$
-
--->
-
-<!--================ Character mnemonic entities =========================-->
-
-<!ENTITY % HTMLlat1 PUBLIC
-   "-//W3C//ENTITIES Latin 1 for XHTML//EN"
-   "xhtml-lat1.ent">
-%HTMLlat1;
-
-<!ENTITY % HTMLsymbol PUBLIC
-   "-//W3C//ENTITIES Symbols for XHTML//EN"
-   "xhtml-symbol.ent">
-%HTMLsymbol;
-
-<!ENTITY % HTMLspecial PUBLIC
-   "-//W3C//ENTITIES Special for XHTML//EN"
-   "xhtml-special.ent">
-%HTMLspecial;
-
-<!--================== Imported Names ====================================-->
-
-<!ENTITY % ContentType "CDATA">
-    <!-- media type, as per [RFC2045] -->
-
-<!ENTITY % ContentTypes "CDATA">
-    <!-- comma-separated list of media types, as per [RFC2045] -->
-
-<!ENTITY % Charset "CDATA">
-    <!-- a character encoding, as per [RFC2045] -->
-
-<!ENTITY % Charsets "CDATA">
-    <!-- a space separated list of character encodings, as per [RFC2045] -->
-
-<!ENTITY % LanguageCode "NMTOKEN">
-    <!-- a language code, as per [RFC3066] -->
-
-<!ENTITY % Character "CDATA">
-    <!-- a single character, as per section 2.2 of [XML] -->
-
-<!ENTITY % Number "CDATA">
-    <!-- one or more digits -->
-
-<!ENTITY % LinkTypes "CDATA">
-    <!-- space-separated list of link types -->
-
-<!ENTITY % MediaDesc "CDATA">
-    <!-- single or comma-separated list of media descriptors -->
-
-<!ENTITY % URI "CDATA">
-    <!-- a Uniform Resource Identifier, see [RFC2396] -->
-
-<!ENTITY % UriList "CDATA">
-    <!-- a space separated list of Uniform Resource Identifiers -->
-
-<!ENTITY % Datetime "CDATA">
-    <!-- date and time information. ISO date format -->
-
-<!ENTITY % Script "CDATA">
-    <!-- script expression -->
-
-<!ENTITY % StyleSheet "CDATA">
-    <!-- style sheet data -->
-
-<!ENTITY % Text "CDATA">
-    <!-- used for titles etc. -->
-
-<!ENTITY % Length "CDATA">
-    <!-- nn for pixels or nn% for percentage length -->
-
-<!ENTITY % MultiLength "CDATA">
-    <!-- pixel, percentage, or relative -->
-
-<!ENTITY % Pixels "CDATA">
-    <!-- integer representing length in pixels -->
-
-<!-- these are used for image maps -->
-
-<!ENTITY % Shape "(rect|circle|poly|default)">
-
-<!ENTITY % Coords "CDATA">
-    <!-- comma separated list of lengths -->
-
-<!--=================== Generic Attributes ===============================-->
-
-<!-- core attributes common to most elements
-  id       document-wide unique id
-  class    space separated list of classes
-  style    associated style info
-  title    advisory title/amplification
--->
-<!ENTITY % coreattrs
- "id          ID             #IMPLIED
-  class       CDATA          #IMPLIED
-  style       %StyleSheet;   #IMPLIED
-  title       %Text;         #IMPLIED"
-  >
-
-<!-- internationalization attributes
-  lang        language code (backwards compatible)
-  xml:lang    language code (as per XML 1.0 spec)
-  dir         direction for weak/neutral text
--->
-<!ENTITY % i18n
- "lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #IMPLIED"
-  >
-
-<!-- attributes for common UI events
-  onclick     a pointer button was clicked
-  ondblclick  a pointer button was double clicked
-  onmousedown a pointer button was pressed down
-  onmouseup   a pointer button was released
-  onmousemove a pointer was moved onto the element
-  onmouseout  a pointer was moved away from the element
-  onkeypress  a key was pressed and released
-  onkeydown   a key was pressed down
-  onkeyup     a key was released
--->
-<!ENTITY % events
- "onclick     %Script;       #IMPLIED
-  ondblclick  %Script;       #IMPLIED
-  onmousedown %Script;       #IMPLIED
-  onmouseup   %Script;       #IMPLIED
-  onmouseover %Script;       #IMPLIED
-  onmousemove %Script;       #IMPLIED
-  onmouseout  %Script;       #IMPLIED
-  onkeypress  %Script;       #IMPLIED
-  onkeydown   %Script;       #IMPLIED
-  onkeyup     %Script;       #IMPLIED"
-  >
-
-<!-- attributes for elements that can get the focus
-  accesskey   accessibility key character
-  tabindex    position in tabbing order
-  onfocus     the element got the focus
-  onblur      the element lost the focus
--->
-<!ENTITY % focus
- "accesskey   %Character;    #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED"
-  >
-
-<!ENTITY % attrs "%coreattrs; %i18n; %events;">
-
-<!--=================== Text Elements ====================================-->
-
-<!ENTITY % special.pre
-   "br | span | bdo | map">
-
-
-<!ENTITY % special
-   "%special.pre; | object | img ">
-
-<!ENTITY % fontstyle "tt | i | b | big | small ">
-
-<!ENTITY % phrase "em | strong | dfn | code | q |
-                   samp | kbd | var | cite | abbr | acronym | sub | sup ">
-
-<!ENTITY % inline.forms "input | select | textarea | label | button">
-
-<!-- these can occur at block or inline level -->
-<!ENTITY % misc.inline "ins | del | script">
-
-<!-- these can only occur at block level -->
-<!ENTITY % misc "noscript | %misc.inline;">
-
-<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
-
-<!-- %Inline; covers inline or "text-level" elements -->
-<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
-
-<!--================== Block level elements ==============================-->
-
-<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
-<!ENTITY % lists "ul | ol | dl">
-<!ENTITY % blocktext "pre | hr | blockquote | address">
-
-<!ENTITY % block
-     "p | %heading; | div | %lists; | %blocktext; | fieldset | table">
-
-<!ENTITY % Block "(%block; | form | %misc;)*">
-
-<!-- %Flow; mixes block and inline and is used for list items etc. -->
-<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
-
-<!--================== Content models for exclusions =====================-->
-
-<!-- a elements use %Inline; excluding a -->
-
-<!ENTITY % a.content
-   "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">
-
-<!-- pre uses %Inline excluding big, small, sup or sup -->
-
-<!ENTITY % pre.content
-   "(#PCDATA | a | %fontstyle; | %phrase; | %special.pre; | %misc.inline;
-      | %inline.forms;)*">
-
-<!-- form uses %Block; excluding form -->
-
-<!ENTITY % form.content "(%block; | %misc;)*">
-
-<!-- button uses %Flow; but excludes a, form and form controls -->
-
-<!ENTITY % button.content
-   "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
-    table | %special; | %fontstyle; | %phrase; | %misc;)*">
-
-<!--================ Document Structure ==================================-->
-
-<!-- the namespace URI designates the document profile -->
-
-<!ELEMENT html (head, body)>
-<!ATTLIST html
-  %i18n;
-  id          ID             #IMPLIED
-  xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
-  >
-
-<!--================ Document Head =======================================-->
-
-<!ENTITY % head.misc "(script|style|meta|link|object)*">
-
-<!-- content model is %head.misc; combined with a single
-     title and an optional base element in any order -->
-
-<!ELEMENT head (%head.misc;,
-     ((title, %head.misc;, (base, %head.misc;)?) |
-      (base, %head.misc;, (title, %head.misc;))))>
-
-<!ATTLIST head
-  %i18n;
-  id          ID             #IMPLIED
-  profile     %URI;          #IMPLIED
-  >
-
-<!-- The title element is not considered part of the flow of text.
-       It should be displayed, for example as the page header or
-       window title. Exactly one title is required per document.
-    -->
-<!ELEMENT title (#PCDATA)>
-<!ATTLIST title 
-  %i18n;
-  id          ID             #IMPLIED
-  >
-
-<!-- document base URI -->
-
-<!ELEMENT base EMPTY>
-<!ATTLIST base
-  href        %URI;          #REQUIRED
-  id          ID             #IMPLIED
-  >
-
-<!-- generic metainformation -->
-<!ELEMENT meta EMPTY>
-<!ATTLIST meta
-  %i18n;
-  id          ID             #IMPLIED
-  http-equiv  CDATA          #IMPLIED
-  name        CDATA          #IMPLIED
-  content     CDATA          #REQUIRED
-  scheme      CDATA          #IMPLIED
-  >
-
-<!--
-  Relationship values can be used in principle:
-
-   a) for document specific toolbars/menus when used
-      with the link element in document head e.g.
-        start, contents, previous, next, index, end, help
-   b) to link to a separate style sheet (rel="stylesheet")
-   c) to make a link to a script (rel="script")
-   d) by stylesheets to control how collections of
-      html nodes are rendered into printed documents
-   e) to make a link to a printable version of this document
-      e.g. a PostScript or PDF version (rel="alternate" media="print")
--->
-
-<!ELEMENT link EMPTY>
-<!ATTLIST link
-  %attrs;
-  charset     %Charset;      #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  type        %ContentType;  #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  media       %MediaDesc;    #IMPLIED
-  >
-
-<!-- style info, which may include CDATA sections -->
-<!ELEMENT style (#PCDATA)>
-<!ATTLIST style
-  %i18n;
-  id          ID             #IMPLIED
-  type        %ContentType;  #REQUIRED
-  media       %MediaDesc;    #IMPLIED
-  title       %Text;         #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- script statements, which may include CDATA sections -->
-<!ELEMENT script (#PCDATA)>
-<!ATTLIST script
-  id          ID             #IMPLIED
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #REQUIRED
-  src         %URI;          #IMPLIED
-  defer       (defer)        #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- alternate content container for non script-based rendering -->
-
-<!ELEMENT noscript %Block;>
-<!ATTLIST noscript
-  %attrs;
-  >
-
-<!--=================== Document Body ====================================-->
-
-<!ELEMENT body %Block;>
-<!ATTLIST body
-  %attrs;
-  onload          %Script;   #IMPLIED
-  onunload        %Script;   #IMPLIED
-  >
-
-<!ELEMENT div %Flow;>  <!-- generic language/style container -->
-<!ATTLIST div
-  %attrs;
-  >
-
-<!--=================== Paragraphs =======================================-->
-
-<!ELEMENT p %Inline;>
-<!ATTLIST p
-  %attrs;
-  >
-
-<!--=================== Headings =========================================-->
-
-<!--
-  There are six levels of headings from h1 (the most important)
-  to h6 (the least important).
--->
-
-<!ELEMENT h1  %Inline;>
-<!ATTLIST h1
-   %attrs;
-   >
-
-<!ELEMENT h2 %Inline;>
-<!ATTLIST h2
-   %attrs;
-   >
-
-<!ELEMENT h3 %Inline;>
-<!ATTLIST h3
-   %attrs;
-   >
-
-<!ELEMENT h4 %Inline;>
-<!ATTLIST h4
-   %attrs;
-   >
-
-<!ELEMENT h5 %Inline;>
-<!ATTLIST h5
-   %attrs;
-   >
-
-<!ELEMENT h6 %Inline;>
-<!ATTLIST h6
-   %attrs;
-   >
-
-<!--=================== Lists ============================================-->
-
-<!-- Unordered list -->
-
-<!ELEMENT ul (li)+>
-<!ATTLIST ul
-  %attrs;
-  >
-
-<!-- Ordered (numbered) list -->
-
-<!ELEMENT ol (li)+>
-<!ATTLIST ol
-  %attrs;
-  >
-
-<!-- list item -->
-
-<!ELEMENT li %Flow;>
-<!ATTLIST li
-  %attrs;
-  >
-
-<!-- definition lists - dt for term, dd for its definition -->
-
-<!ELEMENT dl (dt|dd)+>
-<!ATTLIST dl
-  %attrs;
-  >
-
-<!ELEMENT dt %Inline;>
-<!ATTLIST dt
-  %attrs;
-  >
-
-<!ELEMENT dd %Flow;>
-<!ATTLIST dd
-  %attrs;
-  >
-
-<!--=================== Address ==========================================-->
-
-<!-- information on author -->
-
-<!ELEMENT address %Inline;>
-<!ATTLIST address
-  %attrs;
-  >
-
-<!--=================== Horizontal Rule ==================================-->
-
-<!ELEMENT hr EMPTY>
-<!ATTLIST hr
-  %attrs;
-  >
-
-<!--=================== Preformatted Text ================================-->
-
-<!-- content is %Inline; excluding "img|object|big|small|sub|sup" -->
-
-<!ELEMENT pre %pre.content;>
-<!ATTLIST pre
-  %attrs;
-  xml:space (preserve) #FIXED 'preserve'
-  >
-
-<!--=================== Block-like Quotes ================================-->
-
-<!ELEMENT blockquote %Block;>
-<!ATTLIST blockquote
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!--=================== Inserted/Deleted Text ============================-->
-
-<!--
-  ins/del are allowed in block and inline content, but its
-  inappropriate to include block content within an ins element
-  occurring in inline content.
--->
-<!ELEMENT ins %Flow;>
-<!ATTLIST ins
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!ELEMENT del %Flow;>
-<!ATTLIST del
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!--================== The Anchor Element ================================-->
-
-<!-- content is %Inline; except that anchors shouldn't be nested -->
-
-<!ELEMENT a %a.content;>
-<!ATTLIST a
-  %attrs;
-  %focus;
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  >
-
-<!--===================== Inline Elements ================================-->
-
-<!ELEMENT span %Inline;> <!-- generic language/style container -->
-<!ATTLIST span
-  %attrs;
-  >
-
-<!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
-<!ATTLIST bdo
-  %coreattrs;
-  %events;
-  lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #REQUIRED
-  >
-
-<!ELEMENT br EMPTY>   <!-- forced line break -->
-<!ATTLIST br
-  %coreattrs;
-  >
-
-<!ELEMENT em %Inline;>   <!-- emphasis -->
-<!ATTLIST em %attrs;>
-
-<!ELEMENT strong %Inline;>   <!-- strong emphasis -->
-<!ATTLIST strong %attrs;>
-
-<!ELEMENT dfn %Inline;>   <!-- definitional -->
-<!ATTLIST dfn %attrs;>
-
-<!ELEMENT code %Inline;>   <!-- program code -->
-<!ATTLIST code %attrs;>
-
-<!ELEMENT samp %Inline;>   <!-- sample -->
-<!ATTLIST samp %attrs;>
-
-<!ELEMENT kbd %Inline;>  <!-- something user would type -->
-<!ATTLIST kbd %attrs;>
-
-<!ELEMENT var %Inline;>   <!-- variable -->
-<!ATTLIST var %attrs;>
-
-<!ELEMENT cite %Inline;>   <!-- citation -->
-<!ATTLIST cite %attrs;>
-
-<!ELEMENT abbr %Inline;>   <!-- abbreviation -->
-<!ATTLIST abbr %attrs;>
-
-<!ELEMENT acronym %Inline;>   <!-- acronym -->
-<!ATTLIST acronym %attrs;>
-
-<!ELEMENT q %Inline;>   <!-- inlined quote -->
-<!ATTLIST q
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!ELEMENT sub %Inline;> <!-- subscript -->
-<!ATTLIST sub %attrs;>
-
-<!ELEMENT sup %Inline;> <!-- superscript -->
-<!ATTLIST sup %attrs;>
-
-<!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
-<!ATTLIST tt %attrs;>
-
-<!ELEMENT i %Inline;>   <!-- italic font -->
-<!ATTLIST i %attrs;>
-
-<!ELEMENT b %Inline;>   <!-- bold font -->
-<!ATTLIST b %attrs;>
-
-<!ELEMENT big %Inline;>   <!-- bigger font -->
-<!ATTLIST big %attrs;>
-
-<!ELEMENT small %Inline;>   <!-- smaller font -->
-<!ATTLIST small %attrs;>
-
-<!--==================== Object ======================================-->
-<!--
-  object is used to embed objects as part of HTML pages.
-  param elements should precede other content. Parameters
-  can also be expressed as attribute/value pairs on the
-  object element itself when brevity is desired.
--->
-
-<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
-<!ATTLIST object
-  %attrs;
-  declare     (declare)      #IMPLIED
-  classid     %URI;          #IMPLIED
-  codebase    %URI;          #IMPLIED
-  data        %URI;          #IMPLIED
-  type        %ContentType;  #IMPLIED
-  codetype    %ContentType;  #IMPLIED
-  archive     %UriList;      #IMPLIED
-  standby     %Text;         #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  >
-
-<!--
-  param is used to supply a named property value.
-  In XML it would seem natural to follow RDF and support an
-  abbreviated syntax where the param elements are replaced
-  by attribute value pairs on the object start tag.
--->
-<!ELEMENT param EMPTY>
-<!ATTLIST param
-  id          ID             #IMPLIED
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  valuetype   (data|ref|object) "data"
-  type        %ContentType;  #IMPLIED
-  >
-
-<!--=================== Images ===========================================-->
-
-<!--
-   To avoid accessibility problems for people who aren't
-   able to see the image, you should provide a text
-   description using the alt and longdesc attributes.
-   In addition, avoid the use of server-side image maps.
-   Note that in this DTD there is no name attribute. That
-   is only available in the transitional and frameset DTD.
--->
-
-<!ELEMENT img EMPTY>
-<!ATTLIST img
-  %attrs;
-  src         %URI;          #REQUIRED
-  alt         %Text;         #REQUIRED
-  longdesc    %URI;          #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  ismap       (ismap)        #IMPLIED
-  >
-
-<!-- usemap points to a map element which may be in this document
-  or an external document, although the latter is not widely supported -->
-
-<!--================== Client-side image maps ============================-->
-
-<!-- These can be placed in the same document or grouped in a
-     separate document although this isn't yet widely supported -->
-
-<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
-<!ATTLIST map
-  %i18n;
-  %events;
-  id          ID             #REQUIRED
-  class       CDATA          #IMPLIED
-  style       %StyleSheet;   #IMPLIED
-  title       %Text;         #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  >
-
-<!ELEMENT area EMPTY>
-<!ATTLIST area
-  %attrs;
-  %focus;
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  href        %URI;          #IMPLIED
-  nohref      (nohref)       #IMPLIED
-  alt         %Text;         #REQUIRED
-  >
-
-<!--================ Forms ===============================================-->
-<!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
-
-<!ATTLIST form
-  %attrs;
-  action      %URI;          #REQUIRED
-  method      (get|post)     "get"
-  enctype     %ContentType;  "application/x-www-form-urlencoded"
-  onsubmit    %Script;       #IMPLIED
-  onreset     %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  accept-charset %Charsets;  #IMPLIED
-  >
-
-<!--
-  Each label must not contain more than ONE field
-  Label elements shouldn't be nested.
--->
-<!ELEMENT label %Inline;>
-<!ATTLIST label
-  %attrs;
-  for         IDREF          #IMPLIED
-  accesskey   %Character;    #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  >
-
-<!ENTITY % InputType
-  "(text | password | checkbox |
-    radio | submit | reset |
-    file | hidden | image | button)"
-   >
-
-<!-- the name attribute is required for all but submit & reset -->
-
-<!ELEMENT input EMPTY>     <!-- form control -->
-<!ATTLIST input
-  %attrs;
-  %focus;
-  type        %InputType;    "text"
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  checked     (checked)      #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  size        CDATA          #IMPLIED
-  maxlength   %Number;       #IMPLIED
-  src         %URI;          #IMPLIED
-  alt         CDATA          #IMPLIED
-  usemap      %URI;          #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  >
-
-<!ELEMENT select (optgroup|option)+>  <!-- option selector -->
-<!ATTLIST select
-  %attrs;
-  name        CDATA          #IMPLIED
-  size        %Number;       #IMPLIED
-  multiple    (multiple)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!ELEMENT optgroup (option)+>   <!-- option group -->
-<!ATTLIST optgroup
-  %attrs;
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #REQUIRED
-  >
-
-<!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
-<!ATTLIST option
-  %attrs;
-  selected    (selected)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #IMPLIED
-  value       CDATA          #IMPLIED
-  >
-
-<!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
-<!ATTLIST textarea
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  rows        %Number;       #REQUIRED
-  cols        %Number;       #REQUIRED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!--
-  The fieldset element is used to group form fields.
-  Only one legend element should occur in the content
-  and if present should only be preceded by whitespace.
--->
-<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
-<!ATTLIST fieldset
-  %attrs;
-  >
-
-<!ELEMENT legend %Inline;>     <!-- fieldset label -->
-<!ATTLIST legend
-  %attrs;
-  accesskey   %Character;    #IMPLIED
-  >
-
-<!--
- Content is %Flow; excluding a, form and form controls
---> 
-<!ELEMENT button %button.content;>  <!-- push button -->
-<!ATTLIST button
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  type        (button|submit|reset) "submit"
-  disabled    (disabled)     #IMPLIED
-  >
-
-<!--======================= Tables =======================================-->
-
-<!-- Derived from IETF HTML table standard, see [RFC1942] -->
-
-<!--
- The border attribute sets the thickness of the frame around the
- table. The default units are screen pixels.
-
- The frame attribute specifies which parts of the frame around
- the table should be rendered. The values are not the same as
- CALS to avoid a name clash with the valign attribute.
--->
-<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
-
-<!--
- The rules attribute defines which rules to draw between cells:
-
- If rules is absent then assume:
-     "none" if border is absent or border="0" otherwise "all"
--->
-
-<!ENTITY % TRules "(none | groups | rows | cols | all)">
-  
-<!-- horizontal alignment attributes for cell contents
-
-  char        alignment char, e.g. char=':'
-  charoff     offset for alignment char
--->
-<!ENTITY % cellhalign
-  "align      (left|center|right|justify|char) #IMPLIED
-   char       %Character;    #IMPLIED
-   charoff    %Length;       #IMPLIED"
-  >
-
-<!-- vertical alignment attributes for cell contents -->
-<!ENTITY % cellvalign
-  "valign     (top|middle|bottom|baseline) #IMPLIED"
-  >
-
-<!ELEMENT table
-     (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
-<!ELEMENT caption  %Inline;>
-<!ELEMENT thead    (tr)+>
-<!ELEMENT tfoot    (tr)+>
-<!ELEMENT tbody    (tr)+>
-<!ELEMENT colgroup (col)*>
-<!ELEMENT col      EMPTY>
-<!ELEMENT tr       (th|td)+>
-<!ELEMENT th       %Flow;>
-<!ELEMENT td       %Flow;>
-
-<!ATTLIST table
-  %attrs;
-  summary     %Text;         #IMPLIED
-  width       %Length;       #IMPLIED
-  border      %Pixels;       #IMPLIED
-  frame       %TFrame;       #IMPLIED
-  rules       %TRules;       #IMPLIED
-  cellspacing %Length;       #IMPLIED
-  cellpadding %Length;       #IMPLIED
-  >
-
-<!ATTLIST caption
-  %attrs;
-  >
-
-<!--
-colgroup groups a set of col elements. It allows you to group
-several semantically related columns together.
--->
-<!ATTLIST colgroup
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
- col elements define the alignment properties for cells in
- one or more columns.
-
- The width attribute specifies the width of the columns, e.g.
-
-     width=64        width in screen pixels
-     width=0.5*      relative width of 0.5
-
- The span attribute causes the attributes of one
- col element to apply to more than one column.
--->
-<!ATTLIST col
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
-    Use thead to duplicate headers when breaking table
-    across page boundaries, or for static headers when
-    tbody sections are rendered in scrolling panel.
-
-    Use tfoot to duplicate footers when breaking table
-    across page boundaries, or for static footers when
-    tbody sections are rendered in scrolling panel.
-
-    Use multiple tbody sections when rules are needed
-    between groups of table rows.
--->
-<!ATTLIST thead
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tfoot
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tbody
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tr
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-
-<!-- Scope is simpler than headers attribute for common tables -->
-<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
-
-<!-- th is for headers, td for data and for cells acting as both -->
-
-<!ATTLIST th
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST td
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  >
-
--- a/Admin/website/dtd/xhtml1-transitional.dtd	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1201 +0,0 @@
-<!--
-   Extensible HTML version 1.0 Transitional DTD
-
-   This is the same as HTML 4 Transitional except for
-   changes due to the differences between XML and SGML.
-
-   Namespace = http://www.w3.org/1999/xhtml
-
-   For further information, see: http://www.w3.org/TR/xhtml1
-
-   Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
-   All Rights Reserved. 
-
-   This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-   PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-   SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
-
-   $Revision$
-   $Date$
-
--->
-
-<!--================ Character mnemonic entities =========================-->
-
-<!ENTITY % HTMLlat1 PUBLIC
-   "-//W3C//ENTITIES Latin 1 for XHTML//EN"
-   "xhtml-lat1.ent">
-%HTMLlat1;
-
-<!ENTITY % HTMLsymbol PUBLIC
-   "-//W3C//ENTITIES Symbols for XHTML//EN"
-   "xhtml-symbol.ent">
-%HTMLsymbol;
-
-<!ENTITY % HTMLspecial PUBLIC
-   "-//W3C//ENTITIES Special for XHTML//EN"
-   "xhtml-special.ent">
-%HTMLspecial;
-
-<!--================== Imported Names ====================================-->
-
-<!ENTITY % ContentType "CDATA">
-    <!-- media type, as per [RFC2045] -->
-
-<!ENTITY % ContentTypes "CDATA">
-    <!-- comma-separated list of media types, as per [RFC2045] -->
-
-<!ENTITY % Charset "CDATA">
-    <!-- a character encoding, as per [RFC2045] -->
-
-<!ENTITY % Charsets "CDATA">
-    <!-- a space separated list of character encodings, as per [RFC2045] -->
-
-<!ENTITY % LanguageCode "NMTOKEN">
-    <!-- a language code, as per [RFC3066] -->
-
-<!ENTITY % Character "CDATA">
-    <!-- a single character, as per section 2.2 of [XML] -->
-
-<!ENTITY % Number "CDATA">
-    <!-- one or more digits -->
-
-<!ENTITY % LinkTypes "CDATA">
-    <!-- space-separated list of link types -->
-
-<!ENTITY % MediaDesc "CDATA">
-    <!-- single or comma-separated list of media descriptors -->
-
-<!ENTITY % URI "CDATA">
-    <!-- a Uniform Resource Identifier, see [RFC2396] -->
-
-<!ENTITY % UriList "CDATA">
-    <!-- a space separated list of Uniform Resource Identifiers -->
-
-<!ENTITY % Datetime "CDATA">
-    <!-- date and time information. ISO date format -->
-
-<!ENTITY % Script "CDATA">
-    <!-- script expression -->
-
-<!ENTITY % StyleSheet "CDATA">
-    <!-- style sheet data -->
-
-<!ENTITY % Text "CDATA">
-    <!-- used for titles etc. -->
-
-<!ENTITY % FrameTarget "NMTOKEN">
-    <!-- render in this frame -->
-
-<!ENTITY % Length "CDATA">
-    <!-- nn for pixels or nn% for percentage length -->
-
-<!ENTITY % MultiLength "CDATA">
-    <!-- pixel, percentage, or relative -->
-
-<!ENTITY % Pixels "CDATA">
-    <!-- integer representing length in pixels -->
-
-<!-- these are used for image maps -->
-
-<!ENTITY % Shape "(rect|circle|poly|default)">
-
-<!ENTITY % Coords "CDATA">
-    <!-- comma separated list of lengths -->
-
-<!-- used for object, applet, img, input and iframe -->
-<!ENTITY % ImgAlign "(top|middle|bottom|left|right)">
-
-<!-- a color using sRGB: #RRGGBB as Hex values -->
-<!ENTITY % Color "CDATA">
-
-<!-- There are also 16 widely known color names with their sRGB values:
-
-    Black  = #000000    Green  = #008000
-    Silver = #C0C0C0    Lime   = #00FF00
-    Gray   = #808080    Olive  = #808000
-    White  = #FFFFFF    Yellow = #FFFF00
-    Maroon = #800000    Navy   = #000080
-    Red    = #FF0000    Blue   = #0000FF
-    Purple = #800080    Teal   = #008080
-    Fuchsia= #FF00FF    Aqua   = #00FFFF
--->
-
-<!--=================== Generic Attributes ===============================-->
-
-<!-- core attributes common to most elements
-  id       document-wide unique id
-  class    space separated list of classes
-  style    associated style info
-  title    advisory title/amplification
--->
-<!ENTITY % coreattrs
- "id          ID             #IMPLIED
-  class       CDATA          #IMPLIED
-  style       %StyleSheet;   #IMPLIED
-  title       %Text;         #IMPLIED"
-  >
-
-<!-- internationalization attributes
-  lang        language code (backwards compatible)
-  xml:lang    language code (as per XML 1.0 spec)
-  dir         direction for weak/neutral text
--->
-<!ENTITY % i18n
- "lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #IMPLIED"
-  >
-
-<!-- attributes for common UI events
-  onclick     a pointer button was clicked
-  ondblclick  a pointer button was double clicked
-  onmousedown a pointer button was pressed down
-  onmouseup   a pointer button was released
-  onmousemove a pointer was moved onto the element
-  onmouseout  a pointer was moved away from the element
-  onkeypress  a key was pressed and released
-  onkeydown   a key was pressed down
-  onkeyup     a key was released
--->
-<!ENTITY % events
- "onclick     %Script;       #IMPLIED
-  ondblclick  %Script;       #IMPLIED
-  onmousedown %Script;       #IMPLIED
-  onmouseup   %Script;       #IMPLIED
-  onmouseover %Script;       #IMPLIED
-  onmousemove %Script;       #IMPLIED
-  onmouseout  %Script;       #IMPLIED
-  onkeypress  %Script;       #IMPLIED
-  onkeydown   %Script;       #IMPLIED
-  onkeyup     %Script;       #IMPLIED"
-  >
-
-<!-- attributes for elements that can get the focus
-  accesskey   accessibility key character
-  tabindex    position in tabbing order
-  onfocus     the element got the focus
-  onblur      the element lost the focus
--->
-<!ENTITY % focus
- "accesskey   %Character;    #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED"
-  >
-
-<!ENTITY % attrs "%coreattrs; %i18n; %events;">
-
-<!-- text alignment for p, div, h1-h6. The default is
-     align="left" for ltr headings, "right" for rtl -->
-
-<!ENTITY % TextAlign "align (left|center|right|justify) #IMPLIED">
-
-<!--=================== Text Elements ====================================-->
-
-<!ENTITY % special.extra
-   "object | applet | img | map | iframe">
-	
-<!ENTITY % special.basic
-	"br | span | bdo">
-
-<!ENTITY % special
-   "%special.basic; | %special.extra;">
-
-<!ENTITY % fontstyle.extra "big | small | font | basefont">
-
-<!ENTITY % fontstyle.basic "tt | i | b | u
-                      | s | strike ">
-
-<!ENTITY % fontstyle "%fontstyle.basic; | %fontstyle.extra;">
-
-<!ENTITY % phrase.extra "sub | sup">
-<!ENTITY % phrase.basic "em | strong | dfn | code | q |
-                   samp | kbd | var | cite | abbr | acronym">
-
-<!ENTITY % phrase "%phrase.basic; | %phrase.extra;">
-
-<!ENTITY % inline.forms "input | select | textarea | label | button">
-
-<!-- these can occur at block or inline level -->
-<!ENTITY % misc.inline "ins | del | script">
-
-<!-- these can only occur at block level -->
-<!ENTITY % misc "noscript | %misc.inline;">
-
-<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
-
-<!-- %Inline; covers inline or "text-level" elements -->
-<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
-
-<!--================== Block level elements ==============================-->
-
-<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
-<!ENTITY % lists "ul | ol | dl | menu | dir">
-<!ENTITY % blocktext "pre | hr | blockquote | address | center | noframes">
-
-<!ENTITY % block
-    "p | %heading; | div | %lists; | %blocktext; | isindex |fieldset | table">
-
-<!-- %Flow; mixes block and inline and is used for list items etc. -->
-<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
-
-<!--================== Content models for exclusions =====================-->
-
-<!-- a elements use %Inline; excluding a -->
-
-<!ENTITY % a.content
-   "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">
-
-<!-- pre uses %Inline excluding img, object, applet, big, small,
-     font, or basefont -->
-
-<!ENTITY % pre.content
-   "(#PCDATA | a | %special.basic; | %fontstyle.basic; | %phrase.basic; |
-	   %inline.forms; | %misc.inline;)*">
-
-<!-- form uses %Flow; excluding form -->
-
-<!ENTITY % form.content "(#PCDATA | %block; | %inline; | %misc;)*">
-
-<!-- button uses %Flow; but excludes a, form, form controls, iframe -->
-
-<!ENTITY % button.content
-   "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
-      table | br | span | bdo | object | applet | img | map |
-      %fontstyle; | %phrase; | %misc;)*">
-
-<!--================ Document Structure ==================================-->
-
-<!-- the namespace URI designates the document profile -->
-
-<!ELEMENT html (head, body)>
-<!ATTLIST html
-  %i18n;
-  id          ID             #IMPLIED
-  xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
-  >
-
-<!--================ Document Head =======================================-->
-
-<!ENTITY % head.misc "(script|style|meta|link|object|isindex)*">
-
-<!-- content model is %head.misc; combined with a single
-     title and an optional base element in any order -->
-
-<!ELEMENT head (%head.misc;,
-     ((title, %head.misc;, (base, %head.misc;)?) |
-      (base, %head.misc;, (title, %head.misc;))))>
-
-<!ATTLIST head
-  %i18n;
-  id          ID             #IMPLIED
-  profile     %URI;          #IMPLIED
-  >
-
-<!-- The title element is not considered part of the flow of text.
-       It should be displayed, for example as the page header or
-       window title. Exactly one title is required per document.
-    -->
-<!ELEMENT title (#PCDATA)>
-<!ATTLIST title 
-  %i18n;
-  id          ID             #IMPLIED
-  >
-
-<!-- document base URI -->
-
-<!ELEMENT base EMPTY>
-<!ATTLIST base
-  id          ID             #IMPLIED
-  href        %URI;          #IMPLIED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!-- generic metainformation -->
-<!ELEMENT meta EMPTY>
-<!ATTLIST meta
-  %i18n;
-  id          ID             #IMPLIED
-  http-equiv  CDATA          #IMPLIED
-  name        CDATA          #IMPLIED
-  content     CDATA          #REQUIRED
-  scheme      CDATA          #IMPLIED
-  >
-
-<!--
-  Relationship values can be used in principle:
-
-   a) for document specific toolbars/menus when used
-      with the link element in document head e.g.
-        start, contents, previous, next, index, end, help
-   b) to link to a separate style sheet (rel="stylesheet")
-   c) to make a link to a script (rel="script")
-   d) by stylesheets to control how collections of
-      html nodes are rendered into printed documents
-   e) to make a link to a printable version of this document
-      e.g. a PostScript or PDF version (rel="alternate" media="print")
--->
-
-<!ELEMENT link EMPTY>
-<!ATTLIST link
-  %attrs;
-  charset     %Charset;      #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  type        %ContentType;  #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  media       %MediaDesc;    #IMPLIED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!-- style info, which may include CDATA sections -->
-<!ELEMENT style (#PCDATA)>
-<!ATTLIST style
-  %i18n;
-  id          ID             #IMPLIED
-  type        %ContentType;  #REQUIRED
-  media       %MediaDesc;    #IMPLIED
-  title       %Text;         #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- script statements, which may include CDATA sections -->
-<!ELEMENT script (#PCDATA)>
-<!ATTLIST script
-  id          ID             #IMPLIED
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #REQUIRED
-  language    CDATA          #IMPLIED
-  src         %URI;          #IMPLIED
-  defer       (defer)        #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- alternate content container for non script-based rendering -->
-
-<!ELEMENT noscript %Flow;>
-<!ATTLIST noscript
-  %attrs;
-  >
-
-<!--======================= Frames =======================================-->
-
-<!-- inline subwindow -->
-
-<!ELEMENT iframe %Flow;>
-<!ATTLIST iframe
-  %coreattrs;
-  longdesc    %URI;          #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  src         %URI;          #IMPLIED
-  frameborder (1|0)          "1"
-  marginwidth %Pixels;       #IMPLIED
-  marginheight %Pixels;      #IMPLIED
-  scrolling   (yes|no|auto)  "auto"
-  align       %ImgAlign;     #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  >
-
-<!-- alternate content container for non frame-based rendering -->
-
-<!ELEMENT noframes %Flow;>
-<!ATTLIST noframes
-  %attrs;
-  >
-
-<!--=================== Document Body ====================================-->
-
-<!ELEMENT body %Flow;>
-<!ATTLIST body
-  %attrs;
-  onload      %Script;       #IMPLIED
-  onunload    %Script;       #IMPLIED
-  background  %URI;          #IMPLIED
-  bgcolor     %Color;        #IMPLIED
-  text        %Color;        #IMPLIED
-  link        %Color;        #IMPLIED
-  vlink       %Color;        #IMPLIED
-  alink       %Color;        #IMPLIED
-  >
-
-<!ELEMENT div %Flow;>  <!-- generic language/style container -->
-<!ATTLIST div
-  %attrs;
-  %TextAlign;
-  >
-
-<!--=================== Paragraphs =======================================-->
-
-<!ELEMENT p %Inline;>
-<!ATTLIST p
-  %attrs;
-  %TextAlign;
-  >
-
-<!--=================== Headings =========================================-->
-
-<!--
-  There are six levels of headings from h1 (the most important)
-  to h6 (the least important).
--->
-
-<!ELEMENT h1  %Inline;>
-<!ATTLIST h1
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h2 %Inline;>
-<!ATTLIST h2
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h3 %Inline;>
-<!ATTLIST h3
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h4 %Inline;>
-<!ATTLIST h4
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h5 %Inline;>
-<!ATTLIST h5
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h6 %Inline;>
-<!ATTLIST h6
-  %attrs;
-  %TextAlign;
-  >
-
-<!--=================== Lists ============================================-->
-
-<!-- Unordered list bullet styles -->
-
-<!ENTITY % ULStyle "(disc|square|circle)">
-
-<!-- Unordered list -->
-
-<!ELEMENT ul (li)+>
-<!ATTLIST ul
-  %attrs;
-  type        %ULStyle;     #IMPLIED
-  compact     (compact)     #IMPLIED
-  >
-
-<!-- Ordered list numbering style
-
-    1   arabic numbers      1, 2, 3, ...
-    a   lower alpha         a, b, c, ...
-    A   upper alpha         A, B, C, ...
-    i   lower roman         i, ii, iii, ...
-    I   upper roman         I, II, III, ...
-
-    The style is applied to the sequence number which by default
-    is reset to 1 for the first list item in an ordered list.
--->
-<!ENTITY % OLStyle "CDATA">
-
-<!-- Ordered (numbered) list -->
-
-<!ELEMENT ol (li)+>
-<!ATTLIST ol
-  %attrs;
-  type        %OLStyle;      #IMPLIED
-  compact     (compact)      #IMPLIED
-  start       %Number;       #IMPLIED
-  >
-
-<!-- single column list (DEPRECATED) --> 
-<!ELEMENT menu (li)+>
-<!ATTLIST menu
-  %attrs;
-  compact     (compact)     #IMPLIED
-  >
-
-<!-- multiple column list (DEPRECATED) --> 
-<!ELEMENT dir (li)+>
-<!ATTLIST dir
-  %attrs;
-  compact     (compact)     #IMPLIED
-  >
-
-<!-- LIStyle is constrained to: "(%ULStyle;|%OLStyle;)" -->
-<!ENTITY % LIStyle "CDATA">
-
-<!-- list item -->
-
-<!ELEMENT li %Flow;>
-<!ATTLIST li
-  %attrs;
-  type        %LIStyle;      #IMPLIED
-  value       %Number;       #IMPLIED
-  >
-
-<!-- definition lists - dt for term, dd for its definition -->
-
-<!ELEMENT dl (dt|dd)+>
-<!ATTLIST dl
-  %attrs;
-  compact     (compact)      #IMPLIED
-  >
-
-<!ELEMENT dt %Inline;>
-<!ATTLIST dt
-  %attrs;
-  >
-
-<!ELEMENT dd %Flow;>
-<!ATTLIST dd
-  %attrs;
-  >
-
-<!--=================== Address ==========================================-->
-
-<!-- information on author -->
-
-<!ELEMENT address (#PCDATA | %inline; | %misc.inline; | p)*>
-<!ATTLIST address
-  %attrs;
-  >
-
-<!--=================== Horizontal Rule ==================================-->
-
-<!ELEMENT hr EMPTY>
-<!ATTLIST hr
-  %attrs;
-  align       (left|center|right) #IMPLIED
-  noshade     (noshade)      #IMPLIED
-  size        %Pixels;       #IMPLIED
-  width       %Length;       #IMPLIED
-  >
-
-<!--=================== Preformatted Text ================================-->
-
-<!-- content is %Inline; excluding 
-        "img|object|applet|big|small|sub|sup|font|basefont" -->
-
-<!ELEMENT pre %pre.content;>
-<!ATTLIST pre
-  %attrs;
-  width       %Number;      #IMPLIED
-  xml:space   (preserve)    #FIXED 'preserve'
-  >
-
-<!--=================== Block-like Quotes ================================-->
-
-<!ELEMENT blockquote %Flow;>
-<!ATTLIST blockquote
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!--=================== Text alignment ===================================-->
-
-<!-- center content -->
-<!ELEMENT center %Flow;>
-<!ATTLIST center
-  %attrs;
-  >
-
-<!--=================== Inserted/Deleted Text ============================-->
-
-<!--
-  ins/del are allowed in block and inline content, but its
-  inappropriate to include block content within an ins element
-  occurring in inline content.
--->
-<!ELEMENT ins %Flow;>
-<!ATTLIST ins
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!ELEMENT del %Flow;>
-<!ATTLIST del
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!--================== The Anchor Element ================================-->
-
-<!-- content is %Inline; except that anchors shouldn't be nested -->
-
-<!ELEMENT a %a.content;>
-<!ATTLIST a
-  %attrs;
-  %focus;
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!--===================== Inline Elements ================================-->
-
-<!ELEMENT span %Inline;> <!-- generic language/style container -->
-<!ATTLIST span
-  %attrs;
-  >
-
-<!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
-<!ATTLIST bdo
-  %coreattrs;
-  %events;
-  lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #REQUIRED
-  >
-
-<!ELEMENT br EMPTY>   <!-- forced line break -->
-<!ATTLIST br
-  %coreattrs;
-  clear       (left|all|right|none) "none"
-  >
-
-<!ELEMENT em %Inline;>   <!-- emphasis -->
-<!ATTLIST em %attrs;>
-
-<!ELEMENT strong %Inline;>   <!-- strong emphasis -->
-<!ATTLIST strong %attrs;>
-
-<!ELEMENT dfn %Inline;>   <!-- definitional -->
-<!ATTLIST dfn %attrs;>
-
-<!ELEMENT code %Inline;>   <!-- program code -->
-<!ATTLIST code %attrs;>
-
-<!ELEMENT samp %Inline;>   <!-- sample -->
-<!ATTLIST samp %attrs;>
-
-<!ELEMENT kbd %Inline;>  <!-- something user would type -->
-<!ATTLIST kbd %attrs;>
-
-<!ELEMENT var %Inline;>   <!-- variable -->
-<!ATTLIST var %attrs;>
-
-<!ELEMENT cite %Inline;>   <!-- citation -->
-<!ATTLIST cite %attrs;>
-
-<!ELEMENT abbr %Inline;>   <!-- abbreviation -->
-<!ATTLIST abbr %attrs;>
-
-<!ELEMENT acronym %Inline;>   <!-- acronym -->
-<!ATTLIST acronym %attrs;>
-
-<!ELEMENT q %Inline;>   <!-- inlined quote -->
-<!ATTLIST q
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!ELEMENT sub %Inline;> <!-- subscript -->
-<!ATTLIST sub %attrs;>
-
-<!ELEMENT sup %Inline;> <!-- superscript -->
-<!ATTLIST sup %attrs;>
-
-<!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
-<!ATTLIST tt %attrs;>
-
-<!ELEMENT i %Inline;>   <!-- italic font -->
-<!ATTLIST i %attrs;>
-
-<!ELEMENT b %Inline;>   <!-- bold font -->
-<!ATTLIST b %attrs;>
-
-<!ELEMENT big %Inline;>   <!-- bigger font -->
-<!ATTLIST big %attrs;>
-
-<!ELEMENT small %Inline;>   <!-- smaller font -->
-<!ATTLIST small %attrs;>
-
-<!ELEMENT u %Inline;>   <!-- underline -->
-<!ATTLIST u %attrs;>
-
-<!ELEMENT s %Inline;>   <!-- strike-through -->
-<!ATTLIST s %attrs;>
-
-<!ELEMENT strike %Inline;>   <!-- strike-through -->
-<!ATTLIST strike %attrs;>
-
-<!ELEMENT basefont EMPTY>  <!-- base font size -->
-<!ATTLIST basefont
-  id          ID             #IMPLIED
-  size        CDATA          #REQUIRED
-  color       %Color;        #IMPLIED
-  face        CDATA          #IMPLIED
-  >
-
-<!ELEMENT font %Inline;> <!-- local change to font -->
-<!ATTLIST font
-  %coreattrs;
-  %i18n;
-  size        CDATA          #IMPLIED
-  color       %Color;        #IMPLIED
-  face        CDATA          #IMPLIED
-  >
-
-<!--==================== Object ======================================-->
-<!--
-  object is used to embed objects as part of HTML pages.
-  param elements should precede other content. Parameters
-  can also be expressed as attribute/value pairs on the
-  object element itself when brevity is desired.
--->
-
-<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
-<!ATTLIST object
-  %attrs;
-  declare     (declare)      #IMPLIED
-  classid     %URI;          #IMPLIED
-  codebase    %URI;          #IMPLIED
-  data        %URI;          #IMPLIED
-  type        %ContentType;  #IMPLIED
-  codetype    %ContentType;  #IMPLIED
-  archive     %UriList;      #IMPLIED
-  standby     %Text;         #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  align       %ImgAlign;     #IMPLIED
-  border      %Pixels;       #IMPLIED
-  hspace      %Pixels;       #IMPLIED
-  vspace      %Pixels;       #IMPLIED
-  >
-
-<!--
-  param is used to supply a named property value.
-  In XML it would seem natural to follow RDF and support an
-  abbreviated syntax where the param elements are replaced
-  by attribute value pairs on the object start tag.
--->
-<!ELEMENT param EMPTY>
-<!ATTLIST param
-  id          ID             #IMPLIED
-  name        CDATA          #REQUIRED
-  value       CDATA          #IMPLIED
-  valuetype   (data|ref|object) "data"
-  type        %ContentType;  #IMPLIED
-  >
-
-<!--=================== Java applet ==================================-->
-<!--
-  One of code or object attributes must be present.
-  Place param elements before other content.
--->
-<!ELEMENT applet (#PCDATA | param | %block; | form | %inline; | %misc;)*>
-<!ATTLIST applet
-  %coreattrs;
-  codebase    %URI;          #IMPLIED
-  archive     CDATA          #IMPLIED
-  code        CDATA          #IMPLIED
-  object      CDATA          #IMPLIED
-  alt         %Text;         #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  width       %Length;       #REQUIRED
-  height      %Length;       #REQUIRED
-  align       %ImgAlign;     #IMPLIED
-  hspace      %Pixels;       #IMPLIED
-  vspace      %Pixels;       #IMPLIED
-  >
-
-<!--=================== Images ===========================================-->
-
-<!--
-   To avoid accessibility problems for people who aren't
-   able to see the image, you should provide a text
-   description using the alt and longdesc attributes.
-   In addition, avoid the use of server-side image maps.
--->
-
-<!ELEMENT img EMPTY>
-<!ATTLIST img
-  %attrs;
-  src         %URI;          #REQUIRED
-  alt         %Text;         #REQUIRED
-  name        NMTOKEN        #IMPLIED
-  longdesc    %URI;          #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  ismap       (ismap)        #IMPLIED
-  align       %ImgAlign;     #IMPLIED
-  border      %Length;       #IMPLIED
-  hspace      %Pixels;       #IMPLIED
-  vspace      %Pixels;       #IMPLIED
-  >
-
-<!-- usemap points to a map element which may be in this document
-  or an external document, although the latter is not widely supported -->
-
-<!--================== Client-side image maps ============================-->
-
-<!-- These can be placed in the same document or grouped in a
-     separate document although this isn't yet widely supported -->
-
-<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
-<!ATTLIST map
-  %i18n;
-  %events;
-  id          ID             #REQUIRED
-  class       CDATA          #IMPLIED
-  style       %StyleSheet;   #IMPLIED
-  title       %Text;         #IMPLIED
-  name        CDATA          #IMPLIED
-  >
-
-<!ELEMENT area EMPTY>
-<!ATTLIST area
-  %attrs;
-  %focus;
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  href        %URI;          #IMPLIED
-  nohref      (nohref)       #IMPLIED
-  alt         %Text;         #REQUIRED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!--================ Forms ===============================================-->
-
-<!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
-
-<!ATTLIST form
-  %attrs;
-  action      %URI;          #REQUIRED
-  method      (get|post)     "get"
-  name        NMTOKEN        #IMPLIED
-  enctype     %ContentType;  "application/x-www-form-urlencoded"
-  onsubmit    %Script;       #IMPLIED
-  onreset     %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  accept-charset %Charsets;  #IMPLIED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!--
-  Each label must not contain more than ONE field
-  Label elements shouldn't be nested.
--->
-<!ELEMENT label %Inline;>
-<!ATTLIST label
-  %attrs;
-  for         IDREF          #IMPLIED
-  accesskey   %Character;    #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  >
-
-<!ENTITY % InputType
-  "(text | password | checkbox |
-    radio | submit | reset |
-    file | hidden | image | button)"
-   >
-
-<!-- the name attribute is required for all but submit & reset -->
-
-<!ELEMENT input EMPTY>     <!-- form control -->
-<!ATTLIST input
-  %attrs;
-  %focus;
-  type        %InputType;    "text"
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  checked     (checked)      #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  size        CDATA          #IMPLIED
-  maxlength   %Number;       #IMPLIED
-  src         %URI;          #IMPLIED
-  alt         CDATA          #IMPLIED
-  usemap      %URI;          #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  align       %ImgAlign;     #IMPLIED
-  >
-
-<!ELEMENT select (optgroup|option)+>  <!-- option selector -->
-<!ATTLIST select
-  %attrs;
-  name        CDATA          #IMPLIED
-  size        %Number;       #IMPLIED
-  multiple    (multiple)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!ELEMENT optgroup (option)+>   <!-- option group -->
-<!ATTLIST optgroup
-  %attrs;
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #REQUIRED
-  >
-
-<!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
-<!ATTLIST option
-  %attrs;
-  selected    (selected)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #IMPLIED
-  value       CDATA          #IMPLIED
-  >
-
-<!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
-<!ATTLIST textarea
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  rows        %Number;       #REQUIRED
-  cols        %Number;       #REQUIRED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!--
-  The fieldset element is used to group form fields.
-  Only one legend element should occur in the content
-  and if present should only be preceded by whitespace.
--->
-<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
-<!ATTLIST fieldset
-  %attrs;
-  >
-
-<!ENTITY % LAlign "(top|bottom|left|right)">
-
-<!ELEMENT legend %Inline;>     <!-- fieldset label -->
-<!ATTLIST legend
-  %attrs;
-  accesskey   %Character;    #IMPLIED
-  align       %LAlign;       #IMPLIED
-  >
-
-<!--
- Content is %Flow; excluding a, form, form controls, iframe
---> 
-<!ELEMENT button %button.content;>  <!-- push button -->
-<!ATTLIST button
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  type        (button|submit|reset) "submit"
-  disabled    (disabled)     #IMPLIED
-  >
-
-<!-- single-line text input control (DEPRECATED) -->
-<!ELEMENT isindex EMPTY>
-<!ATTLIST isindex
-  %coreattrs;
-  %i18n;
-  prompt      %Text;         #IMPLIED
-  >
-
-<!--======================= Tables =======================================-->
-
-<!-- Derived from IETF HTML table standard, see [RFC1942] -->
-
-<!--
- The border attribute sets the thickness of the frame around the
- table. The default units are screen pixels.
-
- The frame attribute specifies which parts of the frame around
- the table should be rendered. The values are not the same as
- CALS to avoid a name clash with the valign attribute.
--->
-<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
-
-<!--
- The rules attribute defines which rules to draw between cells:
-
- If rules is absent then assume:
-     "none" if border is absent or border="0" otherwise "all"
--->
-
-<!ENTITY % TRules "(none | groups | rows | cols | all)">
-  
-<!-- horizontal placement of table relative to document -->
-<!ENTITY % TAlign "(left|center|right)">
-
-<!-- horizontal alignment attributes for cell contents
-
-  char        alignment char, e.g. char=':'
-  charoff     offset for alignment char
--->
-<!ENTITY % cellhalign
-  "align      (left|center|right|justify|char) #IMPLIED
-   char       %Character;    #IMPLIED
-   charoff    %Length;       #IMPLIED"
-  >
-
-<!-- vertical alignment attributes for cell contents -->
-<!ENTITY % cellvalign
-  "valign     (top|middle|bottom|baseline) #IMPLIED"
-  >
-
-<!ELEMENT table
-     (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
-<!ELEMENT caption  %Inline;>
-<!ELEMENT thead    (tr)+>
-<!ELEMENT tfoot    (tr)+>
-<!ELEMENT tbody    (tr)+>
-<!ELEMENT colgroup (col)*>
-<!ELEMENT col      EMPTY>
-<!ELEMENT tr       (th|td)+>
-<!ELEMENT th       %Flow;>
-<!ELEMENT td       %Flow;>
-
-<!ATTLIST table
-  %attrs;
-  summary     %Text;         #IMPLIED
-  width       %Length;       #IMPLIED
-  border      %Pixels;       #IMPLIED
-  frame       %TFrame;       #IMPLIED
-  rules       %TRules;       #IMPLIED
-  cellspacing %Length;       #IMPLIED
-  cellpadding %Length;       #IMPLIED
-  align       %TAlign;       #IMPLIED
-  bgcolor     %Color;        #IMPLIED
-  >
-
-<!ENTITY % CAlign "(top|bottom|left|right)">
-
-<!ATTLIST caption
-  %attrs;
-  align       %CAlign;       #IMPLIED
-  >
-
-<!--
-colgroup groups a set of col elements. It allows you to group
-several semantically related columns together.
--->
-<!ATTLIST colgroup
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
- col elements define the alignment properties for cells in
- one or more columns.
-
- The width attribute specifies the width of the columns, e.g.
-
-     width=64        width in screen pixels
-     width=0.5*      relative width of 0.5
-
- The span attribute causes the attributes of one
- col element to apply to more than one column.
--->
-<!ATTLIST col
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
-    Use thead to duplicate headers when breaking table
-    across page boundaries, or for static headers when
-    tbody sections are rendered in scrolling panel.
-
-    Use tfoot to duplicate footers when breaking table
-    across page boundaries, or for static footers when
-    tbody sections are rendered in scrolling panel.
-
-    Use multiple tbody sections when rules are needed
-    between groups of table rows.
--->
-<!ATTLIST thead
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tfoot
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tbody
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tr
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  bgcolor     %Color;        #IMPLIED
-  >
-
-<!-- Scope is simpler than headers attribute for common tables -->
-<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
-
-<!-- th is for headers, td for data and for cells acting as both -->
-
-<!ATTLIST th
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  nowrap      (nowrap)       #IMPLIED
-  bgcolor     %Color;        #IMPLIED
-  width       %Length;       #IMPLIED
-  height      %Length;       #IMPLIED
-  >
-
-<!ATTLIST td
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  nowrap      (nowrap)       #IMPLIED
-  bgcolor     %Color;        #IMPLIED
-  width       %Length;       #IMPLIED
-  height      %Length;       #IMPLIED
-  >
-
--- a/Admin/website/faq.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,245 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
-    <title>Isabelle FAQ</title>
-    <?include file="//include/htmlheader.include.html"?>
-</head>
-
-<body class="main">
-    <?include file="//include/header.include.html"?>
-    <div class="hr"><hr/></div>
-    <?include file="//include/navigation.include.html"?>
-    <div class="hr"><hr/></div>
-    <div id="content">
-
-    <h2>General Questions</h2>
-
-    <dl class="faq">
-
-      <dt>What is Isabelle?</dt>
-    
-      <dd>Isabelle is a popular generic theorem proving environment developed
-          at Cambridge University (<a href=
-          "http://www.cl.cam.ac.uk/users/lcp/">Larry Paulson</a>) and TU Munich
-          (<a href="http://www.in.tum.de/~nipkow/">Tobias Nipkow</a>). See the
-          <a href="http://isabelle.in.tum.de/">Isabelle homepage</a> for more
-          information.</dd>
-    
-      <dt>Where can I find documentation?</dt>
-    
-      <dd><a href="http://isabelle.in.tum.de/documentation.html">This way, please</a>.
-          Also have a look at the <a href=
-          "http://isabelle.in.tum.de/dist/library/">theory library</a>.</dd>
-    
-      <dt>Is it available for download?</dt>
-    
-      <dd>Yes, it is available from several mirror sites, e.&nbsp;g. from
-          <a href="http://isabelle.in.tum.de">Munich</a>. It runs on common
-          Unix systems (Linux, MacOS&nbsp;X, Solaris, etc.).</dd>
-    
-</dl>
-      <h2>Syntax</h2>
-
-    <dl class="faq">
-    
-      <dt>There are lots of arrows in Isabelle/HOL. What's the difference between
-          <tt>-&gt;</tt>, <tt>=&gt;</tt>, <tt>--&gt;</tt>, and <tt>==&gt;</tt>
-          ?</dt>
-    
-      <dd>Isabelle uses the <tt>=&gt;</tt> arrow for the function type
-          (contrary to most functional languages which use <tt>-&gt;</tt>). So
-          <tt>a =&gt; b</tt> is the type of a function that takes an element of
-          <tt>a</tt> as input and gives you an element of <tt>b</tt> as output. The
-          long arrow <tt>--&gt;</tt> and <tt>==&gt;</tt> are object and meta level
-          implication. Roughly speaking, the meta level implication should only be
-          used when stating theorems where it separates the assumptions from the
-          conclusion. Whenever you need an implication inside a HOL formula, use
-          <code>--&gt;</code>.</dd>
-    
-      <dt>Where do I have to put those double quotes?</dt>
-    
-      <dd>Isabelle distinguishes between <em>inner</em> and <em>outer</em>
-          syntax. The outer syntax comes from the Isabelle framework, the inner
-          syntax is the one in between quotation marks and comes from the object
-          logic (in this case HOL). With time the distinction between the two
-          becomes obvious, but in the beginning the following rules of thumb may
-          work: types should be inside quotation marks, formulas and lemmas should
-          be inside quotation marks, rules and equations (e.g. for definitions)
-          should be inside quotation marks, commands like <tt>lemma</tt>,
-          <tt>consts</tt>, <tt>primrec</tt>, <tt>constdefs</tt>, <tt>apply</tt>,
-          <tt>done</tt> are without quotation marks, as are the names of constants
-          in constant definitions (<tt>consts</tt> and <tt>constdefs</tt>)</dd>
-    
-      <dt>What is <tt>"No such constant: _case_syntax"</tt> supposed to tell
-          me?</dt>
-    
-      <dd>You get this message if you use a case construct on a datatype and
-          have a typo in the names of the constructor patterns or if the order of
-          the constructors in the case pattern is different from the order in which
-          they where defined (in the datatype definition).</dd>
-    
-      <dt>Why doesn't Isabelle/HOL understand my equation?</dt>
-    
-      <dd>Isabelle's equality <tt>=</tt> binds relatively strongly, so an
-          equation like <tt>a = b &amp; c</tt> might not be what you intend.
-          Isabelle parses it as <tt>(a = b) &amp; c</tt>. If you want it the other
-          way around, you must set explicit parentheses as in <tt>a = (b &amp;
-          c)</tt>. This also applies to e.g. <tt>primrec</tt> definitions (see
-          below).</dd>
-    
-      <dt>What does it mean "not a proper equation"?</dt>
-    
-      <dd>Most commonly this is an instance of the question above. The
-          <tt>primrec</tt> command (and others) expect equations as input, and
-          since equality binds strongly in Isabelle/HOL, something like <tt>f x = b
-          &amp; c</tt> is not what you might expect it to be: Isabelle parses it as
-          <tt>(f x = b) &amp; c</tt> (which is indeed not a proper equation). To
-          turn it into an equation you must set explicit parentheses: <tt>f x = (b
-          &amp; c)</tt>.</dd>
-    
-      <dt>What does it mean "<tt>Not a meta-equality (==)</tt>"?</dt>
-    
-      <dd>This usually occurs if you use <tt>=</tt> for <tt>constdefs</tt>. The
-          <tt>constdefs</tt> and <tt>defs</tt> commands expect not equations, but
-          meta equivalences. Just use the <tt>\&lt;equiv&gt;</tt> or <tt>==</tt>
-          signs instead of <tt>=</tt>.</dd>
-    
-</dl>
-      <h2>Proving</h2>
-
-    <dl class="faq">
-    
-      <dt>What does "empty result sequence" mean?</dt>
-    
-      <dd>It means that the applied proof method (or tactic) was unsuccessful.
-          It did not transform the goal in any way, or simply just failed to do
-          anything. You must try another tactic (or give the one you used more
-          hints or lemmas to work with)</dd>
-    
-      <dt>The Simplifier doesn't want to apply my rule, what's wrong?</dt>
-    
-      <dd>Most commonly this is a typing problem. The rule you want to apply
-          may require a more special (or just plain different) type from what you
-          have in the current goal. Use the ProofGeneral menu <tt>Isabelle/Isar
-          -&gt; Settings -&gt; Show Types</tt> and the <tt>thm</tt> command on the
-          rule you want to apply to find out if the types are what you expect them
-          to be (also take a look at the types in your goal). <tt>Show Sorts</tt>,
-          <tt>Show Constants</tt>, and <tt>Trace Simplifier</tt> in the same menu
-          may also be helpful.</dd>
-    
-      <dt>If I do <tt>auto</tt>, it leaves me a goal <tt>False</tt>. Is my
-          theorem wrong?</dt>
-    
-      <dd>Not necessarily. It just means that <tt>auto</tt> transformed the
-          goal into something that is not provable any more. That could be due to
-          <tt>auto</tt> doing something stupid, or e.g. due to some earlier step in
-          the proof that lost important information. It is of course also possible
-          that the goal was never provable in the first place.</dd>
-    
-      <dt>Why does <tt>lemma "1+1=2"</tt> fail?</dt>
-    
-      <dd>Because it is not necessarily true. Isabelle/HOL does not assume that 1
-          and 2 are natural numbers. Try <tt>"(1::nat)+1=2"</tt> instead.</dd>
-    
-      <dt>Can Isabelle/HOL find counterexamples?</dt>
-    
-      <dd>
-            <p>For arithmetic goals, <code>arith</code> finds counterexamples. For
-            executable goals, <code>quickcheck</code> tries to find a
-            counterexample. For goals of a more logical nature (including
-            quantifiers, sets and inductive definitions) <code>refute</code>
-            searches for a countermodel.</p>
-    
-            <p>Otherwise, negate the proposition and instantiate (some) variables
-            with concrete values. You may also need additional assumptions about
-            these values. For example, <tt>True &amp; False ~= True | False</tt> is
-            a counterexample of <tt>A &amp; B = A | B</tt>, and <tt>A = ~B ==&gt; A
-            &amp; B ~= A | B</tt> is another one. Sometimes Isabelle can help you
-            to find the counterexample: just negate the proposition and do
-            <tt>auto</tt> or <tt>simp</tt>. If lucky, you are left with the
-            assumptions you need for the counterexample to work.</p>
-          </dd>
-    
-</dl>
-      <h2>Interface</h2>
-
-    <dl class="faq">
-    
-      <dt>X-Symbol doesn't seem to work. What can I do?</dt>
-    
-      <dd>The most common reason why X-Symbol doesn't work is: it's not
-          switched on yet. Assuming you are using ProofGeneral and have installed
-          the X-Symbol package, you still need to turn X-Symbol on in ProofGeneral:
-          select the menu items <tt>Proof-General -&gt; Options -&gt; X-Symbol</tt>
-          and (if you want to save the setting for future sessions) select
-          <tt>Options -&gt; Save Options</tt> in XEmacs.</dd>
-
-      <dt>How do I input those X-Symbols anyway?</dt>
-    
-      <dd>There are lots of ways to input x-symbols. The one that always works
-          is writing it out in plain text (e.g. for the 'and' symbol type
-          <tt>\&lt;and&gt;</tt>). For common symbols you can try to "paint them in
-          ASCII" and if the xsymbol package recognizes them it will automatically
-          convert them into their graphical representation. Examples:
-          <tt>--&gt;</tt> is converted into the long single arrow, <tt>/\</tt> is
-          converted into the 'and' symbol, the sequence <tt>=_</tt> into the
-          equivalence sign, <tt>&lt;_</tt> into less-or-equal, <tt>[|</tt> into
-          opening semantic brackets, and so on. For greek characters, the
-          <code>rotate</code> command works well: to input &alpha; type
-          <code>a</code> and then <code>C-.</code> (control and <code>.</code>).
-          You can also display the grid-of-characters in the x-symbol menu to get
-          an overview of the available graphical representations (not all of them
-          already have a meaning in Isabelle, though).</dd>
-    
-</dl>
-      <h2>System</h2>
-
-    <dl class="faq">
-    
-      <dt>I want to generate one of those flashy LaTeX documents. How?</dt>
-    
-      <dd>You will need to work with the <tt class="shellcmd">isatool</tt> command for this (in
-          a Unix shell). The easiest way to get to a document is the following: use
-          <tt class="shellcmd">isatool mkdir</tt> to set up a new directory. The command will also
-          create a file called <tt class="shellcmd">IsaMakefile</tt> in the current directory. Put
-          your theory file(s) into the new directory and edit the file
-          <tt class="shellcmd">ROOT.ML</tt> in there (following the comments) to tell Isabelle which
-          of the theories to load (and in which order). Go back to the parent
-          directory (where the <tt class="shellcmd">IsaMakefile</tt> is) and type <tt class="shellcmd">isatool
-          make</tt>. Isabelle should then process your theories and tell you where
-          to find the finished document. For more information on generating
-          documents see the Isabelle Tutorial, Chapter 4.</dd>
-    
-      <dt>I have a large formalization with many theories. Must I process all
-          of them all of the time?</dt>
-    
-      <dd>No, you can tell Isabelle to build a so-called heap image. This heap
-          image can contain your preloaded theories. To get one, set up a directory
-          with a <tt class="shellcmd">ROOT.ML</tt> file (as for generating a document) and use the
-          command <tt class="shellcmd">isatool usedir -b HOL MyImage</tt> in that directory to
-          create an image <tt class="shellcmd">MyImage</tt> using the parent logic <tt class="shellcmd">HOL</tt>. You
-          should then be able to invoke Isabelle with <tt class="shellcmd">Isabelle -l MyImage</tt>
-          and have everything that is loaded in ROOT.ML instantly available.</dd>
-
-      <dt>Can I run Isabelle on Windows?</dt>
-
-      <dd>Not really.  The Cygwin environment provides a Unixoid
-      look-and-feel that is sufficient for very basic Isabelle
-      functionality.  See also <a
-      href="installation_notes_cygwin.html">Installation notes for
-      Cygwin/Windows.</a>
-
-      To try out Isabelle it might be much easier to use a Linux boot
-      CD, such as <a href="http://www.knoppix.org/">Knoppix</a>.</dd>
-    
-    </dl>
-
-    </div>
-    <div class="hr"><hr/></div>
-    <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
Binary file Admin/website/img/favicon.ico has changed
Binary file Admin/website/img/isabelle.gif has changed
Binary file Admin/website/img/isabelle_logo.gif has changed
Binary file Admin/website/img/screenshot_isabelle_macos.gif has changed
Binary file Admin/website/img/screenshot_isabelle_pg.png has changed
Binary file Admin/website/img/tutorial_cover_big.gif has changed
Binary file Admin/website/img/tutorial_cover_small.gif has changed
Binary file Admin/website/img/univ_cambridge.gif has changed
Binary file Admin/website/img/univ_tum.gif has changed
Binary file Admin/website/img/world_map.gif has changed
Binary file Admin/website/img/world_map_large.gif has changed
--- a/Admin/website/include/documentationdist.include.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1" ?>
-<dummy:wrapper xmlns:dummy="http://nowhere.no">
-<h3>Learning Isabelle</h3>
-<ul>
-  <li><a target='_blank' href='//dist/Isabelle/doc/tutorial.pdf'>Tutorial on Isabelle/HOL</a></li>
-  <li><a target='_blank' href='//dist/Isabelle/doc/isar-overview.pdf'>Tutorial on Isar</a></li>
-  <li><a target='_blank' href='//dist/Isabelle/doc/locales.pdf'>Tutorial on Locales</a></li>
-</ul>
-<h3>Reference Manuals</h3>
-<ul>
-  <li><a target='_blank' href='//dist/Isabelle/doc/isar-ref.pdf'>The Isabelle/Isar Reference Manual</a></li>
-  <li><a target='_blank' href='//dist/Isabelle/doc/ref.pdf'>The Isabelle Reference Manual</a></li>
-  <li><a target='_blank' href='//dist/Isabelle/doc/system.pdf'>The Isabelle System Manual</a></li>
-</ul>
-<h3>Logics</h3>
-<ul>
-  <li><a target='_blank' href='//dist/Isabelle/doc/logics.pdf'>Isabelle's Logics: overview and misc logics</a></li>
-  <li><a target='_blank' href='//dist/Isabelle/doc/logics-HOL.pdf'>Isabelle's Logics: HOL</a></li>
-  <li><a target='_blank' href='//dist/Isabelle/doc/logics-ZF.pdf'>Isabelle's Logics: FOL and ZF</a></li>
-</ul>
-<h3>Specific Topics</h3>
-<ul>
-  <li><a target='_blank' href='//dist/Isabelle/doc/sugar.pdf'>LaTeX sugar for proof documents</a></li>
-  <li><a target='_blank' href='//dist/Isabelle/doc/axclass.pdf'>Tutorial on Axiomatic Type Classes</a></li>
-  <li><a target='_blank' href='//dist/Isabelle/doc/ind-defs.pdf'>(Co)Inductive Definitions in ZF</a></li>
-</ul>
-</dummy:wrapper>
--- a/Admin/website/include/downloadtable.include.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE table PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<table class="download">
-  <tr><td colspan="3" class="downloadheader">Isabelle</td></tr>
-  <tr>
-    <td>
-      Sources and documentation
-    </td>
-    <?downloadCells target="//dist/Isabelle2005.tar.gz" title="Isabelle2005.tar.gz"?>
-  </tr>
-  <tr>
-    <td>
-      Documentation in PDF
-    </td>
-    <?downloadCells target="//dist/Isabelle2005_pdf.tar.gz" title="Isabelle2005_pdf.tar.gz"?>
-  </tr>
-  <tr>
-    <td>
-      Theory library in PDF and HTML
-    </td>
-    <?downloadCells target="//dist/Isabelle2005_library.tar.gz" title="Isabelle2005_library.tar.gz"?>
-  </tr>
-  <tr><td colspan="3" class="downloadheader">Proof General</td></tr>
-  <tr>
-    <td>
-      Proof General
-    </td>
-    <?downloadCells target="//dist/contrib/ProofGeneral.tar.gz" title="ProofGeneral.tar.gz"?>
-  </tr>
-  <tr><td colspan="3" class="downloadheader">Poly/ML compiler and runtime system</td></tr>
-  <tr>
-    <td rowspan="3">
-      Poly/ML
-    </td>
-    <?downloadCells target="//dist/contrib/polyml_x86-linux.tar.gz" title="polyml_x86-linux.tar.gz"?>
-  </tr>
-  <tr class="rowspan">
-    <?downloadCells target="//dist/contrib/polyml_sparc-solaris.tar.gz" title="polyml_sparc-solaris.tar.gz"?>
-  </tr>
-  <tr class="rowspan">
-    <?downloadCells target="//dist/contrib/polyml_ppc-darwin.tar.gz" title="polyml_ppc-darwin.tar.gz"?>
-  </tr>
-  <tr><td colspan="3" class="downloadheader">Precompiled logics</td></tr>
-  <tr>
-    <td rowspan="3">
-      HOL
-    </td>
-    <?downloadCells target="//dist/HOL_x86-linux.tar.gz" title="HOL_x86-linux.tar.gz"?>
-  </tr>
-  <tr class="rowspan">
-    <?downloadCells target="//dist/HOL_sparc-solaris.tar.gz" title="HOL_sparc-solaris.tar.gz"?>
-  </tr>
-  <tr class="rowspan">
-    <?downloadCells target="//dist/HOL_ppc-darwin.tar.gz" title="HOL_ppc-darwin.tar.gz"?>
-  </tr>
-  <tr>
-    <td rowspan="3">
-      HOL-Complex
-    </td>
-    <?downloadCells target="//dist/HOL-Complex_x86-linux.tar.gz" title="HOL-Complex_x86-linux.tar.gz"?>
-  </tr>
-  <tr class="rowspan">
-    <?downloadCells target="//dist/HOL-Complex_sparc-solaris.tar.gz" title="HOL-Complex_sparc-solaris.tar.gz"?>
-  </tr>
-  <tr class="rowspan">
-    <?downloadCells target="//dist/HOL-Complex_ppc-darwin.tar.gz" title="HOL-Complex_ppc-darwin.tar.gz"?>
-  </tr>
-  <tr>
-    <td rowspan="3">
-      HOL4
-    </td>
-    <?downloadCells target="//dist/HOL4_x86-linux.tar.gz" title="HOL4_x86-linux.tar.gz"?>
-  </tr>
-  <tr class="rowspan">
-    <?downloadCells target="//dist/HOL4_sparc-solaris.tar.gz" title="HOL4_sparc-solaris.tar.gz"?>
-  </tr>
-  <tr class="rowspan">
-    <?downloadCells target="//dist/HOL4_ppc-darwin.tar.gz" title="HOL4_ppc-darwin.tar.gz"?>
-  </tr>
-  <tr>
-    <td rowspan="3">
-      ZF
-    </td>
-    <?downloadCells target="//dist/ZF_x86-linux.tar.gz" title="ZF_x86-linux.tar.gz"?>
-  </tr>
-  <tr class="rowspan">
-    <?downloadCells target="//dist/ZF_sparc-solaris.tar.gz" title="ZF_sparc-solaris.tar.gz"?>
-  </tr>
-  <tr class="rowspan">
-    <?downloadCells target="//dist/ZF_ppc-darwin.tar.gz" title="ZF_ppc-darwin.tar.gz"?>
-  </tr>
-  <tr><td colspan="3" class="downloadheader">HOL4 proof terms</td></tr>
-  <tr>
-    <td>
-      HOL4 proof terms
-    </td>
-    <?downloadCells target="//dist/contrib/HOL4-proofs.tar.gz" title="HOL4-proofs.tar.gz"?>
-</tr>
-</table>
--- a/Admin/website/include/footer.include.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE div PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<div id="footer">
-    <p>Last updated: <?modificationDate?></p>
-</div>
--- a/Admin/website/include/header.include.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE div PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<div id="header">
-    <h1><?title?></h1>
-    <a id="isabelle_logo" href="http://isabelle.in.tum.de/index.html">
-        <img src="//img/isabelle_logo.gif" width="114" height="100" alt="Isabelle home" />
-    </a>
-    <span class="headersep"></span>
-    <a id="univ_tum" target="_blank" href="http://www4.in.tum.de/proj/theoremprov/group.html">
-        <img src="//img/univ_tum.gif" width="45" height="55" alt="Isabelle in Munich" />
-    </a>
-    <span class="headersep"></span>
-    <a id="univ_cambridge" target="_blank" href="http://www.cl.cam.ac.uk/Research/HVG/Isabelle/cambridge.html">
-        <img src="//img/univ_cambridge.gif" width="169" height="55" alt="Isabelle in Cambridge" />
-    </a>
-</div>
--- a/Admin/website/include/htmlheader.include.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<dummy:wrapper xmlns:dummy="http://nowhere.no">
-    <?contentType?>
-    <!-- the very base - here all elements are fixed to a certain base style -->
-    <link rel="stylesheet" type="text/css" media="all" href="//css/aelfwine.css"/>
-    <!-- basic isabelle site-specific styles -->
-    <link rel="stylesheet" type="text/css" media="all" href="//css/isabelle_base.css"/>
-    <!-- advanced sceen styles - they are imported such that they are ignored by old-fashioned browsers -->
-    <style type="text/css" media="screen">
-        @import url(<?relativeRoot href="css/isabelle_screen.css"?>);
-    </style>
-    <!-- advanced print styles -->
-    <link rel="stylesheet" type="text/css" media="print" href="//css/isabelle_print.css"/>
-    <link rel="icon" href="//img/favicon.ico" type="image/icon"/>
-    <meta name="language" content="en"/>
-    <meta name="robots" content="index follow"/>
-    <meta name="author" content="Tobias Nipkow, Lawrence Paulson, Markus Wenzel, Gerwin Klein, Florian Haftmann, Tjark Weber" />
-</dummy:wrapper>
\ No newline at end of file
--- a/Admin/website/include/mirrorlist.include.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE div PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<div class="mirrorlist">
-    <h3>Site Mirrors:</h3>
-    <ul>
-        <li><?mirror prefix="http://www.cl.cam.ac.uk/Research/HVG/Isabelle/" title="Cambridge (.uk)" ?></li>
-        <li><?mirror prefix="http://isabelle.in.tum.de/"                     title="Munich (.de)"    ?></li>
-        <li><?mirror prefix="http://mirror.cse.unsw.edu.au/pub/isabelle/"    title="Sydney (.au)"    ?></li>
-    </ul>
-</div>
--- a/Admin/website/include/navigation.include.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE div PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<div id="navigation">
-    <h2>Navigation</h2>
-    <ul>
-        <?navitem target="index.html"           title="Home"                           ?>
-        <?navitem target="overview.html"        title="Overview"                       ?>
-        <?navitem target="logics.html"          title="Logics"                         ?>
-        <?navitem target="installation.html"    title="Installation"                   ?>
-        <?navitem target="download.html"        title="Download"                       ?>
-        <?navitem target="documentation.html"   title="Documentation"                  ?>
-        <?navitem target="community.html"       title="Community"                      ?>
-    </ul>
-    <div class="hr"><hr/></div>
-    <ul>
-        <li><?include file="//include/mirrorlist.include.html"?></li>
-    </ul>
-</div>
--- a/Admin/website/index.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- $Id$ -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
-    <title>Isabelle</title>
-    <?include file="//include/htmlheader.include.html"?>
-</head>
-
-<body class="main">
-    <?include file="//include/header.include.html"?>
-    <div class="hr"><hr/></div>
-    <?include file="//include/navigation.include.html"?>
-    <div class="hr"><hr/></div>
-    <div id="content">
-        <h2>What is Isabelle?</h2> 
-        <p>
-        Isabelle is a popular generic theorem proving environment
-        developed at Cambridge University (<a
-        href="http://www.cl.cam.ac.uk/users/lcp/">Larry Paulson</a>)
-        and TU Munich (<a href="http://www.in.tum.de/~nipkow/">Tobias
-        Nipkow</a>).  See the <a href="overview.html">Isabelle
-        overview</a>.
-        </p>
-        <p>
-        This site provides general information on Isabelle, more
-        specific information is available from the local sites
-        </p>
-
-          <ul>
-
-            <li><a href="http://www.cl.cam.ac.uk/Research/HVG/Isabelle/cambridge.html"><strong>Isabelle
-                  at Cambridge</strong></a></li>
-
-            <li><a href="http://www4.in.tum.de/proj/theoremprov/group.html"><strong>Isabelle
-                   at Munich</strong></a></li>
-
-          </ul>
-
-          <p>
-          See there for information on projects done with Isabelle,
-          mailing list archives, research papers, the Isabelle
-          bibliography, and Isabelle workshops and courses.
-          </p>
-
-        <h2>Now available: Isabelle2005</h2>
-         <p>Some highlights:</p>
-              <ul>
-                <li>Interpretation of locale expressions in theories, locales, and proof contexts.</li>
-                <li>Substantial library improvements (HOL, HOL-Complex, HOLCF).</li>
-                <li>Proof tools for transitivity reasoning.</li>
-                <li>General <code>find_theorems</code> command (by term patterns, as intro/elim/simp rules etc.).</li>
-                <li>Commands for generating adhoc draft documents.</li>
-                <li>Support for Unicode proof documents (UTF-8).</li>
-                <li>Major internal reorganizations and performance improvements.</li>
-              </ul>
-
-<p><a href="//dist/Isabelle/NEWS">[Cumulative NEWS]</a></p>
-
-<h2>Download</h2>
-
-<p>
-Isabelle is distributed for free under the BSD license.  It includes
-source and binary packages and browsable documentation, see the <a
-href="installation.html">installation instructions</a>. You can also
-browse the <a href="//dist/library/index.html">Isabelle theory
-library</a> online.
-</p>
-
-<p>
-Use the mailing list <a href=
-          "mailto:isabelle-users@cl.cam.ac.uk">isabelle-users@cl.cam.ac.uk</a> and its
-          <a href="https://lists.cam.ac.uk/pipermail/cl-isabelle-users/index.html">archive</a> to
-discuss problems and results.
-      Why not <a href="https://lists.cam.ac.uk/mailman/listinfo/cl-isabelle-users">subscribe</a>?
-</p>
-
-    </div>
-    <div class="hr"><hr/></div>
-    <?include file="//include/footer.include.html"?>
-</body>
-
-</html>
--- a/Admin/website/installation.html	Wed Jul 12 17:00:33 2006 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,191 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1' ?>
-<!DOCTYPE html PUBLIC "-//W3C//