gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r833 - Extractor Extractor/src/include Extractor/src/plugin


From: grothoff
Subject: [GNUnet-SVN] r833 - Extractor Extractor/src/include Extractor/src/plugins Extractor/src/plugins/ole2 Extractor/src/plugins/printable Extractor/src/plugins/thumbnail GNUnet GNUnet/doc/man GNUnet/po GNUnet/src GNUnet/src/applications/fs/ecrs GNUnet/src/applications/fs/fsui GNUnet/src/applications/fs/module GNUnet/src/applications/fs/tools GNUnet/src/applications/identity GNUnet/src/conf GNUnet/src/include GNUnet-docs/WWW GNUnet-docs/papers GNUnet-docs/papers/ecrs gnunet-gtk gnunet-gtk/doc gnunet-gtk/po gnunet-gtk/src
Date: Tue, 31 May 2005 12:29:50 -0700 (PDT)

Author: grothoff
Date: 2005-05-31 12:27:19 -0700 (Tue, 31 May 2005)
New Revision: 833

Added:
   Extractor/src/plugins/thumbnail/thumbnailextractor-old.c
   GNUnet-docs/WWW/gnunet-gtk-0.7.0.png
   GNUnet-docs/WWW/news_20050531.inc
   GNUnet-docs/papers/ecrs/
   GNUnet-docs/papers/ecrs/acm-article.cls
   GNUnet-docs/papers/ecrs/acm_proc_article-sp.cls
   GNUnet-docs/papers/ecrs/acmtrans.bst
   GNUnet-docs/papers/ecrs/acmtrans2m.cls
   GNUnet-docs/papers/ecrs/big_storage_pic.eps
   GNUnet-docs/papers/ecrs/big_storage_pic.fig
   GNUnet-docs/papers/ecrs/chk.eps
   GNUnet-docs/papers/ecrs/chk.fig
   GNUnet-docs/papers/ecrs/gblock.eps
   GNUnet-docs/papers/ecrs/gblock.fig
   GNUnet-docs/papers/ecrs/gproxy_scheme.eps
   GNUnet-docs/papers/ecrs/gproxy_scheme.fig
   GNUnet-docs/papers/ecrs/iblock.eps
   GNUnet-docs/papers/ecrs/iblock.fig
   GNUnet-docs/papers/ecrs/iblock.pdf
   GNUnet-docs/papers/ecrs/indirect.eps
   GNUnet-docs/papers/ecrs/indirect.fig
   GNUnet-docs/papers/ecrs/indirection.eps
   GNUnet-docs/papers/ecrs/indirection.fig
   GNUnet-docs/papers/ecrs/llncs.cls
   GNUnet-docs/papers/ecrs/llncs.doc
   GNUnet-docs/papers/ecrs/llncs.tex
   GNUnet-docs/papers/ecrs/lncs_style.tex
   GNUnet-docs/papers/ecrs/main.aux
   GNUnet-docs/papers/ecrs/main.bbl
   GNUnet-docs/papers/ecrs/main.blg
   GNUnet-docs/papers/ecrs/main.dvi
   GNUnet-docs/papers/ecrs/main.log
   GNUnet-docs/papers/ecrs/main.out
   GNUnet-docs/papers/ecrs/main.pdf
   GNUnet-docs/papers/ecrs/main.ps
   GNUnet-docs/papers/ecrs/main.tex
   GNUnet-docs/papers/ecrs/makefile
   GNUnet-docs/papers/ecrs/modified_inode_split.eps
   GNUnet-docs/papers/ecrs/modified_inode_split.fig
   GNUnet-docs/papers/ecrs/ref.bib
   GNUnet-docs/papers/ecrs/sblock.eps
   GNUnet-docs/papers/ecrs/sblock.fig
   GNUnet-docs/papers/ecrs/sblock.pdf
   GNUnet-docs/papers/ecrs/sblock_simple.eps
   GNUnet-docs/papers/ecrs/sblock_simple.fig
   GNUnet-docs/papers/ecrs/sblock_simple.pdf
   GNUnet-docs/papers/ecrs/sigproc-sp.tex
   GNUnet-docs/papers/ecrs/simple_gblock.eps
   GNUnet-docs/papers/ecrs/simple_gblock.fig
   GNUnet-docs/papers/ecrs/simple_gblock.pdf
   GNUnet-docs/papers/ecrs/single_inode_split.eps
   GNUnet-docs/papers/ecrs/single_inode_split.fig
   GNUnet/src/applications/fs/fsui/downloadtest.c
   GNUnet/src/applications/fs/fsui/searchtest.c
   GNUnet/src/applications/identity/check.conf
   gnunet-gtk/TODO
   gnunet-gtk/doc/
   gnunet-gtk/doc/gnunet-gtk.1
   gnunet-gtk/src/download.c
Removed:
   GNUnet/doc/man/gnunet-gtk.1
   gnunet-gtk/todo
Modified:
   Extractor/configure.ac
   Extractor/src/include/extractor.h
   Extractor/src/plugins/Makefile.am
   Extractor/src/plugins/mp3extractor.c
   Extractor/src/plugins/mpegextractor.c
   Extractor/src/plugins/ole2/ole2extractor.c
   Extractor/src/plugins/printable/dictionary-builder.c
   Extractor/src/plugins/thumbnail/Makefile.am
   Extractor/src/plugins/thumbnail/thumbnailextractor.c
   Extractor/src/plugins/translitextractor.c
   GNUnet/AUTHORS
   GNUnet/README
   GNUnet/UPDATING
   GNUnet/doc/man/Makefile.am
   GNUnet/po/GNUnet.pot
   GNUnet/po/POTFILES.in
   GNUnet/po/de.po
   GNUnet/po/rw.po
   GNUnet/src/Makefile.am
   GNUnet/src/applications/fs/ecrs/meta.c
   GNUnet/src/applications/fs/ecrs/uri.c
   GNUnet/src/applications/fs/fsui/Makefile.am
   GNUnet/src/applications/fs/fsui/upload.c
   GNUnet/src/applications/fs/module/ondemand.c
   GNUnet/src/applications/fs/tools/gnunet-insert.c
   GNUnet/src/conf/wizard_util.c
   GNUnet/src/include/gnunet_ecrs_lib.h
   GNUnet/src/include/gnunet_fsui_lib.h
   GNUnet/src/include/gnunet_util.h
   GNUnet/src/include/platform.h
   GNUnet/todo
   gnunet-gtk/AUTHORS
   gnunet-gtk/Makefile.am
   gnunet-gtk/README
   gnunet-gtk/configure.ac
   gnunet-gtk/gnunet-gtk.glade
   gnunet-gtk/po/POTFILES
   gnunet-gtk/po/POTFILES.in
   gnunet-gtk/po/gnunet-gtk.pot
   gnunet-gtk/src/Makefile.am
   gnunet-gtk/src/daemon.c
   gnunet-gtk/src/fs.c
   gnunet-gtk/src/fs.h
   gnunet-gtk/src/helper.c
   gnunet-gtk/src/main.c
   gnunet-gtk/src/platform.h
Log:
update

Modified: Extractor/configure.ac
===================================================================
--- Extractor/configure.ac      2005-05-31 19:10:35 UTC (rev 832)
+++ Extractor/configure.ac      2005-05-31 19:27:19 UTC (rev 833)
@@ -1,8 +1,8 @@
 # Process this file with autoconf to produce a configure script.
 AC_PREREQ(2.57)
-AC_INIT([libextractor], [0.5.0], address@hidden)
+AC_INIT([libextractor], [0.5.1], address@hidden)
 AC_REVISION($Revision: 1.67 $)
-AM_INIT_AUTOMAKE([libextractor], [0.5.0])
+AM_INIT_AUTOMAKE([libextractor], [0.5.1])
 AM_CONFIG_HEADER(src/include/config.h)
 
 # Checks for programs.
@@ -149,25 +149,6 @@
 AC_CHECK_HEADERS([jni.h])
 # jni.h is purely optional!  But if not present => no Java support!
 
-AC_CHECK_HEADERS([wand/magick-wand.h])
-
-AC_PATH_PROG(WAND_CONFIG, Wand-config, no)
-if test "$WAND_CONFIG" = "no" ; then
-  AC_MSG_RESULT([*** All Imagemagick dependent parts will be disabled, 
Wand-config not found. ***])
-else
-  WAND_CFLAGS=`$WAND_CONFIG --cflags`
-  WAND_LDFLAGS=`$WAND_CONFIG --ldflags`
-  WAND_LIBS=`$WAND_CONFIG --libs`
-  have_imagemagick="yes"
-  AC_DEFINE(HAVE_WAND,1,[Define this if you have Imagemagick])
-fi
-
-AM_CONDITIONAL(HAVE_WAND, test x"$have_imagemagick" = "xyes" )
-AC_SUBST(WAND_CFLAGS)
-AC_SUBST(WAND_LDFLAGS)
-AC_SUBST(WAND_LIBS)
-
-
 AC_PYTHON_DEVEL
 
 AC_CHECK_HEADERS([vorbis/vorbisfile.h])
@@ -227,7 +208,19 @@
 fi
         
 
+# check for gtk >= 2.6.0
+AC_MSG_CHECKING(for gtk)
+AM_PATH_GTK_2_0(2.6.0,without_gtk=false,without_gtk=true)
+AM_CONDITIONAL(HAVE_GTK, test x$without_gtk != xtrue)
+if test $without_gtk != true
+then
+ AC_DEFINE_UNQUOTED([HAVE_GTK], 1, [We have GTK])
+else
+ AM_CONDITIONAL(HAVE_GTK,false)
+fi
 
+
+
 printable=1
 AC_MSG_CHECKING([whether to enable printable extractors])
 AC_ARG_ENABLE(printable,

Modified: Extractor/src/include/extractor.h
===================================================================
--- Extractor/src/include/extractor.h   2005-05-31 19:10:35 UTC (rev 832)
+++ Extractor/src/include/extractor.h   2005-05-31 19:27:19 UTC (rev 833)
@@ -29,7 +29,7 @@
  * 0.2.6-1 => 0x00020601
  * 4.5.2-0 => 0x04050200
  */
-#define EXTRACTOR_VERSION 0x00050000
+#define EXTRACTOR_VERSION 0x00050001
 
 #include <stdio.h>
 

Modified: Extractor/src/plugins/Makefile.am
===================================================================
--- Extractor/src/plugins/Makefile.am   2005-05-31 19:10:35 UTC (rev 832)
+++ Extractor/src/plugins/Makefile.am   2005-05-31 19:27:19 UTC (rev 833)
@@ -10,7 +10,7 @@
  oledir=ole2
 endif
 
-if HAVE_WAND
+if HAVE_GTK
  thumbdir=thumbnail
 endif
 

Modified: Extractor/src/plugins/mp3extractor.c
===================================================================
--- Extractor/src/plugins/mp3extractor.c        2005-05-31 19:10:35 UTC (rev 
832)
+++ Extractor/src/plugins/mp3extractor.c        2005-05-31 19:27:19 UTC (rev 
833)
@@ -243,21 +243,10 @@
 #define SYSERR     1
 #define INVALID_ID3 2
 
-/**
- * Remove trailing whitespace from the end of a string
- */
-static char * unpad(char * string) {
-  char * end = &string[strlen(string) - 1];
-  while ( (end >= string) &&
-         (' ' == end[0]) )
-    (end--)[0]='\0';
-  return string;
-}
-
 static int get_id3(unsigned char * data,
                   size_t size,
                   id3tag * id3) {
-  char * pos;
+  unsigned char * pos;
 
   if (size < 128)
     return INVALID_ID3;
@@ -312,7 +301,6 @@
   int counter=0;
   char mpeg_ver=0;
   char layer_ver=0;
-  char tag[128];
   int idx_num=0;       
   int bitrate=0; /*used for each frame*/
   int avg_bps=0; /*average bitrate*/

Modified: Extractor/src/plugins/mpegextractor.c
===================================================================
--- Extractor/src/plugins/mpegextractor.c       2005-05-31 19:10:35 UTC (rev 
832)
+++ Extractor/src/plugins/mpegextractor.c       2005-05-31 19:27:19 UTC (rev 
833)
@@ -30,6 +30,7 @@
 #include "platform.h"
 #include "extractor.h"
 #include "pack.h"
+#include <math.h>
 
 static void addKeyword(struct EXTRACTOR_Keywords ** list,
                       char * keyword,
@@ -67,7 +68,6 @@
                                                      struct EXTRACTOR_Keywords 
* prev) {
   unsigned int version = 0;
   unsigned int bitrate = 0;
-  unsigned int fps = 0;
   unsigned int height = 0;
   unsigned int width = 0;
   unsigned int temp;

Modified: Extractor/src/plugins/ole2/ole2extractor.c
===================================================================
--- Extractor/src/plugins/ole2/ole2extractor.c  2005-05-31 19:10:35 UTC (rev 
832)
+++ Extractor/src/plugins/ole2/ole2extractor.c  2005-05-31 19:27:19 UTC (rev 
833)
@@ -41,7 +41,7 @@
 
 /* using libgobject, needs init! */
 void __attribute__ ((constructor)) ole_gobject_init(void) {
-  g_type_init(); /* really needed??? */
+  g_type_init(); 
 }
 
 static struct EXTRACTOR_Keywords * addKeyword(EXTRACTOR_KeywordList *oldhead,

Modified: Extractor/src/plugins/printable/dictionary-builder.c
===================================================================
--- Extractor/src/plugins/printable/dictionary-builder.c        2005-05-31 
19:10:35 UTC (rev 832)
+++ Extractor/src/plugins/printable/dictionary-builder.c        2005-05-31 
19:27:19 UTC (rev 833)
@@ -38,7 +38,6 @@
         char ** argv) {
   Bloomfilter bf;
   HashCode160 hc;
-  int val=1; /* for endianness */
   int i;
   int cnt;
   char * fn;

Modified: Extractor/src/plugins/thumbnail/Makefile.am
===================================================================
--- Extractor/src/plugins/thumbnail/Makefile.am 2005-05-31 19:10:35 UTC (rev 
832)
+++ Extractor/src/plugins/thumbnail/Makefile.am 2005-05-31 19:27:19 UTC (rev 
833)
@@ -1,4 +1,6 @@
-INCLUDES = -I$(top_srcdir)/src/include
+INCLUDES = \
+  -I$(top_srcdir)/src/include \
+  @GTK_CFLAGS@ 
 
 LIBS = \
  @LTLIBINTL@ @LIBS@
@@ -8,17 +10,21 @@
 
 SUBDIRS = .
 
+AM_CFLAGS = $(GLIB_CFLAGS)
+
 plugin_LTLIBRARIES = \
  libextractor_thumbnail.la
 
 libextractor_thumbnail_la_SOURCES = \
   thumbnailextractor.c
 
+# Ok, linking this one is complicated, see Mantis #787.
 libextractor_thumbnail_la_LDFLAGS = \
- -export-dynamic -avoid-version -module @WAND_LDFLAGS@
+  -Wl,-Bstatic -Wl,-lgobject-2.0 -Wl,-lglib-2.0 -Wl,-Bdynamic \
+  -Wl,-Bsymbolic -avoid-version -module
 
-libextractor_thumbnail_la_CFLAGS = \
- @WAND_CFLAGS@ @CFLAGS@
+libextractor_thumbnail_la_LIBADD = \
+ @GTK_LIBS@ 
 
-libextractor_thumbnail_la_LIBADD = \
- @WAND_LIBS@
+
+

Copied: Extractor/src/plugins/thumbnail/thumbnailextractor-old.c (from rev 827, 
Extractor/src/plugins/thumbnail/thumbnailextractor.c)

Modified: Extractor/src/plugins/thumbnail/thumbnailextractor.c
===================================================================
--- Extractor/src/plugins/thumbnail/thumbnailextractor.c        2005-05-31 
19:10:35 UTC (rev 832)
+++ Extractor/src/plugins/thumbnail/thumbnailextractor.c        2005-05-31 
19:27:19 UTC (rev 833)
@@ -22,17 +22,24 @@
  * @file thumbnailextractor.c
  * @author Christian Grothoff
  * @brief this extractor produces a binary (!) encoded
- * thumbnail of images (using imagemagick).  The bottom
+ * thumbnail of images (using gdk pixbuf).  The bottom
  * of the file includes a decoder method that can be used
  * to reproduce the 128x128 PNG thumbnails.
  */
 
 #include "platform.h"
 #include "extractor.h"
-#include <wand/magick_wand.h>
+#include <gdk-pixbuf/gdk-pixbuf.h>
 
 #define THUMBSIZE 128
 
+
+/* using libgobject, needs init! */
+void __attribute__ ((constructor)) ole_gobject_init(void) {
+  g_type_init();
+}
+
+
 static EXTRACTOR_KeywordList * addKeyword(EXTRACTOR_KeywordType type,
                                          char * keyword,
                                          EXTRACTOR_KeywordList * next) {
@@ -72,8 +79,8 @@
                                                           const char * data,
                                                           size_t size,
                                                           struct 
EXTRACTOR_Keywords * prev) {
-  MagickBooleanType status;
-  MagickWand * magick_wand;
+  GdkPixbuf * in;
+  GdkPixbuf * out;
   size_t length;
   char * thumb;
   unsigned long width;
@@ -87,6 +94,7 @@
   unsigned char marker;
   const char * mime;
   int j;
+  char * format;
 
   /* if the mime-type of the file is not whitelisted
      do not run the thumbnail extactor! */
@@ -103,29 +111,31 @@
   if (whitelist[j] == NULL)
     return prev;
 
-  magick_wand = NewMagickWand();
-  status = MagickReadImageBlob(magick_wand, data, size);
-  if (status == MagickFalse) {
-    DestroyMagickWand(magick_wand);
+  in = gdk_pixbuf_new_from_file(filename,
+                               NULL);
+  if (in == NULL)
     return prev;
-  }
-  MagickResetIterator(magick_wand);
-  if (MagickNextImage(magick_wand) == MagickFalse)
-    return prev;
-
-  height = MagickGetImageHeight(magick_wand);
-  width = MagickGetImageWidth(magick_wand);
+  height = gdk_pixbuf_get_height(in);
+  width = gdk_pixbuf_get_width(in);
+  format = malloc(64);
+  snprintf(format,
+          64,
+          "%ux%u",
+          (unsigned int) width,
+          (unsigned int) height);
+  prev
+    = addKeyword(EXTRACTOR_SIZE,
+                format,
+                prev);
   if (height == 0)
     height = 1;
   if (width == 0)
     width = 1;
   if ( (height <= THUMBSIZE) &&
        (width <= THUMBSIZE) ) {
-    DestroyMagickWand(magick_wand);
+    g_object_unref(in);
     return prev;
   }
-
-
   if (height > THUMBSIZE) {
     width = width * THUMBSIZE / height;
     height = THUMBSIZE;
@@ -134,31 +144,22 @@
     height = height * THUMBSIZE / width;
     width = THUMBSIZE;
   }
-  MagickResizeImage(magick_wand, height, width, LanczosFilter, 1.0);
-  MagickSetImageDepth(magick_wand,
-                     8);
-  MagickSetImageChannelDepth(magick_wand,
-                            RedChannel,
-                            2);
-  MagickCommentImage(magick_wand, "");
-  MagickSetImageChannelDepth(magick_wand,
-                            GreenChannel,
-                            2);
-  MagickSetImageChannelDepth(magick_wand,
-                            BlueChannel,
-                            2);
-  MagickSetImageChannelDepth(magick_wand,
-                            OpacityChannel,
-                            2);
-  MagickSetImageInterlaceScheme(magick_wand,
-                               NoInterlace);
-
-  if (MagickFalse == MagickSetImageFormat(magick_wand, "png")) {
-    DestroyMagickWand(magick_wand);
+  out = gdk_pixbuf_scale_simple(in,
+                               width,
+                               height,
+                               GDK_INTERP_BILINEAR);
+  g_object_unref(in);
+  thumb = NULL;
+  if (! gdk_pixbuf_save_to_buffer(out,
+                                 &thumb,
+                                 &length,
+                                 "png",
+                                 NULL,
+                                 NULL)) {
+    g_object_unref(out);
     return prev;
   }
-  thumb = MagickGetImageBlob(magick_wand, &length);
-  DestroyMagickWand(magick_wand);
+  g_object_unref(out);
   if (thumb == NULL)
     return prev;
 

Modified: Extractor/src/plugins/translitextractor.c
===================================================================
--- Extractor/src/plugins/translitextractor.c   2005-05-31 19:10:35 UTC (rev 
832)
+++ Extractor/src/plugins/translitextractor.c   2005-05-31 19:27:19 UTC (rev 
833)
@@ -552,7 +552,7 @@
                                                       size_t size,
                                                       struct 
EXTRACTOR_Keywords * prev) {
   struct EXTRACTOR_Keywords * pos;
-  unsigned int mem, src, dest, len, i;
+  unsigned int mem, src, dest, len;
   unsigned char *transl;
 
   pos = prev;

Modified: GNUnet/AUTHORS
===================================================================
--- GNUnet/AUTHORS      2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet/AUTHORS      2005-05-31 19:27:19 UTC (rev 833)
@@ -1,52 +1,51 @@
 Primary developers (0.7.x series):
 Christian Grothoff <address@hidden>
-Igor Wronsky <address@hidden>
 Nils Durner <address@hidden>
 
 Code contributions also came from:
+Andrew McDonald <address@hidden> [ SHA-512]
+Antti Salonen
 Blake Matheny
 Eric Haumant
+Felix von Leitner [ diet libc snprintf for win32 ]
 Gerd Knorr <address@hidden>
 Glenn McGrath <address@hidden>
 Hendrik Pagenhardt <address@hidden>
+Igor Wronsky <address@hidden>
 Ioana Patrascu <address@hidden>
 <address@hidden>
 James Blackwell <address@hidden>
+Jean-Luc Cooke <address@hidden> [ SHA-512]
 Jussi Eloranta <address@hidden>
 J�rgen Appel <address@hidden>
-Krista Bennett <address@hidden>
+Kevin Vandersloot <address@hidden> [original code of gnome-system-monitor]
+Krista Grothoff <address@hidden>
+Kyle McMartin <address@hidden> [ SHA-512]
 Larry Waldo
 Ludovic Court�s <address@hidden>
+Marko R�ih�
 Paul Ruth <address@hidden>
 Renaldo Ferreira <address@hidden>
+Risto Saarelma
+Simo Viitanen
 Tiberius Stef <address@hidden>
+Tomi Tukiainen
+Tuomas Toivonen
 Tzvetan Horozov <address@hidden>
 Uli Luckas <address@hidden>
 Werner Koch <address@hidden> [original code of libgcrypt]
-Kevin Vandersloot <address@hidden> [original code of gnome-system-monitor]
-Jean-Luc Cooke <address@hidden> [ SHA-512]
-Andrew McDonald <address@hidden> [ SHA-512]
-Kyle McMartin <address@hidden> [ SHA-512]
-Felix von Leitner [ diet libc snprintf for win32 ]
 
-Original RPC and DHT-module were contributed by:
-Marko R�ih�
-Risto Saarelma
-Antti Salonen
-Tuomas Toivonen
-Tomi Tukiainen
-Simo Viitanen
-
-Translations:
-Chinese  : Di Ma <address@hidden>
-Danish   : Jens Palsberg <address@hidden>
-Deutsch  : Christian Grothoff <address@hidden>
-French   : Mathieu <address@hidden>,
-           Eric Haumant <address@hidden>,
-           address@hidden
-Japanese : Hiroshi Yamauchi <address@hidden>
-Polish   : Adam Welc <address@hidden>
-Romaneste: Bogdan Carbunar <address@hidden>
+Translations (webpage, documentation, as far as known):
+Chinese    : Di Ma
+Danish     : Jens Palsberg <address@hidden>
+Deutsch    : Christian Grothoff <address@hidden>,
+             Nils Durner <address@hidden>
+French     : Mathieu <address@hidden>,
+             Eric Haumant
+             address@hidden
+Japanese   : Hiroshi Yamauchi <address@hidden>
+Polish     : Adam Welc <address@hidden>
+Romaneste  : Bogdan Carbunar <address@hidden>
 Kinyarwanda: Steven Michael Murphy <address@hidden>
 
 Logos:
@@ -55,7 +54,11 @@
 AFS Face    : Alex Jones <address@hidden>
 
 Maintainers:
-FreeBSD Port - Kirill Ponomarew <address@hidden>
-Debian Package - Daniel Baumann <address@hidden> and
-                 Arnaud Kyheng <address@hidden>
-OS X Port - Jussi Eloranta <address@hidden>
+FreeBSD         : Kirill Ponomarew <address@hidden>
+Debian GNU/Linux: Daniel Baumann <address@hidden> and
+                  Arnaud Kyheng <address@hidden>
+OS X            : Jussi Eloranta <address@hidden>
+
+
+If you have contributed and are not listed here, please
+notify one of the maintainers in order to be added.

Modified: GNUnet/README
===================================================================
--- GNUnet/README       2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet/README       2005-05-31 19:27:19 UTC (rev 833)
@@ -121,7 +121,8 @@
 with "/etc/init.d/gnunetd start".  To insert files into GNUnet, use
 the "gnunet-insert" command.
 
-If want to use a GUI, just invoke
+The GTK user interface is shipped separately from GNUnet.  After
+downloading and installing gnunet-gtk, you can invoke the GUI with:
 
 $ gnunet-gtk
 

Modified: GNUnet/UPDATING
===================================================================
--- GNUnet/UPDATING     2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet/UPDATING     2005-05-31 19:27:19 UTC (rev 833)
@@ -2,7 +2,7 @@
 upgrade between GNUnet versions.  You can obtain version of GNUnet
 that you have installed by running
 
-# gnunetd --version
+$ gnunetd --version
 
 If no migration procedure is listed for your version, a
 data-preserving migration may not be possible.  For SVN versions,

Modified: GNUnet/doc/man/Makefile.am
===================================================================
--- GNUnet/doc/man/Makefile.am  2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet/doc/man/Makefile.am  2005-05-31 19:27:19 UTC (rev 833)
@@ -6,7 +6,6 @@
 gnunet-chat.1\
 gnunet-directory.1 \
 gnunet-download.1 \
-gnunet-gtk.1 \
 gnunet-insert.1 \
 gnunet-search.1 \
 gnunet-stats.1 \

Deleted: GNUnet/doc/man/gnunet-gtk.1
===================================================================
--- GNUnet/doc/man/gnunet-gtk.1 2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet/doc/man/gnunet-gtk.1 2005-05-31 19:27:19 UTC (rev 833)
@@ -1,30 +0,0 @@
-.TH GNUNET-GTK "1" "6 Jun 2002" "GNUnet"
-.SH NAME
-gnunet-gtk \- a gtk interface for accessing GNUnet
-.SH SYNOPSIS
-.B gnunet\-gtk
-[\fIOPTIONS\fR]
-.SH DESCRIPTION
-.PP
-gnunet-gtk is a gtk+ based GUI for searching, downloading and inserting files 
on GNUnet. It supports queries of the form foo AND bar (notice that AND must be 
capitalized and that keywords are case-sensitive), just like gnunet-search. It 
can also be used to create and publish content directories out of search 
results and inserted files.
-.TP
-\fB\-h\fR, \fB\-\-help\fR
-print help page
-.TP
-\fB\-c \fIFILENAME\fR, \fB\-\-config=FILENAME\fR
-load config file (defaults: ~/.gnunet/gnunet.conf)
-.TP
-\fB\-v\fR, \fB\-\-version\fR
-print the version number
-.SH NOTES
-.PP
-Multiple files can be downloaded by holding down CTRL while selecting, or by 
SHIFT, if you wish to select everything between the last selection and the 
currently pointed row. If you want to insert multiple files at once,
-use \fBgnunet\-insert\fP. Some functionality of gnunet-gtk can be accessed by 
pressing down the right mouse button in appropriate windows.
-.SH FILES
-.TP
-~/.gnunet/gnunet.conf
-Users GNUnet configuration file
-.SH "REPORTING BUGS"
-Report bugs by using mantis <https://gnunet.org/mantis/> or by sending 
electronic mail to <address@hidden>
-.SH "SEE ALSO"
-\fBgnunet\-search\fP(1), \fBgnunet\-insert\fP(1), \fBgnunet\-search\fP(1), 
\fBgnunet\-download\fP(1), \fBgnunet.conf\fP(5), \fBgnunetd\fP(1)

Modified: GNUnet/po/GNUnet.pot
===================================================================
--- GNUnet/po/GNUnet.pot        2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet/po/GNUnet.pot        2005-05-31 19:27:19 UTC (rev 833)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: address@hidden"
-"POT-Creation-Date: 2005-04-22 22:03+0200\n"
+"POT-Creation-Date: 2005-05-30 22:55-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <address@hidden>\n"
 "Language-Team: LANGUAGE <address@hidden>\n"
@@ -17,29 +17,29 @@
 "Content-Transfer-Encoding: 8bit\n"
 
 #: src/transports/udp6.c:121 src/transports/udp.c:133
-#, possible-c-format
+#, c-format
 msgid ""
 "Cannot determine port to bind to.  Define in configuration file in section '%"
 "s' under '%s' or in '%s' under %s/%s.\n"
 msgstr ""
 
 #: src/transports/udp6.c:157
-#, possible-c-format
+#, c-format
 msgid "Failed to bind to UDP6 port %d.\n"
 msgstr ""
 
 #: src/transports/udp6.c:228
-#, possible-c-format
+#, c-format
 msgid "Received invalid UDP6 message from %s:%d, dropping.\n"
 msgstr ""
 
 #: src/transports/udp6.c:261
-#, possible-c-format
+#, c-format
 msgid "Packet received from %s:%d (UDP6) failed format check."
 msgstr ""
 
 #: src/transports/udp6.c:274
-#, possible-c-format
+#, c-format
 msgid "Sender %s is blacklisted, dropping message.\n"
 msgstr ""
 
@@ -49,47 +49,47 @@
 
 #: src/transports/udp6.c:640 src/transports/smtp.c:891
 #: src/transports/udp.c:621
-#, possible-c-format
+#, c-format
 msgid "MTU for '%s' is probably too low (fragmentation not implemented!)\n"
 msgstr ""
 
-#: src/transports/http.c:578
+#: src/transports/http.c:581
 msgid "Expected welcome on http connection, got garbage. Closing connection.\n"
 msgstr ""
 
-#: src/transports/http.c:794 src/transports/tcp.c:669
-#, possible-c-format
+#: src/transports/http.c:797 src/transports/tcp.c:669
+#, c-format
 msgid "Rejected blacklisted connection from %u.%u.%u.%u.\n"
 msgstr ""
 
-#: src/transports/http.c:1068 src/transports/tcp.c:1026
+#: src/transports/http.c:1071 src/transports/tcp.c:1026
 msgid "Could not determine my public IP address.\n"
 msgstr ""
 
-#: src/transports/http.c:1140 src/transports/tcp.c:1092 src/util/tcpio.c:165
+#: src/transports/http.c:1143 src/transports/tcp.c:1092 src/util/tcpio.c:165
 #: src/util/tcpio.c:195
-#, possible-c-format
+#, c-format
 msgid "Cannot connect to %u.%u.%u.%u:%u: %s\n"
 msgstr ""
 
-#: src/transports/http.c:1288
-#, possible-c-format
+#: src/transports/http.c:1291
+#, c-format
 msgid ""
 "Could not bind the HTTP listener to port %d. No transport service started.\n"
 msgstr ""
 
-#: src/transports/http.c:1410 src/applications/testbed/testbed.c:1056
-#, possible-c-format
+#: src/transports/http.c:1413 src/applications/testbed/testbed.c:1056
+#, c-format
 msgid "Could not resolve name of HTTP proxy '%s'.\n"
 msgstr ""
 
 #: src/transports/smtp.c:295
-#, possible-c-format
+#, c-format
 msgid "Could not resolve name of SMTP server '%s': %s"
 msgstr ""
 
 #: src/transports/smtp.c:413
-#, possible-c-format
+#, c-format
 msgid ""
 "You must specify the name of a pipe for the SMTP transport in section '%s' "
 "under '%s'.\n"
@@ -104,59 +104,59 @@
 msgstr ""
 
 #: src/transports/smtp.c:578
-#, possible-c-format
+#, c-format
 msgid "SMTP filter string to long, capped to '%s'\n"
 msgstr ""
 
 #: src/transports/smtp.c:746
-#, possible-c-format
+#, c-format
 msgid "Sending E-mail to '%s' failed.\n"
 msgstr ""
 
 #: src/transports/smtp.c:795
-#, possible-c-format
+#, c-format
 msgid "SMTP server send unexpected response at %s:%d.\n"
 msgstr ""
 
 #: src/transports/smtp.c:862
-#, possible-c-format
+#, c-format
 msgid "%.*s filter %s (SMTP)"
 msgstr ""
 
 #: src/transports/tcp.c:448
-#, possible-c-format
+#, c-format
 msgid ""
 "Expected welcome message on tcp connection, got garbage (%u, %u). Closing.\n"
 msgstr ""
 
 #: src/transports/tcp.c:480
-#, possible-c-format
+#, c-format
 msgid ""
 "Received malformed message (size %u) from tcp-peer connection. Closing.\n"
 msgstr ""
 
 #: src/transports/tcp.c:1266 src/transports/tcp6.c:1209
-#, possible-c-format
+#, c-format
 msgid "Failed to start transport service on port %d.\n"
 msgstr ""
 
 #: src/transports/udp.c:167
-#, possible-c-format
+#, c-format
 msgid "Failed to bind to UDP port %d.\n"
 msgstr ""
 
 #: src/transports/udp.c:237
-#, possible-c-format
+#, c-format
 msgid "Received invalid UDP message from %u.%u.%u.%u:%u, dropping.\n"
 msgstr ""
 
 #: src/transports/udp.c:260
-#, possible-c-format
+#, c-format
 msgid "Packet received from %u.%u.%u.%u:%u (UDP) failed format check.\n"
 msgstr ""
 
 #: src/transports/udp.c:271
-#, possible-c-format
+#, c-format
 msgid "Sender %u.%u.%u.%u is blacklisted, dropping message.\n"
 msgstr ""
 
@@ -165,7 +165,7 @@
 msgstr ""
 
 #: src/transports/udp.c:465
-#, possible-c-format
+#, c-format
 msgid "Failed to send message of size %d via UDP to %u.%u.%u.%u:%u: %s\n"
 msgstr ""
 
@@ -179,7 +179,7 @@
 msgstr ""
 
 #: src/transports/tcp6.c:655
-#, possible-c-format
+#, c-format
 msgid "Rejected blacklisted connection from address %s.\n"
 msgstr ""
 
@@ -188,10 +188,24 @@
 msgstr ""
 
 #: src/transports/tcp6.c:1008
-#, possible-c-format
+#, c-format
 msgid "'%s': unknown service: %s\n"
 msgstr ""
 
+#: src/conf/gnunet-setup.c:33
+msgid ""
+"USAGE: gnunet-setup MODULE\n"
+"\n"
+"MODULE\n"
+" config\t\ttext-based configuration\n"
+" menuconfig\ttext-based menu\n"
+" xconfig\tX configuration\n"
+" gconfig\tGTK configuration\n"
+" wizard-curses\tBasic text-based graphical configuration\n"
+" wizard-gtk\tBasic GTK configuration\n"
+"\n"
+msgstr ""
+
 #: src/conf/gnunet-win-tool.c:107
 #, c-format
 msgid "GNUnet service installed successfully.\n"
@@ -203,12 +217,11 @@
 msgstr ""
 
 #: src/conf/gnunet-win-tool.c:114 src/conf/gnunet-win-tool.c:141
-#: src/conf/wizard_callbacks.c:165 src/conf/wizard_callbacks.c:209
 #, c-format
 msgid "Error: can't open Service Control Manager: %s\n"
 msgstr ""
 
-#: src/conf/gnunet-win-tool.c:119 src/conf/wizard_callbacks.c:172
+#: src/conf/gnunet-win-tool.c:119
 #, c-format
 msgid "Error: can't create service: %s\n"
 msgstr ""
@@ -393,43 +406,13 @@
 msgid "Sorry, no help available for this option yet."
 msgstr ""
 
-#: src/conf/gconf_support.c:90 src/conf/gconf_support.c:114
-#, possible-c-format
-msgid "Couldn't find pixmap file: %s"
-msgstr ""
-
-#: src/conf/wizard_callbacks.c:168 src/conf/wizard_callbacks.c:175
-#: src/conf/wizard_callbacks.c:178 src/conf/wizard_callbacks.c:192
-#: src/conf/wizard_callbacks.c:212 src/conf/wizard_callbacks.c:219
-#: src/conf/wizard_callbacks.c:226 src/conf/wizard_callbacks.c:229
-#: src/conf/wizard_interface.c:1075
-msgid "Error"
-msgstr ""
-
-#: src/conf/wizard_callbacks.c:178 src/conf/wizard_callbacks.c:229
-msgid "Unknown error"
-msgstr ""
-
-#: src/conf/wizard_callbacks.c:191
-msgid "Cannot write to the regisitry"
-msgstr ""
-
-#: src/conf/wizard_callbacks.c:216
-#, c-format
-msgid "Error: can't access the service: %s\n"
-msgstr ""
-
-#: src/conf/wizard_callbacks.c:223
-#, c-format
-msgid "Error: can't delete the service: %s\n"
-msgstr ""
-
 #: src/conf/wizard_interface.c:54 src/conf/wizard_interface.c:198
 #: src/conf/wizard_interface.c:461 src/conf/wizard_interface.c:783
+#: src/conf/wizard_interface.c:1164
 msgid "GNUnet configuration assistant"
 msgstr ""
 
-#: src/conf/wizard_interface.c:77
+#: src/conf/wizard_interface.c:77 src/conf/wizard_curs.c:93
 msgid ""
 "Welcome to GNUnet!\n"
 "\n"
@@ -447,12 +430,13 @@
 msgstr ""
 
 #: src/conf/wizard_interface.c:106 src/conf/wizard_interface.c:332
-#: src/conf/wizard_interface.c:651
+#: src/conf/wizard_interface.c:651 src/conf/wizard_interface.c:1286
 msgid "Next"
 msgstr ""
 
 #: src/conf/wizard_interface.c:127 src/conf/wizard_interface.c:353
 #: src/conf/wizard_interface.c:672 src/conf/wizard_interface.c:929
+#: src/conf/wizard_interface.c:1307
 msgid "Cancel"
 msgstr ""
 
@@ -496,7 +480,7 @@
 msgstr ""
 
 #: src/conf/wizard_interface.c:311 src/conf/wizard_interface.c:630
-#: src/conf/wizard_interface.c:887
+#: src/conf/wizard_interface.c:887 src/conf/wizard_interface.c:1265
 msgid "Back"
 msgstr ""
 
@@ -581,7 +565,7 @@
 msgid "Open the enhanced configurator"
 msgstr ""
 
-#: src/conf/wizard_interface.c:861
+#: src/conf/wizard_interface.c:861 src/conf/wizard_interface.c:1239
 msgid "Other settings"
 msgstr ""
 
@@ -605,6 +589,14 @@
 msgid "No"
 msgstr ""
 
+#: src/conf/wizard_interface.c:1075 src/conf/wizard_util.c:165
+#: src/conf/wizard_util.c:173 src/conf/wizard_util.c:176
+#: src/conf/wizard_util.c:190 src/conf/wizard_util.c:218
+#: src/conf/wizard_util.c:224 src/conf/wizard_util.c:359
+#: src/conf/wizard_util.c:377
+msgid "Error"
+msgstr ""
+
 #: src/conf/wizard_interface.c:1092
 msgid "Unable to save configuration!"
 msgstr ""
@@ -613,133 +605,315 @@
 msgid "OK"
 msgstr ""
 
-#: src/applications/chat/chat.c:87
-msgid "Message received from peer is invalid.\n"
+#: src/conf/wizard_interface.c:1195
+msgid ""
+"Define the user and the group owning the GNUnet service here.\n"
+"\n"
+"For security reasons, it is a good idea to let this setup create a new user "
+"account and a new group under which the GNUnet service is started at system "
+"startup.\n"
+"You can also specify existing ones.\n"
+"In any case, you should check its permissions to critical files on your "
+"system."
 msgstr ""
 
-#: src/applications/chat/chat.c:133
-msgid "Message received from client is invalid\n"
+#: src/conf/wizard_interface.c:1209
+msgid "Group:"
 msgstr ""
 
-#: src/applications/chat/chat.c:155
-msgid "Maximum number of chat clients reached.\n"
+#: src/conf/wizard_interface.c:1231
+msgid "User account:"
 msgstr ""
 
-#: src/applications/chat/chat.c:159
-#, possible-c-format
-msgid "Now %d of %d chat clients at this node.\n"
+#: src/conf/gconf_support.c:90 src/conf/gconf_support.c:114
+#, c-format
+msgid "Couldn't find pixmap file: %s"
 msgstr ""
 
-#: src/applications/chat/chat.c:195
-#, possible-c-format
-msgid "'%s' registering handlers %d and %d\n"
+#: src/conf/wizard_curs.c:92 src/conf/wizard_curs.c:106
+#: src/conf/wizard_curs.c:167 src/conf/wizard_curs.c:194
+#: src/conf/wizard_curs.c:219 src/conf/wizard_curs.c:251
+#: src/conf/wizard_curs.c:276 src/conf/wizard_curs.c:307
+#: src/conf/wizard_curs.c:329 src/conf/wizard_curs.c:357
+#: src/conf/wizard_curs.c:379 src/conf/wizard_curs.c:401
+#: src/conf/wizard_curs.c:428 src/conf/wizard_curs.c:458
+#: src/conf/wizard_curs.c:486
+msgid "GNUnet configuration"
 msgstr ""
 
-#: src/applications/chat/gnunet-chat.c:82
-msgid "specify nickname"
+#: src/conf/wizard_curs.c:107
+msgid ""
+"Choose the network interface that connects your computer to the internet "
+"from the list below."
 msgstr ""
 
-#: src/applications/chat/gnunet-chat.c:87
-msgid "Start GNUnet chat client."
+#: src/conf/wizard_curs.c:113 src/conf/wizard_curs.c:173
+#: src/conf/wizard_curs.c:224 src/conf/wizard_curs.c:256
+#: src/conf/wizard_curs.c:312
+msgid "Help"
 msgstr ""
 
-#: src/applications/chat/gnunet-chat.c:93
-#: src/applications/dht/tools/dht-query.c:99
-#: src/applications/dht/tools/dht-join.c:108
-#: src/applications/testbed/gnunet-testbed.c:125
-#: src/applications/testbed/gnunet-testbed.c:542
-#: src/applications/stats/gnunet-stats.c:143
-#: src/applications/tbench/gnunet-tbench.c:189
-#: src/applications/tracekit/gnunet-tracekit.c:153
-#: src/applications/fs/tools/gnunet-pseudonym.c:192
-#: src/applications/fs/tools/gnunet-delete.c:111
-#: src/applications/fs/tools/gnunet-directory.c:177
-#: src/applications/fs/tools/gnunet-insert.c:467
-#: src/applications/fs/tools/gnunet-search.c:210
-#: src/applications/fs/tools/gnunet-download.c:125
-#: src/applications/fs/tools/gnunet-unindex.c:139
-#: src/applications/template/gnunet-template.c:87
-#: src/server/gnunet-update.c:129 src/server/startup.c:512
-#: src/server/gnunet-transport-check.c:510 src/server/gnunet-peer-info.c:107
-#, c-format
-msgid "Use --help to get a list of options.\n"
+#: src/conf/wizard_curs.c:113
+msgid ""
+"The \"Network interface\" is the device that connects your computer to the "
+"internet. This is usually a modem, an ISDN card or a network card in case "
+"you are using DSL."
 msgstr ""
 
-#: src/applications/chat/gnunet-chat.c:149
-#: src/applications/tbench/gnunet-tbench.c:213
-#: src/applications/tracekit/gnunet-tracekit.c:363
-#: src/applications/fs/tools/gnunet-delete.c:142 src/util/port.c:72
-msgid "Could not connect to gnunetd.\n"
+#: src/conf/wizard_curs.c:167
+msgid ""
+"What is this computer's public IP adress or hostname?\n"
+"\n"
+"If in doubt, leave this empty."
 msgstr ""
 
-#: src/applications/chat/gnunet-chat.c:153
-#, possible-c-format
-msgid "You must specify a nickname (use option '%s').\n"
+#: src/conf/wizard_curs.c:173
+msgid ""
+"If your provider always assigns the same IP-Address to you (a \"static\" IP-"
+"Address), enter it into the \"IP-Address\" field. If your IP-Address changes "
+"every now and then (\"dynamic\" IP-Address) but there's a hostname that "
+"always points to your actual IP-Address (\"Dynamic DNS\"), you can also "
+"enter it here.\n"
+"If in doubt, leave the field empty. GNUnet will then try to determine your "
+"IP-Address."
 msgstr ""
 
-#: src/applications/chat/gnunet-chat.c:179
-msgid "Could not send join message to gnunetd\n"
+#: src/conf/wizard_curs.c:194
+msgid ""
+"Is this machine behind NAT?\n"
+"\n"
+"If you are connected to the internet through another computer doing SNAT, a "
+"router or a \"hardware firewall\" and other computers on the internet cannot "
+"connect to this computer, say \"yes\" here. Answer \"no\" on direct "
+"connections through modems, ISDN cards and DNAT (also known as \"port "
+"forwarding\")."
 msgstr ""
 
-#: src/applications/chat/gnunet-chat.c:188
-msgid "Could not send message to gnunetd\n"
+#: src/conf/wizard_curs.c:219
+msgid "How much upstream (Bytes/s) may be used?"
 msgstr ""
 
-#: src/applications/advertising/advertising.c:156
-#, possible-c-format
-msgid "HELO message from '%s' invalid (signature invalid). Dropping.\n"
+#: src/conf/wizard_curs.c:224
+msgid ""
+"You can limit GNUnet's ressource usage here.\n"
+"\n"
+"The \"upstream\" is the data channel through which data is *sent* to the "
+"internet. The limit is either the total maximum for this computer or how "
+"much GNUnet itself is allowed to use. You can specify that later. If you "
+"have a flatrate, you can set it to the maximum speed of your internet "
+"connection."
 msgstr ""
 
-#: src/applications/advertising/advertising.c:162
-msgid "HELO message received invalid (expiration time over limit). Dropping.\n"
+#: src/conf/wizard_curs.c:251
+msgid "How much downstream (Bytes/s) may be used?"
 msgstr ""
 
-#: src/applications/advertising/advertising.c:171
-#, possible-c-format
-msgid "HELO advertisement for protocol %d received.\n"
+#: src/conf/wizard_curs.c:256
+msgid ""
+"You can limit GNUnet's ressource usage here.\n"
+"\n"
+"The \"downstream\" is the data channel through which data is *received* from "
+"the internet. The limit is either the total maximum for this computer or how "
+"much GNUnet itself is allowed to use. You can specify that later. If you "
+"have a flatrate you can set it to the maximum speed of your internet "
+"connection."
 msgstr ""
 
-#: src/applications/advertising/advertising.c:297
-msgid "Could not send HELOs+PING, ping buffer full.\n"
+#: src/conf/wizard_curs.c:276
+msgid ""
+"Share denoted bandwidth with other applications?\n"
+"\n"
+"Say \"yes\" here, if you don't want other network traffic to interfere with "
+"GNUnet's operation, but still wish to constrain GNUnet's bandwidth usage to "
+"values entered in the previous steps, or if you can't reliably measure the "
+"maximum capabilities of your connection. \"No\" can be very useful if other "
+"applications are causing a lot of traffic on your LAN.  In this case, you do "
+"not want to limit the traffic that GNUnet can inflict on your internet "
+"connection whenever your high-speed LAN gets used (e.g. by NFS)."
 msgstr ""
 
-#: src/applications/advertising/advertising.c:449
-#, possible-c-format
-msgid "Advertising my transport %d to selected peers.\n"
+#: src/conf/wizard_curs.c:307
+msgid "How much CPU (in %) may be used?"
 msgstr ""
 
-#: src/applications/advertising/advertising.c:456
+#: src/conf/wizard_curs.c:312
 msgid ""
-"Announcing ourselves pointless: no other peers are known to us so far.\n"
+"You can limit GNUnet's ressource usage here.\n"
+"\n"
+"This is the percentage of processor time GNUnet is allowed to use."
 msgstr ""
 
-#: src/applications/advertising/advertising.c:541
-#, possible-c-format
-msgid "Removing HELO from peer '%s' (expired %ds ago).\n"
+#: src/conf/wizard_curs.c:329
+msgid ""
+"Store migrated content?\n"
+"\n"
+"GNUnet is able to store data from other peers in your datastore. This is "
+"useful if an adversary has access to your inserted content and you need to "
+"deny that the content is yours. With \"content migration\" on, the content "
+"could have \"migrated\" over the internet to your node without your "
+"knowledge.\n"
+"It also helps to spread popular content over different peers to enhance "
+"availability."
 msgstr ""
 
-#: src/applications/advertising/advertising.c:699
-msgid "# Peer advertisements received"
+#: src/conf/wizard_curs.c:357
+msgid ""
+"What's the maximum datastore size in MB?\n"
+"\n"
+"The GNUnet datastore contains all data that GNUnet generates (index data, "
+"inserted and migrated content)."
 msgstr ""
 
-#: src/applications/advertising/advertising.c:700
-msgid "# Self advertisments transmitted"
+#: src/conf/wizard_curs.c:379
+msgid ""
+"Do you want to launch GNUnet as a system service?\n"
+"\n"
+"If you say \"yes\" here, the GNUnet background process will be automatically "
+"started when you turn on your computer. If you say \"no\" here, you have to "
+"launch GNUnet yourself each time you want to use it."
 msgstr ""
 
-#: src/applications/advertising/advertising.c:701
-msgid "# Foreign advertisements forwarded"
+#: src/conf/wizard_curs.c:402
+msgid ""
+"Define the user owning the GNUnet service.\n"
+"\n"
+"For security reasons, it is a good idea to let this setup create a new user "
+"account under which the GNUnet service is started at system startup.\n"
+"\n"
+"You can also specify an already existant user account here.\n"
+"\n"
+"In any case, you should check its permissions to critical files on your "
+"system.\n"
+"\n"
+"GNUnet user:"
 msgstr ""
 
-#: src/applications/advertising/advertising.c:705
-#: src/applications/session/connect.c:674
-#, possible-c-format
-msgid "'%s' registering handler %d (plaintext and ciphertext)\n"
+#: src/conf/wizard_curs.c:429
+msgid ""
+"Define the group owning the GNUnet service.\n"
+"\n"
+"For security reasons, it is a good idea to let this setup create a new group "
+"for the chosen user account.\n"
+"\n"
+"You can also specify a already existant group here.\n"
+"\n"
+"Only members of this group will be allowed to start and stop the the GNUnet "
+"server and have access to GNUnet server data.\n"
+"\n"
+"GNUnet group:"
 msgstr ""
 
-#: src/applications/advertising/advertising.c:724
-msgid "Network advertisements disabled by configuration!\n"
+#: src/conf/wizard_curs.c:458
+msgid ""
+"If you are an experienced user, you may want to tweak your GNUnet "
+"installation using the enhanced configurator.\n"
+"\n"
+"Do you want to start it after saving your configuration?"
 msgstr ""
 
+#: src/conf/wizard_curs.c:487
+msgid ""
+"Cannot save configuration.\n"
+"\n"
+"Try again?"
+msgstr ""
+
+#: src/conf/wizard_util.c:162
+#, c-format
+msgid "Error: can't open Service Control Manager: %s (%i)\n"
+msgstr ""
+
+#: src/conf/wizard_util.c:170
+#, c-format
+msgid "Error: can't create service: %s (#%i)\n"
+msgstr ""
+
+#: src/conf/wizard_util.c:176 src/conf/wizard_util.c:218
+msgid "Unknown error"
+msgstr ""
+
+#: src/conf/wizard_util.c:189
+msgid "Cannot write to the regisitry"
+msgstr ""
+
+#: src/conf/wizard_util.c:206
+msgid "Can't open Service Control Manager"
+msgstr ""
+
+#: src/conf/wizard_util.c:210
+msgid "Can't access the service"
+msgstr ""
+
+#: src/conf/wizard_util.c:214
+msgid "Can't delete the service"
+msgstr ""
+
+#: src/conf/wizard_util.c:358
+msgid "This version of Windows does not support multiple users."
+msgstr ""
+
+#: src/conf/wizard_util.c:362
+msgid "Error creating user"
+msgstr ""
+
+#: src/conf/wizard_util.c:365
+msgid "Error accessing local security policy"
+msgstr ""
+
+#: src/conf/wizard_util.c:368
+msgid "Error granting service right to user"
+msgstr ""
+
+#: src/conf/wizard_util.c:371
+msgid "Unknown error while creating a new user"
+msgstr ""
+
+#: src/applications/dht/tools/dhttest2.c:51
+#: src/applications/session/sessiontest.c:49
+#: src/applications/stats/statistics.c:212
+#: src/applications/tbench/tbenchtest.c:113 src/applications/gap/gaptest.c:50
+msgid "# of connected peers"
+msgstr ""
+
+#: src/applications/dht/tools/dhttest2.c:94
+#: src/applications/dht/tools/dhttest2.c:109
+#: src/applications/dht/tools/dhttest2.c:142
+#: src/applications/dht/tools/dhttest2.c:157
+#: src/applications/session/sessiontest.c:84
+#: src/applications/session/sessiontest.c:99
+#: src/applications/session/sessiontest.c:132
+#: src/applications/session/sessiontest.c:147
+#: src/applications/tbench/tbenchtest.c:173
+#: src/applications/tbench/tbenchtest.c:188
+#: src/applications/tbench/tbenchtest.c:221
+#: src/applications/tbench/tbenchtest.c:236 src/applications/gap/gaptest.c:276
+#: src/applications/gap/gaptest.c:291 src/applications/gap/gaptest.c:324
+#: src/applications/gap/gaptest.c:339 src/applications/fs/fsui/fsuitest.c:128
+#: src/applications/fs/fsui/searchtest.c:128
+#: src/applications/fs/fsui/fsuitest2.c:69
+#: src/applications/fs/fsui/downloadtest.c:138
+#: src/applications/fs/lib/fslibtest.c:239
+#: src/applications/fs/ecrs/searchtest.c:110
+#: src/applications/fs/ecrs/namespacetest.c:117
+#: src/applications/fs/ecrs/ecrstest.c:271
+#, c-format
+msgid "'%s' failed: %s\n"
+msgstr ""
+
+#: src/applications/dht/tools/dhttest2.c:177
+#: src/applications/session/sessiontest.c:163
+#: src/applications/tbench/tbenchtest.c:252 src/applications/gap/gaptest.c:358
+#, c-format
+msgid "Waiting for gnunetd to start (%u iterations left)...\n"
+msgstr ""
+
+#: src/applications/dht/tools/dhttest2.c:189
+#: src/applications/session/sessiontest.c:178
+#: src/applications/tbench/tbenchtest.c:128 src/applications/gap/gaptest.c:370
+#, c-format
+msgid "Waiting for peers to connect (%u iterations left)...\n"
+msgstr ""
+
 #: src/applications/dht/tools/dht-query.c:39
 msgid "query table called NAME"
 msgstr ""
@@ -774,10 +948,32 @@
 #: src/server/gnunet-transport-check.c:425
 #: src/server/gnunet-transport-check.c:439
 #: src/server/gnunet-transport-check.c:452
-#, possible-c-format
+#, c-format
 msgid "You must pass a number to the '%s' option.\n"
 msgstr ""
 
+#: src/applications/dht/tools/dht-query.c:99
+#: src/applications/dht/tools/dht-join.c:108
+#: src/applications/chat/gnunet-chat.c:93
+#: src/applications/testbed/gnunet-testbed.c:125
+#: src/applications/testbed/gnunet-testbed.c:542
+#: src/applications/stats/gnunet-stats.c:143
+#: src/applications/tbench/gnunet-tbench.c:189
+#: src/applications/tracekit/gnunet-tracekit.c:153
+#: src/applications/fs/tools/gnunet-pseudonym.c:192
+#: src/applications/fs/tools/gnunet-delete.c:111
+#: src/applications/fs/tools/gnunet-directory.c:177
+#: src/applications/fs/tools/gnunet-insert.c:467
+#: src/applications/fs/tools/gnunet-search.c:210
+#: src/applications/fs/tools/gnunet-download.c:125
+#: src/applications/fs/tools/gnunet-unindex.c:139
+#: src/applications/template/gnunet-template.c:87
+#: src/server/gnunet-update.c:129 src/server/startup.c:512
+#: src/server/gnunet-transport-check.c:510 src/server/gnunet-peer-info.c:107
+#, c-format
+msgid "Use --help to get a list of options.\n"
+msgstr ""
+
 #: src/applications/dht/tools/dht-query.c:106
 msgid "No commands specified.\n"
 msgstr ""
@@ -806,13 +1002,13 @@
 msgstr ""
 
 #: src/applications/dht/tools/dht-query.c:253
-#, possible-c-format
+#, c-format
 msgid "Command '%s' requires an argument ('%s').\n"
 msgstr ""
 
 #: src/applications/dht/tools/dht-query.c:261
 #: src/applications/dht/tools/dht-query.c:271
-#, possible-c-format
+#, c-format
 msgid "Command '%s' requires two arguments ('%s' and '%s').\n"
 msgstr ""
 
@@ -826,7 +1022,7 @@
 #: src/applications/dht/tools/dht_api.c:289
 #: src/applications/dht/tools/dht_api.c:343
 #: src/applications/dht/tools/dht_api.c:377
-#, possible-c-format
+#, c-format
 msgid "Failed to send '%s'.  Closing connection.\n"
 msgstr ""
 
@@ -834,19 +1030,19 @@
 #: src/applications/dht/tools/dht_api.c:253
 #: src/applications/dht/tools/dht_api.c:307
 #: src/applications/dht/tools/dht_api.c:360
-#, possible-c-format
+#, c-format
 msgid "Received invalid '%s' request (size %d)\n"
 msgstr ""
 
 #: src/applications/dht/tools/dht_api.c:214
 #: src/applications/dht/tools/dht_api.c:266
 #: src/applications/dht/tools/dht_api.c:320
-#, possible-c-format
+#, c-format
 msgid "Received invalid '%s' request (wrong table)\n"
 msgstr ""
 
 #: src/applications/dht/tools/dht_api.c:390
-#, possible-c-format
+#, c-format
 msgid "Received unknown request type %d at %s:%d\n"
 msgstr ""
 
@@ -859,22 +1055,22 @@
 msgstr ""
 
 #: src/applications/dht/tools/dht_api.c:520
-#, possible-c-format
+#, c-format
 msgid "gnunetd signaled error in response to '%s' message\n"
 msgstr ""
 
 #: src/applications/dht/tools/dht_api.c:525
-#, possible-c-format
+#, c-format
 msgid "Failed to receive response to '%s' message from gnunetd\n"
 msgstr ""
 
 #: src/applications/dht/tools/dht_api.c:530
-#, possible-c-format
+#, c-format
 msgid "Failed to send '%s' message to gnunetd\n"
 msgstr ""
 
 #: src/applications/dht/tools/dht_api.c:622
-#, possible-c-format
+#, c-format
 msgid "Unexpected reply to '%s' operation.\n"
 msgstr ""
 
@@ -895,17 +1091,17 @@
 msgstr ""
 
 #: src/applications/dht/tools/dht-join.c:131
-#, possible-c-format
+#, c-format
 msgid "Call to '%s' returns %d.\n"
 msgstr ""
 
 #: src/applications/dht/tools/dht-join.c:132
-#, possible-c-format
+#, c-format
 msgid "Call to '%s' with key '%s'.\n"
 msgstr ""
 
 #: src/applications/dht/tools/dht-join.c:133
-#, possible-c-format
+#, c-format
 msgid "Call to '%s' with value '%.*s' (%d bytes).\n"
 msgstr ""
 
@@ -922,90 +1118,47 @@
 msgid "Error leaving DHT.\n"
 msgstr ""
 
-#: src/applications/dht/tools/dhttest2.c:51
-#: src/applications/session/sessiontest.c:49
-#: src/applications/stats/statistics.c:212
-#: src/applications/tbench/tbenchtest.c:113 src/applications/gap/gaptest.c:50
-msgid "# of connected peers"
-msgstr ""
-
-#: src/applications/dht/tools/dhttest2.c:94
-#: src/applications/dht/tools/dhttest2.c:109
-#: src/applications/dht/tools/dhttest2.c:142
-#: src/applications/dht/tools/dhttest2.c:157
-#: src/applications/session/sessiontest.c:84
-#: src/applications/session/sessiontest.c:99
-#: src/applications/session/sessiontest.c:132
-#: src/applications/session/sessiontest.c:147
-#: src/applications/tbench/tbenchtest.c:173
-#: src/applications/tbench/tbenchtest.c:188
-#: src/applications/tbench/tbenchtest.c:221
-#: src/applications/tbench/tbenchtest.c:236 src/applications/gap/gaptest.c:276
-#: src/applications/gap/gaptest.c:291 src/applications/gap/gaptest.c:324
-#: src/applications/gap/gaptest.c:339 src/applications/fs/fsui/fsuitest.c:128
-#: src/applications/fs/lib/fslibtest.c:239
-#: src/applications/fs/ecrs/ecrstest.c:271
-#: src/applications/fs/ecrs/searchtest.c:110
-#: src/applications/fs/ecrs/namespacetest.c:117
+#: src/applications/dht/module/dht.c:942
 #, c-format
-msgid "'%s' failed: %s\n"
-msgstr ""
-
-#: src/applications/dht/tools/dhttest2.c:177
-#: src/applications/session/sessiontest.c:163
-#: src/applications/tbench/tbenchtest.c:252 src/applications/gap/gaptest.c:358
-#, c-format
-msgid "Waiting for gnunetd to start (%u iterations left)...\n"
-msgstr ""
-
-#: src/applications/dht/tools/dhttest2.c:189
-#: src/applications/session/sessiontest.c:178
-#: src/applications/tbench/tbenchtest.c:128 src/applications/gap/gaptest.c:370
-#, c-format
-msgid "Waiting for peers to connect (%u iterations left)...\n"
-msgstr ""
-
-#: src/applications/dht/module/dht.c:942
-#, possible-c-format
 msgid "Malformed optional field '%s' received from peer '%s'.\n"
 msgstr ""
 
 #: src/applications/dht/module/dht.c:969
-#, possible-c-format
+#, c-format
 msgid "Could not find peer '%s' in routing table!\n"
 msgstr ""
 
 #: src/applications/dht/module/dht.c:1116
 #: src/applications/dht/module/dht.c:1131
-#, possible-c-format
+#, c-format
 msgid "Received malformed response to '%s' from peer '%s'.\n"
 msgstr ""
 
 #: src/applications/dht/module/dht.c:1440
-#, possible-c-format
+#, c-format
 msgid "Invalid response to '%s' from peer '%s'.\n"
 msgstr ""
 
 #: src/applications/dht/module/dht.c:1593
 #: src/applications/dht/module/dht.c:2314
 #: src/applications/dht/module/dht.c:2573 src/applications/rpc/rpc.c:1267
-#, possible-c-format
+#, c-format
 msgid "'%s' called with timeout above 1 hour (bug?)\n"
 msgstr ""
 
 #: src/applications/dht/module/dht.c:1782
-#, possible-c-format
+#, c-format
 msgid "Invalid response to '%s'.\n"
 msgstr ""
 
 #: src/applications/dht/module/dht.c:1980
-#, possible-c-format
+#, c-format
 msgid "Malformed response to '%s' on master table.\n"
 msgstr ""
 
 #: src/applications/dht/module/dht.c:2191
 #: src/applications/dht/module/dht.c:2470
-#, possible-c-format
+#, c-format
 msgid "Invalid response to '%s' from '%s'\n"
 msgstr ""
 
@@ -1013,23 +1166,23 @@
 #: src/applications/dht/module/dht.c:2970
 #: src/applications/dht/module/dht.c:3086
 #: src/applications/dht/module/dht.c:3212
-#, possible-c-format
+#, c-format
 msgid "Received invalid RPC '%s'.\n"
 msgstr ""
 
 #: src/applications/dht/module/dht.c:3098
 #: src/applications/dht/module/dht.c:3226
-#, possible-c-format
+#, c-format
 msgid "RPC for '%s' received for table that we do not participate in!\n"
 msgstr ""
 
 #: src/applications/dht/module/cs.c:440
-#, possible-c-format
+#, c-format
 msgid "'%s' failed: table not found!\n"
 msgstr ""
 
 #: src/applications/dht/module/cs.c:456
-#, possible-c-format
+#, c-format
 msgid "'%s' failed.  Terminating connection to client.\n"
 msgstr ""
 
@@ -1039,20 +1192,146 @@
 
 #: src/applications/dht/module/cs.c:644 src/applications/dht/module/cs.c:661
 #: src/applications/dht/module/cs.c:670
-#, possible-c-format
+#, c-format
 msgid "'%s' failed. Terminating connection to client.\n"
 msgstr ""
 
 #: src/applications/dht/module/cs.c:786 src/applications/dht/module/cs.c:839
-#, possible-c-format
+#, c-format
 msgid "Failed to deliver '%s' message.\n"
 msgstr ""
 
+#: src/applications/chat/chat.c:87
+msgid "Message received from peer is invalid.\n"
+msgstr ""
+
+#: src/applications/chat/chat.c:133
+msgid "Message received from client is invalid\n"
+msgstr ""
+
+#: src/applications/chat/chat.c:155
+msgid "Maximum number of chat clients reached.\n"
+msgstr ""
+
+#: src/applications/chat/chat.c:159
+#, c-format
+msgid "Now %d of %d chat clients at this node.\n"
+msgstr ""
+
+#: src/applications/chat/chat.c:195
+#, c-format
+msgid "'%s' registering handlers %d and %d\n"
+msgstr ""
+
+#: src/applications/chat/gnunet-chat.c:82
+msgid "specify nickname"
+msgstr ""
+
+#: src/applications/chat/gnunet-chat.c:87
+msgid "Start GNUnet chat client."
+msgstr ""
+
+#: src/applications/chat/gnunet-chat.c:149
+#: src/applications/tbench/gnunet-tbench.c:213
+#: src/applications/tracekit/gnunet-tracekit.c:363
+#: src/applications/fs/tools/gnunet-delete.c:142 src/util/port.c:72
+msgid "Could not connect to gnunetd.\n"
+msgstr ""
+
+#: src/applications/chat/gnunet-chat.c:153
+#, c-format
+msgid "You must specify a nickname (use option '%s').\n"
+msgstr ""
+
+#: src/applications/chat/gnunet-chat.c:179
+msgid "Could not send join message to gnunetd\n"
+msgstr ""
+
+#: src/applications/chat/gnunet-chat.c:188
+msgid "Could not send message to gnunetd\n"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:156
+#, c-format
+msgid "HELO message from '%s' invalid (signature invalid). Dropping.\n"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:162
+msgid "HELO message received invalid (expiration time over limit). Dropping.\n"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:171
+#, c-format
+msgid "HELO advertisement for protocol %d received.\n"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:297
+msgid "Could not send HELOs+PING, ping buffer full.\n"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:451
+#, c-format
+msgid "Advertising my transport %d to selected peers.\n"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:458
+msgid ""
+"Announcing ourselves pointless: no other peers are known to us so far.\n"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:547
+#, c-format
+msgid "Removing HELO from peer '%s' (expired %ds ago).\n"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:705
+msgid "# Peer advertisements received"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:706
+msgid "# Self advertisments transmitted"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:707
+msgid "# Foreign advertisements forwarded"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:711
+#: src/applications/session/connect.c:674
+#, c-format
+msgid "'%s' registering handler %d (plaintext and ciphertext)\n"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:730
+msgid "Network advertisements disabled by configuration!\n"
+msgstr ""
+
 #: src/applications/topology_default/topology.c:307
-#, possible-c-format
+#, c-format
 msgid "Version mismatch ('%s' vs. '%s'), run gnunet-update!\n"
 msgstr ""
 
+#: src/applications/pingpong/pingpong.c:102
+#: src/applications/pingpong/pingpong.c:156
+#: src/applications/pingpong/pingpong.c:192
+#: src/applications/pingpong/pingpong.c:229
+#, c-format
+msgid "Received malformed '%s' message. Dropping.\n"
+msgstr ""
+
+#: src/applications/pingpong/pingpong.c:110
+msgid "Received ping for another peer. Dropping.\n"
+msgstr ""
+
+#: src/applications/pingpong/pingpong.c:164
+msgid "Received PING not destined for us!\n"
+msgstr ""
+
+#: src/applications/pingpong/pingpong.c:396
+#, c-format
+msgid "'%s' registering handlers %d %d (plaintext and ciphertext)\n"
+msgstr ""
+
 #: src/applications/sqstore_sqlite/sqlitetest.c:259
 #: src/applications/sqstore_mysql/mysqltest.c:257
 msgid "Could not initialize libgnunetutil!\n"
@@ -1072,10 +1351,10 @@
 #: src/applications/sqstore_mysql/mysql.c:914
 #: src/applications/sqstore_mysql/mysql.c:924 src/util/symcipher_gcrypt.c:47
 #: src/util/symcipher_gcrypt.c:54 src/util/hostkey_gcrypt.c:56
-#: src/util/hostkey_gcrypt.c:63 src/util/storage.c:621
-#: src/include/gnunet_util.h:967 src/include/gnunet_util.h:974
-#: src/include/gnunet_util.h:976
-#, possible-c-format
+#: src/util/hostkey_gcrypt.c:63 src/util/storage.c:613
+#: src/include/gnunet_util.h:973 src/include/gnunet_util.h:980
+#: src/include/gnunet_util.h:982
+#, c-format
 msgid "'%s' failed at %s:%d with error: %s\n"
 msgstr ""
 
@@ -1084,59 +1363,38 @@
 msgid "SQL Database corrupt, ignoring result.\n"
 msgstr ""
 
-#: src/applications/sqstore_sqlite/sqlite.c:404
-#: src/applications/sqstore_sqlite/sqlite.c:598
+#: src/applications/sqstore_sqlite/sqlite.c:405
+#: src/applications/sqstore_sqlite/sqlite.c:599
 msgid "Invalid data in database.  Please verify integrity!\n"
 msgstr ""
 
-#: src/applications/sqstore_sqlite/sqlite.c:910
-#, possible-c-format
+#: src/applications/sqstore_sqlite/sqlite.c:913
+#, c-format
 msgid ""
 "Configuration file must specify directory for storing FS data in section '%"
 "s' under '%s'.\n"
 msgstr ""
 
-#: src/applications/sqstore_sqlite/sqlite.c:924
+#: src/applications/sqstore_sqlite/sqlite.c:927
 msgid "Unable to initialize SQLite.\n"
 msgstr ""
 
-#: src/applications/pingpong/pingpong.c:102
-#: src/applications/pingpong/pingpong.c:156
-#: src/applications/pingpong/pingpong.c:192
-#: src/applications/pingpong/pingpong.c:229
-#, possible-c-format
-msgid "Received malformed '%s' message. Dropping.\n"
-msgstr ""
-
-#: src/applications/pingpong/pingpong.c:110
-msgid "Received ping for another peer. Dropping.\n"
-msgstr ""
-
-#: src/applications/pingpong/pingpong.c:164
-msgid "Received PING not destined for us!\n"
-msgstr ""
-
-#: src/applications/pingpong/pingpong.c:396
-#, possible-c-format
-msgid "'%s' registering handlers %d %d (plaintext and ciphertext)\n"
-msgstr ""
-
 #: src/applications/session/connect.c:151
 msgid "Cannot encrypt sessionkey, other peer not known!\n"
 msgstr ""
 
 #: src/applications/session/connect.c:294
-#, possible-c-format
+#, c-format
 msgid "Session key from peer '%s' could not be verified.\n"
 msgstr ""
 
 #: src/applications/session/connect.c:495
-#, possible-c-format
+#, c-format
 msgid "Invalid '%s' message received from peer '%s'.\n"
 msgstr ""
 
 #: src/applications/session/connect.c:503
-#, possible-c-format
+#, c-format
 msgid "SKEY from '%s' fails CRC check (have: %u, want %u).\n"
 msgstr ""
 
@@ -1146,52 +1404,52 @@
 msgstr ""
 
 #: src/applications/rpc/rpc.c:129 src/applications/rpc/rpc.c:169
-#, possible-c-format
+#, c-format
 msgid ""
 "%s::%s - RPC %s:%p could not be registered: another callback is already "
 "using this name (%p)\n"
 msgstr ""
 
 #: src/applications/rpc/rpc.c:211 src/applications/rpc/rpc.c:258
-#, possible-c-format
+#, c-format
 msgid ""
 "%s::%s - RPC %s:%p could not be unregistered: another callback registered "
 "under that name: %p\n"
 msgstr ""
 
 #: src/applications/rpc/rpc.c:232
-#, possible-c-format
+#, c-format
 msgid "%s::%s - RPC %s:%p could not be unregistered: not found\n"
 msgstr ""
 
 #: src/applications/rpc/rpc.c:279
-#, possible-c-format
+#, c-format
 msgid "%s::%s - async RPC %s:%p could not be unregistered: not found\n"
 msgstr ""
 
 #: src/applications/rpc/rpc.c:871 src/applications/rpc/rpc.c:1002
 #: src/applications/rpc/rpc.c:1084
-#, possible-c-format
+#, c-format
 msgid "Invalid message of type %u received.  Dropping.\n"
 msgstr ""
 
 #: src/applications/rpc/rpc.c:936
-#, possible-c-format
+#, c-format
 msgid "Dropping RPC request %u: message malformed.\n"
 msgstr ""
 
 #: src/applications/rpc/rpc.c:1388
-#, possible-c-format
+#, c-format
 msgid "RPC not unregistered: %s:%p\n"
 msgstr ""
 
 #: src/applications/rpc/rpc.c:1414
-#, possible-c-format
+#, c-format
 msgid "'%s' registering handlers %d %d %d\n"
 msgstr ""
 
 #: src/applications/rpc/rpc.c:1435
-#, possible-c-format
+#, c-format
 msgid "Failed to initialize '%s' service.\n"
 msgstr ""
 
@@ -1212,42 +1470,42 @@
 msgstr ""
 
 #: src/applications/sqstore_mysql/mysql.c:1108
-#, possible-c-format
+#, c-format
 msgid "Query '%s' had no results.\n"
 msgstr ""
 
 #: src/applications/sqstore_mysql/mysql.c:1199
-#, possible-c-format
+#, c-format
 msgid "Trying to use file '%s' for MySQL configuration.\n"
 msgstr ""
 
 #: src/applications/datastore/filter.c:42
-#, possible-c-format
+#, c-format
 msgid ""
 "Configuration must specify directory for FS data in section '%s' under '%"
 "s'.\n"
 msgstr ""
 
 #: src/applications/datastore/datastore.c:107
-#, possible-c-format
+#, c-format
 msgid "Availability test failed for '%s' at %s:%d.\n"
 msgstr ""
 
 #: src/applications/datastore/datastore.c:129
-#, possible-c-format
+#, c-format
 msgid "Database failed to delete %s.\n"
 msgstr ""
 
 #: src/applications/identity/hostkey.c:98
-#: src/applications/identity/identity.c:861
-#, possible-c-format
+#: src/applications/identity/identity.c:865
+#, c-format
 msgid ""
 "Configuration file must specify a directory for GNUnet to store per-peer "
 "data under %s%s\n"
 msgstr ""
 
 #: src/applications/identity/hostkey.c:119
-#, possible-c-format
+#, c-format
 msgid ""
 "Existing hostkey in file '%s' failed format check, creating new hostkey.\n"
 msgstr ""
@@ -1265,34 +1523,34 @@
 msgstr ""
 
 #: src/applications/identity/identity.c:296
-#, possible-c-format
+#, c-format
 msgid ""
 "File '%s' in directory '%s' does not match naming convention. Removed.\n"
 msgstr ""
 
-#: src/applications/identity/identity.c:315
-#, possible-c-format
+#: src/applications/identity/identity.c:318
+#, c-format
 msgid "%s '%s' returned no known hosts!\n"
 msgstr ""
 
-#: src/applications/identity/identity.c:446
-#: src/applications/identity/identity.c:467
-#, possible-c-format
+#: src/applications/identity/identity.c:450
+#: src/applications/identity/identity.c:471
+#, c-format
 msgid "Removed file '%s' containing invalid peer advertisement.\n"
 msgstr ""
 
-#: src/applications/identity/identity.c:512
-#, possible-c-format
+#: src/applications/identity/identity.c:516
+#, c-format
 msgid "Removed file '%s' containing invalid HELO data.\n"
 msgstr ""
 
-#: src/applications/identity/identity.c:526
-#, possible-c-format
+#: src/applications/identity/identity.c:530
+#, c-format
 msgid "Removed invalid HELO file '%s'\n"
 msgstr ""
 
-#: src/applications/identity/identity.c:856
-#, possible-c-format
+#: src/applications/identity/identity.c:860
+#, c-format
 msgid ""
 "Configuration file must specify directory for network identities in section %"
 "s under %s.\n"
@@ -1315,7 +1573,7 @@
 msgstr ""
 
 #: src/applications/testbed/gnunet-testbed.c:180
-#, possible-c-format
+#, c-format
 msgid "Cannot connect to LOOPBACK port %d: %s\n"
 msgstr ""
 
@@ -1329,14 +1587,14 @@
 msgstr ""
 
 #: src/applications/testbed/gnunet-testbed.c:344
-#, possible-c-format
+#, c-format
 msgid ""
 "Error (%s) binding the TCP listener to port %d. No proxy service started.\n"
 "Trying again in %d seconds...\n"
 msgstr ""
 
 #: src/applications/testbed/gnunet-testbed.c:411 src/server/tcpserver.c:519
-#, possible-c-format
+#, c-format
 msgid "Rejected unauthorized connection from %u.%u.%u.%u.\n"
 msgstr ""
 
@@ -1346,7 +1604,7 @@
 msgstr ""
 
 #: src/applications/testbed/gnunet-testbed.c:463
-#, possible-c-format
+#, c-format
 msgid "Command '%s' not found!\n"
 msgstr ""
 
@@ -1355,7 +1613,7 @@
 msgstr ""
 
 #: src/applications/testbed/gnunet-testbed.c:590
-#, possible-c-format
+#, c-format
 msgid "Malformed entry in the configuration in section %s under %s: %s\n"
 msgstr ""
 
@@ -1364,23 +1622,23 @@
 msgstr ""
 
 #: src/applications/testbed/testbed.c:60
-#, possible-c-format
+#, c-format
 msgid "Received unknown testbed message of type %u.\n"
 msgstr ""
 
 #: src/applications/testbed/testbed.c:78
 #: src/applications/testbed/testbed.c:807
-#, possible-c-format
+#, c-format
 msgid "size of '%s' message is too short. Ignoring.\n"
 msgstr ""
 
 #: src/applications/testbed/testbed.c:85
-#, possible-c-format
+#, c-format
 msgid "size of '%s' message is wrong. Ignoring.\n"
 msgstr ""
 
 #: src/applications/testbed/testbed.c:137
-#, possible-c-format
+#, c-format
 msgid "TESTBED could not generate HELO message for protocol %u\n"
 msgstr ""
 
@@ -1390,18 +1648,18 @@
 #: src/applications/testbed/testbed.c:366
 #: src/applications/testbed/testbed.c:403
 #: src/applications/testbed/testbed.c:410
-#, possible-c-format
+#, c-format
 msgid "received invalid '%s' message\n"
 msgstr ""
 
 #: src/applications/testbed/testbed.c:231
 #: src/applications/testbed/testbed.c:271
-#, possible-c-format
+#, c-format
 msgid "received invalid '%s' message (empty module name)\n"
 msgstr ""
 
 #: src/applications/testbed/testbed.c:238
-#, possible-c-format
+#, c-format
 msgid "loading module '%s' failed.  Notifying client.\n"
 msgstr ""
 
@@ -1415,12 +1673,12 @@
 msgstr ""
 
 #: src/applications/testbed/testbed.c:625
-#, possible-c-format
+#, c-format
 msgid "received invalid '%s' message: %s.\n"
 msgstr ""
 
 #: src/applications/testbed/testbed.c:817
-#, possible-c-format
+#, c-format
 msgid "'..' is not allowed in file name (%s).\n"
 msgstr ""
 
@@ -1437,17 +1695,17 @@
 msgstr ""
 
 #: src/applications/testbed/testbed.c:867
-#, possible-c-format
+#, c-format
 msgid "Invalid message received at %s:%d."
 msgstr ""
 
 #: src/applications/testbed/testbed.c:985
-#, possible-c-format
+#, c-format
 msgid "received invalid testbed message of size %u\n"
 msgstr ""
 
 #: src/applications/testbed/testbed.c:1002
-#, possible-c-format
+#, c-format
 msgid ""
 "Received testbed message of type %u but unexpected size %u, expected %u\n"
 msgstr ""
@@ -1458,27 +1716,27 @@
 
 #: src/applications/testbed/testbed.c:1080
 #: src/applications/bootstrap_http/http.c:69
-#, possible-c-format
+#, c-format
 msgid "Invalid URL '%s' (must begin with '%s')\n"
 msgstr ""
 
 #: src/applications/testbed/testbed.c:1119
-#, possible-c-format
+#, c-format
 msgid "Malformed http URL: '%s' at '%s'.  Testbed-client not registered.\n"
 msgstr ""
 
 #: src/applications/testbed/testbed.c:1155
-#, possible-c-format
+#, c-format
 msgid "Could not register testbed, host '%s' unknown\n"
 msgstr ""
 
 #: src/applications/testbed/testbed.c:1177
-#, possible-c-format
+#, c-format
 msgid "Failed to send HTTP request to host '%s': %s\n"
 msgstr ""
 
 #: src/applications/testbed/testbed.c:1230
-#, possible-c-format
+#, c-format
 msgid "Failed so send HTTP request '%s' to host '%s': %s\n"
 msgstr ""
 
@@ -1486,31 +1744,31 @@
 msgid "Exit register (error: no http response read).\n"
 msgstr ""
 
-#: src/applications/transport/transport.c:430
-#: src/applications/transport/transport.c:438
-#, possible-c-format
+#: src/applications/transport/transport.c:437
+#: src/applications/transport/transport.c:445
+#, c-format
 msgid "No transport of type %d known.\n"
 msgstr ""
 
-#: src/applications/transport/transport.c:596
-#, possible-c-format
+#: src/applications/transport/transport.c:603
+#, c-format
 msgid "Option '%s' not set in configuration in section '%s', setting to %dm.\n"
 msgstr ""
 
-#: src/applications/transport/transport.c:610
-#, possible-c-format
+#: src/applications/transport/transport.c:617
+#, c-format
 msgid ""
 "You should specify at least one transport service under option '%s' in "
 "section '%s'.\n"
 msgstr ""
 
-#: src/applications/transport/transport.c:635
-#, possible-c-format
+#: src/applications/transport/transport.c:642
+#, c-format
 msgid "Transport library '%s' did not provide required function '%s%s'.\n"
 msgstr ""
 
-#: src/applications/transport/transport.c:655
-#, possible-c-format
+#: src/applications/transport/transport.c:662
+#, c-format
 msgid "I am peer '%s'.\n"
 msgstr ""
 
@@ -1527,7 +1785,7 @@
 msgstr ""
 
 #: src/applications/fragmentation/fragmentation.c:577
-#, possible-c-format
+#, c-format
 msgid "'%s' registering handler %d\n"
 msgstr ""
 
@@ -1549,18 +1807,22 @@
 msgid "Error reading information from gnunetd.\n"
 msgstr ""
 
+#: src/applications/stats/clientapi.c:179
+msgid "Uptime (seconds)"
+msgstr ""
+
 #: src/applications/stats/statistics.c:206
-#, possible-c-format
+#, c-format
 msgid "% of allowed network load (up)"
 msgstr ""
 
 #: src/applications/stats/statistics.c:208
-#, possible-c-format
+#, c-format
 msgid "% of allowed network load (down)"
 msgstr ""
 
 #: src/applications/stats/statistics.c:210
-#, possible-c-format
+#, c-format
 msgid "% of allowed cpu load"
 msgstr ""
 
@@ -1568,10 +1830,6 @@
 msgid "# bytes of noise received"
 msgstr ""
 
-#: src/applications/stats/clientapi.c:179
-msgid "Uptime (seconds)"
-msgstr ""
-
 #: src/applications/tbench/gnunet-tbench.c:95
 msgid "output in gnuplot format"
 msgstr ""
@@ -1613,7 +1871,7 @@
 msgstr ""
 
 #: src/applications/tbench/gnunet-tbench.c:228
-#, possible-c-format
+#, c-format
 msgid "Invalid receiver peer ID specified ('%s' is not valid name).\n"
 msgstr ""
 
@@ -1623,12 +1881,12 @@
 msgstr ""
 
 #: src/applications/tbench/gnunet-tbench.c:250
-#, possible-c-format
+#, c-format
 msgid "\tmax      %llums\n"
 msgstr ""
 
 #: src/applications/tbench/gnunet-tbench.c:252
-#, possible-c-format
+#, c-format
 msgid "\tmin      %llums\n"
 msgstr ""
 
@@ -1760,7 +2018,7 @@
 
 #: src/applications/tracekit/tracekit.c:69
 #: src/applications/tracekit/tracekit.c:195
-#, possible-c-format
+#, c-format
 msgid "Received invalid '%s' message from '%s'.\n"
 msgstr ""
 
@@ -1769,7 +2027,7 @@
 msgstr ""
 
 #: src/applications/tracekit/tracekit.c:363
-#, possible-c-format
+#, c-format
 msgid "TRACEKIT: received invalid '%s' message\n"
 msgstr ""
 
@@ -1789,31 +2047,36 @@
 msgid "# p2p trace replies sent"
 msgstr ""
 
-#: src/applications/gap/gap.c:1853
+#: src/applications/gap/gap.c:1856
 msgid ""
 "Cover traffic requested but traffic service not loaded.  Rejecting request.\n"
 msgstr ""
 
-#: src/applications/gap/gap.c:1864 src/applications/fs/module/fs.c:667
+#: src/applications/gap/gap.c:1867 src/applications/fs/module/fs.c:667
 msgid "Failed to get traffic stats.\n"
 msgstr ""
 
-#: src/applications/gap/gap.c:1870 src/applications/gap/gap.c:1875
-#: src/applications/gap/gap.c:1881
+#: src/applications/gap/gap.c:1873 src/applications/gap/gap.c:1878
+#: src/applications/gap/gap.c:1884
 msgid "Cannot satisfy desired level of anonymity, ignoring request.\n"
 msgstr ""
 
-#: src/applications/gap/gap.c:2092
+#: src/applications/gap/gap.c:2095
 msgid ""
 "Traffic service failed to load; gap cannot ensure cover-traffic "
 "availability.\n"
 msgstr ""
 
-#: src/applications/gap/gap.c:2123
-#, possible-c-format
+#: src/applications/gap/gap.c:2126
+#, c-format
 msgid "'%s' registering handlers %d %d\n"
 msgstr ""
 
+#: src/applications/getoption/getoption.c:74
+#, c-format
+msgid "'%s' registering client handler %d\n"
+msgstr ""
+
 #: src/applications/fs/tools/gnunet-pseudonym.c:33
 msgid "automate creation of a namespace by starting a collection"
 msgstr ""
@@ -1885,7 +2148,7 @@
 msgstr ""
 
 #: src/applications/fs/tools/gnunet-pseudonym.c:199
-#, possible-c-format
+#, c-format
 msgid "Invalid argument: '%s'\n"
 msgstr ""
 
@@ -2031,14 +2294,14 @@
 msgstr ""
 
 #: src/applications/fs/tools/gnunet-insert.c:128
-#, possible-c-format
+#, c-format
 msgid ""
 "%16llu of %16llu bytes inserted (estimating %llu seconds to "
 "completion)                "
 msgstr ""
 
 #: src/applications/fs/tools/gnunet-insert.c:139
-#, possible-c-format
+#, c-format
 msgid ""
 "\n"
 "Upload of '%s' complete, %llu bytes took %llu seconds (%8.3f kbps).\n"
@@ -2142,7 +2405,7 @@
 msgstr ""
 
 #: src/applications/fs/tools/gnunet-insert.c:304
-#, possible-c-format
+#, c-format
 msgid "You must pass a positive number to the '%s' option.\n"
 msgstr ""
 
@@ -2173,7 +2436,7 @@
 msgstr ""
 
 #: src/applications/fs/tools/gnunet-insert.c:563
-#, possible-c-format
+#, c-format
 msgid "Parsing time failed. Use '%s' format.\n"
 msgstr ""
 
@@ -2182,7 +2445,7 @@
 #: src/applications/fs/tools/gnunet-insert.c:580
 #: src/applications/fs/tools/gnunet-insert.c:584
 #: src/applications/fs/tools/gnunet-insert.c:589
-#, possible-c-format
+#, c-format
 msgid "Option '%s' makes no sense without option '%s'.\n"
 msgstr ""
 
@@ -2258,7 +2521,7 @@
 msgstr ""
 
 #: src/applications/fs/tools/gnunet-download.c:215
-#, possible-c-format
+#, c-format
 msgid "URI '%s' invalid for gnunet-download.\n"
 msgstr ""
 
@@ -2268,14 +2531,14 @@
 msgstr ""
 
 #: src/applications/fs/tools/gnunet-unindex.c:50
-#, possible-c-format
+#, c-format
 msgid ""
 "%16llu of %16llu bytes unindexed (estimating %llu seconds to "
 "completion)                "
 msgstr ""
 
 #: src/applications/fs/tools/gnunet-unindex.c:61
-#, possible-c-format
+#, c-format
 msgid ""
 "\n"
 "Unindexing of '%s' complete, %llu bytes took %llu seconds (%8.3f kbps).\n"
@@ -2302,32 +2565,20 @@
 msgid "'%s' failed.  Is '%s' a file?\n"
 msgstr ""
 
-#: src/applications/fs/module/fs.c:980
-#, possible-c-format
-msgid ""
-"You must specify a postive number for '%s' in the configuration in section '%"
-"s'.\n"
-msgstr ""
-
-#: src/applications/fs/module/fs.c:1019
-#, possible-c-format
-msgid "'%s' registering client handlers %d %d %d %d %d %d %d %d %d %d\n"
-msgstr ""
-
 #: src/applications/fs/module/ondemand.c:71
-#, possible-c-format
+#, c-format
 msgid ""
 "You must specify a directory for FS files in the configuration in section '%"
 "s' under '%s'."
 msgstr ""
 
 #: src/applications/fs/module/ondemand.c:323
-#, possible-c-format
+#, c-format
 msgid "Indexed file disappeared, deleting block for query '%s'\n"
 msgstr ""
 
 #: src/applications/fs/module/ondemand.c:404
-#, possible-c-format
+#, c-format
 msgid ""
 "Because the file '%s' has been unavailable for 3 days it got removed from "
 "your share.  Please unindex files before deleting them as the index now "
@@ -2335,22 +2586,30 @@
 msgstr ""
 
 #: src/applications/fs/module/ondemand.c:430
-#, possible-c-format
+#, c-format
 msgid ""
 "Configuration file must specify directory for storage of FS data in section "
 "'%s' under '%s'.\n"
 msgstr ""
 
 #: src/applications/fs/module/ondemand.c:621
-#, possible-c-format
+#, c-format
 msgid ""
 "Unindexed ODB block '%s' from offset %llu already missing from datastore.\n"
 msgstr ""
 
-#: src/applications/fs/fsui/download.c:192
-msgid "Download aborted."
+#: src/applications/fs/module/fs.c:980
+#, c-format
+msgid ""
+"You must specify a postive number for '%s' in the configuration in section '%"
+"s'.\n"
 msgstr ""
 
+#: src/applications/fs/module/fs.c:1019
+#, c-format
+msgid "'%s' registering client handlers %d %d %d %d %d %d %d %d %d\n"
+msgstr ""
+
 #: src/applications/fs/fsui/helper.c:67
 msgid "No keywords specified!\n"
 msgstr ""
@@ -2368,16 +2627,25 @@
 msgid "Cannot upload directory without using recursion.\n"
 msgstr ""
 
-#: src/applications/fs/fsui/namespace_info.c:518
+#: src/applications/fs/fsui/fsui.c:509
+#, c-format
+msgid "FSUI state file '%s' had syntax error at offset %u.\n"
+msgstr ""
+
+#: src/applications/fs/fsui/namespace_info.c:521
 msgid "Publication interval for periodic publication changed."
 msgstr ""
 
-#: src/applications/fs/fsui/namespace_info.c:539
+#: src/applications/fs/fsui/namespace_info.c:542
 msgid ""
 "Publishing update for periodically updated content more than a week ahead of "
 "schedule.\n"
 msgstr ""
 
+#: src/applications/fs/fsui/download.c:192
+msgid "Download aborted."
+msgstr ""
+
 #: src/applications/fs/fsui/file_info.c:73
 msgid "Collecting file identifiers disabled.\n"
 msgstr ""
@@ -2386,6 +2654,14 @@
 msgid "Unindex failed.\n"
 msgstr ""
 
+#: src/applications/fs/ecrs/search.c:158
+msgid "CHK URI not allowed for search.\n"
+msgstr ""
+
+#: src/applications/fs/ecrs/search.c:210
+msgid "LOC URI not allowed for search.\n"
+msgstr ""
+
 #: src/applications/fs/ecrs/download.c:884
 msgid ""
 "Decrypted content does not match key. This is either a bug or a maliciously "
@@ -2393,66 +2669,73 @@
 msgstr ""
 
 #: src/applications/fs/ecrs/download.c:1049
-#, possible-c-format
+#, c-format
 msgid "Content '%s' seems to be not available on the network.\n"
 msgstr ""
 
-#: src/applications/fs/ecrs/search.c:158
-msgid "CHK URI not allowed for search.\n"
-msgstr ""
-
-#: src/applications/fs/ecrs/search.c:210
-msgid "LOC URI not allowed for search.\n"
-msgstr ""
-
-#: src/applications/fs/ecrs/meta.c:745
-#, possible-c-format
+#: src/applications/fs/ecrs/meta.c:772
+#, c-format
 msgid "Renaming of file '%s' to '%s' failed: %s\n"
 msgstr ""
 
-#: src/applications/fs/ecrs/meta.c:751
-#, possible-c-format
+#: src/applications/fs/ecrs/meta.c:778
+#, c-format
 msgid "Could not rename file '%s' to '%s': file exists\n"
 msgstr ""
 
 #: src/applications/fs/ecrs/namespace.c:45 src/util/state.c:81
-#, possible-c-format
+#, c-format
 msgid ""
 "Configuration file must specify a directory for GNUnet to store per-peer "
 "data under %s%s.\n"
 msgstr ""
 
 #: src/applications/fs/ecrs/namespace.c:133
-#, possible-c-format
+#, c-format
 msgid "Cannot create pseudonym '%s', file '%s' exists.\n"
 msgstr ""
 
 #: src/applications/fs/ecrs/namespace.c:293
 #: src/applications/fs/ecrs/namespace.c:365
 #: src/applications/fs/ecrs/namespace.c:509
-#, possible-c-format
+#, c-format
 msgid "File '%s' does not contain a pseudonym.\n"
 msgstr ""
 
 #: src/applications/fs/ecrs/namespace.c:304
 #: src/applications/fs/ecrs/namespace.c:376
-#, possible-c-format
+#, c-format
 msgid "Format of pseudonym '%s' is invalid.\n"
 msgstr ""
 
 #: src/applications/fs/ecrs/namespace.c:519
 #: src/applications/fs/ecrs/namespace.c:529
-#, possible-c-format
+#, c-format
 msgid "Format of file '%s' is invalid.\n"
 msgstr ""
 
-#: src/applications/getoption/getoption.c:74
-#, possible-c-format
-msgid "'%s' registering client handler %d\n"
+#: src/applications/topology_f2f/topology.c:284
+#, c-format
+msgid ""
+"Need to have list of friends in configuration under '%s' in section '%s'.\n"
 msgstr ""
 
+#: src/applications/topology_f2f/topology.c:299
+#, c-format
+msgid "Failed to read friends list from '%s'\n"
+msgstr ""
+
+#: src/applications/topology_f2f/topology.c:315
+msgid "Syntax error in topology specification, skipping bytes.\n"
+msgstr ""
+
+#: src/applications/topology_f2f/topology.c:327
+#, c-format
+msgid "Syntax error in topology specification, skipping bytes '%s'.\n"
+msgstr ""
+
 #: src/applications/template/template.c:59
-#, possible-c-format
+#, c-format
 msgid "'%s' registering client handler %d and %d\n"
 msgstr ""
 
@@ -2465,48 +2748,48 @@
 msgstr ""
 
 #: src/applications/bootstrap_http/http.c:97
-#, possible-c-format
+#, c-format
 msgid "Invalid port \"%s\" in hostlist specification, trying port %d.\n"
 msgstr ""
 
 #: src/applications/bootstrap_http/http.c:108
-#, possible-c-format
+#, c-format
 msgid "'%s' failed at %s:%d with error: '%s'.\n"
 msgstr ""
 
 #: src/applications/bootstrap_http/http.c:121
-#, possible-c-format
+#, c-format
 msgid "Could not download list of peer contacts, host '%s' unknown.\n"
 msgstr ""
 
 #: src/applications/bootstrap_http/http.c:143
 #: src/applications/bootstrap_http/http.c:169
-#, possible-c-format
+#, c-format
 msgid "'%s' to '%s' failed at %s:%d with error: %s\n"
 msgstr ""
 
 #: src/applications/bootstrap_http/http.c:205
-#, possible-c-format
+#, c-format
 msgid "Parsing HTTP response for URL '%s' failed.\n"
 msgstr ""
 
 #: src/applications/bootstrap_http/http.c:240
-#, possible-c-format
+#, c-format
 msgid "Parsing HELO from '%s' failed.\n"
 msgstr ""
 
 #: src/applications/bootstrap_http/http.c:312
-#, possible-c-format
+#, c-format
 msgid "Could not resolve name of HTTP proxy '%s'. Trying without a proxy.\n"
 msgstr ""
 
 #: src/applications/traffic/traffic.c:443
-#, possible-c-format
+#, c-format
 msgid "# bytes transmitted of type %d"
 msgstr ""
 
 #: src/applications/traffic/traffic.c:463
-#, possible-c-format
+#, c-format
 msgid "# bytes received of type %d"
 msgstr ""
 
@@ -2553,12 +2836,12 @@
 msgstr ""
 
 #: src/server/gnunet-update.c:235
-#, possible-c-format
+#, c-format
 msgid "Updating data for module '%s'\n"
 msgstr ""
 
 #: src/server/gnunet-update.c:239
-#, possible-c-format
+#, c-format
 msgid "Failed to update data for module '%s'\n"
 msgstr ""
 
@@ -2568,22 +2851,22 @@
 msgstr ""
 
 #: src/server/connection.c:973
-#, possible-c-format
+#, c-format
 msgid "'%s' selected %d out of %d messages (MTU: %d).\n"
 msgstr ""
 
 #: src/server/connection.c:981
-#, possible-c-format
+#, c-format
 msgid "Message details: %u: length %d, priority: %d\n"
 msgstr ""
 
 #: src/server/connection.c:1902
-#, possible-c-format
+#, c-format
 msgid "Message from '%s' discarded: invalid format.\n"
 msgstr ""
 
 #: src/server/connection.c:1976
-#, possible-c-format
+#, c-format
 msgid "Invalid sequence number %u <= %u, dropping message.\n"
 msgstr ""
 
@@ -2596,17 +2879,17 @@
 msgstr ""
 
 #: src/server/startup.c:123
-#, possible-c-format
+#, c-format
 msgid "The '%s' request received from client is malformed.\n"
 msgstr ""
 
 #: src/server/startup.c:268
-#, possible-c-format
+#, c-format
 msgid "You must specify a name for the PID file in section '%s' under '%s'.\n"
 msgstr ""
 
 #: src/server/startup.c:283
-#, possible-c-format
+#, c-format
 msgid "Could not write PID to file '%s': %s.\n"
 msgstr ""
 
@@ -2625,12 +2908,12 @@
 msgstr ""
 
 #: src/server/startup.c:488
-#, possible-c-format
+#, c-format
 msgid "User '%s' not known, cannot change UID to it."
 msgstr ""
 
 #: src/server/startup.c:499
-#, possible-c-format
+#, c-format
 msgid "Cannot change user/group to '%s': %s"
 msgstr ""
 
@@ -2639,7 +2922,7 @@
 msgstr ""
 
 #: src/server/startup.c:521
-#, possible-c-format
+#, c-format
 msgid "Argument %d: '%s'\n"
 msgstr ""
 
@@ -2648,57 +2931,57 @@
 msgstr ""
 
 #: src/server/gnunetd.c:108
-#, possible-c-format
+#, c-format
 msgid "Configuration or GNUnet version changed.  You need to run '%s'!\n"
 msgstr ""
 
 #: src/server/gnunetd.c:116
-#, possible-c-format
+#, c-format
 msgid "'%s' starting\n"
 msgstr ""
 
 #: src/server/gnunetd.c:138
-#, possible-c-format
+#, c-format
 msgid "'%s' startup complete.\n"
 msgstr ""
 
 #: src/server/gnunetd.c:143
-#, possible-c-format
+#, c-format
 msgid "'%s' is shutting down.\n"
 msgstr ""
 
 #: src/server/core.c:113
-#, possible-c-format
+#, c-format
 msgid "Application module '%s' already initialized!\n"
 msgstr ""
 
 #: src/server/core.c:185
-#, possible-c-format
+#, c-format
 msgid "Could not shutdown '%s': application not loaded\n"
 msgstr ""
 
 #: src/server/core.c:192
-#, possible-c-format
+#, c-format
 msgid "Could not shutdown application '%s': not initialized\n"
 msgstr ""
 
 #: src/server/core.c:201 src/server/core.c:388
-#, possible-c-format
+#, c-format
 msgid "Could not find '%s%s' method in library '%s'.\n"
 msgstr ""
 
 #: src/server/core.c:366
-#, possible-c-format
+#, c-format
 msgid "Could not release %p: service not loaded\n"
 msgstr ""
 
 #: src/server/core.c:467
-#, possible-c-format
+#, c-format
 msgid "Could not initialize application '%s'\n"
 msgstr ""
 
 #: src/server/core.c:484
-#, possible-c-format
+#, c-format
 msgid "Could not properly shutdown application '%s'.\n"
 msgstr ""
 
@@ -2707,7 +2990,7 @@
 msgstr ""
 
 #: src/server/core.c:600
-#, possible-c-format
+#, c-format
 msgid "Could not properly unload service '%s'!\n"
 msgstr ""
 
@@ -2727,7 +3010,7 @@
 msgstr ""
 
 #: src/server/gnunet-transport-check.c:166
-#, possible-c-format
+#, c-format
 msgid "'%s': Did not receive message within %llu ms.\n"
 msgstr ""
 
@@ -2765,7 +3048,7 @@
 msgstr ""
 
 #: src/server/gnunet-transport-check.c:319
-#, possible-c-format
+#, c-format
 msgid "No reply received within %llums.\n"
 msgstr ""
 
@@ -2814,24 +3097,24 @@
 msgstr ""
 
 #: src/server/tcpserver.c:425
-#, possible-c-format
+#, c-format
 msgid "'%s' failed for port %d: %s. Will try again in %d seconds.\n"
 msgstr ""
 
 #: src/server/tcpserver.c:692
-#, possible-c-format
+#, c-format
 msgid ""
 "Malformed network specification in the configuration in section '%s' for "
 "entry '%s': %s\n"
 msgstr ""
 
-#: src/server/tcpserver.c:789
-#, possible-c-format
+#: src/server/tcpserver.c:797
+#, c-format
 msgid "%s failed, message type %d already in use.\n"
 msgstr ""
 
 #: src/server/handler.c:320
-#, possible-c-format
+#, c-format
 msgid "Received corrupt message from peer '%s'in %s:%d.\n"
 msgstr ""
 
@@ -2840,7 +3123,7 @@
 msgstr ""
 
 #: src/server/gnunet-peer-info.c:144 src/server/gnunet-peer-info.c:159
-#, possible-c-format
+#, c-format
 msgid "Could not get address of peer '%s'.\n"
 msgstr ""
 
@@ -2854,7 +3137,7 @@
 msgstr ""
 
 #: src/util/xmalloc.c:71
-#, possible-c-format
+#, c-format
 msgid "Unexpected very large allocation (%u bytes) at %s:%d!\n"
 msgstr ""
 
@@ -2863,67 +3146,12 @@
 msgstr ""
 
 #: src/util/cron.c:366
-#, possible-c-format
+#, c-format
 msgid ""
 "'%s' called with cron job not in queue, adding.  This may not be what you "
 "want.\n"
 msgstr ""
 
-#: src/util/port.c:37
-#, possible-c-format
-msgid ""
-"Cannot determine port of gnunetd server. Define in configuration file in "
-"section '%s' under '%s'.\n"
-msgstr ""
-
-#: src/util/io.c:35
-#, possible-c-format
-msgid "Caught signal %d.\n"
-msgstr ""
-
-#: src/util/statuscalls.c:138
-#, possible-c-format
-msgid ""
-"No network interfaces defined in configuration section '%s' under '%s'!\n"
-msgstr ""
-
-#: src/util/statuscalls.c:164
-#, possible-c-format
-msgid ""
-"Interfaces string (%s) in configuration section '%s' under '%s' is "
-"malformed.\n"
-msgstr ""
-
-#: src/util/statuscalls.c:177
-#, possible-c-format
-msgid ""
-"No network interfaces specified in the configuration file in section '%s' "
-"under '%s'.\n"
-msgstr ""
-
-#: src/util/statuscalls.c:398 src/util/statuscalls.c:618
-#, possible-c-format
-msgid "Failed to parse interface data from '%s' at %s:%d.\n"
-msgstr ""
-
-#: src/util/statuscalls.c:500
-#, possible-c-format
-msgid "Failed to parse interface data '%s' output at %s:%d.\n"
-msgstr ""
-
-#: src/util/statuscalls.c:827
-#, possible-c-format
-msgid "Could not decoding file '%s' at %s:%d.\n"
-msgstr ""
-
-#: src/util/statuscalls.c:1002
-msgid "Cannot query the CPU usage (Windows NT).\n"
-msgstr ""
-
-#: src/util/statuscalls.c:1022
-msgid "Cannot query the CPU usage (Win 9x)\n"
-msgstr ""
-
 #: src/util/getopt.c:641
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
@@ -2979,87 +3207,142 @@
 msgid "%s: option `-W %s' does not allow an argument\n"
 msgstr ""
 
+#: src/util/port.c:37
+#, c-format
+msgid ""
+"Cannot determine port of gnunetd server. Define in configuration file in "
+"section '%s' under '%s'.\n"
+msgstr ""
+
+#: src/util/io.c:35
+#, c-format
+msgid "Caught signal %d.\n"
+msgstr ""
+
+#: src/util/statuscalls.c:138
+#, c-format
+msgid ""
+"No network interfaces defined in configuration section '%s' under '%s'!\n"
+msgstr ""
+
+#: src/util/statuscalls.c:164
+#, c-format
+msgid ""
+"Interfaces string (%s) in configuration section '%s' under '%s' is "
+"malformed.\n"
+msgstr ""
+
+#: src/util/statuscalls.c:177
+#, c-format
+msgid ""
+"No network interfaces specified in the configuration file in section '%s' "
+"under '%s'.\n"
+msgstr ""
+
+#: src/util/statuscalls.c:398 src/util/statuscalls.c:618
+#, c-format
+msgid "Failed to parse interface data from '%s' at %s:%d.\n"
+msgstr ""
+
+#: src/util/statuscalls.c:500
+#, c-format
+msgid "Failed to parse interface data '%s' output at %s:%d.\n"
+msgstr ""
+
+#: src/util/statuscalls.c:827
+#, c-format
+msgid "Could not decoding file '%s' at %s:%d.\n"
+msgstr ""
+
+#: src/util/statuscalls.c:1002
+msgid "Cannot query the CPU usage (Windows NT).\n"
+msgstr ""
+
+#: src/util/statuscalls.c:1022
+msgid "Cannot query the CPU usage (Win 9x)\n"
+msgstr ""
+
 #: src/util/ipcheck.c:100
-#, possible-c-format
+#, c-format
 msgid "Invalid format for IP: '%s'\n"
 msgstr ""
 
 #: src/util/ipcheck.c:150
-#, possible-c-format
+#, c-format
 msgid "Invalid network notation ('/%d' is not legal in IPv4 CIDR)."
 msgstr ""
 
 #: src/util/ipcheck.c:164
-#, possible-c-format
+#, c-format
 msgid "Invalid network notation (additional characters: '%s')."
 msgstr ""
 
 #: src/util/ipcheck.c:236
-#, possible-c-format
+#, c-format
 msgid "Invalid network notation (does not end with ';': '%s')\n"
 msgstr ""
 
 #: src/util/ipcheck.c:268
-#, possible-c-format
+#, c-format
 msgid "Wrong format '%s' for netmask: %s\n"
 msgstr ""
 
 #: src/util/ipcheck.c:282
-#, possible-c-format
+#, c-format
 msgid "Wrong format '%s' for network: %s\n"
 msgstr ""
 
 #: src/util/hostkey_gcrypt.c:936
-#, possible-c-format
+#, c-format
 msgid "RSA signature verification failed at %s:%d: %s\n"
 msgstr ""
 
 #: src/util/semaphore.c:172 src/util/semaphore.c:198
-#, possible-c-format
+#, c-format
 msgid "Invalid argument for '%s' at %s:%d.\n"
 msgstr ""
 
 #: src/util/semaphore.c:176
-#, possible-c-format
+#, c-format
 msgid "Deadlock due to '%s' at %s:%d.\n"
 msgstr ""
 
 #: src/util/semaphore.c:202
-#, possible-c-format
+#, c-format
 msgid "Permission denied for '%s' at %s:%d.\n"
 msgstr ""
 
 #: src/util/semaphore.c:574
-#, possible-c-format
+#, c-format
 msgid "Can't create semaphore: %i"
 msgstr ""
 
 #: src/util/tcp_return.c:51
-#, possible-c-format
+#, c-format
 msgid "'%s' failed, other side closed connection.\n"
 msgstr ""
 
 #: src/util/tcp_return.c:58
-#, possible-c-format
+#, c-format
 msgid "'%s' failed, reply invalid!\n"
 msgstr ""
 
-#: src/util/initialize.c:162
+#: src/util/initialize.c:163
 msgid "Shutdown complete.\n"
 msgstr ""
 
 #: src/util/storage.c:181
-#, possible-c-format
+#, c-format
 msgid "'%s' failed for drive %s: %u\n"
 msgstr ""
 
 #: src/util/storage.c:278
-#, possible-c-format
+#, c-format
 msgid "'%s' is not a regular file.\n"
 msgstr ""
 
 #: src/util/storage.c:533
-#, possible-c-format
+#, c-format
 msgid "'%s' expected '%s' to be a directory!\n"
 msgstr ""
 
@@ -3078,39 +3361,39 @@
 msgstr ""
 
 #: src/util/configuration.c:177
-#, possible-c-format
+#, c-format
 msgid "inlining configration file '%s'\n"
 msgstr ""
 
 #: src/util/configuration.c:181
-#, possible-c-format
+#, c-format
 msgid "Could not parse configuration file '%s'.\n"
 msgstr ""
 
 #: src/util/configuration.c:217
-#, possible-c-format
+#, c-format
 msgid "Syntax error in configuration file '%s' at line %d.\n"
 msgstr ""
 
-#: src/util/configuration.c:444
-#, possible-c-format
+#: src/util/configuration.c:464
+#, c-format
 msgid ""
 "Configuration file '%s' not found. I will try to create the default "
 "configuration file at that location.\n"
 msgstr ""
 
-#: src/util/configuration.c:460
-#, possible-c-format
+#: src/util/configuration.c:481
+#, c-format
 msgid "Cannot open configuration file '%s'\n"
 msgstr ""
 
 #: src/util/random_gcrypt.c:38
-#, possible-c-format
+#, c-format
 msgid "libgcrypt has not the expected version (version %s is required).\n"
 msgstr ""
 
 #: src/util/tcpio.c:86 src/util/identity.c:83 src/util/identity.c:123
-#, possible-c-format
+#, c-format
 msgid "Could not find IP of host '%s': %s\n"
 msgstr ""
 
@@ -3120,12 +3403,12 @@
 msgstr ""
 
 #: src/util/dso.c:93
-#, possible-c-format
+#, c-format
 msgid "'%s' failed for library '%s' at %s:%d with error: %s\n"
 msgstr ""
 
 #: src/util/dso.c:143
-#, possible-c-format
+#, c-format
 msgid "'%s' failed to resolve method '%s%s' at %s:%d with error: %s\n"
 msgstr ""
 
@@ -3174,50 +3457,50 @@
 msgstr ""
 
 #: src/util/logging.c:250
-#, possible-c-format
+#, c-format
 msgid "Invalid LOGLEVEL '%s' specified.\n"
 msgstr ""
 
 #: src/util/logging.c:355 src/util/logging.c:361
-#, possible-c-format
+#, c-format
 msgid "Failure at %s:%d.\n"
 msgstr ""
 
 #: src/util/identity.c:199
-#, possible-c-format
+#, c-format
 msgid ""
 "Could not find interface '%s' in '%s', trying to find another interface.\n"
 msgstr ""
 
 #: src/util/identity.c:223
-#, possible-c-format
+#, c-format
 msgid "Could not obtain IP for interface '%s' using '%s'.\n"
 msgstr ""
 
 #: src/util/identity.c:266
-#, possible-c-format
+#, c-format
 msgid "Could not find an IP address for interface '%s'.\n"
 msgstr ""
 
 #: src/util/identity.c:276
-#, possible-c-format
+#, c-format
 msgid ""
 "There is more than one IP address specified for interface '%s'.\n"
 "GNUnet will use %u.%u.%u.%u.\n"
 msgstr ""
 
 #: src/util/identity.c:282
-#, possible-c-format
+#, c-format
 msgid "GNUnet now uses the IP address %u.%u.%u.%u.\n"
 msgstr ""
 
 #: src/util/identity.c:300
-#, possible-c-format
+#, c-format
 msgid "Could not resolve '%s' to determine our IP address: %s\n"
 msgstr ""
 
 #: src/util/identity.c:357 src/util/identity.c:399
-#, possible-c-format
+#, c-format
 msgid "Could not resolve '%s': %s\n"
 msgstr ""
 
@@ -3241,37 +3524,37 @@
 "configuration file.\n"
 msgstr ""
 
-#: src/include/gnunet_util.h:138
+#: src/include/gnunet_util.h:140
 msgid "print this help"
 msgstr ""
 
-#: src/include/gnunet_util.h:141
+#: src/include/gnunet_util.h:143
 msgid "set verbosity to LEVEL"
 msgstr ""
 
-#: src/include/gnunet_util.h:144
+#: src/include/gnunet_util.h:146
 msgid "use configuration file FILENAME"
 msgstr ""
 
-#: src/include/gnunet_util.h:147
+#: src/include/gnunet_util.h:149
 msgid "specify host on which gnunetd is running"
 msgstr ""
 
-#: src/include/gnunet_util.h:150
+#: src/include/gnunet_util.h:152
 msgid "print the version number"
 msgstr ""
 
-#: src/include/gnunet_util.h:153
+#: src/include/gnunet_util.h:155
 msgid "be verbose"
 msgstr ""
 
-#: src/include/gnunet_util.h:585 src/include/gnunet_util.h:587
-#, possible-c-format
+#: src/include/gnunet_util.h:582 src/include/gnunet_util.h:584
+#, c-format
 msgid "Assertion failed at %s:%d.\n"
 msgstr ""
 
-#: src/include/gnunet_util.h:983 src/include/gnunet_util.h:985
-#: src/include/gnunet_util.h:992
-#, possible-c-format
+#: src/include/gnunet_util.h:989 src/include/gnunet_util.h:991
+#: src/include/gnunet_util.h:998
+#, c-format
 msgid "'%s' failed on file '%s' at %s:%d with error: %s\n"
 msgstr ""

Modified: GNUnet/po/POTFILES.in
===================================================================
--- GNUnet/po/POTFILES.in       2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet/po/POTFILES.in       2005-05-31 19:27:19 UTC (rev 833)
@@ -6,49 +6,52 @@
 src/transports/tcp.c
 src/transports/udp.c
 src/transports/tcp6.c
-src/conf/gnunet-win-tool.c
+src/conf/wizard_callbacks.c
 src/conf/gnunet-setup.c
 src/conf/mconf_util.c
+src/conf/wizard.c
 src/conf/mconf.c
 src/conf/symbol.c
+src/conf/gnunet-win-tool.c
+src/conf/mconf_textbox.c
+src/conf/mconf_yesno.c
 src/conf/conf.c
-src/conf/mconf_yesno.c
-src/conf/mconf_textbox.c
 src/conf/mconf_menubox.c
+src/conf/menu.c
+src/conf/images.c
 src/conf/zconf_tab.c
-src/conf/menu.c
 src/conf/lex.zconf.c
-src/conf/images.c
+src/conf/gconf_interface.c
+src/conf/expr.c
 src/conf/confdata.c
-src/conf/expr.c
-src/conf/mconf_checklist.c
+src/conf/wizard_interface.c
 src/conf/mconf_msgbox.c
+src/conf/gconf_support.c
 src/conf/mconf_inputbox.c
+src/conf/mconf_checklist.c
 src/conf/gconf.c
-src/conf/gconf_interface.c
-src/conf/gconf_support.c
-src/conf/wizard_callbacks.c
-src/conf/wizard_interface.c
-src/applications/chat/chat.c
-src/applications/chat/gnunet-chat.c
-src/applications/advertising/advertising.c
-src/applications/advertising/bootstrap.c
+src/conf/wizard_curs.c
+src/conf/wizard_util.c
+src/applications/dht/tools/dhttest2.c
 src/applications/dht/tools/dht-query.c
 src/applications/dht/tools/dht_api.c
 src/applications/dht/tools/dht-join.c
-src/applications/dht/tools/dhttest2.c
 src/applications/dht/module/datastore_dht_master.c
 src/applications/dht/module/datastore_memory.c
 src/applications/dht/module/dht_test.c
 src/applications/dht/module/dht.c
 src/applications/dht/module/cs.c
 src/applications/dht/module/datastore_memory_test.c
+src/applications/chat/chat.c
+src/applications/chat/gnunet-chat.c
+src/applications/advertising/advertising.c
+src/applications/advertising/bootstrap.c
 src/applications/topology_default/topology.c
+src/applications/pingpong/pingpong.c
 src/applications/sqstore_sqlite/sqlitetest.c
 src/applications/sqstore_sqlite/sqlite.c
-src/applications/pingpong/pingpong.c
+src/applications/session/sessiontest.c
 src/applications/session/connect.c
-src/applications/session/sessiontest.c
 src/applications/rpc/parameterstest.c
 src/applications/rpc/parameters.c
 src/applications/rpc/rpc.c
@@ -68,15 +71,17 @@
 src/applications/fragmentation/fragmentationtest.c
 src/applications/fragmentation/fragmentation.c
 src/applications/stats/gnunet-stats.c
+src/applications/stats/clientapi.c
 src/applications/stats/statistics.c
-src/applications/stats/clientapi.c
 src/applications/tbench/gnunet-tbench.c
+src/applications/tbench/tbenchtest.c
 src/applications/tbench/tbench.c
-src/applications/tbench/tbenchtest.c
 src/applications/tracekit/gnunet-tracekit.c
 src/applications/tracekit/tracekit.c
 src/applications/gap/gap.c
 src/applications/gap/gaptest.c
+src/applications/getoption/clientapi.c
+src/applications/getoption/getoption.c
 src/applications/fs/tools/gnunet-pseudonym.c
 src/applications/fs/tools/gnunet-delete.c
 src/applications/fs/tools/gnunet-directory.c
@@ -85,48 +90,49 @@
 src/applications/fs/tools/gnunet-download.c
 src/applications/fs/tools/gnunet-unindex.c
 src/applications/fs/module/querymanager.c
+src/applications/fs/module/ondemand.c
 src/applications/fs/module/fs.c
-src/applications/fs/module/ondemand.c
 src/applications/fs/module/migration.c
-src/applications/fs/fsui/download.c
 src/applications/fs/fsui/helper.c
+src/applications/fs/fsui/fsuitest.c
 src/applications/fs/fsui/upload.c
 src/applications/fs/fsui/search.c
 src/applications/fs/fsui/fsui.c
 src/applications/fs/fsui/namespace_info.c
+src/applications/fs/fsui/download.c
 src/applications/fs/fsui/file_info.c
+src/applications/fs/fsui/unindex.c
 src/applications/fs/fsui/collection.c
-src/applications/fs/fsui/unindex.c
-src/applications/fs/fsui/fsuitest.c
+src/applications/fs/fsui/searchtest.c
+src/applications/fs/fsui/fsuitest2.c
+src/applications/fs/fsui/downloadtest.c
+src/applications/fs/lib/fslibtest.c
 src/applications/fs/lib/fslib.c
-src/applications/fs/lib/fslibtest.c
 src/applications/fs/ecrs/uritest.c
+src/applications/fs/ecrs/tree.c
 src/applications/fs/ecrs/uri.c
+src/applications/fs/ecrs/keyspace.c
+src/applications/fs/ecrs/directorytest.c
 src/applications/fs/ecrs/directory.c
-src/applications/fs/ecrs/tree.c
-src/applications/fs/ecrs/keyspace.c
+src/applications/fs/ecrs/searchtest.c
+src/applications/fs/ecrs/search.c
 src/applications/fs/ecrs/download.c
-src/applications/fs/ecrs/search.c
 src/applications/fs/ecrs/unindex.c
+src/applications/fs/ecrs/indexinfo.c
 src/applications/fs/ecrs/upload.c
+src/applications/fs/ecrs/metatest.c
 src/applications/fs/ecrs/meta.c
-src/applications/fs/ecrs/metatest.c
+src/applications/fs/ecrs/namespacetest.c
 src/applications/fs/ecrs/namespace.c
+src/applications/fs/ecrs/ecrstest.c
 src/applications/fs/ecrs/ecrs.c
-src/applications/fs/ecrs/directorytest.c
-src/applications/fs/ecrs/ecrstest.c
-src/applications/fs/ecrs/searchtest.c
-src/applications/fs/ecrs/indexinfo.c
-src/applications/fs/ecrs/namespacetest.c
 src/applications/fs/ecrs_core.c
-src/applications/getoption/clientapi.c
-src/applications/getoption/getoption.c
+src/applications/topology_f2f/topology.c
 src/applications/template/template.c
 src/applications/template/gnunet-template.c
 src/applications/bootstrap_http/http.c
 src/applications/traffic/traffic.c
 src/applications/traffic/clientapi.c
-src/applications/topology_f2f/topology.c
 src/server/gnunet-update.c
 src/server/connection.c
 src/server/startup.c
@@ -137,19 +143,15 @@
 src/server/handler.c
 src/server/version.c
 src/server/gnunet-peer-info.c
-src/util/win/winstrptime.c
-src/util/win/inet_pton.c
 src/util/win/winproc.c
-src/util/win/winselect.c
-src/util/win/win_printf.c
 src/util/weakkeytest.c
 src/util/xmalloc.c
 src/util/vectortest.c
 src/util/cron.c
+src/util/getopt.c
 src/util/port.c
 src/util/io.c
 src/util/statuscalls.c
-src/util/getopt.c
 src/util/storagetest.c
 src/util/ipcheck.c
 src/util/symcipher_gcrypt.c
@@ -171,19 +173,19 @@
 src/util/storage.c
 src/util/vector.c
 src/util/symciphertest.c
+src/util/printhelp.c
 src/util/configtest.c
-src/util/printhelp.c
 src/util/configuration.c
 src/util/crctest.c
 src/util/random_gcrypt.c
 src/util/bloomtest.c
 src/util/shutdown.c
-src/util/tcpio.c
+src/util/locking_gcrypt.c
 src/util/kblockkey.c
-src/util/locking_gcrypt.c
 src/util/bloomfilter.c
+src/util/tcpio.c
+src/util/state.c
 src/util/timer.c
-src/util/state.c
 src/util/hashingtest.c
 src/util/semaphoretest.c
 src/util/hashtest.c
@@ -202,6 +204,7 @@
 src/include/gnunet_util.h
 src/include/gnunet_fragmentation_service.h
 src/include/gnunet_getoption_lib.h
+src/include/gnunet_stats_lib.h
 src/include/gnunet_protocols.h
 src/include/gnunet_gap_service.h
 src/include/gnunet_gnunetd_lib.h
@@ -212,8 +215,8 @@
 src/include/gnunet_pingpong_service.h
 src/include/winproc.h
 src/include/gnunet_session_service.h
+src/include/gnunet_traffic_lib.h
 src/include/platform.h
-src/include/gnunet_traffic_lib.h
 src/include/gnunet_dht_lib.h
 src/include/fs.h
 src/include/gnunet_identity_service.h
@@ -222,31 +225,36 @@
 src/include/gnunet_sqstore_service.h
 src/include/gnunet_ecrs_lib.h
 src/include/gnunet_traffic_service.h
+src/include/gnunet_transport.h
 src/include/gnunet_fsui_lib.h
-src/include/gnunet_transport.h
 src/include/gnunet_dht_service.h
 src/include/gnunet_fs_lib.h
 src/include/gettext.h
 src/include/gnunet_rpc_service.h
+src/include/plibc.h
 src/include/gnunet_datastore_service.h
 src/include/gnunet_blockstore.h
-src/include/gnunet_stats_lib.h
+src/conf/gconf_callbacks.h
+src/conf/wizard_support.h
+src/conf/wizard_callbacks.h
 src/conf/qconf.h
 src/conf/zconf.tab.h
+src/conf/bool.h
 src/conf/lkc_proto.h
-src/conf/bool.h
 src/conf/lkc.h
+src/conf/lkc_defs.h
+src/conf/gconf_interface.h
 src/conf/expr.h
+src/conf/wizard_interface.h
 src/conf/mconf_dialog.h
 src/conf/mconf_colors.h
-src/conf/lkc_defs.h
-src/conf/gconf_callbacks.h
-src/conf/gconf_interface.h
 src/conf/gconf_support.h
+src/conf/wizard_util.h
+src/conf/wizard_gtk.h
+src/applications/dht/module/dht.h
+src/applications/dht/module/datastore_dht_master.h
 src/applications/chat/chat.h
 src/applications/advertising/bootstrap.h
-src/applications/dht/module/dht.h
-src/applications/dht/module/datastore_dht_master.h
 src/applications/datastore/prefetch.h
 src/applications/datastore/filter.h
 src/applications/identity/hostkey.h
@@ -256,6 +264,7 @@
 src/applications/stats/statistics.h
 src/applications/tbench/tbench.h
 src/applications/tracekit/tracekit.h
+src/applications/getoption/getoption.h
 src/applications/fs/module/migration.h
 src/applications/fs/module/querymanager.h
 src/applications/fs/module/ondemand.h
@@ -263,11 +272,10 @@
 src/applications/fs/ecrs/ecrs.h
 src/applications/fs/ecrs/tree.h
 src/applications/fs/ecrs/uri.h
-src/applications/getoption/getoption.h
 src/applications/traffic/traffic.h
 src/server/connection.h
 src/server/startup.h
+src/server/tcpserver.h
 src/server/handler.h
-src/server/tcpserver.h
 src/server/version.h
 src/util/locking_gcrypt.h

Modified: GNUnet/po/de.po
===================================================================
--- GNUnet/po/de.po     2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet/po/de.po     2005-05-31 19:27:19 UTC (rev 833)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: GNUnet 0.7.0pre0\n"
 "Report-Msgid-Bugs-To: address@hidden"
-"POT-Creation-Date: 2005-04-22 22:03+0200\n"
+"POT-Creation-Date: 2005-05-30 22:55-0500\n"
 "PO-Revision-Date: 2005-05-11 21:35+0200\n"
 "Last-Translator: Nils Durner <address@hidden>\n"
 "Language-Team: German <address@hidden>\n"
@@ -62,28 +62,28 @@
 "MTU f�r '%s' ist m�glicherweise zu gering (Fragmentierung ist nicht "
 "implementiert!)\n"
 
-#: src/transports/http.c:578
+#: src/transports/http.c:581
 msgid "Expected welcome on http connection, got garbage. Closing connection.\n"
 msgstr ""
 "Es wurde eine Willkommensnachricht erwartet, tats�chlich wurde jedoch keine "
 "gesendet. HTTP-Verbindung wird geschlossen.\n"
 
-#: src/transports/http.c:794 src/transports/tcp.c:669
+#: src/transports/http.c:797 src/transports/tcp.c:669
 #, c-format
 msgid "Rejected blacklisted connection from %u.%u.%u.%u.\n"
 msgstr "%u.%u.%u.%u. steht auf schwarzer Liste, Verbindung wird abgewiesen.\n"
 
-#: src/transports/http.c:1068 src/transports/tcp.c:1026
+#: src/transports/http.c:1071 src/transports/tcp.c:1026
 msgid "Could not determine my public IP address.\n"
 msgstr "�ffentliche IP-Adresse konnte nicht ermittelt werden.\n"
 
-#: src/transports/http.c:1140 src/transports/tcp.c:1092 src/util/tcpio.c:165
+#: src/transports/http.c:1143 src/transports/tcp.c:1092 src/util/tcpio.c:165
 #: src/util/tcpio.c:195
 #, c-format
 msgid "Cannot connect to %u.%u.%u.%u:%u: %s\n"
 msgstr "Verbindung zu %u.%u.%u.%u:%u fehlgeschlagen: %s\n"
 
-#: src/transports/http.c:1288
+#: src/transports/http.c:1291
 #, c-format
 msgid ""
 "Could not bind the HTTP listener to port %d. No transport service started.\n"
@@ -91,7 +91,7 @@
 "HTTP-Listener konnte nicht an Port %d gebunden werden. Der Transport Dienst "
 "wurde nicht gestartet.\n"
 
-#: src/transports/http.c:1410 src/applications/testbed/testbed.c:1056
+#: src/transports/http.c:1413 src/applications/testbed/testbed.c:1056
 #, c-format
 msgid "Could not resolve name of HTTP proxy '%s'.\n"
 msgstr "Der Name des HTTP Proxies '%s' konnte nicht aufgel�st werden.\n"
@@ -226,6 +226,20 @@
 msgid "'%s': unknown service: %s\n"
 msgstr "'%s': unbekannter Dienst: %s\n"
 
+#: src/conf/gnunet-setup.c:33
+msgid ""
+"USAGE: gnunet-setup MODULE\n"
+"\n"
+"MODULE\n"
+" config\t\ttext-based configuration\n"
+" menuconfig\ttext-based menu\n"
+" xconfig\tX configuration\n"
+" gconfig\tGTK configuration\n"
+" wizard-curses\tBasic text-based graphical configuration\n"
+" wizard-gtk\tBasic GTK configuration\n"
+"\n"
+msgstr ""
+
 #: src/conf/gnunet-win-tool.c:107
 #, c-format
 msgid "GNUnet service installed successfully.\n"
@@ -237,12 +251,11 @@
 msgstr "Diese Version von Windows unterst�tzt keine Dienste.\n"
 
 #: src/conf/gnunet-win-tool.c:114 src/conf/gnunet-win-tool.c:141
-#: src/conf/wizard_callbacks.c:165 src/conf/wizard_callbacks.c:209
 #, c-format
 msgid "Error: can't open Service Control Manager: %s\n"
 msgstr "Fehler: der Dienstemanager konnte nicht ge�ffnet werden: %s\n"
 
-#: src/conf/gnunet-win-tool.c:119 src/conf/wizard_callbacks.c:172
+#: src/conf/gnunet-win-tool.c:119
 #, c-format
 msgid "Error: can't create service: %s\n"
 msgstr "Fehler: Dienst konnte nicht angelegt werden: %s\n"
@@ -427,43 +440,13 @@
 msgid "Sorry, no help available for this option yet."
 msgstr "Sorry, f�r diese Option steht noch keine Hilfe zur Verf�gung"
 
-#: src/conf/gconf_support.c:90 src/conf/gconf_support.c:114
-#, c-format
-msgid "Couldn't find pixmap file: %s"
-msgstr "Pixmapdatei %s konnte nicht gefunden werden"
-
-#: src/conf/wizard_callbacks.c:168 src/conf/wizard_callbacks.c:175
-#: src/conf/wizard_callbacks.c:178 src/conf/wizard_callbacks.c:192
-#: src/conf/wizard_callbacks.c:212 src/conf/wizard_callbacks.c:219
-#: src/conf/wizard_callbacks.c:226 src/conf/wizard_callbacks.c:229
-#: src/conf/wizard_interface.c:1075
-msgid "Error"
-msgstr "Fehler"
-
-#: src/conf/wizard_callbacks.c:178 src/conf/wizard_callbacks.c:229
-msgid "Unknown error"
-msgstr "Unbekannter Fehler"
-
-#: src/conf/wizard_callbacks.c:191
-msgid "Cannot write to the regisitry"
-msgstr "Konnte nicht in die Registry schreiben"
-
-#: src/conf/wizard_callbacks.c:216
-#, c-format
-msgid "Error: can't access the service: %s\n"
-msgstr "Fehler: auf den Dienst konnte nicht zugegriffen werden: %s\n"
-
-#: src/conf/wizard_callbacks.c:223
-#, c-format
-msgid "Error: can't delete the service: %s\n"
-msgstr "Fehler: der Dienst konnte nicht gel�scht werden: %s\n"
-
 #: src/conf/wizard_interface.c:54 src/conf/wizard_interface.c:198
 #: src/conf/wizard_interface.c:461 src/conf/wizard_interface.c:783
+#: src/conf/wizard_interface.c:1164
 msgid "GNUnet configuration assistant"
 msgstr "GNUnet Konfigurationsassistent"
 
-#: src/conf/wizard_interface.c:77
+#: src/conf/wizard_interface.c:77 src/conf/wizard_curs.c:93
 msgid ""
 "Welcome to GNUnet!\n"
 "\n"
@@ -494,12 +477,13 @@
 "das GNUnet-Team"
 
 #: src/conf/wizard_interface.c:106 src/conf/wizard_interface.c:332
-#: src/conf/wizard_interface.c:651
+#: src/conf/wizard_interface.c:651 src/conf/wizard_interface.c:1286
 msgid "Next"
 msgstr "Weiter"
 
 #: src/conf/wizard_interface.c:127 src/conf/wizard_interface.c:353
 #: src/conf/wizard_interface.c:672 src/conf/wizard_interface.c:929
+#: src/conf/wizard_interface.c:1307
 msgid "Cancel"
 msgstr "Abbrechen"
 
@@ -565,7 +549,7 @@
 msgstr "Netzwerkverbindung"
 
 #: src/conf/wizard_interface.c:311 src/conf/wizard_interface.c:630
-#: src/conf/wizard_interface.c:887
+#: src/conf/wizard_interface.c:887 src/conf/wizard_interface.c:1265
 msgid "Back"
 msgstr "Zur�ck"
 
@@ -675,7 +659,7 @@
 msgid "Open the enhanced configurator"
 msgstr "Erweiterten Konfigurator starten"
 
-#: src/conf/wizard_interface.c:861
+#: src/conf/wizard_interface.c:861 src/conf/wizard_interface.c:1239
 msgid "Other settings"
 msgstr "Weitere Einstellungen"
 
@@ -699,6 +683,14 @@
 msgid "No"
 msgstr "Nein"
 
+#: src/conf/wizard_interface.c:1075 src/conf/wizard_util.c:165
+#: src/conf/wizard_util.c:173 src/conf/wizard_util.c:176
+#: src/conf/wizard_util.c:190 src/conf/wizard_util.c:218
+#: src/conf/wizard_util.c:224 src/conf/wizard_util.c:359
+#: src/conf/wizard_util.c:377
+msgid "Error"
+msgstr "Fehler"
+
 #: src/conf/wizard_interface.c:1092
 msgid "Unable to save configuration!"
 msgstr "Fehler beim Speichern der Konfiguration!"
@@ -707,139 +699,342 @@
 msgid "OK"
 msgstr "OK"
 
-#: src/applications/chat/chat.c:87
-msgid "Message received from peer is invalid.\n"
-msgstr "Empfangene Nachricht ist ung�ltig.\n"
+#: src/conf/wizard_interface.c:1195
+msgid ""
+"Define the user and the group owning the GNUnet service here.\n"
+"\n"
+"For security reasons, it is a good idea to let this setup create a new user "
+"account and a new group under which the GNUnet service is started at system "
+"startup.\n"
+"You can also specify existing ones.\n"
+"In any case, you should check its permissions to critical files on your "
+"system."
+msgstr ""
 
-#: src/applications/chat/chat.c:133
-msgid "Message received from client is invalid\n"
-msgstr "Empfangene Client-Nachricht ist ung�ltig.\n"
+#: src/conf/wizard_interface.c:1209
+msgid "Group:"
+msgstr ""
 
-#: src/applications/chat/chat.c:155
-msgid "Maximum number of chat clients reached.\n"
-msgstr "Maximale Anzahl an Chat Clients erreicht.\n"
+#: src/conf/wizard_interface.c:1231
+msgid "User account:"
+msgstr ""
 
-#: src/applications/chat/chat.c:159
+#: src/conf/gconf_support.c:90 src/conf/gconf_support.c:114
 #, c-format
-msgid "Now %d of %d chat clients at this node.\n"
-msgstr "Jetzt sind %d von %d auf diesem Knoten.\n"
+msgid "Couldn't find pixmap file: %s"
+msgstr "Pixmapdatei %s konnte nicht gefunden werden"
 
-#: src/applications/chat/chat.c:195
-#, c-format
-msgid "'%s' registering handlers %d and %d\n"
-msgstr "'%s' registriert Handler %d und %d\n"
+#: src/conf/wizard_curs.c:92 src/conf/wizard_curs.c:106
+#: src/conf/wizard_curs.c:167 src/conf/wizard_curs.c:194
+#: src/conf/wizard_curs.c:219 src/conf/wizard_curs.c:251
+#: src/conf/wizard_curs.c:276 src/conf/wizard_curs.c:307
+#: src/conf/wizard_curs.c:329 src/conf/wizard_curs.c:357
+#: src/conf/wizard_curs.c:379 src/conf/wizard_curs.c:401
+#: src/conf/wizard_curs.c:428 src/conf/wizard_curs.c:458
+#: src/conf/wizard_curs.c:486
+#, fuzzy
+msgid "GNUnet configuration"
+msgstr "GNUnet Konfigurationsassistent"
 
-#: src/applications/chat/gnunet-chat.c:82
-msgid "specify nickname"
-msgstr "Spitznamen angeben"
+#: src/conf/wizard_curs.c:107
+msgid ""
+"Choose the network interface that connects your computer to the internet "
+"from the list below."
+msgstr ""
 
-#: src/applications/chat/gnunet-chat.c:87
-msgid "Start GNUnet chat client."
-msgstr "GNUnet chat client starten"
+#: src/conf/wizard_curs.c:113 src/conf/wizard_curs.c:173
+#: src/conf/wizard_curs.c:224 src/conf/wizard_curs.c:256
+#: src/conf/wizard_curs.c:312
+#, fuzzy
+msgid "Help"
+msgstr "_Hilfe"
 
-#: src/applications/chat/gnunet-chat.c:93
-#: src/applications/dht/tools/dht-query.c:99
-#: src/applications/dht/tools/dht-join.c:108
-#: src/applications/testbed/gnunet-testbed.c:125
-#: src/applications/testbed/gnunet-testbed.c:542
-#: src/applications/stats/gnunet-stats.c:143
-#: src/applications/tbench/gnunet-tbench.c:189
-#: src/applications/tracekit/gnunet-tracekit.c:153
-#: src/applications/fs/tools/gnunet-pseudonym.c:192
-#: src/applications/fs/tools/gnunet-delete.c:111
-#: src/applications/fs/tools/gnunet-directory.c:177
-#: src/applications/fs/tools/gnunet-insert.c:467
-#: src/applications/fs/tools/gnunet-search.c:210
-#: src/applications/fs/tools/gnunet-download.c:125
-#: src/applications/fs/tools/gnunet-unindex.c:139
-#: src/applications/template/gnunet-template.c:87
-#: src/server/gnunet-update.c:129 src/server/startup.c:512
-#: src/server/gnunet-transport-check.c:510 src/server/gnunet-peer-info.c:107
-#, c-format
-msgid "Use --help to get a list of options.\n"
-msgstr "Verwenden Sie --help, um eine Liste der Optionen zu erhalten.\n"
+#: src/conf/wizard_curs.c:113
+msgid ""
+"The \"Network interface\" is the device that connects your computer to the "
+"internet. This is usually a modem, an ISDN card or a network card in case "
+"you are using DSL."
+msgstr ""
 
-#: src/applications/chat/gnunet-chat.c:149
-#: src/applications/tbench/gnunet-tbench.c:213
-#: src/applications/tracekit/gnunet-tracekit.c:363
-#: src/applications/fs/tools/gnunet-delete.c:142 src/util/port.c:72
-msgid "Could not connect to gnunetd.\n"
-msgstr "Verbindung zu gnunetd konnte nicht hergestellt werden.\n"
+#: src/conf/wizard_curs.c:167
+msgid ""
+"What is this computer's public IP adress or hostname?\n"
+"\n"
+"If in doubt, leave this empty."
+msgstr ""
 
-#: src/applications/chat/gnunet-chat.c:153
-#, c-format
-msgid "You must specify a nickname (use option '%s').\n"
-msgstr "Sie m�ssen einen Spitznamen angeben (verwenden Sie die Option '%s').\n"
+#: src/conf/wizard_curs.c:173
+msgid ""
+"If your provider always assigns the same IP-Address to you (a \"static\" IP-"
+"Address), enter it into the \"IP-Address\" field. If your IP-Address changes "
+"every now and then (\"dynamic\" IP-Address) but there's a hostname that "
+"always points to your actual IP-Address (\"Dynamic DNS\"), you can also "
+"enter it here.\n"
+"If in doubt, leave the field empty. GNUnet will then try to determine your "
+"IP-Address."
+msgstr ""
 
-#: src/applications/chat/gnunet-chat.c:179
-msgid "Could not send join message to gnunetd\n"
-msgstr "'join' Nachricht konnte nicht an gnunetd gesendet werden.\n"
+#: src/conf/wizard_curs.c:194
+msgid ""
+"Is this machine behind NAT?\n"
+"\n"
+"If you are connected to the internet through another computer doing SNAT, a "
+"router or a \"hardware firewall\" and other computers on the internet cannot "
+"connect to this computer, say \"yes\" here. Answer \"no\" on direct "
+"connections through modems, ISDN cards and DNAT (also known as \"port "
+"forwarding\")."
+msgstr ""
 
-#: src/applications/chat/gnunet-chat.c:188
-msgid "Could not send message to gnunetd\n"
-msgstr "Nachricht konnte nicht an gnunetd gesendet werden.\n"
+#: src/conf/wizard_curs.c:219
+msgid "How much upstream (Bytes/s) may be used?"
+msgstr ""
 
-#: src/applications/advertising/advertising.c:156
-#, c-format
-msgid "HELO message from '%s' invalid (signature invalid). Dropping.\n"
+#: src/conf/wizard_curs.c:224
+msgid ""
+"You can limit GNUnet's ressource usage here.\n"
+"\n"
+"The \"upstream\" is the data channel through which data is *sent* to the "
+"internet. The limit is either the total maximum for this computer or how "
+"much GNUnet itself is allowed to use. You can specify that later. If you "
+"have a flatrate, you can set it to the maximum speed of your internet "
+"connection."
 msgstr ""
-"HELO Nachricht von '%s' ist ung�ltig (Signatur ist ung�ltig). Nachricht "
-"wurde verworfen.\n"
 
-#: src/applications/advertising/advertising.c:162
-msgid "HELO message received invalid (expiration time over limit). Dropping.\n"
+#: src/conf/wizard_curs.c:251
+#, fuzzy
+msgid "How much downstream (Bytes/s) may be used?"
+msgstr "Downstream (Bytes/s):"
+
+#: src/conf/wizard_curs.c:256
+msgid ""
+"You can limit GNUnet's ressource usage here.\n"
+"\n"
+"The \"downstream\" is the data channel through which data is *received* from "
+"the internet. The limit is either the total maximum for this computer or how "
+"much GNUnet itself is allowed to use. You can specify that later. If you "
+"have a flatrate you can set it to the maximum speed of your internet "
+"connection."
 msgstr ""
-"Empfangene HELO Nachricht ist ung�ltig (Ablaufzeit �ber Limit). Nachricht "
-"wurde verworfen.\n"
 
-#: src/applications/advertising/advertising.c:171
-#, c-format
-msgid "HELO advertisement for protocol %d received.\n"
-msgstr "HELO Ank�ndigung f�r Protokoll %d empfangen.\n"
+#: src/conf/wizard_curs.c:276
+msgid ""
+"Share denoted bandwidth with other applications?\n"
+"\n"
+"Say \"yes\" here, if you don't want other network traffic to interfere with "
+"GNUnet's operation, but still wish to constrain GNUnet's bandwidth usage to "
+"values entered in the previous steps, or if you can't reliably measure the "
+"maximum capabilities of your connection. \"No\" can be very useful if other "
+"applications are causing a lot of traffic on your LAN.  In this case, you do "
+"not want to limit the traffic that GNUnet can inflict on your internet "
+"connection whenever your high-speed LAN gets used (e.g. by NFS)."
+msgstr ""
 
-#: src/applications/advertising/advertising.c:297
-msgid "Could not send HELOs+PING, ping buffer full.\n"
-msgstr "HELOs+PING konnten nicht gesendet werden, Ping Puffer ist voll.\n"
+#: src/conf/wizard_curs.c:307
+msgid "How much CPU (in %) may be used?"
+msgstr ""
 
-#: src/applications/advertising/advertising.c:449
-#, c-format
-msgid "Advertising my transport %d to selected peers.\n"
-msgstr "Transport %d wird ausgew�hlten anderen Knoten bekannt gegeben.\n"
+#: src/conf/wizard_curs.c:312
+msgid ""
+"You can limit GNUnet's ressource usage here.\n"
+"\n"
+"This is the percentage of processor time GNUnet is allowed to use."
+msgstr ""
 
-#: src/applications/advertising/advertising.c:456
+#: src/conf/wizard_curs.c:329
+#, fuzzy
 msgid ""
-"Announcing ourselves pointless: no other peers are known to us so far.\n"
+"Store migrated content?\n"
+"\n"
+"GNUnet is able to store data from other peers in your datastore. This is "
+"useful if an adversary has access to your inserted content and you need to "
+"deny that the content is yours. With \"content migration\" on, the content "
+"could have \"migrated\" over the internet to your node without your "
+"knowledge.\n"
+"It also helps to spread popular content over different peers to enhance "
+"availability."
 msgstr ""
-"Bekanntmachung von uns zwecklos: bis jetzt sind uns keine anderen Knoten "
-"bekannt.\n"
+"GNUnet ist in der Lage, Daten von anderen Knoten in Ihrem Datenspeicher zu "
+"speichern. Das ist n�tzlich, wenn ein Widersacher Zugriff auf Ihre "
+"eingef�gten Inhalte erlangt und Sie abstreiten m�ssen, dass diese Daten "
+"Ihnen geh�ren. Mit \"Inhaltsmigration\" angeschaltet k�nnen die Inhalte �ber "
+"das Internet von einem anderen Knoten zu Ihrem Rechner ohne Ihr Wissen "
+"\"gewandert\" sein.\n"
+"Au�erdem hilft es, beliebte Inhalte �ber verschiedene Netzteilnehmer zu "
+"verteilen, um so die Verf�gbarkeit zu erh�hen.\n"
+"\n"
+"Der GNUnet Datenspeicher enth�lt alle Daten, die GNUnet erzeugt (Indexdaten, "
+"eingef�gte und migrierte Inhalte). Seine maximale Gr��e kann unten angegeben "
+"werden.\n"
+"\n"
+"Wenn Sie ein fortgeschrittener Benutzer sind, m�chten Sie vielleicht weitere "
+"Feinjustierungen an GNUnet �ber den \"erweiterten Konfigurator\" vornehmen."
 
-#: src/applications/advertising/advertising.c:541
-#, c-format
-msgid "Removing HELO from peer '%s' (expired %ds ago).\n"
-msgstr "HELO von Knoten '%s' wird entfernt (lief vor %ds ab).\n"
+#: src/conf/wizard_curs.c:357
+msgid ""
+"What's the maximum datastore size in MB?\n"
+"\n"
+"The GNUnet datastore contains all data that GNUnet generates (index data, "
+"inserted and migrated content)."
+msgstr ""
 
-#: src/applications/advertising/advertising.c:699
-msgid "# Peer advertisements received"
-msgstr "# Knotenank�ndigungen empfangen"
+#: src/conf/wizard_curs.c:379
+msgid ""
+"Do you want to launch GNUnet as a system service?\n"
+"\n"
+"If you say \"yes\" here, the GNUnet background process will be automatically "
+"started when you turn on your computer. If you say \"no\" here, you have to "
+"launch GNUnet yourself each time you want to use it."
+msgstr ""
 
-#: src/applications/advertising/advertising.c:700
-msgid "# Self advertisments transmitted"
-msgstr "# Selbstbekanntmachungen �bertragen"
+#: src/conf/wizard_curs.c:402
+msgid ""
+"Define the user owning the GNUnet service.\n"
+"\n"
+"For security reasons, it is a good idea to let this setup create a new user "
+"account under which the GNUnet service is started at system startup.\n"
+"\n"
+"You can also specify an already existant user account here.\n"
+"\n"
+"In any case, you should check its permissions to critical files on your "
+"system.\n"
+"\n"
+"GNUnet user:"
+msgstr ""
 
-#: src/applications/advertising/advertising.c:701
-msgid "# Foreign advertisements forwarded"
-msgstr "# Bekanntmachungen von anderen �bertragen"
+#: src/conf/wizard_curs.c:429
+msgid ""
+"Define the group owning the GNUnet service.\n"
+"\n"
+"For security reasons, it is a good idea to let this setup create a new group "
+"for the chosen user account.\n"
+"\n"
+"You can also specify a already existant group here.\n"
+"\n"
+"Only members of this group will be allowed to start and stop the the GNUnet "
+"server and have access to GNUnet server data.\n"
+"\n"
+"GNUnet group:"
+msgstr ""
 
-#: src/applications/advertising/advertising.c:705
-#: src/applications/session/connect.c:674
+#: src/conf/wizard_curs.c:458
+msgid ""
+"If you are an experienced user, you may want to tweak your GNUnet "
+"installation using the enhanced configurator.\n"
+"\n"
+"Do you want to start it after saving your configuration?"
+msgstr ""
+
+#: src/conf/wizard_curs.c:487
+#, fuzzy
+msgid ""
+"Cannot save configuration.\n"
+"\n"
+"Try again?"
+msgstr "Konfigurationsdatei '%s' konnte nicht ge�ffnet werden.\n"
+
+#: src/conf/wizard_util.c:162
+#, fuzzy, c-format
+msgid "Error: can't open Service Control Manager: %s (%i)\n"
+msgstr "Fehler: der Dienstemanager konnte nicht ge�ffnet werden: %s\n"
+
+#: src/conf/wizard_util.c:170
+#, fuzzy, c-format
+msgid "Error: can't create service: %s (#%i)\n"
+msgstr "Fehler: Dienst konnte nicht angelegt werden: %s\n"
+
+#: src/conf/wizard_util.c:176 src/conf/wizard_util.c:218
+msgid "Unknown error"
+msgstr "Unbekannter Fehler"
+
+#: src/conf/wizard_util.c:189
+msgid "Cannot write to the regisitry"
+msgstr "Konnte nicht in die Registry schreiben"
+
+#: src/conf/wizard_util.c:206
+#, fuzzy
+msgid "Can't open Service Control Manager"
+msgstr "Fehler: der Dienstemanager konnte nicht ge�ffnet werden: %s\n"
+
+#: src/conf/wizard_util.c:210
+#, fuzzy
+msgid "Can't access the service"
+msgstr "Fehler: auf den Dienst konnte nicht zugegriffen werden: %s\n"
+
+#: src/conf/wizard_util.c:214
+#, fuzzy
+msgid "Can't delete the service"
+msgstr "Fehler: der Dienst konnte nicht gel�scht werden: %s\n"
+
+#: src/conf/wizard_util.c:358
+#, fuzzy
+msgid "This version of Windows does not support multiple users."
+msgstr "Diese Version von Windows unterst�tzt keine Dienste.\n"
+
+#: src/conf/wizard_util.c:362
+#, fuzzy
+msgid "Error creating user"
+msgstr "=\tFehler beim Lesen des Verzeichnisses.\n"
+
+#: src/conf/wizard_util.c:365
+msgid "Error accessing local security policy"
+msgstr ""
+
+#: src/conf/wizard_util.c:368
+msgid "Error granting service right to user"
+msgstr ""
+
+#: src/conf/wizard_util.c:371
+msgid "Unknown error while creating a new user"
+msgstr ""
+
+#: src/applications/dht/tools/dhttest2.c:51
+#: src/applications/session/sessiontest.c:49
+#: src/applications/stats/statistics.c:212
+#: src/applications/tbench/tbenchtest.c:113 src/applications/gap/gaptest.c:50
+msgid "# of connected peers"
+msgstr "# an verbundenen Knoten"
+
+#: src/applications/dht/tools/dhttest2.c:94
+#: src/applications/dht/tools/dhttest2.c:109
+#: src/applications/dht/tools/dhttest2.c:142
+#: src/applications/dht/tools/dhttest2.c:157
+#: src/applications/session/sessiontest.c:84
+#: src/applications/session/sessiontest.c:99
+#: src/applications/session/sessiontest.c:132
+#: src/applications/session/sessiontest.c:147
+#: src/applications/tbench/tbenchtest.c:173
+#: src/applications/tbench/tbenchtest.c:188
+#: src/applications/tbench/tbenchtest.c:221
+#: src/applications/tbench/tbenchtest.c:236 src/applications/gap/gaptest.c:276
+#: src/applications/gap/gaptest.c:291 src/applications/gap/gaptest.c:324
+#: src/applications/gap/gaptest.c:339 src/applications/fs/fsui/fsuitest.c:128
+#: src/applications/fs/fsui/searchtest.c:128
+#: src/applications/fs/fsui/fsuitest2.c:69
+#: src/applications/fs/fsui/downloadtest.c:138
+#: src/applications/fs/lib/fslibtest.c:239
+#: src/applications/fs/ecrs/searchtest.c:110
+#: src/applications/fs/ecrs/namespacetest.c:117
+#: src/applications/fs/ecrs/ecrstest.c:271
 #, c-format
-msgid "'%s' registering handler %d (plaintext and ciphertext)\n"
-msgstr "'%s' registriert Handler %d (Plaintext und Ciphertext)\n"
+msgid "'%s' failed: %s\n"
+msgstr "'%s' schlug fehl: %s\n"
 
-#: src/applications/advertising/advertising.c:724
-msgid "Network advertisements disabled by configuration!\n"
-msgstr "Netzwerkbekanntmachungen wurden per Konfiguration deaktiviert!\n"
+#: src/applications/dht/tools/dhttest2.c:177
+#: src/applications/session/sessiontest.c:163
+#: src/applications/tbench/tbenchtest.c:252 src/applications/gap/gaptest.c:358
+#, c-format
+msgid "Waiting for gnunetd to start (%u iterations left)...\n"
+msgstr "Warte auf den Start von gnunetd (%u Iterationen verbleiben)...\n"
 
+#: src/applications/dht/tools/dhttest2.c:189
+#: src/applications/session/sessiontest.c:178
+#: src/applications/tbench/tbenchtest.c:128 src/applications/gap/gaptest.c:370
+#, c-format
+msgid "Waiting for peers to connect (%u iterations left)...\n"
+msgstr ""
+"Warte darauf, dass sich andere Knoten verbinden (%u Iterationen "
+"verbleiben)...\n"
+
 #: src/applications/dht/tools/dht-query.c:39
 msgid "query table called NAME"
 msgstr "Frage Tabelle mit dem Namen NAME ab"
@@ -878,6 +1073,28 @@
 msgid "You must pass a number to the '%s' option.\n"
 msgstr "Sie m�ssen f�r die Option '%s' zus�tzlich eine Zahl angeben.\n"
 
+#: src/applications/dht/tools/dht-query.c:99
+#: src/applications/dht/tools/dht-join.c:108
+#: src/applications/chat/gnunet-chat.c:93
+#: src/applications/testbed/gnunet-testbed.c:125
+#: src/applications/testbed/gnunet-testbed.c:542
+#: src/applications/stats/gnunet-stats.c:143
+#: src/applications/tbench/gnunet-tbench.c:189
+#: src/applications/tracekit/gnunet-tracekit.c:153
+#: src/applications/fs/tools/gnunet-pseudonym.c:192
+#: src/applications/fs/tools/gnunet-delete.c:111
+#: src/applications/fs/tools/gnunet-directory.c:177
+#: src/applications/fs/tools/gnunet-insert.c:467
+#: src/applications/fs/tools/gnunet-search.c:210
+#: src/applications/fs/tools/gnunet-download.c:125
+#: src/applications/fs/tools/gnunet-unindex.c:139
+#: src/applications/template/gnunet-template.c:87
+#: src/server/gnunet-update.c:129 src/server/startup.c:512
+#: src/server/gnunet-transport-check.c:510 src/server/gnunet-peer-info.c:107
+#, c-format
+msgid "Use --help to get a list of options.\n"
+msgstr "Verwenden Sie --help, um eine Liste der Optionen zu erhalten.\n"
+
 #: src/applications/dht/tools/dht-query.c:106
 msgid "No commands specified.\n"
 msgstr "Keine Kommandos angegeben.\n"
@@ -1022,51 +1239,6 @@
 msgid "Error leaving DHT.\n"
 msgstr "Fehler beim Verlassen der DHT.\n"
 
-#: src/applications/dht/tools/dhttest2.c:51
-#: src/applications/session/sessiontest.c:49
-#: src/applications/stats/statistics.c:212
-#: src/applications/tbench/tbenchtest.c:113 src/applications/gap/gaptest.c:50
-msgid "# of connected peers"
-msgstr "# an verbundenen Knoten"
-
-#: src/applications/dht/tools/dhttest2.c:94
-#: src/applications/dht/tools/dhttest2.c:109
-#: src/applications/dht/tools/dhttest2.c:142
-#: src/applications/dht/tools/dhttest2.c:157
-#: src/applications/session/sessiontest.c:84
-#: src/applications/session/sessiontest.c:99
-#: src/applications/session/sessiontest.c:132
-#: src/applications/session/sessiontest.c:147
-#: src/applications/tbench/tbenchtest.c:173
-#: src/applications/tbench/tbenchtest.c:188
-#: src/applications/tbench/tbenchtest.c:221
-#: src/applications/tbench/tbenchtest.c:236 src/applications/gap/gaptest.c:276
-#: src/applications/gap/gaptest.c:291 src/applications/gap/gaptest.c:324
-#: src/applications/gap/gaptest.c:339 src/applications/fs/fsui/fsuitest.c:128
-#: src/applications/fs/lib/fslibtest.c:239
-#: src/applications/fs/ecrs/ecrstest.c:271
-#: src/applications/fs/ecrs/searchtest.c:110
-#: src/applications/fs/ecrs/namespacetest.c:117
-#, c-format
-msgid "'%s' failed: %s\n"
-msgstr "'%s' schlug fehl: %s\n"
-
-#: src/applications/dht/tools/dhttest2.c:177
-#: src/applications/session/sessiontest.c:163
-#: src/applications/tbench/tbenchtest.c:252 src/applications/gap/gaptest.c:358
-#, c-format
-msgid "Waiting for gnunetd to start (%u iterations left)...\n"
-msgstr "Warte auf den Start von gnunetd (%u Iterationen verbleiben)...\n"
-
-#: src/applications/dht/tools/dhttest2.c:189
-#: src/applications/session/sessiontest.c:178
-#: src/applications/tbench/tbenchtest.c:128 src/applications/gap/gaptest.c:370
-#, c-format
-msgid "Waiting for peers to connect (%u iterations left)...\n"
-msgstr ""
-"Warte darauf, dass sich andere Knoten verbinden (%u Iterationen "
-"verbleiben)...\n"
-
 #: src/applications/dht/module/dht.c:942
 #, c-format
 msgid "Malformed optional field '%s' received from peer '%s'.\n"
@@ -1151,6 +1323,117 @@
 msgid "Failed to deliver '%s' message.\n"
 msgstr "Zustellung der Nachricht '%s' fehlgeschlagen.\n"
 
+#: src/applications/chat/chat.c:87
+msgid "Message received from peer is invalid.\n"
+msgstr "Empfangene Nachricht ist ung�ltig.\n"
+
+#: src/applications/chat/chat.c:133
+msgid "Message received from client is invalid\n"
+msgstr "Empfangene Client-Nachricht ist ung�ltig.\n"
+
+#: src/applications/chat/chat.c:155
+msgid "Maximum number of chat clients reached.\n"
+msgstr "Maximale Anzahl an Chat Clients erreicht.\n"
+
+#: src/applications/chat/chat.c:159
+#, c-format
+msgid "Now %d of %d chat clients at this node.\n"
+msgstr "Jetzt sind %d von %d auf diesem Knoten.\n"
+
+#: src/applications/chat/chat.c:195
+#, c-format
+msgid "'%s' registering handlers %d and %d\n"
+msgstr "'%s' registriert Handler %d und %d\n"
+
+#: src/applications/chat/gnunet-chat.c:82
+msgid "specify nickname"
+msgstr "Spitznamen angeben"
+
+#: src/applications/chat/gnunet-chat.c:87
+msgid "Start GNUnet chat client."
+msgstr "GNUnet chat client starten"
+
+#: src/applications/chat/gnunet-chat.c:149
+#: src/applications/tbench/gnunet-tbench.c:213
+#: src/applications/tracekit/gnunet-tracekit.c:363
+#: src/applications/fs/tools/gnunet-delete.c:142 src/util/port.c:72
+msgid "Could not connect to gnunetd.\n"
+msgstr "Verbindung zu gnunetd konnte nicht hergestellt werden.\n"
+
+#: src/applications/chat/gnunet-chat.c:153
+#, c-format
+msgid "You must specify a nickname (use option '%s').\n"
+msgstr "Sie m�ssen einen Spitznamen angeben (verwenden Sie die Option '%s').\n"
+
+#: src/applications/chat/gnunet-chat.c:179
+msgid "Could not send join message to gnunetd\n"
+msgstr "'join' Nachricht konnte nicht an gnunetd gesendet werden.\n"
+
+#: src/applications/chat/gnunet-chat.c:188
+msgid "Could not send message to gnunetd\n"
+msgstr "Nachricht konnte nicht an gnunetd gesendet werden.\n"
+
+#: src/applications/advertising/advertising.c:156
+#, c-format
+msgid "HELO message from '%s' invalid (signature invalid). Dropping.\n"
+msgstr ""
+"HELO Nachricht von '%s' ist ung�ltig (Signatur ist ung�ltig). Nachricht "
+"wurde verworfen.\n"
+
+#: src/applications/advertising/advertising.c:162
+msgid "HELO message received invalid (expiration time over limit). Dropping.\n"
+msgstr ""
+"Empfangene HELO Nachricht ist ung�ltig (Ablaufzeit �ber Limit). Nachricht "
+"wurde verworfen.\n"
+
+#: src/applications/advertising/advertising.c:171
+#, c-format
+msgid "HELO advertisement for protocol %d received.\n"
+msgstr "HELO Ank�ndigung f�r Protokoll %d empfangen.\n"
+
+#: src/applications/advertising/advertising.c:297
+msgid "Could not send HELOs+PING, ping buffer full.\n"
+msgstr "HELOs+PING konnten nicht gesendet werden, Ping Puffer ist voll.\n"
+
+#: src/applications/advertising/advertising.c:451
+#, c-format
+msgid "Advertising my transport %d to selected peers.\n"
+msgstr "Transport %d wird ausgew�hlten anderen Knoten bekannt gegeben.\n"
+
+#: src/applications/advertising/advertising.c:458
+msgid ""
+"Announcing ourselves pointless: no other peers are known to us so far.\n"
+msgstr ""
+"Bekanntmachung von uns zwecklos: bis jetzt sind uns keine anderen Knoten "
+"bekannt.\n"
+
+#: src/applications/advertising/advertising.c:547
+#, c-format
+msgid "Removing HELO from peer '%s' (expired %ds ago).\n"
+msgstr "HELO von Knoten '%s' wird entfernt (lief vor %ds ab).\n"
+
+#: src/applications/advertising/advertising.c:705
+msgid "# Peer advertisements received"
+msgstr "# Knotenank�ndigungen empfangen"
+
+#: src/applications/advertising/advertising.c:706
+msgid "# Self advertisments transmitted"
+msgstr "# Selbstbekanntmachungen �bertragen"
+
+#: src/applications/advertising/advertising.c:707
+msgid "# Foreign advertisements forwarded"
+msgstr "# Bekanntmachungen von anderen �bertragen"
+
+#: src/applications/advertising/advertising.c:711
+#: src/applications/session/connect.c:674
+#, c-format
+msgid "'%s' registering handler %d (plaintext and ciphertext)\n"
+msgstr "'%s' registriert Handler %d (Plaintext und Ciphertext)\n"
+
+#: src/applications/advertising/advertising.c:730
+msgid "Network advertisements disabled by configuration!\n"
+msgstr "Netzwerkbekanntmachungen wurden per Konfiguration deaktiviert!\n"
+
 #: src/applications/topology_default/topology.c:307
 #, c-format
 msgid "Version mismatch ('%s' vs. '%s'), run gnunet-update!\n"
@@ -1158,6 +1441,27 @@
 "Versionen stimmen nicht �berein ('%s' vs. '%s'), lassen Sie gnunet-update "
 "laufen!\n"
 
+#: src/applications/pingpong/pingpong.c:102
+#: src/applications/pingpong/pingpong.c:156
+#: src/applications/pingpong/pingpong.c:192
+#: src/applications/pingpong/pingpong.c:229
+#, c-format
+msgid "Received malformed '%s' message. Dropping.\n"
+msgstr "Besch�digte '%s' Nachricht empfangen. Nachricht wird verworfen.\n"
+
+#: src/applications/pingpong/pingpong.c:110
+msgid "Received ping for another peer. Dropping.\n"
+msgstr "Ping f�r einen anderen Knoten empfangen. Ping wird verworfen.\n"
+
+#: src/applications/pingpong/pingpong.c:164
+msgid "Received PING not destined for us!\n"
+msgstr "Empfangener PING ist nicht an uns gerichtet!\n"
+
+#: src/applications/pingpong/pingpong.c:396
+#, c-format
+msgid "'%s' registering handlers %d %d (plaintext and ciphertext)\n"
+msgstr "'%s' registriert Handler %d %d (Plaintext und Ciphertext)\n"
+
 #: src/applications/sqstore_sqlite/sqlitetest.c:259
 #: src/applications/sqstore_mysql/mysqltest.c:257
 msgid "Could not initialize libgnunetutil!\n"
@@ -1177,9 +1481,9 @@
 #: src/applications/sqstore_mysql/mysql.c:914
 #: src/applications/sqstore_mysql/mysql.c:924 src/util/symcipher_gcrypt.c:47
 #: src/util/symcipher_gcrypt.c:54 src/util/hostkey_gcrypt.c:56
-#: src/util/hostkey_gcrypt.c:63 src/util/storage.c:621
-#: src/include/gnunet_util.h:967 src/include/gnunet_util.h:974
-#: src/include/gnunet_util.h:976
+#: src/util/hostkey_gcrypt.c:63 src/util/storage.c:613
+#: src/include/gnunet_util.h:973 src/include/gnunet_util.h:980
+#: src/include/gnunet_util.h:982
 #, c-format
 msgid "'%s' failed at %s:%d with error: %s\n"
 msgstr "'%s' schlug bei %s:%d mit dem Fehler %s fehl\n"
@@ -1189,14 +1493,14 @@
 msgid "SQL Database corrupt, ignoring result.\n"
 msgstr "SQL Datenbank besch�digt, Ergebnis wird ignoriert.\n"
 
-#: src/applications/sqstore_sqlite/sqlite.c:404
-#: src/applications/sqstore_sqlite/sqlite.c:598
+#: src/applications/sqstore_sqlite/sqlite.c:405
+#: src/applications/sqstore_sqlite/sqlite.c:599
 msgid "Invalid data in database.  Please verify integrity!\n"
 msgstr ""
 "Es befinden sich ung�ltige Daten in Datenbank. Bitte �berpr�fen Sie die "
 "Integrit�t!\n"
 
-#: src/applications/sqstore_sqlite/sqlite.c:910
+#: src/applications/sqstore_sqlite/sqlite.c:913
 #, c-format
 msgid ""
 "Configuration file must specify directory for storing FS data in section '%"
@@ -1205,31 +1509,10 @@
 "Die Konfigurationsdatei muss in der Sektion '%s' unter '%s' ein Verzeichnis "
 "angeben, in dem FS Daten gespeichert werden.\n"
 
-#: src/applications/sqstore_sqlite/sqlite.c:924
+#: src/applications/sqstore_sqlite/sqlite.c:927
 msgid "Unable to initialize SQLite.\n"
 msgstr "SQLite Datenbank konnte nicht initialisiert werden.\n"
 
-#: src/applications/pingpong/pingpong.c:102
-#: src/applications/pingpong/pingpong.c:156
-#: src/applications/pingpong/pingpong.c:192
-#: src/applications/pingpong/pingpong.c:229
-#, c-format
-msgid "Received malformed '%s' message. Dropping.\n"
-msgstr "Besch�digte '%s' Nachricht empfangen. Nachricht wird verworfen.\n"
-
-#: src/applications/pingpong/pingpong.c:110
-msgid "Received ping for another peer. Dropping.\n"
-msgstr "Ping f�r einen anderen Knoten empfangen. Ping wird verworfen.\n"
-
-#: src/applications/pingpong/pingpong.c:164
-msgid "Received PING not destined for us!\n"
-msgstr "Empfangener PING ist nicht an uns gerichtet!\n"
-
-#: src/applications/pingpong/pingpong.c:396
-#, c-format
-msgid "'%s' registering handlers %d %d (plaintext and ciphertext)\n"
-msgstr "'%s' registriert Handler %d %d (Plaintext und Ciphertext)\n"
-
 #: src/applications/session/connect.c:151
 msgid "Cannot encrypt sessionkey, other peer not known!\n"
 msgstr ""
@@ -1363,7 +1646,7 @@
 msgstr "Die Datenbank konnte '%s' nicht l�schen.\n"
 
 #: src/applications/identity/hostkey.c:98
-#: src/applications/identity/identity.c:861
+#: src/applications/identity/identity.c:865
 #, c-format
 msgid ""
 "Configuration file must specify a directory for GNUnet to store per-peer "
@@ -1400,29 +1683,29 @@
 "Die Datei '%s' im Verzeichnis '%s' entspricht nicht der Namenskonvention. "
 "Datei wurde entfernt.\n"
 
-#: src/applications/identity/identity.c:315
+#: src/applications/identity/identity.c:318
 #, c-format
 msgid "%s '%s' returned no known hosts!\n"
 msgstr "%s '%s' ergab keine bekannten Knoten!\n"
 
-#: src/applications/identity/identity.c:446
-#: src/applications/identity/identity.c:467
+#: src/applications/identity/identity.c:450
+#: src/applications/identity/identity.c:471
 #, c-format
 msgid "Removed file '%s' containing invalid peer advertisement.\n"
 msgstr ""
 "Datei '%s' enthielt eine ung�ltige Knotenbekanntmachung und wurde entfernt.\n"
 
-#: src/applications/identity/identity.c:512
+#: src/applications/identity/identity.c:516
 #, c-format
 msgid "Removed file '%s' containing invalid HELO data.\n"
 msgstr "Datei '%s' enthielt ung�ltige HELO Daten und wurde entfernt.\n"
 
-#: src/applications/identity/identity.c:526
+#: src/applications/identity/identity.c:530
 #, c-format
 msgid "Removed invalid HELO file '%s'\n"
 msgstr "Ung�ltige HELO Datei '%s' wurde entfernt.\n"
 
-#: src/applications/identity/identity.c:856
+#: src/applications/identity/identity.c:860
 #, c-format
 msgid ""
 "Configuration file must specify directory for network identities in section %"
@@ -1631,20 +1914,20 @@
 msgid "Exit register (error: no http response read).\n"
 msgstr "Abbruch der Registrierung (Fehler: keine HTTP Antwort gelesen).\n"
 
-#: src/applications/transport/transport.c:430
-#: src/applications/transport/transport.c:438
+#: src/applications/transport/transport.c:437
+#: src/applications/transport/transport.c:445
 #, c-format
 msgid "No transport of type %d known.\n"
 msgstr "Kein Transport des Typs %d bekannt.\n"
 
-#: src/applications/transport/transport.c:596
+#: src/applications/transport/transport.c:603
 #, c-format
 msgid "Option '%s' not set in configuration in section '%s', setting to %dm.\n"
 msgstr ""
 "Option '%s' ist in der Konfigurationsdatei in der Sektion '%s' nicht "
 "gesetzt, sie wird auf %dm gesetzt.\n"
 
-#: src/applications/transport/transport.c:610
+#: src/applications/transport/transport.c:617
 #, c-format
 msgid ""
 "You should specify at least one transport service under option '%s' in "
@@ -1653,14 +1936,14 @@
 "Sie sollten mindestens einen Transport Dienst unter der Option '%s' in der "
 "Sektion '%s' angegeben.\n"
 
-#: src/applications/transport/transport.c:635
+#: src/applications/transport/transport.c:642
 #, c-format
 msgid "Transport library '%s' did not provide required function '%s%s'.\n"
 msgstr ""
 "Transport Bibliothek '%s' stellt nicht die ben�tigte Funktion '%s%s' zur "
 "Verf�gung.\n"
 
-#: src/applications/transport/transport.c:655
+#: src/applications/transport/transport.c:662
 #, c-format
 msgid "I am peer '%s'.\n"
 msgstr "Ich bin Peer '%s'.\n"
@@ -1700,6 +1983,10 @@
 msgid "Error reading information from gnunetd.\n"
 msgstr "Fehler beim Lesen von Informationen von gnunetd.\n"
 
+#: src/applications/stats/clientapi.c:179
+msgid "Uptime (seconds)"
+msgstr "Laufzeit (Sekunden)"
+
 #: src/applications/stats/statistics.c:206
 #, c-format
 msgid "% of allowed network load (up)"
@@ -1719,10 +2006,6 @@
 msgid "# bytes of noise received"
 msgstr "# Bytes Rauschen empfangen"
 
-#: src/applications/stats/clientapi.c:179
-msgid "Uptime (seconds)"
-msgstr "Laufzeit (Sekunden)"
-
 #: src/applications/tbench/gnunet-tbench.c:95
 msgid "output in gnuplot format"
 msgstr "Ausgabe im gnuplot Format"
@@ -1948,25 +2231,25 @@
 msgid "# p2p trace replies sent"
 msgstr "# p2p Trace-Antworten gesendet"
 
-#: src/applications/gap/gap.c:1853
+#: src/applications/gap/gap.c:1856
 msgid ""
 "Cover traffic requested but traffic service not loaded.  Rejecting request.\n"
 msgstr ""
 "Verdeckender Netzwerkverkehr angefordert, aber der Verkehrsdienst wurde "
 "nicht geladen. Anfrage wird abgelehnt.\n"
 
-#: src/applications/gap/gap.c:1864 src/applications/fs/module/fs.c:667
+#: src/applications/gap/gap.c:1867 src/applications/fs/module/fs.c:667
 msgid "Failed to get traffic stats.\n"
 msgstr "Statistiken �ber den Netzwerkverkehr konnten nicht ermittelt werden.\n"
 
-#: src/applications/gap/gap.c:1870 src/applications/gap/gap.c:1875
-#: src/applications/gap/gap.c:1881
+#: src/applications/gap/gap.c:1873 src/applications/gap/gap.c:1878
+#: src/applications/gap/gap.c:1884
 msgid "Cannot satisfy desired level of anonymity, ignoring request.\n"
 msgstr ""
 "Gew�nschter Grad an Anonymit�t kann nicht erreicht werden, Anfrage wird "
 "ignoriert.\n"
 
-#: src/applications/gap/gap.c:2092
+#: src/applications/gap/gap.c:2095
 msgid ""
 "Traffic service failed to load; gap cannot ensure cover-traffic "
 "availability.\n"
@@ -1974,11 +2257,16 @@
 "Verkehrsdienst konnte nicht geladen werden, GAP kann keinen verdeckenden "
 "Netzwerkverkehr sicherstellen.\n"
 
-#: src/applications/gap/gap.c:2123
+#: src/applications/gap/gap.c:2126
 #, c-format
 msgid "'%s' registering handlers %d %d\n"
 msgstr "'%s' registriert Handler %d %d\n"
 
+#: src/applications/getoption/getoption.c:74
+#, c-format
+msgid "'%s' registering client handler %d\n"
+msgstr "'%s' registriert Client-Handler %d\n"
+
 #: src/applications/fs/tools/gnunet-pseudonym.c:33
 msgid "automate creation of a namespace by starting a collection"
 msgstr ""
@@ -2535,20 +2823,6 @@
 msgid "'%s' failed.  Is '%s' a file?\n"
 msgstr "'%s' schlug fehl. Ist '%s' eine Datei?\n"
 
-#: src/applications/fs/module/fs.c:980
-#, c-format
-msgid ""
-"You must specify a postive number for '%s' in the configuration in section '%"
-"s'.\n"
-msgstr ""
-"Sie m�ssen f�r '%s' in der Sektion '%s' der Konfigurationsdatei eine "
-"positive Zahl angeben.\n"
-
-#: src/applications/fs/module/fs.c:1019
-#, c-format
-msgid "'%s' registering client handlers %d %d %d %d %d %d %d %d %d %d\n"
-msgstr "'%s' registriert Client-Handler %d %d %d %d %d %d %d %d %d %d\n"
-
 #: src/applications/fs/module/ondemand.c:71
 #, c-format
 msgid ""
@@ -2592,10 +2866,20 @@
 "Deindizierter ODB Block '%s' vom Offset %llu fehlt bereits im "
 "Datenspeicher.\n"
 
-#: src/applications/fs/fsui/download.c:192
-msgid "Download aborted."
-msgstr "Download abgebrochen."
+#: src/applications/fs/module/fs.c:980
+#, c-format
+msgid ""
+"You must specify a postive number for '%s' in the configuration in section '%"
+"s'.\n"
+msgstr ""
+"Sie m�ssen f�r '%s' in der Sektion '%s' der Konfigurationsdatei eine "
+"positive Zahl angeben.\n"
 
+#: src/applications/fs/module/fs.c:1019
+#, fuzzy, c-format
+msgid "'%s' registering client handlers %d %d %d %d %d %d %d %d %d\n"
+msgstr "'%s' registriert Client-Handler %d %d %d %d %d %d %d %d %d %d\n"
+
 #: src/applications/fs/fsui/helper.c:67
 msgid "No keywords specified!\n"
 msgstr "Keine Schl�sselw�rter angegeben!\n"
@@ -2615,12 +2899,17 @@
 "Verzeichnis kann nicht ohne die Verwendung von Rekursion hochgeladen "
 "werden.\n"
 
-#: src/applications/fs/fsui/namespace_info.c:518
+#: src/applications/fs/fsui/fsui.c:509
+#, c-format
+msgid "FSUI state file '%s' had syntax error at offset %u.\n"
+msgstr ""
+
+#: src/applications/fs/fsui/namespace_info.c:521
 msgid "Publication interval for periodic publication changed."
 msgstr ""
 "Ver�ffentlichungsintervall f�r periodische Ver�ffentlichung wurde ge�ndert."
 
-#: src/applications/fs/fsui/namespace_info.c:539
+#: src/applications/fs/fsui/namespace_info.c:542
 msgid ""
 "Publishing update for periodically updated content more than a week ahead of "
 "schedule.\n"
@@ -2628,6 +2917,10 @@
 "Ver�ffentlichungsdatum f�r periodisch aktualisierten Inhalt ist mehr als "
 "eine Woche fr�her als geplant.\n"
 
+#: src/applications/fs/fsui/download.c:192
+msgid "Download aborted."
+msgstr "Download abgebrochen."
+
 #: src/applications/fs/fsui/file_info.c:73
 msgid "Collecting file identifiers disabled.\n"
 msgstr "Einsammeln von Dateibezeichnern deaktiviert.\n"
@@ -2636,6 +2929,14 @@
 msgid "Unindex failed.\n"
 msgstr "Deindizierung schlug fehl.\n"
 
+#: src/applications/fs/ecrs/search.c:158
+msgid "CHK URI not allowed for search.\n"
+msgstr "CHK URI ist nicht erlaubt f�r Suchen.\n"
+
+#: src/applications/fs/ecrs/search.c:210
+msgid "LOC URI not allowed for search.\n"
+msgstr "LOC URI ist nicht erlaubt f�r Suchen.\n"
+
 #: src/applications/fs/ecrs/download.c:884
 msgid ""
 "Decrypted content does not match key. This is either a bug or a maliciously "
@@ -2650,20 +2951,12 @@
 msgid "Content '%s' seems to be not available on the network.\n"
 msgstr "Inhalt '%s' scheint im Netzwerk nicht verf�gbar zu sein.\n"
 
-#: src/applications/fs/ecrs/search.c:158
-msgid "CHK URI not allowed for search.\n"
-msgstr "CHK URI ist nicht erlaubt f�r Suchen.\n"
-
-#: src/applications/fs/ecrs/search.c:210
-msgid "LOC URI not allowed for search.\n"
-msgstr "LOC URI ist nicht erlaubt f�r Suchen.\n"
-
-#: src/applications/fs/ecrs/meta.c:745
+#: src/applications/fs/ecrs/meta.c:772
 #, c-format
 msgid "Renaming of file '%s' to '%s' failed: %s\n"
 msgstr "Umbenennen der Datei '%s' zu '%s' fehlgeschlagen: %s\n"
 
-#: src/applications/fs/ecrs/meta.c:751
+#: src/applications/fs/ecrs/meta.c:778
 #, c-format
 msgid "Could not rename file '%s' to '%s': file exists\n"
 msgstr ""
@@ -2704,11 +2997,28 @@
 msgid "Format of file '%s' is invalid.\n"
 msgstr "Format der Datei '%s' ist ung�ltig.\n"
 
-#: src/applications/getoption/getoption.c:74
-#, c-format
-msgid "'%s' registering client handler %d\n"
-msgstr "'%s' registriert Client-Handler %d\n"
+#: src/applications/topology_f2f/topology.c:284
+#, fuzzy, c-format
+msgid ""
+"Need to have list of friends in configuration under '%s' in section '%s'.\n"
+msgstr ""
+"Es sind keine Netzwerkger�te in der Konfigurationsdatei in der Sektion '%s' "
+"unter '%s' definiert!\n"
 
+#: src/applications/topology_f2f/topology.c:299
+#, fuzzy, c-format
+msgid "Failed to read friends list from '%s'\n"
+msgstr "Fehler beim Aktualisieren der Daten des Moduls '%s'\n"
+
+#: src/applications/topology_f2f/topology.c:315
+msgid "Syntax error in topology specification, skipping bytes.\n"
+msgstr ""
+
+#: src/applications/topology_f2f/topology.c:327
+#, fuzzy, c-format
+msgid "Syntax error in topology specification, skipping bytes '%s'.\n"
+msgstr "Syntaxfehler in Konfigurationsdatei '%s' in Zeile %d.\n"
+
 #: src/applications/template/template.c:59
 #, c-format
 msgid "'%s' registering client handler %d and %d\n"
@@ -3115,7 +3425,7 @@
 "Besch�digte Netzwerkangabe in der Konfigurationsdatei in Sektion '%s' f�r "
 "Eintrag '%s': %s\n"
 
-#: src/server/tcpserver.c:789
+#: src/server/tcpserver.c:797
 #, c-format
 msgid "%s failed, message type %d already in use.\n"
 msgstr "%s schlug fehl, Nachrichten Typ %d ist bereits in Verwendung.\n"
@@ -3161,6 +3471,61 @@
 "'%s' aufgerufen wobei Cron Job nicht Warteschlange ist. Er wird hinzugef�gt. "
 "Das ist m�glicherweise nicht, was Sie wollen.\n"
 
+#: src/util/getopt.c:641
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: Option '%s' ist mehrdeutig\n"
+
+#: src/util/getopt.c:665
+#, c-format
+msgid "%s: option `--%s' does not allow an argument\n"
+msgstr "%s: Option '--%s' erlaubt keinen Parameter\n"
+
+#: src/util/getopt.c:670
+#, c-format
+msgid "%s: option `%c%s' does not allow an argument\n"
+msgstr "%s: Option '%c%s' erlaubt keinen Parameter\n"
+
+#: src/util/getopt.c:687 src/util/getopt.c:861
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: Option '%s' ben�tigt einen Parameter\n"
+
+#: src/util/getopt.c:717
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: unbekannte Option '--%s'\n"
+
+#: src/util/getopt.c:721
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: unbekannte Option '%c%s'\n"
+
+#: src/util/getopt.c:747
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: unerlaubte Option -- %c\n"
+
+#: src/util/getopt.c:750
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: ung�ltige Option -- %c\n"
+
+#: src/util/getopt.c:780 src/util/getopt.c:910
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: Option ben�tigt einen Parameter -- %c\n"
+
+#: src/util/getopt.c:827
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: Option '-W %s' ist mehrdeutig\n"
+
+#: src/util/getopt.c:845
+#, c-format
+msgid "%s: option `-W %s' does not allow an argument\n"
+msgstr "%s: Option '-W %s' erlaubt keinen Parameter\n"
+
 #: src/util/port.c:37
 #, c-format
 msgid ""
@@ -3224,61 +3589,6 @@
 msgid "Cannot query the CPU usage (Win 9x)\n"
 msgstr "CPU Nutzung kann nicht ermittelt werden (Win 9x).\n"
 
-#: src/util/getopt.c:641
-#, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s: Option '%s' ist mehrdeutig\n"
-
-#: src/util/getopt.c:665
-#, c-format
-msgid "%s: option `--%s' does not allow an argument\n"
-msgstr "%s: Option '--%s' erlaubt keinen Parameter\n"
-
-#: src/util/getopt.c:670
-#, c-format
-msgid "%s: option `%c%s' does not allow an argument\n"
-msgstr "%s: Option '%c%s' erlaubt keinen Parameter\n"
-
-#: src/util/getopt.c:687 src/util/getopt.c:861
-#, c-format
-msgid "%s: option `%s' requires an argument\n"
-msgstr "%s: Option '%s' ben�tigt einen Parameter\n"
-
-#: src/util/getopt.c:717
-#, c-format
-msgid "%s: unrecognized option `--%s'\n"
-msgstr "%s: unbekannte Option '--%s'\n"
-
-#: src/util/getopt.c:721
-#, c-format
-msgid "%s: unrecognized option `%c%s'\n"
-msgstr "%s: unbekannte Option '%c%s'\n"
-
-#: src/util/getopt.c:747
-#, c-format
-msgid "%s: illegal option -- %c\n"
-msgstr "%s: unerlaubte Option -- %c\n"
-
-#: src/util/getopt.c:750
-#, c-format
-msgid "%s: invalid option -- %c\n"
-msgstr "%s: ung�ltige Option -- %c\n"
-
-#: src/util/getopt.c:780 src/util/getopt.c:910
-#, c-format
-msgid "%s: option requires an argument -- %c\n"
-msgstr "%s: Option ben�tigt einen Parameter -- %c\n"
-
-#: src/util/getopt.c:827
-#, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
-msgstr "%s: Option '-W %s' ist mehrdeutig\n"
-
-#: src/util/getopt.c:845
-#, c-format
-msgid "%s: option `-W %s' does not allow an argument\n"
-msgstr "%s: Option '-W %s' erlaubt keinen Parameter\n"
-
 #: src/util/ipcheck.c:100
 #, c-format
 msgid "Invalid format for IP: '%s'\n"
@@ -3344,7 +3654,7 @@
 msgid "'%s' failed, reply invalid!\n"
 msgstr "'%s' fehlgeschlagen, Antwort ist ung�ltig!\n"
 
-#: src/util/initialize.c:162
+#: src/util/initialize.c:163
 msgid "Shutdown complete.\n"
 msgstr "GNUnet wurde erfolgreich heruntergefahren.\n"
 
@@ -3397,7 +3707,7 @@
 msgid "Syntax error in configuration file '%s' at line %d.\n"
 msgstr "Syntaxfehler in Konfigurationsdatei '%s' in Zeile %d.\n"
 
-#: src/util/configuration.c:444
+#: src/util/configuration.c:464
 #, c-format
 msgid ""
 "Configuration file '%s' not found. I will try to create the default "
@@ -3406,7 +3716,7 @@
 "Konfigurationsdatei '%s' wurde nicht gefunden. Es wird versucht, an dieser "
 "Stelle eine Standardkonfigurationsdatei anzulegen.\n"
 
-#: src/util/configuration.c:460
+#: src/util/configuration.c:481
 #, c-format
 msgid "Cannot open configuration file '%s'\n"
 msgstr "Konfigurationsdatei '%s' konnte nicht ge�ffnet werden.\n"
@@ -3561,37 +3871,37 @@
 "IP(v6) dieses Hosts konnte nicht ermittelt werden. Bitte geben Sie die IP in "
 "der Konfigurationsdatei an.\n"
 
-#: src/include/gnunet_util.h:138
+#: src/include/gnunet_util.h:140
 msgid "print this help"
 msgstr "Gibt diese Hilfe aus"
 
-#: src/include/gnunet_util.h:141
+#: src/include/gnunet_util.h:143
 msgid "set verbosity to LEVEL"
 msgstr "Umfang der Meldungen auf LEVEL setzen"
 
-#: src/include/gnunet_util.h:144
+#: src/include/gnunet_util.h:146
 msgid "use configuration file FILENAME"
 msgstr "Konfigurationsdatei FILENAME verwenden"
 
-#: src/include/gnunet_util.h:147
+#: src/include/gnunet_util.h:149
 msgid "specify host on which gnunetd is running"
 msgstr "Gibt an, auf welchem Host gnunetd l�uft"
 
-#: src/include/gnunet_util.h:150
+#: src/include/gnunet_util.h:152
 msgid "print the version number"
 msgstr "Versionsnummer ausgeben"
 
-#: src/include/gnunet_util.h:153
+#: src/include/gnunet_util.h:155
 msgid "be verbose"
 msgstr "umfangreiche Meldungen ausgeben"
 
-#: src/include/gnunet_util.h:585 src/include/gnunet_util.h:587
+#: src/include/gnunet_util.h:582 src/include/gnunet_util.h:584
 #, c-format
 msgid "Assertion failed at %s:%d.\n"
 msgstr "Absicherung fehlgeschlagen bei %s:%d.\n"
 
-#: src/include/gnunet_util.h:983 src/include/gnunet_util.h:985
-#: src/include/gnunet_util.h:992
+#: src/include/gnunet_util.h:989 src/include/gnunet_util.h:991
+#: src/include/gnunet_util.h:998
 #, c-format
 msgid "'%s' failed on file '%s' at %s:%d with error: %s\n"
 msgstr "'%s' schlug bei Datei '%s' fehl. Ort: %s:%d. Fehler: %s\n"

Modified: GNUnet/po/rw.po
===================================================================
--- GNUnet/po/rw.po     2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet/po/rw.po     2005-05-31 19:27:19 UTC (rev 833)
@@ -16,7 +16,7 @@
 msgstr ""
 "Project-Id-Version: GNUnet 0.7.0pre0\n"
 "Report-Msgid-Bugs-To: address@hidden"
-"POT-Creation-Date: 2005-04-22 22:03+0200\n"
+"POT-Creation-Date: 2005-05-30 22:55-0500\n"
 "PO-Revision-Date: 2005-04-04 10:55-0700\n"
 "Last-Translator: Steven Michael Murphy <address@hidden>\n"
 "Language-Team: Kinyarwanda <address@hidden>\n"
@@ -62,12 +62,12 @@
 msgid "MTU for '%s' is probably too low (fragmentation not implemented!)\n"
 msgstr "kugirango ni Byo hasi OYA"
 
-#: src/transports/http.c:578
+#: src/transports/http.c:581
 #, fuzzy
 msgid "Expected welcome on http connection, got garbage. Closing connection.\n"
 msgstr "Itegerejwe Urakaza neza ku HTTP Ukwihuza Ukwihuza"
 
-#: src/transports/http.c:794 src/transports/tcp.c:669
+#: src/transports/http.c:797 src/transports/tcp.c:669
 #, fuzzy, c-format
 msgid "Rejected blacklisted connection from %u.%u.%u.%u.\n"
 msgstr ""
@@ -94,12 +94,12 @@
 "X- Generator: KBabel 1. 0\n"
 "."
 
-#: src/transports/http.c:1068 src/transports/tcp.c:1026
+#: src/transports/http.c:1071 src/transports/tcp.c:1026
 #, fuzzy
 msgid "Could not determine my public IP address.\n"
 msgstr "OYA Rusange Aderesi"
 
-#: src/transports/http.c:1140 src/transports/tcp.c:1092 src/util/tcpio.c:165
+#: src/transports/http.c:1143 src/transports/tcp.c:1092 src/util/tcpio.c:165
 #: src/util/tcpio.c:195
 #, fuzzy, c-format
 msgid "Cannot connect to %u.%u.%u.%u:%u: %s\n"
@@ -120,13 +120,13 @@
 "X- Generator: KBabel 1. 0\n"
 "."
 
-#: src/transports/http.c:1288
+#: src/transports/http.c:1291
 #, fuzzy, c-format
 msgid ""
 "Could not bind the HTTP listener to port %d. No transport service started.\n"
 msgstr "OYA i Kuri Umuyoboro Serivisi"
 
-#: src/transports/http.c:1410 src/applications/testbed/testbed.c:1056
+#: src/transports/http.c:1413 src/applications/testbed/testbed.c:1056
 #, fuzzy, c-format
 msgid "Could not resolve name of HTTP proxy '%s'.\n"
 msgstr "OYA Izina: Bya Porogisi"
@@ -314,6 +314,20 @@
 msgid "'%s': unknown service: %s\n"
 msgstr "'%s':Kitazwi Serivisi"
 
+#: src/conf/gnunet-setup.c:33
+msgid ""
+"USAGE: gnunet-setup MODULE\n"
+"\n"
+"MODULE\n"
+" config\t\ttext-based configuration\n"
+" menuconfig\ttext-based menu\n"
+" xconfig\tX configuration\n"
+" gconfig\tGTK configuration\n"
+" wizard-curses\tBasic text-based graphical configuration\n"
+" wizard-gtk\tBasic GTK configuration\n"
+"\n"
+msgstr ""
+
 #: src/conf/gnunet-win-tool.c:107
 #, c-format
 msgid "GNUnet service installed successfully.\n"
@@ -325,12 +339,11 @@
 msgstr ""
 
 #: src/conf/gnunet-win-tool.c:114 src/conf/gnunet-win-tool.c:141
-#: src/conf/wizard_callbacks.c:165 src/conf/wizard_callbacks.c:209
 #, c-format
 msgid "Error: can't open Service Control Manager: %s\n"
 msgstr ""
 
-#: src/conf/gnunet-win-tool.c:119 src/conf/wizard_callbacks.c:172
+#: src/conf/gnunet-win-tool.c:119
 #, c-format
 msgid "Error: can't create service: %s\n"
 msgstr ""
@@ -526,45 +539,14 @@
 msgid "Sorry, no help available for this option yet."
 msgstr ""
 
-#: src/conf/gconf_support.c:90 src/conf/gconf_support.c:114
-#, c-format
-msgid "Couldn't find pixmap file: %s"
-msgstr ""
-
-#: src/conf/wizard_callbacks.c:168 src/conf/wizard_callbacks.c:175
-#: src/conf/wizard_callbacks.c:178 src/conf/wizard_callbacks.c:192
-#: src/conf/wizard_callbacks.c:212 src/conf/wizard_callbacks.c:219
-#: src/conf/wizard_callbacks.c:226 src/conf/wizard_callbacks.c:229
-#: src/conf/wizard_interface.c:1075
-msgid "Error"
-msgstr ""
-
-#: src/conf/wizard_callbacks.c:178 src/conf/wizard_callbacks.c:229
-#, fuzzy
-msgid "Unknown error"
-msgstr "Verisiyo"
-
-#: src/conf/wizard_callbacks.c:191
-msgid "Cannot write to the regisitry"
-msgstr ""
-
-#: src/conf/wizard_callbacks.c:216
-#, c-format
-msgid "Error: can't access the service: %s\n"
-msgstr ""
-
-#: src/conf/wizard_callbacks.c:223
-#, c-format
-msgid "Error: can't delete the service: %s\n"
-msgstr ""
-
 #: src/conf/wizard_interface.c:54 src/conf/wizard_interface.c:198
 #: src/conf/wizard_interface.c:461 src/conf/wizard_interface.c:783
+#: src/conf/wizard_interface.c:1164
 #, fuzzy
 msgid "GNUnet configuration assistant"
 msgstr "A bushyinguro"
 
-#: src/conf/wizard_interface.c:77
+#: src/conf/wizard_interface.c:77 src/conf/wizard_curs.c:93
 msgid ""
 "Welcome to GNUnet!\n"
 "\n"
@@ -582,12 +564,13 @@
 msgstr ""
 
 #: src/conf/wizard_interface.c:106 src/conf/wizard_interface.c:332
-#: src/conf/wizard_interface.c:651
+#: src/conf/wizard_interface.c:651 src/conf/wizard_interface.c:1286
 msgid "Next"
 msgstr ""
 
 #: src/conf/wizard_interface.c:127 src/conf/wizard_interface.c:353
 #: src/conf/wizard_interface.c:672 src/conf/wizard_interface.c:929
+#: src/conf/wizard_interface.c:1307
 msgid "Cancel"
 msgstr "Kureka"
 
@@ -631,7 +614,7 @@
 msgstr ""
 
 #: src/conf/wizard_interface.c:311 src/conf/wizard_interface.c:630
-#: src/conf/wizard_interface.c:887
+#: src/conf/wizard_interface.c:887 src/conf/wizard_interface.c:1265
 msgid "Back"
 msgstr ""
 
@@ -718,7 +701,7 @@
 msgid "Open the enhanced configurator"
 msgstr "A bushyinguro"
 
-#: src/conf/wizard_interface.c:861
+#: src/conf/wizard_interface.c:861 src/conf/wizard_interface.c:1239
 msgid "Other settings"
 msgstr ""
 
@@ -745,6 +728,14 @@
 msgid "No"
 msgstr "Oya."
 
+#: src/conf/wizard_interface.c:1075 src/conf/wizard_util.c:165
+#: src/conf/wizard_util.c:173 src/conf/wizard_util.c:176
+#: src/conf/wizard_util.c:190 src/conf/wizard_util.c:218
+#: src/conf/wizard_util.c:224 src/conf/wizard_util.c:359
+#: src/conf/wizard_util.c:377
+msgid "Error"
+msgstr ""
+
 #: src/conf/wizard_interface.c:1092
 msgid "Unable to save configuration!"
 msgstr ""
@@ -753,146 +744,322 @@
 msgid "OK"
 msgstr ""
 
-#: src/applications/chat/chat.c:87
-#, fuzzy
-msgid "Message received from peer is invalid.\n"
-msgstr "BYAKIRIWE Bivuye ni Sibyo"
+#: src/conf/wizard_interface.c:1195
+msgid ""
+"Define the user and the group owning the GNUnet service here.\n"
+"\n"
+"For security reasons, it is a good idea to let this setup create a new user "
+"account and a new group under which the GNUnet service is started at system "
+"startup.\n"
+"You can also specify existing ones.\n"
+"In any case, you should check its permissions to critical files on your "
+"system."
+msgstr ""
 
-#: src/applications/chat/chat.c:133
-#, fuzzy
-msgid "Message received from client is invalid\n"
-msgstr "BYAKIRIWE Bivuye Umukiriya ni"
+#: src/conf/wizard_interface.c:1209
+msgid "Group:"
+msgstr ""
 
-#: src/applications/chat/chat.c:155
-#, fuzzy
-msgid "Maximum number of chat clients reached.\n"
-msgstr "Umubare Bya"
+#: src/conf/wizard_interface.c:1231
+msgid "User account:"
+msgstr ""
 
-#: src/applications/chat/chat.c:159
-#, fuzzy, c-format
-msgid "Now %d of %d chat clients at this node.\n"
-msgstr "Bya ku iyi"
-
-#: src/applications/chat/chat.c:195
+#: src/conf/gconf_support.c:90 src/conf/gconf_support.c:114
 #, c-format
-msgid "'%s' registering handlers %d and %d\n"
+msgid "Couldn't find pixmap file: %s"
 msgstr ""
 
-#: src/applications/chat/gnunet-chat.c:82
+#: src/conf/wizard_curs.c:92 src/conf/wizard_curs.c:106
+#: src/conf/wizard_curs.c:167 src/conf/wizard_curs.c:194
+#: src/conf/wizard_curs.c:219 src/conf/wizard_curs.c:251
+#: src/conf/wizard_curs.c:276 src/conf/wizard_curs.c:307
+#: src/conf/wizard_curs.c:329 src/conf/wizard_curs.c:357
+#: src/conf/wizard_curs.c:379 src/conf/wizard_curs.c:401
+#: src/conf/wizard_curs.c:428 src/conf/wizard_curs.c:458
+#: src/conf/wizard_curs.c:486
 #, fuzzy
-msgid "specify nickname"
-msgstr "Irihimbano"
+msgid "GNUnet configuration"
+msgstr "A bushyinguro"
 
-#: src/applications/chat/gnunet-chat.c:87
+#: src/conf/wizard_curs.c:107
+msgid ""
+"Choose the network interface that connects your computer to the internet "
+"from the list below."
+msgstr ""
+
+# sfx2/source\appl\newhelp.src:STR_HELP_WINDOW_TITLE.text
+#: src/conf/wizard_curs.c:113 src/conf/wizard_curs.c:173
+#: src/conf/wizard_curs.c:224 src/conf/wizard_curs.c:256
+#: src/conf/wizard_curs.c:312
 #, fuzzy
-msgid "Start GNUnet chat client."
-msgstr "Gutangira Umukiriya"
+msgid "Help"
+msgstr "/Kugoboka"
 
-#: src/applications/chat/gnunet-chat.c:93
-#: src/applications/dht/tools/dht-query.c:99
-#: src/applications/dht/tools/dht-join.c:108
-#: src/applications/testbed/gnunet-testbed.c:125
-#: src/applications/testbed/gnunet-testbed.c:542
-#: src/applications/stats/gnunet-stats.c:143
-#: src/applications/tbench/gnunet-tbench.c:189
-#: src/applications/tracekit/gnunet-tracekit.c:153
-#: src/applications/fs/tools/gnunet-pseudonym.c:192
-#: src/applications/fs/tools/gnunet-delete.c:111
-#: src/applications/fs/tools/gnunet-directory.c:177
-#: src/applications/fs/tools/gnunet-insert.c:467
-#: src/applications/fs/tools/gnunet-search.c:210
-#: src/applications/fs/tools/gnunet-download.c:125
-#: src/applications/fs/tools/gnunet-unindex.c:139
-#: src/applications/template/gnunet-template.c:87
-#: src/server/gnunet-update.c:129 src/server/startup.c:512
-#: src/server/gnunet-transport-check.c:510 src/server/gnunet-peer-info.c:107
-#, fuzzy, c-format
-msgid "Use --help to get a list of options.\n"
-msgstr "Ifashayobora Kuri Kubona a Urutonde Bya Amahitamo"
+#: src/conf/wizard_curs.c:113
+msgid ""
+"The \"Network interface\" is the device that connects your computer to the "
+"internet. This is usually a modem, an ISDN card or a network card in case "
+"you are using DSL."
+msgstr ""
 
-#: src/applications/chat/gnunet-chat.c:149
-#: src/applications/tbench/gnunet-tbench.c:213
-#: src/applications/tracekit/gnunet-tracekit.c:363
-#: src/applications/fs/tools/gnunet-delete.c:142 src/util/port.c:72
-#, fuzzy
-msgid "Could not connect to gnunetd.\n"
-msgstr "OYA Kwihuza Kuri"
+#: src/conf/wizard_curs.c:167
+msgid ""
+"What is this computer's public IP adress or hostname?\n"
+"\n"
+"If in doubt, leave this empty."
+msgstr ""
 
-#: src/applications/chat/gnunet-chat.c:153
-#, fuzzy, c-format
-msgid "You must specify a nickname (use option '%s').\n"
-msgstr "a Irihimbano Gukoresha Ihitamo"
+#: src/conf/wizard_curs.c:173
+msgid ""
+"If your provider always assigns the same IP-Address to you (a \"static\" IP-"
+"Address), enter it into the \"IP-Address\" field. If your IP-Address changes "
+"every now and then (\"dynamic\" IP-Address) but there's a hostname that "
+"always points to your actual IP-Address (\"Dynamic DNS\"), you can also "
+"enter it here.\n"
+"If in doubt, leave the field empty. GNUnet will then try to determine your "
+"IP-Address."
+msgstr ""
 
-#: src/applications/chat/gnunet-chat.c:179
-#, fuzzy
-msgid "Could not send join message to gnunetd\n"
-msgstr "OYA Kohereza Ubutumwa Kuri"
+#: src/conf/wizard_curs.c:194
+msgid ""
+"Is this machine behind NAT?\n"
+"\n"
+"If you are connected to the internet through another computer doing SNAT, a "
+"router or a \"hardware firewall\" and other computers on the internet cannot "
+"connect to this computer, say \"yes\" here. Answer \"no\" on direct "
+"connections through modems, ISDN cards and DNAT (also known as \"port "
+"forwarding\")."
+msgstr ""
 
-#: src/applications/chat/gnunet-chat.c:188
-#, fuzzy
-msgid "Could not send message to gnunetd\n"
-msgstr "OYA Kohereza Ubutumwa Kuri"
+#: src/conf/wizard_curs.c:219
+msgid "How much upstream (Bytes/s) may be used?"
+msgstr ""
 
-#: src/applications/advertising/advertising.c:156
-#, fuzzy, c-format
-msgid "HELO message from '%s' invalid (signature invalid). Dropping.\n"
-msgstr "Ubutumwa Bivuye Sibyo Isinya Sibyo"
+#: src/conf/wizard_curs.c:224
+msgid ""
+"You can limit GNUnet's ressource usage here.\n"
+"\n"
+"The \"upstream\" is the data channel through which data is *sent* to the "
+"internet. The limit is either the total maximum for this computer or how "
+"much GNUnet itself is allowed to use. You can specify that later. If you "
+"have a flatrate, you can set it to the maximum speed of your internet "
+"connection."
+msgstr ""
 
-#: src/applications/advertising/advertising.c:162
-#, fuzzy
-msgid "HELO message received invalid (expiration time over limit). Dropping.\n"
-msgstr "Ubutumwa BYAKIRIWE Sibyo Igihe KURI"
+#: src/conf/wizard_curs.c:251
+msgid "How much downstream (Bytes/s) may be used?"
+msgstr ""
 
-#: src/applications/advertising/advertising.c:171
-#, fuzzy, c-format
-msgid "HELO advertisement for protocol %d received.\n"
-msgstr "kugirango Porotokole BYAKIRIWE"
+#: src/conf/wizard_curs.c:256
+msgid ""
+"You can limit GNUnet's ressource usage here.\n"
+"\n"
+"The \"downstream\" is the data channel through which data is *received* from "
+"the internet. The limit is either the total maximum for this computer or how "
+"much GNUnet itself is allowed to use. You can specify that later. If you "
+"have a flatrate you can set it to the maximum speed of your internet "
+"connection."
+msgstr ""
 
-#: src/applications/advertising/advertising.c:297
-#, fuzzy
-msgid "Could not send HELOs+PING, ping buffer full.\n"
-msgstr "OYA Kohereza"
+#: src/conf/wizard_curs.c:276
+msgid ""
+"Share denoted bandwidth with other applications?\n"
+"\n"
+"Say \"yes\" here, if you don't want other network traffic to interfere with "
+"GNUnet's operation, but still wish to constrain GNUnet's bandwidth usage to "
+"values entered in the previous steps, or if you can't reliably measure the "
+"maximum capabilities of your connection. \"No\" can be very useful if other "
+"applications are causing a lot of traffic on your LAN.  In this case, you do "
+"not want to limit the traffic that GNUnet can inflict on your internet "
+"connection whenever your high-speed LAN gets used (e.g. by NFS)."
+msgstr ""
 
-#: src/applications/advertising/advertising.c:449
-#, fuzzy, c-format
-msgid "Advertising my transport %d to selected peers.\n"
-msgstr "Kuri Byahiswemo"
+#: src/conf/wizard_curs.c:307
+msgid "How much CPU (in %) may be used?"
+msgstr ""
 
-#: src/applications/advertising/advertising.c:456
+#: src/conf/wizard_curs.c:312
+msgid ""
+"You can limit GNUnet's ressource usage here.\n"
+"\n"
+"This is the percentage of processor time GNUnet is allowed to use."
+msgstr ""
+
+#: src/conf/wizard_curs.c:329
+msgid ""
+"Store migrated content?\n"
+"\n"
+"GNUnet is able to store data from other peers in your datastore. This is "
+"useful if an adversary has access to your inserted content and you need to "
+"deny that the content is yours. With \"content migration\" on, the content "
+"could have \"migrated\" over the internet to your node without your "
+"knowledge.\n"
+"It also helps to spread popular content over different peers to enhance "
+"availability."
+msgstr ""
+
+#: src/conf/wizard_curs.c:357
+msgid ""
+"What's the maximum datastore size in MB?\n"
+"\n"
+"The GNUnet datastore contains all data that GNUnet generates (index data, "
+"inserted and migrated content)."
+msgstr ""
+
+#: src/conf/wizard_curs.c:379
+msgid ""
+"Do you want to launch GNUnet as a system service?\n"
+"\n"
+"If you say \"yes\" here, the GNUnet background process will be automatically "
+"started when you turn on your computer. If you say \"no\" here, you have to "
+"launch GNUnet yourself each time you want to use it."
+msgstr ""
+
+#: src/conf/wizard_curs.c:402
+msgid ""
+"Define the user owning the GNUnet service.\n"
+"\n"
+"For security reasons, it is a good idea to let this setup create a new user "
+"account under which the GNUnet service is started at system startup.\n"
+"\n"
+"You can also specify an already existant user account here.\n"
+"\n"
+"In any case, you should check its permissions to critical files on your "
+"system.\n"
+"\n"
+"GNUnet user:"
+msgstr ""
+
+#: src/conf/wizard_curs.c:429
+msgid ""
+"Define the group owning the GNUnet service.\n"
+"\n"
+"For security reasons, it is a good idea to let this setup create a new group "
+"for the chosen user account.\n"
+"\n"
+"You can also specify a already existant group here.\n"
+"\n"
+"Only members of this group will be allowed to start and stop the the GNUnet "
+"server and have access to GNUnet server data.\n"
+"\n"
+"GNUnet group:"
+msgstr ""
+
+#: src/conf/wizard_curs.c:458
+msgid ""
+"If you are an experienced user, you may want to tweak your GNUnet "
+"installation using the enhanced configurator.\n"
+"\n"
+"Do you want to start it after saving your configuration?"
+msgstr ""
+
+#: src/conf/wizard_curs.c:487
 #, fuzzy
 msgid ""
-"Announcing ourselves pointless: no other peers are known to us so far.\n"
-msgstr "Oya Ikindi Kuri RW"
+"Cannot save configuration.\n"
+"\n"
+"Try again?"
+msgstr "Gufungura Iboneza IDOSIYE"
 
-#: src/applications/advertising/advertising.c:541
-#, fuzzy, c-format
-msgid "Removing HELO from peer '%s' (expired %ds ago).\n"
-msgstr "Bivuye Byarengeje igihe"
+#: src/conf/wizard_util.c:162
+#, c-format
+msgid "Error: can't open Service Control Manager: %s (%i)\n"
+msgstr ""
 
-#: src/applications/advertising/advertising.c:699
+#: src/conf/wizard_util.c:170
+#, c-format
+msgid "Error: can't create service: %s (#%i)\n"
+msgstr ""
+
+#: src/conf/wizard_util.c:176 src/conf/wizard_util.c:218
 #, fuzzy
-msgid "# Peer advertisements received"
-msgstr "#BYAKIRIWE"
+msgid "Unknown error"
+msgstr "Verisiyo"
 
-#: src/applications/advertising/advertising.c:700
-msgid "# Self advertisments transmitted"
+#: src/conf/wizard_util.c:189
+msgid "Cannot write to the regisitry"
 msgstr ""
 
-#: src/applications/advertising/advertising.c:701
-msgid "# Foreign advertisements forwarded"
+#: src/conf/wizard_util.c:206
+msgid "Can't open Service Control Manager"
 msgstr ""
 
-#: src/applications/advertising/advertising.c:705
-#: src/applications/session/connect.c:674
-#, c-format
-msgid "'%s' registering handler %d (plaintext and ciphertext)\n"
+#: src/conf/wizard_util.c:210
+msgid "Can't access the service"
 msgstr ""
 
-#: src/applications/advertising/advertising.c:724
+#: src/conf/wizard_util.c:214
+msgid "Can't delete the service"
+msgstr ""
+
+#: src/conf/wizard_util.c:358
+msgid "This version of Windows does not support multiple users."
+msgstr ""
+
+#: src/conf/wizard_util.c:362
 #, fuzzy
-msgid "Network advertisements disabled by configuration!\n"
-msgstr "Yahagaritswe ku Iboneza"
+msgid "Error creating user"
+msgstr "Ivugurura Verisiyo"
 
+#: src/conf/wizard_util.c:365
+msgid "Error accessing local security policy"
+msgstr ""
+
+#: src/conf/wizard_util.c:368
+msgid "Error granting service right to user"
+msgstr ""
+
+#: src/conf/wizard_util.c:371
+msgid "Unknown error while creating a new user"
+msgstr ""
+
+#: src/applications/dht/tools/dhttest2.c:51
+#: src/applications/session/sessiontest.c:49
+#: src/applications/stats/statistics.c:212
+#: src/applications/tbench/tbenchtest.c:113 src/applications/gap/gaptest.c:50
+#, fuzzy
+msgid "# of connected peers"
+msgstr "#Bya"
+
+#: src/applications/dht/tools/dhttest2.c:94
+#: src/applications/dht/tools/dhttest2.c:109
+#: src/applications/dht/tools/dhttest2.c:142
+#: src/applications/dht/tools/dhttest2.c:157
+#: src/applications/session/sessiontest.c:84
+#: src/applications/session/sessiontest.c:99
+#: src/applications/session/sessiontest.c:132
+#: src/applications/session/sessiontest.c:147
+#: src/applications/tbench/tbenchtest.c:173
+#: src/applications/tbench/tbenchtest.c:188
+#: src/applications/tbench/tbenchtest.c:221
+#: src/applications/tbench/tbenchtest.c:236 src/applications/gap/gaptest.c:276
+#: src/applications/gap/gaptest.c:291 src/applications/gap/gaptest.c:324
+#: src/applications/gap/gaptest.c:339 src/applications/fs/fsui/fsuitest.c:128
+#: src/applications/fs/fsui/searchtest.c:128
+#: src/applications/fs/fsui/fsuitest2.c:69
+#: src/applications/fs/fsui/downloadtest.c:138
+#: src/applications/fs/lib/fslibtest.c:239
+#: src/applications/fs/ecrs/searchtest.c:110
+#: src/applications/fs/ecrs/namespacetest.c:117
+#: src/applications/fs/ecrs/ecrstest.c:271
+#, fuzzy, c-format
+msgid "'%s' failed: %s\n"
+msgstr "'%s'%sByanze"
+
+#: src/applications/dht/tools/dhttest2.c:177
+#: src/applications/session/sessiontest.c:163
+#: src/applications/tbench/tbenchtest.c:252 src/applications/gap/gaptest.c:358
+#, c-format
+msgid "Waiting for gnunetd to start (%u iterations left)...\n"
+msgstr ""
+
+#: src/applications/dht/tools/dhttest2.c:189
+#: src/applications/session/sessiontest.c:178
+#: src/applications/tbench/tbenchtest.c:128 src/applications/gap/gaptest.c:370
+#, c-format
+msgid "Waiting for peers to connect (%u iterations left)...\n"
+msgstr ""
+
 #: src/applications/dht/tools/dht-query.c:39
 #, fuzzy
 msgid "query table called NAME"
@@ -934,6 +1101,28 @@
 msgid "You must pass a number to the '%s' option.\n"
 msgstr "a Umubare Kuri i Ihitamo"
 
+#: src/applications/dht/tools/dht-query.c:99
+#: src/applications/dht/tools/dht-join.c:108
+#: src/applications/chat/gnunet-chat.c:93
+#: src/applications/testbed/gnunet-testbed.c:125
+#: src/applications/testbed/gnunet-testbed.c:542
+#: src/applications/stats/gnunet-stats.c:143
+#: src/applications/tbench/gnunet-tbench.c:189
+#: src/applications/tracekit/gnunet-tracekit.c:153
+#: src/applications/fs/tools/gnunet-pseudonym.c:192
+#: src/applications/fs/tools/gnunet-delete.c:111
+#: src/applications/fs/tools/gnunet-directory.c:177
+#: src/applications/fs/tools/gnunet-insert.c:467
+#: src/applications/fs/tools/gnunet-search.c:210
+#: src/applications/fs/tools/gnunet-download.c:125
+#: src/applications/fs/tools/gnunet-unindex.c:139
+#: src/applications/template/gnunet-template.c:87
+#: src/server/gnunet-update.c:129 src/server/startup.c:512
+#: src/server/gnunet-transport-check.c:510 src/server/gnunet-peer-info.c:107
+#, fuzzy, c-format
+msgid "Use --help to get a list of options.\n"
+msgstr "Ifashayobora Kuri Kubona a Urutonde Bya Amahitamo"
+
 #: src/applications/dht/tools/dht-query.c:106
 #, fuzzy
 msgid "No commands specified.\n"
@@ -1085,50 +1274,6 @@
 msgid "Error leaving DHT.\n"
 msgstr ""
 
-#: src/applications/dht/tools/dhttest2.c:51
-#: src/applications/session/sessiontest.c:49
-#: src/applications/stats/statistics.c:212
-#: src/applications/tbench/tbenchtest.c:113 src/applications/gap/gaptest.c:50
-#, fuzzy
-msgid "# of connected peers"
-msgstr "#Bya"
-
-#: src/applications/dht/tools/dhttest2.c:94
-#: src/applications/dht/tools/dhttest2.c:109
-#: src/applications/dht/tools/dhttest2.c:142
-#: src/applications/dht/tools/dhttest2.c:157
-#: src/applications/session/sessiontest.c:84
-#: src/applications/session/sessiontest.c:99
-#: src/applications/session/sessiontest.c:132
-#: src/applications/session/sessiontest.c:147
-#: src/applications/tbench/tbenchtest.c:173
-#: src/applications/tbench/tbenchtest.c:188
-#: src/applications/tbench/tbenchtest.c:221
-#: src/applications/tbench/tbenchtest.c:236 src/applications/gap/gaptest.c:276
-#: src/applications/gap/gaptest.c:291 src/applications/gap/gaptest.c:324
-#: src/applications/gap/gaptest.c:339 src/applications/fs/fsui/fsuitest.c:128
-#: src/applications/fs/lib/fslibtest.c:239
-#: src/applications/fs/ecrs/ecrstest.c:271
-#: src/applications/fs/ecrs/searchtest.c:110
-#: src/applications/fs/ecrs/namespacetest.c:117
-#, fuzzy, c-format
-msgid "'%s' failed: %s\n"
-msgstr "'%s'%sByanze"
-
-#: src/applications/dht/tools/dhttest2.c:177
-#: src/applications/session/sessiontest.c:163
-#: src/applications/tbench/tbenchtest.c:252 src/applications/gap/gaptest.c:358
-#, c-format
-msgid "Waiting for gnunetd to start (%u iterations left)...\n"
-msgstr ""
-
-#: src/applications/dht/tools/dhttest2.c:189
-#: src/applications/session/sessiontest.c:178
-#: src/applications/tbench/tbenchtest.c:128 src/applications/gap/gaptest.c:370
-#, c-format
-msgid "Waiting for peers to connect (%u iterations left)...\n"
-msgstr ""
-
 #: src/applications/dht/module/dht.c:942
 #, fuzzy, c-format
 msgid "Malformed optional field '%s' received from peer '%s'.\n"
@@ -1213,11 +1358,152 @@
 msgid "Failed to deliver '%s' message.\n"
 msgstr "Kuri Ibikubiyemo"
 
+#: src/applications/chat/chat.c:87
+#, fuzzy
+msgid "Message received from peer is invalid.\n"
+msgstr "BYAKIRIWE Bivuye ni Sibyo"
+
+#: src/applications/chat/chat.c:133
+#, fuzzy
+msgid "Message received from client is invalid\n"
+msgstr "BYAKIRIWE Bivuye Umukiriya ni"
+
+#: src/applications/chat/chat.c:155
+#, fuzzy
+msgid "Maximum number of chat clients reached.\n"
+msgstr "Umubare Bya"
+
+#: src/applications/chat/chat.c:159
+#, fuzzy, c-format
+msgid "Now %d of %d chat clients at this node.\n"
+msgstr "Bya ku iyi"
+
+#: src/applications/chat/chat.c:195
+#, c-format
+msgid "'%s' registering handlers %d and %d\n"
+msgstr ""
+
+#: src/applications/chat/gnunet-chat.c:82
+#, fuzzy
+msgid "specify nickname"
+msgstr "Irihimbano"
+
+#: src/applications/chat/gnunet-chat.c:87
+#, fuzzy
+msgid "Start GNUnet chat client."
+msgstr "Gutangira Umukiriya"
+
+#: src/applications/chat/gnunet-chat.c:149
+#: src/applications/tbench/gnunet-tbench.c:213
+#: src/applications/tracekit/gnunet-tracekit.c:363
+#: src/applications/fs/tools/gnunet-delete.c:142 src/util/port.c:72
+#, fuzzy
+msgid "Could not connect to gnunetd.\n"
+msgstr "OYA Kwihuza Kuri"
+
+#: src/applications/chat/gnunet-chat.c:153
+#, fuzzy, c-format
+msgid "You must specify a nickname (use option '%s').\n"
+msgstr "a Irihimbano Gukoresha Ihitamo"
+
+#: src/applications/chat/gnunet-chat.c:179
+#, fuzzy
+msgid "Could not send join message to gnunetd\n"
+msgstr "OYA Kohereza Ubutumwa Kuri"
+
+#: src/applications/chat/gnunet-chat.c:188
+#, fuzzy
+msgid "Could not send message to gnunetd\n"
+msgstr "OYA Kohereza Ubutumwa Kuri"
+
+#: src/applications/advertising/advertising.c:156
+#, fuzzy, c-format
+msgid "HELO message from '%s' invalid (signature invalid). Dropping.\n"
+msgstr "Ubutumwa Bivuye Sibyo Isinya Sibyo"
+
+#: src/applications/advertising/advertising.c:162
+#, fuzzy
+msgid "HELO message received invalid (expiration time over limit). Dropping.\n"
+msgstr "Ubutumwa BYAKIRIWE Sibyo Igihe KURI"
+
+#: src/applications/advertising/advertising.c:171
+#, fuzzy, c-format
+msgid "HELO advertisement for protocol %d received.\n"
+msgstr "kugirango Porotokole BYAKIRIWE"
+
+#: src/applications/advertising/advertising.c:297
+#, fuzzy
+msgid "Could not send HELOs+PING, ping buffer full.\n"
+msgstr "OYA Kohereza"
+
+#: src/applications/advertising/advertising.c:451
+#, fuzzy, c-format
+msgid "Advertising my transport %d to selected peers.\n"
+msgstr "Kuri Byahiswemo"
+
+#: src/applications/advertising/advertising.c:458
+#, fuzzy
+msgid ""
+"Announcing ourselves pointless: no other peers are known to us so far.\n"
+msgstr "Oya Ikindi Kuri RW"
+
+#: src/applications/advertising/advertising.c:547
+#, fuzzy, c-format
+msgid "Removing HELO from peer '%s' (expired %ds ago).\n"
+msgstr "Bivuye Byarengeje igihe"
+
+#: src/applications/advertising/advertising.c:705
+#, fuzzy
+msgid "# Peer advertisements received"
+msgstr "#BYAKIRIWE"
+
+#: src/applications/advertising/advertising.c:706
+msgid "# Self advertisments transmitted"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:707
+msgid "# Foreign advertisements forwarded"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:711
+#: src/applications/session/connect.c:674
+#, c-format
+msgid "'%s' registering handler %d (plaintext and ciphertext)\n"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:730
+#, fuzzy
+msgid "Network advertisements disabled by configuration!\n"
+msgstr "Yahagaritswe ku Iboneza"
+
 #: src/applications/topology_default/topology.c:307
 #, c-format
 msgid "Version mismatch ('%s' vs. '%s'), run gnunet-update!\n"
 msgstr ""
 
+#: src/applications/pingpong/pingpong.c:102
+#: src/applications/pingpong/pingpong.c:156
+#: src/applications/pingpong/pingpong.c:192
+#: src/applications/pingpong/pingpong.c:229
+#, fuzzy, c-format
+msgid "Received malformed '%s' message. Dropping.\n"
+msgstr "Ubutumwa"
+
+#: src/applications/pingpong/pingpong.c:110
+#, fuzzy
+msgid "Received ping for another peer. Dropping.\n"
+msgstr "kugirango"
+
+#: src/applications/pingpong/pingpong.c:164
+#, fuzzy
+msgid "Received PING not destined for us!\n"
+msgstr "OYA kugirango RW"
+
+#: src/applications/pingpong/pingpong.c:396
+#, c-format
+msgid "'%s' registering handlers %d %d (plaintext and ciphertext)\n"
+msgstr ""
+
 #: src/applications/sqstore_sqlite/sqlitetest.c:259
 #: src/applications/sqstore_mysql/mysqltest.c:257
 #, fuzzy
@@ -1238,9 +1524,9 @@
 #: src/applications/sqstore_mysql/mysql.c:914
 #: src/applications/sqstore_mysql/mysql.c:924 src/util/symcipher_gcrypt.c:47
 #: src/util/symcipher_gcrypt.c:54 src/util/hostkey_gcrypt.c:56
-#: src/util/hostkey_gcrypt.c:63 src/util/storage.c:621
-#: src/include/gnunet_util.h:967 src/include/gnunet_util.h:974
-#: src/include/gnunet_util.h:976
+#: src/util/hostkey_gcrypt.c:63 src/util/storage.c:613
+#: src/include/gnunet_util.h:973 src/include/gnunet_util.h:980
+#: src/include/gnunet_util.h:982
 #, fuzzy, c-format
 msgid "'%s' failed at %s:%d with error: %s\n"
 msgstr "'%s'Byanze ku Na: Ikosa"
@@ -1251,46 +1537,23 @@
 msgid "SQL Database corrupt, ignoring result.\n"
 msgstr "Ububikoshingiro Kuri"
 
-#: src/applications/sqstore_sqlite/sqlite.c:404
-#: src/applications/sqstore_sqlite/sqlite.c:598
+#: src/applications/sqstore_sqlite/sqlite.c:405
+#: src/applications/sqstore_sqlite/sqlite.c:599
 msgid "Invalid data in database.  Please verify integrity!\n"
 msgstr ""
 
-#: src/applications/sqstore_sqlite/sqlite.c:910
+#: src/applications/sqstore_sqlite/sqlite.c:913
 #, fuzzy, c-format
 msgid ""
 "Configuration file must specify directory for storing FS data in section '%"
 "s' under '%s'.\n"
 msgstr "IDOSIYE bushyinguro kugirango Ibyatanzwe in Icyiciro"
 
-#: src/applications/sqstore_sqlite/sqlite.c:924
+#: src/applications/sqstore_sqlite/sqlite.c:927
 #, fuzzy
 msgid "Unable to initialize SQLite.\n"
 msgstr "Kuri gutangiza"
 
-#: src/applications/pingpong/pingpong.c:102
-#: src/applications/pingpong/pingpong.c:156
-#: src/applications/pingpong/pingpong.c:192
-#: src/applications/pingpong/pingpong.c:229
-#, fuzzy, c-format
-msgid "Received malformed '%s' message. Dropping.\n"
-msgstr "Ubutumwa"
-
-#: src/applications/pingpong/pingpong.c:110
-#, fuzzy
-msgid "Received ping for another peer. Dropping.\n"
-msgstr "kugirango"
-
-#: src/applications/pingpong/pingpong.c:164
-#, fuzzy
-msgid "Received PING not destined for us!\n"
-msgstr "OYA kugirango RW"
-
-#: src/applications/pingpong/pingpong.c:396
-#, c-format
-msgid "'%s' registering handlers %d %d (plaintext and ciphertext)\n"
-msgstr ""
-
 #: src/applications/session/connect.c:151
 #, fuzzy
 msgid "Cannot encrypt sessionkey, other peer not known!\n"
@@ -1413,7 +1676,7 @@
 msgstr ""
 
 #: src/applications/identity/hostkey.c:98
-#: src/applications/identity/identity.c:861
+#: src/applications/identity/identity.c:865
 #, fuzzy, c-format
 msgid ""
 "Configuration file must specify a directory for GNUnet to store per-peer "
@@ -1446,28 +1709,28 @@
 "File '%s' in directory '%s' does not match naming convention. Removed.\n"
 msgstr "Idosiye in bushyinguro OYA BIHUYE"
 
-#: src/applications/identity/identity.c:315
+#: src/applications/identity/identity.c:318
 #, fuzzy, c-format
 msgid "%s '%s' returned no known hosts!\n"
 msgstr "%s'%s'Oya"
 
-#: src/applications/identity/identity.c:446
-#: src/applications/identity/identity.c:467
+#: src/applications/identity/identity.c:450
+#: src/applications/identity/identity.c:471
 #, fuzzy, c-format
 msgid "Removed file '%s' containing invalid peer advertisement.\n"
 msgstr "IDOSIYE Sibyo"
 
-#: src/applications/identity/identity.c:512
+#: src/applications/identity/identity.c:516
 #, fuzzy, c-format
 msgid "Removed file '%s' containing invalid HELO data.\n"
 msgstr "IDOSIYE Sibyo Ibyatanzwe"
 
-#: src/applications/identity/identity.c:526
+#: src/applications/identity/identity.c:530
 #, fuzzy, c-format
 msgid "Removed invalid HELO file '%s'\n"
 msgstr "Sibyo IDOSIYE"
 
-#: src/applications/identity/identity.c:856
+#: src/applications/identity/identity.c:860
 #, fuzzy, c-format
 msgid ""
 "Configuration file must specify directory for network identities in section %"
@@ -1708,30 +1971,30 @@
 msgid "Exit register (error: no http response read).\n"
 msgstr "Kwiyandikisha Ikosa Oya HTTP Gusoma"
 
-#: src/applications/transport/transport.c:430
-#: src/applications/transport/transport.c:438
+#: src/applications/transport/transport.c:437
+#: src/applications/transport/transport.c:445
 #, fuzzy, c-format
 msgid "No transport of type %d known.\n"
 msgstr "Bya Ubwoko"
 
-#: src/applications/transport/transport.c:596
+#: src/applications/transport/transport.c:603
 #, fuzzy, c-format
 msgid "Option '%s' not set in configuration in section '%s', setting to %dm.\n"
 msgstr "OYA Gushyiraho in Iboneza in Icyiciro Igenamiterere Kuri"
 
-#: src/applications/transport/transport.c:610
+#: src/applications/transport/transport.c:617
 #, fuzzy, c-format
 msgid ""
 "You should specify at least one transport service under option '%s' in "
 "section '%s'.\n"
 msgstr "ku Serivisi Ihitamo in Icyiciro"
 
-#: src/applications/transport/transport.c:635
+#: src/applications/transport/transport.c:642
 #, fuzzy, c-format
 msgid "Transport library '%s' did not provide required function '%s%s'.\n"
 msgstr "Isomero OYA Bya ngombwa Umumaro"
 
-#: src/applications/transport/transport.c:655
+#: src/applications/transport/transport.c:662
 #, c-format
 msgid "I am peer '%s'.\n"
 msgstr ""
@@ -1775,6 +2038,11 @@
 msgid "Error reading information from gnunetd.\n"
 msgstr "Zimya Iyemeza Bivuye"
 
+#: src/applications/stats/clientapi.c:179
+#, fuzzy
+msgid "Uptime (seconds)"
+msgstr "amasogonda"
+
 #: src/applications/stats/statistics.c:206
 #, fuzzy, c-format
 msgid "% of allowed network load (up)"
@@ -1795,11 +2063,6 @@
 msgid "# bytes of noise received"
 msgstr "#Bayite Bya BYAKIRIWE"
 
-#: src/applications/stats/clientapi.c:179
-#, fuzzy
-msgid "Uptime (seconds)"
-msgstr "amasogonda"
-
 #: src/applications/tbench/gnunet-tbench.c:95
 #, fuzzy
 msgid "output in gnuplot format"
@@ -2053,32 +2316,37 @@
 msgid "# p2p trace replies sent"
 msgstr "#Yoherejwe:"
 
-#: src/applications/gap/gap.c:1853
+#: src/applications/gap/gap.c:1856
 msgid ""
 "Cover traffic requested but traffic service not loaded.  Rejecting request.\n"
 msgstr ""
 
-#: src/applications/gap/gap.c:1864 src/applications/fs/module/fs.c:667
+#: src/applications/gap/gap.c:1867 src/applications/fs/module/fs.c:667
 #, fuzzy
 msgid "Failed to get traffic stats.\n"
 msgstr "Kuri Ikibazo# Ibyerekeye"
 
-#: src/applications/gap/gap.c:1870 src/applications/gap/gap.c:1875
-#: src/applications/gap/gap.c:1881
+#: src/applications/gap/gap.c:1873 src/applications/gap/gap.c:1878
+#: src/applications/gap/gap.c:1884
 msgid "Cannot satisfy desired level of anonymity, ignoring request.\n"
 msgstr ""
 
-#: src/applications/gap/gap.c:2092
+#: src/applications/gap/gap.c:2095
 msgid ""
 "Traffic service failed to load; gap cannot ensure cover-traffic "
 "availability.\n"
 msgstr ""
 
-#: src/applications/gap/gap.c:2123
+#: src/applications/gap/gap.c:2126
 #, c-format
 msgid "'%s' registering handlers %d %d\n"
 msgstr ""
 
+#: src/applications/getoption/getoption.c:74
+#, c-format
+msgid "'%s' registering client handler %d\n"
+msgstr ""
+
 #: src/applications/fs/tools/gnunet-pseudonym.c:33
 #, fuzzy
 msgid "automate creation of a namespace by starting a collection"
@@ -2673,18 +2941,6 @@
 msgid "'%s' failed.  Is '%s' a file?\n"
 msgstr "'%s'ntabwo ari idosiye"
 
-#: src/applications/fs/module/fs.c:980
-#, fuzzy, c-format
-msgid ""
-"You must specify a postive number for '%s' in the configuration in section '%"
-"s'.\n"
-msgstr "a Umubare kugirango in i Iboneza in Icyiciro"
-
-#: src/applications/fs/module/fs.c:1019
-#, c-format
-msgid "'%s' registering client handlers %d %d %d %d %d %d %d %d %d %d\n"
-msgstr ""
-
 #: src/applications/fs/module/ondemand.c:71
 #, fuzzy, c-format
 msgid ""
@@ -2718,11 +2974,18 @@
 "Unindexed ODB block '%s' from offset %llu already missing from datastore.\n"
 msgstr ""
 
-#: src/applications/fs/fsui/download.c:192
-#, fuzzy
-msgid "Download aborted."
-msgstr "/Byahiswemo"
+#: src/applications/fs/module/fs.c:980
+#, fuzzy, c-format
+msgid ""
+"You must specify a postive number for '%s' in the configuration in section '%"
+"s'.\n"
+msgstr "a Umubare kugirango in i Iboneza in Icyiciro"
 
+#: src/applications/fs/module/fs.c:1019
+#, c-format
+msgid "'%s' registering client handlers %d %d %d %d %d %d %d %d %d\n"
+msgstr ""
+
 #: src/applications/fs/fsui/helper.c:67
 #, fuzzy
 msgid "No keywords specified!\n"
@@ -2741,16 +3004,26 @@
 msgid "Cannot upload directory without using recursion.\n"
 msgstr ""
 
-#: src/applications/fs/fsui/namespace_info.c:518
+#: src/applications/fs/fsui/fsui.c:509
+#, c-format
+msgid "FSUI state file '%s' had syntax error at offset %u.\n"
+msgstr ""
+
+#: src/applications/fs/fsui/namespace_info.c:521
 msgid "Publication interval for periodic publication changed."
 msgstr ""
 
-#: src/applications/fs/fsui/namespace_info.c:539
+#: src/applications/fs/fsui/namespace_info.c:542
 msgid ""
 "Publishing update for periodically updated content more than a week ahead of "
 "schedule.\n"
 msgstr ""
 
+#: src/applications/fs/fsui/download.c:192
+#, fuzzy
+msgid "Download aborted."
+msgstr "/Byahiswemo"
+
 #: src/applications/fs/fsui/file_info.c:73
 msgid "Collecting file identifiers disabled.\n"
 msgstr ""
@@ -2760,6 +3033,14 @@
 msgid "Unindex failed.\n"
 msgstr "/Idosiye IDOSIYE"
 
+#: src/applications/fs/ecrs/search.c:158
+msgid "CHK URI not allowed for search.\n"
+msgstr ""
+
+#: src/applications/fs/ecrs/search.c:210
+msgid "LOC URI not allowed for search.\n"
+msgstr ""
+
 #: src/applications/fs/ecrs/download.c:884
 #, fuzzy
 msgid ""
@@ -2772,20 +3053,12 @@
 msgid "Content '%s' seems to be not available on the network.\n"
 msgstr "Kuri OYA Bihari ku i urusobe"
 
-#: src/applications/fs/ecrs/search.c:158
-msgid "CHK URI not allowed for search.\n"
-msgstr ""
-
-#: src/applications/fs/ecrs/search.c:210
-msgid "LOC URI not allowed for search.\n"
-msgstr ""
-
-#: src/applications/fs/ecrs/meta.c:745
+#: src/applications/fs/ecrs/meta.c:772
 #, fuzzy, c-format
 msgid "Renaming of file '%s' to '%s' failed: %s\n"
 msgstr "Bya IDOSIYE Kuri Byanze"
 
-#: src/applications/fs/ecrs/meta.c:751
+#: src/applications/fs/ecrs/meta.c:778
 #, fuzzy, c-format
 msgid "Could not rename file '%s' to '%s': file exists\n"
 msgstr "OYA Guhindura izina IDOSIYE Kuri IDOSIYE"
@@ -2821,11 +3094,26 @@
 msgid "Format of file '%s' is invalid.\n"
 msgstr "Bya ni Sibyo Ijambobanga..."
 
-#: src/applications/getoption/getoption.c:74
-#, c-format
-msgid "'%s' registering client handler %d\n"
+#: src/applications/topology_f2f/topology.c:284
+#, fuzzy, c-format
+msgid ""
+"Need to have list of friends in configuration under '%s' in section '%s'.\n"
+msgstr "Bihari in i Iboneza in Icyiciro"
+
+#: src/applications/topology_f2f/topology.c:299
+#, fuzzy, c-format
+msgid "Failed to read friends list from '%s'\n"
+msgstr "Kuri Ibirimo Ububikoshingiro Isomero"
+
+#: src/applications/topology_f2f/topology.c:315
+msgid "Syntax error in topology specification, skipping bytes.\n"
 msgstr ""
 
+#: src/applications/topology_f2f/topology.c:327
+#, fuzzy, c-format
+msgid "Syntax error in topology specification, skipping bytes '%s'.\n"
+msgstr "Ikosa in Iboneza IDOSIYE ku Umurongo"
+
 #: src/applications/template/template.c:59
 #, c-format
 msgid "'%s' registering client handler %d and %d\n"
@@ -3221,7 +3509,7 @@
 "entry '%s': %s\n"
 msgstr "urusobe in i Iboneza in Icyiciro kugirango Icyinjijwe"
 
-#: src/server/tcpserver.c:789
+#: src/server/tcpserver.c:797
 #, fuzzy, c-format
 msgid "%s failed, message type %d already in use.\n"
 msgstr "%sByanze Ubutumwa Ubwoko in Gukoresha"
@@ -3267,6 +3555,61 @@
 "want.\n"
 msgstr "'%s'Na: OYA in Umurongo Wongera Gicurasi OYA"
 
+#: src/util/getopt.c:641
+#, fuzzy, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s:Ihitamo ni"
+
+#: src/util/getopt.c:665
+#, fuzzy, c-format
+msgid "%s: option `--%s' does not allow an argument\n"
+msgstr "%s:Ihitamo OYA Kwemerera"
+
+#: src/util/getopt.c:670
+#, fuzzy, c-format
+msgid "%s: option `%c%s' does not allow an argument\n"
+msgstr "%s:Ihitamo OYA Kwemerera"
+
+#: src/util/getopt.c:687 src/util/getopt.c:861
+#, fuzzy, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s:Ihitamo"
+
+#: src/util/getopt.c:717
+#, fuzzy, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s:Ihitamo"
+
+#: src/util/getopt.c:721
+#, fuzzy, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s:Ihitamo"
+
+#: src/util/getopt.c:747
+#, fuzzy, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s:Ihitamo"
+
+#: src/util/getopt.c:750
+#, fuzzy, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s:Sibyo Ihitamo"
+
+#: src/util/getopt.c:780 src/util/getopt.c:910
+#, fuzzy, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s:Ihitamo"
+
+#: src/util/getopt.c:827
+#, fuzzy, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s:Ihitamo ni"
+
+#: src/util/getopt.c:845
+#, fuzzy, c-format
+msgid "%s: option `-W %s' does not allow an argument\n"
+msgstr "%s:Ihitamo OYA Kwemerera"
+
 #: src/util/port.c:37
 #, fuzzy, c-format
 msgid ""
@@ -3324,61 +3667,6 @@
 msgid "Cannot query the CPU usage (Win 9x)\n"
 msgstr "Ikibazo# i Ikoresha:"
 
-#: src/util/getopt.c:641
-#, fuzzy, c-format
-msgid "%s: option `%s' is ambiguous\n"
-msgstr "%s:Ihitamo ni"
-
-#: src/util/getopt.c:665
-#, fuzzy, c-format
-msgid "%s: option `--%s' does not allow an argument\n"
-msgstr "%s:Ihitamo OYA Kwemerera"
-
-#: src/util/getopt.c:670
-#, fuzzy, c-format
-msgid "%s: option `%c%s' does not allow an argument\n"
-msgstr "%s:Ihitamo OYA Kwemerera"
-
-#: src/util/getopt.c:687 src/util/getopt.c:861
-#, fuzzy, c-format
-msgid "%s: option `%s' requires an argument\n"
-msgstr "%s:Ihitamo"
-
-#: src/util/getopt.c:717
-#, fuzzy, c-format
-msgid "%s: unrecognized option `--%s'\n"
-msgstr "%s:Ihitamo"
-
-#: src/util/getopt.c:721
-#, fuzzy, c-format
-msgid "%s: unrecognized option `%c%s'\n"
-msgstr "%s:Ihitamo"
-
-#: src/util/getopt.c:747
-#, fuzzy, c-format
-msgid "%s: illegal option -- %c\n"
-msgstr "%s:Ihitamo"
-
-#: src/util/getopt.c:750
-#, fuzzy, c-format
-msgid "%s: invalid option -- %c\n"
-msgstr "%s:Sibyo Ihitamo"
-
-#: src/util/getopt.c:780 src/util/getopt.c:910
-#, fuzzy, c-format
-msgid "%s: option requires an argument -- %c\n"
-msgstr "%s:Ihitamo"
-
-#: src/util/getopt.c:827
-#, fuzzy, c-format
-msgid "%s: option `-W %s' is ambiguous\n"
-msgstr "%s:Ihitamo ni"
-
-#: src/util/getopt.c:845
-#, fuzzy, c-format
-msgid "%s: option `-W %s' does not allow an argument\n"
-msgstr "%s:Ihitamo OYA Kwemerera"
-
 #: src/util/ipcheck.c:100
 #, fuzzy, c-format
 msgid "Invalid format for IP: '%s'\n"
@@ -3444,7 +3732,7 @@
 msgid "'%s' failed, reply invalid!\n"
 msgstr "'%s'Byanze Subiza Sibyo"
 
-#: src/util/initialize.c:162
+#: src/util/initialize.c:163
 #, fuzzy
 msgid "Shutdown complete.\n"
 msgstr "Byuzuye"
@@ -3493,7 +3781,7 @@
 msgid "Syntax error in configuration file '%s' at line %d.\n"
 msgstr "Ikosa in Iboneza IDOSIYE ku Umurongo"
 
-#: src/util/configuration.c:444
+#: src/util/configuration.c:464
 #, fuzzy, c-format
 msgid ""
 "Configuration file '%s' not found. I will try to create the default "
@@ -3501,7 +3789,7 @@
 msgstr ""
 "IDOSIYE OYA Byabonetse Kuri Kurema i Mburabuzi Iboneza IDOSIYE ku Ahantu"
 
-#: src/util/configuration.c:460
+#: src/util/configuration.c:481
 #, fuzzy, c-format
 msgid "Cannot open configuration file '%s'\n"
 msgstr "Gufungura Iboneza IDOSIYE"
@@ -3670,42 +3958,42 @@
 "configuration file.\n"
 msgstr "OYA Gushaka kugirango iyi Ubuturo i in i Iboneza IDOSIYE"
 
-#: src/include/gnunet_util.h:138
+#: src/include/gnunet_util.h:140
 #, fuzzy
 msgid "print this help"
 msgstr "Gucapa iyi Ifashayobora"
 
-#: src/include/gnunet_util.h:141
+#: src/include/gnunet_util.h:143
 #, fuzzy
 msgid "set verbosity to LEVEL"
 msgstr "Gushyiraho Kuri"
 
-#: src/include/gnunet_util.h:144
+#: src/include/gnunet_util.h:146
 #, fuzzy
 msgid "use configuration file FILENAME"
 msgstr "Gukoresha Iboneza IDOSIYE"
 
-#: src/include/gnunet_util.h:147
+#: src/include/gnunet_util.h:149
 #, fuzzy
 msgid "specify host on which gnunetd is running"
 msgstr "Ubuturo ku ni"
 
-#: src/include/gnunet_util.h:150
+#: src/include/gnunet_util.h:152
 #, fuzzy
 msgid "print the version number"
 msgstr "Gucapa i Verisiyo Umubare"
 
-#: src/include/gnunet_util.h:153
+#: src/include/gnunet_util.h:155
 msgid "be verbose"
 msgstr ""
 
-#: src/include/gnunet_util.h:585 src/include/gnunet_util.h:587
+#: src/include/gnunet_util.h:582 src/include/gnunet_util.h:584
 #, fuzzy, c-format
 msgid "Assertion failed at %s:%d.\n"
 msgstr "Byanze ku"
 
-#: src/include/gnunet_util.h:983 src/include/gnunet_util.h:985
-#: src/include/gnunet_util.h:992
+#: src/include/gnunet_util.h:989 src/include/gnunet_util.h:991
+#: src/include/gnunet_util.h:998
 #, fuzzy, c-format
 msgid "'%s' failed on file '%s' at %s:%d with error: %s\n"
 msgstr "'%s'Byanze ku IDOSIYE ku Na: Ikosa"
@@ -4979,10 +5267,6 @@
 #~ msgstr "Bivuye Verisiyo"
 
 #, fuzzy
-#~ msgid "Errors while updating version!\n"
-#~ msgstr "Ivugurura Verisiyo"
-
-#, fuzzy
 #~ msgid "State is current, no update required.\n"
 #~ msgstr "ni KIGEZWEHO Oya Kuvugurura Bya ngombwa"
 
@@ -5006,12 +5290,6 @@
 #~ "Ububikoshingiro Kuri Cyangwa Ububikoshingiro Ubwoko Gukoresha GUHINDURA ni"
 
 #, fuzzy
-#~ msgid ""
-#~ "You must specify available diskspace in the configuration under '%s' in "
-#~ "section '%s'\n"
-#~ msgstr "Bihari in i Iboneza in Icyiciro"
-
-#, fuzzy
 #~ msgid "No conversion possible, no old database known.\n"
 #~ msgstr "Ihindurangero Oya ki/ bishaje Ububikoshingiro"
 
@@ -5231,10 +5509,6 @@
 #~ msgstr "Ububikoshingiro Ubwoko Byahinduwe Gukoresha GUHINDURA"
 
 #, fuzzy
-#~ msgid "Failed to load database library '%s'.\n"
-#~ msgstr "Kuri Ibirimo Ububikoshingiro Isomero"
-
-#, fuzzy
 #~ msgid "Failed to initialize AFS database %u.\n"
 #~ msgstr "Kuri gutangiza Ububikoshingiro"
 

Modified: GNUnet/src/Makefile.am
===================================================================
--- GNUnet/src/Makefile.am      2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet/src/Makefile.am      2005-05-31 19:27:19 UTC (rev 833)
@@ -1,3 +1,2 @@
 INCLUDES = -I$(top_srcdir)/src/include
-SUBDIRS = include util server applications transports
-#SUBDIRS       = include util conf server applications transports
+SUBDIRS        = include util conf server applications transports

Modified: GNUnet/src/applications/fs/ecrs/meta.c
===================================================================
--- GNUnet/src/applications/fs/ecrs/meta.c      2005-05-31 19:10:35 UTC (rev 
832)
+++ GNUnet/src/applications/fs/ecrs/meta.c      2005-05-31 19:27:19 UTC (rev 
833)
@@ -171,6 +171,33 @@
 }
 
 /**
+ * Iterate over MD entries
+ *
+ * @return number of entries
+ */
+char * ECRS_getFirstFromMetaData(const MetaData * md,
+                                ...) {
+  char * ret;
+  va_list args;
+  EXTRACTOR_KeywordType type;
+
+  ret = NULL;
+  va_start(args, md);
+  while (1) {
+    type = va_arg(args, EXTRACTOR_KeywordType);
+    if (type == -1)
+      break;
+    ret = ECRS_getFromMetaData(md,
+                              type);
+    if (ret != NULL) 
+      break;
+  }
+  va_end(args);
+  return ret;
+}
+
+
+/**
  * This function can be used to decode the binary data
  * stream produced by the thumbnailextractor.
  *

Modified: GNUnet/src/applications/fs/ecrs/uri.c
===================================================================
--- GNUnet/src/applications/fs/ecrs/uri.c       2005-05-31 19:10:35 UTC (rev 
832)
+++ GNUnet/src/applications/fs/ecrs/uri.c       2005-05-31 19:27:19 UTC (rev 
833)
@@ -607,8 +607,11 @@
   char * u1;
   char * u2;
   int ret;
+  
+  GNUNET_ASSERT(uri1 != NULL);
+  GNUNET_ASSERT(uri2 != NULL);
   u1 = ECRS_uriToString(uri1);
-  u2 = ECRS_uriToString(uri1);
+  u2 = ECRS_uriToString(uri2);
   ret = strcmp(u1, u2);
   FREE(u1);
   FREE(u2);

Modified: GNUnet/src/applications/fs/fsui/Makefile.am
===================================================================
--- GNUnet/src/applications/fs/fsui/Makefile.am 2005-05-31 19:10:35 UTC (rev 
832)
+++ GNUnet/src/applications/fs/fsui/Makefile.am 2005-05-31 19:27:19 UTC (rev 
833)
@@ -25,7 +25,9 @@
 
 check_PROGRAMS = \
   fsuitest \
-  fsuitest2
+  fsuitest2 \
+  searchtest \
+  downloadtest
 
 TESTS = $(check_PROGRAMS)
 
@@ -36,10 +38,24 @@
   $(top_builddir)/src/applications/fs/fsui/libgnunetfsui.la \
   $(top_builddir)/src/util/libgnunetutil.la 
 
-
 fsuitest2_SOURCES = \
   fsuitest2.c 
 fsuitest2_LDADD = \
   $(top_builddir)/src/applications/fs/ecrs/libgnunetecrs.la \
   $(top_builddir)/src/applications/fs/fsui/libgnunetfsui.la \
   $(top_builddir)/src/util/libgnunetutil.la 
+
+searchtest_SOURCES = \
+  searchtest.c 
+searchtest_LDADD = \
+  $(top_builddir)/src/applications/fs/ecrs/libgnunetecrs.la \
+  $(top_builddir)/src/applications/fs/fsui/libgnunetfsui.la \
+  $(top_builddir)/src/util/libgnunetutil.la 
+
+downloadtest_SOURCES = \
+  downloadtest.c 
+downloadtest_LDADD = \
+  $(top_builddir)/src/applications/fs/ecrs/libgnunetecrs.la \
+  $(top_builddir)/src/applications/fs/fsui/libgnunetfsui.la \
+  $(top_builddir)/src/util/libgnunetutil.la 
+

Added: GNUnet/src/applications/fs/fsui/downloadtest.c
===================================================================
--- GNUnet/src/applications/fs/fsui/downloadtest.c      2005-05-31 19:10:35 UTC 
(rev 832)
+++ GNUnet/src/applications/fs/fsui/downloadtest.c      2005-05-31 19:27:19 UTC 
(rev 833)
@@ -0,0 +1,222 @@
+/*
+     This file is part of GNUnet.
+     (C) 2004, 2005 Christian Grothoff (and other contributing authors)
+
+     GNUnet is free software; you can redistribute it and/or modify
+     it under the terms of the GNU General Public License as published
+     by the Free Software Foundation; either version 2, or (at your
+     option) any later version.
+
+     GNUnet is distributed in the hope that it will be useful, but
+     WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+     General Public License for more details.
+
+     You should have received a copy of the GNU General Public License
+     along with GNUnet; see the file COPYING.  If not, write to the
+     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+     Boston, MA 02111-1307, USA.
+*/
+
+/**
+ * @file applications/fs/fsui/downloadtest.c
+ * @brief testcase for fsui download persistence (upload-download)
+ * @author Christian Grothoff
+ *
+ * Todo:
+ * - test more features of download (recursive, multiple files
+ *   in parallel, etc.)
+ */
+
+#include "platform.h"
+#include "gnunet_util.h"
+#include "gnunet_fsui_lib.h"
+#include <sys/wait.h>
+
+#define CHECK(a) if (!(a)) { ok = NO; BREAK(); goto FAILURE; }
+
+static int parseCommandLine(int argc,
+                           char * argv[]) {
+  FREENONNULL(setConfigurationString("GNUNETD",
+                                    "_MAGIC_",
+                                    "NO"));
+  FREENONNULL(setConfigurationString("GNUNETD",
+                                    "LOGFILE",
+                                    NULL));
+  FREENONNULL(setConfigurationString("GNUNET",
+                                    "LOGLEVEL",
+                                    "WARNING"));
+  return OK;
+}
+
+static char * makeName(unsigned int i) {
+  char * name;
+  char * fn;
+
+  fn = STRDUP("/tmp/gnunet-fsuidownloadtest");
+  name = expandFileName(fn);
+  mkdirp(name);
+  FREE(fn);
+  fn = MALLOC(strlen(name) + 40);
+  SNPRINTF(fn,
+          strlen(name) + 40,
+          "%s%sFSUITEST%u",
+          DIR_SEPARATOR_STR,
+          name,
+          i);
+  FREE(name);
+  return fn;
+}
+
+static volatile enum FSUI_EventType lastEvent;
+static struct FSUI_Context * ctx;
+
+static void eventCallback(void * cls,
+                         const FSUI_Event * event) {
+  char * fn;
+
+  switch(event->type) {
+  case search_result:
+    printf("Received search result\n");
+    break;
+  case upload_complete:
+    printf("Upload complete.\n");
+    break;
+  case download_complete:
+    printf("Download complete.\n");
+    break;
+  case unindex_complete:
+    printf("Unindex complete.\n");
+    break;
+  default:
+    break;
+  }
+  if (lastEvent == download_complete)
+    return; /* ignore all other events */
+  lastEvent = event->type;  
+  if (event->type == search_result) {
+    fn = makeName(43);
+    FSUI_startDownload(ctx,
+                      0,
+                      event->data.SearchResult.fi.uri,
+                      fn);
+    FSUI_stop(ctx); /* download possibly incomplete
+                      at this point, thus testing resume */
+    ctx = FSUI_start("fsuidownloadtest",
+                    YES,
+                    &eventCallback,
+                    NULL);
+    FREE(fn);
+  }
+}
+
+
+int main(int argc, char * argv[]){
+  pid_t daemon;
+  int status;
+  int ok;
+  struct ECRS_URI * uri;
+  char * fn;
+  char * keywords[] = { 
+    "foo",
+    "bar",
+    NULL,
+  };
+  int prog;
+  struct ECRS_MetaData * meta;
+  struct ECRS_URI * kuri;
+
+  daemon = fork();
+  if (daemon == 0) {
+    if (0 != execlp("gnunetd", /* what binary to execute, must be in $PATH! */
+                   "gnunetd", /* arg0, path to gnunet binary */
+                   "-d",  /* do not daemonize so we can easily kill you */
+                   "-c",
+                   "check.conf", /* configuration file */
+                   NULL)) {
+      fprintf(stderr,
+             _("'%s' failed: %s\n"),
+             "execlp",
+             STRERROR(errno));
+      return -1;
+    }
+  }
+  ok = YES;
+  initUtil(argc, argv, &parseCommandLine);
+  startCron();
+  gnunet_util_sleep(5 * cronSECONDS); /* give gnunetd time to start */
+
+  /* ACTUAL TEST CODE */
+  ctx = FSUI_start("fsuidownloadtest",
+                  YES,
+                  &eventCallback,
+                  NULL);
+  CHECK(ctx != NULL);
+  fn = makeName(42);
+  writeFile(fn,
+           "foo bar test!",
+           strlen("foo bar test!"),
+           "600");
+  meta = ECRS_createMetaData();
+  kuri = FSUI_parseListKeywordURI(2,
+                                 (const char**)keywords);
+  CHECK(OK ==
+       FSUI_upload(ctx,
+                   fn,
+                   0,
+                   YES,
+                   meta,
+                   kuri));
+  ECRS_freeUri(kuri);
+  ECRS_freeMetaData(meta);
+  prog = 0;
+  while (lastEvent != upload_complete) {
+    prog++;
+    CHECK(prog < 10000) 
+    
+    gnunet_util_sleep(50 * cronMILLIS);
+  }
+  uri = FSUI_parseCharKeywordURI("foo AND bar");
+  CHECK(OK == FSUI_startSearch(ctx,
+                              0,
+                              uri));
+  prog = 0;
+  while (lastEvent != download_complete) {
+    prog++;
+    CHECK(prog < 10000);
+    gnunet_util_sleep(50 * cronMILLIS);
+  }
+  FSUI_stopSearch(ctx,
+                 uri);
+  CHECK(OK == FSUI_unindex(ctx, fn));
+
+  /* END OF TEST CODE */
+ FAILURE:
+  if (ctx != NULL)
+    FSUI_stop(ctx);
+  UNLINK(fn);
+  FREE(fn);
+  fn = makeName(43);
+  /* TODO: verify file 'fn(42)' == file 'fn(43)' */
+  UNLINK(fn);
+  FREE(fn);
+
+  stopCron();
+  doneUtil();
+  if (daemon != -1) {
+    if (0 != kill(daemon, SIGTERM))
+      DIE_STRERROR("kill");
+    if (daemon != waitpid(daemon, &status, 0))
+      DIE_STRERROR("waitpid");
+
+    if ( (WEXITSTATUS(status) == 0) &&
+        (ok == YES) )
+      return 0;
+    else
+      return 1;
+  } else {
+    return 0;
+  }
+}
+
+/* end of downloadtest.c */

Added: GNUnet/src/applications/fs/fsui/searchtest.c
===================================================================
--- GNUnet/src/applications/fs/fsui/searchtest.c        2005-05-31 19:10:35 UTC 
(rev 832)
+++ GNUnet/src/applications/fs/fsui/searchtest.c        2005-05-31 19:27:19 UTC 
(rev 833)
@@ -0,0 +1,220 @@
+/*
+     This file is part of GNUnet.
+     (C) 2004, 2005 Christian Grothoff (and other contributing authors)
+
+     GNUnet is free software; you can redistribute it and/or modify
+     it under the terms of the GNU General Public License as published
+     by the Free Software Foundation; either version 2, or (at your
+     option) any later version.
+
+     GNUnet is distributed in the hope that it will be useful, but
+     WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+     General Public License for more details.
+
+     You should have received a copy of the GNU General Public License
+     along with GNUnet; see the file COPYING.  If not, write to the
+     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+     Boston, MA 02111-1307, USA.
+*/
+
+/**
+ * @file applications/fs/fsui/searchtest.c
+ * @brief testcase for fsui search persistence
+ * @author Christian Grothoff
+ */
+
+#include "platform.h"
+#include "gnunet_util.h"
+#include "gnunet_fsui_lib.h"
+#include <sys/wait.h>
+
+#define CHECK(a) if (!(a)) { ok = NO; BREAK(); goto FAILURE; }
+
+static int parseCommandLine(int argc,
+                           char * argv[]) {
+  FREENONNULL(setConfigurationString("GNUNETD",
+                                    "_MAGIC_",
+                                    "NO"));
+  FREENONNULL(setConfigurationString("GNUNETD",
+                                    "LOGFILE",
+                                    NULL));
+  FREENONNULL(setConfigurationString("GNUNET",
+                                    "LOGLEVEL",
+                                    "WARNING"));
+  return OK;
+}
+
+static char * makeName(unsigned int i) {
+  char * name;
+  char * fn;
+
+  fn = STRDUP("/tmp/gnunet-fsuisearchtest");
+  name = expandFileName(fn);
+  mkdirp(name);
+  FREE(fn);
+  fn = MALLOC(strlen(name) + 40);
+  SNPRINTF(fn,
+          strlen(name) + 40,
+          "%s%sFSUITEST%u",
+          DIR_SEPARATOR_STR,
+          name,
+          i);
+  FREE(name);
+  return fn;
+}
+
+static volatile enum FSUI_EventType lastEvent;
+static struct FSUI_Context * ctx;
+
+static void eventCallback(void * cls,
+                         const FSUI_Event * event) {
+  char * fn;
+
+  switch(event->type) {
+  case search_result:
+    printf("Received search result\n");
+    break;
+  case upload_complete:
+    printf("Upload complete.\n");
+    break;
+  case download_complete:
+    printf("Download complete.\n");
+    break;
+  case unindex_complete:
+    printf("Unindex complete.\n");
+    break;
+  default:
+    break;
+  }
+  if (lastEvent == download_complete)
+    return; /* ignore all other events */
+  lastEvent = event->type;  
+  if (event->type == search_result) {
+    fn = makeName(43);
+    FSUI_startDownload(ctx,
+                      0,
+                      event->data.SearchResult.fi.uri,
+                      fn);
+    FREE(fn);
+  }
+}
+
+
+int main(int argc, char * argv[]){
+  pid_t daemon;
+  int status;
+  int ok;
+  struct ECRS_URI * uri;
+  char * fn;
+  char * keywords[] = { 
+    "foo",
+    "bar",
+    NULL,
+  };
+  int prog;
+  struct ECRS_MetaData * meta;
+  struct ECRS_URI * kuri;
+
+  daemon = fork();
+  if (daemon == 0) {
+    if (0 != execlp("gnunetd", /* what binary to execute, must be in $PATH! */
+                   "gnunetd", /* arg0, path to gnunet binary */
+                   "-d",  /* do not daemonize so we can easily kill you */
+                   "-c",
+                   "check.conf", /* configuration file */
+                   NULL)) {
+      fprintf(stderr,
+             _("'%s' failed: %s\n"),
+             "execlp",
+             STRERROR(errno));
+      return -1;
+    }
+  }
+  ok = YES;
+  initUtil(argc, argv, &parseCommandLine);
+  startCron();
+  gnunet_util_sleep(5 * cronSECONDS); /* give gnunetd time to start */
+
+  /* ACTUAL TEST CODE */
+
+  ctx = FSUI_start("fsuisearchtest",
+                  YES,
+                  &eventCallback,
+                  NULL);
+  CHECK(ctx != NULL);
+  uri = FSUI_parseCharKeywordURI("foo AND bar");
+  CHECK(OK == FSUI_startSearch(ctx,
+                              0,
+                              uri));
+  FSUI_stop(ctx);
+  /* resume search! */
+  ctx = FSUI_start("fsuisearchtest",
+                  YES,
+                  &eventCallback,
+                  NULL);
+  fn = makeName(42);
+  writeFile(fn,
+           "foo bar test!",
+           strlen("foo bar test!"),
+           "600");
+  meta = ECRS_createMetaData();
+  kuri = FSUI_parseListKeywordURI(2,
+                                 (const char**)keywords);
+  CHECK(OK ==
+       FSUI_upload(ctx,
+                   fn,
+                   0,
+                   YES,
+                   meta,
+                   kuri));
+  ECRS_freeUri(kuri);
+  ECRS_freeMetaData(meta);
+  prog = 0;
+  while (lastEvent != upload_complete) {
+    prog++;
+    CHECK(prog < 10000) 
+    
+    gnunet_util_sleep(50 * cronMILLIS);
+  }
+  
+  prog = 0;
+  while (lastEvent != download_complete) {
+    prog++;
+    CHECK(prog < 10000);
+    gnunet_util_sleep(50 * cronMILLIS);
+  }
+  FSUI_stopSearch(ctx,
+                 uri);
+  CHECK(OK == FSUI_unindex(ctx, fn));
+
+  /* END OF TEST CODE */
+ FAILURE:
+  if (ctx != NULL)
+    FSUI_stop(ctx);
+  UNLINK(fn);
+  FREE(fn);
+  fn = makeName(43);
+  /* TODO: verify file 'fn(42)' == file 'fn(43)' */
+  UNLINK(fn);
+  FREE(fn);
+
+  stopCron();
+  doneUtil();
+  if (daemon != -1) {
+    if (0 != kill(daemon, SIGTERM))
+      DIE_STRERROR("kill");
+    if (daemon != waitpid(daemon, &status, 0))
+      DIE_STRERROR("waitpid");
+
+    if ( (WEXITSTATUS(status) == 0) &&
+        (ok == YES) )
+      return 0;
+    else
+      return 1;
+  } else {
+    return 0;
+  }
+}
+
+/* end of searchtest.c */

Modified: GNUnet/src/applications/fs/fsui/upload.c
===================================================================
--- GNUnet/src/applications/fs/fsui/upload.c    2005-05-31 19:10:35 UTC (rev 
832)
+++ GNUnet/src/applications/fs/fsui/upload.c    2005-05-31 19:27:19 UTC (rev 
833)
@@ -335,7 +335,6 @@
       event.type = upload_error;
       event.data.message = _("Upload failed.\n");
     }
-    utc->filename = NULL;
     if (utc->meta == NULL)
       utc->meta = ECRS_createMetaData();
     else
@@ -345,6 +344,7 @@
     ECRS_extractMetaData(utc->meta,
                         utc->filename,
                         utc->extractors);
+    utc->filename = NULL;
   } else if (utc->isRecursive) {
     scanDirectory(utc->filename,
                  (DirectoryEntryCallback)&dirEntryCallback,
@@ -449,6 +449,7 @@
                const struct ECRS_URI * keyUri) {
   FSUI_ThreadList * tl;
   UploadThreadClosure * utc;
+  char * config;
 
   utc = MALLOC(sizeof(UploadThreadClosure));
   utc->anonymityLevel = anonymityLevel;
@@ -457,7 +458,14 @@
   utc->expiration = cronTime(NULL) + 120 * cronYEARS;
   utc->ctx = ctx;
   utc->isRecursive = NO;
-  utc->extractors = NULL;
+  utc->extractors = EXTRACTOR_loadDefaultLibraries();
+  config = getConfigurationString("FS",
+                                 "EXTRACTORS");
+  if (config != NULL) {
+    utc->extractors = EXTRACTOR_loadConfigLibraries(utc->extractors,
+                                                   config);
+    FREE(config);
+  }
   utc->globalUri = NULL;
   utc->filename = NULL;
   utc->main_filename = STRDUP(filename);
@@ -496,7 +504,6 @@
  * main directory will furthermore be published with the given keywords
  * and the specified directoryMetaData.
  *
- * @param extractorPluginNames list of LE plugins to use
  * @return OK on success (at least we started with it),
  *  SYSERR if the file does not exist
 */
@@ -505,11 +512,11 @@
                   unsigned int anonymityLevel,
                   int doIndex,
                   const struct ECRS_MetaData * directoryMetaData,
-                  const char * extractorPluginNames,
                   const struct ECRS_URI * globalURI,
                   const struct ECRS_URI * topURI) {
   FSUI_ThreadList * tl;
   UploadThreadClosure * utc;
+  char * config;
 
   utc = MALLOC(sizeof(UploadThreadClosure));
   utc->ctx = ctx;
@@ -518,7 +525,15 @@
   utc->priority = getConfigurationInt("FS",
                                      "INSERT-PRIORITY");
   utc->expiration = cronTime(NULL) + 120 * cronYEARS;
-  utc->extractors = EXTRACTOR_loadConfigLibraries(NULL, extractorPluginNames);
+  utc->extractors = EXTRACTOR_loadDefaultLibraries();
+  config = getConfigurationString("FS",
+                                 "EXTRACTORS");
+  
+  if (config != NULL) {
+    utc->extractors = EXTRACTOR_loadConfigLibraries(utc->extractors,
+                                                   config);
+    FREE(config);
+  }
   utc->globalUri = ECRS_dupUri(globalURI);
   utc->filename = NULL;
   utc->main_filename = STRDUP(dirname);

Modified: GNUnet/src/applications/fs/module/ondemand.c
===================================================================
--- GNUnet/src/applications/fs/module/ondemand.c        2005-05-31 19:10:35 UTC 
(rev 832)
+++ GNUnet/src/applications/fs/module/ondemand.c        2005-05-31 19:27:19 UTC 
(rev 833)
@@ -130,6 +130,9 @@
                        strlen("/data/shared/") + 1);
     strcat(serverDir, "/data/shared/");
   }
+  fn = expandFileName(serverDir);
+  FREE(serverDir);
+  serverDir = fn;
   if ( (SYSERR == getFileHash(fn,
                              &linkId)) || 
        (! equalsHashCode512(&linkId,
@@ -156,6 +159,7 @@
   UNLINK(serverFN);
   if (0 != SYMLINK(fn, serverFN)) {
     LOG_FILE_STRERROR(LOG_ERROR, "symlink", fn);
+    LOG_FILE_STRERROR(LOG_ERROR, "symlink", serverFN);
     FREE(serverFN);
     return NO;
   }

Modified: GNUnet/src/applications/fs/tools/gnunet-insert.c
===================================================================
--- GNUnet/src/applications/fs/tools/gnunet-insert.c    2005-05-31 19:10:35 UTC 
(rev 832)
+++ GNUnet/src/applications/fs/tools/gnunet-insert.c    2005-05-31 19:27:19 UTC 
(rev 833)
@@ -228,10 +228,11 @@
             help);
 }
 
+static int printAndReturn = NO;
+
 static int parseOptions(int argc,
                        char ** argv) {
   int c;
-  int printAndReturn = NO;
   char * tmp;
 
   FREENONNULL(setConfigurationString("GNUNET-INSERT",
@@ -472,31 +473,6 @@
     printf(_("You must specify a list of files to insert.\n"));
     return SYSERR;
   }
-  if (printAndReturn) {
-    EXTRACTOR_ExtractorList * l;
-    char * ex;
-
-    ex = getConfigurationString("FS",
-                               "EXTRACTORS");
-    if (ex == NULL)
-      ex = STRDUP(EXTRACTOR_DEFAULT_LIBRARIES);
-    if (ex == NULL)
-      l = NULL;
-    else
-      l = EXTRACTOR_loadConfigLibraries(NULL,
-                                       ex);
-    for (c=GNoptind;c<argc;c++) {
-      EXTRACTOR_KeywordList * list
-       = EXTRACTOR_getKeywords(l, argv[c]);
-      printf(_("Keywords for file '%s':\n"),
-            argv[c]);
-      EXTRACTOR_printKeywords(stdout,
-                             list);
-      EXTRACTOR_freeKeywords(list);
-    }
-    EXTRACTOR_removeAll(l);
-    return SYSERR;
-  }
   if (argc - GNoptind > 1) {
     printf(_("Only one file or directory can be specified at a time.\n"));
     return SYSERR;
@@ -527,7 +503,6 @@
   char * timestr;
   int doIndex;
   int ret;
-  char * extractors;
 
   meta = ECRS_createMetaData();
   if (SYSERR == initUtil(argc, argv, &parseOptions)) {
@@ -535,6 +510,34 @@
     return 0;
   }
 
+  if (printAndReturn) {
+    EXTRACTOR_ExtractorList * l;
+    char * ex;
+    
+    filename = getConfigurationString("GNUNET-INSERT",
+                                     "MAIN-FILE");
+    l = EXTRACTOR_loadDefaultLibraries();
+    ex = getConfigurationString("FS",
+                               "EXTRACTORS");
+    if (ex != NULL) {
+      l = EXTRACTOR_loadConfigLibraries(l,
+                                       ex);
+      FREE(ex);
+    }
+    EXTRACTOR_KeywordList * list
+      = EXTRACTOR_getKeywords(l, filename);
+    printf(_("Keywords for file '%s':\n"),
+          filename);
+    EXTRACTOR_printKeywords(stdout,
+                           list);
+    EXTRACTOR_freeKeywords(list);
+    EXTRACTOR_removeAll(l);
+    FREE(filename);
+    ECRS_freeMetaData(meta);
+    return 0;
+  }
+
+
   verbose = testConfigurationString("GNUNET-INSERT",
                                    "VERBOSE",
                                    "YES");
@@ -608,11 +611,6 @@
     doIndex = NO;
   else
     doIndex = YES;
-  extractors = getConfigurationString("FS",
-                                     "EXTRACTORS");
-  if (extractors == NULL)
-      extractors = STRDUP(EXTRACTOR_DEFAULT_LIBRARIES);
-
   if (! testConfigurationString("FS",
                                "DISABLE-CREATION-TIME",
                                "YES")) 
@@ -633,7 +631,6 @@
                                             "ANONYMITY-SEND"),
                         doIndex,
                         meta,
-                        extractors,
                         gloURI,
                         topURI);
     ECRS_freeUri(gloURI);
@@ -652,7 +649,6 @@
                      topURI);
     ECRS_freeUri(topURI);
   }
-  FREE(extractors);
   /* wait for completion */
   SEMAPHORE_DOWN(exitSignal);
   SEMAPHORE_FREE(exitSignal);

Added: GNUnet/src/applications/identity/check.conf
===================================================================
--- GNUnet/src/applications/identity/check.conf 2005-05-31 19:10:35 UTC (rev 
832)
+++ GNUnet/src/applications/identity/check.conf 2005-05-31 19:27:19 UTC (rev 
833)
@@ -0,0 +1,34 @@
+# This is the configuration for the GNUnet daemon when running
+# the test in this directory (make check).
+
+GNUNETD_HOME     = /tmp/gnunet-check-identity
+
+[GNUNETD]
+VALGRIND        = 300
+HELOEXPIRES     = 60
+LOGLEVEL        = NOTHING 
+LOGFILE         = $GNUNETD_HOME/logs
+KEEPLOG         = 0
+PIDFILE         = $GNUNETD_HOME/gnunetd.pid
+HOSTS          = $GNUNETD_HOME/data/hosts/
+# APPLICATIONS = ""
+TRANSPORTS = "tcp"
+
+[MODULES]
+topology = topology_default
+
+[NETWORK]
+PORT = 2087
+INTERFACE = eth0
+HELOEXCHANGE = NO
+TRUSTED = 127.0.0.0/8;
+
+[LOAD]
+INTERFACES      = eth0
+BASICLIMITING = YES
+MAXNETUPBPSTOTAL       = 50000
+MAXNETDOWNBPSTOTAL     = 50000
+MAXCPULOAD             = 100
+
+[TCP]
+PORT = 2086

Modified: GNUnet/src/conf/wizard_util.c
===================================================================
--- GNUnet/src/conf/wizard_util.c       2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet/src/conf/wizard_util.c       2005-05-31 19:27:19 UTC (rev 833)
@@ -252,7 +252,7 @@
                                if (! f)
                                        return 0;
                                        
-                               fputs(f,        "#! /bin/sh\n"
+                               fputs("#! /bin/sh\n"
                                                                        "#\n"
                                                                        "# 
Automatically created by gnunet-setup\n"
                                                                        "#\n"
@@ -288,7 +288,7 @@
                                                                        "       
        ;;\n"
                                                                        "\n"
                                                                        "esac\n"
-                                                                       "exit 
0\n");
+                                     "exit 0\n", f);
                                        fclose(f);
                                        chmod("/etc/init.d/gnunetd", S_IRWXU | 
S_IRGRP | S_IXGRP |
                                                S_IROTH | S_IXOTH);

Modified: GNUnet/src/include/gnunet_ecrs_lib.h
===================================================================
--- GNUnet/src/include/gnunet_ecrs_lib.h        2005-05-31 19:10:35 UTC (rev 
832)
+++ GNUnet/src/include/gnunet_ecrs_lib.h        2005-05-31 19:27:19 UTC (rev 
833)
@@ -145,6 +145,15 @@
                            EXTRACTOR_KeywordType type);
 
 /**
+ * Get the first matching MD entry of the given types.
+ * @param ... -1-terminated list of types
+ * @return NULL if we do not have any such entry,
+ *  otherwise client is responsible for freeing the value!
+ */
+char * ECRS_getFirstFromMetaData(const struct ECRS_MetaData * md,
+                                ...);
+
+/**
  * Get a thumbnail from the meta-data (if present).
  *
  * @param thumb will be set to the thumbnail data.  Must be

Modified: GNUnet/src/include/gnunet_fsui_lib.h
===================================================================
--- GNUnet/src/include/gnunet_fsui_lib.h        2005-05-31 19:10:35 UTC (rev 
832)
+++ GNUnet/src/include/gnunet_fsui_lib.h        2005-05-31 19:27:19 UTC (rev 
833)
@@ -103,7 +103,7 @@
        * File-Info of the data that was found.
        */
       ECRS_FileInfo fi;
-      /**
+     /**
        * The URI of the search for which data was
        * found.
        */
@@ -503,7 +503,6 @@
  * main directory will furthermore be published with the given keywords
  * and the specified directoryMetaData.
  *
- * @param extractorPluginNames list of LE plugins to use
  * @param keywordCount number of keywords
  * @param keywords keywords to use ONLY for the top-level directory
  * @return OK on success (at least we started with it),
@@ -514,7 +513,6 @@
                   unsigned int anonymityLevel,
                   int doIndex,
                   const struct ECRS_MetaData * directoryMetaData,
-                  const char * extractorPluginNames,
                   const struct ECRS_URI * globalURI,
                   const struct ECRS_URI * topURI); /* upload.c */
 

Modified: GNUnet/src/include/gnunet_util.h
===================================================================
--- GNUnet/src/include/gnunet_util.h    2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet/src/include/gnunet_util.h    2005-05-31 19:27:19 UTC (rev 833)
@@ -569,11 +569,6 @@
                     const char * charset);
 
 /**
- * GNU gettext support macro.
- */
-#define _(String) gettext (String)
-
-/**
  * Macro for assertions in GNUnet.  Use liberally and instead
  * of specific but cryptic error messages that merely refer
  * to the location of the problem but that would be evident

Modified: GNUnet/src/include/platform.h
===================================================================
--- GNUnet/src/include/platform.h       2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet/src/include/platform.h       2005-05-31 19:27:19 UTC (rev 833)
@@ -147,6 +147,10 @@
 #include <locale.h>
 #include "gettext.h"
 
+/**
+ * GNU gettext support macro.
+ */
+#define _(String) dgettext(PACKAGE,String)
 
 #ifdef CYGWIN
  #define SIOCGIFCONF     _IOW('s', 100, struct ifconf) /* get if list */

Modified: GNUnet/todo
===================================================================
--- GNUnet/todo 2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet/todo 2005-05-31 19:27:19 UTC (rev 833)
@@ -1,23 +1,29 @@
+0.7.0pre3:
+- gnunet-gtk (see todo list there)
+- gnunet-setup:
+   curses wizard?  [ Nils ];
+   template path adjustment for non gconf setup [ Nils ]
+       
+
 0.7.0 [6'05?] (aka "compatibility? what's that?"):
 - Missing Features:
   * resolve "FIXME 0.7": only sqlite magic factor missing!
-  * fsui core (persistence) [ difficult ]
-    - testing and debugging!
   * #593 (gnunet-setup): php-ification for i18n [ Nils ]
 - Additional (automated, make check-style) testing:
   * gnunet-tracekit
   * gap and economy
   * FSUI:
-    + persistence
     + collections
-    + recursive uploads and downloads
+    + recursive uploads and downloads (incl. persistence)
     + namespaces
     + URI tracking
 - Documentation:
   * ECRS block format changes (dramatic!)
   * Hacking GNUnet
 
-0.7.x (aka "stabilization"):
+0.7.0a (bugfixes)
+
+0.7.1 (aka "stabilization"):
 - Optimizations:
   * spread out scanning done in topology_*.c?
   * fsui download: limit parallelism (currently unlimited, old gnunet-download 
allowed

Added: GNUnet-docs/WWW/gnunet-gtk-0.7.0.png
===================================================================
(Binary files differ)


Property changes on: GNUnet-docs/WWW/gnunet-gtk-0.7.0.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: GNUnet-docs/WWW/news_20050531.inc
===================================================================
--- GNUnet-docs/WWW/news_20050531.inc   2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet-docs/WWW/news_20050531.inc   2005-05-31 19:27:19 UTC (rev 833)
@@ -0,0 +1,16 @@
+<?php
+W("Work on GNUnet 0.7.0 is progressing.");
+W("Just to show where we are, here is a screenshot from the new GNUnet GTK 
user interface.");
+IMG("gnunet-gtk-0.7.0.png", "GNUnet GTK screenshot");
+W("Note that the only thing working in the interface is the keyword search.");
+W("However, the search shows one of the nice features of 0.7.0, previews.");
+W("In GNUnet 0.7.0, it is possible for search results (and directories) to 
contain thumbnails.");
+W("This way, GNUnet can show previews of the files -- before any download.");
+P();
+W("The new GNUnet GTK user interface uses Glade, which makes it easy to 
customize and extend the UI.");
+W("The code for gnunet-gtk is no longer part of the main GNUnet codebase:");
+PRE("$ svn checkout https://gnunet.org/svn/gnunet-gtk";);
+W("This was done in order to emphasize the MVC (model view control) 
separation.");
+W("The FSUI library from GNUnet provides the model.");
+W("By using Glade to create the view, the C code for gnunet-gtk (controller) 
is currently less than 2 kLOC.");
+?>

Added: GNUnet-docs/papers/ecrs/acm-article.cls
===================================================================
--- GNUnet-docs/papers/ecrs/acm-article.cls     2005-05-31 19:10:35 UTC (rev 
832)
+++ GNUnet-docs/papers/ecrs/acm-article.cls     2005-05-31 19:27:19 UTC (rev 
833)
@@ -0,0 +1,1377 @@
+% ACM_PROC_ARTICLE-SP.CLS - VERSION 2.01SP
+% COMPATIBLE WITH THE "ACM_PROC_ARTICLE.CLS" V2.01
+% Gerald Murray February 24th, 2000.
+%
+% ---- Start of 'updates'  ----
+%
+% changed \topmargin to 6pc and \textheight to 648pc
+% to accomodate OOPSLA 2001 specs - address@hidden
+%
+% Allowance made to switch default fonts between those systems using
+% METAFONT and those using 'Type 1' or 'Truetype' fonts.
+% See LINE NUMBER 262 for details.
+% Also provided for enumerated/annotated Corollaries 'surrounded' by
+% enumerated Theorems (line 790).
+% Gerry November 11th. 1999
+%
+% Made the Permission Statement / Conference Info / Copyright Info
+% 'user definable' in the source .tex file OR automatic if
+% not specified.
+% This 'sp' version does NOT produce the permission block.
+%
+% Major change in January 2000 was to include a "blank line" in between
+% new paragraphs. This involved major changes to the, then, acmproc-sp.cls  
1.0SP
+% file, precipitating a 'new' name: "acm_proc_article-sp.cls" V2.01SP.
+%
+% ---- End of 'updates' ----
+%
+\def\fileversion{V2.01SP}          % for ACM's tracking purposes
+\def\filedate{February 24, 2000}    % Gerry Murray's tracking data
+\def\docdate {Thursday 24th. February 2000} % Gerry Murray (with deltas to doc}
+\usepackage{epsfig}
+\usepackage{amssymb}
+\usepackage{amsmath}
+\usepackage{amsfonts}
+%
+% ACM_PROC_ARTICLE-SP  DOCUMENT STYLE
+% G.K.M. Tobin August-October 1999
+%    adapted from ARTICLE document style by Ken Traub, Olin Shivers
+%    also using elements of esub2acm.cls
+% LATEST REVISION V2.01SP - FEBRUARY 2000
+% ARTICLE DOCUMENT STYLE -- Released 16 March 1988
+%    for LaTeX version 2.09
+% Copyright (C) 1988 by Leslie Lamport
+%
+%
+%%% ACM_PROC_ARTICLE-SP is a document style for producing two-column 
camera-ready pages for
+%%% ACM conferences, according to ACM specifications.  The main features of
+%%% this style are:
+%%%
+%%% 1)  Two columns.
+%%% 2)  Side and top margins of 4.5pc, bottom margin of 6pc, column gutter of
+%%%     2pc, hence columns are 20pc wide and 55.5pc tall.  (6pc =3D 1in, 
approx)
+%%% 3)  First page has title information, and an extra 6pc of space at the
+%%%     bottom of the first column for the ACM copyright notice.
+%%% 4)  Text is 9pt on 10pt baselines; titles (except main) are 9pt bold.
+%%%
+%%%
+%%% There are a few restrictions you must observe:
+%%%
+%%% 1)  You cannot change the font size; ACM wants you to use 9pt.
+%%% 3)  You must start your paper with the \maketitle command.  Prior to the
+%%%     \maketitle you must have \title and \author commands.  If you have a
+%%%     \date command it will be ignored; no date appears on the paper, since
+%%%     the proceedings will have a date on the front cover.
+%%% 4)  Marginal paragraphs, tables of contents, lists of figures and tables,
+%%%     and page headings are all forbidden.
+%%% 5)  The `figure' environment will produce a figure one column wide; if you
+%%%     want one that is two columns wide, use `figure*'.
+%%%
+%
+%%% Copyright Space:
+%%% This style automatically leaves 1" blank space at the bottom of page 1/
+%%% column 1.  This space can optionally be filled with some text using the
+%%% \toappear{...} command.  If used, this command must be BEFORE the 
\maketitle
+%%% command.  If this command is defined AND [preprint] is on, then the
+%%% space is filled with the {...} text (at the bottom); otherwise, it is
+%%% blank.  If you use \toappearbox{...} instead of \toappear{...} then a
+%%% box will be drawn around the text (if [preprint] is on).
+%%%
+%%% A typical usage looks like this:
+%%%     \toappear{To appear in the Ninth AES Conference on Medievil Lithuanian
+%%%               Embalming Technique, June 1991, Alfaretta, Georgia.}
+%%% This will be included in the preprint, and left out of the conference
+%%% version.
+%%%
+%%% WARNING:
+%%% Some dvi-ps converters heuristically allow chars to drift from their
+%%% true positions a few pixels. This may be noticeable with the 9pt sans-serif
+%%% bold font used for section headers.
+%%% You may turn this hackery off via the -e option:
+%%%     dvips -e 0 foo.dvi >foo.ps
+%%%
+\typeout{Document Class 'acm_proc_article-sp' <24th. Feb. '00>.  Modified by 
G.K.M. Tobin}
+\typeout{Based in part upon document Style `acmconf' <22 May 89>. Hacked 4/91 
by}
address@hidden, 4/93 by address@hidden
+\typeout{Excerpts were taken from (Journal Style) 'esub2acm.cls'.}
+\typeout{****** Bugs/comments/suggestions  to Gerry Murray -- address@hidden 
******}
+
+\oddsidemargin 4.5pc
+\evensidemargin 4.5pc
+\advance\oddsidemargin by -1in  % Correct for LaTeX gratuitousness
+\advance\evensidemargin by -1in % Correct for LaTeX gratuitousness
+\marginparwidth 0pt             % Margin pars are not allowed.
+\marginparsep 11pt              % Horizontal space between outer margin and
+                                % marginal note
+
+                                % Top of page:
+\topmargin 9pc                  % Nominal distance from top of page to top of
+                                % box containing running head.
+\advance\topmargin by -1in      % Correct for LaTeX gratuitousness
+\headheight 0pt                 % Height of box containing running head.
+\headsep 0pt                    % Space between running head and text.
+                                % Bottom of page:
+\footskip 30pt                  % Distance from baseline of box containing foot
+                                % to baseline of last line of text.
address@hidden this is for LaTeX2e
+\footheight 12pt                % Height of box containing running foot.
+
+
+%% Must redefine the top margin so there's room for headers and
+%% page numbers if you are using the preprint option. Footers
+%% are OK as is. Olin.
+\advance\topmargin by -37pt     % Leave 37pt above text for headers
+\headheight 12pt                % Height of box containing running head.
+\headsep 25pt                   % Space between running head and text.
+
+\textheight 648pt       % 9 column height
+\textwidth 42pc         % Width of text line.
+                        % For two-column mode:
+\columnsep 2pc          %    Space between columns
+\columnseprule 0pt      %    Width of rule between columns.
+\hfuzz 1pt              % Allow some variation in column width, otherwise it's
+                        % too hard to typeset in narrow columns.
+
+\footnotesep 5.6pt      % Height of strut placed at the beginning of every
+                        % footnote =3D height of normal \footnotesize strut,
+                        % so no extra space between footnotes.
+
+\skip\footins 8.1pt plus 4pt minus 2pt  % Space between last line of text and
+                                        % top of first footnote.
+\floatsep 11pt plus 2pt minus 2pt       % Space between adjacent floats moved
+                                        % to top or bottom of text page.
+\textfloatsep 18pt plus 2pt minus 4pt   % Space between main text and floats
+                                        % at top or bottom of page.
+\intextsep 11pt plus 2pt minus 2pt      % Space between in-text figures and
+                                        % text.
address@hidden@address@hidden this is for LaTeX2e
address@hidden 18pt                           % The maximum of \floatsep,
+                                        % \textfloatsep and \intextsep (minus
+                                        % the stretch and shrink).
+\dblfloatsep 11pt plus 2pt minus 2pt    % Same as \floatsep for double-column
+                                        % figures in two-column mode.
+\dbltextfloatsep 18pt plus 2pt minus 4pt% \textfloatsep for double-column
+                                        % floats.
address@hidden@address@hidden this is for LaTeX2e
address@hidden 18pt                        % The maximum of \dblfloatsep and
+                                        % \dbltexfloatsep.
address@hidden 0pt plus 1fil    % Stretch at top of float page/column. (Must be
+                         % 0pt plus ...)
address@hidden 8pt plus 2fil    % Space between floats on float page/column.
address@hidden 0pt plus 1fil    % Stretch at bottom of float page/column. (Must 
be
+                         % 0pt plus ... )
address@hidden 0pt plus 1fil % Stretch at top of float page. (Must be 0pt plus 
...)
address@hidden 8pt plus 2fil % Space between floats on float page.
address@hidden 0pt plus 1fil % Stretch at bottom of float page. (Must be
+                         % 0pt plus ... )
+\marginparpush 5pt       % Minimum vertical separation between two marginal
+                         % notes.
+
+\parskip 0pt                % Extra vertical space between paragraphs.
+                    % Set to 0pt outside sections, to keep section heads
+                    % uniformly spaced.  The value of parskip is set
+                    % to leading value _within_ sections.
+                    % 12 Jan 2000 gkmt
+\parindent 0pt                % Width of paragraph indentation.
+\partopsep 2pt plus 1pt minus 1pt% Extra vertical space, in addition to
+                                 % \parskip and \topsep, added when user
+                                 % leaves blank line before environment.
+
address@hidden   51       % Produced by \nopagebreak[1] or \nolinebreak[1]
address@hidden  151       % Produced by \nopagebreak[2] or \nolinebreak[2]
address@hidden 301       % Produced by \nopagebreak[3] or \nolinebreak[3]
+
address@hidden address@hidden % Before a list or paragraph environment.
address@hidden   address@hidden % After a list or paragraph environment.
address@hidden     address@hidden % Between list items.
+
address@hidden@address@hidden `10pt' option is not allowed in the `acmconf'
+  document address@hidden
address@hidden@address@hidden `11pt' option is not allowed in the `acmconf'
+  document address@hidden
address@hidden@address@hidden `12pt' option is not allowed in the `acmconf'
+  document address@hidden
+
address@hidden
+
+\lineskip 2pt           % \lineskip is 1pt for all font sizes.
+\normallineskip 2pt
+\def\baselinestretch{1}
+
+\abovedisplayskip 9pt plus2pt minus4.5pt%
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip  \z@ plus3pt%
+\belowdisplayshortskip  5.4pt plus3pt minus3pt%
address@hidden@listI     % Setting of address@hidden added 9 Jun 87
+
address@hidden@viiipt
+\abovedisplayskip 7.6pt plus 3pt minus 4pt%
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus2pt%
+\belowdisplayshortskip 3.6pt plus2pt minus 2pt
address@hidden %% Added 22 Dec 87
+\topsep 4pt plus 2pt minus 2pt\parsep 2pt plus 1pt minus 1pt
+\itemsep \parsep}}
+
address@hidden@ixpt
+\abovedisplayskip 6.4pt plus 2pt minus 4pt%
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus 1pt%
+\belowdisplayshortskip 2.7pt plus 1pt minus 2pt
address@hidden %% Added 22 Dec 87
+\topsep 3pt plus 1pt minus 1pt\parsep 2pt plus 1pt minus 1pt
+\itemsep \parsep}}
+
+\newcount\aucount
+\newcount\originalaucount
+\newdimen\auwidth
+\auwidth=\textwidth
+\newdimen\auskip
+\newcount\auskipcount
+\newdimen\auskip
+\global\auskip=1pc
+\newdimen\allauboxes
+\allauboxes=\auwidth
+\newtoks\addauthors
+\newcount\addauflag
+\global\addauflag=0 %Haven't shown additional authors yet
+
+\newtoks\subtitletext
+\gdef\subtitle#1{\subtitletext={#1}}
+
+\gdef\additionalauthors#1{\addauthors={#1}}
+
+\gdef\numberofauthors#1{\global\aucount=#1
+\ifnum\aucount>3\global\originalaucount=\aucount \global\aucount=3\fi %g}
+\global\auskipcount=\aucount\global\advance\auskipcount by 1
+\global\multiply\auskipcount by 2
+\global\multiply\auskip by \auskipcount
+\global\advance\auwidth by -\auskip
+\global\divide\auwidth by \aucount}
+
+% \and was modified to count the number of authors.  GKMT 12 Aug 1999
+\def\alignauthor{%                  % \begin{tabular}
+\end{tabular}%
+  \begin{tabular}[t]{p{\auwidth}}\centering}%
+
+%  *** NOTE *** NOTE *** NOTE *** NOTE ***
+%  If you have 'font problems' then you may need
+%  to change these, e.g. 'arialb' instead of "arialbd".
+%  Gerry Murray 11/11/1999
+%  *** OR ** comment out block A and activate block B or vice versa.
+% **********************************************
+%
+%  -- Start of block A -- (Type 1 or Truetype fonts)
+%\newfont{\secfnt}{timesbd at 12pt} % was timenrb originally - now is timesbd
+%\newfont{\secit}{timesbi at 12pt}   %13 Jan 00 gkmt
+%\newfont{\subsecfnt}{timesi at 11pt} % was timenrri originally - now is timesi
+%\newfont{\subsecit}{timesbi at 11pt} % 13 Jan 00 gkmt -- was times changed to 
timesbi gm 2/4/2000
+%                         % because "normal" is italic, "italic" is Roman
+%\newfont{\ttlfnt}{arialbd at 18pt} % was arialb originally - now is arialbd
+%\newfont{\ttlit}{arialbi at 18pt}    % 13 Jan 00 gkmt
+%\newfont{\subttlfnt}{arial at 14pt} % was arialr originally - now is arial
+%\newfont{\subttlit}{ariali at 14pt} % 13 Jan 00 gkmt
+%\newfont{\subttlbf}{arialbd at 14pt}  % 13 Jan 00 gkmt
+%\newfont{\aufnt}{arial at 12pt} % was arialr originally - now is arial
+%\newfont{\auit}{ariali at 12pt} % 13 Jan 00 gkmt
+%\newfont{\affaddr}{arial at 10pt} % was arialr originally - now is arial
+%\newfont{\affaddrit}{ariali at 10pt} %13 Jan 00 gkmt
+%\newfont{\eaddfnt}{arial at 12pt} % was arialr originally - now is arial
+%\newfont{\ixpt}{times at 9pt} % was timenrr originally - now is times
+%\newfont{\confname}{timesi at 8pt} % was timenrri - now is timesi
+%\newfont{\crnotice}{times at 8pt} % was timenrr originally - now is times
+%\newfont{\ninept}{times at 9pt} % was timenrr originally - now is times
+
+% *********************************************
+%  -- End of block A --
+%
+%
+% -- Start of block B -- METAFONT
+% +++++++++++++++++++++++++++++++++++++++++++++
+% Next (default) block for those using Metafont
+% Gerry Murray 11/11/1999
+% *** THIS BLOCK FOR THOSE USING METAFONT *****
+% *********************************************
+\newfont{\secfnt}{ptmb at 12pt}
+\newfont{\secit}{ptmbi at 12pt}    %13 Jan 00 gkmt
+\newfont{\subsecfnt}{ptmri at 11pt}
+\newfont{\subsecit}{ptmbi at 11pt}  % 13 Jan 00 gkmt -- was ptmr changed to 
ptmbi gm 2/4/2000
+                         % because "normal" is italic, "italic" is Roman
+\newfont{\ttlfnt}{phvb at 18pt}
+\newfont{\ttlit}{phvbo at 18pt}    % GM 2/4/2000
+\newfont{\subttlfnt}{phvr at 14pt}
+\newfont{\subttlit}{phvro at 14pt} % GM 2/4/2000
+\newfont{\subttlbf}{phvb at 14pt}  % 13 Jan 00 gkmt
+\newfont{\aufnt}{phvr at 12pt}
+\newfont{\auit}{phvro at 12pt}     % GM 2/4/2000
+\newfont{\affaddr}{phvr at 10pt}
+\newfont{\affaddrit}{phvro at 10pt} % GM 2/4/2000
+\newfont{\eaddfnt}{phvr at 12pt}
+\newfont{\ixpt}{ptmr at 9pt}
+\newfont{\confname}{ptmri at 8pt}
+\newfont{\crnotice}{ptmr at 8pt}
+\newfont{\ninept}{ptmr at 9pt}
+% +++++++++++++++++++++++++++++++++++++++++++++
+% -- End of block B --
+
+
+
+\def\email#1{{{\eaddfnt{\vskip 4pt#1}}}}
+
+\def\addauthorsection{\ifnum\originalaucount>3
+    \section{Additional Authors}\the\addauthors
+  \fi}
+
+\newcount\savesection
+\newcount\sectioncntr
+\global\sectioncntr=1
+
+\setcounter{secnumdepth}{3}
+
+\def\appendix{\par
+\section*{APPENDIX}
+\setcounter{section}{0}
+ \setcounter{subsection}{0}
+ \def\thesection{\Alph{section}} }
+
+
+\leftmargini 22.5pt
+\leftmarginii 19.8pt    % > \labelsep + width of '(m)'
+\leftmarginiii 16.8pt   % > \labelsep + width of 'vii.'
+\leftmarginiv 15.3pt    % > \labelsep + width of 'M.'
+\leftmarginv 9pt
+\leftmarginvi 9pt
+
+\leftmargin\leftmargini
+\labelsep 4.5pt
+\labelwidth\leftmargini\advance\labelwidth-\labelsep
+
address@hidden \parsep 3.6pt plus 2pt minus 1pt%
+\topsep 7.2pt plus 2pt minus 4pt%
+\itemsep 3.6pt plus 2pt minus 1pt}
+
address@hidden@listI
address@hidden
+
address@hidden
+   \labelwidth\leftmarginii\advance\labelwidth-\labelsep
+   \topsep 3.6pt plus 2pt minus 1pt
+   \parsep 1.8pt plus 0.9pt minus 0.9pt
+   \itemsep \parsep}
+
address@hidden
+    \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
+    \topsep 1.8pt plus 0.9pt minus 0.9pt
+    \parsep \z@ \partopsep 1pt plus 0pt minus 1pt
+    \itemsep \topsep}
+
address@hidden
+     \labelwidth\leftmarginiv\advance\labelwidth-\labelsep}
+
address@hidden
+     \labelwidth\leftmarginv\advance\labelwidth-\labelsep}
+
address@hidden
+     \labelwidth\leftmarginvi\advance\labelwidth-\labelsep}
+
+\def\labelenumi{\theenumi.}
+\def\theenumi{\arabic{enumi}}
+
+\def\labelenumii{(\theenumii)}
+\def\theenumii{\alph{enumii}}
address@hidden
+
+\def\labelenumiii{\theenumiii.}
+\def\theenumiii{\roman{enumiii}}
address@hidden(\theenumii)}
+
+\def\labelenumiv{\theenumiv.}
+\def\theenumiv{\Alph{enumiv}}
address@hidden@enumiii\theenumiii}
+
+\def\labelitemi{$\bullet$}
+\def\labelitemii{\bf --}
+\def\labelitemiii{$\ast$}
+\def\labelitemiv{$\cdot$}
+
address@hidden
+  \list{}{\itemsep\z@ \itemindent -1.5em\listparindent \itemindent
+          \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]}
+\let\endverse\endlist
+
+\def\quotation{\list{}{\listparindent 1.5em
+    \itemindent\listparindent
+    \rightmargin\leftmargin \parsep 0pt plus 1pt}\item[]}
+\let\endquotation=\endlist
+
+\def\quote{\list{}{\rightmargin\leftmargin}\item[]}
+\let\endquote=\endlist
+
+\def\descriptionlabel#1{\hspace\labelsep \bf #1}
+\def\description{\list{}{\labelwidth\z@ \itemindent-\leftmargin
+       \let\makelabel\descriptionlabel}}
+
+\let\enddescription\endlist
+
+\def\theequation{\arabic{equation}}
+
+\arraycolsep 4.5pt   % Half the space between columns in an array environment.
+\tabcolsep 5.4pt     % Half the space between columns in a tabular environment.
+\arrayrulewidth .4pt % Width of rules in array and tabular environment.
+\doublerulesep 1.8pt % Space between adjacent rules in array or tabular env.
+
+\tabbingsep \labelsep   % Space used by the \' command.  (See LaTeX manual.)
+
address@hidden =\skip\footins
+
+\fboxsep =2.7pt      % Space left between box and text by \fbox and \framebox.
+\fboxrule =.4pt      % Width of rules in box made by \fbox and \framebox.
+
+\def\thepart{\Roman{part}} % Roman numeral part numbers.
+\def\thesection       {\arabic{section}}
+\def\thesubsection    {\thesection.\arabic{subsection}}
+\def\thesubsubsection {\thesubsection.\arabic{subsubsection}}
+\def\theparagraph     {\thesubsubsection.\arabic{paragraph}}
+\def\thesubparagraph  {\theparagraph.\arabic{subparagraph}}
+
address@hidden
address@hidden {2.55em}
address@hidden
+\setcounter{tocdepth}{3}
+
address@hidden: Tables of contents are not
+  allowed in the `acmconf' document address@hidden
+
address@hidden@secpenalty}
+   \addvspace{2.25em plus 1pt}  % space above part line
+   \begingroup
+   address@hidden 3em       % width of box holding part number, used by
+     \parindent \z@ \rightskip address@hidden      %% \numberline
+     \parfillskip address@hidden
+     {\large \bf        % set line in \large boldface
+     \leavevmode        % TeX command to enter horizontal mode.
+     #1\hfil \hbox address@hidden #2}}\par
+     \nobreak           % Never break after part entry
+   \endgroup}
+
address@hidden@secpenalty} % good place for page break
+   \addvspace{1.0em plus 1pt}   % space above toc entry
+   address@hidden 1.5em             % width of box holding section number
+   \begingroup
+     \parindent \z@ \rightskip address@hidden
+     \parfillskip address@hidden
+     \bf                        % Boldface.
+     \leavevmode                % TeX command to enter horizontal mode.
+      address@hidden %% added 5 Feb 88 to conform to
+      \hskip -\leftskip           %% 25 Jan 88 change to \numberline
+     #1\nobreak\hfil \nobreak\hbox address@hidden #2}\par
+   \endgroup}
+
+
address@hidden@dottedtocline{2}{1.5em}{2.3em}}
address@hidden@dottedtocline{3}{3.8em}{3.2em}}
address@hidden@dottedtocline{4}{7.0em}{4.1em}}
address@hidden@dottedtocline{5}{10em}{5em}}
+
address@hidden: Lists of figures are not
+  allowed in the `acmconf' document address@hidden
+
address@hidden@dottedtocline{1}{1.5em}{2.3em}}
+
address@hidden: Lists of tables are not
+  allowed in the `acmconf' document address@hidden
address@hidden@figure
+
+\def\footnoterule{\kern-3\p@
+  \hrule width .4\columnwidth
+  \kern address@hidden                 % The \hrule has default height of .4pt 
.
address@hidden
+\hbox to address@hidden
+
address@hidden
+#1}
+
address@hidden
+            \hbox to 1.8em{\hss$^{#1}$}#2}
+
+\setcounter{topnumber}{2}
+\def\topfraction{.7}
+\setcounter{bottomnumber}{1}
+\def\bottomfraction{.3}
+\setcounter{totalnumber}{3}
+\def\textfraction{.2}
+\def\floatpagefraction{.5}
+\setcounter{dbltopnumber}{2}
+\def\dbltopfraction{.7}
+\def\dblfloatpagefraction{.5}
+
address@hidden
+   \vskip \baselineskip
+   address@hidden: #2}}
+   \ifdim address@hidden >\hsize % IF longer than one line:
+       \textbf{#1: #2}\par               %   THEN set as ordinary paragraph.
+     \else                      %   ELSE  center.
+       \hbox address@hidden
+   \fi}
+
address@hidden {figure}} % this is for LaTeX2e
+
address@hidden
address@hidden
address@hidden
address@hidden \thefigure}
address@hidden
address@hidden
address@hidden@dblfloat{figure}}
address@hidden@dblfloat}
+
address@hidden {table}} % this is for LaTeX2e
+
address@hidden
address@hidden
address@hidden
address@hidden \thetable}
address@hidden
address@hidden
address@hidden@dblfloat{table}}
address@hidden@dblfloat}
+
+\newtoks\titleboxnotes
+\newcount\titleboxnoteflag
+
+\def\maketitle{\par
+ \begingroup
+   \def\thefootnote{\fnsymbol{footnote}}
+   address@hidden
+       to address@hidden
+     address@hidden
address@hidden
+ \endgroup
+ \setcounter{footnote}{0}
+ \let\maketitle\relax
+ address@hidden
+ address@hidden@address@hidden@subtitle{}\let\thanks\relax
+ address@hidden
+
+%% CHANGES ON NEXT LINES
address@hidden % to record which version of LaTeX is in use
+
+\expandafter\ifx\csname LaTeXe\endcsname\relax % LaTeX2.09 is used
+\else% LaTeX2e is used, so set ll to true
address@hidden
+\fi
+
address@hidden
+  \NeedsTeXFormat{LaTeX2e}
+  \ProvidesClass{acm_proc_article-sp} [2000/02/24 - V2.01SP - based on 
esub2acm.sty <23 April 96>]
+  \RequirePackage{latexsym}% QUERY: are these two really needed?
+  \let\dooptions\ProcessOptions
+\else
+  address@hidden
+\fi
+%% END CHANGES
+
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden@{\hbox to}
address@hidden
address@hidden
address@hidden@faircopytrue}
+
address@hidden@faircopyfalse}
+
address@hidden
address@hidden
address@hidden address@hidden
+%% CHANGE ON NEXT LINE
+\dooptions
+
+\lineskip \p@
+\normallineskip \p@
+\def\baselinestretch{1}
address@hidden %needed for amssymbols.sty
+
+%% CHANGES ON NEXT LINES
address@hidden allow use of old-style font change commands in LaTeX2e
address@hidden
+%
+\DeclareOldFontCommand{\rm}{\ninept\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
address@hidden
address@hidden
address@hidden
address@hidden
+\fi
+%
address@hidden
+ \renewcommand{\rmdefault}{cmr}  % was 'ttm'
+% Note! I have also found 'mvr' to work ESPECIALLY well.
+% Gerry - October 1999
+% You may need to change your LV1times.fd file so that sc is
+% mapped to cmcsc - -for smallcaps -- that is if you decide
+% to change {cmr} to {times} above. (Not recommended)
+  address@hidden
+  \renewcommand{\normalsize}{%
+    address@hidden@address@hidden
+    \abovedisplayskip 6\p@ address@hidden@ address@hidden@
+    \belowdisplayskip \abovedisplayskip
+    \abovedisplayshortskip 6\p@ address@hidden 3\p@
+    \belowdisplayshortskip 6\p@ address@hidden 3\p@
+    address@hidden@listI
+  }
+\else
+  address@hidden next to 9 from 10
+    address@hidden@address@hidden
+   \abovedisplayskip 6\p@ address@hidden@ address@hidden@
+    \belowdisplayskip \abovedisplayskip
+    \abovedisplayshortskip 6\p@ address@hidden 3\p@
+    \belowdisplayshortskip 6\p@ address@hidden 3\p@
+    address@hidden@listI
+  }%
+\fi
address@hidden
+  address@hidden@address@hidden
+  address@hidden@address@hidden
+  address@hidden@address@hidden
+  address@hidden@address@hidden
+  address@hidden@address@hidden
+  address@hidden@address@hidden
+  address@hidden@address@hidden
+\else
+  address@hidden@address@hidden
+  address@hidden@address@hidden
+  address@hidden@address@hidden
+  address@hidden@address@hidden
+  address@hidden@address@hidden
+  address@hidden@address@hidden
+  address@hidden@address@hidden
+\fi
+\normalsize
+
+% make aubox hsize/number of authors up to 3, less gutter
+% then showbox gutter showbox gutter showbox -- GKMT Aug 99
address@hidden
address@hidden
+ \null
+ address@hidden
+\baselineskip 20pt
+\vskip 2em                   % Vertical space above title.
+   \begin{center}
+    {\ttlfnt address@hidden       % Title set in 18pt Helvetica (Arial) bold 
size.
+    \vskip 1.5em                % Vertical space after title.
+%This should be the subtitle.
+{\subttlfnt \the\subtitletext\par}\vskip 1.25em%\fi
+    {\baselineskip 16pt\aufnt   % each author set in \12 pt Arial, in a
+     \lineskip .5em             % tabular environment
+     address@hidden
+     \end{tabular}\par}
+    \vskip 1.5em               % Vertical space after author.
+   \end{center}}
+ address@hidden
+ \advance\dimen0 by -12.75pc\relax % Increased space for title box -- KBT
+ address@hidden
+ \ifdim\dimen0<0.0pt\relax\vskip-\dimen0\fi}
+
+
+\newcount\titlenotecount
+\global\titlenotecount=0
+\newtoks\tntoks
+\newtoks\tntokstwo
+\newtoks\tntoksthree
+\newtoks\tntoksfour
+\newtoks\tntoksfive
+
+\def\abstract{
+\ifnum\titlenotecount>0 % was =1
+    \insert\footins{%
+    address@hidden
+        \interlinepenalty\interfootnotelinepenalty
+        \splittopskip\footnotesep
+        \splitmaxdepth \dp\strutbox \floatingpenalty address@hidden
+        \hsize\columnwidth address@hidden
+        address@hidden@currentlabel{%
+        }%
+        address@hidden
+\ifnum\titlenotecount=1
+      address@hidden
+         address@hidden@finalstrut\strutbox}%
+\fi
+\ifnum\titlenotecount=2
+      address@hidden
+      address@hidden@finalstrut\strutbox}%
address@hidden
+         address@hidden@finalstrut\strutbox}%
+\fi
+\ifnum\titlenotecount=3
+      address@hidden
+         address@hidden@finalstrut\strutbox}%
address@hidden
+         address@hidden@finalstrut\strutbox}%
address@hidden
+         address@hidden@finalstrut\strutbox}%
+\fi
+\ifnum\titlenotecount=4
+      address@hidden
+         address@hidden@finalstrut\strutbox}%
address@hidden
+         address@hidden@finalstrut\strutbox}%
address@hidden
+         address@hidden@finalstrut\strutbox}%
address@hidden
+         address@hidden@finalstrut\strutbox}%
+\fi
+\ifnum\titlenotecount=5
+      address@hidden
+         address@hidden@finalstrut\strutbox}%
address@hidden
+         address@hidden@finalstrut\strutbox}%
address@hidden
+         address@hidden@finalstrut\strutbox}%
address@hidden
+         address@hidden@finalstrut\strutbox}%
address@hidden
+         address@hidden@finalstrut\strutbox}%
+\fi
+   address@hidden %g}
+\fi
+\setcounter{footnote}{0}
+\section*{ABSTRACT}\normalsize %\the\parskip \the\baselineskip%\ninept
+}
+
address@hidden
+
address@hidden
+\section*{Keywords}
+\else \small
+\quotation
+\fi}
+
+% I've pulled the check for 2 cols, since proceedings are _always_
+% two-column  11 Jan 2000 gkmt
address@hidden
+\section*{General Terms}
+%\else \small
+%\quotation\the\parskip
+%\fi}
+}
+
+% -- Classification needs to be a bit smart due to optionals - Gerry/Georgia 
November 2nd. 1999
+\newcount\catcount
+\global\catcount=1
+
+\def\category#1#2#3{%
+\ifnum\catcount=1
+\section*{Categories and Subject Descriptors}
+\advance\catcount by 1\else{\unskip; }\fi
+    address@hidden address@hidden@category{#1}{#2}{#3}[]}%
+}
+
address@hidden
+    \begingroup
+        \let\and\relax
+            #1 [\textbf{#2}]%
+            \if!#4!%
+                \if!#3!\else : #3\fi
+            \else
+                :\space
+                \if!#3!\else address@hidden@\fi
+                \textit{#4}%
+            \fi
+    \endgroup
+}
+%
+
+%%% This section (written by KBT) handles the 1" box in the lower left
+%%% corner of the left column of the first page by creating a picture,
+%%% and inserting the predefined string at the bottom (with a negative
+%%% displacement to offset the space allocated for a non-existent
+%%% caption).
+%%%
+\newtoks\copyrightnotice
address@hidden
address@hidden
address@hidden
+\begin{center}
+\setlength{\unitlength}{1pc}
+\begin{picture}(20,6) %Space for copyright notice
+\put(0,-0.95)address@hidden
+\end{picture}
+\end{center}
address@hidden
+
address@hidden % Default setting blank - commands below change this.
address@hidden 9pt#1}}}
address@hidden
+
+\newtoks\conf
+\newtoks\confinfo
+\def\conferenceinfo#1#2{\global\conf={#1}\global\confinfo{#2}}
+
+
address@hidden \marginpar command is not allowed in the
+  `acmconf' document address@hidden
+
+\mark{{}{}}     % Initializes TeX's marks
+
+\def\today{\ifcase\month\or
+  January\or February\or March\or April\or May\or June\or
+  July\or August\or September\or October\or November\or December\fi
+  \space\number\day, \number\year}
+
address@hidden
+    \trivlist
+    \item[%
+        \hskip 10\p@
+        \hskip \labelsep
+        {{\sc #1}\hskip address@hidden
+    ]
+    \it
+}
address@hidden
+    \trivlist
+    \item[%
+        \hskip 10\p@
+        \hskip \labelsep
+        {\sc #1\ #2\             % This mod by Gerry to enumerate corollaries
+   address@hidden(#3)}  % and bracket the 'corollary title'
+        \ifdim address@hidden>\z@ % and retain the correct numbering of e.g. 
theorems
+            \hskip address@hidden    % if they occur 'around' said corollaries.
+            address@hidden       % Gerry - Nov. 1999.
+        \fi.}%
+    ]
+    \it
+}
address@hidden
address@hidden
+\def\proof{%
+    address@hidden
+    address@hidden@address@hidden
+}
+
+\def\endproof{%
+    address@hidden
+    \endtrivlist
+}
address@hidden
+    \trivlist
+    \item[%
+        \hskip 10\p@
+        \hskip \labelsep
+        {\sc Proof.}%
+    ]
+    \ignorespaces
+}
address@hidden
+    \trivlist
+    \item[\hskip address@hidden \labelsep{\sc Proof #1.}]%
+    \ignorespaces
+}
+\def\qed{%
+    \unskip
+    \kern 10\p@
+    \begingroup
+        \unitlength\p@
+        address@hidden
+        \framebox(6,6){}%
+    \endgroup
+    address@hidden
+}
+
+\def\newdef#1#2{%
+    address@hidden #1\endcsname
+        address@hidden
+         \expandafter\xdef\csname address@hidden
+         address@hidden@defthm{#1}{#2}}%
+         address@hidden@endtheorem}%
+    }%
+}
address@hidden
+    \refstepcounter{#1}%
+    address@hidden@address@hidden
+}
address@hidden
+    address@hidden the#1\endcsname}%
+    \ignorespaces
+}
address@hidden
+    \trivlist
+    \item[%
+        \hskip 10\p@
+        \hskip \labelsep
+        {\it #2%
+         address@hidden
+         \ifdim address@hidden>\z@
+            \ address@hidden
+         \fi.%
+        }]%
+    \ignorespaces
+}
address@hidden
+    \trivlist
+    \item[%
+        \hskip 10\p@
+        \hskip \labelsep
+        {\it #1\ \rm #2.}%
+    ]%
+}
+\def\theequation{\arabic{equation}}
+
+\newcounter{part}
+\newcounter{section}
+\newcounter{subsection}[section]
+\newcounter{subsubsection}[subsection]
+\newcounter{paragraph}[subsubsection]
+\def\thepart{\Roman{part}}
+\def\thesection{\arabic{section}}
+\def\thesubsection{\thesection.\arabic{subsection}}
+%1 Feb 2000
+\def\thesubsubsection{\thesubsection.\arabic{subsubsection}}
+\def\theparagraph{\thesubsubsection.\arabic{paragraph}}
+
address@hidden
address@hidden
+
+%% CHANGES: NEW NOTE
+%% NOTE: OK to use old-style font commands below, since they were
+%% suitably redefined for LaTeX2e
+%% END CHANGES
+\setcounter{secnumdepth}{3}
+\def\part{%
+    address@hidden@}{-10\p@ address@hidden -4\p@ address@hidden address@hidden
+        address@hidden@ucheadtrue}%
+}
+
+% Rationale for changes made in next four definitions:
+% "Before skip" is made elastic to provide some give in setting columns (vs.
+% parskip, which is non-elastic to keep section headers "anchored" to their
+% subsequent text.
+%
+% "After skip" is minimized -- BUT setting it to 0pt resulted in run-in heads, 
despite
+% the documentation asserted only after-skip < 0pt would have result.
+%
+% Baselineskip added to style to ensure multi-line section titles, and section 
heads
+% followed by another section head rather than text, are decently spaced 
vertically.
+% 12 Jan 2000 gkmt
+\def\section{%
+    address@hidden@}{-10\p@ address@hidden -4\p@ address@hidden address@hidden
+    address@hidden
+}
+
+\def\subsection{%
+    address@hidden@}{-10\p@ address@hidden -4\p@ address@hidden address@hidden
+    {0.5pt}{\baselineskip=14pt\secfnt}%
+}
+\def\subsubsection{%
+    address@hidden@}{-10\p@ address@hidden -4\p@ address@hidden address@hidden
+    {0.5pt}{\baselineskip=14pt\subsecfnt}%
+}
+
+\def\paragraph{%
+    address@hidden@}{-10\p@ address@hidden -4\p@ address@hidden address@hidden
+    {0.5pt}{\baselineskip=14pt\subsecfnt}%
+}
+
address@hidden
address@hidden
+        address@hidden  %gkmt, 11 aug 99
+        address@hidden@empty
+        \leavevmode
+        address@hidden
+    \fi
+    \par
+    address@hidden #4\relax
+    address@hidden
+    \ifdim address@hidden <\z@
+        address@hidden address@hidden
+        address@hidden
+    \fi
+    address@hidden  11 Jan 00 gkmt
+        %\everypar{}
+    %\else
+        address@hidden
+        address@hidden
+    %\fi
+    \parskip=0pt
+    address@hidden
+        address@hidden
+        address@hidden@sect{#1}{#2}{#3}{#4}{#5}{#6}}}%
+}
+
+
address@hidden
+  address@hidden #3\relax
+  \ifdim address@hidden>\z@
+    \begingroup
+      #4{%
+        address@hidden #1}%
+          \interlinepenalty address@hidden #5\@@par}%
+    \endgroup
+  \else
+    address@hidden #1\relax #5}}%
+  \fi
+  \vskip -10.5pt  %gkmt, 7 jan 00 -- had been -14pt, now set to parskip
+  address@hidden % within the starred section, parskip = leading 12 Jan 2000 
gkmt
+
+
address@hidden
+    \ifnum #2>address@hidden
+        address@hidden@empty
+    \else
+        \refstepcounter{#1}%
+        address@hidden
+            \begingroup
+                \ifnum#2>4 \noexpand\rm \fi %changed from 2 to 4 1 Feb 2000
+                \csname the#1\endcsname
+            \endgroup
+            \ifnum #2=1\relax .\fi
+            \hskip 1em
+        }%
+    \fi
+    address@hidden #5\relax
+    \ifdim address@hidden>\z@
+        \begingroup
+            #6\relax
+            address@hidden address@hidden
+            \begingroup
+                \interlinepenalty address@hidden
+                address@hidden
+                    \uppercase{#8}%
+                \else
+                    #8%
+                \fi
+                \par
+            \endgroup
+        \endgroup
+        \csname #1mark\endcsname{#7}%
+        \vskip -10.5pt  % -14pt gkmt, 11 aug 99 -- changed to -\parskip 11 Jan 
2000
+      \addcontentsline{toc}{#1}{%
+            \ifnum #2>address@hidden \else
+                \protect\numberline{\csname the#1\endcsname}%
+            \fi
+            #7%
+        }%
+    \else
+        address@hidden
+            #6%
+            \hskip #3\relax
+            address@hidden
+            address@hidden
+                \uppercase{#8}%
+            \else
+                #8%
+            \fi
+            \csname #1mark\endcsname{#7}%
+            \addcontentsline{toc}{#1}{%
+                \ifnum #2>address@hidden \else
+                    \protect\numberline{\csname the#1\endcsname}%
+                \fi
+                #7%
+            }%
+        }%
+    \fi
+    address@hidden within the section, parskip = leading 12 Jan 2000 gkmt
+}
address@hidden
+    address@hidden #1\relax
+    \ifdim address@hidden>\z@
+        \par
+        \nobreak
+        \vskip address@hidden
+        address@hidden
+    \else
+        address@hidden
+        address@hidden
+        \everypar{%
+            address@hidden
+                address@hidden
+                address@hidden
+                \hskip -\parindent
+                \begingroup
+                    address@hidden
+                    address@hidden
+                \endgroup
+                \unskip
+                address@hidden #1\relax
+                \hskip address@hidden
+            \else
+                \clubpenalty address@hidden
+                \everypar{}%
+            \fi
+        }%
+    \fi
+    \ignorespaces
+}
+
address@hidden
+    address@hidden
+    address@hidden
+        address@hidden@empty
+        \leavevmode
+        address@hidden
+    \fi
+    \ifvmode
+        address@hidden
+    \else
+        \unskip
+        \par
+    \fi
+    address@hidden
+        address@hidden
+        address@hidden
+    \else
+        address@hidden
+        address@hidden@topsepadd
+    \fi
+    address@hidden \parskip
+    address@hidden
+    address@hidden
+    address@hidden
+    address@hidden@newlist\else{\@@par}\fi}
+    address@hidden
+    address@hidden
+}
+
+%%% Actually, 'abbrev' works just fine as the default - Gerry Feb. 2000
+%%% Bibliography style.
+
+\parindent 0pt
+\typeout{Using 'Abbrev' bibliography style}
+\newcommand\bibyear[2]{%
+    \unskip\quad\ignorespaces#1\unskip
+    \if#2..\quad \else \quad#2 \fi
+}
+\newcommand{\bibemph}[1]{{\em#1}}
+\newcommand{\bibemphic}[1]{{\em#1\/}}
+\newcommand{\bibsc}[1]{{\sc#1}}
address@hidden
+    address@hidden@tempswa , ##2\fi]}%
+}
address@hidden
+    address@hidden@tempswa , ##2\fi}%
+}
address@hidden
+    address@hidden@tempswa , ##2\fi]}%
+}
address@hidden
+    \edef\citeauthoryear##1##2##3{%
+        ###1%
+        \ifnum#2=\z@ \else\ ###2\fi
+    }%
+    \ifnum#1=\thr@@
+        \let\@@address@hidden
+    \else
+        \let\@@address@hidden
+    \fi
+    address@hidden@citeNB\@@address@hidden@@cite}%
+}
address@hidden
+\def\citeNP{\cite*}
address@hidden
+\def\citeANP{\citeA*}
address@hidden
+\def\shortciteNP{\shortcite*}
address@hidden
+\def\shortciteANP{\shortciteA*}
address@hidden
+\def\citeyearNP{\citeyear*}
+\def\citeN{%
+    address@hidden
+    \def\citeauthoryear##1##2##3{##1\ [##3%
+        address@hidden
+        \def\citeauthoryear####1####2####3{%
+            address@hidden
+            address@hidden@b
+                ####3%
+            \else
+                \errmessage{Package acmart Error: author mismatch
+                         in \string\citeN^^J^^J%
+                    See the acmart package documentation for explanation}%
+            \fi
+        }%
+    }%
+    address@hidden@address@hidden
+}
+\def\shortciteN{%
+    address@hidden
+    \def\citeauthoryear##1##2##3{##2\ [##3%
+        address@hidden
+        \def\citeauthoryear####1####2####3{%
+            address@hidden
+            address@hidden@b
+                ####3%
+            \else
+                \errmessage{Package acmart Error: author mismatch
+                         in \string\shortciteN^^J^^J%
+                    See the acmart package documentation for explanation}%
+            \fi
+        }%
+    }%
+    address@hidden@address@hidden % changed from  "address@hidden" 12 Jan 2000 
gkmt
+}
+
address@hidden
+    address@hidden address@hidden@citex;}
+                  address@hidden@citex,[]}% was ; Gerry 2/24/00
+}
address@hidden
+    address@hidden address@hidden@citex,}%
+                  address@hidden@citex,[]}%
+}
address@hidden
+    address@hidden@empty
+    address@hidden
+        address@hidden@citeb:=#3\do{%
+            address@hidden
+            address@hidden }%
+            address@hidden@address@hidden
+            address@hidden
+                address@hidden@citeb}}%
+            \fi
+            address@hidden@address@hidden
+                {\bf ?}%
+                address@hidden
+                    Citation address@hidden' on page \thepage\space undefined%
+                }%
+            }%
+            {\csname address@hidden@citeb\endcsname}%
+        }%
+    }{#2}%
+}
address@hidden@gobble
+\newdimen\bibindent
+\setcounter{enumi}{1}
+\bibindent=0em
+\def\thebibliography#1{%
+\ifnum\addauflag=0\addauthorsection\global\addauflag=1\fi
+    \section{%
+       {REFERENCES}
+        address@hidden
+    }%
+    \list{[\arabic{enumi}]}{%
+        \settowidth\labelwidth{[#1]}%
+        \leftmargin\labelwidth
+        \advance\leftmargin\labelsep
+        \advance\leftmargin\bibindent
+        \itemindent -\bibindent
+        \listparindent \itemindent
+        \usecounter{enumi}
+    }%
+    address@hidden
+    \raggedright  %% 7 JAN 2000 gkmt
+    \sloppy
+    \sfcode`\.=1000\relax
+}
+
+
+\gdef\balancecolumns
+{\vfill\eject
address@hidden
address@hidden
+}
+
+\newcount\colcntr
+\global\colcntr=0
+\newbox\savebox
+
+\gdef address@hidden {%
+\global\advance\colcntr by 1
+\ifnum\colcntr>2 \global\colcntr=1\fi
+   \ifvoid\footins
+     address@hidden address@hidden
+   \else
+     address@hidden \vbox{%
+\boxmaxdepth address@hidden
+       address@hidden@cclv
+       \unvbox address@hidden
+       address@hidden
+       \vskip \skip\footins
+       address@hidden
+         \normalcolor
+         \footnoterule
+         \unvbox \footins
+       address@hidden
+       }%
+   \fi
+   address@hidden@address@hidden
+   \global \let address@hidden address@hidden
+   address@hidden
+   address@hidden
+     address@hidden
+   \else
+     address@hidden \vbox address@hidden {%
address@hidden
+       \dimen@ address@hidden
+       \unvbox address@hidden
+   \vskip -\dimen@
+       address@hidden
+       }%
+   \fi
+   \global \maxdepth address@hidden
+}
address@hidden@address@hidden
+\global\advance\titlenotecount by 1
+\ifnum\titlenotecount=1
+    \raisebox{9pt}{$\ast$}
+\fi
+\ifnum\titlenotecount=2
+    \raisebox{9pt}{$\dagger$}
+\fi
+\ifnum\titlenotecount=3
+    \raisebox{9pt}{$\ddagger$}
+\fi
+\ifnum\titlenotecount=4
+\raisebox{9pt}{$\S$}
+\fi
+\ifnum\titlenotecount=5
+\raisebox{9pt}{$\P$}
+\fi
+         address@hidden
+}}
+
address@hidden
+\ifnum\titlenotecount=1\global\tntoks={#1}\fi
+\ifnum\titlenotecount=2\global\tntokstwo={#1}\fi
+\ifnum\titlenotecount=3\global\tntoksthree={#1}\fi
+\ifnum\titlenotecount=4\global\tntoksfour={#1}\fi
+\ifnum\titlenotecount=5\global\tntoksfive={#1}\fi
+    address@hidden
+    \interlinepenalty\interfootnotelinepenalty
+    \splittopskip\footnotesep
+    \splitmaxdepth \dp\strutbox \floatingpenalty address@hidden
+    \hsize\columnwidth address@hidden
+    address@hidden@currentlabel{%
+    }%
+    address@hidden
+   address@hidden
+
+%%%%%%%%%%%%%%%%%%%%%%%%%
address@hidden
+\baselineskip=11pt
+\let\thepage\relax % For  NO page numbers - Gerry Nov. 30th. 1999
+\def\setpagenumber#1{\global\setcounter{page}{#1}}
+%\pagenumbering{arabic}  % Arabic page numbers but commented out for NO page 
numbes - Gerry Nov. 30th. 1999
+\twocolumn             % Double column.
+\flushbottom           % Even bottom -- alas, does not balance columns at end 
of document
+\pagestyle{plain}
+
+% Need Copyright Year and Copyright Data to be user definable (in .tex file).
+% Gerry Nov. 30th. 1999
+\newtoks\copyrtyr
+\newtoks\acmcopyr
+\newtoks\boilerplate
+\def\CopyrightYear#1{\global\copyrtyr{#1}}
+\def\crdata#1{\global\acmcopyr{#1}}
+\def\permission#1{\global\boilerplate{#1}}
+%
+\newtoks\copyrightetc
+\global\copyrightetc{\ } %  Need to have 'something' so that adequate space is 
left for pasting in a line if "confinfo" is supplied.
+
+\toappear{\the\boilerplate\par
+{\confname{\the\conf}} \the\confinfo\par \the\copyrightetc}
+% End of ACM_PROC_ARTICLE-SP.CLS -- V2.01SP - 02/24/2000 --
+% Gerry Murray -- February 24th. 2000

Added: GNUnet-docs/papers/ecrs/acm_proc_article-sp.cls
===================================================================
--- GNUnet-docs/papers/ecrs/acm_proc_article-sp.cls     2005-05-31 19:10:35 UTC 
(rev 832)
+++ GNUnet-docs/papers/ecrs/acm_proc_article-sp.cls     2005-05-31 19:27:19 UTC 
(rev 833)
@@ -0,0 +1,1374 @@
+% ACM_PROC_ARTICLE-SP.CLS - VERSION 2.01SP
+% COMPATIBLE WITH THE "ACM_PROC_ARTICLE.CLS" V2.01
+% Gerald Murray February 24th, 2000.
+%
+% ---- Start of 'updates'  ----
+%
+% Allowance made to switch default fonts between those systems using
+% METAFONT and those using 'Type 1' or 'Truetype' fonts.
+% See LINE NUMBER 262 for details.
+% Also provided for enumerated/annotated Corollaries 'surrounded' by
+% enumerated Theorems (line 790).
+% Gerry November 11th. 1999
+%
+% Made the Permission Statement / Conference Info / Copyright Info
+% 'user definable' in the source .tex file OR automatic if
+% not specified.
+% This 'sp' version does NOT produce the permission block.
+%
+% Major change in January 2000 was to include a "blank line" in between
+% new paragraphs. This involved major changes to the, then, acmproc-sp.cls  
1.0SP
+% file, precipitating a 'new' name: "acm_proc_article-sp.cls" V2.01SP.
+%
+% ---- End of 'updates' ----
+%
+\def\fileversion{V2.01SP}          % for ACM's tracking purposes
+\def\filedate{February 24, 2000}    % Gerry Murray's tracking data
+\def\docdate {Thursday 24th. February 2000} % Gerry Murray (with deltas to doc}
+\usepackage{epsfig}
+\usepackage{amssymb}
+\usepackage{amsmath}
+\usepackage{amsfonts}
+%
+% ACM_PROC_ARTICLE-SP  DOCUMENT STYLE
+% G.K.M. Tobin August-October 1999
+%    adapted from ARTICLE document style by Ken Traub, Olin Shivers
+%    also using elements of esub2acm.cls
+% LATEST REVISION V2.01SP - FEBRUARY 2000
+% ARTICLE DOCUMENT STYLE -- Released 16 March 1988
+%    for LaTeX version 2.09
+% Copyright (C) 1988 by Leslie Lamport
+%
+%
+%%% ACM_PROC_ARTICLE-SP is a document style for producing two-column 
camera-ready pages for
+%%% ACM conferences, according to ACM specifications.  The main features of
+%%% this style are:
+%%%
+%%% 1)  Two columns.
+%%% 2)  Side and top margins of 4.5pc, bottom margin of 6pc, column gutter of
+%%%     2pc, hence columns are 20pc wide and 55.5pc tall.  (6pc =3D 1in, 
approx)
+%%% 3)  First page has title information, and an extra 6pc of space at the
+%%%     bottom of the first column for the ACM copyright notice.
+%%% 4)  Text is 9pt on 10pt baselines; titles (except main) are 9pt bold.
+%%%
+%%%
+%%% There are a few restrictions you must observe:
+%%%
+%%% 1)  You cannot change the font size; ACM wants you to use 9pt.
+%%% 3)  You must start your paper with the \maketitle command.  Prior to the
+%%%     \maketitle you must have \title and \author commands.  If you have a
+%%%     \date command it will be ignored; no date appears on the paper, since
+%%%     the proceedings will have a date on the front cover.
+%%% 4)  Marginal paragraphs, tables of contents, lists of figures and tables,
+%%%     and page headings are all forbidden.
+%%% 5)  The `figure' environment will produce a figure one column wide; if you
+%%%     want one that is two columns wide, use `figure*'.
+%%%
+%
+%%% Copyright Space:
+%%% This style automatically leaves 1" blank space at the bottom of page 1/
+%%% column 1.  This space can optionally be filled with some text using the
+%%% \toappear{...} command.  If used, this command must be BEFORE the 
\maketitle
+%%% command.  If this command is defined AND [preprint] is on, then the
+%%% space is filled with the {...} text (at the bottom); otherwise, it is
+%%% blank.  If you use \toappearbox{...} instead of \toappear{...} then a
+%%% box will be drawn around the text (if [preprint] is on).
+%%%
+%%% A typical usage looks like this:
+%%%     \toappear{To appear in the Ninth AES Conference on Medievil Lithuanian
+%%%               Embalming Technique, June 1991, Alfaretta, Georgia.}
+%%% This will be included in the preprint, and left out of the conference
+%%% version.
+%%%
+%%% WARNING:
+%%% Some dvi-ps converters heuristically allow chars to drift from their
+%%% true positions a few pixels. This may be noticeable with the 9pt sans-serif
+%%% bold font used for section headers.
+%%% You may turn this hackery off via the -e option:
+%%%     dvips -e 0 foo.dvi >foo.ps
+%%%
+\typeout{Document Class 'acm_proc_article-sp' <24th. Feb. '00>.  Modified by 
G.K.M. Tobin}
+\typeout{Based in part upon document Style `acmconf' <22 May 89>. Hacked 4/91 
by}
address@hidden, 4/93 by address@hidden
+\typeout{Excerpts were taken from (Journal Style) 'esub2acm.cls'.}
+\typeout{****** Bugs/comments/suggestions  to Gerry Murray -- address@hidden 
******}
+
+\oddsidemargin 4.5pc
+\evensidemargin 4.5pc
+\advance\oddsidemargin by -1in  % Correct for LaTeX gratuitousness
+\advance\evensidemargin by -1in % Correct for LaTeX gratuitousness
+\marginparwidth 0pt             % Margin pars are not allowed.
+\marginparsep 11pt              % Horizontal space between outer margin and
+                                % marginal note
+
+                                % Top of page:
+\topmargin 4.5pc                % Nominal distance from top of page to top of
+                                % box containing running head.
+\advance\topmargin by -1in      % Correct for LaTeX gratuitousness
+\headheight 0pt                 % Height of box containing running head.
+\headsep 0pt                    % Space between running head and text.
+                                % Bottom of page:
+\footskip 30pt                  % Distance from baseline of box containing foot
+                                % to baseline of last line of text.
address@hidden this is for LaTeX2e
+\footheight 12pt                % Height of box containing running foot.
+
+
+%% Must redefine the top margin so there's room for headers and
+%% page numbers if you are using the preprint option. Footers
+%% are OK as is. Olin.
+\advance\topmargin by -37pt     % Leave 37pt above text for headers
+\headheight 12pt                % Height of box containing running head.
+\headsep 25pt                   % Space between running head and text.
+
+\textheight 666pt       % 9 1/4 column height
+\textwidth 42pc         % Width of text line.
+                        % For two-column mode:
+\columnsep 2pc          %    Space between columns
+\columnseprule 0pt      %    Width of rule between columns.
+\hfuzz 1pt              % Allow some variation in column width, otherwise it's
+                        % too hard to typeset in narrow columns.
+
+\footnotesep 5.6pt      % Height of strut placed at the beginning of every
+                        % footnote =3D height of normal \footnotesize strut,
+                        % so no extra space between footnotes.
+
+\skip\footins 8.1pt plus 4pt minus 2pt  % Space between last line of text and
+                                        % top of first footnote.
+\floatsep 11pt plus 2pt minus 2pt       % Space between adjacent floats moved
+                                        % to top or bottom of text page.
+\textfloatsep 18pt plus 2pt minus 4pt   % Space between main text and floats
+                                        % at top or bottom of page.
+\intextsep 11pt plus 2pt minus 2pt      % Space between in-text figures and
+                                        % text.
address@hidden@address@hidden this is for LaTeX2e
address@hidden 18pt                           % The maximum of \floatsep,
+                                        % \textfloatsep and \intextsep (minus
+                                        % the stretch and shrink).
+\dblfloatsep 11pt plus 2pt minus 2pt    % Same as \floatsep for double-column
+                                        % figures in two-column mode.
+\dbltextfloatsep 18pt plus 2pt minus 4pt% \textfloatsep for double-column
+                                        % floats.
address@hidden@address@hidden this is for LaTeX2e
address@hidden 18pt                        % The maximum of \dblfloatsep and
+                                        % \dbltexfloatsep.
address@hidden 0pt plus 1fil    % Stretch at top of float page/column. (Must be
+                         % 0pt plus ...)
address@hidden 8pt plus 2fil    % Space between floats on float page/column.
address@hidden 0pt plus 1fil    % Stretch at bottom of float page/column. (Must 
be
+                         % 0pt plus ... )
address@hidden 0pt plus 1fil % Stretch at top of float page. (Must be 0pt plus 
...)
address@hidden 8pt plus 2fil % Space between floats on float page.
address@hidden 0pt plus 1fil % Stretch at bottom of float page. (Must be
+                         % 0pt plus ... )
+\marginparpush 5pt       % Minimum vertical separation between two marginal
+                         % notes.
+
+\parskip 0pt                % Extra vertical space between paragraphs.
+                    % Set to 0pt outside sections, to keep section heads
+                    % uniformly spaced.  The value of parskip is set
+                    % to leading value _within_ sections.
+                    % 12 Jan 2000 gkmt
+\parindent 0pt                % Width of paragraph indentation.
+\partopsep 2pt plus 1pt minus 1pt% Extra vertical space, in addition to
+                                 % \parskip and \topsep, added when user
+                                 % leaves blank line before environment.
+
address@hidden   51       % Produced by \nopagebreak[1] or \nolinebreak[1]
address@hidden  151       % Produced by \nopagebreak[2] or \nolinebreak[2]
address@hidden 301       % Produced by \nopagebreak[3] or \nolinebreak[3]
+
address@hidden address@hidden % Before a list or paragraph environment.
address@hidden   address@hidden % After a list or paragraph environment.
address@hidden     address@hidden % Between list items.
+
address@hidden@address@hidden `10pt' option is not allowed in the `acmconf'
+  document address@hidden
address@hidden@address@hidden `11pt' option is not allowed in the `acmconf'
+  document address@hidden
address@hidden@address@hidden `12pt' option is not allowed in the `acmconf'
+  document address@hidden
+
address@hidden
+
+\lineskip 2pt           % \lineskip is 1pt for all font sizes.
+\normallineskip 2pt
+\def\baselinestretch{1}
+
+\abovedisplayskip 9pt plus2pt minus4.5pt%
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip  \z@ plus3pt%
+\belowdisplayshortskip  5.4pt plus3pt minus3pt%
address@hidden@listI     % Setting of address@hidden added 9 Jun 87
+
address@hidden@viiipt
+\abovedisplayskip 7.6pt plus 3pt minus 4pt%
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus2pt%
+\belowdisplayshortskip 3.6pt plus2pt minus 2pt
address@hidden %% Added 22 Dec 87
+\topsep 4pt plus 2pt minus 2pt\parsep 2pt plus 1pt minus 1pt
+\itemsep \parsep}}
+
address@hidden@ixpt
+\abovedisplayskip 6.4pt plus 2pt minus 4pt%
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus 1pt%
+\belowdisplayshortskip 2.7pt plus 1pt minus 2pt
address@hidden %% Added 22 Dec 87
+\topsep 3pt plus 1pt minus 1pt\parsep 2pt plus 1pt minus 1pt
+\itemsep \parsep}}
+
+\newcount\aucount
+\newcount\originalaucount
+\newdimen\auwidth
+\auwidth=\textwidth
+\newdimen\auskip
+\newcount\auskipcount
+\newdimen\auskip
+\global\auskip=1pc
+\newdimen\allauboxes
+\allauboxes=\auwidth
+\newtoks\addauthors
+\newcount\addauflag
+\global\addauflag=0 %Haven't shown additional authors yet
+
+\newtoks\subtitletext
+\gdef\subtitle#1{\subtitletext={#1}}
+
+\gdef\additionalauthors#1{\addauthors={#1}}
+
+\gdef\numberofauthors#1{\global\aucount=#1
+\ifnum\aucount>3\global\originalaucount=\aucount \global\aucount=3\fi %g}
+\global\auskipcount=\aucount\global\advance\auskipcount by 1
+\global\multiply\auskipcount by 2
+\global\multiply\auskip by \auskipcount
+\global\advance\auwidth by -\auskip
+\global\divide\auwidth by \aucount}
+
+% \and was modified to count the number of authors.  GKMT 12 Aug 1999
+\def\alignauthor{%                  % \begin{tabular}
+\end{tabular}%
+  \begin{tabular}[t]{p{\auwidth}}\centering}%
+
+%  *** NOTE *** NOTE *** NOTE *** NOTE ***
+%  If you have 'font problems' then you may need
+%  to change these, e.g. 'arialb' instead of "arialbd".
+%  Gerry Murray 11/11/1999
+%  *** OR ** comment out block A and activate block B or vice versa.
+% **********************************************
+%
+%  -- Start of block A -- (Type 1 or Truetype fonts)
+%\newfont{\secfnt}{timesbd at 12pt} % was timenrb originally - now is timesbd
+%\newfont{\secit}{timesbi at 12pt}   %13 Jan 00 gkmt
+%\newfont{\subsecfnt}{timesi at 11pt} % was timenrri originally - now is timesi
+%\newfont{\subsecit}{timesbi at 11pt} % 13 Jan 00 gkmt -- was times changed to 
timesbi gm 2/4/2000
+%                         % because "normal" is italic, "italic" is Roman
+%\newfont{\ttlfnt}{arialbd at 18pt} % was arialb originally - now is arialbd
+%\newfont{\ttlit}{arialbi at 18pt}    % 13 Jan 00 gkmt
+%\newfont{\subttlfnt}{arial at 14pt} % was arialr originally - now is arial
+%\newfont{\subttlit}{ariali at 14pt} % 13 Jan 00 gkmt
+%\newfont{\subttlbf}{arialbd at 14pt}  % 13 Jan 00 gkmt
+%\newfont{\aufnt}{arial at 12pt} % was arialr originally - now is arial
+%\newfont{\auit}{ariali at 12pt} % 13 Jan 00 gkmt
+%\newfont{\affaddr}{arial at 10pt} % was arialr originally - now is arial
+%\newfont{\affaddrit}{ariali at 10pt} %13 Jan 00 gkmt
+%\newfont{\eaddfnt}{arial at 12pt} % was arialr originally - now is arial
+%\newfont{\ixpt}{times at 9pt} % was timenrr originally - now is times
+%\newfont{\confname}{timesi at 8pt} % was timenrri - now is timesi
+%\newfont{\crnotice}{times at 8pt} % was timenrr originally - now is times
+%\newfont{\ninept}{times at 9pt} % was timenrr originally - now is times
+
+% *********************************************
+%  -- End of block A --
+%
+%
+% -- Start of block B -- METAFONT
+% +++++++++++++++++++++++++++++++++++++++++++++
+% Next (default) block for those using Metafont
+% Gerry Murray 11/11/1999
+% *** THIS BLOCK FOR THOSE USING METAFONT *****
+% *********************************************
+\newfont{\secfnt}{ptmb at 12pt}
+\newfont{\secit}{ptmbi at 12pt}    %13 Jan 00 gkmt
+\newfont{\subsecfnt}{ptmri at 11pt}
+\newfont{\subsecit}{ptmbi at 11pt}  % 13 Jan 00 gkmt -- was ptmr changed to 
ptmbi gm 2/4/2000
+                         % because "normal" is italic, "italic" is Roman
+\newfont{\ttlfnt}{phvb at 18pt}
+\newfont{\ttlit}{phvbo at 18pt}    % GM 2/4/2000
+\newfont{\subttlfnt}{phvr at 14pt}
+\newfont{\subttlit}{phvro at 14pt} % GM 2/4/2000
+\newfont{\subttlbf}{phvb at 14pt}  % 13 Jan 00 gkmt
+\newfont{\aufnt}{phvr at 12pt}
+\newfont{\auit}{phvro at 12pt}     % GM 2/4/2000
+\newfont{\affaddr}{phvr at 10pt}
+\newfont{\affaddrit}{phvro at 10pt} % GM 2/4/2000
+\newfont{\eaddfnt}{phvr at 12pt}
+\newfont{\ixpt}{ptmr at 9pt}
+\newfont{\confname}{ptmri at 8pt}
+\newfont{\crnotice}{ptmr at 8pt}
+\newfont{\ninept}{ptmr at 9pt}
+% +++++++++++++++++++++++++++++++++++++++++++++
+% -- End of block B --
+
+
+
+\def\email#1{{{\eaddfnt{\vskip 4pt#1}}}}
+
+\def\addauthorsection{\ifnum\originalaucount>3
+    \section{Additional Authors}\the\addauthors
+  \fi}
+
+\newcount\savesection
+\newcount\sectioncntr
+\global\sectioncntr=1
+
+\setcounter{secnumdepth}{3}
+
+\def\appendix{\par
+\section*{APPENDIX}
+\setcounter{section}{0}
+ \setcounter{subsection}{0}
+ \def\thesection{\Alph{section}} }
+
+
+\leftmargini 22.5pt
+\leftmarginii 19.8pt    % > \labelsep + width of '(m)'
+\leftmarginiii 16.8pt   % > \labelsep + width of 'vii.'
+\leftmarginiv 15.3pt    % > \labelsep + width of 'M.'
+\leftmarginv 9pt
+\leftmarginvi 9pt
+
+\leftmargin\leftmargini
+\labelsep 4.5pt
+\labelwidth\leftmargini\advance\labelwidth-\labelsep
+
address@hidden \parsep 3.6pt plus 2pt minus 1pt%
+\topsep 7.2pt plus 2pt minus 4pt%
+\itemsep 3.6pt plus 2pt minus 1pt}
+
address@hidden@listI
address@hidden
+
address@hidden
+   \labelwidth\leftmarginii\advance\labelwidth-\labelsep
+   \topsep 3.6pt plus 2pt minus 1pt
+   \parsep 1.8pt plus 0.9pt minus 0.9pt
+   \itemsep \parsep}
+
address@hidden
+    \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
+    \topsep 1.8pt plus 0.9pt minus 0.9pt
+    \parsep \z@ \partopsep 1pt plus 0pt minus 1pt
+    \itemsep \topsep}
+
address@hidden
+     \labelwidth\leftmarginiv\advance\labelwidth-\labelsep}
+
address@hidden
+     \labelwidth\leftmarginv\advance\labelwidth-\labelsep}
+
address@hidden
+     \labelwidth\leftmarginvi\advance\labelwidth-\labelsep}
+
+\def\labelenumi{\theenumi.}
+\def\theenumi{\arabic{enumi}}
+
+\def\labelenumii{(\theenumii)}
+\def\theenumii{\alph{enumii}}
address@hidden
+
+\def\labelenumiii{\theenumiii.}
+\def\theenumiii{\roman{enumiii}}
address@hidden(\theenumii)}
+
+\def\labelenumiv{\theenumiv.}
+\def\theenumiv{\Alph{enumiv}}
address@hidden@enumiii\theenumiii}
+
+\def\labelitemi{$\bullet$}
+\def\labelitemii{\bf --}
+\def\labelitemiii{$\ast$}
+\def\labelitemiv{$\cdot$}
+
address@hidden
+  \list{}{\itemsep\z@ \itemindent -1.5em\listparindent \itemindent
+          \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]}
+\let\endverse\endlist
+
+\def\quotation{\list{}{\listparindent 1.5em
+    \itemindent\listparindent
+    \rightmargin\leftmargin \parsep 0pt plus 1pt}\item[]}
+\let\endquotation=\endlist
+
+\def\quote{\list{}{\rightmargin\leftmargin}\item[]}
+\let\endquote=\endlist
+
+\def\descriptionlabel#1{\hspace\labelsep \bf #1}
+\def\description{\list{}{\labelwidth\z@ \itemindent-\leftmargin
+       \let\makelabel\descriptionlabel}}
+
+\let\enddescription\endlist
+
+\def\theequation{\arabic{equation}}
+
+\arraycolsep 4.5pt   % Half the space between columns in an array environment.
+\tabcolsep 5.4pt     % Half the space between columns in a tabular environment.
+\arrayrulewidth .4pt % Width of rules in array and tabular environment.
+\doublerulesep 1.8pt % Space between adjacent rules in array or tabular env.
+
+\tabbingsep \labelsep   % Space used by the \' command.  (See LaTeX manual.)
+
address@hidden =\skip\footins
+
+\fboxsep =2.7pt      % Space left between box and text by \fbox and \framebox.
+\fboxrule =.4pt      % Width of rules in box made by \fbox and \framebox.
+
+\def\thepart{\Roman{part}} % Roman numeral part numbers.
+\def\thesection       {\arabic{section}}
+\def\thesubsection    {\thesection.\arabic{subsection}}
+\def\thesubsubsection {\thesubsection.\arabic{subsubsection}}
+\def\theparagraph     {\thesubsubsection.\arabic{paragraph}}
+\def\thesubparagraph  {\theparagraph.\arabic{subparagraph}}
+
address@hidden
address@hidden {2.55em}
address@hidden
+\setcounter{tocdepth}{3}
+
address@hidden: Tables of contents are not
+  allowed in the `acmconf' document address@hidden
+
address@hidden@secpenalty}
+   \addvspace{2.25em plus 1pt}  % space above part line
+   \begingroup
+   address@hidden 3em       % width of box holding part number, used by
+     \parindent \z@ \rightskip address@hidden      %% \numberline
+     \parfillskip address@hidden
+     {\large \bf        % set line in \large boldface
+     \leavevmode        % TeX command to enter horizontal mode.
+     #1\hfil \hbox address@hidden #2}}\par
+     \nobreak           % Never break after part entry
+   \endgroup}
+
address@hidden@secpenalty} % good place for page break
+   \addvspace{1.0em plus 1pt}   % space above toc entry
+   address@hidden 1.5em             % width of box holding section number
+   \begingroup
+     \parindent \z@ \rightskip address@hidden
+     \parfillskip address@hidden
+     \bf                        % Boldface.
+     \leavevmode                % TeX command to enter horizontal mode.
+      address@hidden %% added 5 Feb 88 to conform to
+      \hskip -\leftskip           %% 25 Jan 88 change to \numberline
+     #1\nobreak\hfil \nobreak\hbox address@hidden #2}\par
+   \endgroup}
+
+
address@hidden@dottedtocline{2}{1.5em}{2.3em}}
address@hidden@dottedtocline{3}{3.8em}{3.2em}}
address@hidden@dottedtocline{4}{7.0em}{4.1em}}
address@hidden@dottedtocline{5}{10em}{5em}}
+
address@hidden: Lists of figures are not
+  allowed in the `acmconf' document address@hidden
+
address@hidden@dottedtocline{1}{1.5em}{2.3em}}
+
address@hidden: Lists of tables are not
+  allowed in the `acmconf' document address@hidden
address@hidden@figure
+
+\def\footnoterule{\kern-3\p@
+  \hrule width .4\columnwidth
+  \kern address@hidden                 % The \hrule has default height of .4pt 
.
address@hidden
+\hbox to address@hidden
+
address@hidden
+#1}
+
address@hidden
+            \hbox to 1.8em{\hss$^{#1}$}#2}
+
+\setcounter{topnumber}{2}
+\def\topfraction{.7}
+\setcounter{bottomnumber}{1}
+\def\bottomfraction{.3}
+\setcounter{totalnumber}{3}
+\def\textfraction{.2}
+\def\floatpagefraction{.5}
+\setcounter{dbltopnumber}{2}
+\def\dbltopfraction{.7}
+\def\dblfloatpagefraction{.5}
+
address@hidden
+   \vskip \baselineskip
+   address@hidden: #2}}
+   \ifdim address@hidden >\hsize % IF longer than one line:
+       \textbf{#1: #2}\par               %   THEN set as ordinary paragraph.
+     \else                      %   ELSE  center.
+       \hbox address@hidden
+   \fi}
+
address@hidden {figure}} % this is for LaTeX2e
+
address@hidden
address@hidden
address@hidden
address@hidden \thefigure}
address@hidden
address@hidden
address@hidden@dblfloat{figure}}
address@hidden@dblfloat}
+
address@hidden {table}} % this is for LaTeX2e
+
address@hidden
address@hidden
address@hidden
address@hidden \thetable}
address@hidden
address@hidden
address@hidden@dblfloat{table}}
address@hidden@dblfloat}
+
+\newtoks\titleboxnotes
+\newcount\titleboxnoteflag
+
+\def\maketitle{\par
+ \begingroup
+   \def\thefootnote{\fnsymbol{footnote}}
+   address@hidden
+       to address@hidden
+     address@hidden
address@hidden
+ \endgroup
+ \setcounter{footnote}{0}
+ \let\maketitle\relax
+ address@hidden
+ address@hidden@address@hidden@subtitle{}\let\thanks\relax
+ address@hidden
+
+%% CHANGES ON NEXT LINES
address@hidden % to record which version of LaTeX is in use
+
+\expandafter\ifx\csname LaTeXe\endcsname\relax % LaTeX2.09 is used
+\else% LaTeX2e is used, so set ll to true
address@hidden
+\fi
+
address@hidden
+  \NeedsTeXFormat{LaTeX2e}
+  \ProvidesClass{acm_proc_article-sp} [2000/02/24 - V2.01SP - based on 
esub2acm.sty <23 April 96>]
+  \RequirePackage{latexsym}% QUERY: are these two really needed?
+  \let\dooptions\ProcessOptions
+\else
+  address@hidden
+\fi
+%% END CHANGES
+
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden@{\hbox to}
address@hidden
address@hidden
address@hidden@faircopytrue}
+
address@hidden@faircopyfalse}
+
address@hidden
address@hidden
address@hidden address@hidden
+%% CHANGE ON NEXT LINE
+\dooptions
+
+\lineskip \p@
+\normallineskip \p@
+\def\baselinestretch{1}
address@hidden %needed for amssymbols.sty
+
+%% CHANGES ON NEXT LINES
address@hidden allow use of old-style font change commands in LaTeX2e
address@hidden
+%
+\DeclareOldFontCommand{\rm}{\ninept\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
address@hidden
address@hidden
address@hidden
address@hidden
+\fi
+%
address@hidden
+ \renewcommand{\rmdefault}{cmr}  % was 'ttm'
+% Note! I have also found 'mvr' to work ESPECIALLY well.
+% Gerry - October 1999
+% You may need to change your LV1times.fd file so that sc is
+% mapped to cmcsc - -for smallcaps -- that is if you decide
+% to change {cmr} to {times} above. (Not recommended)
+  address@hidden
+  \renewcommand{\normalsize}{%
+    address@hidden@address@hidden
+    \abovedisplayskip 6\p@ address@hidden@ address@hidden@
+    \belowdisplayskip \abovedisplayskip
+    \abovedisplayshortskip 6\p@ address@hidden 3\p@
+    \belowdisplayshortskip 6\p@ address@hidden 3\p@
+    address@hidden@listI
+  }
+\else
+  address@hidden next to 9 from 10
+    address@hidden@address@hidden
+   \abovedisplayskip 6\p@ address@hidden@ address@hidden@
+    \belowdisplayskip \abovedisplayskip
+    \abovedisplayshortskip 6\p@ address@hidden 3\p@
+    \belowdisplayshortskip 6\p@ address@hidden 3\p@
+    address@hidden@listI
+  }%
+\fi
address@hidden
+  address@hidden@address@hidden
+  address@hidden@address@hidden
+  address@hidden@address@hidden
+  address@hidden@address@hidden
+  address@hidden@address@hidden
+  address@hidden@address@hidden
+  address@hidden@address@hidden
+\else
+  address@hidden@address@hidden
+  address@hidden@address@hidden
+  address@hidden@address@hidden
+  address@hidden@address@hidden
+  address@hidden@address@hidden
+  address@hidden@address@hidden
+  address@hidden@address@hidden
+\fi
+\normalsize
+
+% make aubox hsize/number of authors up to 3, less gutter
+% then showbox gutter showbox gutter showbox -- GKMT Aug 99
address@hidden
address@hidden
+ \null
+ address@hidden
+\baselineskip 20pt
+\vskip 2em                   % Vertical space above title.
+   \begin{center}
+    {\ttlfnt address@hidden       % Title set in 18pt Helvetica (Arial) bold 
size.
+    \vskip 1.5em                % Vertical space after title.
+%This should be the subtitle.
+{\subttlfnt \the\subtitletext\par}\vskip 1.25em%\fi
+    {\baselineskip 16pt\aufnt   % each author set in \12 pt Arial, in a
+     \lineskip .5em             % tabular environment
+     address@hidden
+     \end{tabular}\par}
+    \vskip 1.5em               % Vertical space after author.
+   \end{center}}
+ address@hidden
+ \advance\dimen0 by -12.75pc\relax % Increased space for title box -- KBT
+ address@hidden
+ \ifdim\dimen0<0.0pt\relax\vskip-\dimen0\fi}
+
+
+\newcount\titlenotecount
+\global\titlenotecount=0
+\newtoks\tntoks
+\newtoks\tntokstwo
+\newtoks\tntoksthree
+\newtoks\tntoksfour
+\newtoks\tntoksfive
+
+\def\abstract{
+\ifnum\titlenotecount>0 % was =1
+    \insert\footins{%
+    address@hidden
+        \interlinepenalty\interfootnotelinepenalty
+        \splittopskip\footnotesep
+        \splitmaxdepth \dp\strutbox \floatingpenalty address@hidden
+        \hsize\columnwidth address@hidden
+        address@hidden@currentlabel{%
+        }%
+        address@hidden
+\ifnum\titlenotecount=1
+      address@hidden
+         address@hidden@finalstrut\strutbox}%
+\fi
+\ifnum\titlenotecount=2
+      address@hidden
+      address@hidden@finalstrut\strutbox}%
address@hidden
+         address@hidden@finalstrut\strutbox}%
+\fi
+\ifnum\titlenotecount=3
+      address@hidden
+         address@hidden@finalstrut\strutbox}%
address@hidden
+         address@hidden@finalstrut\strutbox}%
address@hidden
+         address@hidden@finalstrut\strutbox}%
+\fi
+\ifnum\titlenotecount=4
+      address@hidden
+         address@hidden@finalstrut\strutbox}%
address@hidden
+         address@hidden@finalstrut\strutbox}%
address@hidden
+         address@hidden@finalstrut\strutbox}%
address@hidden
+         address@hidden@finalstrut\strutbox}%
+\fi
+\ifnum\titlenotecount=5
+      address@hidden
+         address@hidden@finalstrut\strutbox}%
address@hidden
+         address@hidden@finalstrut\strutbox}%
address@hidden
+         address@hidden@finalstrut\strutbox}%
address@hidden
+         address@hidden@finalstrut\strutbox}%
address@hidden
+         address@hidden@finalstrut\strutbox}%
+\fi
+   address@hidden %g}
+\fi
+\setcounter{footnote}{0}
+\section*{ABSTRACT}\normalsize %\the\parskip \the\baselineskip%\ninept
+}
+
address@hidden
+
address@hidden
+\section*{Keywords}
+\else \small
+\quotation
+\fi}
+
+% I've pulled the check for 2 cols, since proceedings are _always_
+% two-column  11 Jan 2000 gkmt
address@hidden
+\section*{General Terms}
+%\else \small
+%\quotation\the\parskip
+%\fi}
+}
+
+% -- Classification needs to be a bit smart due to optionals - Gerry/Georgia 
November 2nd. 1999
+\newcount\catcount
+\global\catcount=1
+
+\def\category#1#2#3{%
+\ifnum\catcount=1
+\section*{Categories and Subject Descriptors}
+\advance\catcount by 1\else{\unskip; }\fi
+    address@hidden address@hidden@category{#1}{#2}{#3}[]}%
+}
+
address@hidden
+    \begingroup
+        \let\and\relax
+            #1 [\textbf{#2}]%
+            \if!#4!%
+                \if!#3!\else : #3\fi
+            \else
+                :\space
+                \if!#3!\else address@hidden@\fi
+                \textit{#4}%
+            \fi
+    \endgroup
+}
+%
+
+%%% This section (written by KBT) handles the 1" box in the lower left
+%%% corner of the left column of the first page by creating a picture,
+%%% and inserting the predefined string at the bottom (with a negative
+%%% displacement to offset the space allocated for a non-existent
+%%% caption).
+%%%
+\newtoks\copyrightnotice
address@hidden
address@hidden
address@hidden
+\begin{center}
+\setlength{\unitlength}{1pc}
+\begin{picture}(20,6) %Space for copyright notice
+\put(0,-0.95)address@hidden
+\end{picture}
+\end{center}
address@hidden
+
address@hidden % Default setting blank - commands below change this.
address@hidden 9pt#1}}}
address@hidden
+
+\newtoks\conf
+\newtoks\confinfo
+\def\conferenceinfo#1#2{\global\conf={#1}\global\confinfo{#2}}
+
+
address@hidden \marginpar command is not allowed in the
+  `acmconf' document address@hidden
+
+\mark{{}{}}     % Initializes TeX's marks
+
+\def\today{\ifcase\month\or
+  January\or February\or March\or April\or May\or June\or
+  July\or August\or September\or October\or November\or December\fi
+  \space\number\day, \number\year}
+
address@hidden
+    \trivlist
+    \item[%
+        \hskip 10\p@
+        \hskip \labelsep
+        {{\sc #1}\hskip address@hidden
+    ]
+    \it
+}
address@hidden
+    \trivlist
+    \item[%
+        \hskip 10\p@
+        \hskip \labelsep
+        {\sc #1\ #2\             % This mod by Gerry to enumerate corollaries
+   address@hidden(#3)}  % and bracket the 'corollary title'
+        \ifdim address@hidden>\z@ % and retain the correct numbering of e.g. 
theorems
+            \hskip address@hidden    % if they occur 'around' said corollaries.
+            address@hidden       % Gerry - Nov. 1999.
+        \fi.}%
+    ]
+    \it
+}
address@hidden
address@hidden
+\def\proof{%
+    address@hidden
+    address@hidden@address@hidden
+}
+
+\def\endproof{%
+    address@hidden
+    \endtrivlist
+}
address@hidden
+    \trivlist
+    \item[%
+        \hskip 10\p@
+        \hskip \labelsep
+        {\sc Proof.}%
+    ]
+    \ignorespaces
+}
address@hidden
+    \trivlist
+    \item[\hskip address@hidden \labelsep{\sc Proof #1.}]%
+    \ignorespaces
+}
+\def\qed{%
+    \unskip
+    \kern 10\p@
+    \begingroup
+        \unitlength\p@
+        address@hidden
+        \framebox(6,6){}%
+    \endgroup
+    address@hidden
+}
+
+\def\newdef#1#2{%
+    address@hidden #1\endcsname
+        address@hidden
+         \expandafter\xdef\csname address@hidden
+         address@hidden@defthm{#1}{#2}}%
+         address@hidden@endtheorem}%
+    }%
+}
address@hidden
+    \refstepcounter{#1}%
+    address@hidden@address@hidden
+}
address@hidden
+    address@hidden the#1\endcsname}%
+    \ignorespaces
+}
address@hidden
+    \trivlist
+    \item[%
+        \hskip 10\p@
+        \hskip \labelsep
+        {\it #2%
+         address@hidden
+         \ifdim address@hidden>\z@
+            \ address@hidden
+         \fi.%
+        }]%
+    \ignorespaces
+}
address@hidden
+    \trivlist
+    \item[%
+        \hskip 10\p@
+        \hskip \labelsep
+        {\it #1\ \rm #2.}%
+    ]%
+}
+\def\theequation{\arabic{equation}}
+
+\newcounter{part}
+\newcounter{section}
+\newcounter{subsection}[section]
+\newcounter{subsubsection}[subsection]
+\newcounter{paragraph}[subsubsection]
+\def\thepart{\Roman{part}}
+\def\thesection{\arabic{section}}
+\def\thesubsection{\thesection.\arabic{subsection}}
+%1 Feb 2000
+\def\thesubsubsection{\thesubsection.\arabic{subsubsection}}
+\def\theparagraph{\thesubsubsection.\arabic{paragraph}}
+
address@hidden
address@hidden
+
+%% CHANGES: NEW NOTE
+%% NOTE: OK to use old-style font commands below, since they were
+%% suitably redefined for LaTeX2e
+%% END CHANGES
+\setcounter{secnumdepth}{3}
+\def\part{%
+    address@hidden@}{-10\p@ address@hidden -4\p@ address@hidden address@hidden
+        address@hidden@ucheadtrue}%
+}
+
+% Rationale for changes made in next four definitions:
+% "Before skip" is made elastic to provide some give in setting columns (vs.
+% parskip, which is non-elastic to keep section headers "anchored" to their
+% subsequent text.
+%
+% "After skip" is minimized -- BUT setting it to 0pt resulted in run-in heads, 
despite
+% the documentation asserted only after-skip < 0pt would have result.
+%
+% Baselineskip added to style to ensure multi-line section titles, and section 
heads
+% followed by another section head rather than text, are decently spaced 
vertically.
+% 12 Jan 2000 gkmt
+\def\section{%
+    address@hidden@}{-10\p@ address@hidden -4\p@ address@hidden address@hidden
+    address@hidden
+}
+
+\def\subsection{%
+    address@hidden@}{-10\p@ address@hidden -4\p@ address@hidden address@hidden
+    {4pt}{\baselineskip=14pt\secfnt}%
+}
+\def\subsubsection{%
+    address@hidden@}{-10\p@ address@hidden -4\p@ address@hidden address@hidden
+    {3pt}{\baselineskip=14pt\subsecfnt}%
+}
+
+\def\paragraph{%
+    address@hidden@}{-10\p@ address@hidden -4\p@ address@hidden address@hidden
+    {2pt}{\baselineskip=14pt\subsecfnt}%
+}
+
address@hidden
address@hidden
+        address@hidden  %gkmt, 11 aug 99
+        address@hidden@empty
+        \leavevmode
+        address@hidden
+    \fi
+    \par
+    address@hidden #4\relax
+    address@hidden
+    \ifdim address@hidden <\z@
+        address@hidden address@hidden
+        address@hidden
+    \fi
+    address@hidden  11 Jan 00 gkmt
+        %\everypar{}
+    %\else
+        address@hidden
+        address@hidden
+    %\fi
+    \parskip=0pt
+    address@hidden
+        address@hidden
+        address@hidden@sect{#1}{#2}{#3}{#4}{#5}{#6}}}%
+}
+
+
address@hidden
+  address@hidden #3\relax
+  \ifdim address@hidden>\z@
+    \begingroup
+      #4{%
+        address@hidden #1}%
+          \interlinepenalty address@hidden #5\@@par}%
+    \endgroup
+  \else
+    address@hidden #1\relax #5}}%
+  \fi
+  \vskip -10.5pt  %gkmt, 7 jan 00 -- had been -14pt, now set to parskip
+  address@hidden % within the starred section, parskip = leading 12 Jan 2000 
gkmt
+
+
address@hidden
+    \ifnum #2>address@hidden
+        address@hidden@empty
+    \else
+        \refstepcounter{#1}%
+        address@hidden
+            \begingroup
+                \ifnum#2>4 \noexpand\rm \fi %changed from 2 to 4 1 Feb 2000
+                \csname the#1\endcsname
+            \endgroup
+            \ifnum #2=1\relax .\fi
+            \hskip 1em
+        }%
+    \fi
+    address@hidden #5\relax
+    \ifdim address@hidden>\z@
+        \begingroup
+            #6\relax
+            address@hidden address@hidden
+            \begingroup
+                \interlinepenalty address@hidden
+                address@hidden
+                    \uppercase{#8}%
+                \else
+                    #8%
+                \fi
+                \par
+            \endgroup
+        \endgroup
+        \csname #1mark\endcsname{#7}%
+        \vskip -10.5pt  % -14pt gkmt, 11 aug 99 -- changed to -\parskip 11 Jan 
2000
+      \addcontentsline{toc}{#1}{%
+            \ifnum #2>address@hidden \else
+                \protect\numberline{\csname the#1\endcsname}%
+            \fi
+            #7%
+        }%
+    \else
+        address@hidden
+            #6%
+            \hskip #3\relax
+            address@hidden
+            address@hidden
+                \uppercase{#8}%
+            \else
+                #8%
+            \fi
+            \csname #1mark\endcsname{#7}%
+            \addcontentsline{toc}{#1}{%
+                \ifnum #2>address@hidden \else
+                    \protect\numberline{\csname the#1\endcsname}%
+                \fi
+                #7%
+            }%
+        }%
+    \fi
+    address@hidden within the section, parskip = leading 12 Jan 2000 gkmt
+}
address@hidden
+    address@hidden #1\relax
+    \ifdim address@hidden>\z@
+        \par
+        \nobreak
+        \vskip address@hidden
+        address@hidden
+    \else
+        address@hidden
+        address@hidden
+        \everypar{%
+            address@hidden
+                address@hidden
+                address@hidden
+                \hskip -\parindent
+                \begingroup
+                    address@hidden
+                    address@hidden
+                \endgroup
+                \unskip
+                address@hidden #1\relax
+                \hskip address@hidden
+            \else
+                \clubpenalty address@hidden
+                \everypar{}%
+            \fi
+        }%
+    \fi
+    \ignorespaces
+}
+
address@hidden
+    address@hidden
+    address@hidden
+        address@hidden@empty
+        \leavevmode
+        address@hidden
+    \fi
+    \ifvmode
+        address@hidden
+    \else
+        \unskip
+        \par
+    \fi
+    address@hidden
+        address@hidden
+        address@hidden
+    \else
+        address@hidden
+        address@hidden@topsepadd
+    \fi
+    address@hidden \parskip
+    address@hidden
+    address@hidden
+    address@hidden
+    address@hidden@newlist\else{\@@par}\fi}
+    address@hidden
+    address@hidden
+}
+
+%%% Actually, 'abbrev' works just fine as the default - Gerry Feb. 2000
+%%% Bibliography style.
+
+\parindent 0pt
+\typeout{Using 'Abbrev' bibliography style}
+\newcommand\bibyear[2]{%
+    \unskip\quad\ignorespaces#1\unskip
+    \if#2..\quad \else \quad#2 \fi
+}
+\newcommand{\bibemph}[1]{{\em#1}}
+\newcommand{\bibemphic}[1]{{\em#1\/}}
+\newcommand{\bibsc}[1]{{\sc#1}}
address@hidden
+    address@hidden@tempswa , ##2\fi]}%
+}
address@hidden
+    address@hidden@tempswa , ##2\fi}%
+}
address@hidden
+    address@hidden@tempswa , ##2\fi]}%
+}
address@hidden
+    \edef\citeauthoryear##1##2##3{%
+        ###1%
+        \ifnum#2=\z@ \else\ ###2\fi
+    }%
+    \ifnum#1=\thr@@
+        \let\@@address@hidden
+    \else
+        \let\@@address@hidden
+    \fi
+    address@hidden@citeNB\@@address@hidden@@cite}%
+}
address@hidden
+\def\citeNP{\cite*}
address@hidden
+\def\citeANP{\citeA*}
address@hidden
+\def\shortciteNP{\shortcite*}
address@hidden
+\def\shortciteANP{\shortciteA*}
address@hidden
+\def\citeyearNP{\citeyear*}
+\def\citeN{%
+    address@hidden
+    \def\citeauthoryear##1##2##3{##1\ [##3%
+        address@hidden
+        \def\citeauthoryear####1####2####3{%
+            address@hidden
+            address@hidden@b
+                ####3%
+            \else
+                \errmessage{Package acmart Error: author mismatch
+                         in \string\citeN^^J^^J%
+                    See the acmart package documentation for explanation}%
+            \fi
+        }%
+    }%
+    address@hidden@address@hidden
+}
+\def\shortciteN{%
+    address@hidden
+    \def\citeauthoryear##1##2##3{##2\ [##3%
+        address@hidden
+        \def\citeauthoryear####1####2####3{%
+            address@hidden
+            address@hidden@b
+                ####3%
+            \else
+                \errmessage{Package acmart Error: author mismatch
+                         in \string\shortciteN^^J^^J%
+                    See the acmart package documentation for explanation}%
+            \fi
+        }%
+    }%
+    address@hidden@address@hidden % changed from  "address@hidden" 12 Jan 2000 
gkmt
+}
+
address@hidden
+    address@hidden address@hidden@citex;}
+                  address@hidden@citex,[]}% was ; Gerry 2/24/00
+}
address@hidden
+    address@hidden address@hidden@citex,}%
+                  address@hidden@citex,[]}%
+}
address@hidden
+    address@hidden@empty
+    address@hidden
+        address@hidden@citeb:=#3\do{%
+            address@hidden
+            address@hidden }%
+            address@hidden@address@hidden
+            address@hidden
+                address@hidden@citeb}}%
+            \fi
+            address@hidden@address@hidden
+                {\bf ?}%
+                address@hidden
+                    Citation address@hidden' on page \thepage\space undefined%
+                }%
+            }%
+            {\csname address@hidden@citeb\endcsname}%
+        }%
+    }{#2}%
+}
address@hidden@gobble
+\newdimen\bibindent
+\setcounter{enumi}{1}
+\bibindent=0em
+\def\thebibliography#1{%
+\ifnum\addauflag=0\addauthorsection\global\addauflag=1\fi
+    \section{%
+       {REFERENCES}
+        address@hidden
+    }%
+    \list{[\arabic{enumi}]}{%
+        \settowidth\labelwidth{[#1]}%
+        \leftmargin\labelwidth
+        \advance\leftmargin\labelsep
+        \advance\leftmargin\bibindent
+        \itemindent -\bibindent
+        \listparindent \itemindent
+        \usecounter{enumi}
+    }%
+    address@hidden
+    \raggedright  %% 7 JAN 2000 gkmt
+    \sloppy
+    \sfcode`\.=1000\relax
+}
+
+
+\gdef\balancecolumns
+{\vfill\eject
address@hidden
address@hidden
+}
+
+\newcount\colcntr
+\global\colcntr=0
+\newbox\savebox
+
+\gdef address@hidden {%
+\global\advance\colcntr by 1
+\ifnum\colcntr>2 \global\colcntr=1\fi
+   \ifvoid\footins
+     address@hidden address@hidden
+   \else
+     address@hidden \vbox{%
+\boxmaxdepth address@hidden
+       address@hidden@cclv
+       \unvbox address@hidden
+       address@hidden
+       \vskip \skip\footins
+       address@hidden
+         \normalcolor
+         \footnoterule
+         \unvbox \footins
+       address@hidden
+       }%
+   \fi
+   address@hidden@address@hidden
+   \global \let address@hidden address@hidden
+   address@hidden
+   address@hidden
+     address@hidden
+   \else
+     address@hidden \vbox address@hidden {%
address@hidden
+       \dimen@ address@hidden
+       \unvbox address@hidden
+   \vskip -\dimen@
+       address@hidden
+       }%
+   \fi
+   \global \maxdepth address@hidden
+}
address@hidden@address@hidden
+\global\advance\titlenotecount by 1
+\ifnum\titlenotecount=1
+    \raisebox{9pt}{$\ast$}
+\fi
+\ifnum\titlenotecount=2
+    \raisebox{9pt}{$\dagger$}
+\fi
+\ifnum\titlenotecount=3
+    \raisebox{9pt}{$\ddagger$}
+\fi
+\ifnum\titlenotecount=4
+\raisebox{9pt}{$\S$}
+\fi
+\ifnum\titlenotecount=5
+\raisebox{9pt}{$\P$}
+\fi
+         address@hidden
+}}
+
address@hidden
+\ifnum\titlenotecount=1\global\tntoks={#1}\fi
+\ifnum\titlenotecount=2\global\tntokstwo={#1}\fi
+\ifnum\titlenotecount=3\global\tntoksthree={#1}\fi
+\ifnum\titlenotecount=4\global\tntoksfour={#1}\fi
+\ifnum\titlenotecount=5\global\tntoksfive={#1}\fi
+    address@hidden
+    \interlinepenalty\interfootnotelinepenalty
+    \splittopskip\footnotesep
+    \splitmaxdepth \dp\strutbox \floatingpenalty address@hidden
+    \hsize\columnwidth address@hidden
+    address@hidden@currentlabel{%
+    }%
+    address@hidden
+   address@hidden
+
+%%%%%%%%%%%%%%%%%%%%%%%%%
address@hidden
+\baselineskip=11pt
+\let\thepage\relax % For  NO page numbers - Gerry Nov. 30th. 1999
+\def\setpagenumber#1{\global\setcounter{page}{#1}}
+%\pagenumbering{arabic}  % Arabic page numbers but commented out for NO page 
numbes - Gerry Nov. 30th. 1999
+\twocolumn             % Double column.
+\flushbottom           % Even bottom -- alas, does not balance columns at end 
of document
+\pagestyle{plain}
+
+% Need Copyright Year and Copyright Data to be user definable (in .tex file).
+% Gerry Nov. 30th. 1999
+\newtoks\copyrtyr
+\newtoks\acmcopyr
+\newtoks\boilerplate
+\def\CopyrightYear#1{\global\copyrtyr{#1}}
+\def\crdata#1{\global\acmcopyr{#1}}
+\def\permission#1{\global\boilerplate{#1}}
+%
+\newtoks\copyrightetc
+\global\copyrightetc{\ } %  Need to have 'something' so that adequate space is 
left for pasting in a line if "confinfo" is supplied.
+
+\toappear{\the\boilerplate\par
+{\confname{\the\conf}} \the\confinfo\par \the\copyrightetc}
+% End of ACM_PROC_ARTICLE-SP.CLS -- V2.01SP - 02/24/2000 --
+% Gerry Murray -- February 24th. 2000

Added: GNUnet-docs/papers/ecrs/acmtrans.bst
===================================================================
--- GNUnet-docs/papers/ecrs/acmtrans.bst        2005-05-31 19:10:35 UTC (rev 
832)
+++ GNUnet-docs/papers/ecrs/acmtrans.bst        2005-05-31 19:27:19 UTC (rev 
833)
@@ -0,0 +1,1770 @@
+% "ACM Transactions" BibTeX style, acmtrans.bst 
+%  for BibTeX version 0.99c, LaTeX version 3.141
+%  Revised 28-MARCH-1996
+%  Revised 30-JUNE-1995
+%  Revised 15-JAN-1996 
+%  $Header: /home/cvs/GNUnet/GNUnet-docs/papers/esed2/acmtrans.bst,v 1.1 
2003/10/28 05:25:33 grothoff Exp $
+%
+% Hacked by John T. Boyland at University of California, Berkeley
+% (with assistance by John R. Hauser)
+% Hacked by Andrew W. Appel and Rebecca L. Davies at Princeton University,
+% based on a "chicago.bst" by Glenn Paulley at U. Waterloo,
+% which was based on "newapa.bst" found at ymir.claremont.edu.
+%
+%   Citation format: [author-last-name year]
+%             [author-last-name and author-last-name year]
+%             [author-last-name, author-last-name, and author-last-name year]
+%             [author-last-name et al. year]
+%             [author-last-name]
+%             author-last-name [year]
+%             [author-last-name and author-last-name]
+%             [author-last-name et al.]
+%             [year] or [year,year]
+%             year or year,year
+%
+%   Reference list ordering: alphabetical by author or whatever passes
+%    for author in the absence of one.
+%
+% This BibTeX style has support for abbreviated author lists and for
+%    year-only citations.  This is done by having the citations
+%    actually look like
+%
+%    \citeauthoryear{full-author-info}{abbrev-author-info}{year}
+%
+% The LaTeX style has to have the following (or similar)
+%
+%     address@hidden
+%     \def\fullcite{\def\citeauthoryear##1##2##3{##1, address@hidden
+%     address@hidden
+%     \def\shortcite{\def\citeauthoryear##1##2##3{##2, address@hidden
+%     address@hidden
+%     address@hidden
+%
+% These TeX macro definitions are found in acmtrans.sty. Additional
+% commands to manipulate different components of a citation can be defined
+% so that, for example, you can list author's names without parentheses
+% if using a citation as a noun or object in a sentence.
+%
+% Features of acmtrans.bst:
+% ========================
+%
+% - all authors appear last name first.
+% - all pages are listed xx-xx, (no pp.) and are at the end of the reference
+% - publishers are identified as publisher, address
+% - conferences papers (inproceedings) may give city of conference,
+%   date of conference, and journal that the proceedings appear in.
+% - months abbreviated to max four letters (eg. Mar.)
+% - volume of a series indicated after the title of the series
+% - editors appear after edited title and are identified by a trailing "Eds."
+%   not in parentheses.  Editor names are not given in small caps.
+%   (unless there is no author line)
+% - names terminated with a period even if there is no first name.
+% - editions are indicated trailing after the work, not in parentheses.
+% - "et al." citations have a protected period to avoid bad spacing (jrh)
+% - "address" required when publisher given
+% - series (roman) and volume are in a sentence separate from (book-)title
+%
+%
+% Features of chicago.bst:
+% =======================
+%
+% - full names used in citations, but abbreviated citations are available
+%   (see above)
+% - if an entry has a "month", then the month and year are also printed
+%   as part of that bibitem.
+% - all conjunctions use "and" instead of "\&"
+% - major modification from Chicago Manual of Style (13th ed.) is that
+%   only the first author in a reference appears last name first-
+%   additional authors appear as J. Q. Public.
+% - pages are listed as "pp. xx-xx" in all entry types except
+%   article entries.
+% - book, inbook, and manual use "location: publisher" (or organization)
+%   for address and publisher. All other types list publishers separately.
+% - "pp." are used to identify page numbers for all entry types except
+%   articles.
+% - organization is used as a citation label if neither author nor editor
+%   is present (for manuals).
+% - "et al." is used for long author and editor lists, or when "others"
+%   is used.
+%
+% Modifications and bug fixes from newapa.bst:
+% ===========================================
+%
+%   - added month, year to bib entries if month is present
+%   - fixed bug with In proceedings, added necessary comma after title
+%   - all conjunctions changed to "and" from "\&"
+%   - fixed bug with author labels in my.full.label: "et al." now is
+%        generated when "others" is an author name
+%   - major modification from Chicago Manual of Style (13th ed.) is that
+%     only the first author in a reference appears last name first-
+%     additional authors appear as J. Q. Public.
+%   - pages are listed as "pp. xx-xx" in all entry types except
+%     article entries. Unnecessary (IMHO) "()" around page numbers
+%     were removed, and page numbers now don't end with a period.
+%   - created chicago.sty for use with this bibstyle (required).
+%   - fixed bugs in FUNCTION {format.vol.num.pages} for missing volume,
+%     number, and /or pages. Renamed to format.jour.vol.
+%   - fixed bug in formatting booktitles: additional period an error if
+%     book has a volume.
+%   - fixed bug: editors usually given redundant period before next clause
+%     (format.editors.dot) removed.
+%   - added label support for organizations, if both author and editor
+%     are missing (from alpha.bst). If organization is too long, then
+%     the key field is used for abbreviated citations.
+%   - In proceedings or books of several volumes, no comma was written
+%     between the "Volume x" and the page numbers (this was intentional
+%     in newapa.bst). Fixed.
+%   - Some journals may not have volumes/numbers, only month/year (eg.
+%     IEEE Computer). Fixed bug in article style that assumed volume/number
+%     was always present.
+%
+% Original documentation for newapa.sty:
+% =====================================
+%
+% This version was made by modifying the master file made by
+% Oren Patashnik (address@hidden), and the 'named' BibTeX
+% style of Peter F. Patel-Schneider.
+%
+% Copyright (C) 1985, all rights reserved.
+% Copying of this file is authorized only if either
+% (1) you make absolutely no changes to your copy, including name, or
+% (2) if you do make changes, you name it something other than 'newapa.bst'.
+% There are undoubtably bugs in this style.  If you make bug fixes,
+% improvements, etc.  please let me know.  My e-mail address is:
+%    address@hidden or address@hidden
+%
+% This style was made from 'plain.bst', 'named.bst', and 'apalike.bst',
+% with lots of tweaking to make it look like APA style, along with tips
+% from Young Ryu and Brian Reiser's modifications of 'apalike.bst'.
+
+ENTRY
+  { address
+    author
+    booktitle
+    chapter
+    city       % jtb: added
+    date       % jtb: added
+    edition
+    editor
+    howpublished
+    institution
+    journal
+    key
+    month
+    note
+    number
+    organization
+    pages
+    publisher
+    school
+    series
+    title
+    type
+    volume
+    year
+  }
+  {}
+  { label.year extra.label sort.year sort.label }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+  #1 'mid.sentence :=
+  #2 'after.sentence :=
+  #3 'after.block :=
+}
+
+STRINGS { s t u }
+
+FUNCTION {output.nonnull}
+{ 's :=
+  output.state mid.sentence =
+    { ", " * write$ }
+    { output.state after.block =
+    { add.period$ write$
+      newline$
+      "\newblock " write$
+    }
+    { output.state before.all =
+        'write$
+        { add.period$ " " * write$ }
+      if$
+    }
+      if$
+      mid.sentence 'output.state :=
+    }
+  if$
+  s
+}
+
+% Use a colon to separate output. Used only for address/publisher
+% combination in book/inbook types, address/institution for manuals,
+% and organization:publisher for proceedings (inproceedings).
+%
+FUNCTION {output.nonnull.colon}
+{ 's :=
+  output.state mid.sentence =
+    { ": " * write$ }
+    { output.state after.block =
+    { add.period$ write$
+      newline$
+      "\newblock " write$
+    }
+    { output.state before.all =
+        'write$
+        { add.period$ " " * write$ }
+      if$
+    }
+      if$
+      mid.sentence 'output.state :=
+    }
+  if$
+  s
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+    'pop$
+    'output.nonnull
+  if$
+}
+
+FUNCTION {output.colon}
+{ duplicate$ empty$
+    'pop$
+    'output.nonnull.colon
+  if$
+}
+
+FUNCTION {output.check}
+{ 't :=
+  duplicate$ empty$
+    { pop$ "empty " t * " in " * cite$ * warning$ }
+    'output.nonnull
+  if$
+}
+
+FUNCTION {output.check.colon}
+{ 't :=
+  duplicate$ empty$
+    { pop$ "empty " t * " in " * cite$ * warning$ }
+    'output.nonnull.colon
+  if$
+}
+
+FUNCTION {output.year.check}
+{ year empty$
+     { "empty year in " cite$ * warning$ }
+     { write$
+        " " year * extra.label *
+       mid.sentence 'output.state :=
+     }
+  if$
+}
+
+
+FUNCTION {fin.entry}
+{ add.period$
+  write$
+  newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+    'skip$
+    { after.block 'output.state := }
+  if$
+}
+
+FUNCTION {new.sentence}
+{ output.state after.block =
+    'skip$
+    { output.state before.all =
+    'skip$
+    { after.sentence 'output.state := }
+      if$
+    }
+  if$
+}
+
+FUNCTION {not}
+{   { #0 }
+    { #1 }
+  if$
+}
+
+FUNCTION {and}
+{   'skip$
+    { pop$ #0 }
+  if$
+}
+
+FUNCTION {or}
+{   { pop$ #1 }
+    'skip$
+  if$
+}
+
+FUNCTION {new.block.checka}
+{ empty$
+    'skip$
+    'new.block
+  if$
+}
+
+FUNCTION {new.block.checkb}
+{ empty$
+  swap$ empty$
+  and
+    'skip$
+    'new.block
+  if$
+}
+
+FUNCTION {new.sentence.checka}
+{ empty$
+    'skip$
+    'new.sentence
+  if$
+}
+
+FUNCTION {new.sentence.checkb}
+{ empty$
+  swap$ empty$
+  and
+    'skip$
+    'new.sentence
+  if$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+    { pop$ "" }
+    'skip$
+  if$
+}
+
+%
+% Emphasize the top string on the stack.
+%
+FUNCTION {emphasize}
+{ duplicate$ empty$
+    { pop$ "" }
+    { "{\em " swap$ * "}" * }
+  if$
+}
+
+%
+% Emphasize the top string on the stack, but add a trailing space.
+%
+FUNCTION {emphasize.space}
+{ duplicate$ empty$
+    { pop$ "" }
+    { "{\em " swap$ * "\/}" * }
+  if$
+}
+
+%
+% Emphasize the top string on stack, add a trailing comma and space.
+%
+FUNCTION {emphasize.comma}
+{ duplicate$ empty$
+    { pop$ "" }
+    { "{\em " swap$ * ",\/}" * }
+  if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+%
+% Format bibliographical entries with the first author last name first,
+% and subsequent authors with initials followed by last name.
+% All names are formatted in this routine.
+%
+
+FUNCTION {format.names}
+{ 's :=
+  #1 'nameptr :=               % nameptr = 1;
+  s num.names$ 'numnames :=    % numnames = num.name$(s);
+  numnames 'namesleft :=
+    { namesleft #0 > }
+
+    { nameptr #1 =
+        {"{\sc " s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ * "}" * 't := }
+        {"{\sc " s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ * "}" * 't := }
+      if$
+      nameptr #1 >
+        { namesleft #1 >
+              { ", " * t * }
+              { numnames #2 >
+                  { "," * }
+                  'skip$
+                if$
+                t "{\sc others}" =
+                    { " {\sc et~al\mbox{.}}" * } % jrh: avoid spacing problems
+                    { " {\sc and} " * t * } % from Chicago Manual of Style
+                  if$
+               }
+               if$
+             }
+            't
+        if$
+        nameptr #1 + 'nameptr :=          % nameptr += 1;
+        namesleft #1 - 'namesleft :=      % namesleft =- 1;
+    }
+  while$
+}
+
+FUNCTION {my.full.label}
+{ 's :=
+  #1 'nameptr :=               % nameptr = 1;
+  s num.names$ 'numnames :=    % numnames = num.name$(s);
+  numnames 'namesleft :=
+    { namesleft #0 > }
+
+    { s nameptr "{vv~}{ll}" format.name$ 't :=  % get the next name
+      nameptr #1 >
+        { namesleft #1 >
+              { ", " * t * }
+              { numnames #2 >
+                  { "," * }
+                  'skip$
+                if$
+                t "others" =
+                    { " et~al\mbox{.}" * } % jrh: avoid spacing problems
+                    { " and " * t * } % from Chicago Manual of Style
+                  if$
+               }
+               if$
+             }
+            't
+        if$
+        nameptr #1 + 'nameptr :=          % nameptr += 1;
+        namesleft #1 - 'namesleft :=      % namesleft =- 1;
+    }
+  while$
+
+}
+
+FUNCTION {format.names.fml}
+%
+% Format names in "familiar" format, with first initial followed by
+% last name. Like format.names, ALL names are formatted.
+% jtb: The names are NOT put in small caps
+%
+{ 's :=
+  #1 'nameptr :=               % nameptr = 1;
+  s num.names$ 'numnames :=    % numnames = num.name$(s);
+  numnames 'namesleft :=
+    { namesleft #0 > }
+
+    { "{" s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ * "}" * 't :=
+
+      nameptr #1 >
+        { namesleft #1 >
+              { ", " * t * }
+               { numnames #2 >
+                    { "," * }
+                    'skip$
+                  if$
+                  t "{others}" =
+                        { " {et~al\mbox{.}}" * }
+                        { " {and} " * t * }
+%                       { " {\&} " * t * }
+                      if$
+                }
+               if$
+             }
+            't
+        if$
+        nameptr #1 + 'nameptr :=          % nameptr += 1;
+        namesleft #1 - 'namesleft :=      % namesleft =- 1;
+    }
+  while$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+    { "" }
+    { author format.names add.period$} % jtb: add period if none before
+  if$
+}
+
+FUNCTION {format.key}
+{ empty$
+    { key field.or.null }
+    { "" }
+  if$
+}
+
+%
+% Format editor names for use in the "in" types: inbook, incollection,
+% inproceedings: first initial, then last names. When editors are the
+% LABEL for an entry, then format.editor is used which lists editors
+% by last name first.
+%
+FUNCTION {format.editors.fml}
+{ editor empty$
+    { "" }
+    { editor format.names.fml
+      editor num.names$ #1 >
+    { ", Eds." * }     % jtb: removed parentheses
+    { ", Ed." * }      % jtb: removed parentheses
+      if$
+    }
+  if$
+}
+
+%
+% Format editor names for use in labels, last names first.
+%
+FUNCTION {format.editors}
+{ editor empty$
+    { "" }
+    { editor format.names
+      editor num.names$ #1 >
+    { ", Eds." * }     % jtb: removed parentheses
+    { ", Ed." * }      % jtb: removed parentheses
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.title}
+{ title empty$
+    { "" }
+    { title "t" change.case$ }
+  if$
+}
+
+% Note that the APA style requres case changes
+% in article titles. The following does not
+% change cases. If you perfer it, uncomment the
+% following and comment out the above.
+
+%FUNCTION {format.title}
+%{ title empty$
+%    { "" }
+%    { title }
+%  if$
+%}
+
+FUNCTION {n.dashify}
+{ 't :=
+  ""
+    { t empty$ not }
+    { t #1 #1 substring$ "-" =
+    { t #1 #2 substring$ "--" = not
+        { "--" *
+          t #2 global.max$ substring$ 't :=
+        }
+        {   { t #1 #1 substring$ "-" = }
+        { "-" *
+          t #2 global.max$ substring$ 't :=
+        }
+          while$
+        }
+      if$
+    }
+    { t #1 #1 substring$ *
+      t #2 global.max$ substring$ 't :=
+    }
+      if$
+    }
+  while$
+}
+
+FUNCTION {format.btitle}
+{ edition empty$
+  { title emphasize }
+  { title empty$
+    { title emphasize } % jtb: what is this supposed to do ?!?
+    { "{\em " title * "\/}, " * edition * " ed." * } % jtb: no parens for ed.
+    if$
+  }
+  if$
+}
+
+FUNCTION {format.emphasize.booktitle}
+{ edition empty$
+  { booktitle emphasize }
+  { booktitle empty$
+    { booktitle emphasize } % jtb: what is this supposed to do ?!?
+    { "{\em " booktitle * "\/}, " * edition * " ed." * } % jtb: no ()s for ed.
+    if$
+    }
+  if$
+  }
+
+% jtb: if the preceding string (the title of the conference) is non-empty,
+% jtb: append the location, otherwise leave empty (so as to trigger the
+% jtb: error message in output.check
+FUNCTION {format.city}
+{ duplicate$ empty$
+  { }
+  { city empty$
+     { date empty$
+       { }
+       { " (" * date * ")" * }
+       if$
+     }
+     { date empty$
+       { " (" * city * ")" * }
+       { " (" * city * ", " * date * ")" * }
+       if$
+     }
+     if$
+  }
+  if$
+}
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+    { "~" }
+    { " " }
+  if$
+  swap$ * *
+}
+
+FUNCTION {either.or.check}
+{ empty$
+    'pop$
+    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+  if$
+}
+
+% jtb: If there is a series, this is added and the volume trails after it.
+% jtb: Otherwise, "Vol" is Capitalized.
+FUNCTION {format.bvolume}
+{ volume empty$
+    { "" }
+    { series empty$
+        { "Vol." volume tie.or.space.connect}
+        { series ", " * "vol." volume tie.or.space.connect *}
+      if$
+      "volume and number" number either.or.check
+    }
+  if$
+}
+
+FUNCTION {format.number.series}
+{ volume empty$
+    { number empty$
+    { series field.or.null }
+    { output.state mid.sentence =
+        { "Number" } % gnp - changed to mixed case always
+        { "Number" }
+      if$
+      number tie.or.space.connect
+      series empty$
+        { "there's a number but no series in " cite$ * warning$ }
+        { " in " * series * }
+      if$
+    }
+      if$
+    }
+    { "" }
+  if$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+  #0 'multiresult :=
+    { multiresult not
+      t empty$ not
+      and
+    }
+    { t #1 #1 substring$
+      duplicate$ "-" =
+      swap$ duplicate$ "," =
+      swap$ "+" =
+      or or
+    { #1 'multiresult := }
+    { t #2 global.max$ substring$ 't := }
+      if$
+    }
+  while$
+  multiresult
+}
+
+FUNCTION {format.pages}
+{ pages empty$
+  { "" }
+  { pages multi.page.check
+       { pages n.dashify } % gnp - removed () % jtb: removed pp.
+       { pages }
+    if$
+  }
+  if$
+}
+
+% By Young (and Spencer)
+% GNP - fixed bugs with missing volume, number, and/or pages
+%
+% Format journal, volume, number, pages for article types.
+%
+FUNCTION {format.jour.vol}
+{ journal empty$
+    { "no journal in " cite$ * warning$
+      "" }
+    { journal emphasize.space }
+    if$
+  number empty$
+    { volume empty$
+       { "no number and no volume in " cite$ * warning$
+         "" * }
+       { "~{\em " * Volume * "}" * }
+      if$
+    }
+    { volume empty$
+      {"no volume for " cite$ * warning$
+       "~" * number * }
+      { "~" *
+        volume emphasize.comma
+        "~" * number * * }
+      if$
+     month empty$
+     {} 
+     {" (" * month * ")" *} 
+     if$
+    }
+  if$
+  pages empty$
+    {"page numbers missing in " cite$ * warning$
+     "" * } % gnp - place a null string on the stack for output
+    { duplicate$ empty$
+      { pop$ format.pages }
+      { ", " *  pages n.dashify * } % gnp - removed pp. for articles
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+    'format.pages
+    { type empty$
+        { "Chapter" } % gnp - changed to mixed case
+        { type "t" change.case$ }
+      if$
+      chapter tie.or.space.connect
+      pages empty$
+        {"page numbers missing in " cite$ * warning$} % gnp - added check
+        { ", " * format.pages * }
+      if$
+    }
+  if$
+}
+
+% jtb: format for collections or proceedings not appearing in a journal
+FUNCTION {format.in.emphasize.booktitle}
+{ booktitle empty$
+  { "" }
+  { "In " format.emphasize.booktitle * }
+  if$
+}
+
+% jtb: format for proceedings appearing in a journal
+FUNCTION {format.in.booktitle}
+{ booktitle empty$
+  { "" }
+  { "In " booktitle * }
+  if$
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+  { "" }
+  { editor empty$
+    { "In " format.emphasize.booktitle * }
+               % jtb: swapped editor location
+    { "In " format.emphasize.booktitle * ", " * format.editors.fml * }
+    if$
+  }
+  if$
+}
+
+FUNCTION {format.thesis.type}
+{ type empty$ 
+    'skip$
+%   {pop$
+   {{ "" }
+   type "t" change.case$}
+  if$
+}
+
+FUNCTION {format.tr.number}
+{ type empty$
+    { "Tech. Rep." }
+    'type
+  if$
+  number empty$
+    { "t" change.case$ }
+    { number tie.or.space.connect }
+  if$
+}
+
+FUNCTION {format.article.crossref}
+{ "See"
+  "\citeN{" * crossref * "}" *
+}
+
+FUNCTION {format.crossref.editor}
+{ editor #1 "{vv~}{ll}" format.name$
+  editor num.names$ duplicate$
+  #2 >
+    { pop$ " et~al\mbox{.}" * }                % jrh: avoid spacing problems
+    { #2 <
+    'skip$
+    { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+        { " et~al\mbox{.}" * }         % jrh: avoid spacing problems
+        { " and " * editor #2 "{vv~}{ll}" format.name$ * }
+      if$
+    }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.book.crossref}
+{ volume empty$
+    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+      "In "
+    }
+    { "Volume" volume tie.or.space.connect % gnp - changed to mixed case
+      " of " *
+    }
+  if$
+  editor empty$
+  editor field.or.null author field.or.null =
+  or
+    { key empty$
+    { series empty$
+        { "need editor, key, or series for " cite$ * " to crossref " *
+          crossref * warning$
+          "" *
+        }
+        { "{\em " * series * "\/}" * }
+      if$
+    }
+    { key * }
+      if$
+    }
+    { format.crossref.editor * }
+  if$
+  " \citeN{" * crossref * "}" *
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{ "See"
+  " \citeN{" * crossref * "}" *
+}
+
+% format.lab.names:
+%
+% determines "short" names for the abbreviated author information.
+% "Long" labels are created in calc.label, using the routine my.full.label
+% to format author and editor fields.
+%
+% There are 4 cases for labels.   (n=3 in the example)
+% a) one author             Foo
+% b) one to n               Foo, Bar and Baz
+% c) use of "and others"    Foo, Bar et al.
+% d) more than n            Foo et al.
+%
+FUNCTION {format.lab.names}
+{ 's :=
+  s num.names$ 'numnames :=
+  numnames #2 >    % change number to number of others allowed before
+                  % forcing "et al".
+    { s #1 "{vv~}{ll}" format.name$ " et~al\mbox{.}" * } % jrh: \mbox{} added
+    {
+      numnames #1 - 'namesleft :=
+      #2 'nameptr :=
+      s #1 "{vv~}{ll}" format.name$
+       { namesleft #0 > }
+       { nameptr numnames =
+           { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+               { " et~al\mbox{.}" * }          % jrh: avoid spacing problems
+               { " and " * s nameptr "{vv~}{ll}" format.name$ * }
+             if$
+           }
+           { ", " * s nameptr "{vv~}{ll}" format.name$ * }
+         if$
+         nameptr #1 + 'nameptr :=
+         namesleft #1 - 'namesleft :=
+       }
+      while$
+    }
+  if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+    { key empty$
+          { "no key, author in " cite$ * warning$
+            cite$ #1 #3 substring$ }
+         'key
+      if$
+    }
+    { author format.lab.names }
+  if$
+}
+
+FUNCTION {editor.key.label}
+{ editor empty$
+    { key empty$
+          { "no key, editor in " cite$ * warning$
+            cite$ #1 #3 substring$ }
+          'key
+        if$
+     }
+     { editor format.lab.names }
+  if$
+}
+
+FUNCTION {author.key.organization.label}
+%
+% added - gnp. Provide label formatting by organization if author is null.
+%
+{ author empty$
+    { organization empty$
+       { key empty$
+           { "no key, author or organization in " cite$ * warning$
+              cite$ #1 #3 substring$ }
+           'key
+         if$
+       }
+        { organization }
+      if$
+    }
+    { author format.lab.names }
+  if$
+}
+
+FUNCTION {editor.key.organization.label}
+%
+% added - gnp. Provide label formatting by organization if editor is null.
+%
+{ editor empty$
+    { organization empty$
+       { key empty$
+           { "no key, editor or organization in " cite$ * warning$
+              cite$ #1 #3 substring$ }
+           'key
+         if$
+       }
+        { organization }
+      if$
+    }
+    { editor format.lab.names }
+  if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+    { editor empty$
+          { key empty$
+               { "no key, author, or editor in " cite$ * warning$
+                 cite$ #1 #3 substring$ }
+             'key
+           if$
+         }
+          { editor format.lab.names }
+      if$
+    }
+    { author format.lab.names }
+  if$
+}
+
+FUNCTION {calc.label}
+%
+% Changed - GNP. See also author.organization.sort, editor.organization.sort
+% Form label for BibTeX entry. The classification of which fields are used
+% for which type of entry (book, inbook, etc.) are taken from alpha.bst.
+% The change here from newapa is to also include organization as a
+% citation label if author or editor is missing.
+%
+{ type$ "book" =
+  type$ "inbook" =
+  or
+    'author.editor.key.label
+    { type$ "proceedings" =
+       'editor.key.organization.label
+       { type$ "manual" =
+           'author.key.organization.label
+           'author.key.label
+         if$
+       }
+      if$
+    }
+  if$
+
+  author empty$  % generate the full label citation information.
+    { editor empty$
+        { organization empty$
+           { "no author, editor, or organization in " cite$ * warning$
+             "??" }
+           { organization }
+           if$
+        }
+        { editor my.full.label }
+        if$
+    }
+    { author my.full.label }
+  if$
+
+% leave label on the stack, to be popped when required.
+
+  "}{" * swap$ * "}{" *
+%  year field.or.null purify$ #-1 #4 substring$ *
+%
+% save the year for sort processing afterwards (adding a, b, c, etc.)
+%
+  year field.or.null purify$ #-1 #4 substring$
+  'label.year :=
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+
+  "\bibitem[\protect\citeauthoryear{" write$
+  calc.label write$
+  sort.year write$
+  "}]{" write$
+
+  cite$ write$
+  "}" write$
+  newline$
+  ""
+  before.all 'output.state :=
+}
+
+FUNCTION {article}
+{ output.bibitem
+  format.authors
+  "author" output.check
+  author format.key output          % added
+  output.year.check                 % added
+  new.block
+  format.title
+  "title" output.check
+  new.block
+  crossref missing$
+    { format.jour.vol output
+    }
+    { format.article.crossref output.nonnull
+      format.pages output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {book}
+{ output.bibitem
+  author empty$
+    { format.editors
+         "author and editor" output.check }
+    { format.authors
+         output.nonnull
+      crossref missing$
+       { "author and editor" editor either.or.check }
+       'skip$
+      if$
+    }
+  if$
+  output.year.check       % added
+  new.block
+  format.btitle
+  "title" output.check
+  crossref missing$
+    { new.sentence             % jtb: start a new sentence for series/volume
+      format.bvolume output
+      new.block
+      format.number.series output
+      new.sentence
+      publisher "publisher" output.check
+      address "address" output.check   % jtb: require address
+    }
+    { new.block
+      format.book.crossref output.nonnull
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {booklet}
+{ output.bibitem
+  format.authors output
+  author format.key output          % added
+  output.year.check                 % added
+  new.block
+  format.title
+  "title" output.check
+  new.block
+  howpublished output
+  address output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+  author empty$
+    { format.editors
+      "author and editor" output.check
+    }
+    { format.authors output.nonnull
+      crossref missing$
+    { "author and editor" editor either.or.check }
+    'skip$
+      if$
+    }
+  if$
+  output.year.check                 % added
+  new.block
+  format.btitle
+  "title" output.check
+  crossref missing$
+    { new.sentence             % jtb: start a new sentence for series/volume
+      format.bvolume output
+      new.block
+      format.number.series output
+      new.sentence
+      publisher "publisher" output.check
+      address "address" output.check   % jtb: require address
+      format.chapter.pages
+      "chapter and pages" output.check % jtb: moved from before publisher
+    }
+    { format.chapter.pages "chapter and pages" output.check
+      new.block
+      format.book.crossref output.nonnull
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+  format.authors
+  "author" output.check
+  author format.key output       % added
+  output.year.check              % added
+  new.block
+  format.title
+  "title" output.check
+  new.block
+  crossref missing$
+  { format.in.ed.booktitle
+    "booktitle" output.check
+    new.sentence               % jtb: start a new sentence for series/volume
+    format.bvolume output
+    format.number.series output
+    new.sentence
+    publisher "publisher" output.check
+    address "address" output.check     % jtb: require address
+    format.chapter.pages output % gnp - was special.output.nonnull
+%                                 left out comma before page numbers
+                               % jtb: moved from before publisher
+  }
+  { format.incoll.inproc.crossref
+       output.nonnull
+    format.chapter.pages output
+  }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+  format.authors
+  "author" output.check
+  author format.key output            % added
+  output.year.check                   % added
+  new.block
+  format.title
+  "title" output.check
+  new.block
+  crossref missing$
+    { journal missing$         % jtb: proceedings appearing in journals
+      { format.in.emphasize.booktitle format.city "booktitle" output.check
+        format.editors.fml output
+        new.sentence           % jtb: start a new sentence for series/volume
+        format.bvolume output
+        format.number.series output
+        new.sentence
+        organization output
+        publisher "publisher" output.check % jtb: require publisher (?)
+        address "address" output.check % jtb: require address
+        format.pages output    % jtb: moved from before publisher
+       }
+       % jtb: new:
+       { format.in.booktitle format.city "booktitle" output.check
+         format.editors.fml output
+         new.sentence
+         format.jour.vol output
+       }
+       if$
+      }
+    { format.incoll.inproc.crossref output.nonnull
+      format.pages output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{ output.bibitem
+  author empty$
+    { editor empty$
+      { organization "organization" output.check
+        organization format.key output }  % if all else fails, use key
+      { format.editors "author and editor" output.check }
+      if$
+    }
+    { format.authors output.nonnull }
+    if$
+  output.year.check                 % added
+  new.block
+  format.btitle
+  "title" output.check
+  organization address new.block.checkb
+  % jtb: back to normal style: organization, address
+  organization "organization" output.check
+  address output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+  format.authors
+  "author" output.check
+  author format.key output          % added
+  output.year.check                 % added
+  new.block
+  format.title
+  "title" output.check
+  new.block
+  "M.S.\ thesis" format.thesis.type output.nonnull
+  school "school" output.check
+  address output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {misc}
+{ output.bibitem
+  format.authors output
+  author format.key output            % added
+  output.year.check                   % added
+  title howpublished new.block.checkb
+  format.title output
+  new.block
+  howpublished output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+  format.authors
+  "author" output.check
+  author format.key output            % added
+  output.year.check                   % added
+  new.block
+  format.title
+  "title" output.check
+  new.block  
+  format.thesis.type "Ph.D. thesis" output.nonnull
+  school "school" output.check
+  address output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+  editor empty$
+    { organization output
+      organization format.key output }  % gnp - changed from author format.key
+    { format.editors output.nonnull }
+  if$
+% author format.key output             % gnp - removed (should be either
+%                                        editor or organization
+  output.year.check                    % added (newapa)
+  new.block
+  format.btitle format.city "title" output.check       % jtb: added city
+  new.sentence
+  format.bvolume output
+  format.number.series output
+  new.sentence
+  organization output
+  % jtb: normal order: publisher, address
+  publisher output
+  address output
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+  format.authors
+  "author" output.check
+  author format.key output             % added
+  output.year.check                    % added
+  new.block
+  format.title
+  "title" output.check
+  new.block
+  format.tr.number output              % jtb: moved month ...
+  institution "institution" output.check
+  address output
+  new.sentence
+  month output                         % jtb: ... to here (no parens)
+  new.block
+  note output
+  fin.entry
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+  format.authors
+  "author" output.check
+  author format.key output              % added
+  output.year.check                      % added
+  new.block
+  format.title
+  "title" output.check
+  new.block
+  note "note" output.check
+  fin.entry
+}
+
+FUNCTION {default.type} { misc }
+
+MACRO {jan} {"Jan."}
+
+MACRO {feb} {"Feb."}
+
+MACRO {mar} {"Mar."}           % jtb: corrected: was "March"
+
+MACRO {apr} {"Apr."}           % jtb: corrected: was "April"
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"Aug."}
+
+MACRO {sep} {"Sept."}
+
+MACRO {oct} {"Oct."}
+
+MACRO {nov} {"Nov."}
+
+MACRO {dec} {"Dec."}
+
+MACRO {acmcs} {"ACM Comput. Surv."}
+
+MACRO {acmlett} {"ACM Lett. Program. Lang. Syst."}
+
+MACRO {acta} {"Acta Inf."}
+
+MACRO {ai} {"Artificial Intelligence"}
+
+MACRO {al} {"Ada Lett."}
+
+MACRO {acr} {"Adv. Comput. Res."}
+
+MACRO {bit} {"Bit"}
+
+MACRO {cacm} {"Commun. ACM"}
+
+MACRO {cj} {"Comput. J."}
+
+MACRO {cn} {"Comput. Netw."}
+
+MACRO {cl} {"Comput. Lang."}
+
+MACRO {ibmjrd} {"IBM J. Res. and Development"}
+
+MACRO {ibmsj} {"IBM Systems Journal"}
+
+MACRO {ict} {"Inf. Contr."}
+
+MACRO {ieebcs} {"IEE/BCS Softw. Eng. J."}
+
+MACRO {ieees} {"IEEE Softw."}
+
+MACRO {ieeese} {"IEEE Trans. Softw. Eng."}
+
+MACRO {ieeetc} {"IEEE Trans. Comput."}
+
+MACRO {ieeetcad}
+ {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
+
+MACRO {ieeetpds} {"IEEE Trans. Parall. Distrib. Syst."}
+
+MACRO {ieeetit} {"IEEE Trans. Inf. Theory"}
+
+MACRO {ipl} {"Inf. Process. Lett."}
+
+MACRO {icp} {"Inf. Comput."}
+
+MACRO {ist} {"Inf. Softw. Tech."}
+
+MACRO {ijsa} {"Int. J. Supercomput. Appl."}
+
+MACRO {ijpp} {"Int. J. Parallel Program."}
+
+MACRO {jlp} {"J. Logic Program."}
+
+MACRO {jfp} {"J. Funct. Program."}
+
+MACRO {jcss} {"J. Comput. Syst. Sci."}
+
+MACRO {jsmrp} {"J. Softw. Maint. Res. Pract."}
+
+MACRO {jss} {"J. Syst. Softw."}
+
+MACRO {jlc} {"J. Logic and Comput."}
+
+MACRO {jlsc} {"J. Lisp Symb. Comput."}
+
+MACRO {lpls} {"Lett. Program. Lang. Syst."}
+
+MACRO {mor} {"Math. Oper. Res."}
+
+MACRO {mscs} {"Math. Struct. Comput. Sci."}
+
+MACRO {mst} {"Math. Syst. Theor."}     % jtb: was Math. Syst. Theory
+                               % jtb: (if you ask me, I prefer the old way)
+MACRO {ngc} {"New Gen. Comput."}
+
+MACRO {scp} {"Sci. Comput. Program."}
+
+MACRO {sicomp} {"SIAM J. Comput."}
+
+MACRO {spe} {"Softw. Pract. Exper."}
+
+MACRO {tocs} {"ACM Trans. Comput. Syst."}
+
+MACRO {tods} {"ACM Trans. Database Syst."}
+
+MACRO {tog} {"ACM Trans. Graphics"}
+
+MACRO {toms} {"ACM Trans. Math. Softw."}
+
+MACRO {toois} {"ACM Trans. Office Inf. Syst."}
+
+MACRO {toplas} {"ACM Trans. Program. Lang. Syst."}
+
+MACRO {tocl} {"ACM Trans. On Comp. Logic"}
+
+MACRO {tcs} {"Theor. Comput. Sci."}    % jtb: was Theor. Comp. Sci.
+
+MACRO {tr} {"Tech. Rep."}
+
+READ
+
+FUNCTION {sortify}
+{ purify$
+  "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+  'len :=
+  s #1 len substring$ =
+    { s len #1 + global.max$ substring$ }
+    's
+  if$
+}
+
+
+
+FUNCTION {sort.format.names}
+{ 's :=
+  #1 'nameptr :=
+  ""
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { nameptr #1 >
+          { "   " * }
+         'skip$
+      if$
+      s nameptr "{vv{ } }{ll{ }}{  f{ }}{  jj{ }}" format.name$ 't :=
+      nameptr numnames = t "others" = and
+          { " et~al" * }
+          { t sortify * }
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+  "A " #2
+    "An " #3
+      "The " #4 t chop.word
+    chop.word
+  chop.word
+  sortify
+  #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+    { key empty$
+         { "to sort, need author or key in " cite$ * warning$
+           "" }
+         { key sortify }
+      if$
+    }
+    { author sort.format.names }
+  if$
+}
+
+FUNCTION {editor.sort}
+{ editor empty$
+    { key empty$
+         { "to sort, need editor or key in " cite$ * warning$
+           ""
+         }
+         { key sortify }
+      if$
+    }
+    { editor sort.format.names }
+  if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+    { "missing author in " cite$ * warning$
+      editor empty$
+         { key empty$
+             { "to sort, need author, editor, or key in " cite$ * warning$
+               ""
+             }
+             { key sortify }
+           if$
+         }
+         { editor sort.format.names }
+      if$
+    }
+    { author sort.format.names }
+  if$
+}
+
+FUNCTION {author.organization.sort}
+%
+% added - GNP. Stack author or organization for sorting (from alpha.bst).
+% Unlike alpha.bst, we need entire names, not abbreviations
+%
+{ author empty$
+    { organization empty$
+       { key empty$
+           { "to sort, need author, organization, or key in " cite$ * warning$
+             ""
+           }
+           { key sortify }
+         if$
+       }
+       { organization sortify }
+      if$
+    }
+    { author sort.format.names }
+  if$
+}
+
+FUNCTION {editor.organization.sort}
+%
+% added - GNP. Stack editor or organization for sorting (from alpha.bst).
+% Unlike alpha.bst, we need entire names, not abbreviations
+%
+{ editor empty$
+    { organization empty$
+       { key empty$
+           { "to sort, need editor, organization, or key in " cite$ * warning$
+             ""
+           }
+           { key sortify }
+         if$
+       }
+       { organization sortify }
+      if$
+    }
+    { editor sort.format.names }
+  if$
+}
+
+FUNCTION {presort}
+%
+% Presort creates the bibentry's label via a call to calc.label, and then
+% sorts the entries based on entry type. Chicago.bst adds support for
+% including organizations as the sort key; the following is stolen from
+% alpha.bst.
+%
+{ calc.label sortify % recalculate bibitem label
+  year field.or.null purify$ #-1 #4 substring$ * % add year
+  "    "
+  *
+  type$ "book" =
+  type$ "inbook" =
+  or
+    'author.editor.sort
+    { type$ "proceedings" =
+       'editor.organization.sort
+       { type$ "manual" =
+           'author.organization.sort
+           'author.sort
+         if$
+       }
+      if$
+    }
+  if$
+  #1 entry.max$ substring$        % added for newapa
+  'sort.label :=                  % added for newapa
+  sort.label                      % added for newapa
+  *
+  "    "
+  *
+  title field.or.null
+  sort.format.title
+  *
+  #1 entry.max$ substring$
+  'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT             % by label, year, author/editor, title
+
+STRINGS { last.label next.extra }
+
+INTEGERS { last.extra.num }
+
+FUNCTION {initialize.extra.label.stuff}
+{ #0 int.to.chr$ 'last.label :=
+  "" 'next.extra :=
+  #0 'last.extra.num :=
+}
+
+FUNCTION {forward.pass}
+%
+% Pass through all entries, comparing current entry to last one.
+% Need to concatenate year to the stack (done by calc.label) to determine
+% if two entries are the same (see presort)
+%
+{ last.label
+  calc.label year field.or.null purify$ #-1 #4 substring$ * % add year
+  #1 entry.max$ substring$ =     % are they equal?
+     { last.extra.num #1 + 'last.extra.num :=
+       last.extra.num int.to.chr$ 'extra.label :=
+     }
+     { "a" chr.to.int$ 'last.extra.num :=
+       "" 'extra.label :=
+       calc.label year field.or.null purify$ #-1 #4 substring$ * % add year
+       #1 entry.max$ substring$ 'last.label := % assign to last.label
+     }
+  if$
+}
+
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+    { "a" 'extra.label := }
+     'skip$
+  if$
+  label.year extra.label * 'sort.year :=
+  extra.label 'next.extra :=
+}
+
+EXECUTE {initialize.extra.label.stuff}
+
+ITERATE {forward.pass}
+
+REVERSE {reverse.pass}
+
+FUNCTION {bib.sort.order}
+{ sort.label
+  "    "
+  *
+  year field.or.null sortify
+  *
+  "    "
+  *
+  title field.or.null
+  sort.format.title
+  *
+  #1 entry.max$ substring$
+  'sort.key$ :=
+}
+
+ITERATE {bib.sort.order}
+
+SORT             % by sort.label, year, title --- giving final bib. order.
+
+FUNCTION {begin.bib}
+
+{ preamble$ empty$
+    'skip$
+    { preamble$ write$ newline$ }
+  if$
+  "\begin{thebibliography}{}" write$ newline$
+}
+
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION {end.bib}
+{ newline$
+  "\end{thebibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Added: GNUnet-docs/papers/ecrs/acmtrans2m.cls
===================================================================
--- GNUnet-docs/papers/ecrs/acmtrans2m.cls      2005-05-31 19:10:35 UTC (rev 
832)
+++ GNUnet-docs/papers/ecrs/acmtrans2m.cls      2005-05-31 19:27:19 UTC (rev 
833)
@@ -0,0 +1,1460 @@
+% latex2e by nr 7/3/96
+% acmtrans.cls revised 4/19/96
+%              revised again 31-JAN-1996 (see end of file)
+%              revised 5-14-1997 :
+%                       Don't use sans-serif font in categories and descriptors
+%                       include latexsym by default
+%                       Define longpage and shortpage
+% Adjusted from the acmtrans2e.cls file to the needs of ACM TOCL by
+% Marco Aiello on June 14, 2000.
+% Further changes made by Frederic Goualard on Sep. 27, 2000
+% to take care of the indentation problem in the bibliography 
+% arising without the use of the hyperref package.
+% Modularization to adapt to the needs of JACM, TOCL, 
+% TODAES, TODS, TOGS, TOMS, AND TOPLAS, by Marco Aiello on 
+% June 2001.
+% Here is the basic framework that is needed to convert your paper 
+% into ACM Transactions format and bibliographic format.  For a tutorial
+% introduction, see ``instructions.tex'' (compile it with LaTeX) that
+% accompanies the distribution of this style file.
+%
+%  -> \documentclass{acmtrans2m}
+%  -> \markboth{}{}
+%         takes 2 arguments and it is for the left- and right-page headers:
+%         the first set of braces is assigned for author's name(s) 
+%         and
+%         the second set of braces is assigned for the title 
+%             (if the title is too long, contraction may be needed
+%  -> \title{}
+%         if the title is too long, it can be separated by \\
+%  -> \author{}
+%         author1 \\ author1 affiliation
+%         \and
+%         author2 \\ author2 affiliation
+%  -> \begin{abstract}
+%  -> \end{abstract}
+%
+%  -> \category{}{}{}
+%         takes 3 arguments for the Computing Reviews Classification Scheme.
+%         ex: \category{D.3.3}{Programming Languages}{Language Constructs and 
+%                   Features}[data types and structures]
+%                   the last argument, in square brackets, is optional.
+%  -> \terms{} (ex: \terms{Human Factors, Languages})
+%  -> \keywords{} (in alphabetical order \keywords{document processing, 
sequences, 
+%                      string searching, subsequences, substrings})
+%  -> \begin{document}
+%
+%  -> \begin{bottomstuff}
+%          similar to \thanks     
+%          for authors' addresses; research/grant statements
+%  -> \end{bottomstuff}
+%  -> \maketitle
+%
+%     Now you can start the body of the paper; your figures, tables and 
+%          use all the latex constructs.
+%
+%  -> \begin{acks}
+%          acknowledgements
+%  -> \end{acks}
+%
+%  -> \bibliographystyle{acmtrans}
+%  -> \bibliography{mybib_file}
+%
+%     ****
+%     If your paper has been accepted with a separate (electronic only)
+%        appendix, you need to add the following control sequence:
+%
+%
+%       body of appendix 
+%!!!!!! \appendixhead has be cut into two: \appendixhead and \elecappendix
+%!!!!!! See end of file. (jtb)
+%
+%  -> \end{document}
+%
+% Do not worry about the other definitions in this style file
+% Remember to compile: latex, bibtex, latex latex
+%
+% Bibliographic cite forms needed:
+%
+%  \cite{key}
+%    which produces citations with author list and year.
+%    eg. [Brown 1978; Jarke, et al. 1985]
+%  \citeA{key}
+%    which produces citations with only the author list.
+%    eg. [Brown; Jarke, et al.]
+%  \citeN{key}
+%    which produces citations with the author list and year, but
+%    can be used as nouns in a sentence; no brackets appear around
+%    the author names, but only around the year.
+%      eg. Shneiderman [1978] states that......
+%    \citeN should only be used for a single citation.
+%    \citeNN{refkey1,refkey2} for author [ref1year; ref2year]
+%    \citeyear{key}
+%        which produces the year information only, within brackets.
+%
+% Abbreviated author lists use the ``et al.'' construct.
+%
+% The above are examples of required ACM bibliographic cite formats needed.
+% *******************
+% Here is the complete list of cite forms from the chicago bibliographic style
+%
+%  \cite{key}
+%    which produces citations with abbreviated author list and year.
+%  \citeNP{key}
+%    which produces citations with abbreviated author list and year.
+%  \citeA{key}
+%    which produces only the abbreviated author list.
+%  \citeANP{key}
+%    which produces only the abbreviated author list.
+%  \citeN{key}
+%    which produces the abbreviated author list and year, with only the
+%    year in parentheses. Use with only one citation.
+%  \citeyear{key}
+%    which produces the year information only, within parentheses.
+%  \citeyearNP{key}
+%    which produces the year information only.
+%
+% Abbreviated author lists use the ``et al.'' construct.
+%
+% `NP' means `no parentheses' 
+%
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{acmtrans2m} [1996/07/03 ACM Transactions class based on <23 
April 96>]
+\RequirePackage{latexsym}
+%aiellom{
+\RequirePackage{url}
+
+% Do not change the following! Use the appropriate acmtocl, acmtods, ... option
address@hidden %the volume
address@hidden %the number
address@hidden  %the last two digits of the year, 
address@hidden  %the month
address@hidden Journal Name} %the name of the ACM journal
address@hidden %the acronym of the ACM journal
address@hidden %the permission code of the ACM journal
address@hidden %the permission code of the ACM journal part 2
address@hidden %the first page of the article in 4 digits
+
+
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
+
+\DeclareOption{acmnow}{
+  \typeout{}
+  \typeout{Directly generating the Month and Year for footers from the clock.}
+  address@hidden  
+  address@hidden  
+}
+
+\DeclareOption{acmjacm}{
+  \typeout{}
+  \typeout{Using ACM, JACM's option: 2001/06/01 by Marco Aiello et al.}
+  \typeout{}
+  address@hidden  
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden of the ACM}
+  address@hidden        
+  address@hidden 
+  address@hidden 
+}
+
+\DeclareOption{acmtocl}{
+  \typeout{}
+  \typeout{Using ACM, TOCL's option: 2001/06/01 by Marco Aiello et al.}
+  \typeout{}
+  address@hidden  
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden Transactions on Computational Logic}
+  address@hidden        
+  address@hidden 
+  address@hidden 
+}
+
+\DeclareOption{acmtodaes}{
+  \typeout{}
+  \typeout{Using ACM, TODAES option: 2001/06/01 by Marco Aiello et al.}
+  \typeout{}
+  address@hidden  
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden Transactions on Design Automation of Electronic Systems}
+  address@hidden        
+  address@hidden 
+  address@hidden 
+}
+
+\DeclareOption{acmtods}{
+  \typeout{}
+  \typeout{Using ACM, TODS's option: 2001/06/01 by Marco Aiello et al.}
+  \typeout{}
+  address@hidden  
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden Transactions on Database Systems}
+  address@hidden        
+  address@hidden 
+  address@hidden 
+}
+
+\DeclareOption{acmtogs}{
+  \typeout{}
+  \typeout{Using ACM, TOGS's option: 2001/06/01 by Marco Aiello et al.}
+  \typeout{}
+  address@hidden  
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden Transactions on Graphics}
+  address@hidden        
+  address@hidden 
+  address@hidden 
+}
+
+\DeclareOption{acmtoms}{
+  \typeout{}
+  \typeout{Using ACM, TOMS's option: 2001/06/01 by Marco Aiello et al.}
+  \typeout{}
+  address@hidden  
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden Transactions on Mathematical Software}
+  address@hidden        
+  address@hidden 
+  address@hidden 
+}
+
+\DeclareOption{acmtoplas}{
+  \typeout{}
+  \typeout{Using ACM, TOPLAS option: 2001/06/01 by Marco Aiello et al.}
+  \typeout{}
+  address@hidden  
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden
+  address@hidden Transactions on Programming Languages and Systems}
+  address@hidden        
+  address@hidden 
+  address@hidden 
+}
+%}aiellom
+
+
+
address@hidden
+\DeclareOption{a4paper}
+   {\setlength\paperheight {297mm}%
+    \setlength\paperwidth  {210mm}%
+    address@hidden,297mm}}
+\DeclareOption{a5paper}
+   {\setlength\paperheight {210mm}%
+    \setlength\paperwidth  {148mm}%
+    address@hidden,210mm}}
+\DeclareOption{b5paper}
+   {\setlength\paperheight {250mm}%
+    \setlength\paperwidth  {176mm}%
+    \setlength\voffset     {-15mm}%
+    \setlength\hoffset     {-20mm}%
+    address@hidden,250mm}}
+\DeclareOption{letterpaper}
+   {\setlength\paperheight {11in}%
+    \setlength\paperwidth  {8.5in}%
+    address@hidden,11in}}
+\DeclareOption{legalpaper}
+   {\setlength\paperheight {14in}%
+    \setlength\paperwidth  {8.5in}%
+    address@hidden,14in}}
+\DeclareOption{executivepaper}
+   {\setlength\paperheight {10.5in}%
+    \setlength\paperwidth  {7.25in}%
+    address@hidden,10.5in}}
+\DeclareOption{landscape}
+   address@hidden   {\paperheight}%
+    \setlength\paperheight {\paperwidth}%
+    \setlength\paperwidth  address@hidden
+\fi
+
+\DeclareOption{checkMargin}{\setlength\overfullrule{5pt}}
+\DeclareOption{final}{\setlength\overfullrule{0pt}}
+
address@hidden address@hidden
address@hidden  address@hidden
+
address@hidden %needed for amssymbols.sty 
+\DeclareOption{11pt}{\ClassError{acmtrans}{11pt style not supported}
+                        {ACM transactions documents can be set in 10pt only}}
+\DeclareOption{12pt}{\ClassError{acmtrans}{11pt style not supported}
+                        {ACM transactions documents can be set in 10pt only}}
address@hidden
+\DeclareOption{hyperref}{%
+        address@hidden@lastpg}}%
+        \def\mypage{\thepage}%
+        address@hidden
+        \def\pdfinfo#1#2{\pdfmark{pdfmark=/DOCINFO,Title=#1,Author=#2}}
+        address@hidden
+        }
+\DeclareOption{nohyperref}{
+                address@hidden@lastpg}}%
+                address@hidden
+                \def\mypage{\thepage}%
+                \def\pdfinfo#1#2{}%
+                \def\pdfbookmark#1#2{}%
+                address@hidden
+                }
+\DeclareOption{notfinal}{
+                \def\pages{BD}%
+                \def\mypage{TBD}%
+                address@hidden
+                \def\pdfinfo#1#2{}%
+                \def\pdfbookmark#1#2{}%
+                }
address@hidden
address@hidden@acmjacm\else\hbox{\vrule height .2pt width 30pc}\fi}}
+\ExecuteOptions{twoside,notfinal,10pt,dontomitline,nohyperref,letterpaper} % 
defaults
+
+
+
+\ProcessOptions
+
+%{aiellom to automatize the issue specific data
address@hidden
address@hidden
address@hidden
address@hidden
+
+
+% Command to get the year from the system and display the last two digits
+\newcommand{\ignoretwo}[2]{}
+\newcommand{\yearTwoDigits}{\expandafter\ignoretwo\the\year}
+%To transform the month number in its name in English
+\newcommand{\monthWord}{\ifnum\the\month=1 January\fi\ifnum\the\month=2 
February\fi\ifnum\the\month=3 March\fi\ifnum\the\month=4 
April\fi\ifnum\the\month=5 May\fi\ifnum\the\month=6 June\fi\ifnum\the\month=7 
July\fi\ifnum\the\month=8 August\fi\ifnum\the\month=9 
September\fi\ifnum\the\month=10 October\fi\ifnum\the\month=11 
November\fi\ifnum\the\month=12 December\fi}
+% overright the address@hidden definition, so that if a reference is undefined 
+% then it returns a number 0 and then the usual double boldface 
+% question marks ??
+% this is necessary for the \acmPageCode command, otherwise it gives an error 
+% everytime the aux file is not there
address@hidden
+  \ifx#1\relax
+    \number 0\relax
+    address@hidden
+    address@hidden@font\bfseries ??}%
+    address@hidden@warning{Reference `#3' on page \thepage \space undefined}%
+  \else
+    \expandafter#2#1\null
+  \fi}
+%make the code a four digits string based on the first page number
+\newcommand{\acmPageCode}{\bgroup
+  address@hidden
+  address@hidden address@hidden<1000 0\fi\ifnum address@hidden<100 0\fi\ifnum 
address@hidden<10 0\fi\ifnum address@hidden<1 address@hidden
+  \egroup
+}
+%}aiellom
+
+
+
+\lineskip 1pt \normallineskip 1pt
+\def\baselinestretch{1}
+
+\renewcommand\normalsize{%
+  address@hidden@address@hidden
+  \abovedisplayskip 6pt plus2pt minus1pt\belowdisplayskip \abovedisplayskip
+  \abovedisplayshortskip 6pt plus0pt minus 3pt
+  \belowdisplayshortskip 6pt plus0pt address@hidden@listI} 
+
+\newcommand\small{%
+  address@hidden@ixpt{11pt}%
+  \abovedisplayskip 5pt plus 2pt minus 1pt\belowdisplayskip \abovedisplayskip
+  \abovedisplayshortskip 5pt plus0pt minus2pt\belowdisplayshortskip 5pt plus0pt
+      minus 2pt
+  address@hidden \topsep 5pt plus 2pt minus 1pt\parsep 0pt
+    plus .7pt 
+  \itemsep 1.6pt plus .8pt}}
+\newcommand\footnotesize{%
+%   address@hidden@viiipt{10pt}
+ address@hidden@viiipt
+  \abovedisplayskip 4pt plus 1pt minus 0pt\belowdisplayskip \abovedisplayskip
+  \abovedisplayshortskip 4pt plus 0pt minus 1pt\belowdisplayshortskip 4pt plus
+       0pt minus 1pt
+  address@hidden \topsep 4pt plus 1pt minus
+     0pt\parsep 0pt plus .5pt 
+     \itemsep 1pt plus .7pt}}
+
address@hidden@address@hidden
address@hidden@address@hidden
address@hidden@xiipt{14}}
address@hidden@xivpt{18}}
address@hidden@xviipt{20}}
address@hidden@xxpt{25}}
address@hidden@xxvpt{30}}
+
+\normalsize 
+
+ \oddsidemargin .75in \evensidemargin .75in \marginparwidth .5in 
+ \marginparsep .125in 
+ \topmargin .25in \headheight 12pt\headsep 16pt
+  %% not in latex2e  \footheight 10pt
+  \footskip 15pt 
+
+\textheight 47pc \textwidth 30pc \columnsep 10pt \columnseprule 0pt 
+% next five lines added by K.R. Apt, March 20, 01
+\advance\textheight-2.6pt
+\newdimen\normaltextheight
+\setlength\normaltextheight{\textheight}
+%\renewcommand\rmdefault{pnc}
+%\renewcommand\sfdefault{phv}
+
+
+\footnotesep 7pt
+\skip\footins 15pt plus 4pt minus 3pt 
+\floatsep 12pt plus 2pt minus 2pt 
+\textfloatsep \floatsep 
+\intextsep 1pc plus 1pc 
+%%% not in 2e %% address@hidden 1pc 
+%%% not in 2e %% address@hidden 20pt 
+\dblfloatsep 12pt plus 2pt minus 2pt 
+\dbltextfloatsep 20pt plus 2pt minus 4pt 
address@hidden 0pt plus 1fil address@hidden 1pc plus 2fil address@hidden 0pt 
plus 1fil 
address@hidden 0pt plus 1fil address@hidden 8pt plus 2fil address@hidden 0pt 
plus 1fil
+\marginparpush 6pt 
+
+\parskip 0pt plus .1pt \parindent 10pt \partopsep 0pt 
address@hidden 51 address@hidden 151 address@hidden 301 
address@hidden address@hidden address@hidden address@hidden address@hidden
address@hidden 
+
+
address@hidden
+ address@hidden@}{-10pt plus -4pt minus 
+ address@hidden
address@hidden
+ address@hidden@}{-10pt plus -4pt minus 
+ address@hidden
address@hidden
+ address@hidden@}{-8pt plus -2pt minus 
+ address@hidden
address@hidden
+ address@hidden plus 
address@hidden
address@hidden
+ address@hidden plus 
address@hidden
+
address@hidden the#1\endcsname}}
+
address@hidden
address@hidden@topsepadd\topsep
address@hidden address@hidden@period{.}\fi
+ \ifvmode address@hidden \else \unskip\par\fi
+ address@hidden address@hidden address@hidden 
+ \else address@hidden address@hidden@topsepadd \fi
+ address@hidden \parskip
+ address@hidden@rightskip address@hidden
+ address@hidden@newlist\else{\@@par}\fi} address@hidden
address@hidden
+
+
address@hidden
+  address@hidden \leavevmode \fi
+  \par
+  address@hidden #4\relax
+  address@hidden
+  \ifdim address@hidden <\z@
+    address@hidden address@hidden address@hidden
+  \fi
+  address@hidden
+    \everypar{}%
+  \else
+    address@hidden@tempskipa
+  \fi
+  address@hidden
+    address@hidden
+    address@hidden@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
address@hidden
+  \ifnum #2>address@hidden
+    address@hidden@empty
+  \else
+    \refstepcounter{#1}%
+      address@hidden
+            address@hidden@address@hidden
+        \else%
+            address@hidden@address@hidden
+        \fi%
+  \fi
+  address@hidden #5\relax
+  \ifdim address@hidden>\z@
+    \begingroup
+      #6{%
+        address@hidden address@hidden
+          \interlinepenalty address@hidden address@hidden \@@par}%
+    \endgroup
+    \csname #1mark\endcsname{#7}%
+    \addcontentsline{toc}{#1}{%
+      \ifnum #2>address@hidden \else
+        \protect\numberline{\csname the#1\endcsname}%
+      \fi
+      #7}%
+  \else
+    address@hidden
+      #6{\hskip #3\relax
+      address@hidden address@hidden
+      \csname #1mark\endcsname{#7}%
+      \addcontentsline{toc}{#1}{%
+        \ifnum #2>address@hidden \else
+          \protect\numberline{\csname the#1\endcsname}%
+        \fi
+        #7}}%
+  \fi
+  address@hidden
+
address@hidden@tempskipa #1\relax
+ \ifdim address@hidden>\z@
+ \par \nobreak
+ \vskip address@hidden
+ address@hidden
+ \else address@hidden address@hidden
+ address@hidden address@hidden
+ address@hidden \hskip -\parindent
+ \begingroup address@hidden@period \endgroup \unskip
+ \hskip -#1
+ \else \clubpenalty address@hidden
+ \everypar{}\fi}\fi\ignorespaces}
address@hidden@ucheadfalse
+
+
+\setcounter{secnumdepth}{3}
+\newcounter{secnumbookdepth}
+\setcounter{secnumbookdepth}{3}
+
+\newfont{\apbf}{cmbx9}
+
address@hidden #1}
+
+\newcommand{\elecappendix}{
+}
+
address@hidden@ address@hidden \textheight \begin{figure}
+\newfont{\sc}{cmcsc10}
+\parindent\z@
+\hbox{}
+\vskip -\textfloatsep
+\vskip 11pt
+\hrule height .2pt width 30pc
+\vskip 2pt\rule{0pt}{10pt}\ignorespaces}
+\def\endappenheader{\end{figure}\gdef\appendixhead{}}
+
address@hidden
+
+\def\appendix{\par
+ \setcounter{section}{0}
+ \setcounter{subsection}{0}
+ address@hidden } 
+        \def\thesection{\Alph{section}}
+        \def\theHsection{\Alph{section}}}
+
+
+
+\labelsep 5pt
+\settowidth{\leftmargini}{(9)} \addtolength\leftmargini\labelsep
+\settowidth{\leftmarginii}{(b)} \addtolength\leftmarginii\labelsep
+\leftmarginiii \leftmarginii
+\leftmarginiv \leftmarginii 
+\leftmarginv \leftmarginii 
+\leftmarginvi \leftmarginii 
+\leftmargin\leftmargini
+\labelwidth\leftmargini\advance\labelwidth-\labelsep
address@hidden \parsep 0pt plus 1pt\topsep 6pt plus 2pt
+minus 2pt\itemsep 2pt plus 1pt minus .5pt}
address@hidden@listI
address@hidden 
address@hidden
+ \labelwidth\leftmarginii\advance\labelwidth-\labelsep
+ \topsep 0pt plus 1pt 
+ \parsep 0pt plus .5pt 
+ \itemsep \parsep}
address@hidden
+ \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
+ \topsep 0pt plus 1pt 
+ \parsep 0pt plus .5pt 
+ \itemsep \parsep}
address@hidden
+ \labelwidth\leftmarginiv\advance\labelwidth-\labelsep}
address@hidden
+ \labelwidth\leftmarginv\advance\labelwidth-\labelsep}
address@hidden
+ \labelwidth\leftmarginvi\advance\labelwidth-\labelsep}
+
+
+
+
+\def\enumerate{\ifnum address@hidden >3 address@hidden
+ address@hidden address@hidden 
+ address@hidden@enumdepth}\list
+ {\csname address@hidden
+ address@hidden
+\def\longenum{\ifnum address@hidden >3 address@hidden
+ address@hidden address@hidden 
+ address@hidden@enumdepth}\list
+ {\csname address@hidden
+ address@hidden@}\fi}
+%\leftmargin\z@ \itemindent\parindent}\fi} - this indents each item in 
enumerate
+\let\endlongenum\endlist
+%%--------------------CHANGED: always roman parentheses. dave ---------------%%
+\def\labelenumi{{\rm (}\arabic{enumi}\/{\rm )}} 
+\def\theenumi{\arabic{enumi}} 
+\def\labelenumii{{\rm (}\alph{enumii}\rm{)}}
+\def\theenumii{\alph{enumii}}
address@hidden
+\def\labelenumiii{\roman{enumiii}.}
+\def\theenumiii{\roman{enumiii}}
address@hidden (}\theenumii{\rm )}}
+\def\labelenumiv{\Alph{enumiv}.}
+\def\theenumiv{\Alph{enumiv}} 
address@hidden@enumiii\theenumiii}
+
address@hidden@enumiii\theenumiii}
+
+\def\itemize{\list{---\hskip -\labelsep}{\settowidth
+ {\leftmargin}{---}\labelwidth\leftmargin
+ \addtolength{\labelwidth}{-\labelsep}}}
+\let\enditemize\endlist
+\def\longitem{\list{---}{\labelwidth\z@
+ \leftmargin\z@ \itemindent\parindent \advance\itemindent\labelsep}}
+\let\endlongitem\endlist
address@hidden 
+ \list{}{\leftmargin 2pc 
+ \itemindent -1.5em\listparindent \itemindent 
+ \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]}
+\let\endverse\endlist
+\def\quotation{\list{}{\leftmargin 2pc \listparindent .5em
+ \itemindent\listparindent
+ \rightmargin\leftmargin \parsep 0pt plus 1pt}\item[]}
+\let\endquotation=\endlist
+\def\quote{\list{}{\leftmargin 2pc \rightmargin\leftmargin}\item[]}
+\let\endquote=\endlist
+
+\def\description{\list{}{\listparindent\parindent\labelwidth\z@
+ \leftmargin\z@ \itemindent\parindent\advance\itemindent\labelsep
+ \def\makelabel##1{\it ##1.}}}
+\let\enddescription\endlist
+
+\def\describe#1{\list{}{\listparindent\parindent\settowidth{\labelwidth}{#1}\leftmargin
+ \labelwidth\addtolength\leftmargin\labelsep\def\makelabel##1{##1\hfil}}}
+\let\enddescribe\endlist
+
+        address@hidden \else \rm \fi\tabbing}
+        \let\endprogram\endtabbing
+         address@hidden \item[\hskip 10pt\hskip 
+         \labelsep{\sc{#1}\hskip 5pt\relax #2.}] \itshape}
+        % aiellom{: this is what makes the theorem environment with names 
+        % ABOVE #1 is the word example, corollary, etc.
+        %            #2 is the number
+        % address@hidden
+        % \item[\hskip 10pt \hskip \labelsep{\sc address@hidden 
+        % address@hidden>\z@ \hskip 5pt\relax address@hidden \itshape}
+        %  is been changed to
+        % #1 is the word theorem, lemma, etc.
+        % #2 is the number
+        % #3 is the name of the theorem, lemma, etc.
+        address@hidden
+        \item[\hskip 10pt \hskip 
address@hidden 
+        address@hidden>\z@ \hskip 5pt\relax \sc{#2}  address@hidden
+\itshape}
+        % aiellom} 
+
+
+
address@hidden@qededfalse
address@hidden@address@hidden@proof}}
address@hidden
+\def\qed{\unskip\kern 10pt{\unitlength1pt\linethickness{.4pt}\framebox(6,6){}}
address@hidden
address@hidden \item[\hskip 10pt\hskip 
+ \labelsep{\sc Proof.}]\ignorespaces}
address@hidden \item[\hskip 10pt\hskip 
+ \labelsep{\sc Proof #1.}]\ignorespaces}
+
address@hidden #1\endcsname
address@hidden
address@hidden
+ address@hidden@defthm{#1}{#2}}\global
+ address@hidden@endtheorem}}}
address@hidden
+ address@hidden@address@hidden
address@hidden@begindef{#2}{\csname the#1\endcsname}\ignorespaces}
address@hidden \item[\hskip 10pt\hskip 
+ \labelsep{\it address@hidden 
+ address@hidden>\z@ \ address@hidden
address@hidden \item[\hskip 10pt\hskip 
+ \labelsep{\it #1\ \rm #2.}]}
+
+\def\theequation{\arabic{equation}}
+
address@hidden@address@hidden
+ \else \newpage \fi address@hidden@}
address@hidden \else \newpage \fi}
+
+\arraycolsep 2.5pt \tabcolsep 6pt \arrayrulewidth .4pt \doublerulesep 2pt 
+\tabbingsep \labelsep 
+
address@hidden = \skip\footins
+\fboxsep = 3pt \fboxrule = .4pt 
+
+\newcounter{part}
+\newcounter{section}
+\newcounter{subsection}[section]
+\newcounter{subsubsection}[subsection]
+\newcounter{paragraph}[subsubsection]
+
+\def\thepart{\Roman{part}} 
+\def\thesection {\arabic{section}}
+\def\thesubsection {\thesection.\arabic{subsection}}
+\def\thesubsubsection {\thesubsection.\arabic{subsubsection}}
+\def\theparagraph {\thesubsubsection.\arabic{paragraph}}
+
address@hidden
address@hidden {2.55em}
address@hidden
+\setcounter{tocdepth}{3}
+
address@hidden
+ address@hidden
address@hidden@secpenalty}
+ \addvspace{2.25em plus 1pt} \begingroup
+ address@hidden 3em \parindent \z@ \rightskip address@hidden \parfillskip
address@hidden 
+ {\large \bf \leavevmode #1\hfil \hbox address@hidden #2}}\par
+ \nobreak \endgroup}
address@hidden@secpenalty} \addvspace{1.0em plus 1pt}
address@hidden 1.5em \begingroup
+ \parindent \z@ \rightskip address@hidden 
+ \parfillskip address@hidden 
+ \bf \leavevmode #1\hfil \hbox address@hidden #2}\par
+ \endgroup}
address@hidden@dottedtocline{2}{1.5em}{2.3em}}
address@hidden@dottedtocline{3}{3.8em}{3.2em}}
+\def\listoffigures{\section*{List of address@hidden
+ {LIST OF FIGURES}{LIST OF address@hidden
address@hidden@dottedtocline{1}{1.5em}{2.3em}}
+\def\listoftables{\section*{List of address@hidden
+ {LIST OF TABLES}{LIST OF address@hidden
address@hidden@figure
+
+
+\def\thebibliography#1{\par\footnotesize 
address@hidden
address@hidden@}{16pt plus 2pt minus 
+        1pt}{2pt}{\sf}*{REFERENCES}%
+\list{\arabic{enumi}.}{%
+ \settowidth{\labelwidth}{99.}%
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep \topsep \z@ \parsep 0pt plus .1pt
+ \itemsep \parsep 
+ \usecounter{enumi}}%
+ \def\newblock{\hskip .11em plus .33em minus .07em}
+ \sloppy
+ \widowpenalty=4500
+ \clubpenalty=4500
+ \sfcode`\.=1000\relax}
+\let\endthebibliography=\endlist
+ 
+
address@hidden
address@hidden@address@hidden
+\columnseprule \z@
+\columnsep 35pt\twocolumn[\section*{Index}]
+ address@hidden@
+ \parskip\z@ plus address@hidden
address@hidden 40pt}
+\def\subitem{\par\hangindent 40pt \hspace*{20pt}}
+\def\subsubitem{\par\hangindent 40pt \hspace*{30pt}}
address@hidden
+\def\indexspace{\par \vskip 10pt plus 5pt minus 3pt\relax}
+
+\def\footnoterule{\kern-3\p@
+ \hrule address@hidden 0.2\p@ address@hidden 47\p@ 
+  \kern 2.6\p@
+} 
+
address@hidden 1em\noindent 
+ address@hidden
+
+
+\setcounter{topnumber}{3}
+\def\topfraction{.99}
+\setcounter{bottomnumber}{1}
+\def\bottomfraction{.5}
+\setcounter{totalnumber}{3}
+\def\textfraction{.01}
+\def\floatpagefraction{.85}
+\setcounter{dbltopnumber}{2}
+\def\dbltopfraction{.7}
+\def\dblfloatpagefraction{.5}
+
address@hidden 1pc address@hidden
+1em\relax #2}
+ \ifdim address@hidden >\hsize #1. #2\par \else \hbox
address@hidden 
+ \fi}
+
address@hidden \par
+ \vskip 1pc \hbox to\hsize{\hfil \footnotesize Figure \thefigure
+ \hfil}}
+
+
+\newcounter{figure}
address@hidden@figure}
address@hidden
address@hidden
address@hidden
address@hidden \thefigure}
+\def\figure{\let\normalsize\footnotesize \normalsize address@hidden
address@hidden
address@hidden@dblfloat{figure}}
address@hidden@dblfloat}
+
+\newcounter{table}
address@hidden@table}
address@hidden
address@hidden
address@hidden
address@hidden \thetable}
+\def\table{\let\normalsize\footnotesize address@hidden
address@hidden
address@hidden@dblfloat{table}}
address@hidden@dblfloat}
address@hidden #1\relax
+ address@hidden address@hidden
+ address@hidden@address@hidden@ntab}}
+\def\endacmtable{\hbox to \textwidth{\hfil
+\vbox{\hsize address@hidden
address@hidden
+{\baselineskip 4pt \hbox{\vrule height .4pt width \hsize}}
+\vskip -1pt
address@hidden -1pt
+{\baselineskip 4pt \hbox{\vrule height .4pt width \hsize}}}\hfil}
address@hidden
address@hidden@address@hidden
address@hidden@tmpnf
+ address@hidden
+ \hsize address@hidden address@hidden
address@hidden address@hidden 1em\relax #2}
+ \ifdim address@hidden >\hsize \sloppy #1.\hskip 1em\relax #2 \par \else \hbox
address@hidden
+ \fi}
address@hidden@captype 
+ address@hidden@address@hidden
address@hidden@nfcapbox\vbox {\hsize address@hidden
+ address@hidden
+ address@hidden address@hidden #3}\par}}
address@hidden address@hidden 
+ address@hidden {\hsize address@hidden
+ \hbox to\hsize{\hfil \footnotesize Table \thetable\hfil}}}
+
+%
+%% Narrow figures
+%
address@hidden #1\relax
+ address@hidden address@hidden
+ address@hidden@address@hidden@nfig}}
+\def\endnarrowfig{\hbox to address@hidden
+ address@hidden@nfigbox
+ \else address@hidden@address@hidden
address@hidden@address@hidden
address@hidden@tmpnf
+ address@hidden
+ \hsize address@hidden address@hidden
address@hidden address@hidden 1em\relax #2}
+ \ifdim address@hidden >\hsize \sloppy #1.\hskip 1em\relax #2 \par \else \hbox
address@hidden@address@hidden
+ \fi}
address@hidden@captype 
+ address@hidden@address@hidden
address@hidden@seteven
+ address@hidden to address@hidden
+ {\hsize \textwidth \advance\hsize -2pc \advance\hsize address@hidden
+ address@hidden
+ \vfil 
+ address@hidden address@hidden #3}\par
+ \vfil}}
address@hidden address@hidden address@hidden
+ address@hidden to address@hidden
+ {\hsize \textwidth \advance\hsize -2pc \advance\hsize address@hidden
+ address@hidden
+ \vfil 
+ \hbox address@hidden 
+ \footnotesize Figure \thefigure
+ address@hidden
+ \vfil}}
address@hidden@nfeventrue 
+   address@hidden@@nf\thefigure}{}{%
+      address@hidden r@@nf\thefigure\endcsname}%
+      address@hidden@address@hidden
+      address@hidden@nfevenfalse\fi}%
address@hidden@address@hidden e\else o\fi}
address@hidden@unused {\noexpand\ifodd address@hidden 
+ \noexpand\if address@hidden address@hidden \noexpand\fi
+ \noexpand\else 
+ \noexpand\if address@hidden address@hidden 
+ \noexpand\fi address@hidden
address@hidden narrowfig: Figure #1 on page \thepage}
+
address@hidden
address@hidden
address@hidden
address@hidden 
+
+\def\and{\\ and\\}
+\def\maketitle{\newpage \thispagestyle{titlepage}\par
+ \begingroup \lineskip = address@hidden \vskip -30pt\relax 
+ \parindent\z@ \LARGE {\raggedright address@hidden
+ %\sf address@hidden \par
+  address@hidden \par
+ \global\firstfoot %aiellom
+ \global\runningfoot %aiellom
+}
address@hidden
+{ \vskip 13.5pt\relax \normalsize \sf %vskip 13.5pt between title and author
+ \begingroup \addtolength{\baselineskip}{2pt}
+ address@hidden \vskip -2pt 
+ \endgroup }
+ {\ifx address@hidden@empty 
+ \else 
+ \baselineskip 17pt\relax
+ address@hidden height .2pt width 30pc}\fi%to eliminate the lines for jacm
+ }
+ \vskip 8.5pt \footnotesize address@hidden \vskip 4pt\relax %vskip8.5 space 
above abstract
+ {\def\and{\unskip\/{\rm ; }}
+ Categories and Subject Descriptors: address@hidden \fi}\par\vskip 4pt\relax
+ address@hidden \vskip 4pt\relax
+ address@hidden \par 
+ {\baselineskip 14pt\relax 
+ address@hidden
+ }
+ \vskip 23pt\relax
+ \endgroup
+\let\maketitle\relax
+ % address@hidden@title{}
+ address@hidden
+
+
address@hidden
address@hidden
address@hidden
address@hidden \everypar{}
+ \footnotesize \hsize 30pc \parindent 10pt \noindent 
+ \rule{0pt}{10pt}\ignorespaces}
+\def\endabstract{\egroup}
+
address@hidden
+ \footnotesize \hsize 30pc \parindent 0pt \noindent 
+ General Terms: \ignorespaces #1}}
address@hidden
+ \footnotesize \hsize 30pc \parindent 0pt \noindent 
+ Additional Key Words and Phrases: \ignorespaces #1}
+}
+
address@hidden
+ address@hidden@xcategory{#1}{#2}{#3}}}
address@hidden@tempa{\ifx address@hidden@empty 
+ \else ; \fi}{\def\protect{\noexpand\protect
+ address@hidden@address@hidden #1
+[{\bf #2}]: 
+ address@hidden@{\it #4}}}}
address@hidden@tempa{\ifx address@hidden@empty \else ;
+\fi}{\def\protect{\noexpand\protect\noexpand}\def\and{\noexpand
+ address@hidden@address@hidden #1 [{\bf #2}]: #3}}}
address@hidden
address@hidden@ address@hidden \textheight \begin{figure}
+\parindent\z@
+\hbox{}
+\vskip -\textfloatsep
+\vskip 10pt
+\hrule height .2pt width 30pc
+\vskip 2pt\rule{0pt}{10pt}\ignorespaces}
+\def\endbottomstuff{\permission\end{figure}\gdef\permission{}}
+
+\newenvironment{ackslike}[1]
+  {\par \footnotesize 
+   address@hidden
+   address@hidden@}{-16pt plus -2pt minus -1pt}{2pt}{\sf}*
+   {\uppercase{#1}}\par\normalsize
+   \pdfbookmark{Acknowledgments}{Ack}
+        }
+  {\par}
+\newenvironment{acks}{\begin{ackslike}{ACKNOWLEDGMENTS}}{\end{ackslike}}
+
+\def\received{\par\footnotesize\addvspace{18pt plus 0pt minus
address@hidden
+%the line below replaced by the line that follows (K.R. Apt, July 11, 2000
address@hidden
address@hidden
+
+\mark{{}{}} 
+
address@hidden@address@hidden
address@hidden \small\sf \rightmark\hskip
+19pt{\Large$\cdot$}\hskip 17pt\mypage}
address@hidden@runningfoot}
address@hidden \hskip 17pt{\Large$\cdot$}\hskip 19pt\leftmark\hfill \hbox{}}
address@hidden@runningfoot\hfill\hbox{}}
+\def\sectionmark##1{}\def\subsectionmark##1{}}
address@hidden
address@hidden@journalName, Vol.\ address@hidden, No.\ address@hidden, 
address@hidden address@hidden
address@hidden
address@hidden@journalName, Vol.\ address@hidden, No.\ address@hidden, 
address@hidden address@hidden, Pages \pages.}}
address@hidden@address@hidden
address@hidden@oddfoot{\hbox{}\hfill
address@hidden@address@hidden@firstfoot\hfill\hbox{}}}
+
+\def\today{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day, \number\year}
address@hidden@addtopreamble{$\displaystyle address@hidden
address@hidden address@hidden address@hidden \or address@hidden \or
+ \or \or address@hidden \or
+ address@hidden \or address@hidden address@hidden \fi
address@hidden@preamble
+ \ifcase address@hidden 
+ address@hidden \or address@hidden 
+ \or address@hidden
+\def\marray{\arraycolsep address@hidden@arrayacol address@hidden@marrayclassz
+ address@hidden@marrayclassiv address@hidden@address@hidden
+\def\endmarray{\crcr\egroup\egroup}
+
+
address@hidden \pagenumbering{arabic} \onecolumn 
+
+%-----------------------BIBLIOGRAPHY STUFF-------------------------
+% this is adapted (November 1993) by Andrew Appel and Rebecca Davies from
+% 
+%%%     filename        = "chicago.sty",
+%%%     version         = "4",  % MODIFIED!
+%%%     date            = "31 August 1992",
+%%%     time            = "09:42:44 199",
+%%%     author          = "Glenn Paulley",
+%%%     address         = "Data Structuring Group
+%%%                        Department of Computer Science
+%%%                        University of Waterloo
+%%%                        Waterloo, Ontario, Canada
+%%%                        N2L 3G1",
+%%%     telephone       = "(519) 885-1211",
+%%%     FAX             = "(519) 885-1208",
+%%%     email           = "address@hidden",
+
+%%% ====================================================================
+%
+% this file: Modification of chicago.sty for new ACM bibliography
+% style, which is similar (but not identical) to the ``Chicago'' style.
+%
+% chicago.sty: Style file for use with bibtex style chicago.bst, for
+% bibliographies formatted according to the 13th Edition of the Chicago
+% Manual of Style.
+%
+% 'newapa.bst' was made from 'plain.bst', 'named.bst', and 'apalike.bst',
+% with lots of tweaking to make it look like APA style, along with tips
+% from Young Ryu and Brian Reiser's modifications of 'apalike.bst'.
+% newapa.sty formed the basis of this style, chicago.sty. Author-date
+% references in newapa.bst formed the basis for chicago.bst. Chicagoa.bst
+% supports annotations.
+%
+% Version 4 (August, 1992):
+% - fixed chicago.bst and chicagoa.bst to handle long author lists in
+%   sorting
+% - fixed chicago.bst and chicagoa.bst so that missing page numbers in
+%   ``article'' entries are handled correctly
+% - modified chicago.sty to format entries with 2nd and subsequent lines
+%   indented.
+%
+%   Citation format: (author-last-name year)
+%             (author-last-name and author-last-name year)
+%             (author-last-name et al. year)
+%             (author-last-name)
+%             author-last-name
+%             author-last-name (year)
+%             (author-last-name and author-last-name)
+%             (author-last-name et al.)
+%             (year) or (year,year)
+%             year or year,year
+%
+%   Reference list ordering: alphabetical by author or whatever passes
+%    for author in the absence of one.
+%
+% This BibTeX style has support for abbreviated author lists and for
+%    year-only citations.  This is done by having the citations
+%    actually look like
+%
+%    \citeauthoryear{full-author-info}{abbrev-author-info}{year}
+%
+% The LaTeX style has to have the following (or similar)
+%
+%     address@hidden
+%     \def\fullcite{\def\citeauthoryear##1##2##3{##1, address@hidden
+%     address@hidden
+%     \def\shortcite{\def\citeauthoryear##1##2##3{##2, address@hidden
+%     address@hidden
+%     address@hidden
+%
+%
+% -------------------------------------------------------------------------
+%
+% Citation macros.
+%
address@hidden
+
address@hidden
+    address@hidden@tempswa , ##2\fi]}%
+    \def\citeauthoryear##1##2##3{##2 address@hidden
+\def\citeXNP#1#2{%
+  address@hidden@label{#2}%
+  address@hidden@tempswa , ##2\fi}%
+  address@hidden@address@hidden
+% address@hidden
+%    address@hidden@label{#1}
+%    address@hidden@tempswa ##2\fi}%
+%    \def\citeauthoryear##1##2##3{##2 address@hidden
address@hidden
+    address@hidden@tempswa , ##2\fi}%
+    \def\citeauthoryear##1##2##3{##2 address@hidden
address@hidden
+    address@hidden@tempswa , ##2]\else{]}\fi}%
+    \def\citeauthoryear##1##2##3{##2 address@hidden
+\def\shortcite#1{\citeyear{#1}}
+\def\citeS#1{[\citeANP{#1} \citeyearNP{#1}]}
+\def\citeNS#1{\citeANP{#1} \citeyear{#1}}
+\def\citeNPS#1{\citeANP{#1} \citeyearNP{#1}}
+%testing year,year
address@hidden
+    address@hidden@tempswa , ##2\fi]}%
+    address@hidden
+
address@hidden
+    address@hidden@tempswa , ##2\fi]}%
+    address@hidden
address@hidden
+    address@hidden@tempswa , ##2\fi}%
+    address@hidden
+
address@hidden
+    address@hidden@tempswa , ##2\fi]}%
+    address@hidden
address@hidden
+    address@hidden@tempswa , ##2\fi}%
+    address@hidden
+
+%
+% address@hidden and address@hidden:
+%
+% Place commas in-between citations in the same \citeyear, \citeyearNP,
+% or \citeN command.
+% Use something like \citeN{ref1,ref2,ref3} and \citeN{ref4} for a list.
+%
address@hidden
+        address@hidden address@hidden@citedatax}%
+                                  address@hidden@citedatax[]}%
+}
+
address@hidden
address@hidden@auxout{\string\citation{#2}}\fi%
+  address@hidden@address@hidden@citeb:=#2\do%
+    address@hidden@citea{; address@hidden by Young
+       address@hidden@citeb}{{\bf ?}%
+       address@hidden address@hidden' on page \thepage \space undefined}}%
+{\csname address@hidden@citeb\endcsname}}}{#1}}%
+
+% don't box citations, separate with ; and a space
+% also, make the penalty between citations negative: a good place to break.
+%
address@hidden
address@hidden@auxout{\string\citation{#2}}\fi%
+  address@hidden@address@hidden@citeb:=#2\do%
+    address@hidden@citea{; address@hidden by Young
+       address@hidden@citeb}{{\bf ?}%
+       address@hidden address@hidden' on page \thepage \space undefined}}%
+{\csname address@hidden@citeb\endcsname}}}{#1}}%
+
+% (from apalike.sty)
+% No labels in the bibliography.
+%
address@hidden
+
+% (from apalike.sty)
+% Set length of hanging indentation for bibliography entries.
+%
+\newlength{\bibhang}
+\setlength{\bibhang}{2em}
+
+% Indent second and subsequent lines of bibliographic entries. Stolen
+% from openbib.sty: \newblock is set to {}.
+
+\newdimen\bibindent
+\bibindent=1em
address@hidden
+   address@hidden
+     {\newcommand{\refname}{\footnotesize REFERENCES}}%
+     {\newcommand{\refname}{\footnotesize BIBLIOGRAPHY}}%
+   }%
+   {}%
address@hidden
+ {\def\thebibliography#1{\footnotesize address@hidden 
+   {\uppercase{\refname}}{\uppercase{\refname}}}\list
+   {[\arabic{enumi}]}{
+   \settowidth\labelwidth{[#1]}
+   \leftmargin\labelwidth
+   \advance\leftmargin\labelsep
+   \advance\leftmargin\bibindent
+   \itemindent -\bibindent
+   \listparindent \itemindent
+   \parsep \z@
+   \usecounter{enumi}}
+   \def\newblock{}
+   \sloppy
+   \sfcode`\.=1000\relax}}
+ {\def\thebibliography#1{\footnotesize address@hidden 
+   {\uppercase{\refname}}{\uppercase{\refname}}}\list
+   {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}
+   \leftmargin\labelwidth
+   \advance\leftmargin\labelsep
+   \advance\leftmargin\bibindent
+   \itemindent -\bibindent
+   \listparindent \itemindent
+   \parsep \z@
+   \usecounter{enumi}}
+   \def\newblock{}
+   \sloppy
+   \sfcode`\.=1000\relax}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% fixes to acm trans macro package
+% 31-JAN-1996
+% John Tang Boyland
+
+% newdef need to take the optional parameters of newtheorem
address@hidden@address@hidden
address@hidden@#1}[#2]{{\em address@hidden
address@hidden@address@hidden@yynewdef{#1}{#2}}}
address@hidden@#1}{{\em address@hidden
address@hidden@#1}{{\em address@hidden
+% and now fix up definition, to change body to use roman font:
address@hidden@address@hidden@address@hidden
+%changed by K.R. Apt on Sep. 27, 2000. It was: address@hidden@#1}[#2]\rm}
address@hidden@#1}[{\em #2}]\rm}
address@hidden@#1}\rm}
+
+% footers produced too small (vpt), when ACM typsets them at 7.5pt (!).
+% A better compromise is viipt.
address@hidden@runningfoot}
address@hidden@runningfoot\hfill\hbox{}}
+
+% first footer was set to (vpt), when ACM typesets them at 6.5pt (!).
+% A better compromise is vipt.
address@hidden@vipt}
address@hidden@address@hidden
address@hidden@address@hidden
address@hidden@address@hidden
+
+% new permission statement
+\long\def\permission{\par
+% linebreaks added to conform to the current style
+Permission to make digital/hard copy of all or part of this material without
+fee 
+for personal or classroom use
+provided that the copies are not made or distributed for profit
+or commercial advantage, the ACM copyright/server notice, the title of the
+publication, and its date appear, and notice is given that copying is by
+permission of the ACM, Inc.  To copy
+otherwise, to republish, to post on servers, or to redistribute to lists
+requires prior specific 
+permission and/or a fee.\par
+\copyright\ address@hidden 
+ACM address@hidden/address@hidden/address@hidden@pageCode\$5.00 % aiellom
+}
+
+% make sure \permission doesn't get trashed
+\def\endbottomstuff{\permission\end{figure}}
+
+% alternate way of using citeyear
+%  \def\shortcite#1{\citeyear{#1}
+% enumerations and longenums are wrong
+% 1. the second line in a paragraph of an enumerations in theorems
+%  (or other trivlists) doesn't line up under the first
+% 1. the second line of a longenum doesn't properly wrap around
+%  back to the left margin.
+
+% the original definition of address@hidden doesn't set labelwidth
address@hidden
+ \labelwidth\leftmargini\advance\labelwidth-\labelsep
+ \parsep 0pt plus 1pt
+ \topsep 6pt plus 2pt minus 2pt
+ \itemsep 2pt plus 1pt minus .5pt}
address@hidden@listI
address@hidden 
+
+% add set of \labelwidth and \itemindent
+\def\longenum{\ifnum address@hidden >3 address@hidden
+ address@hidden address@hidden 
+ address@hidden@enumdepth}\list
+ {\csname address@hidden
+ address@hidden@\leftmargin\z@
+ \itemindent\parindent \advance\itemindent\labelsep}\fi}
+
+% split electronic appendix into two parts:
+
+
+%aiellom{
+\def\appendixhead#1{\appendix
+\section*{ELECTRONIC APPENDIX}
+The electronic appendix for this article can be accessed in
+  the ACM Digital Library by visiting the following URL:$\;$ 
+  \url{http://www.acm.org/pubs/citations/journals/}{\tt address@hidden 
/address@hidden@address@hidden/address@hidden
+% \quad \href{http://www.acm.org/tocl}{{\small http://www.acm.org/tocl} }
+}
+%aiellom}
+
+\long\def\elecappendix{
+\clearpage
+\makeatletter
+\pagenumbering{withappendix}
+\makeatother
+\appendix
+\par\noindent{\sc This document is the online-only appendix to:}\hfill \vskip 
1em
+{\vbox{\Large\sf address@hidden .5em
+\vbox{\sf address@hidden .5em\noindent
+\vskip 10pt\noindent
+{\firstfootsize 
address@hidden, Vol.\ address@hidden, No.\ address@hidden, address@hidden 
address@hidden, Pages \pages.}
+\vskip 11pt\noindent
+\hrule height .2pt
+\par
+\bottomstuff
+\endbottomstuff
+}
+
+% provide for a single acknowledgment
+\def\ack{ \par \footnotesize 
address@hidden
address@hidden@}{-16pt plus -2pt minus 
+ -1pt}{2pt}{\sf}*{ACKNOWLEDGMENT}\par\normalsize
+\pdfbookmark{Acknowledgment}{Ack}
+}
+\def\endack{\par}
+
+% provide both spellings of Acknowledgment(s)
+\let\acknowledgments\acks
+\let\endacknowledgments\endacks
+\let\acknowledgment\ack
+\let\endacknowledgment\endack
+
+\newcommand{\longpage}{\enlargethispage{\baselineskip}}
+\newcommand{\shortpage}{\enlargethispage{-\baselineskip}}
+
+
+% Don't indent bibliography and
+% override \refname (which sets fontsize):
+\def\thebibliography#1{
+  address@hidden
+  {\uppercase{\refname}}{\uppercase{\refname}}}%
+   \pdfbookmark{References}{Ref}
+   \list
+  address@hidden
+   %\settowidth\labelwidth{[#1]}
+   \labelwidth 0pt
+   \leftmargin \bibindent
+   \labelsep 0pt
+   address@hidden
+     \itemindent -\bibindent
+   \fi
+   \listparindent -\bibindent
+   \labelsep -\bibindent
+    \usecounter{enumiv}%
+    address@hidden@empty
+    \def\theenumiv{\arabic{enumiv}}}%
+    \def\newblock{\hskip .11em plus.33em minus.07em}%
+    \sloppy
+    \clubpenalty=4500
+    \widowpenalty=4500
+    \frenchspacing}
+\def\endthebibliography{%
+  address@hidden@warning{Empty `thebibliography' environment}}%
+  \endlist}
address@hidden@filesw
+      {\def\protect##1{\string ##1\space}\immediate
+       address@hidden
+% Fix cite so it doesn't repeat author lists in citations:
+
address@hidden
+    address@hidden@tempswa , ##2\fi]}%
+    address@hidden@noauthor
+    address@hidden@address@hidden
+    %\def\citeauthoryear##1##2##3{##2 address@hidden
+
address@hidden
address@hidden@noauthor
address@hidden@noauthor
+
address@hidden@repeats#1#2#3{%
+  address@hidden @author #1\endcsname}%
+  address@hidden@currauthor{#3}\else{#2 #3}\fi%
+  address@hidden@currauthor}
+
+\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
address@hidden
address@hidden
address@hidden
address@hidden
+
+
address@hidden
+   \let\pdfbookmark=\relax
+   \RequirePackage[pdfmark]{hyperref}
+\fi
+
+% \renewcommand{\thefootnote}{\arabic{footnote}\hspace{-3pt}}
+
+

Added: GNUnet-docs/papers/ecrs/big_storage_pic.eps
===================================================================
--- GNUnet-docs/papers/ecrs/big_storage_pic.eps 2005-05-31 19:10:35 UTC (rev 
832)
+++ GNUnet-docs/papers/ecrs/big_storage_pic.eps 2005-05-31 19:27:19 UTC (rev 
833)
@@ -0,0 +1,396 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: big_storage_pic.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3c
+%%CreationDate: Thu Nov 15 19:13:47 2001
+%%For: address@hidden (Krista Bennett,,,)
+%%BoundingBox: 0 0 502 213
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 213 moveto 0 0 lineto 502 0 lineto 502 213 lineto closepath clip 
newpath
+-17.0 262.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+%%Page: 1 1
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+7.500 slw
+ [15 45] 45 sd
+gs  clippath
+1994 3960 m 2032 4007 l 2150 3913 l 2038 3965 l 2112 3866 l cp
+eoclip
+n 2775 3375 m
+ 2025 3975 l gs col0 s gr gr
+ [] 0 sd
+% arrowhead
+n 2112 3866 m 2038 3965 l 2150 3913 l  col0 s
+% Polyline
+ [15 45] 45 sd
+gs  clippath
+2516 3976 m 2571 4000 l 2631 3861 l 2557 3960 l 2576 3837 l cp
+eoclip
+n 2775 3450 m
+ 2550 3975 l gs col0 s gr gr
+ [] 0 sd
+% arrowhead
+n 2576 3837 m 2557 3960 l 2631 3861 l  col0 s
+% Polyline
+ [15 45] 45 sd
+gs  clippath
+2667 3982 m 2725 3996 l 2762 3849 l 2704 3959 l 2704 3835 l cp
+eoclip
+n 2850 3375 m
+ 2700 3975 l gs col0 s gr gr
+ [] 0 sd
+% arrowhead
+n 2704 3835 m 2704 3959 l 2762 3849 l  col0 s
+% Polyline
+ [15 45] 45 sd
+gs  clippath
+3504 4001 m 3558 3975 l 3491 3839 l 3518 3960 l 3437 3866 l cp
+eoclip
+n 3225 3375 m
+ 3525 3975 l gs col0 s gr gr
+ [] 0 sd
+% arrowhead
+n 3437 3866 m 3518 3960 l 3491 3839 l  col0 s
+% Polyline
+ [15 45] 45 sd
+gs  clippath
+6292 4007 m 6330 3960 l 6212 3866 l 6287 3965 l 6174 3913 l cp
+eoclip
+n 5550 3375 m
+ 6300 3975 l gs col0 s gr gr
+ [] 0 sd
+% arrowhead
+n 6174 3913 m 6287 3965 l 6212 3866 l  col0 s
+% Polyline
+ [15 45] 45 sd
+gs  clippath
+5753 4000 m 5808 3976 l 5748 3837 l 5768 3960 l 5693 3861 l cp
+eoclip
+n 5550 3450 m
+ 5775 3975 l gs col0 s gr gr
+ [] 0 sd
+% arrowhead
+n 5693 3861 m 5768 3960 l 5748 3837 l  col0 s
+% Polyline
+ [15 45] 45 sd
+gs  clippath
+5599 3996 m 5657 3982 l 5621 3835 l 5621 3959 l 5562 3849 l cp
+eoclip
+n 5475 3375 m
+ 5625 3975 l gs col0 s gr gr
+ [] 0 sd
+% arrowhead
+n 5562 3849 m 5621 3959 l 5621 3835 l  col0 s
+% Polyline
+ [15 45] 45 sd
+gs  clippath
+4766 3975 m 4820 4001 l 4887 3866 l 4807 3960 l 4833 3839 l cp
+eoclip
+n 5100 3375 m
+ 4800 3975 l gs col0 s gr gr
+ [] 0 sd
+% arrowhead
+n 4833 3839 m 4807 3960 l 4887 3866 l  col0 s
+% Polyline
+ [15 45] 45 sd
+gs  clippath
+2823 2979 m 2849 3033 l 2986 2969 l 2865 2993 l 2961 2915 l cp
+eoclip
+n 3975 2475 m
+ 2850 3000 l gs col0 s gr gr
+ [] 0 sd
+% arrowhead
+n 2961 2915 m 2865 2993 l 2986 2969 l  col0 s
+% Polyline
+ [15 45] 45 sd
+gs  clippath
+3492 2991 m 3538 3030 l 3636 2915 l 3536 2987 l 3591 2876 l cp
+eoclip
+n 3975 2475 m
+ 3525 3000 l gs col0 s gr gr
+ [] 0 sd
+% arrowhead
+n 3591 2876 m 3536 2987 l 3636 2915 l  col0 s
+% Polyline
+ [15 45] 45 sd
+gs  clippath
+3716 2998 m 3768 3027 l 3843 2896 l 3758 2986 l 3791 2866 l cp
+eoclip
+n 4050 2475 m
+ 3750 3000 l gs col0 s gr gr
+ [] 0 sd
+% arrowhead
+n 3791 2866 m 3758 2986 l 3843 2896 l  col0 s
+% Polyline
+ [15 45] 45 sd
+gs  clippath
+5400 3033 m 5426 2979 l 5288 2915 l 5385 2993 l 5263 2969 l cp
+eoclip
+n 4275 2475 m
+ 5400 3000 l gs col0 s gr gr
+ [] 0 sd
+% arrowhead
+n 5263 2969 m 5385 2993 l 5288 2915 l  col0 s
+% Polyline
+ [15 45] 45 sd
+gs  clippath
+4711 3030 m 4757 2991 l 4658 2876 l 4714 2987 l 4613 2915 l cp
+eoclip
+n 4275 2475 m
+ 4725 3000 l gs col0 s gr gr
+ [] 0 sd
+% arrowhead
+n 4613 2915 m 4714 2987 l 4658 2876 l  col0 s
+% Polyline
+ [15 45] 45 sd
+gs  clippath
+4481 3027 m 4533 2998 l 4458 2866 l 4492 2986 l 4406 2896 l cp
+eoclip
+n 4200 2475 m
+ 4500 3000 l gs col0 s gr gr
+ [] 0 sd
+% arrowhead
+n 4406 2896 m 4492 2986 l 4458 2866 l  col0 s
+/Times-Roman ff 180.00 scf sf
+300 3000 m
+gs 1 -1 sc (IBlock: indirection node) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+300 3240 m
+gs 1 -1 sc (             containing hashes of) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+300 3480 m
+gs 1 -1 sc (             child node data) col0 sh gr
+% Polyline
+n 3750 2100 m 4500 2100 l 4500 2475 l 3750 2475 l
+ cp gs col0 s gr 
+% Polyline
+n 2625 3000 m 3375 3000 l 3375 3375 l 2625 3375 l
+ cp gs col0 s gr 
+% Polyline
+n 4875 3000 m 5625 3000 l 5625 3375 l 4875 3375 l
+ cp gs col0 s gr 
+% Polyline
+n 3750 1275 m 4500 1275 l 4500 1650 l 3750 1650 l
+ cp gs col0 s gr 
+% Polyline
+n 1650 3975 m 2400 3975 l 2400 4350 l 1650 4350 l
+ cp gs col0 s gr 
+% Polyline
+n 3150 3975 m 3900 3975 l 3900 4350 l 3150 4350 l
+ cp gs col0 s gr 
+% Polyline
+n 4425 3975 m 5175 3975 l 5175 4350 l 4425 4350 l
+ cp gs col0 s gr 
+% Polyline
+n 5925 3975 m 6675 3975 l 6675 4350 l 5925 4350 l
+ cp gs col0 s gr 
+% Polyline
+ [15 45] 45 sd
+gs  clippath
+4095 2115 m 4155 2115 l 4155 1963 l 4125 2083 l 4095 1963 l cp
+eoclip
+n 4125 1650 m
+ 4125 2100 l gs col0 s gr gr
+ [] 0 sd
+% arrowhead
+n 4095 1963 m 4125 2083 l 4155 1963 l  col0 s
+% Polyline
+n 3975 1275 m
+ 3975 1650 l gs col0 s gr 
+% Polyline
+n 4275 1275 m
+ 4275 1650 l gs col0 s gr 
+% Polyline
+ [60] 0 sd
+gs  clippath
+6660 4020 m 6660 4080 l 6812 4080 l 6692 4050 l 6812 4020 l cp
+eoclip
+n 6675 4050 m
+ 7125 4050 l gs col0 s gr gr
+ [] 0 sd
+% arrowhead
+n 6812 4020 m 6692 4050 l 6812 4080 l  col0 s
+% Polyline
+ [60] 0 sd
+gs  clippath
+5610 3120 m 5610 3180 l 5762 3180 l 5642 3150 l 5762 3120 l cp
+eoclip
+n 5625 3150 m
+ 7125 3150 l gs col0 s gr gr
+ [] 0 sd
+% arrowhead
+n 5762 3120 m 5642 3150 l 5762 3180 l  col0 s
+% Polyline
+ [60] 0 sd
+gs  clippath
+4485 2220 m 4485 2280 l 4637 2280 l 4517 2250 l 4637 2220 l cp
+eoclip
+n 4500 2250 m
+ 7125 2250 l gs col0 s gr gr
+ [] 0 sd
+% arrowhead
+n 4637 2220 m 4517 2250 l 4637 2280 l  col0 s
+% Polyline
+ [60] 0 sd
+gs  clippath
+4485 1395 m 4485 1455 l 4637 1455 l 4517 1425 l 4637 1395 l cp
+eoclip
+n 4500 1425 m
+ 7125 1425 l gs col0 s gr gr
+ [] 0 sd
+% arrowhead
+n 4637 1395 m 4517 1425 l 4637 1455 l  col0 s
+% Polyline
+gs  clippath
+3765 2280 m 3765 2220 l 3613 2220 l 3733 2250 l 3613 2280 l cp
+eoclip
+n 3750 2250 m
+ 2925 2250 l gs col0 s gr gr
+
+% arrowhead
+n 3613 2280 m 3733 2250 l 3613 2220 l  col0 s
+% Polyline
+gs  clippath
+2640 3180 m 2640 3120 l 2488 3120 l 2608 3150 l 2488 3180 l cp
+eoclip
+n 2625 3150 m
+ 2325 3150 l gs col0 s gr gr
+
+% arrowhead
+n 2488 3180 m 2608 3150 l 2488 3120 l  col0 s
+% Polyline
+gs  clippath
+1665 4080 m 1665 4020 l 1513 4020 l 1633 4050 l 1513 4080 l cp
+eoclip
+n 1650 4050 m
+ 1350 4050 l gs col0 s gr gr
+
+% arrowhead
+n 1513 4080 m 1633 4050 l 1513 4020 l  col0 s
+% Polyline
+gs  clippath
+3765 1455 m 3765 1395 l 3613 1395 l 3733 1425 l 3613 1455 l cp
+eoclip
+n 3300 1425 m
+ 3750 1425 l gs col0 s gr gr
+
+% arrowhead
+n 3613 1455 m 3733 1425 l 3613 1395 l  col0 s
+/Times-Italic ff 180.00 scf sf
+7200 1500 m
+gs 1 -1 sc (H\(H\(Keyword\)\)) col0 sh gr
+/Times-Bold ff 210.00 scf sf
+7275 975 m
+gs 1 -1 sc (Filenames) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+300 1200 m
+gs 1 -1 sc (RBlock: Contains file information,) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+300 1440 m
+gs 1 -1 sc (              description, and hashcode ) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+300 1680 m
+gs 1 -1 sc (              root indirection node.) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+300 2100 m
+gs 1 -1 sc (IBlock \(Root\): Like other indirection) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+300 2340 m
+gs 1 -1 sc (            blocks, this contains the) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+300 2580 m
+gs 1 -1 sc (            hashes of its child nodes.) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+300 4125 m
+gs 1 -1 sc (DBlock) col0 sh gr
+/Times-Italic ff 180.00 scf sf
+7200 2325 m
+gs 1 -1 sc (H\(H\(Root IBlock\)\)) col0 sh gr
+/Times-Italic ff 180.00 scf sf
+7200 3225 m
+gs 1 -1 sc (H\(H\(IBlock\)\)) col0 sh gr
+/Times-Italic ff 180.00 scf sf
+7200 4125 m
+gs 1 -1 sc (H\(H\(DBlock\)\)) col0 sh gr
+$F2psEnd
+rs

Added: GNUnet-docs/papers/ecrs/big_storage_pic.fig
===================================================================
--- GNUnet-docs/papers/ecrs/big_storage_pic.fig 2005-05-31 19:10:35 UTC (rev 
832)
+++ GNUnet-docs/papers/ecrs/big_storage_pic.fig 2005-05-31 19:27:19 UTC (rev 
833)
@@ -0,0 +1,123 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 2025 3375 3525 3975
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 1 0 2
+       0 0 1.00 60.00 120.00
+        2775 3375 2025 3975
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 1 0 2
+       0 0 1.00 60.00 120.00
+        2775 3450 2550 3975
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 1 0 2
+       0 0 1.00 60.00 120.00
+        2850 3375 2700 3975
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 1 0 2
+       0 0 1.00 60.00 120.00
+        3225 3375 3525 3975
+-6
+6 4800 3375 6300 3975
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 1 0 2
+       0 0 1.00 60.00 120.00
+        5550 3375 6300 3975
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 1 0 2
+       0 0 1.00 60.00 120.00
+        5550 3450 5775 3975
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 1 0 2
+       0 0 1.00 60.00 120.00
+        5475 3375 5625 3975
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 1 0 2
+       0 0 1.00 60.00 120.00
+        5100 3375 4800 3975
+-6
+6 2850 2475 4050 3000
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 1 0 2
+       0 0 1.00 60.00 120.00
+        3975 2475 2850 3000
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 1 0 2
+       0 0 1.00 60.00 120.00
+        3975 2475 3525 3000
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 1 0 2
+       0 0 1.00 60.00 120.00
+        4050 2475 3750 3000
+-6
+6 4200 2475 5400 3000
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 1 0 2
+       0 0 1.00 60.00 120.00
+        4275 2475 5400 3000
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 1 0 2
+       0 0 1.00 60.00 120.00
+        4275 2475 4725 3000
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 1 0 2
+       0 0 1.00 60.00 120.00
+        4200 2475 4500 3000
+-6
+6 300 2850 2475 3525
+4 0 0 50 0 0 12 0.0000 4 135 1785 300 3000 IBlock: indirection node\001
+4 0 0 50 0 0 12 0.0000 4 180 2145 300 3240              containing hashes 
of\001
+4 0 0 50 0 0 12 0.0000 4 135 1725 300 3480              child node data\001
+-6
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        3750 2100 4500 2100 4500 2475 3750 2475 3750 2100
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        2625 3000 3375 3000 3375 3375 2625 3375 2625 3000
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        4875 3000 5625 3000 5625 3375 4875 3375 4875 3000
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        3750 1275 4500 1275 4500 1650 3750 1650 3750 1275
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        1650 3975 2400 3975 2400 4350 1650 4350 1650 3975
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        3150 3975 3900 3975 3900 4350 3150 4350 3150 3975
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        4425 3975 5175 3975 5175 4350 4425 4350 4425 3975
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        5925 3975 6675 3975 6675 4350 5925 4350 5925 3975
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 1 0 2
+       0 0 1.00 60.00 120.00
+        4125 1650 4125 2100
+2 1 0 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
+        3975 1275 3975 1650
+2 1 0 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
+        4275 1275 4275 1650
+2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 1 2
+       0 0 1.00 60.00 120.00
+        6675 4050 7125 4050
+2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 1 2
+       0 0 1.00 60.00 120.00
+        5625 3150 7125 3150
+2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 1 2
+       0 0 1.00 60.00 120.00
+        4500 2250 7125 2250
+2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 1 2
+       0 0 1.00 60.00 120.00
+        4500 1425 7125 1425
+2 1 0 1 0 7 50 0 -1 4.000 0 0 -1 0 1 2
+       0 0 1.00 60.00 120.00
+        3750 2250 2925 2250
+2 1 0 1 0 7 50 0 -1 4.000 0 0 -1 0 1 2
+       0 0 1.00 60.00 120.00
+        2625 3150 2325 3150
+2 1 0 1 0 7 50 0 -1 4.000 0 0 -1 0 1 2
+       0 0 1.00 60.00 120.00
+        1650 4050 1350 4050
+2 1 0 1 0 7 50 0 -1 4.000 0 0 -1 1 0 2
+       0 0 1.00 60.00 120.00
+        3300 1425 3750 1425
+4 0 0 50 0 1 12 0.0000 4 180 1185 7200 1500 H(H(Keyword))\001
+4 0 0 50 0 2 14 0.0000 4 150 990 7275 975 Filenames\001
+4 0 0 50 0 0 12 0.0000 4 165 2550 300 1200 RBlock: Contains file 
information,\001
+4 0 0 50 0 0 12 0.0000 4 180 2640 300 1440               description, and 
hashcode \001
+4 0 0 50 0 0 12 0.0000 4 135 2220 300 1680               root indirection 
node.\001
+4 0 0 50 0 0 12 0.0000 4 180 2745 300 2100 IBlock (Root): Like other 
indirection\001
+4 0 0 50 0 0 12 0.0000 4 165 2385 300 2340             blocks, this contains 
the\001
+4 0 0 50 0 0 12 0.0000 4 135 2460 300 2580             hashes of its child 
nodes.\001
+4 0 0 50 0 0 12 0.0000 4 135 570 300 4125 DBlock\001
+4 0 0 50 0 1 12 0.0000 4 180 1410 7200 2325 H(H(Root IBlock))\001
+4 0 0 50 0 1 12 0.0000 4 180 1005 7200 3225 H(H(IBlock))\001
+4 0 0 50 0 1 12 0.0000 4 180 1065 7200 4125 H(H(DBlock))\001

Added: GNUnet-docs/papers/ecrs/chk.eps
===================================================================
--- GNUnet-docs/papers/ecrs/chk.eps     2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet-docs/papers/ecrs/chk.eps     2005-05-31 19:27:19 UTC (rev 833)
@@ -0,0 +1,284 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: chk.fig
+%%Creator: fig2dev Version 3.2 Patchlevel 4
+%%CreationDate: Sun Oct 19 14:24:10 2003
+%%For: address@hidden (Christian Grothoff,,,)
+%%BoundingBox: 0 0 333 281
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 281 moveto 0 0 lineto 333 0 lineto 333 281 lineto closepath clip 
newpath
+-8.5 318.2 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+0 slj 0 slc
+ 0.06299 0.06299 sc
+%
+% Fig objects follow
+%
+% 
+% here starts figure with depth 50
+% Polyline
+7.500 slw
+n 1350 630 m
+ 1350 2250 l gs col0 s gr 
+% Polyline
+n 1800 2250 m
+ 1800 630 l gs col0 s gr 
+% Polyline
+n 3150 630 m
+ 3150 2250 l gs col0 s gr 
+% Polyline
+n 2250 630 m
+ 2250 2250 l gs col0 s gr 
+% Polyline
+n 900 2250 m
+ 450 3600 l gs col0 s gr 
+% Polyline
+n 1935 3600 m
+ 1350 2250 l gs col0 s gr 
+% Polyline
+n 3600 2250 m
+ 3600 630 l gs col0 s gr 
+% Polyline
+n 3150 2250 m
+ 2700 3600 l gs col0 s gr 
+% Polyline
+n 3600 2250 m
+ 4185 3600 l gs col0 s gr 
+% Polyline
+n 450 3600 m 1935 3600 l 1935 4140 l 450 4140 l
+ cp gs col0 s gr 
+% Polyline
+n 2700 3600 m 4185 3600 l 4185 4140 l 2700 4140 l
+ cp gs col0 s gr 
+% Polyline
+n 450 4500 m 1935 4500 l 1935 5040 l 450 5040 l
+ cp gs col0 s gr 
+% Polyline
+n 2700 4500 m 4185 4500 l 4185 5040 l 2700 5040 l
+ cp gs col0 s gr 
+% Polyline
+gs  clippath
+1185 4515 m 1245 4515 l 1245 4363 l 1215 4483 l 1185 4363 l cp
+eoclip
+n 1215 4140 m
+ 1215 4500 l gs col0 s gr gr
+
+% arrowhead
+n 1185 4363 m 1215 4483 l 1245 4363 l  col0 s
+% Polyline
+gs  clippath
+1110 4125 m 1050 4125 l 1050 4277 l 1080 4157 l 1110 4277 l cp
+eoclip
+n 1080 4500 m
+ 1080 4140 l gs col0 s gr gr
+
+% arrowhead
+n 1110 4277 m 1080 4157 l 1050 4277 l  col0 s
+% Polyline
+gs  clippath
+3405 4125 m 3345 4125 l 3345 4277 l 3375 4157 l 3405 4277 l cp
+eoclip
+n 3375 4140 m
+ 3375 4500 l gs col0 s gr gr
+
+% arrowhead
+n 3405 4277 m 3375 4157 l 3345 4277 l  col0 s
+% Polyline
+gs  clippath
+3480 4515 m 3540 4515 l 3540 4363 l 3510 4483 l 3480 4363 l cp
+eoclip
+n 3510 4500 m
+ 3510 4140 l gs col0 s gr gr
+
+% arrowhead
+n 3480 4363 m 3510 4483 l 3540 4363 l  col0 s
+% Polyline
+gs  clippath
+4170 1635 m 4170 1695 l 4322 1695 l 4202 1665 l 4322 1635 l cp
+4260 3840 m 4260 3900 l 4412 3900 l 4292 3870 l 4412 3840 l cp
+eoclip
+n 4275 3870 m 4950 3870 l 4950 1665 l
+ 4185 1665 l gs col0 s gr gr
+
+% arrowhead
+n 4412 3840 m 4292 3870 l 4412 3900 l  col0 s
+% arrowhead
+n 4322 1635 m 4202 1665 l 4322 1695 l  col0 s
+% Polyline
+gs  clippath
+4125 870 m 4125 930 l 4277 930 l 4157 900 l 4277 870 l cp
+4260 4740 m 4260 4800 l 4412 4800 l 4292 4770 l 4412 4740 l cp
+eoclip
+n 4275 4770 m 5400 4770 l 5400 900 l
+ 4140 900 l gs col0 s gr gr
+
+% arrowhead
+n 4412 4740 m 4292 4770 l 4412 4800 l  col0 s
+% arrowhead
+n 4277 870 m 4157 900 l 4277 930 l  col0 s
+% Polyline
+n 4050 1215 m
+ 3600 1215 l gs col0 s gr 
+% Polyline
+n 900 630 m 2250 630 l 2250 2250 l 900 2250 l
+ cp gs col0 s gr 
+% Polyline
+n 3150 630 m 4050 630 l 4050 2250 l 3150 2250 l
+ cp gs col0 s gr 
+% Polyline
+ [15 45] 45 sd
+n 2250 2250 m
+ 3195 2250 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 3150 630 m
+ 2250 630 l gs col0 s gr  [] 0 sd
+/Times-Roman ff 180.00 scf sf
+675 3780 m
+gs 1 -1 sc (K1 = H\(D1\)) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+2835 3780 m
+gs 1 -1 sc (K25 = H\(D25\)) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+540 4005 m
+gs 1 -1 sc (Q1 = H\(E  \(D1\)\)) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+2700 4005 m
+gs 1 -1 sc (Q25 = H\(E    \(D25\)\)) col0 sh gr
+/Times-Roman ff 120.00 scf sf
+1215 4095 m
+gs 1 -1 sc (K1) col0 sh gr
+/Times-Roman ff 120.00 scf sf
+3465 4095 m
+gs 1 -1 sc (K25) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+2250 3870 m
+gs 1 -1 sc (...) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+2250 4770 m
+gs 1 -1 sc (...) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+1080 4815 m
+gs 1 -1 sc (D1) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+3285 4815 m
+gs 1 -1 sc (D25) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+1260 4365 m
+gs 1 -1 sc (Q1 identifies) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+135 4365 m
+gs 1 -1 sc (K1 decrypts) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+2385 4365 m
+gs 1 -1 sc (K25 decrypts) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+3555 4365 m
+gs 1 -1 sc (Q25 identifies) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+5355 4050 m
+gs 1 -1 sc  90.0 rot (verifies \(in case of hash collisions\)) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+4905 3240 m
+gs 1 -1 sc  90.0 rot (summarizes ) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+1170 2115 m
+gs 1 -1 sc  90.0 rot (CHK 1=\(K1,Q1\)) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+1620 2115 m
+gs 1 -1 sc  90.0 rot (CHK 2=\(K2,Q2\)) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+2070 2115 m
+gs 1 -1 sc  90.0 rot (CHK 3=\(K3,Q3\)) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+3420 2160 m
+gs 1 -1 sc  90.0 rot (CHK 25=\(K25,Q25\)) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+3870 1125 m
+gs 1 -1 sc  90.0 rot (CRC) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+3870 2115 m
+gs 1 -1 sc  90.0 rot (SuperHash) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+855 1800 m
+gs 1 -1 sc  90.0 rot (IBlock) col0 sh gr
+% here ends figure;
+$F2psEnd
+rs
+showpage

Added: GNUnet-docs/papers/ecrs/chk.fig
===================================================================
--- GNUnet-docs/papers/ecrs/chk.fig     2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet-docs/papers/ecrs/chk.fig     2005-05-31 19:27:19 UTC (rev 833)
@@ -0,0 +1,88 @@
+#FIG 3.2
+Landscape
+Center
+Metric
+A4      
+100.00
+Single
+-2
+1200 2
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        1350 630 1350 2250
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        1800 2250 1800 630
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        3150 630 3150 2250
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        2250 630 2250 2250
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        900 2250 450 3600
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        1935 3600 1350 2250
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        3600 2250 3600 630
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        3150 2250 2700 3600
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        3600 2250 4185 3600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        450 3600 1935 3600 1935 4140 450 4140 450 3600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        2700 3600 4185 3600 4185 4140 2700 4140 2700 3600
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        450 4500 1935 4500 1935 5040 450 5040 450 4500
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        2700 4500 4185 4500 4185 5040 2700 5040 2700 4500
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+       0 0 1.00 60.00 120.00
+        1215 4140 1215 4500
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+       0 0 1.00 60.00 120.00
+        1080 4500 1080 4140
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
+       0 0 1.00 60.00 120.00
+        3375 4140 3375 4500
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
+       0 0 1.00 60.00 120.00
+        3510 4500 3510 4140
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 1 4
+       0 0 1.00 60.00 120.00
+       0 0 1.00 60.00 120.00
+        4275 3870 4950 3870 4950 1665 4185 1665
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 1 4
+       0 0 1.00 60.00 120.00
+       0 0 1.00 60.00 120.00
+        4275 4770 5400 4770 5400 900 4140 900
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        4050 1215 3600 1215
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        900 630 2250 630 2250 2250 900 2250 900 630
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        3150 630 4050 630 4050 2250 3150 2250 3150 630
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        2250 2250 3195 2250
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        3150 630 2250 630
+4 0 0 50 -1 0 12 0.0000 4 150 900 675 3780 K1 = H(D1)\001
+4 0 0 50 -1 0 12 0.0000 4 150 1080 2835 3780 K25 = H(D25)\001
+4 0 0 50 -1 0 12 0.0000 4 150 1215 540 4005 Q1 = H(E  (D1))\001
+4 0 0 50 -1 0 12 0.0000 4 150 1485 2700 4005 Q25 = H(E    (D25))\001
+4 0 0 50 -1 0 8 0.0000 4 75 150 1215 4095 K1\001
+4 0 0 50 -1 0 8 0.0000 4 90 210 3465 4095 K25\001
+4 0 0 50 -1 0 12 0.0000 4 15 135 2250 3870 ...\001
+4 0 0 50 -1 0 12 0.0000 4 15 135 2250 4770 ...\001
+4 0 0 50 -1 0 12 0.0000 4 120 225 1080 4815 D1\001
+4 0 0 50 -1 0 12 0.0000 4 120 315 3285 4815 D25\001
+4 0 0 50 -1 0 12 0.0000 4 150 915 1260 4365 Q1 identifies\001
+4 0 0 50 -1 0 12 0.0000 4 165 870 135 4365 K1 decrypts\001
+4 0 0 50 -1 0 12 0.0000 4 165 960 2385 4365 K25 decrypts\001
+4 0 0 50 -1 0 12 0.0000 4 150 1005 3555 4365 Q25 identifies\001
+4 0 0 50 -1 0 12 1.5708 4 150 2460 5355 4050 verifies (in case of hash 
collisions)\001
+4 0 0 50 -1 0 12 1.5708 4 120 885 4905 3240 summarizes \001
+4 0 0 50 -1 0 12 1.5708 4 150 1245 1170 2115 CHK 1=(K1,Q1)\001
+4 0 0 50 -1 0 12 1.5708 4 150 1245 1620 2115 CHK 2=(K2,Q2)\001
+4 0 0 50 -1 0 12 1.5708 4 150 1245 2070 2115 CHK 3=(K3,Q3)\001
+4 0 0 50 -1 0 12 1.5708 4 150 1515 3420 2160 CHK 25=(K25,Q25)\001
+4 0 0 50 -1 0 12 1.5708 4 120 360 3870 1125 CRC\001
+4 0 0 50 -1 0 12 1.5708 4 165 795 3870 2115 SuperHash\001
+4 0 0 50 -1 0 16 1.5708 4 165 645 855 1800 IBlock\001

Added: GNUnet-docs/papers/ecrs/gblock.eps
===================================================================
--- GNUnet-docs/papers/ecrs/gblock.eps  2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet-docs/papers/ecrs/gblock.eps  2005-05-31 19:27:19 UTC (rev 833)
@@ -0,0 +1,350 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: gblock.fig
+%%Creator: fig2dev Version 3.2 Patchlevel 4
+%%CreationDate: Wed Aug 13 23:03:23 2003
+%%For: address@hidden (Christian Grothoff,,,)
+%%BoundingBox: 0 0 450 283
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 283 moveto 0 0 lineto 450 0 lineto 450 283 lineto closepath clip 
newpath
+-21.9 315.4 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+0 slj 0 slc
+ 0.06299 0.06299 sc
+%
+% Fig objects follow
+%
+% 
+% here starts figure with depth 50
+% Polyline
+7.500 slw
+n 360 540 m 1620 540 l 1620 1080 l 360 1080 l
+ cp gs col0 s gr 
+% Polyline
+n 360 3690 m 1620 3690 l 1620 4230 l 360 4230 l
+ cp gs col0 s gr 
+% Polyline
+n 2160 3690 m 3420 3690 l 3420 4230 l 2160 4230 l
+ cp gs col0 s gr 
+% Polyline
+n 4410 3690 m 5670 3690 l 5670 4230 l 4410 4230 l
+ cp gs col0 s gr 
+% Polyline
+n 6210 3690 m 7470 3690 l 7470 4230 l 6210 4230 l
+ cp gs col0 s gr 
+% Polyline
+n 4410 2340 m 5670 2340 l 5670 2880 l 4410 2880 l
+ cp gs col0 s gr 
+% Polyline
+n 2160 2340 m 3420 2340 l 3420 2880 l 2160 2880 l
+ cp gs col0 s gr 
+% Polyline
+n 3240 1440 m 4500 1440 l 4500 1980 l 3240 1980 l
+ cp gs col0 s gr 
+% Polyline
+n 2160 540 m 3420 540 l 3420 1080 l 2160 1080 l
+ cp gs col0 s gr 
+% Polyline
+n 4410 540 m 5670 540 l 5670 1080 l 4410 1080 l
+ cp gs col0 s gr 
+% Polyline
+n 6210 540 m 7470 540 l 7470 1080 l 6210 1080 l
+ cp gs col0 s gr 
+% Polyline
+n 900 1080 m
+ 3780 1440 l gs col0 s gr 
+% Polyline
+n 3780 1440 m
+ 2790 1080 l gs col0 s gr 
+% Polyline
+n 3780 1440 m
+ 5040 1080 l gs col0 s gr 
+% Polyline
+n 3870 1440 m
+ 6930 1080 l gs col0 s gr 
+% Polyline
+n 990 3690 m
+ 2790 2880 l gs col0 s gr 
+% Polyline
+n 2790 2880 m
+ 2790 3690 l gs col0 s gr 
+% Polyline
+n 5040 3690 m
+ 5040 2880 l gs col0 s gr 
+% Polyline
+n 5040 2880 m
+ 6840 3690 l gs col0 s gr 
+% Polyline
+n 3870 1980 m
+ 2790 2340 l gs col0 s gr 
+% Polyline
+n 3870 1980 m
+ 5040 2340 l gs col0 s gr 
+% Polyline
+n 990 4230 m
+ 990 4500 l gs col0 s gr 
+% Polyline
+n 2790 4230 m
+ 2790 4500 l gs col0 s gr 
+% Polyline
+n 5040 4230 m
+ 5040 4500 l gs col0 s gr 
+% Polyline
+n 6840 4230 m
+ 6840 4500 l gs col0 s gr 
+% Polyline
+ [15 45] 45 sd
+n 2790 2880 m
+ 1710 3690 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 2790 2880 m
+ 1800 3690 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 2790 2880 m
+ 1890 3690 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 2790 2880 m
+ 1980 3690 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 5040 2880 m
+ 5760 3690 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 5040 2880 m
+ 5850 3690 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 5040 2880 m
+ 5940 3690 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 5040 2880 m
+ 6030 3690 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 5040 2880 m
+ 6120 3690 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 2790 2880 m
+ 2070 3690 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 3870 1980 m
+ 3600 2340 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 3870 1980 m
+ 3690 2340 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 3870 1980 m
+ 3870 2340 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 3780 2340 m
+ 3870 1980 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 3870 1980 m
+ 3960 2340 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 4050 2340 m
+ 3870 1980 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 3870 1980 m
+ 4140 2340 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 3870 1980 m
+ 3510 2340 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 3870 1980 m
+ 4230 2340 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 3780 1440 m
+ 1800 1080 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 3780 1440 m
+ 1980 1080 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 3780 1440 m
+ 5850 1080 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 3780 1440 m
+ 6030 1080 l gs col0 s gr  [] 0 sd
+% Polyline
+n 360 4500 m 7470 4500 l 7470 4995 l 360 4995 l
+ cp gs col0 s gr 
+/Times-Roman ff 360.00 scf sf
+450 4050 m
+gs 1 -1 sc (DBlock) col0 sh gr
+/Times-Roman ff 360.00 scf sf
+2250 4050 m
+gs 1 -1 sc (DBlock) col0 sh gr
+/Times-Roman ff 360.00 scf sf
+4500 4050 m
+gs 1 -1 sc (DBlock) col0 sh gr
+/Times-Roman ff 360.00 scf sf
+6300 4050 m
+gs 1 -1 sc (DBlock) col0 sh gr
+/Times-Roman ff 360.00 scf sf
+450 900 m
+gs 1 -1 sc (RBlock) col0 sh gr
+/Times-Roman ff 360.00 scf sf
+6300 900 m
+gs 1 -1 sc (SBlock) col0 sh gr
+/Times-Roman ff 360.00 scf sf
+2250 900 m
+gs 1 -1 sc (RBlock) col0 sh gr
+/Times-Roman ff 360.00 scf sf
+4500 900 m
+gs 1 -1 sc (SBlock) col0 sh gr
+/Times-Roman ff 360.00 scf sf
+3375 1800 m
+gs 1 -1 sc (IBlock) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+1800 3960 m
+gs 1 -1 sc (...) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+5850 3960 m
+gs 1 -1 sc (...) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+5850 810 m
+gs 1 -1 sc (...) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+1800 810 m
+gs 1 -1 sc (...) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+1620 3330 m
+gs 1 -1 sc (1) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+2520 3420 m
+gs 1 -1 sc (25) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+4500 2160 m
+gs 1 -1 sc (25) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+3060 2160 m
+gs 1 -1 sc (1) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+4860 3420 m
+gs 1 -1 sc (1) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+6120 3330 m
+gs 1 -1 sc (25) col0 sh gr
+/Times-Roman ff 360.00 scf sf
+2295 2700 m
+gs 1 -1 sc (IBlock) col0 sh gr
+/Times-Roman ff 360.00 scf sf
+4545 2745 m
+gs 1 -1 sc (IBlock) col0 sh gr
+/Times-Roman ff 360.00 scf sf
+2925 4860 m
+gs 1 -1 sc (Original Data) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+1035 4410 m
+gs 1 -1 sc (1k) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+2835 4410 m
+gs 1 -1 sc (1k) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+5085 4410 m
+gs 1 -1 sc (1k) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+6885 4410 m
+gs 1 -1 sc (1k) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+3825 2655 m
+gs 1 -1 sc (...) col0 sh gr
+% here ends figure;
+$F2psEnd
+rs
+showpage

Added: GNUnet-docs/papers/ecrs/gblock.fig
===================================================================
--- GNUnet-docs/papers/ecrs/gblock.fig  2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet-docs/papers/ecrs/gblock.fig  2005-05-31 19:27:19 UTC (rev 833)
@@ -0,0 +1,134 @@
+#FIG 3.2
+Landscape
+Center
+Metric
+A4      
+100.00
+Single
+-2
+1200 2
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        360 540 1620 540 1620 1080 360 1080 360 540
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        360 3690 1620 3690 1620 4230 360 4230 360 3690
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        2160 3690 3420 3690 3420 4230 2160 4230 2160 3690
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        4410 3690 5670 3690 5670 4230 4410 4230 4410 3690
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        6210 3690 7470 3690 7470 4230 6210 4230 6210 3690
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        4410 2340 5670 2340 5670 2880 4410 2880 4410 2340
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        2160 2340 3420 2340 3420 2880 2160 2880 2160 2340
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        3240 1440 4500 1440 4500 1980 3240 1980 3240 1440
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        2160 540 3420 540 3420 1080 2160 1080 2160 540
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        4410 540 5670 540 5670 1080 4410 1080 4410 540
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        6210 540 7470 540 7470 1080 6210 1080 6210 540
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        900 1080 3780 1440
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        3780 1440 2790 1080
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        3780 1440 5040 1080
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        3870 1440 6930 1080
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        990 3690 2790 2880
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        2790 2880 2790 3690
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        5040 3690 5040 2880
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        5040 2880 6840 3690
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        3870 1980 2790 2340
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        3870 1980 5040 2340
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        990 4230 990 4500
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        2790 4230 2790 4500
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        5040 4230 5040 4500
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        6840 4230 6840 4500
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        2790 2880 1710 3690
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        2790 2880 1800 3690
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        2790 2880 1890 3690
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        2790 2880 1980 3690
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        5040 2880 5760 3690
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        5040 2880 5850 3690
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        5040 2880 5940 3690
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        5040 2880 6030 3690
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        5040 2880 6120 3690
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        2790 2880 2070 3690
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        3870 1980 3600 2340
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        3870 1980 3690 2340
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        3870 1980 3870 2340
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        3780 2340 3870 1980
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        3870 1980 3960 2340
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        4050 2340 3870 1980
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        3870 1980 4140 2340
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        3870 1980 3510 2340
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        3870 1980 4230 2340
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        3780 1440 1800 1080
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        3780 1440 1980 1080
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        3780 1440 5850 1080
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        3780 1440 6030 1080
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        360 4500 7470 4500 7470 4995 360 4995 360 4500
+4 0 0 50 -1 0 24 0.0000 4 240 1125 450 4050 DBlock\001
+4 0 0 50 -1 0 24 0.0000 4 240 1125 2250 4050 DBlock\001
+4 0 0 50 -1 0 24 0.0000 4 240 1125 4500 4050 DBlock\001
+4 0 0 50 -1 0 24 0.0000 4 240 1125 6300 4050 DBlock\001
+4 0 0 50 -1 0 24 0.0000 4 240 1110 450 900 RBlock\001
+4 0 0 50 -1 0 24 0.0000 4 240 1065 6300 900 SBlock\001
+4 0 0 50 -1 0 24 0.0000 4 240 1110 2250 900 RBlock\001
+4 0 0 50 -1 0 24 0.0000 4 240 1065 4500 900 SBlock\001
+4 0 0 50 -1 0 24 0.0000 4 240 990 3375 1800 IBlock\001
+4 0 0 50 -1 0 16 0.0000 4 30 180 1800 3960 ...\001
+4 0 0 50 -1 0 16 0.0000 4 30 180 5850 3960 ...\001
+4 0 0 50 -1 0 16 0.0000 4 30 180 5850 810 ...\001
+4 0 0 50 -1 0 16 0.0000 4 30 180 1800 810 ...\001
+4 0 0 50 -1 0 16 0.0000 4 165 120 1620 3330 1\001
+4 0 0 50 -1 0 16 0.0000 4 165 240 2520 3420 25\001
+4 0 0 50 -1 0 16 0.0000 4 165 240 4500 2160 25\001
+4 0 0 50 -1 0 16 0.0000 4 165 120 3060 2160 1\001
+4 0 0 50 -1 0 16 0.0000 4 165 120 4860 3420 1\001
+4 0 0 50 -1 0 16 0.0000 4 165 240 6120 3330 25\001
+4 0 0 50 -1 0 24 0.0000 4 240 990 2295 2700 IBlock\001
+4 0 0 50 -1 0 24 0.0000 4 240 990 4545 2745 IBlock\001
+4 0 0 50 -1 0 24 0.0000 4 315 1995 2925 4860 Original Data\001
+4 0 0 50 -1 0 12 0.0000 4 120 180 1035 4410 1k\001
+4 0 0 50 -1 0 12 0.0000 4 120 180 2835 4410 1k\001
+4 0 0 50 -1 0 12 0.0000 4 120 180 5085 4410 1k\001
+4 0 0 50 -1 0 12 0.0000 4 120 180 6885 4410 1k\001
+4 0 0 50 -1 0 16 0.0000 4 30 180 3825 2655 ...\001

Added: GNUnet-docs/papers/ecrs/gproxy_scheme.eps
===================================================================
--- GNUnet-docs/papers/ecrs/gproxy_scheme.eps   2005-05-31 19:10:35 UTC (rev 
832)
+++ GNUnet-docs/papers/ecrs/gproxy_scheme.eps   2005-05-31 19:27:19 UTC (rev 
833)
@@ -0,0 +1,555 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: 555/doc/pet2002/gproxy_scheme.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3c
+%%CreationDate: Sun Nov 11 02:08:48 2001
+%%For: address@hidden (Krista Bennett,,,)
+%%BoundingBox: 0 0 504 272
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 272 moveto 0 0 lineto 504 0 lineto 504 272 lineto closepath clip 
newpath
+-52.0 298.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+ /DrawEllipse {
+       /endangle exch def
+       /startangle exch def
+       /yrad exch def
+       /xrad exch def
+       /y exch def
+       /x exch def
+       /savematrix mtrx currentmatrix def
+       x y tr xrad yrad sc 0 0 1 startangle endangle arc
+       closepath
+       savematrix setmatrix
+       } def
+
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+%%Page: 1 1
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+7.500 slw
+% Ellipse
+n 2247 791 398 171 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 6228 1587 398 171 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 8049 2781 398 171 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 8049 3919 398 171 0 360 DrawEllipse gs col0 s gr
+
+% Polyline
+gs  clippath
+9258 3054 m 9258 2963 l 9029 2963 l 9211 3009 l 9029 3054 l cp
+eoclip
+n 8049 3009 m
+ 9243 3009 l gs col0 s gr gr
+
+% arrowhead
+15.000 slw
+n 9029 3054 m 9211 3009 l 9029 2963 l 9029 3054 l  cp gs 0.00 setgray ef gr  
col0 s
+% Polyline
+7.500 slw
+gs  clippath
+9258 3054 m 9258 2963 l 9029 2963 l 9211 3009 l 9029 3054 l cp
+eoclip
+n 8049 3009 m
+ 9243 3009 l gs col0 s gr gr
+
+% arrowhead
+15.000 slw
+n 9029 3054 m 9211 3009 l 9029 2963 l 9029 3054 l  cp gs 0.00 setgray ef gr  
col0 s
+% Polyline
+7.500 slw
+n 3100 2213 m 3100 1530 l 2418 1530 l 2418 2213 l
+ cp gs col0 s gr 
+% Polyline
+n 3100 4488 m 3100 3805 l 2418 3805 l 2418 4488 l
+ cp gs col0 s gr 
+% Polyline
+n 3100 3407 m 3100 2724 l 2418 2724 l 2418 3407 l
+ cp gs col0 s gr 
+% Polyline
+ [60 27 15 20 15 27] 0 sd
+n 2247 848 m 3271 848 l 3271 4942 l 2247 4942 l
+ cp gs col0 s gr  [] 0 sd
+% Polyline
+gs  clippath
+2433 1917 m 2433 1826 l 2204 1826 l 2386 1872 l 2204 1917 l cp
+eoclip
+n 882 1872 m
+ 2418 1872 l gs col0 s gr gr
+
+% arrowhead
+15.000 slw
+n 2204 1917 m 2386 1872 l 2204 1826 l 2204 1917 l  cp gs 0.00 setgray ef gr  
col0 s
+% Polyline
+7.500 slw
+gs  clippath
+867 4100 m 867 4191 l 1095 4191 l 914 4146 l 1095 4100 l cp
+eoclip
+n 2418 4146 m
+ 882 4146 l gs col0 s gr gr
+
+% arrowhead
+15.000 slw
+n 1095 4100 m 914 4146 l 1095 4191 l 1095 4100 l  cp gs 0.00 setgray ef gr  
col0 s
+% Polyline
+7.500 slw
+gs  clippath
+2433 3339 m 2433 3248 l 2204 3248 l 2386 3294 l 2204 3339 l cp
+eoclip
+n 882 3294 m
+ 2418 3294 l gs col0 s gr gr
+
+% arrowhead
+15.000 slw
+n 2204 3339 m 2386 3294 l 2204 3248 l 2204 3339 l  cp gs 0.00 setgray ef gr  
col0 s
+% Polyline
+7.500 slw
+gs  clippath
+867 2792 m 867 2883 l 1095 2883 l 914 2838 l 1095 2792 l cp
+eoclip
+n 2418 2838 m
+ 882 2838 l gs col0 s gr gr
+
+% arrowhead
+15.000 slw
+n 1095 2792 m 914 2838 l 1095 2883 l 1095 2792 l  cp gs 0.00 setgray ef gr  
col0 s
+% Polyline
+7.500 slw
+gs  clippath
+3600 2976 m 3639 2953 l 3575 2848 l 3603 2938 l 3536 2871 l cp
+eoclip
+n 3100 2099 m
+ 3612 2952 l gs col0 s gr gr
+
+% arrowhead
+n 3536 2871 m 3603 2938 l 3575 2848 l  col0 s
+% Polyline
+gs  clippath
+3919 2084 m 3874 2084 l 3874 2206 l 3897 2116 l 3919 2206 l cp
+eoclip
+n 3897 2838 m
+ 3897 2099 l gs col0 s gr gr
+
+% arrowhead
+n 3919 2206 m 3897 2116 l 3874 2206 l  col0 s
+% Polyline
+gs  clippath
+4158 2853 m 4203 2853 l 4203 2730 l 4181 2821 l 4158 2730 l cp
+eoclip
+n 4181 2099 m
+ 4181 2838 l gs col0 s gr gr
+
+% arrowhead
+n 4158 2730 m 4181 2821 l 4203 2730 l  col0 s
+% Polyline
+gs  clippath
+3627 1894 m 3627 1849 l 3504 1849 l 3595 1872 l 3504 1894 l cp
+eoclip
+n 3100 1872 m
+ 3612 1872 l gs col0 s gr gr
+
+% arrowhead
+n 3504 1894 m 3595 1872 l 3504 1849 l  col0 s
+% Polyline
+n 3612 1644 m 4465 1644 l 4465 2099 l 3612 2099 l
+ cp gs col0 s gr 
+% Polyline
+n 5376 1644 m 6228 1644 l 6228 2099 l 5376 2099 l
+ cp gs col0 s gr 
+% Polyline
+n 6228 2383 m 6456 2383 l 6456 3066 l 6228 3066 l
+ cp gs col0 s gr 
+% Polyline
+n 5887 2383 m 6115 2383 l 6115 3066 l 5887 3066 l
+ cp gs col0 s gr 
+% Polyline
+n 5148 2383 m 5376 2383 l 5376 3066 l 5148 3066 l
+ cp gs col0 s gr 
+% Polyline
+n 5489 2383 m 5717 2383 l 5717 3066 l 5489 3066 l
+ cp gs col0 s gr 
+% Polyline
+gs  clippath
+5235 2377 m 5267 2409 l 5354 2322 l 5274 2371 l 5322 2290 l cp
+eoclip
+n 5546 2099 m
+ 5262 2383 l gs col0 s gr gr
+
+% arrowhead
+n 5322 2290 m 5274 2371 l 5354 2322 l  col0 s
+% Polyline
+gs  clippath
+5577 2393 m 5622 2402 l 5646 2282 l 5606 2367 l 5601 2273 l cp
+eoclip
+n 5660 2099 m
+ 5603 2383 l gs col0 s gr gr
+
+% arrowhead
+n 5601 2273 m 5606 2367 l 5646 2282 l  col0 s
+% Polyline
+gs  clippath
+5981 2402 m 6026 2393 l 6002 2273 l 5998 2367 l 5957 2282 l cp
+eoclip
+n 5944 2099 m
+ 6001 2383 l gs col0 s gr gr
+
+% arrowhead
+n 5957 2282 m 5998 2367 l 6002 2273 l  col0 s
+% Polyline
+gs  clippath
+6333 2408 m 6369 2380 l 6292 2284 l 6332 2370 l 6257 2313 l cp
+eoclip
+n 6115 2099 m
+ 6342 2383 l gs col0 s gr gr
+
+% arrowhead
+n 6257 2313 m 6332 2370 l 6292 2284 l  col0 s
+% Polyline
+gs  clippath
+5391 1951 m 5391 1906 l 5268 1906 l 5359 1929 l 5268 1951 l cp
+4450 1906 m 4450 1951 l 4572 1951 l 4482 1929 l 4572 1906 l cp
+eoclip
+n 4465 1929 m
+ 5376 1929 l gs col0 s gr gr
+
+% arrowhead
+n 4572 1906 m 4482 1929 l 4572 1951 l  col0 s
+% arrowhead
+n 5268 1951 m 5359 1929 l 5268 1906 l  col0 s
+% Polyline
+n 3612 2838 m 4465 2838 l 4465 3294 l 3612 3294 l
+ cp gs col0 s gr 
+% Polyline
+gs  clippath
+3085 3043 m 3085 3088 l 3207 3088 l 3117 3066 l 3207 3043 l cp
+eoclip
+n 3612 3066 m
+ 3100 3066 l gs col0 s gr gr
+
+% arrowhead
+n 3207 3043 m 3117 3066 l 3207 3088 l  col0 s
+% Polyline
+ [60 27 15 20 15 27] 0 sd
+n 3441 848 m 6627 848 l 6627 3407 l 3441 3407 l
+ cp gs col0 s gr  [] 0 sd
+% Polyline
+gs  clippath
+4008 4003 m 4035 3966 l 3937 3893 l 3997 3966 l 3910 3929 l cp
+eoclip
+n 3100 3294 m
+ 4010 3976 l gs col0 s gr gr
+
+% arrowhead
+n 3910 3929 m 3997 3966 l 3937 3893 l  col0 s
+% Polyline
+ [60] 0 sd
+gs  clippath
+7615 3279 m 7570 3279 l 7570 3401 l 7593 3311 l 7615 3401 l cp
+eoclip
+n 7593 3976 m
+ 7593 3294 l gs col0 s gr gr
+ [] 0 sd
+% arrowhead
+n 7615 3401 m 7593 3311 l 7570 3401 l  col0 s
+% Polyline
+ [60] 0 sd
+gs  clippath
+7210 4225 m 7210 4180 l 7087 4180 l 7178 4203 l 7087 4225 l cp
+eoclip
+n 6456 4203 m
+ 7195 4203 l gs col0 s gr gr
+ [] 0 sd
+% arrowhead
+n 7087 4225 m 7178 4203 l 7087 4180 l  col0 s
+% Polyline
+gs  clippath
+5163 4225 m 5163 4180 l 5040 4180 l 5131 4203 l 5040 4225 l cp
+4450 4180 m 4450 4225 l 4572 4225 l 4482 4203 l 4572 4180 l cp
+eoclip
+n 4465 4203 m
+ 5148 4203 l gs col0 s gr gr
+
+% arrowhead
+n 4572 4180 m 4482 4203 l 4572 4225 l  col0 s
+% arrowhead
+n 5040 4225 m 5131 4203 l 5040 4180 l  col0 s
+% Polyline
+n 5148 3748 m 6456 3748 l 6456 4488 l 5148 4488 l
+ cp gs col0 s gr 
+% Polyline
+n 3612 3976 m 4465 3976 l 4465 4431 l 3612 4431 l
+ cp gs col0 s gr 
+% Polyline
+gs  clippath
+3085 4180 m 3085 4225 l 3207 4225 l 3117 4203 l 3207 4180 l cp
+eoclip
+n 3612 4203 m
+ 3100 4203 l gs col0 s gr gr
+
+% arrowhead
+n 3207 4180 m 3117 4203 l 3207 4225 l  col0 s
+% Polyline
+n 7195 3976 m 8049 3976 l 8049 4431 l 7195 4431 l
+ cp gs col0 s gr 
+% Polyline
+gs  clippath
+8034 3134 m 8034 3225 l 8262 3225 l 8081 3180 l 8262 3134 l cp
+eoclip
+n 9243 3180 m
+ 8049 3180 l gs col0 s gr gr
+
+% arrowhead
+15.000 slw
+n 8262 3134 m 8081 3180 l 8262 3225 l 8262 3134 l  cp gs 0.00 setgray ef gr  
col0 s
+% Polyline
+7.500 slw
+n 7195 2838 m 8049 2838 l 8049 3294 l 7195 3294 l
+ cp gs col0 s gr 
+% Polyline
+n 5262 4260 m 6342 4260 l 6342 4771 l 5262 4771 l
+ cp gs col0 s gr 
+% Polyline
+ [60 27 15 20 15 27] 0 sd
+n 6798 1644 m 8447 1644 l 8447 4942 l 3441 4942 l 3441 3577 l 6798 3577 l
+
+ cp gs col0 s gr  [] 0 sd
+% Polyline
+ [60] 0 sd
+gs  clippath
+7534 2865 m 7561 2828 l 7461 2755 l 7522 2828 l 7435 2791 l cp
+eoclip
+n 6228 1872 m
+ 7536 2838 l gs col0 s gr gr
+ [] 0 sd
+% arrowhead
+n 7435 2791 m 7522 2828 l 7461 2755 l  col0 s
+/Times-Roman ff 105.00 scf sf
+5034 1872 m
+gs 1 -1 sc ("A") dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman ff 105.00 scf sf
+4806 1872 m
+gs 1 -1 sc ("B") dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman ff 105.00 scf sf
+5489 4658 m
+gs 1 -1 sc (Node/INode) col0 sh gr
+/Times-Roman ff 135.00 scf sf
+2759 1360 m
+gs 1 -1 sc (INTERFACE) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman ff 135.00 scf sf
+2759 1189 m
+gs 1 -1 sc (USER) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Italic ff 135.00 scf sf
+2759 1815 m
+gs 1 -1 sc (Main) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Italic ff 135.00 scf sf
+2759 1986 m
+gs 1 -1 sc (Window) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Italic ff 135.00 scf sf
+2759 4089 m
+gs 1 -1 sc (Download) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Italic ff 135.00 scf sf
+2759 4260 m
+gs 1 -1 sc (Window) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Italic ff 135.00 scf sf
+2759 3180 m
+gs 1 -1 sc (Window) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Italic ff 135.00 scf sf
+2759 3009 m
+gs 1 -1 sc (Query) dup sw pop 2 div neg 0 rm  col0 sh gr
+/AvantGarde-BookOblique ff 135.00 scf sf
+2019 564 m
+gs 1 -1 sc (\(Swing\)) col0 sh gr
+/AvantGarde-BookOblique ff 135.00 scf sf
+2019 791 m
+gs 1 -1 sc (Thread) col0 sh gr
+/Times-Roman ff 105.00 scf sf
+3840 2724 m
+gs 1 -1 sc  90.0 rot ("A AND B") col0 sh gr
+/Times-Roman ff 105.00 scf sf
+4238 2440 m
+gs 1 -1 sc  270.0 rot ("AND") dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman ff 105.00 scf sf
+6058 2781 m
+gs 1 -1 sc  90.0 rot (RootNode) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman ff 105.00 scf sf
+6399 2781 m
+gs 1 -1 sc  90.0 rot (RootNode) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman ff 105.00 scf sf
+5319 2724 m
+gs 1 -1 sc  90.0 rot (RootNode "A") dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman ff 105.00 scf sf
+5660 2724 m
+gs 1 -1 sc  90.0 rot (RootNode "B") dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman ff 105.00 scf sf
+5205 2270 m
+gs 1 -1 sc ("A") dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman ff 105.00 scf sf
+5773 2270 m
+gs 1 -1 sc ("B") dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman ff 135.00 scf sf
+5830 1986 m
+gs 1 -1 sc (Coordinator) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman ff 135.00 scf sf
+5773 1815 m
+gs 1 -1 sc (Query) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman ff 135.00 scf sf
+4010 3180 m
+gs 1 -1 sc (Model) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman ff 135.00 scf sf
+4010 3009 m
+gs 1 -1 sc (Query) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman ff 150.00 scf sf
+893 2687 m
+gs 1 -1 sc ("<File Description>") col0 sh gr
+/Times-Roman ff 150.00 scf sf
+893 3975 m
+gs 1 -1 sc ("62% Downloaded") col0 sh gr
+/Times-Italic ff 150.00 scf sf
+1164 3162 m
+gs 1 -1 sc (Select Files) col0 sh gr
+/Times-Roman ff 150.00 scf sf
+1096 1738 m
+gs 1 -1 sc ("A AND B") col0 sh gr
+/Times-Roman ff 135.00 scf sf
+5773 4089 m
+gs 1 -1 sc (RNode) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman ff 135.00 scf sf
+4010 4317 m
+gs 1 -1 sc (Model) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman ff 135.00 scf sf
+7593 4146 m
+gs 1 -1 sc (Request) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman ff 135.00 scf sf
+7593 4317 m
+gs 1 -1 sc (Manager) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Italic ff 165.00 scf sf
+8731 2895 m
+gs 1 -1 sc (TCP) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman ff 135.00 scf sf
+7650 3123 m
+gs 1 -1 sc (BuildThread) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman ff 105.00 scf sf
+5376 4431 m
+gs 1 -1 sc (FileOutputStream) col0 sh gr
+/AvantGarde-BookOblique ff 135.00 scf sf
+6570 4146 m
+gs 1 -1 sc (Listener) col0 sh gr
+/AvantGarde-BookOblique ff 135.00 scf sf
+7536 3919 m
+gs 1 -1 sc  90.0 rot (Listener) col0 sh gr
+/AvantGarde-BookOblique ff 135.00 scf sf
+6911 2270 m
+gs 1 -1 sc  323.0 rot (Listener) col0 sh gr
+/AvantGarde-BookOblique ff 135.00 scf sf
+6001 1587 m
+gs 1 -1 sc (Thread) col0 sh gr
+/Times-Roman ff 135.00 scf sf
+5034 1132 m
+gs 1 -1 sc (QUERY) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman ff 135.00 scf sf
+5034 1314 m
+gs 1 -1 sc (HANDLER) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman ff 135.00 scf sf
+4010 1986 m
+gs 1 -1 sc (Parser) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman ff 135.00 scf sf
+4010 1815 m
+gs 1 -1 sc (Query) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman ff 135.00 scf sf
+4010 4146 m
+gs 1 -1 sc (Download) dup sw pop 2 div neg 0 rm  col0 sh gr
+/AvantGarde-BookOblique ff 135.00 scf sf
+7821 2781 m
+gs 1 -1 sc (Thread) col0 sh gr
+/AvantGarde-BookOblique ff 135.00 scf sf
+7821 3919 m
+gs 1 -1 sc (Thread) col0 sh gr
+/Times-Roman ff 135.00 scf sf
+7650 1986 m
+gs 1 -1 sc (DOWNLOAD) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman ff 135.00 scf sf
+7650 2156 m
+gs 1 -1 sc (HANDLER) dup sw pop 2 div neg 0 rm  col0 sh gr
+$F2psEnd
+rs

Added: GNUnet-docs/papers/ecrs/gproxy_scheme.fig
===================================================================
--- GNUnet-docs/papers/ecrs/gproxy_scheme.fig   2005-05-31 19:10:35 UTC (rev 
832)
+++ GNUnet-docs/papers/ecrs/gproxy_scheme.fig   2005-05-31 19:27:19 UTC (rev 
833)
@@ -0,0 +1,170 @@
+#FIG 3.2
+Portrait
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+1 1 0 1 0 7 50 0 -1 0.000 1 0.0000 2247 791 398 171 2247 791 2645 962
+1 1 0 1 0 7 50 0 -1 0.000 1 0.0000 6228 1587 398 171 6228 1587 6627 1758
+1 1 0 1 0 7 50 0 -1 0.000 1 0.0000 8049 2781 398 171 8049 2781 8447 2952
+1 1 0 1 0 7 50 0 -1 0.000 1 0.0000 8049 3919 398 171 8049 3919 8447 4089
+2 1 0 1 0 7 50 0 -1 6.000 0 0 -1 1 0 2
+       1 1 2.00 90.99 181.99
+        8049 3009 9243 3009
+2 1 0 1 0 7 50 0 -1 6.000 0 0 -1 1 0 2
+       1 1 2.00 90.99 181.99
+        8049 3009 9243 3009
+2 3 0 1 0 7 50 0 -1 0.000 0 0 0 0 0 5
+        3100 2213 3100 1530 2418 1530 2418 2213 3100 2213
+2 3 0 1 0 7 50 0 -1 0.000 0 0 0 0 0 5
+        3100 4488 3100 3805 2418 3805 2418 4488 3100 4488
+2 3 0 1 0 7 50 0 -1 0.000 0 0 0 0 0 5
+        3100 3407 3100 2724 2418 2724 2418 3407 3100 3407
+2 2 4 1 0 7 50 0 -1 4.000 0 0 -1 0 0 5
+        2247 848 3271 848 3271 4942 2247 4942 2247 848
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       1 1 2.00 90.99 181.99
+        882 1872 2418 1872
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       1 1 2.00 90.99 181.99
+        2418 4146 882 4146
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       1 1 2.00 90.99 181.99
+        882 3294 2418 3294
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       1 1 2.00 90.99 181.99
+        2418 2838 882 2838
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       0 0 1.00 45.50 90.99
+        3100 2099 3612 2952
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       0 0 1.00 45.50 90.99
+        3897 2838 3897 2099
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       0 0 1.00 45.50 90.99
+        4181 2099 4181 2838
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       0 0 1.00 45.50 90.99
+        3100 1872 3612 1872
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        3612 1644 4465 1644 4465 2099 3612 2099 3612 1644
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        5376 1644 6228 1644 6228 2099 5376 2099 5376 1644
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        6228 2383 6456 2383 6456 3066 6228 3066 6228 2383
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        5887 2383 6115 2383 6115 3066 5887 3066 5887 2383
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        5148 2383 5376 2383 5376 3066 5148 3066 5148 2383
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        5489 2383 5717 2383 5717 3066 5489 3066 5489 2383
+2 1 0 1 0 7 50 0 -1 4.000 0 0 -1 1 0 2
+       0 0 1.00 45.50 90.99
+        5546 2099 5262 2383
+2 1 0 1 0 7 50 0 -1 4.000 0 0 -1 1 0 2
+       0 0 1.00 45.50 90.99
+        5660 2099 5603 2383
+2 1 0 1 0 7 50 0 -1 4.000 0 0 -1 1 0 2
+       0 0 1.00 45.50 90.99
+        5944 2099 6001 2383
+2 1 0 1 0 7 50 0 -1 4.000 0 0 -1 1 0 2
+       0 0 1.00 45.50 90.99
+        6115 2099 6342 2383
+2 1 0 1 0 7 50 0 -1 4.000 0 0 -1 1 1 2
+       0 0 1.00 45.50 90.99
+       0 0 1.00 45.50 90.99
+        4465 1929 5376 1929
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        3612 2838 4465 2838 4465 3294 3612 3294 3612 2838
+2 1 0 1 0 7 50 0 -1 4.000 0 0 -1 1 0 2
+       0 0 1.00 45.50 90.99
+        3612 3066 3100 3066
+2 2 4 1 0 7 50 0 -1 4.000 0 0 -1 0 0 5
+        3441 848 6627 848 6627 3407 3441 3407 3441 848
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       0 0 1.00 45.50 90.99
+        3100 3294 4010 3976
+2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 1 0 2
+       0 0 1.00 45.50 90.99
+        7593 3976 7593 3294
+2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 1 0 2
+       0 0 1.00 45.50 90.99
+        6456 4203 7195 4203
+2 1 0 1 0 7 50 0 -1 4.000 0 0 -1 1 1 2
+       0 0 1.00 45.50 90.99
+       0 0 1.00 45.50 90.99
+        4465 4203 5148 4203
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        5148 3748 6456 3748 6456 4488 5148 4488 5148 3748
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        3612 3976 4465 3976 4465 4431 3612 4431 3612 3976
+2 1 0 1 0 7 50 0 -1 4.000 0 0 -1 1 0 2
+       0 0 1.00 45.50 90.99
+        3612 4203 3100 4203
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        7195 3976 8049 3976 8049 4431 7195 4431 7195 3976
+2 1 0 1 0 7 50 0 -1 6.000 0 0 -1 1 0 2
+       1 1 2.00 90.99 181.99
+        9243 3180 8049 3180
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        7195 2838 8049 2838 8049 3294 7195 3294 7195 2838
+2 2 0 1 0 7 50 0 -1 4.000 0 0 -1 0 0 5
+        5262 4260 6342 4260 6342 4771 5262 4771 5262 4260
+2 3 4 1 0 7 50 0 -1 4.000 0 0 -1 0 0 7
+        6798 1644 8447 1644 8447 4942 3441 4942 3441 3577 6798 3577
+        6798 1644
+2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 1 0 2
+       0 0 1.00 45.00 91.50
+        6228 1872 7536 2838
+4 1 0 50 0 0 7 0.0000 4 60 120 5034 1872 "A"\001
+4 1 0 50 0 0 7 0.0000 4 60 120 4806 1872 "B"\001
+4 0 0 50 0 0 7 0.0000 4 75 450 5489 4658 Node/INode\001
+4 1 0 50 0 0 9 0.0000 4 105 825 2759 1360 INTERFACE\001
+4 1 0 50 0 0 9 0.0000 4 105 390 2759 1189 USER\001
+4 1 0 50 0 1 9 0.0000 4 105 315 2759 1815 Main\001
+4 1 0 50 0 1 9 0.0000 4 105 495 2759 1986 Window\001
+4 1 0 50 0 1 9 0.0000 4 105 630 2759 4089 Download\001
+4 1 0 50 0 1 9 0.0000 4 105 495 2759 4260 Window\001
+4 1 0 50 0 1 9 0.0000 4 105 495 2759 3180 Window\001
+4 1 0 50 0 1 9 0.0000 4 135 360 2759 3009 Query\001
+4 0 0 50 0 5 9 0.0000 4 150 540 2019 564 (Swing)\001
+4 0 0 50 0 5 9 0.0000 4 120 495 2019 791 Thread\001
+4 0 0 50 0 0 7 1.5708 4 60 420 3840 2724 "A AND B"\001
+4 1 0 50 0 0 7 4.7124 4 60 240 4238 2440 "AND"\001
+4 1 0 50 0 0 7 1.5708 4 60 375 6058 2781 RootNode\001
+4 1 0 50 0 0 7 1.5708 4 60 375 6399 2781 RootNode\001
+4 1 0 50 0 0 7 1.5708 4 60 525 5319 2724 RootNode "A"\001
+4 1 0 50 0 0 7 1.5708 4 60 525 5660 2724 RootNode "B"\001
+4 1 0 50 0 0 7 0.0000 4 60 120 5205 2270 "A"\001
+4 1 0 50 0 0 7 0.0000 4 60 120 5773 2270 "B"\001
+4 1 0 50 0 0 9 0.0000 4 105 720 5830 1986 Coordinator\001
+4 1 0 50 0 0 9 0.0000 4 135 360 5773 1815 Query\001
+4 1 0 50 0 0 9 0.0000 4 105 390 4010 3180 Model\001
+4 1 0 50 0 0 9 0.0000 4 135 360 4010 3009 Query\001
+4 0 0 50 0 0 10 0.0000 4 135 1275 893 2687 "<File Description>"\001
+4 0 0 50 0 0 10 0.0000 4 105 1185 893 3975 "62% Downloaded"\001
+4 0 0 50 0 1 10 0.0000 4 105 690 1164 3162 Select Files\001
+4 0 0 50 0 0 10 0.0000 4 105 735 1096 1738 "A AND B"\001
+4 1 0 50 0 0 9 0.0000 4 105 420 5773 4089 RNode\001
+4 1 0 50 0 0 9 0.0000 4 105 390 4010 4317 Model\001
+4 1 0 50 0 0 9 0.0000 4 135 480 7593 4146 Request\001
+4 1 0 50 0 0 9 0.0000 4 135 510 7593 4317 Manager\001
+4 1 0 50 0 1 11 0.0000 4 135 330 8731 2895 TCP\001
+4 1 0 50 0 0 9 0.0000 4 105 750 7650 3123 BuildThread\001
+4 0 0 50 0 0 7 0.0000 4 75 675 5376 4431 FileOutputStream\001
+4 0 0 50 0 5 9 0.0000 4 120 525 6570 4146 Listener\001
+4 0 0 50 0 5 9 1.5708 4 120 525 7536 3919 Listener\001
+4 0 0 50 0 5 9 5.6374 4 120 525 6911 2270 Listener\001
+4 0 0 50 0 5 9 0.0000 4 120 495 6001 1587 Thread\001
+4 1 0 50 0 0 9 0.0000 4 135 510 5034 1132 QUERY\001
+4 1 0 50 0 0 9 0.0000 4 105 705 5034 1314 HANDLER\001
+4 1 0 50 0 0 9 0.0000 4 105 360 4010 1986 Parser\001
+4 1 0 50 0 0 9 0.0000 4 135 360 4010 1815 Query\001
+4 1 0 50 0 0 9 0.0000 4 105 615 4010 4146 Download\001
+4 0 0 50 0 5 9 0.0000 4 120 495 7821 2781 Thread\001
+4 0 0 50 0 5 9 0.0000 4 120 495 7821 3919 Thread\001
+4 1 0 50 0 0 9 0.0000 4 105 855 7650 1986 DOWNLOAD\001
+4 1 0 50 0 0 9 0.0000 4 105 705 7650 2156 HANDLER\001

Added: GNUnet-docs/papers/ecrs/iblock.eps
===================================================================
--- GNUnet-docs/papers/ecrs/iblock.eps  2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet-docs/papers/ecrs/iblock.eps  2005-05-31 19:27:19 UTC (rev 833)
@@ -0,0 +1,268 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: iblock.fig
+%%Creator: fig2dev Version 3.2 Patchlevel 4
+%%CreationDate: Sun Nov 30 22:27:36 2003
+%%For: address@hidden (naggy,,,)
+%%BoundingBox: 0 0 360 201
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 201 moveto 0 0 lineto 360 0 lineto 360 201 lineto closepath clip 
newpath
+-172.4 320.2 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/reencdict 12 dict def /ReEncode { reencdict begin
+/newcodesandnames exch def /newfontname exch def /basefontname exch def
+/basefontdict basefontname findfont def /newfont basefontdict maxlength dict 
def
+basefontdict { exch dup /FID ne { dup /Encoding eq
+{ exch dup length array copy newfont 3 1 roll put }
+{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall
+newfont /FontName newfontname put newcodesandnames aload pop
+128 1 255 { newfont /Encoding get exch /.notdef put } for
+newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat
+newfontname newfont definefont pop end } def
+/isovec [
+8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde
+8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis
+8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron
+8#220 /dotlessi 8#230 /oe 8#231 /OE
+8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling
+8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis
+8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot
+8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus
+8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph
+8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine
+8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf
+8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute
+8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring
+8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute
+8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute
+8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve
+8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply
+8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex
+8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave
+8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring
+8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute
+8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute
+8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve
+8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide
+8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex
+8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def
+/Times-Italic /Times-Italic-iso isovec ReEncode
+/Times-Roman /Times-Roman-iso isovec ReEncode
+/NewCenturySchlbk-Italic /NewCenturySchlbk-Italic-iso isovec ReEncode
+/Times-Italic /Times-Italic-iso isovec ReEncode
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+0 slj 0 slc
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% 
+% here starts figure with depth 50
+% Polyline
+7.500 slw
+n 3300 5175 m
+ 3300 5325 l gs col0 s gr 
+% Polyline
+n 4200 5175 m
+ 4200 5325 l gs col0 s gr 
+% Polyline
+n 3300 5250 m 4200 5250 l
+ 4200 5325 l gs col0 s gr 
+/Times-Roman-iso ff 150.00 scf sf
+3450 5175 m
+gs 1 -1 sc (1024 bytes) col0 sh gr
+% Polyline
+n 3300 4425 m 8175 4425 l 8175 4950 l 3300 4950 l
+ cp gs col0 s gr 
+% Polyline
+n 4200 4425 m
+ 4200 4950 l gs col0 s gr 
+% Polyline
+n 5100 4425 m
+ 5100 4950 l gs col0 s gr 
+% Polyline
+n 7200 4425 m
+ 7200 4950 l gs col0 s gr 
+/NewCenturySchlbk-Italic-iso ff 150.00 scf sf
+3743 4812 m
+gs 1 -1 sc (1) col0 sh gr
+/NewCenturySchlbk-Italic-iso ff 180.00 scf sf
+3609 4737 m
+gs 1 -1 sc (B) col0 sh gr
+/NewCenturySchlbk-Italic-iso ff 150.00 scf sf
+4634 4812 m
+gs 1 -1 sc (2) col0 sh gr
+/NewCenturySchlbk-Italic-iso ff 180.00 scf sf
+4515 4722 m
+gs 1 -1 sc (B) col0 sh gr
+/NewCenturySchlbk-Italic-iso ff 180.00 scf sf
+7530 4738 m
+gs 1 -1 sc (B) col0 sh gr
+/NewCenturySchlbk-Italic-iso ff 150.00 scf sf
+7648 4812 m
+gs 1 -1 sc (25) col0 sh gr
+% Polyline
+n 5552 2785 m
+ 5552 3310 l gs col0 s gr 
+% Polyline
+n 5403 2785 m
+ 5403 3310 l gs col0 s gr 
+% Polyline
+n 5252 2787 m
+ 5252 3312 l gs col0 s gr 
+% Polyline
+n 5010 2790 m
+ 5010 3315 l gs col0 s gr 
+% Polyline
+n 4787 2791 m 6032 2791 l 6032 3312 l 4787 3312 l
+ cp gs col0 s gr 
+% Polyline
+n 5915 2785 m
+ 5915 3310 l gs col0 s gr 
+/Times-Roman-iso ff 255.00 scf sf
+5732 3160 m
+gs 1 -1 sc (...) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman-iso ff 195.00 scf sf
+4976 3246 m
+gs 1 -1 sc  90.0 rot (CRC) col0 sh gr
+/Times-Roman-iso ff 195.00 scf sf
+5213 3246 m
+gs 1 -1 sc  90.0 rot (SH) col0 sh gr
+% Arc
+gs  clippath
+5678 2777 m 5733 2752 l 5670 2614 l 5693 2736 l 5615 2639 l cp
+eoclip
+ [15 45] 45 sd
+n 4602.0 3178.2 1178.2 -21.3 -141.9 arcn
+gs col0 s gr
+ gr
+ [] 0 sd
+% arrowhead
+n 5615 2639 m 5693 2736 l 5670 2614 l 5615 2639 l  cp gs 0.00 setgray ef gr  
col0 s
+% Polyline
+gs  clippath
+6135 2946 m 6135 3006 l 6287 3006 l 6167 2976 l 6287 2946 l cp
+eoclip
+n 6150 2976 m
+ 6525 2976 l gs col0 s gr gr
+
+% arrowhead
+n 6287 2946 m 6167 2976 l 6287 3006 l  col0 s
+/Times-Roman-iso ff 180.00 scf sf
+2873 2895 m
+gs 1 -1 sc (Space for 25 CHKs,) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+2873 3135 m
+gs 1 -1 sc (a super-hash,) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+2873 3375 m
+gs 1 -1 sc (and a CRC checksum.) col0 sh gr
+/Times-Italic-iso ff 150.00 scf sf
+7177 3097 m
+gs 1 -1 sc (1) col0 sh gr
+/Times-Italic-iso ff 210.00 scf sf
+6555 3022 m
+gs 1 -1 sc (CHK\(B  \), ... , CHK\(B   \) ) col0 sh gr
+/Times-Italic-iso ff 150.00 scf sf
+8400 3075 m
+gs 1 -1 sc (25) col0 sh gr
+% Polyline
+ [15 45] 45 sd
+n 3743 4441 m
+ 5317 3342 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 4663 4426 m
+ 5465 3342 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 7693 4441 m
+ 6000 3342 l gs col0 s gr  [] 0 sd
+/Times-Italic-iso ff 210.00 scf sf
+5735 3654 m
+gs 1 -1 sc (IBlock) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman-iso ff 450.00 scf sf
+6150 4800 m
+gs 1 -1 sc (...) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Italic-iso ff 210.00 scf sf
+5794 5311 m
+gs 1 -1 sc (Blocks) dup sw pop 2 div neg 0 rm  col0 sh gr
+% here ends figure;
+$F2psEnd
+rs
+showpage

Added: GNUnet-docs/papers/ecrs/iblock.fig
===================================================================
--- GNUnet-docs/papers/ecrs/iblock.fig  2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet-docs/papers/ecrs/iblock.fig  2005-05-31 19:27:19 UTC (rev 833)
@@ -0,0 +1,93 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 3285 5040 4230 5355
+6 3285 5175 4230 5355
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        3300 5175 3300 5325
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        4200 5175 4200 5325
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 3
+        3300 5250 4200 5250 4200 5325
+-6
+4 0 0 50 0 0 10 0.0000 4 135 645 3450 5175 1024 bytes\001
+-6
+6 3285 4410 8190 4950
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        3300 4425 8175 4425 8175 4950 3300 4950 3300 4425
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        4200 4425 4200 4950
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        5100 4425 5100 4950
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        7200 4425 7200 4950
+-6
+6 3600 4590 3870 4815
+4 0 0 50 0 25 10 0.0000 4 105 90 3743 4812 1\001
+4 0 0 50 0 25 12 0.0000 4 135 135 3609 4737 B\001
+-6
+6 4500 4545 4725 4815
+6 4590 4680 4725 4815
+4 0 0 50 0 25 10 0.0000 4 105 90 4634 4812 2\001
+-6
+4 0 0 50 0 25 12 0.0000 4 135 135 4515 4722 B\001
+-6
+6 7515 4590 7830 4815
+4 0 0 50 0 25 12 0.0000 4 135 135 7530 4738 B\001
+4 0 0 50 0 25 10 0.0000 4 105 180 7648 4812 25\001
+-6
+6 2850 1950 6525 3375
+6 4787 2785 6032 3315
+6 4787 2785 6032 3315
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        5552 2785 5552 3310
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        5403 2785 5403 3310
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        5252 2787 5252 3312
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        5010 2790 5010 3315
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        4787 2791 6032 2791 6032 3312 4787 3312 4787 2791
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        5915 2785 5915 3310
+-6
+4 1 0 50 0 0 17 0.0000 4 30 180 5732 3160 ...\001
+4 0 0 50 0 0 13 1.5708 4 135 405 4976 3246 CRC\001
+4 0 0 50 0 0 13 1.5708 4 135 240 5213 3246 SH\001
+-6
+6 2850 1950 6525 3375
+6 3600 1950 6525 3075
+5 1 2 1 0 7 50 0 -1 3.000 0 1 0 1 4601.986 3178.220 5700 2751 4650 2001 3675 
2451
+       1 1 1.00 60.00 120.00
+2 1 0 1 0 7 50 0 -1 3.000 0 0 -1 0 1 2
+       0 0 1.00 60.00 120.00
+        6150 2976 6525 2976
+-6
+6 2850 2775 4500 3375
+4 0 0 50 0 0 12 0.0000 4 165 1455 2873 2895 Space for 25 CHKs,\001
+4 0 0 50 0 0 12 0.0000 4 165 945 2873 3135 a super-hash,\001
+4 0 0 50 0 0 12 0.0000 4 120 1575 2873 3375 and a CRC checksum.\001
+-6
+-6
+-6
+6 6525 2850 8850 3150
+4 0 0 50 0 3 10 0.0000 0 105 75 7177 3097 1\001
+4 0 0 50 0 3 14 0.0000 0 180 2250 6555 3022 CHK(B  ), ... , CHK(B   ) \001
+4 0 0 50 0 3 10 0.0000 0 105 150 8400 3075 25\001
+-6
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
+        3743 4441 5317 3342
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
+        4663 4426 5465 3342
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
+        7693 4441 6000 3342
+4 1 0 50 0 1 14 0.0000 4 150 555 5735 3654 IBlock\001
+4 1 0 50 0 0 30 0.0000 4 45 360 6150 4800 ...\001
+4 1 0 50 0 1 14 0.0000 4 150 555 5794 5311 Blocks\001

Added: GNUnet-docs/papers/ecrs/iblock.pdf
===================================================================
(Binary files differ)


Property changes on: GNUnet-docs/papers/ecrs/iblock.pdf
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: GNUnet-docs/papers/ecrs/indirect.eps
===================================================================
--- GNUnet-docs/papers/ecrs/indirect.eps        2005-05-31 19:10:35 UTC (rev 
832)
+++ GNUnet-docs/papers/ecrs/indirect.eps        2005-05-31 19:27:19 UTC (rev 
833)
@@ -0,0 +1,242 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: indirect.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3c
+%%CreationDate: Sun Nov 25 09:12:10 2001
+%%For: address@hidden (Christian Grothoff)
+%%BoundingBox: 0 0 156 219
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+/col32 {0.255 0.255 0.255 srgb} bind def
+/col33 {0.525 0.510 0.525 srgb} bind def
+/col34 {0.745 0.765 0.745 srgb} bind def
+/col35 {0.875 0.890 0.875 srgb} bind def
+/col36 {0.255 0.255 0.255 srgb} bind def
+/col37 {0.525 0.510 0.525 srgb} bind def
+/col38 {0.745 0.765 0.745 srgb} bind def
+/col39 {0.525 0.510 0.525 srgb} bind def
+/col40 {0.745 0.765 0.745 srgb} bind def
+/col41 {0.875 0.890 0.875 srgb} bind def
+/col42 {0.557 0.557 0.557 srgb} bind def
+/col43 {0.682 0.667 0.682 srgb} bind def
+/col44 {0.349 0.333 0.349 srgb} bind def
+/col45 {0.557 0.557 0.557 srgb} bind def
+/col46 {0.255 0.255 0.255 srgb} bind def
+/col47 {0.525 0.510 0.525 srgb} bind def
+/col48 {0.745 0.765 0.745 srgb} bind def
+/col49 {0.875 0.890 0.875 srgb} bind def
+/col50 {0.255 0.255 0.255 srgb} bind def
+/col51 {0.525 0.510 0.525 srgb} bind def
+/col52 {0.745 0.765 0.745 srgb} bind def
+/col53 {0.255 0.255 0.255 srgb} bind def
+/col54 {0.745 0.765 0.745 srgb} bind def
+/col55 {0.875 0.890 0.875 srgb} bind def
+/col56 {0.255 0.255 0.255 srgb} bind def
+/col57 {0.525 0.510 0.525 srgb} bind def
+/col58 {0.745 0.765 0.745 srgb} bind def
+/col59 {0.525 0.510 0.525 srgb} bind def
+/col60 {0.745 0.765 0.745 srgb} bind def
+/col61 {0.875 0.890 0.875 srgb} bind def
+
+end
+save
+newpath 0 219 moveto 0 0 lineto 156 0 lineto 156 219 lineto closepath clip 
newpath
+-58.0 270.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+ /DrawEllipse {
+       /endangle exch def
+       /startangle exch def
+       /yrad exch def
+       /xrad exch def
+       /y exch def
+       /x exch def
+       /savematrix mtrx currentmatrix def
+       x y tr xrad yrad sc 0 0 1 startangle endangle arc
+       closepath
+       savematrix setmatrix
+       } def
+
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+%%Page: 1 1
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+15.000 slw
+gs  clippath
+1665 3990 m 1935 3990 l 1935 3583 l 1800 3913 l 1665 3583 l cp
+eoclip
+n 1800 3975 m 1800 1200 l
+ 1800 1275 l gs col0 s gr gr
+
+% arrowhead
+45.000 slw
+n 1665 3583 m 1800 3913 l 1935 3583 l 1665 3583 l  cp gs 0.00 setgray ef gr  
col0 s
+% Polyline
+15.000 slw
+gs  clippath
+2911 2653 m 3108 2468 l 2830 2172 l 2958 2505 l 2633 2357 l cp
+eoclip
+n 1800 1275 m
+ 3000 2550 l gs col0 s gr gr
+
+% arrowhead
+45.000 slw
+n 2633 2357 m 2958 2505 l 2830 2172 l 2633 2357 l  cp gs 0.00 setgray ef gr  
col0 s
+% Polyline
+2 slj
+15.000 slw
+gs  clippath
+1849 1403 m 1615 1269 l 1413 1623 l 1694 1404 l 1647 1757 l cp
+eoclip
+n 1800 4125 m 1799 4123 l 1797 4118 l 1793 4110 l 1787 4097 l 1778 4078 l
+ 1767 4054 l 1753 4024 l 1737 3988 l 1718 3947 l 1698 3902 l
+ 1675 3854 l 1652 3802 l 1628 3749 l 1604 3696 l 1580 3642 l
+ 1556 3589 l 1533 3537 l 1510 3487 l 1489 3438 l 1469 3392 l
+ 1450 3348 l 1432 3306 l 1415 3267 l 1400 3229 l 1385 3194 l
+ 1372 3161 l 1359 3129 l 1348 3098 l 1337 3069 l 1327 3041 l
+ 1317 3014 l 1308 2988 l 1300 2963 l 1290 2930 l 1280 2898 l
+ 1272 2866 l 1264 2835 l 1256 2804 l 1250 2773 l 1244 2742 l
+ 1239 2711 l 1235 2680 l 1231 2650 l 1229 2619 l 1227 2589 l
+ 1226 2559 l 1226 2529 l 1227 2499 l 1229 2470 l 1231 2441 l
+ 1235 2413 l 1239 2385 l 1244 2358 l 1249 2331 l 1256 2305 l
+ 1263 2279 l 1270 2252 l 1279 2226 l 1288 2200 l 1296 2177 l
+ 1305 2153 l 1314 2129 l 1325 2104 l 1336 2079 l 1348 2052 l
+ 1361 2023 l 1376 1994 l 1391 1962 l 1408 1929 l 1426 1893 l
+ 1446 1856 l 1466 1817 l 1488 1776 l 1511 1734 l 1535 1690 l
+ 1559 1646 l 1583 1603 l 1607 1560 l 1629 1520 l 1650 1483 l
+ 1669 1449 l 1685 1421 l 1698 1397 l 1709 1378 l
+ 1725 1350 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+45.000 slw
+n 1647 1757 m 1694 1404 l 1413 1623 l 1647 1757 l  cp gs 0.00 setgray ef gr  
col0 s
+% Polyline
+2 slj
+15.000 slw
+gs  clippath
+1864 3869 m 2010 4096 l 2352 3876 l 2002 3941 l 2206 3648 l cp
+eoclip
+n 3075 2700 m 3074 2702 l 3071 2707 l 3067 2717 l 3060 2731 l 3050 2751 l
+ 3038 2777 l 3023 2807 l 3006 2842 l 2986 2881 l 2966 2922 l
+ 2945 2964 l 2923 3007 l 2901 3049 l 2879 3090 l 2858 3129 l
+ 2837 3167 l 2817 3202 l 2798 3235 l 2779 3267 l 2761 3296 l
+ 2743 3323 l 2726 3349 l 2709 3374 l 2691 3397 l 2674 3420 l
+ 2656 3441 l 2638 3463 l 2619 3483 l 2600 3503 l 2580 3524 l
+ 2559 3543 l 2537 3564 l 2514 3584 l 2489 3604 l 2463 3626 l
+ 2435 3647 l 2405 3670 l 2373 3693 l 2339 3718 l 2303 3743 l
+ 2266 3768 l 2228 3794 l 2189 3820 l 2151 3845 l 2114 3870 l
+ 2079 3892 l 2047 3913 l 2020 3931 l 1997 3945 l 1978 3957 l
+
+ 1950 3975 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+45.000 slw
+n 2206 3648 m 2002 3941 l 2352 3876 l 2206 3648 l  cp gs 0.00 setgray ef gr  
col0 s
+/Times-Roman ff 390.00 scf sf
+3300 2625 m
+gs 1 -1 sc (B) col0 sh gr
+/Times-Roman ff 390.00 scf sf
+1650 4500 m
+gs 1 -1 sc (C) col0 sh gr
+/Times-Roman ff 390.00 scf sf
+1650 1125 m
+gs 1 -1 sc (A) col0 sh gr
+/Times-Roman ff 390.00 scf sf
+2325 1800 m
+gs 1 -1 sc (1) col0 sh gr
+/Times-Roman ff 390.00 scf sf
+2850 3450 m
+gs 1 -1 sc (2) col0 sh gr
+/Times-Roman ff 390.00 scf sf
+975 2850 m
+gs 1 -1 sc (3) col0 sh gr
+/Times-Roman ff 390.00 scf sf
+1875 2775 m
+gs 1 -1 sc (4) col0 sh gr
+7.500 slw
+% Ellipse
+n 1800 1275 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 1800 4050 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+% Ellipse
+n 3075 2625 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr
+
+$F2psEnd
+rs

Added: GNUnet-docs/papers/ecrs/indirect.fig
===================================================================
--- GNUnet-docs/papers/ecrs/indirect.fig        2005-05-31 19:10:35 UTC (rev 
832)
+++ GNUnet-docs/papers/ecrs/indirect.fig        2005-05-31 19:27:19 UTC (rev 
833)
@@ -0,0 +1,69 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+0 32 #414141
+0 33 #868286
+0 34 #bec3be
+0 35 #dfe3df
+0 36 #414141
+0 37 #868286
+0 38 #bec3be
+0 39 #868286
+0 40 #bec3be
+0 41 #dfe3df
+0 42 #8e8e8e
+0 43 #aeaaae
+0 44 #595559
+0 45 #8e8e8e
+0 46 #414141
+0 47 #868286
+0 48 #bec3be
+0 49 #dfe3df
+0 50 #414141
+0 51 #868286
+0 52 #bec3be
+0 53 #414141
+0 54 #bec3be
+0 55 #dfe3df
+0 56 #414141
+0 57 #868286
+0 58 #bec3be
+0 59 #868286
+0 60 #bec3be
+0 61 #dfe3df
+6 1725 1200 1875 1350
+1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 1800 1275 75 75 1800 1275 1800 1350
+-6
+6 1725 3975 1875 4125
+1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 1800 4050 75 75 1800 4050 1800 4125
+-6
+6 3000 2550 3150 2700
+1 3 0 1 -1 -1 0 0 20 0.000 1 0.0000 3075 2625 75 75 3075 2625 3075 2700
+-6
+2 1 0 2 0 7 50 0 -1 1.500 0 0 -1 0 1 3
+       1 1 4.00 270.00 330.00
+        1800 3975 1800 1200 1800 1275
+2 1 0 2 0 7 50 0 -1 1.500 0 0 -1 1 0 2
+       1 1 4.00 270.00 330.00
+        1800 1275 3000 2550
+3 0 0 2 0 7 50 0 -1 1.500 0 1 0 4
+       1 1 4.00 270.00 330.00
+        1800 4125 1200 2850 1200 2250 1725 1350
+        0.000 1.000 1.000 0.000
+3 0 0 2 0 7 50 0 -1 1.500 0 1 0 3
+       1 1 4.00 270.00 330.00
+        3075 2700 2700 3525 1950 3975
+        0.000 1.000 0.000
+4 0 0 50 0 0 26 0.0000 4 270 255 3300 2625 B\001
+4 0 0 50 0 0 26 0.0000 4 270 255 1650 4500 C\001
+4 0 0 50 0 0 26 0.0000 4 270 270 1650 1125 A\001
+4 0 0 50 0 0 26 0.0000 4 270 195 2325 1800 1\001
+4 0 0 50 0 0 26 0.0000 4 270 195 2850 3450 2\001
+4 0 0 50 0 0 26 0.0000 4 270 195 975 2850 3\001
+4 0 0 50 0 0 26 0.0000 4 270 195 1875 2775 4\001

Added: GNUnet-docs/papers/ecrs/indirection.eps
===================================================================
--- GNUnet-docs/papers/ecrs/indirection.eps     2005-05-31 19:10:35 UTC (rev 
832)
+++ GNUnet-docs/papers/ecrs/indirection.eps     2005-05-31 19:27:19 UTC (rev 
833)
@@ -0,0 +1,158 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: indirection.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3c
+%%CreationDate: Sat Feb  9 00:02:44 2002
+%%For: address@hidden (Christian Grothoff)
+%%BoundingBox: 0 0 121 249
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 249 moveto 0 0 lineto 121 0 lineto 121 249 lineto closepath clip 
newpath
+-139.0 302.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+%%Page: 1 1
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+7.500 slw
+n 2700 2100 m 3900 2100 l 3900 3300 l 2700 3300 l
+ cp gs col0 s gr 
+% Polyline
+gs  clippath
+3033 2995 m 2976 2976 l 2928 3120 l 2995 3016 l 2985 3139 l cp
+eoclip
+n 2400 4800 m
+ 3000 3000 l gs col0 s gr gr
+
+% arrowhead
+n 2985 3139 m 2995 3016 l 2928 3120 l  col0 s
+% Polyline
+gs  clippath
+3623 2976 m 3566 2995 l 3614 3139 l 3605 3016 l 3671 3120 l cp
+eoclip
+n 4200 4800 m
+ 3600 3000 l gs col0 s gr gr
+
+% arrowhead
+n 3671 3120 m 3605 3016 l 3614 3139 l  col0 s
+% Polyline
+gs  clippath
+2422 874 m 2366 897 l 2422 1037 l 2406 915 l 2478 1015 l cp
+eoclip
+n 3000 2400 m
+ 2400 900 l gs col0 s gr gr
+
+% arrowhead
+n 2478 1015 m 2406 915 l 2422 1037 l  col0 s
+% Polyline
+gs  clippath
+3330 885 m 3270 885 l 3270 1037 l 3300 917 l 3330 1037 l cp
+eoclip
+n 3300 2400 m
+ 3300 900 l gs col0 s gr gr
+
+% arrowhead
+n 3330 1037 m 3300 917 l 3270 1037 l  col0 s
+% Polyline
+gs  clippath
+4233 897 m 4177 874 l 4121 1015 l 4194 915 l 4177 1037 l cp
+eoclip
+n 3600 2400 m
+ 4200 900 l gs col0 s gr gr
+
+% arrowhead
+n 4177 1037 m 4194 915 l 4121 1015 l  col0 s
+% Polyline
+n 3105 2400 m 3000 2400 3000 2895 105 arcto 4 {pop} repeat
+  3000 3000 3495 3000 105 arcto 4 {pop} repeat
+  3600 3000 3600 2505 105 arcto 4 {pop} repeat
+  3600 2400 3105 2400 105 arcto 4 {pop} repeat
+ cp gs col0 s gr 
+/Times-Roman ff 300.00 scf sf
+3150 2775 m
+gs 1 -1 sc (A) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+2325 5025 m
+gs 1 -1 sc (B) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+4200 5025 m
+gs 1 -1 sc (C) col0 sh gr
+$F2psEnd
+rs

Added: GNUnet-docs/papers/ecrs/indirection.fig
===================================================================
--- GNUnet-docs/papers/ecrs/indirection.fig     2005-05-31 19:10:35 UTC (rev 
832)
+++ GNUnet-docs/papers/ecrs/indirection.fig     2005-05-31 19:27:19 UTC (rev 
833)
@@ -0,0 +1,31 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        2700 2100 3900 2100 3900 3300 2700 3300 2700 2100
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       0 0 1.00 60.00 120.00
+        2400 4800 3000 3000
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       0 0 1.00 60.00 120.00
+        4200 4800 3600 3000
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       0 0 1.00 60.00 120.00
+        3000 2400 2400 900
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       0 0 1.00 60.00 120.00
+        3300 2400 3300 900
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       0 0 1.00 60.00 120.00
+        3600 2400 4200 900
+2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5
+        3600 3000 3600 2400 3000 2400 3000 3000 3600 3000
+4 0 0 50 0 0 20 0.0000 4 195 210 3150 2775 A\001
+4 0 0 50 0 0 12 0.0000 4 135 120 2325 5025 B\001
+4 0 0 50 0 0 12 0.0000 4 135 120 4200 5025 C\001

Added: GNUnet-docs/papers/ecrs/llncs.cls
===================================================================
--- GNUnet-docs/papers/ecrs/llncs.cls   2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet-docs/papers/ecrs/llncs.cls   2005-05-31 19:27:19 UTC (rev 833)
@@ -0,0 +1,1170 @@
+% LLNCS DOCUMENT CLASS -- version 2.10
+% for LaTeX2e
+%
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesClass{llncs}[2001/08/14 v2.10
+^^Jexperimental LaTeX document class for Lecture Notes in Computer Science]
+% Options
address@hidden
address@hidden
+\DeclareOption{citeauthoryear}{\let\citeauthoryear=Y}
+\DeclareOption{oribibl}{\let\oribibl=Y}
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
+
address@hidden
address@hidden
+
+% languages
+\let\switcht@@therlang\relax
address@hidden@@address@hidden
address@hidden@@address@hidden
+
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
+
+\ProcessOptions
+
+\LoadClass[twoside]{article}
+\RequirePackage{multicol} % needed for the list of participants, index
+
+\setlength{\textwidth}{12.2cm}
+\setlength{\textheight}{19.3cm}
address@hidden
address@hidden
+%
address@hidden
+  \ifnum #1>address@hidden \else
+    \vskip \z@ address@hidden@
+    {\leftskip #2\relax \rightskip address@hidden \advance\rightskip by 0pt 
plus 2cm
+               \parfillskip -\rightskip \pretolerance=10000
+     \parindent address@hidden
+     address@hidden
+     \leavevmode
+     address@hidden #3\relax
+     \advance\leftskip address@hidden \null\nobreak\hskip -\leftskip
+     {#4}\nobreak
+     address@hidden
+        \mkern address@hidden mu\hbox{.}\mkern address@hidden
+        mu$}\hfill
+     \nobreak
+     address@hidden@address@hidden \normalcolor #5}%
+     \par}%
+  \fi}
+%
address@hidden
+\def\abstractname{Abstract.}
+\def\ackname{Acknowledgement.}
+\def\andname{and}
+\def\lastandname{\unskip, and}
+\def\appendixname{Appendix}
+\def\chaptername{Chapter}
+\def\claimname{Claim}
+\def\conjecturename{Conjecture}
+\def\contentsname{Table of Contents}
+\def\corollaryname{Corollary}
+\def\definitionname{Definition}
+\def\examplename{Example}
+\def\exercisename{Exercise}
+\def\figurename{Fig.}
+\def\keywordname{{\bf Key words:}}
+\def\indexname{Index}
+\def\lemmaname{Lemma}
+\def\contriblistname{List of Contributors}
+\def\listfigurename{List of Figures}
+\def\listtablename{List of Tables}
+\def\mailname{{\it Correspondence to\/}:}
+\def\noteaddname{Note added in proof}
+\def\notename{Note}
+\def\partname{Part}
+\def\problemname{Problem}
+\def\proofname{Proof}
+\def\propertyname{Property}
+\def\propositionname{Proposition}
+\def\questionname{Question}
+\def\remarkname{Remark}
+\def\seename{see}
+\def\solutionname{Solution}
+\def\subclassname{{\it Subject Classifications\/}:}
+\def\tablename{Table}
+\def\theoremname{Theorem}}
address@hidden
+% Names of theorem like environments are already defined
+% but must be translated if another language is chosen
+%
+% French section
address@hidden parle francais.}%
+ \def\abstractname{R\'esum\'e.}%
+ \def\ackname{Remerciements.}%
+ \def\andname{et}%
+ \def\lastandname{ et}%
+ \def\appendixname{Appendice}
+ \def\chaptername{Chapitre}%
+ \def\claimname{Pr\'etention}%
+ \def\conjecturename{Hypoth\`ese}%
+ \def\contentsname{Table des mati\`eres}%
+ \def\corollaryname{Corollaire}%
+ \def\definitionname{D\'efinition}%
+ \def\examplename{Exemple}%
+ \def\exercisename{Exercice}%
+ \def\figurename{Fig.}%
+ \def\keywordname{{\bf Mots-cl\'e:}}
+ \def\indexname{Index}
+ \def\lemmaname{Lemme}%
+ \def\contriblistname{Liste des contributeurs}
+ \def\listfigurename{Liste des figures}%
+ \def\listtablename{Liste des tables}%
+ \def\mailname{{\it Correspondence to\/}:}
+ \def\noteaddname{Note ajout\'ee \`a l'\'epreuve}%
+ \def\notename{Remarque}%
+ \def\partname{Partie}%
+ \def\problemname{Probl\`eme}%
+ \def\proofname{Preuve}%
+ \def\propertyname{Caract\'eristique}%
+%\def\propositionname{Proposition}%
+ \def\questionname{Question}%
+ \def\remarkname{Remarque}%
+ \def\seename{voir}
+ \def\solutionname{Solution}%
+ \def\subclassname{{\it Subject Classifications\/}:}
+ \def\tablename{Tableau}%
+ \def\theoremname{Th\'eor\`eme}%
+}
+%
+% German section
address@hidden spricht deutsch.}%
+ \def\abstractname{Zusammenfassung.}%
+ \def\ackname{Danksagung.}%
+ \def\andname{und}%
+ \def\lastandname{ und}%
+ \def\appendixname{Anhang}%
+ \def\chaptername{Kapitel}%
+ \def\claimname{Behauptung}%
+ \def\conjecturename{Hypothese}%
+ \def\contentsname{Inhaltsverzeichnis}%
+ \def\corollaryname{Korollar}%
+%\def\definitionname{Definition}%
+ \def\examplename{Beispiel}%
+ \def\exercisename{\"Ubung}%
+ \def\figurename{Abb.}%
+ \def\keywordname{{\bf Schl\"usselw\"orter:}}
+ \def\indexname{Index}
+%\def\lemmaname{Lemma}%
+ \def\contriblistname{Mitarbeiter}
+ \def\listfigurename{Abbildungsverzeichnis}%
+ \def\listtablename{Tabellenverzeichnis}%
+ \def\mailname{{\it Correspondence to\/}:}
+ \def\noteaddname{Nachtrag}%
+ \def\notename{Anmerkung}%
+ \def\partname{Teil}%
+%\def\problemname{Problem}%
+ \def\proofname{Beweis}%
+ \def\propertyname{Eigenschaft}%
+%\def\propositionname{Proposition}%
+ \def\questionname{Frage}%
+ \def\remarkname{Anmerkung}%
+ \def\seename{siehe}
+ \def\solutionname{L\"osung}%
+ \def\subclassname{{\it Subject Classifications\/}:}
+ \def\tablename{Tabelle}%
+%\def\theoremname{Theorem}%
+}
+
+% Ragged bottom for the actual page
address@hidden@ plus.0001fil
address@hidden
+
+\renewcommand\small{%
+   address@hidden@ixpt{11}%
+   \abovedisplayskip 8.5\p@ address@hidden@ address@hidden@
+   \abovedisplayshortskip \z@ address@hidden@
+   \belowdisplayshortskip 4\p@ address@hidden@ address@hidden@
+   address@hidden
+               \parsep 0\p@ address@hidden@ address@hidden@
+               \topsep 8\p@ address@hidden@ address@hidden@
+               address@hidden
+   \belowdisplayskip \abovedisplayskip
+}
+
+\frenchspacing
+\widowpenalty=10000
+\clubpenalty=10000
+
+\setlength\oddsidemargin   address@hidden
+\setlength\evensidemargin  address@hidden
+\setlength\marginparwidth  address@hidden
+
+\setlength\headsep   address@hidden
+
address@hidden
address@hidden 2\p@ address@hidden address@hidden
+\setlength\intextsep   address@hidden 2\p@ address@hidden address@hidden
+
+\setcounter{secnumdepth}{2}
+
+\newcounter {chapter}
+\renewcommand\thechapter      address@hidden@chapter}
+
address@hidden address@hidden
+\newcommand\frontmatter{\cleardoublepage
+            address@hidden
+\newcommand\mainmatter{\cleardoublepage
+       address@hidden
address@hidden
+      address@hidden
+
+\renewcommand\part{\cleardoublepage
+                 \thispagestyle{empty}%
+                 address@hidden
+                     \onecolumn
+                     address@hidden
+                   \else
+                     address@hidden
+                 \fi
+                 \null\vfil
+                 address@hidden@spart}
+
address@hidden
+    \ifnum address@hidden >-2\relax
+      \refstepcounter{part}%
+      \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
+    \else
+      \addcontentsline{toc}{part}{#1}%
+    \fi
+    \markboth{}{}%
+    {\centering
+     \interlinepenalty address@hidden
+     \normalfont
+     \ifnum address@hidden >-2\relax
+       \huge\bfseries \partname~\thepart
+       \par
+       \vskip 20\p@
+     \fi
+     \Huge \bfseries #2\par}%
+    address@hidden
address@hidden
+    {\centering
+     \interlinepenalty address@hidden
+     \normalfont
+     \Huge \bfseries #1\par}%
+    address@hidden
address@hidden
+              address@hidden
+                \null
+                \thispagestyle{empty}%
+                \newpage
+              \fi
+              address@hidden
+                \twocolumn
+              \fi}
+
+\newcommand\chapter{\clearpage
+                    \thispagestyle{empty}%
+                    address@hidden@
+                    address@hidden
+                    address@hidden@schapter}
address@hidden address@hidden >address@hidden
+                       address@hidden
+                         \refstepcounter{chapter}%
+                         address@hidden
+                         \addcontentsline{toc}{chapter}%
+                                  {\protect\numberline{\thechapter}#1}%
+                       \else
+                         \addcontentsline{toc}{chapter}{#1}%
+                       \fi
+                    \else
+                      \addcontentsline{toc}{chapter}{#1}%
+                    \fi
+                    \chaptermark{#1}%
+                    address@hidden
+                    address@hidden
+                    address@hidden
+                      address@hidden@makechapterhead{#2}]%
+                    \else
+                      address@hidden
+                      address@hidden
+                    \fi}
address@hidden
+% address@hidden
+  {\centering
+    \ifnum address@hidden >address@hidden
+      address@hidden
+        \large\bfseries address@hidden \thechapter
+        \par\nobreak
+        \vskip 20\p@
+      \fi
+    \fi
+    address@hidden
+    \Large \bfseries #1\par\nobreak
+    \vskip 40\p@
+  }}
address@hidden@twocolumn
+                   address@hidden@makeschapterhead{#1}]%
+                 \else
+                   address@hidden
+                   address@hidden
+                 \fi}
address@hidden
+% address@hidden
+  {\centering
+    \normalfont
+    address@hidden
+    \Large \bfseries  #1\par\nobreak
+    \vskip 40\p@
+  }}
+
address@hidden@}%
+                       {-18\p@ address@hidden -4\p@ address@hidden 
address@hidden
+                       {12\p@ address@hidden 4\p@ address@hidden address@hidden
+                       {\normalfont\large\bfseries\boldmath
+                        \rightskip=\z@ address@hidden 8em\pretolerance=10000 }}
address@hidden@}%
+                       {-18\p@ address@hidden -4\p@ address@hidden 
address@hidden
+                       {8\p@ address@hidden 4\p@ address@hidden address@hidden
+                       {\normalfont\normalsize\bfseries\boldmath
+                        \rightskip=\z@ address@hidden 8em\pretolerance=10000 }}
address@hidden@}%
+                       {-18\p@ address@hidden -4\p@ address@hidden 
address@hidden
+                       {-0.5em address@hidden -0.22em address@hidden -0.1em}%
+                       {\normalfont\normalsize\bfseries\boldmath}}
address@hidden@}%
+                       {-12\p@ address@hidden -4\p@ address@hidden 
address@hidden
+                       {-0.5em address@hidden -0.22em address@hidden -0.1em}%
+                       {\normalfont\normalsize\itshape}}
+\renewcommand\subparagraph[1]{\typeout{LLNCS warning: You should not use
+                  \string\subparagraph\space with this class}\vskip0.5cm
+You should not use \verb|\subparagraph| with this class.\vskip0.5cm}
+
+\DeclareMathSymbol{\Gamma}{\mathalpha}{letters}{"00}
+\DeclareMathSymbol{\Delta}{\mathalpha}{letters}{"01}
+\DeclareMathSymbol{\Theta}{\mathalpha}{letters}{"02}
+\DeclareMathSymbol{\Lambda}{\mathalpha}{letters}{"03}
+\DeclareMathSymbol{\Xi}{\mathalpha}{letters}{"04}
+\DeclareMathSymbol{\Pi}{\mathalpha}{letters}{"05}
+\DeclareMathSymbol{\Sigma}{\mathalpha}{letters}{"06}
+\DeclareMathSymbol{\Upsilon}{\mathalpha}{letters}{"07}
+\DeclareMathSymbol{\Phi}{\mathalpha}{letters}{"08}
+\DeclareMathSymbol{\Psi}{\mathalpha}{letters}{"09}
+\DeclareMathSymbol{\Omega}{\mathalpha}{letters}{"0A}
+
+\let\footnotesize\small
+
address@hidden
+\def\vec#1{\mathchoice{\mbox{\boldmath$\displaystyle#1$}}
+{\mbox{\boldmath$\textstyle#1$}}
+{\mbox{\boldmath$\scriptstyle#1$}}
+{\mbox{\boldmath$\scriptscriptstyle#1$}}}
+\fi
+
+\def\squareforqed{\hbox{\rlap{$\sqcap$}$\sqcup$}}
+\def\qed{\ifmmode\squareforqed\else{\unskip\nobreak\hfil
+\penalty50\hskip1em\null\nobreak\hfil\squareforqed
+\parfillskip=0pt\finalhyphendemerits=0\endgraf}\fi}
+
+\def\getsto{\mathrel{\mathchoice {\vcenter{\offinterlineskip
+\halign{\hfil
+$\displaystyle##$\hfil\cr\gets\cr\to\cr}}}
+{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr\gets
+\cr\to\cr}}}
+{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr\gets
+\cr\to\cr}}}
+{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
+\gets\cr\to\cr}}}}}
+\def\lid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
+$\displaystyle##$\hfil\cr<\cr\noalign{\vskip1.2pt}=\cr}}}
+{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr<\cr
+\noalign{\vskip1.2pt}=\cr}}}
+{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr<\cr
+\noalign{\vskip1pt}=\cr}}}
+{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
+<\cr
+\noalign{\vskip0.9pt}=\cr}}}}}
+\def\gid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil
+$\displaystyle##$\hfil\cr>\cr\noalign{\vskip1.2pt}=\cr}}}
+{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr>\cr
+\noalign{\vskip1.2pt}=\cr}}}
+{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr>\cr
+\noalign{\vskip1pt}=\cr}}}
+{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
+>\cr
+\noalign{\vskip0.9pt}=\cr}}}}}
+\def\grole{\mathrel{\mathchoice {\vcenter{\offinterlineskip
+\halign{\hfil
+$\displaystyle##$\hfil\cr>\cr\noalign{\vskip-1pt}<\cr}}}
+{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr
+>\cr\noalign{\vskip-1pt}<\cr}}}
+{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr
+>\cr\noalign{\vskip-0.8pt}<\cr}}}
+{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr
+>\cr\noalign{\vskip-0.3pt}<\cr}}}}}
+\def\bbbr{{\rm I\!R}} %reelle Zahlen
+\def\bbbm{{\rm I\!M}}
+\def\bbbn{{\rm I\!N}} %natuerliche Zahlen
+\def\bbbf{{\rm I\!F}}
+\def\bbbh{{\rm I\!H}}
+\def\bbbk{{\rm I\!K}}
+\def\bbbp{{\rm I\!P}}
+\def\bbbone{{\mathchoice {\rm 1\mskip-4mu l} {\rm 1\mskip-4mu l}
+{\rm 1\mskip-4.5mu l} {\rm 1\mskip-5mu l}}}
+\def\bbbc{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm C$}\hbox{\hbox
+to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}
+{\setbox0=\hbox{$\textstyle\rm C$}\hbox{\hbox
+to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}
+{\setbox0=\hbox{$\scriptstyle\rm C$}\hbox{\hbox
+to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}
+{\setbox0=\hbox{$\scriptscriptstyle\rm C$}\hbox{\hbox
+to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}}}
+\def\bbbq{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm
+Q$}\hbox{\raise
+0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}}
+{\setbox0=\hbox{$\textstyle\rm Q$}\hbox{\raise
+0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}}
+{\setbox0=\hbox{$\scriptstyle\rm Q$}\hbox{\raise
+0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}}
+{\setbox0=\hbox{$\scriptscriptstyle\rm Q$}\hbox{\raise
+0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}}}}
+\def\bbbt{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm
+T$}\hbox{\hbox to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}
+{\setbox0=\hbox{$\textstyle\rm T$}\hbox{\hbox
+to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}
+{\setbox0=\hbox{$\scriptstyle\rm T$}\hbox{\hbox
+to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}
+{\setbox0=\hbox{$\scriptscriptstyle\rm T$}\hbox{\hbox
+to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}}}
+\def\bbbs{{\mathchoice
+{\setbox0=\hbox{$\displaystyle     \rm S$}\hbox{\raise0.5\ht0\hbox
+to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox
+to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}}
+{\setbox0=\hbox{$\textstyle        \rm S$}\hbox{\raise0.5\ht0\hbox
+to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox
+to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}}
+{\setbox0=\hbox{$\scriptstyle      \rm S$}\hbox{\raise0.5\ht0\hbox
+to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox
+to0pt{\kern0.5\wd0\vrule height0.45\ht0\hss}\box0}}
+{\setbox0=\hbox{$\scriptscriptstyle\rm S$}\hbox{\raise0.5\ht0\hbox
+to0pt{\kern0.4\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox
+to0pt{\kern0.55\wd0\vrule height0.45\ht0\hss}\box0}}}}
+\def\bbbz{{\mathchoice {\hbox{$\mathsf\textstyle Z\kern-0.4em Z$}}
+{\hbox{$\mathsf\textstyle Z\kern-0.4em Z$}}
+{\hbox{$\mathsf\scriptstyle Z\kern-0.3em Z$}}
+{\hbox{$\mathsf\scriptscriptstyle Z\kern-0.2em Z$}}}}
+
+\let\ts\,
+
+\setlength\leftmargini  address@hidden
+\setlength\leftmargin    {\leftmargini}
+\setlength\leftmarginii  {\leftmargini}
+\setlength\leftmarginiii {\leftmargini}
+\setlength\leftmarginiv  {\leftmargini}
+\setlength  \labelsep  {.5em}
+\setlength  \labelwidth{\leftmargini}
+\addtolength\labelwidth{-\labelsep}
+
address@hidden
+            \parsep 0\p@ address@hidden@ address@hidden@
+            \topsep 8\p@ address@hidden@ address@hidden@
+            address@hidden
address@hidden@listI
address@hidden
address@hidden {\leftmargin\leftmarginii
+              \labelwidth\leftmarginii
+              \advance\labelwidth-\labelsep
+              \topsep    0\p@ address@hidden@ address@hidden@}
address@hidden
+              \labelwidth\leftmarginiii
+              \advance\labelwidth-\labelsep
+              \topsep    0\p@ address@hidden@address@hidden@
+              \parsep    \z@
+              \partopsep \p@ address@hidden@ address@hidden@}
+
+\renewcommand\labelitemi{\normalfont\bfseries --}
address@hidden
+
address@hidden
address@hidden
+
address@hidden
+                                                    {{\contentsname}}}
+ address@hidden
+ \def\lastand{\ifnum\value{auco}=2\relax
+                 \unskip{} \andname\
+              \else
+                 \unskip \lastandname\
+              \fi}%
+ address@hidden
+          address@hidden
+             \lastand
+          \else
+             \unskip,
+          \fi}%
+ address@hidden@restonecol\twocolumn\fi}
+
address@hidden@secpenalty}%
+   \addvspace{2em address@hidden  % space above part line
+   \begingroup
+     \parindent \z@
+     \rightskip \z@ plus 5em
+     \hrule\vskip5pt
+     \large               % same size as for a contribution heading
+     \bfseries\boldmath   % set line in boldface
+     \leavevmode          % TeX command to enter horizontal mode.
+     #1\par
+     \vskip5pt
+     \hrule
+     \vskip1pt
+     \nobreak             % Never break after part entry
+   \endgroup}
+
address@hidden
+
address@hidden@undefined\else
+{chapter.\thechapter}\fi}
+
+\def\addnumcontentsmark#1#2#3{%
+\addtocontents{#1}{\protect\contentsline{#2}{\protect\numberline
+                     {\thechapter}#3}{\thepage}\hyperhrefextend}}
+\def\addcontentsmark#1#2#3{%
+\addtocontents{#1}{\protect\contentsline{#2}{#3}{\thepage}\hyperhrefextend}}
+\def\addcontentsmarkwop#1#2#3{%
+\addtocontents{#1}{\protect\contentsline{#2}{#3}{0}\hyperhrefextend}}
+
address@hidden #1 \or
address@hidden
+  \or    address@hidden
+  \or    address@hidden
+  address@hidden
address@hidden@address@hidden
+
address@hidden@highpenalty}
+ \vskip 1.0em plus 1pt address@hidden 1.5em \begingroup
+ \parindent \z@ \rightskip address@hidden
+ \advance\rightskip by 0pt plus 2cm
+ \parfillskip -\rightskip \pretolerance=10000
+ \leavevmode address@hidden \hskip -\leftskip
+ {\large\bfseries\boldmath#1}\ifx0#2\hfil\null
+ \else
+      \nobreak
+      address@hidden \mkern address@hidden mu.\mkern
+      address@hidden mu$}\hfill
+      \nobreak\hbox address@hidden #2}%
+ \fi\par
+ address@hidden \endgroup}
+
address@hidden@highpenalty}
+ \addvspace{8pt plus 1pt}
+ address@hidden \z@
+ \begingroup
+ \parindent \z@ \rightskip address@hidden
+ \advance\rightskip by 0pt plus 2cm
+ \parfillskip -\rightskip \pretolerance=10000
+ \leavevmode address@hidden \hskip -\leftskip
+ #1\nobreak
+ address@hidden \mkern address@hidden mu.\mkern
+ address@hidden mu$}\hfill
+ \nobreak\hbox address@hidden #2}\par
+ address@hidden \endgroup}
+
address@hidden@highpenalty}
+ address@hidden@ %15\p@
+ \begingroup
+ \parindent \z@ \rightskip address@hidden
+ \advance\rightskip by 0pt plus 2cm
+ \pretolerance=10000
+ \leavevmode address@hidden %\hskip -\leftskip
+ \textit{#1}\par
+ address@hidden \endgroup}
+
+\setcounter{tocdepth}{0}
+\newdimen\tocchpnum
+\newdimen\tocsecnum
+\newdimen\tocsectotal
+\newdimen\tocsubsecnum
+\newdimen\tocsubsectotal
+\newdimen\tocsubsubsecnum
+\newdimen\tocsubsubsectotal
+\newdimen\tocparanum
+\newdimen\tocparatotal
+\newdimen\tocsubparanum
+\tocchpnum=\z@            % no chapter numbers
+\tocsecnum=15\p@          % section 88. plus 2.222pt
+\tocsubsecnum=23\p@       % subsection 88.8 plus 2.222pt
+\tocsubsubsecnum=27\p@    % subsubsection 88.8.8 plus 1.444pt
+\tocparanum=35\p@         % paragraph 88.8.8.8 plus 1.666pt
+\tocsubparanum=43\p@      % subparagraph 88.8.8.8.8 plus 1.888pt
+\def\calctocindent{%
+\tocsectotal=\tocchpnum
+\advance\tocsectotal by\tocsecnum
+\tocsubsectotal=\tocsectotal
+\advance\tocsubsectotal by\tocsubsecnum
+\tocsubsubsectotal=\tocsubsectotal
+\advance\tocsubsubsectotal by\tocsubsubsecnum
+\tocparatotal=\tocsubsubsectotal
+\advance\tocparatotal by\tocparanum}
+\calctocindent
+
address@hidden@dottedtocline{1}{\tocchpnum}{\tocsecnum}}
address@hidden@dottedtocline{2}{\tocsectotal}{\tocsubsecnum}}
address@hidden@dottedtocline{3}{\tocsubsectotal}{\tocsubsubsecnum}}
address@hidden@dottedtocline{4}{\tocsubsubsectotal}{\tocparanum}}
address@hidden@dottedtocline{5}{\tocparatotal}{\tocsubparanum}}
+
address@hidden@address@hidden
+ address@hidden
+ address@hidden@restonecol\twocolumn\fi}
address@hidden@dottedtocline{1}{0em}{1.5em}}
+
address@hidden@address@hidden
+ address@hidden
+ address@hidden@restonecol\twocolumn\fi}
address@hidden@figure
+
+\renewcommand\listoffigures{%
+    \section*{\listfigurename
+      address@hidden
+    address@hidden
+    }
+
+\renewcommand\listoftables{%
+    \section*{\listtablename
+      address@hidden
+    address@hidden
+    }
+
+\ifx\oribibl\undefined
+\ifx\citeauthoryear\undefined
+\renewenvironment{thebibliography}[1]
+     {\section*{\refname}
+      address@hidden
+      \small
+      address@hidden@address@hidden
+           address@hidden
+            \leftmargin\labelwidth
+            \advance\leftmargin\labelsep
+            address@hidden
+              \advance\leftmargin\bibindent
+              \itemindent -\bibindent
+              \listparindent \itemindent
+              \parsep \z@
+            \fi
+            \usecounter{enumiv}%
+            address@hidden@empty
+            address@hidden@enumiv}}%
+      address@hidden
+        \renewcommand\newblock{\par}%
+      \else
+        \renewcommand\newblock{\hskip .11em address@hidden address@hidden
+      \fi
+      \sloppy\clubpenalty4000\widowpenalty4000%
+      address@hidden
+     address@hidden
+       address@hidden@warning{Empty `thebibliography' environment}}%
+      \endlist}
address@hidden@filesw
+     {\let\protect\noexpand\immediate
+     address@hidden
address@hidden
address@hidden@address@hidden
+  address@hidden@address@hidden@address@hidden@address@hidden@citeb:=#2\do
+    address@hidden
+       address@hidden@address@hidden@address@hidden@address@hidden,}{\bfseries
+        address@hidden
+       {Citation address@hidden' on page \thepage \space undefined}}%
+    address@hidden@tempcntc0\csname address@hidden@citeb\endcsname\relax}%
+     address@hidden@ address@hidden@address@hidden
+       address@hidden@citea{,}\hbox{\csname address@hidden@citeb\endcsname}%
+     \else
+      address@hidden@ne
+      address@hidden@tempcntc
+      address@hidden@address@hidden
+      address@hidden@address@hidden@address@hidden
address@hidden@tempcnta>address@hidden
+               address@hidden@citea{,\,address@hidden
+               address@hidden@address@hidden
+               address@hidden@address@hidden@tempcntb \else
+                address@hidden
+      address@hidden@address@hidden@address@hidden
+\else
+\renewenvironment{thebibliography}[1]
+     {\section*{\refname}
+      \small
+      \list{}%
+           {\settowidth\labelwidth{}%
+            \leftmargin\parindent
+            \itemindent=-\parindent
+            \labelsep=\z@
+            address@hidden
+              \advance\leftmargin\bibindent
+              \itemindent -\bibindent
+              \listparindent \itemindent
+              \parsep \z@
+            \fi
+            \usecounter{enumiv}%
+            address@hidden@empty
+            \renewcommand\theenumiv{}}%
+      address@hidden
+        \renewcommand\newblock{\par}%
+      \else
+        \renewcommand\newblock{\hskip .11em address@hidden address@hidden
+      \fi
+      \sloppy\clubpenalty4000\widowpenalty4000%
+      address@hidden
+     address@hidden
+       address@hidden@warning{Empty `thebibliography' environment}}%
+      \endlist}
+      address@hidden
+      address@hidden@filesw
+        {\def\protect##1{\string ##1\space}\immediate
+      address@hidden
+   \fi
+\else
address@hidden@address@hidden
+\fi
+
+\def\idxquad{\hskip address@hidden space that divides entry from number
+
address@hidden address@hidden
+
+\def\subitem{\par\setbox0=\hbox{--\enspace}% second order
+                \noindent\hangindent\wd0\box0}% index entry
+
+\def\subsubitem{\par\setbox0=\hbox{--\,--\enspace}% third
+                \noindent\hangindent\wd0\box0}% order index entry
+
+\def\indexspace{\par \vskip 10\p@ plus5\p@ address@hidden
+
+\renewenvironment{theindex}
+               address@hidden
+                \thispagestyle{empty}\parindent\z@
+                \parskip\z@ address@hidden address@hidden
+                \let\item\par
+                \def\,{\relax\ifmmode\mskip\thinmuskip
+                             \else\hskip0.2em\ignorespaces\fi}%
+                \normalfont\small
+                address@hidden
+                }
+                {\end{multicols}}
+
+\renewcommand\footnoterule{%
+  \kern-3\p@
+  address@hidden 2truecm
+  address@hidden
+  \newdimen\fnindent
+  \fnindent1em
address@hidden
+    \parindent \fnindent%
+    \leftskip \fnindent%
+    \noindent
+    address@hidden@address@hidden }}\ignorespaces#1}
+
address@hidden
+  \vskip\abovecaptionskip
+  address@hidden #1.} #2}%
+  \ifdim address@hidden >\hsize
+    {\bfseries #1.} #2\par
+  \else
+    \global address@hidden
+    address@hidden@address@hidden
+  \fi
+  \vskip\belowcaptionskip}
+
address@hidden
address@hidden
+\def address@hidden {%
+        address@hidden
+        \small
+        address@hidden
+        address@hidden
+}
address@hidden
address@hidden
+\renewenvironment{table}
+               address@hidden
+                address@hidden
+                address@hidden
+               address@hidden
+\renewenvironment{table*}
+               address@hidden
+                address@hidden
+                address@hidden
+               address@hidden
+
address@hidden
+  address@hidden
+  the#1\endcsname}{\ignorespaces #2}}\begingroup
+    address@hidden
+    address@hidden address@hidden #3}\par
+  \endgroup}
+
+% LaTeX does not provide a command to enter the authors institute
+% addresses. The \institute command is defined here.
+
address@hidden
address@hidden
+\newcounter{auco}
+\newdimen\instindent
+\newbox\authrun
+\newtoks\authorrunning
+\newtoks\tocauthor
+\newbox\titrun
+\newtoks\titlerunning
+\newtoks\toctitle
+
address@hidden Author Given}%
+                   address@hidden Title Given}%
+                   address@hidden
+                   address@hidden Institute Given}%
+                   address@hidden
+                   \global\titlerunning={}\global\authorrunning={}%
+                   \global\toctitle={}\global\tocauthor={}}
+
address@hidden
+
+\def\institutename{\par
+ \begingroup
+ \parskip=\z@
+ \parindent=\z@
+ address@hidden
+ address@hidden
+ address@hidden
+ address@hidden
+ \ifnum\c@@inst=1\relax
+ \else
+   \setcounter{footnote}{\c@@inst}%
+   address@hidden
+   address@hidden
+ \fi
+ \ignorespaces
+ address@hidden
+ \endgroup}
+
address@hidden
+   {\star\star\star}\or \dagger\or \ddagger\or
+   \mathchar "278\or \mathchar "27B\or \|\or **\or \dagger\dagger
+   \or \ddagger\ddagger address@hidden
+
+\def\inst#1{\unskip$^{#1}$}
+\def\fnmsep{\unskip$^,$}
+\def\email#1{{\tt#1}}
address@hidden
address@hidden
address@hidden@albion}}%
address@hidden@francais}}%
address@hidden@deutsch}}%
+}{\switcht@@therlang}%
+}
+\def\homedir{\~{ }}
+
address@hidden
+\clearheadinfo
+
+\renewcommand\maketitle{\newpage
+  \refstepcounter{chapter}%
+  \stepcounter{section}%
+  \setcounter{section}{0}%
+  \setcounter{subsection}{0}%
+  \setcounter{figure}{0}
+  \setcounter{table}{0}
+  \setcounter{equation}{0}
+  \setcounter{footnote}{0}%
+  \begingroup
+    \parindent=\z@
+    address@hidden@footnote}%
+    address@hidden
+      \ifnum address@hidden@ne
+        address@hidden
+      \else
+        address@hidden
+      \fi
+    \else
+      \newpage
+      address@hidden@   % Prevents figures from going at top of page.
+      address@hidden
+    \fi
+    address@hidden
+%
+    \def\\{\unskip\ \ignorespaces}\def\inst##1{\unskip{}}%
+    \def\thanks##1{\unskip{}}\def\fnmsep{\unskip}%
+    \instindent=\hsize
+    \advance\instindent by-\headlineindent
+    address@hidden
+       \addcontentsline{toc}{title}{\the\toctitle}\fi
+    address@hidden
+       \if!\the\titlerunning!\else
+         address@hidden
+       \fi
+       address@hidden
+       \ifdim\wd\titrun>\instindent
+          \typeout{Title too long for running head. Please supply}%
+          \typeout{a shorter form with \string\titlerunning\space prior to
+                   \string\maketitle}%
+          \global\setbox\titrun=\hbox{\small\rm
+          Title Suppressed Due to Excessive Length}%
+       \fi
+       address@hidden
+    \fi
+%
+    \if!\the\tocauthor!\relax
+      {\def\and{\noexpand\protect\noexpand\and}%
+      address@hidden@address@hidden
+    \else
+      \def\\{\noexpand\protect\noexpand\newline}%
+      address@hidden
+      address@hidden@uthor{\scratch}%
+    \fi
+    address@hidden
+    address@hidden
+       \if!\the\authorrunning!
+         address@hidden@auth}%
+         address@hidden
+       \else
+         address@hidden
+       \fi
+       address@hidden
+       \ifdim\wd\authrun>\instindent
+          \typeout{Names of authors too long for running head. Please supply}%
+          \typeout{a shorter form with \string\authorrunning\space prior to
+                   \string\maketitle}%
+          \global\setbox\authrun=\hbox{\small\rm
+          Authors Suppressed Due to Excessive Length}%
+       \fi
+       address@hidden
+       address@hidden@title}%
+     \fi
+  \endgroup
+  \setcounter{footnote}{0}%
+  \clearheadinfo}
+%
address@hidden
+ \markboth{}{}%
+ address@hidden
+                 \unskip{} \andname\
+              \else
+                 \unskip \lastandname\
+              \fi}%
+ address@hidden
+          address@hidden@inst}%
+             \lastand
+          \else
+             \unskip,
+          \fi}%
+ \begin{center}%
+ \let\newline\\
+ {\Large \bfseries\boldmath
+  \pretolerance=10000
+  address@hidden \par}\vskip .8cm
address@hidden {\large \bfseries\boldmath
+  \vskip -.65cm
+  \pretolerance=10000
+  address@hidden \par}\vskip .8cm\fi
+ address@hidden@auth}}%
+ address@hidden
+ address@hidden@auth}%
+ address@hidden
+ address@hidden
+{\lineskip .5em
+\noindent\ignorespaces
address@hidden
+ {\small\institutename}
+ \end{center}%
+ }
+
+% definition of the "\spnewtheorem" command.
+%
+% Usage:
+%
+%     \spnewtheorem{env_nam}{caption}[within]{cap_font}{body_font}
+% or  \spnewtheorem{env_nam}[numbered_like]{caption}{cap_font}{body_font}
+% or  \spnewtheorem*{env_nam}{caption}{cap_font}{body_font}
+%
+% New is "cap_font" and "body_font". It stands for
+% fontdefinition of the caption and the text itself.
+%
+% "\spnewtheorem*" gives a theorem without number.
+%
+% A defined spnewthoerem environment is used as described
+% by Lamport.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
address@hidden
address@hidden
+
address@hidden@address@hidden
+
+% definition of \spnewtheorem with number
+
address@hidden
+  address@hidden@address@hidden
address@hidden@address@hidden@spnthm{#1}}}
+
address@hidden@ifdefinable\csname #1\endcsname
+   address@hidden@addtoreset{#1}{#3}%
+   \expandafter\xdef\csname the#1\endcsname{\expandafter\noexpand
+     \csname the#3\endcsname address@hidden address@hidden
+   \expandafter\xdef\csname #1name\endcsname{#2}%
+   address@hidden@spthm{#1}{\csname #1name\endcsname}{#4}{#5}}%
+                              address@hidden@endtheorem}}}
+
address@hidden@ifdefinable\csname #1\endcsname
+   address@hidden
+   \expandafter\xdef\csname address@hidden
+   \expandafter\xdef\csname #1name\endcsname{#2}%
+   address@hidden@spthm{#1}{\csname #1name\endcsname}{#3}{#4}}%
+                               address@hidden@endtheorem}}}
+
address@hidden
+  address@hidden@address@hidden theorem environment `#2' address@hidden
+  address@hidden #1\endcsname
+  address@hidden@nameuse{the#2}}%
+  \expandafter\xdef\csname #1name\endcsname{#3}%
+  address@hidden@spthm{#2}{\csname #1name\endcsname}{#4}{#5}}%
+  address@hidden@endtheorem}}}}
+
address@hidden 7\p@ address@hidden@ address@hidden@
+\refstepcounter{#1}%
address@hidden@address@hidden
+
address@hidden@spbegintheorem{#2}{\csname the#1\endcsname}{#3}{#4}%
+                    \ignorespaces}
+
address@hidden@spopargbegintheorem{#2}{\csname
+       the#1\endcsname}{#5}{#3}{#4}\ignorespaces}
+
address@hidden
+                 \item[\hskip\labelsep{#3#1\ address@hidden
+
address@hidden
+      \item[\hskip\labelsep{#4#1\ #2}]{#4(#3)address@hidden }#5}
+
+% definition of \spnewtheorem* without number
+
address@hidden@Ynthm{#1}{#2}}
+
address@hidden@ifdefinable\csname #1\endcsname
+   address@hidden@Thm{\csname #1name\endcsname}{#3}{#4}}%
+    \expandafter\xdef\csname #1name\endcsname{#2}%
+    address@hidden@endtheorem}}}
+
address@hidden 7\p@ address@hidden@ address@hidden@
address@hidden@address@hidden
+
address@hidden@Begintheorem{#1}{#2}{#3}\ignorespaces}
+
address@hidden@Opargbegintheorem{#1}
+       {#4}{#2}{#3}\ignorespaces}
+
address@hidden
+                           address@hidden
+
address@hidden
+      \item[\hskip\labelsep{#3#1}]{#3(#2)address@hidden }}
+
address@hidden
+   address@hidden
+   \spnewtheorem{theorem}{Theorem}[section]{\bfseries}{\itshape}
+\else
+   \spnewtheorem{theorem}{Theorem}{\bfseries}{\itshape}
+   address@hidden
+      address@hidden
+   \else
+      address@hidden
+   \fi
+\fi
+
+%definition of divers theorem environments
+\spnewtheorem*{claim}{Claim}{\itshape}{\rmfamily}
+\spnewtheorem*{proof}{Proof}{\itshape}{\rmfamily}
address@hidden % alle Umgebungen wie Theorem.
+   address@hidden@spothm{#1}[theorem]{#2}{#3}{#4}}
+\else % alle Umgebungen mit eigenem Zaehler
+   address@hidden % mit section numeriert
+      address@hidden@spxnthm{#1}{#2}[section]{#3}{#4}}
+   \else % nicht mit section numeriert
+      address@hidden
+         address@hidden@spynthm{#1}{#2}{#3}{#4}
+                                   address@hidden
+      \else
+         address@hidden@spynthm{#1}{#2}{#3}{#4}
+                                   address@hidden
+      \fi
+   \fi
+\fi
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
+
address@hidden
+    address@hidden
+    address@hidden@elt
+    address@hidden
+        address@hidden
+        address@hidden@tempb\else
+            address@hidden
+        \fi}%
+    address@hidden address@hidden
+    \expandafter\def\csname address@hidden
+    address@hidden
+    address@hidden@tempd}
+
address@hidden
+      \item[\hskip\labelsep{##4##1\ address@hidden }##5}
+                  address@hidden
+      address@hidden }}
+      }
+
+\renewenvironment{abstract}{%
+      \list{}{\advance\topsep by0.35cm\relax\small
+      \leftmargin=1cm
+      \labelwidth=\z@
+      \listparindent=\z@
+      \itemindent\listparindent
+      \rightmargin\leftmargin}\item[\hskip\labelsep
+                                    \bfseries\abstractname]}
+    {\endlist}
+
+\newdimen\headlineindent             % dimension for space between
+\headlineindent=1.166cm              % number and text of headings.
+
address@hidden@address@hidden
+   address@hidden@address@hidden@empty
+   address@hidden
+                  \leftmark\hfil}
+   address@hidden
+                 \llap{\thepage}}
+   \def\chaptermark##1{}%
+   \def\sectionmark##1{}%
+   \def\subsectionmark##1{}}
+
address@hidden@address@hidden
+   address@hidden@address@hidden@empty
+   address@hidden
+                  \hfil}
+   address@hidden
+                 \llap{\thepage}}
+   \def\chaptermark##1{}%
+   \def\sectionmark##1{}%
+   \def\subsectionmark##1{}}
+
address@hidden@headings\else
address@hidden
+
address@hidden
address@hidden
+
+\endinput

Added: GNUnet-docs/papers/ecrs/llncs.doc
===================================================================
--- GNUnet-docs/papers/ecrs/llncs.doc   2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet-docs/papers/ecrs/llncs.doc   2005-05-31 19:27:19 UTC (rev 833)
@@ -0,0 +1,1275 @@
+% This is LLNCS.DOC the documentation file of
+% the LaTeX2e class from Springer-Verlag
+% for Lecture Notes in Computer Science, version 2.3
+\documentclass{llncs}
+\usepackage{llncsdoc}
+%
+\begin{document}
+\markboth{\LaTeXe{} Class for Lecture Notes in Computer
+Science}{\LaTeXe{} Class for Lecture Notes in Computer Science}
+\thispagestyle{empty}
+\begin{flushleft}
+\LARGE\bfseries Instructions for Authors\\
+Coding with \LaTeX\\[2cm]
+\end{flushleft}
+\rule{\textwidth}{1pt}
+\vspace{2pt}
+\begin{flushright}
+\Huge
address@hidden
+\LaTeXe{} Class\\
+for Lecture Notes\\
+in Computer Science\\[6pt]
+{\Large Version 2.3}
+\end{tabular}
+\end{flushright}
+\rule{\textwidth}{1pt}
+\vfill
+\begin{flushleft}
+\large\itshape
address@hidden
+{\Large\upshape\bfseries Springer}\\[8pt]
+Berlin\enspace Heidelberg\enspace New\kern0.1em York\\[5pt]
+Barcelona\enspace Budapest\enspace Hong\kern0.2em Kong\\[5pt]
+London\enspace Milan\enspace Paris\enspace\\[5pt]
+Santa\kern0.2em Clara\enspace Singapore\enspace Tokyo
+\end{tabular}
+\end{flushleft}
+\newpage
+%
+\section*{For further information please contact us:}
+%
+\begin{flushleft}
address@hidden@address@hidden
+$\bullet$&address@hidden Springer-\kern-2pt Verlag
+Heidelberg}\\[1mm]
+&address@hidden New Technologies/Product
+Development}\\
+&address@hidden, Postfach 105280, D-69042
+Heidelberg
+1, FRG}\\[0.5mm]
+ & Telefax:   & (0\,62\,21)487688\\
+ &            & (0\,62\,21)487366\\
+ & Internet:  & \tt address@hidden    & for editorial questions\\
+ &            & \tt address@hidden & for \TeX{} problems
+\end{tabular}
+\end{flushleft}
+\rule{\textwidth}{1pt}
+%
+\section*{Acceptable formats of your disk/magnetic tape and output:}
+%
+The following formats are acceptable: 5.25$^{\prime\prime}$ diskette
+MS-DOS, 5.25$^{\prime\prime}$ CP/M, 3.5$^{\prime\prime}$ diskette
+MS-DOS, 3.5$^{\prime\prime}$ diskette Apple MacIntosh, 9-track 1600
+bpi magnetic tape VAX/VMS, 9-track 1600 bpi magnetic tape ANSI with
+label, SUN-Streamer Tape.
+
+Once you have completed your work using this macro package,
+please submit your own printout of the {\em final
+version together with the disk or magnetic tape}, containing your
+\LaTeX{} input (source) file und the final DVI-file and make sure
+that the text is {\em identical in both cases.}
+
+\bigskip
+This macro package, as well as all other macro packages, style
+files, and document classes that Springer distributes, are also
+available through our mailserver (for people with only e-mail access).
+
+{\tt address@hidden first try the \verb|help|
+command.
+
+\noindent We are also reachable through the world wide web:
+\begin{flushleft}
+\tt
address@hidden@address@hidden:}l}
+\rmfamily URLs are &   http&//www.springer.de       \\
+             & gopher&//ftp.springer.de \\
+             &    ftp&//ftp.springer.de
+\end{tabular}
+\end{flushleft}
+
+
+
+
+%
+\newpage
+\tableofcontents
+\newpage
+%
+\section{Introduction}
+%
+Authors wishing to code their contribution
+with \LaTeX{}, as well as those who have already coded with \LaTeX{},
+will be provided with a document class that will give the text the
+desired layout. Authors are requested to
+adhere strictly to these instructions; {\em the class
+file must not be changed}.
+
+The text output area is automatically set within an area of
+12.2\,cm horizontally  and 19.3\,cm vertically.
+
+If you are already familiar with \LaTeX{}, then the
+LLNCS class should not give you any major difficulties.
+It will change the layout to the required LLNCS style
+(it will for instance define the layout of \verb|\section|).
+We had to invent some extra commands,
+which are not provided by \LaTeX{} (e.g.\
+\verb|\institute|, see also Sect.\,\ref{contbegin})
+
+For the main body of the paper (the text) you
+should use the commands of the standard \LaTeX{} ``article'' class.
+Even if you are familiar with those commands, we urge you to read
+this entire documentation thoroughly. It contains many suggestions on
+how to use our commands properly; thus your paper
+will be formatted exactly to LLNCS standard.
+For the input of the references at the end of your contribution,
+please follow our instructions given in Sect.\,\ref{refer} References.
+
+The majority of these hints are not specific for LLNCS; they may improve
+your use of \LaTeX{} in general.
+Furthermore, the documentation provides suggestions about the proper
+editing and use
+of the input files (capitalization, abbreviation etc.) (see
+Sect.\,\ref{refedit} How to Edit Your Input File).
+%
+\section{How to Proceed}
+%
+The package consists of the following files:
+\begin{flushleft}
address@hidden
+{\tt history.txt}& the version history of the package\\[2pt]
+{\tt llncs.cls}  & class file for \LaTeX{}\\[2pt]
+{\tt llncs.dem}  & an example showing how to code the text\\[2pt]
+{\tt llncs.doc}  & general instructions (source of this document),\\
+        & {\tt llncs.doc} means {\itshape l\/}atex {\itshape doc\/}umentation 
for\\
+        & {\itshape L\/}ecture {\itshape N}otes in {\itshape C\/}omputer 
{\itshape S\/}cience\\
+{\tt llncsdoc.sty}  & class modifications to help for the instructions\\
+{\tt llncs.ind} & an external (faked) author index file\\
+{\tt subjidx.ind} & subject index demo from the Springer book package\\
+{\tt llncs.dvi}    & the resultig DVI file (remember to use binary 
transfer!)\\[2pt]
+{\tt sprmindx.sty} & supplementary style file for MakeIndex\\
+                   & (usage: {\tt makeindex -s sprmindx.sty <yourfile.idx>})
+\end{tabular}
+\end{flushleft}
+%
+\subsection{How to Invoke the LLNCS Document Class}
+%
+The LLNCS class is an extension of the standard \LaTeX{} ``article''
+document class. Therefore you may use all ``article'' commands for the
+body of your contribution to prepare your manuscript.
+LLNCS class is invoked by replacing ``article'' by ``llncs'' in the
+first line of your document:
+\begin{verbatim}
+\documentclass{llncs}
+%
+\begin{document}
+  <Your contribution>
+\end{document}
+\end{verbatim}
+%
+\subsection{Contributions Already Coded with \protect\LaTeX{} without
+the LLNCS document class}
+%
+If your file is already coded with \LaTeX{} you can easily
+adapt it a posteriori to the LLNCS document class.
+
+Please refrain from using any \LaTeX{} or \TeX{} commands
+that affect the layout or formatting of your document (i.e. commands
+like \verb|\textheight|, \verb|\vspace|, \verb|\headsep| etc.).
+There may nevertheless be exceptional occasions on which to
+use some of them.
+
+The LLNCS document class has been carefully designed to produce the
+right layout from your \LaTeX{} input. If there is anything specific you
+would like to do and for which the style file does not provide a
+command, {\em please contact us}. Same holds for any error and bug you
+discover (there is however no reward for this -- sorry).
+%
+\section{General Rules for Coding Formulas}
+%
+With mathematical formulas you may proceed as described
+in Sect.\,3.3 of the {\em \LaTeX{} User's Guide \& Reference
+Manual\/} by Leslie Lamport (2nd~ed. 1994), Addison-Wesley Publishing
+Company, Inc.
+
+Equations are automatically numbered sequentially throughout your
+contribution using arabic numerals in parentheses on the right-hand
+side.
+
+When you are working in math mode everything is typeset in italics.
+Sometimes you need to insert non-mathematical elements (e.g.\
+words or phrases). Such insertions should be coded in roman
+(with \verb|\mbox|) as illustrated in the following example:
+\begin{flushleft}
+{\itshape Sample Input}
+\end{flushleft}
+\begin{verbatim}
+\begin{equation}
+  \left(\frac{a^{2} + b^{2}}{c^{3}} \right) = 1 \quad
+  \mbox{ if } c\neq 0 \mbox{ and if } a,b,c\in \bbbr \enspace .
+\end{equation}
+\end{verbatim}
+{\itshape Sample Output}
+\begin{equation}
+  \left(\frac{a^{2} + b^{2}}{c^{3}} \right) = 1 \quad
+  \mbox{ if } c\neq 0 \mbox{ and if } a,b,c\in \bbbr \enspace .
+\end{equation}
+
+If you wish to start a new paragraph immediately after a displayed
+equation, insert a blank line so as to produce the required
+indentation. If there is no new paragraph either do not insert
+a blank line or code \verb|\noindent| immediately before
+continuing the text.
+
+Please punctuate a displayed equation in the same way as other
+ordinary text but with an \verb|\enspace| before end punctuation.
+
+Note that the sizes of the parentheses or other delimiter
+symbols used in equations should ideally match the height of the
+formulas being enclosed. This is automatically taken care of by
+the following \LaTeX{} commands:\\[2mm]
+\verb|\left(| or \verb|\left[| and
+\verb|\right)| or \verb|\right]|.
+%
+\subsection{Italic and Roman Type in Math Mode}
+%
+\begin{alpherate}
+\item
+In math mode \LaTeX{} treats all letters as though they
+were mathematical or physical variables, hence they are typeset as
+characters of their own in
+italics. However, for certain components of formulas, like short texts,
+this would be incorrect and therefore coding in roman is required.
+Roman should also be used for
+subscripts and superscripts {\em in formulas\/} where these are
+merely labels and not in themselves variables,
+e.g. $T_{\mathrm{eff}}$ \emph{not} $T_{eff}$,
+$T_{\mathrm K}$ \emph{not} $T_K$ (K = Kelvin),
+$m_{\mathrm e}$ \emph{not} $m_e$ (e = electron).
+However, do not code for roman
+if the sub/superscripts represent variables,
+e.g.\ $\sum_{i=1}^{n} a_{i}$.
+\item
+Please ensure that {\em physical units\/} (e.g.\ pc, erg s$^{-1}$
+K, cm$^{-3}$, W m$^{-2}$ Hz$^{-1}$, m kg s$^{-2}$ A$^{-2}$) and
+{\em abbreviations\/} such as Ord, Var, GL, SL, sgn, const.\
+are always set in roman type. To ensure
+this use the \verb|\mathrm| command: \verb|\mathrm{Hz}|.
+On p.\ 44 of the {\em \LaTeX{} User's Guide \& Reference
+Manual\/} by Leslie Lamport you will find the names of
+common mathe\-matical functions, such as log, sin, exp, max and sup.
+These should be coded as \verb|\log|,
+\verb|\sin|, \verb|\exp|, \verb|\max|, \verb|\sup|
+and will appear in roman automatically.
+\item
+Chemical symbols and formulas should be coded for roman,
+e.g.\ Fe not $Fe$, H$_2$O not {\em H$_2$O}.
+\item
+Familiar foreign words and phrases, e.g.\ et al.,
+a priori, in situ, brems\-strah\-lung, eigenvalues should not be
+italicized.
+\end{alpherate}
+%
+\section{How to Edit Your Input (Source) File}
+\label{refedit}
+%
+\subsection{Headings}\label{headings}
+%
+All words in headings should be capitalized except for conjunctions,
+prepositions (e.g.\ on, of, by, and, or, but, from, with, without,
+under) and definite and indefinite articles (the, a, an) unless they
+appear at the beginning. Formula letters must be typeset as in the text.
+%
+\subsection{Capitalization and Non-capitalization}
+%
+\begin{alpherate}
+\item
+The following should always be capitalized:
+\begin{itemize}
+\item
+Headings (see preceding Sect.\,\ref{headings})
+\item
+Abbreviations and expressions
+in the text such as  Fig(s)., Table(s), Sect(s)., Chap(s).,
+Theorem, Corollary, Definition etc. when used with numbers, e.g.\
+Fig.\,3, Table\,1, Theorem 2.
+\end{itemize}
+Please follow the special rules in Sect.\,\ref{abbrev} for referring to
+equations.
+\item
+The following should {\em not\/} be capitalized:
+\begin{itemize}
+\item
+The words figure(s), table(s), equation(s), theorem(s) in the text when
+used without an accompanying number.
+\item
+Figure legends and table captions except for names and abbreviations.
+\end{itemize}
+\end{alpherate}
+%
+\subsection{Abbreviation of Words}\label{abbrev}
+%
+\begin{alpherate}
+\item
+The following {\em should} be abbreviated when they appear in running
+text {\em unless\/} they come at the beginning of a sentence: Chap.,
+Sect., Fig.; e.g.\ The results are depicted in Fig.\,5. Figure 9 reveals
+that \dots .\\
+{\em Please note\/}: Equations should usually be referred to solely by
+their number in parentheses: e.g.\ (14). However, when the reference
+comes at the beginning of a sentence, the unabbreviated word
+``Equation'' should be used: e.g.\ Equation (14) is very important.
+However, (15) makes it clear that \dots .
+\item
+If abbreviations of names or concepts are used
+throughout the text, they should be defined at first occurrence,
+e.g.\ Plurisubharmonic (PSH) Functions, Strong Optimization (SOPT)
+Problem.
+\end{alpherate}
+%
+\section{How to Code the Beginning of Your Contribution}
+\label{contbegin}
+%
+The title of a single contribution (it is mandatory) should be coded as
+follows:
+\begin{verbatim}
+\title{<Your contribution title>}
+\end{verbatim}
+All words in titles should be capitalized except for conjunctions,
+prepositions (e.g.\ on, of, by, and, or, but, from, with, without,
+under) and definite and indefinite articles (the, a, an) unless they
+appear at the beginning. Formula letters must be typeset as in the text.
+Titles have no end punctuation.
+
+If a long \verb|\title| must be divided please use the code \verb|\\|
+(for new line).
+
+If you are to produce running heads for a specific volume the standard
+(of no such running heads) is overwritten with the \verb|[runningheads]|
+option in the \verb|\documentclass| line. For long titles that do not
+fit in the single line of the running head a warning is generated.
+You can specify an abbreviated title for the running head on odd pages
+with the command
+\begin{verbatim}
+\titlerunning{<Your abbreviated contribution title>}
+\end{verbatim}
+
+There is also a possibility to change the text of the title that goes
+into the table of contents (that's for volume editors only -- there is
+no table of contents for a single contribution). For this use the
+command
+\begin{verbatim}
+\toctitle{<Your changed title for the table of contents>}
+\end{verbatim}
+
+An optional subtitle may follow then:
+\begin{verbatim}
+\subtitle{<subtitle of your contribution>}
+\end{verbatim}
+
+Now the name(s) of the author(s) must be given:
+\begin{verbatim}
+\author{<author(s) name(s)>}
+\end{verbatim}
+Numbers referring to different addresses or affiliations are
+to be attached to each author with the \verb|\inst{<no>}| command.
+If there is more than one author, the order is up to you;
+the \verb|\and| command provides for the separation.
+
+If you have done this correctly, this entry now reads, for example:
+\begin{verbatim}
+\author{Ivar Ekeland\inst{1} \and Roger Temam\inst{2}}
+\end{verbatim}
+The first name\footnote{Other initials are optional
+and may be inserted if this is the usual
+way of writing your name, e.g.\ Alfred J.~Holmes, E.~Henry Green.}
+is followed by the surname.
+
+As for the title there exist two additional commands (again for volume
+editors only) for a different author list. One for the running head
+(on odd pages) -- if there is any:
+\begin{verbatim}
+\authorrunning{<abbreviated author list>}
+\end{verbatim}
+And one for the table of contents where the
+affiliation of each author is simply added in braces.
+\begin{verbatim}
+\tocauthor{<enhanced author list for the table of contents>}
+\end{verbatim}
+
+Next the address(es) of institute(s), company etc. is (are) required.
+If there is more than one address, the entries are numbered
+automatically with \verb|\and|, in the order in which you type them.
+Please make sure that the numbers match those placed next to
+to the authors' names to reflect the affiliation.
+\begin{verbatim}
+\institute{<name of an institute>
+\and <name of the next institute>
+\and <name of the next institute>}
+\end{verbatim}
+
+In addition, you can use
+\begin{verbatim}
+\email{<email address>}
+\end{verbatim}
+to provide your email address within \verb|\institute|. If you need to
+typeset the tilde character -- e.g. for your web page in your unix
+system's home directory -- the \verb|\homedir| command will happily do
+this.
+
+\medskip
+If footnote like things are needed anywhere in the contribution heading
+please code
+(immediately after the word where the footnote indicator should be
+placed):
+\begin{verbatim}
+\thanks{<text>}
+\end{verbatim}
+\verb|\thanks| may only appear in \verb|\title|, \verb|\author|
+and \verb|\institute| to footnote anything. If there are two or more
+footnotes or affiliation marks to a specific item separate them with
+\verb|\fnmsep| (i.e. {\itshape f}oot\emph note \emph mark
+\emph{sep}arator).
+
+\medskip\noindent
+The command
+\begin{verbatim}
+\maketitle
+\end{verbatim}
+then formats the complete heading of your article. If you leave
+it out the work done so far will produce \emph{no} text.
+
+Then the abstract should follow. Simply code
+\begin{verbatim}
+\begin{abstract}
+<Text of the summary of your article>
+\end{abstract}
+\end{verbatim}
+or refer to the demonstration file {\tt llncs.dem} for an example or
+to the {\em Sample Input\/} on p.~\pageref{samppage}.
+
+\subsubsection{Remark to Running Heads and the Table of Contents}
+\leavevmode\\[\medskipamount]
+If you are the author of a single contribution you normally have no
+running heads and no table of contents. Both are done only by the editor
+of the volume or at the printers.
+%
+\section{Special Commands for the Volume Editor}
+The volume editor can produce a complete camera ready output including
+running heads, a table of contents, preliminary text (frontmatter), and
+index or glossary. For activating the running heads there is the class
+option \verb|[runningheads]|.
+
+The table of contents of the volume is printed wherever
+\verb|\tableofcontents| is placed. A simple compilation of all
+contributions (fields \verb|\title| and \verb|\author|) is done. If you
+wish to change this automatically produced list use the commands
+\begin{verbatim}
+\titlerunning  \toctitle
+\authorrunning \tocauthor
+\end{verbatim}
+to enhance the information in the specific contributions. See the
+demonstration file \verb|llncs.dem| for examples.
+
+An additional structure can be added to the table of contents with the
+\verb|\addtocmark{<text>}| command. It has an optional numerical
+argument, a digit from 1 through 3. 3 (the default) makes an unnumbered
+chapter like entry in the table of contents. If you code
+\verb|\addtocmark[2]{text}| the corresponding page number is listed
+also, \verb|\addtocmark[1]{text}| even introduces a chapter number
+beyond it.
+%
+\section{How to Code Your Text}
+%
+The contribution title and all headings should be capitalized
+except for conjunctions, prepositions (e.g.\ on, of, by, and, or, but,
+from, with, without, under) and definite and indefinite articles (the,
+a, an) unless they appear at the beginning. Formula letters must be
+typeset as in the text.
+
+Headings will be automatically numbered by the following codes.\\[2mm]
+{\itshape Sample Input}
+\begin{verbatim}
+\section{This is a First-Order Title}
+\subsection{This is a Second-Order Title}
+\subsubsection{This is a Third-Order Title.}
+\paragraph{This is a Fourth-Order Title.}
+\end{verbatim}
+\verb|\section| and \verb|\subsection| have no end punctuation.\\
+\verb|\subsubsection| and \verb|\paragraph|
+need to be punctuated at the end.
+
+In addition to the above-mentioned headings your text may be structured
+by subsections indicated by run-in headings (theorem-like environments).
+All the theorem-like environments are numbered automatically
+throughout the sections of your document -- each with its own counter.
+If you want the theorem-like environments to use the same counter
+just specify the documentclass option \verb|envcountsame|:
+\begin{verbatim}
+\documentclass[envcountsame]{llncs}
+\end{verbatim}
+If your first call for a theorem-like environment then is e.g.
+\verb|\begin{lemma}|, it will be numbered 1; if corollary follows,
+this will be numbered 2; if you then call lemma again, this will be
+numbered 3.
+
+But in case you want to reset such counters to 1 in each section,
+please specify the documentclass option \verb|envcountreset|:
+\begin{verbatim}
+\documentclass[envcountreset]{llncs}
+\end{verbatim}
+
+Even a numbering on section level (including the section counter) is
+possible with the documentclass option \verb|envcountsect|.
+
+\section{Predefined Theorem like Environments}\label{builtintheo}
+The following variety of run-in headings are at your disposal:
+\begin{alpherate}
+\item
+{\bfseries Bold} run-in headings with italicized text
+as built-in environments:
+\begin{verbatim}
+\begin{corollary} <text> \end{corollary}
+\begin{lemma} <text> \end{lemma}
+\begin{proposition} <text> \end{proposition}
+\begin{theorem} <text> \end{theorem}
+\end{verbatim}
+\item
+The following generally appears as {\itshape italic} run-in heading:
+\begin{verbatim}
+\begin{proof} <text>    \qed    \end{proof}
+\end{verbatim}
+It is unnumbered and may contain an eye catching square (call for that
+with \verb|\qed|) before the environment ends.
+\item
+Further {\itshape italic} or {\bfseries bold} run-in headings with roman
+environment body may also occur:
+\begin{verbatim}
+\begin{definition} <text> \end{definition}
+\begin{example} <text> \end{example}
+\begin{exercise} <text> \end{exercise}
+\begin{note} <text> \end{note}
+\begin{problem} <text> \end{problem}
+\begin{question} <text> \end{question}
+\begin{remark} <text> \end{remark}
+\begin{solution} <text> \end{solution}
+\end{verbatim}
+\end{alpherate}
+
+\section{Defining your Own Theorem like Environments}
+We have enhanced the standard \verb|\newtheorem| command and slightly
+changed its syntax to get two new commands \verb|\spnewtheorem| and
+\verb|\spnewtheorem*| that now can be used to define additional
+environments. They require two additional arguments namely the type
+style in which the keyword of the environment appears and second the
+style for the text of your new environment.
+
+\verb|\spnewtheorem| can be used in two ways.
+\subsection{Method 1 {\itshape (preferred)}}
+You may want to create an environment that shares its counter
+with another environment, say {\em main theorem\/} to be numbered like
+the predefined {\em theorem\/}. In this case, use the syntax
+\begin{verbatim}
+\spnewtheorem{<env_nam>}[<num_like>]{<caption>}
+{<cap_font>}{<body_font>}
+\end{verbatim}
+
+\noindent
+Here the environment with which the new environment should share its
+counter is specified with the optional argument \verb|[<num_like>]|.
+
+\paragraph{Sample Input}
+\begin{verbatim}
+\spnewtheorem{mainth}[theorem]{Main Theorem}{\bfseries}{\itshape}
+\begin{theorem} The early bird gets the worm. \end{theorem}
+\begin{mainth} The early worm gets eaten. \end{mainth}
+\end{verbatim}
+\medskip\noindent
+{\em Sample Output}
+
+\medskip\noindent
+{\bfseries Theorem 3.}\enspace {\em The early bird gets the worm.}
+
+\medskip\noindent
+{\bfseries Main Theorem 4.} The early worm gets eaten.
+
+\bigskip
+The sharing of the default counter (\verb|[theorem]|) is desired. If you
+omit the optional second argument of \verb|\spnewtheorem| a separate
+counter for your new environment is used throughout your document.
+
+\subsection[Method 2]{Method 2 {\itshape (assumes {\tt[envcountsect]}
+documentstyle option)}}
+\begin{verbatim}
+\spnewtheorem{<env_nam>}{<caption>}[<within>]
+{<cap_font>}{<body_font>}
+\end{verbatim}
+
+\noindent
+This defines a new environment \verb|<env_nam>| which prints the caption
+\verb|<caption>| in the font \verb|<cap_font>| and the text itself in
+the font \verb|<body_font>|. The environment is numbered beginning anew
+with every new sectioning element you specify with the optional
+parameter \verb|<within>|.
+
+\medskip\noindent
+\paragraph{Example} \leavevmode
+
+\medskip\noindent
+\verb|\spnewtheorem{joke}{Joke}[subsection]{\bfseries}{\rmfamily}|
+
+\medskip
+\noindent defines a new environment called \verb|joke| which prints the
+caption {\bfseries Joke} in boldface and the text in roman. The jokes are
+numbered starting from 1 at the beginning of every subsection with the
+number of the subsection preceding the number of the joke e.g. 7.2.1 for
+the first joke in subsection 7.2.
+
+\subsection{Unnumbered Environments}
+If you wish to have an unnumbered environment, please
+use the syntax
+\begin{verbatim}
+\spnewtheorem*{<env_nam>}{<caption>}{<cap_font>}{<body_font>}
+\end{verbatim}
+
+\section{Program Codes}
+In case you want to show pieces of program code, just use the
+\verb|verbatim| environment or the \verb|verbatim| package of \LaTeX.
+(There also exist various pretty printers for some programming
+languages.)
+%
+\noindent
+\subsection*{Sample Input {\rmfamily(of a simple
+contribution)}}\label{samppage}
+\begin{verbatim}
+\title{Hamiltonian Mechanics}
+
+\author{Ivar Ekeland\inst{1} \and Roger Temam\inst{2}}
+
+\institute{Princeton University, Princeton NJ 08544, USA
+\and
+Universit\'{e} de Paris-Sud,
+Laboratoire d'Analyse Num\'{e}rique, B\^{a}timent 425,\\
+F-91405 Orsay Cedex, France}
+
+\maketitle
+%
+\begin{abstract}
+This paragraph shall summarize the contents of the paper
+in short terms.
+\end{abstract}
+%
+\section{Fixed-Period Problems: The Sublinear Case}
+%
+With this chapter, the preliminaries are over, and we begin the
+search for periodic solutions \dots
+%
+\subsection{Autonomous Systems}
+%
+In this section we will consider the case when the Hamiltonian
+$H(x)$ \dots
+%
+\subsubsection*{The General Case: Nontriviality.}
+%
+We assume that $H$ is
+$\left(A_{\infty}, B_{\infty}\right)$-subqua\-dra\-tic
+at infinity, for some constant \dots
+%
+\paragraph{Notes and Comments.}
+The first results on subharmonics were \dots
+%
+\begin{proposition}
+Assume $H'(0)=0$ and $ H(0)=0$. Set \dots
+\end{proposition}
+\begin{proof}[of proposition]
+Condition (8) means that, for every $\delta'>\delta$, there is
+some $\varepsilon>0$ such that \dots \qed
+\end{proof}
+%
+\begin{example}[\rmfamily (External forcing)]
+Consider the system \dots
+\end{example}
+\begin{corollary}
+Assume $H$ is $C^{2}$ and
+$\left(a_{\infty}, b_{\infty}\right)$-subquadratic
+at infinity. Let \dots
+\end{corollary}
+\begin{lemma}
+Assume that $H$ is $C^{2}$ on $\bbbr^{2n}\backslash \{0\}$
+and that $H''(x)$ is \dots
+\end{lemma}
+\begin{theorem}[(Ghoussoub-Preiss)]
+Let $X$ be a Banach Space and $\Phi:X\to\bbbr$ \dots
+\end{theorem}
+\begin{definition}
+We shall say that a $C^{1}$ function $\Phi:X\to\bbbr$
+satisfies \dots
+\end{definition}
+\end{verbatim}
+{\itshape Sample Output\/} (follows on the next page together with
+examples of the above run-in headings)
+\newcounter{save}\setcounter{save}{\value{section}}
+{\def\addtocontents#1#2{}%
+\def\addcontentsline#1#2#3{}%
+\def\markboth#1#2{}%
+%
+\title{Hamiltonian Mechanics}
+
+\author{Ivar Ekeland\inst{1} \and Roger Temam\inst{2}}
+
+\institute{Princeton University, Princeton NJ 08544, USA
+\and
+Universit\'{e} de Paris-Sud,
+Laboratoire d'Analyse Num\'{e}rique, B\^{a}timent 425,\\
+F-91405 Orsay Cedex, France}
+
+\maketitle
+%
+\begin{abstract}
+This paragraph shall summarize the contents of the paper
+in short terms.
+\end{abstract}
+%
+\section{Fixed-Period Problems: The Sublinear Case}
+%
+With this chapter, the preliminaries are over, and we begin the search
+for periodic solutions \dots
+%
+\subsection{Autonomous Systems}
+%
+In this section we will consider the case when the Hamiltonian
+$H(x)$ \dots
+%
+\subsubsection{The General Case: Nontriviality.}
+%
+We assume that $H$ is
+$\left(A_{\infty}, B_{\infty}\right)$-subqua\-dra\-tic at
+infinity, for some constant \dots
+%
+\paragraph{Notes and Comments.}
+The first results on subharmonics were \dots
+%
+\begin{proposition}
+Assume $H'(0)=0$ and $ H(0)=0$. Set \dots
+\end{proposition}
+\begin{proof}[of proposition]
+Condition (8) means that, for every $\delta'>\delta$, there is
+some $\varepsilon>0$ such that \dots \qed
+\end{proof}
+%
+\begin{example}[{{\rmfamily External forcing}}]
+Consider the system \dots
+\end{example}
+\begin{corollary}
+Assume $H$ is $C^{2}$ and
+$\left(a_{\infty}, b_{\infty}\right)$-subquadratic
+at infinity. Let \dots
+\end{corollary}
+\begin{lemma}
+Assume that $H$ is $C^{2}$ on $\bbbr^{2n}\backslash \{0\}$
+and that $H''(x)$ is \dots
+\end{lemma}
+\begin{theorem}[Ghoussoub-Preiss]
+Let $X$ be a Banach Space and $\Phi:X\to\bbbr$ \dots
+\end{theorem}
+\begin{definition}
+We shall say that a $C^{1}$ function $\Phi:X\to\bbbr$ satisfies \dots
+\end{definition}
+%
+}\setcounter{section}{\value{save}}
+\section{Fine Tuning of the Text}
+%
+The following should be used to improve the readability of the text:
+\begin{flushleft}
address@hidden
+\verb|\,|   & a thin space, e.g.\ between numbers or between units
+              and num\-bers; a line division will not be made
+              following this space\\
+\verb|--|   & en dash; two strokes, without a space at either end\\
+\verb*| -- |& en dash; two strokes, with  a space at either end\\
+\verb|-|    & hyphen; one stroke, no space at either end\\
+\verb|$-$|  & minus, in the text {\em only} \\[8mm]
+{\em Input} & \verb|21\,$^{\circ}$C etc.,|\\
+            &  \verb|Dr h.\,c.\,Rockefellar-Smith \dots|\\
+            & \verb|20,000\,km and  Prof.\,Dr Mallory \dots|\\
+            & \verb|1950--1985 \dots|\\
+            & \verb|this -- written on a computer -- is now printed|\\
+            & \verb|$-30$\,K \dots|\\[3mm]
+{\em Output}& 21\,$^{\circ}$C etc., Dr h.\,c.\,Rockefellar-Smith \dots\\
+            & 20,000\,km and  Prof.\,Dr Mallory \dots\\
+            & 1950--1985 \dots\\
+            & this -- written on a computer -- is now printed\\
+            & $-30$\,K \dots
+\end{tabular}
+\end{flushleft}
+%
+\section {Special Typefaces}
+%
+Normal type (roman text) need not be coded. {\itshape Italic}
+(\verb|{\em <text>}| better still \verb|\emph{<text>}|) or, if
+necessary, {\bfseries boldface} should be used for emphasis.\\[6pt]
+\begin{minipage}[t]{\textwidth}
+\begin{flushleft}
address@hidden@address@hidden
+\verb|{\itshape Text}|   & {\itshape Italicized Text}\\[2pt]
+\verb|{\em Text}|   & {\em Emphasized Text --
+   if you would like to emphasize a {\em definition} within an
+   italicized text (e.g.\ of a {\em theorem)} you should code the
+   expression to be emphasized by} \verb|\em|.\\[2pt]
+\verb|{\bfseries Text}|& {\bfseries Important Text}\\[2pt]
+\verb|\vec{Symbol}| & Vectors may only appear in math mode. The default
+   \LaTeX{} vector symbol has been adapted\footnotemark\
+ to LLNCS conventions.\\[2pt]
+ & \verb|$\vec{A \times B\cdot C}| yields $\vec{A\times B\cdot C}$\\
+ & \verb|$\vec{A}^{T} \otimes \vec{B} \otimes|\\
+ & \verb|\vec{\hat{D}}$|yields $\vec{A}^{T} \otimes \vec{B} \otimes
+\vec{\hat{D}}$
+\end{tabular}
+\end{flushleft}
+\end{minipage}
+
+\footnotetext{If you absolutely must revive the original \LaTeX{}
+design of the vector symbol (as an arrow accent), please specify the
+option \texttt{[orivec]} in the \texttt{documentclass} line.}
+\newpage
+%
+\section {Footnotes}
+%
+Footnotes within the text should be coded:
+\begin{verbatim}
+\footnote{Text}
+\end{verbatim}
+{\itshape Sample Input}
+\begin{flushleft}
+Text with a footnote\verb|\footnote{The |{\tt footnote is automatically
+numbered.}\verb|}| and text continues \dots
+\end{flushleft}
+{\itshape Sample Output}
+\begin{flushleft}
+Text with a footnote\footnote{The footnote is automatically numbered.}
+and text continues \dots
+\end{flushleft}
+%
+\section {Lists}
+%
+Please code lists as described below:\\[2mm]
+{\itshape Sample  Input}
+\begin{verbatim}
+\begin{enumerate}
+  \item First item
+  \item Second item
+  \begin{enumerate}
+    \item First nested item
+    \item Second nested item
+  \end{enumerate}
+  \item Third item
+\end{enumerate}
+\end{verbatim}
+{\itshape Sample Output}
+ \begin{enumerate}
+\item First item
+\item Second item
+  \begin{enumerate}
+    \item First nested item
+    \item Second nested item
+  \end{enumerate}
+\item Third item
+\end{enumerate}
+%
+\section {Figures}
+%
+Figure environments should be inserted after (not in)
+the  paragraph in which the figure is first mentioned.
+They will be numbered automatically.
+
+Preferably the images should be enclosed as PostScript files -- best as
+EPS data using the epsfig package.
+
+If you cannot include them into your output this way and use other
+techniques for a separate production,
+the figures (line drawings and those containing halftone inserts
+as well as halftone figures) {\em should not be pasted into your
+laserprinter output}. They should be enclosed separately in camera-ready
+form (original artwork, glossy prints, photographs and/or slides). The
+lettering should be suitable for reproduction, and after a
+probably necessary reduction the height of capital letters should be at
+least 1.8\,mm and not more than 2.5\,mm.
+Check that lines and other details are uniformly black and
+that the lettering on figures is clearly legible.
+
+To leave the desired amount of space for the height of
+your figures, please use the coding described below.
+As can be seen in the output, we will automatically
+provide 1\,cm space above and below the figure,
+so that you should only leave the space equivalent to the size of the
+figure itself. Please note that ``\verb|x|'' in the following
+coding stands for the actual height of the figure:
+\begin{verbatim}
+\begin{figure}
+\vspace{x cm}
+\caption[ ]{...text of caption...}          (Do type [ ])
+\end{figure}
+\end{verbatim}
+\begin{flushleft}
+{\itshape Sample Input}
+\end{flushleft}
+\begin{verbatim}
+\begin{figure}
+\vspace{2.5cm}
+\caption{This is the caption of the figure displaying a white
+eagle and a white horse on a snow field}
+\end{figure}
+\end{verbatim}
+\begin{flushleft}
+{\itshape Sample Output}
+\end{flushleft}
+\begin{figure}
+\vspace{2.5cm}
+\caption{This is the caption of the figure displaying a white eagle and
+a white horse on a snow field}
+\end{figure}
+%
+\section{Tables}
+%
+Table captions should be treated
+in the same way as figure legends, except that
+the table captions appear {\itshape above} the tables. The tables
+will be numbered automatically.
+%
+\subsection{Tables Coded with \protect\LaTeX{}}
+%
+Please use the following coding:\\[2mm]
+{\itshape Sample Input}
+\begin{verbatim}
+\begin{table}
+\caption{Critical $N$ values}
+\begin{tabular}{llllll}
+\hline\noalign{\smallskip}
+${\mathrm M}_\odot$ & $\beta_{0}$ & $T_{\mathrm c6}$ & $\gamma$
+  & $N_{\mathrm{crit}}^{\mathrm L}$
+  & $N_{\mathrm{crit}}^{\mathrm{Te}}$\\
+\noalign{\smallskip}
+\hline
+\noalign{\smallskip}
+ 30 & 0.82 & 38.4 & 35.7 & 154 & 320 \\
+ 60 & 0.67 & 42.1 & 34.7 & 138 & 340 \\
+120 & 0.52 & 45.1 & 34.0 & 124 & 370 \\
+\hline
+\end{tabular}
+\end{table}
+\end{verbatim}
+
+\medskip\noindent{\itshape Sample Output}
+\begin{table}
+\caption{Critical $N$ values}
+\begin{center}
+\renewcommand{\arraystretch}{1.4}
+\setlength\tabcolsep{3pt}
+\begin{tabular}{llllll}
+\hline\noalign{\smallskip}
+${\mathrm M}_\odot$ & $\beta_{0}$ & $T_{\mathrm c6}$ & $\gamma$
+  & $N_{\mathrm{crit}}^{\mathrm L}$
+  & $N_{\mathrm{crit}}^{\mathrm{Te}}$\\
+\noalign{\smallskip}
+\hline
+\noalign{\smallskip}
+ 30 & 0.82 & 38.4 & 35.7 & 154 & 320 \\
+ 60 & 0.67 & 42.1 & 34.7 & 138 & 340 \\
+120 & 0.52 & 45.1 & 34.0 & 124 & 370 \\
+\hline
+\end{tabular}
+\end{center}
+\end{table}
+
+Before continuing your text you need an empty line. \dots
+
+\vspace{3mm}
+For further information you will find a complete description of
+the tabular environment
+on p.~62~ff. and p.~204 of the {\em \LaTeX{} User's Guide \& Reference
+Manual\/} by Leslie Lamport.
+%
+\subsection{Tables Not Coded with \protect\LaTeX{}}
+%
+If you do not wish to code your table using \LaTeX{}
+but prefer to have it reproduced separately,
+proceed as for figures and use the following coding:\\[2mm]
+{\itshape Sample Input}
+\begin{verbatim}
+\begin{table}
+\caption{text of your caption}
+\vspace{x cm}     % the actual height needed for your table
+\end{table}
+\end{verbatim}
+%
+\subsection{Signs and Characters}
+%
+\subsubsection*{Special Signs.}
+%
+You may need to use special signs.  The available ones are listed in the
+{\em \LaTeX{} User's Guide \& Reference Manual\/} by Leslie Lamport,
+pp.~41\,ff.
+We have created further symbols for math mode (enclosed in \$):
+\begin{center}
address@hidden
address@hidden@{\hspace{1em}yields\hspace{1em}}c}
+\verb|\grole| & $\grole$ & \verb|\getsto| & $\getsto$\\
+\verb|\lid|   & $\lid$   & \verb|\gid|    & $\gid$
+\end{tabular}
+\end{center}
+%
+\subsubsection*{Gothic (Fraktur).}
+%
+If gothic letters are {\itshape necessary}, please use those of the
+relevant \AmSTeX{} alphabet which are available using the amstex
+package of the American Mathematical Society.
+
+In \LaTeX{} only the following gothic letters are available:
+\verb|$\Re$| yields $\Re$ and \verb|$\Im$| yields $\Im$. These should
+{\itshape not\/} be used when you need gothic letters for your contribution.
+Use \AmSTeX{} gothic as explained above. For the real and the imaginary
+parts of a complex number within math mode you should use instead:
+\verb|$\mathrm{Re}$| (which yields Re) or \verb|$\mathrm{Im}$| (which
+yields Im).
+%
+\subsubsection*{Script.}
+%
+For script capitals use the coding
+\begin{center}
address@hidden yields\hspace{1em}}c}
+\verb|$\mathcal{AB}$| & $\mathcal{AB}$
+\end{tabular}
+\end{center}
+(see p.~42 of  the \LaTeX{} book).
+%
+\subsubsection*{Special Roman.}
+%
+If you need other symbols than those below, you could use
+the blackboard bold characters of \AmSTeX{},  but there might arise
+capacity problems
+in loading additional \AmSTeX{} fonts. Therefore  we created
+the blackboard bold characters listed below.
+Some of them are not esthetically
+satisfactory. This need not deter you from using them:
+in the final printed form they will be
+replaced by the well-designed MT (monotype) characters of
+the phototypesetting machine.
+\begin{flushleft}
address@hidden@{ yields }
address@hidden@{ yields }c}
+\verb|\bbbc| & (complex numbers)   & $\bbbc$
+  & \verb|\bbbf| & (blackboard bold F) & $\bbbf$\\
+\verb|\bbbh| & (blackboard bold H) & $\bbbh$
+  & \verb|\bbbk| & (blackboard bold K) & $\bbbk$\\
+\verb|\bbbm| & (blackboard bold M) & $\bbbm$
+  & \verb|\bbbn| & (natural numbers N) & $\bbbn$\\
+\verb|\bbbp| & (blackboard bold P) & $\bbbp$
+  & \verb|\bbbq| & (rational numbers)  & $\bbbq$\\
+\verb|\bbbr| & (real numbers)      & $\bbbr$
+  & \verb|\bbbs| & (blackboard bold S) & $\bbbs$\\
+\verb|\bbbt| & (blackboard bold T) & $\bbbt$
+  & \verb|\bbbz| & (whole numbers)     & $\bbbz$\\
+\verb|\bbbone| & (symbol one)      & $\bbbone$
+\end{tabular}
+\end{flushleft}
+\begin{displaymath}
+\begin{array}{c}
+\bbbc^{\bbbc^{\bbbc}} \otimes
+\bbbf_{\bbbf_{\bbbf}} \otimes
+\bbbh_{\bbbh_{\bbbh}} \otimes
+\bbbk_{\bbbk_{\bbbk}} \otimes
+\bbbm^{\bbbm^{\bbbm}} \otimes
+\bbbn_{\bbbn_{\bbbn}} \otimes
+\bbbp^{\bbbp^{\bbbp}}\\[2mm]
+\otimes
+\bbbq_{\bbbq_{\bbbq}} \otimes
+\bbbr^{\bbbr^{\bbbr}} \otimes
+\bbbs^{\bbbs_{\bbbs}} \otimes
+\bbbt^{\bbbt^{\bbbt}} \otimes
+\bbbz \otimes
+\bbbone^{\bbbone_{\bbbone}}
+\end{array}
+\end{displaymath}
+%
+\section{References}
+\label{refer}
+%
+There are three reference systems available; only one, of course,
+should be used for your contribution. With each system (by
+number only, by letter-number or by author-year) a reference list
+containing all citations in the
+text, should be included at the end of your contribution placing the
+\LaTeX{} environment \verb|thebibliography| there.
+For an overall information on that environment
+see the {\em \LaTeX{} User's Guide \& Reference
+Manual\/} by Leslie Lamport, p.~71.
+
+At the moment there is no special {\sc Bib}\TeX{} style for LLNCS --
+sorry. But if you plan to use {\sc Bib}\TeX{} as you are customed to do
+so, please specify the option \verb|[oribibl]| in the
+\verb|documentclass| line, like:
+\begin{verbatim}
+\documentclass[oribibl]{llncs}
+\end{verbatim}
+This will retain the original \LaTeX{} code for the bibliographic
+environment and the \verb|\cite| mechanism that many {\sc Bib}\TeX{}
+applications rely on.
+%
+\subsection{References by Letter-Number or by Number Only}
+%
+References are cited in the text -- using the \verb|\cite|
+command of \LaTeX{} -- by number or by letter-number in square
+brackets, e.g.\ [1] or [E1, S2], [P1], according to your use of the
+\verb|\bibitem| command in the \verb|thebibliography| environment. The
+coding is as follows: if you choose your own label for the sources by
+giving an optional argument to the \verb|\bibitem| command the citations
+in the text are marked with the label you supplied. Otherwise a simple
+numbering is done, which is preferred.
+\begin{verbatim}
+The results in this section are a refined version
+of \cite{clar:eke}; the minimality result of Proposition~14
+was the first of its kind.
+\end{verbatim}
+The above input produces the citation: ``\dots\ refined version of
+[CE1]; the min\-i\-mality\dots''. Then the \verb|\bibitem| entry of
+the \verb|thebibliography| environment should read:
+\begin{verbatim}
+\begin{thebibliography}{[MT1]}
+.
+.
+\bibitem[CE1]{clar:eke}
+Clarke, F., Ekeland, I.:
+Nonlinear oscillations and boundary-value problems for
+Hamiltonian systems.
+Arch. Rat. Mech. Anal. {\bfseries 78} (1982) 315--333
+.
+.
+\end{thebibliography}
+\end{verbatim}
+The complete bibliography looks like this:
+%
+\begin{thebibliography}{[MT1]}
+%
+\bibitem[CE1]{clar:eke}
+Clarke, F., Ekeland, I.:
+Nonlinear oscillations and
+boundary-value problems for Hamiltonian systems.
+Arch. Rat. Mech. Anal. {\bfseries 78} (1982) 315--333
+%
+\bibitem[CE2]{clar:eke:2}
+Clarke, F., Ekeland, I.:
+Solutions p\'{e}riodiques, du
+p\'{e}riode donn\'{e}e, des \'{e}quations hamiltoniennes.
+Note CRAS Paris {\bfseries 287} (1978) 1013--1015
+%
+\bibitem[MT1]{mich:tar}
+Michalek, R., Tarantello, G.:
+Subharmonic solutions with prescribed minimal
+period for nonautonomous Hamiltonian systems.
+J. Diff. Eq. {\bfseries 72} (1988) 28--55
+%
+\bibitem[Ta1]{tar}
+Tarantello, G.:
+Subharmonic solutions for Hamiltonian
+systems via a $\bbbz_{p}$ pseudoindex theory.
+Annali di Matematica Pura (to appear)
+%
+\bibitem[Ra1]{rab}
+Rabinowitz, P.:
+On subharmonic solutions of a Hamiltonian system.
+Comm. Pure Appl. Math. {\bfseries 33} (1980) 609--633
+\end{thebibliography}
+%
+\subsubsection*{Number-Only System.}
+%
+For this preferred system do not use the optional argument
+in the \verb|\bibitem| command: then, only numbers will
+appear for the citations in the text (enclosed in square brackets)
+as well as for the marks in your
+bibliography (here the number is only end-punctuated without
+square brackets).
+
+Subsequent citation numbers in the text are collapsed to ranges.
+Non-numeric and undefined labels are handled correctly but no sorting is
+done.
+
+E.g., \verb|\cite{n1,n3,n2,n3,n4,n5,foo,n1,n2,n3,?,n4,n5}| -- where
+\verb|n|$x$ is the key of the $x^{\mathrm{th}}$ \verb|\bibitem|
+command in sequence, \verb|foo| is the key of a \verb|\bibitem| with an
+optional argument, and \verb|?| is an undefined reference -- gives
+1,3,2-5,foo,1-3,?,4,5 as the citation reference.
+
+\begin{verbatim}
+\begin{thebibliography}{1}
+\bibitem {clar:eke}
+Clarke, F., Ekeland, I.:
+Nonlinear oscillations and boundary-value problems for
+Hamiltonian systems.
+Arch. Rat. Mech. Anal. {\bfseries 78} (1982) 315--333
+\end{thebibliography}
+\end{verbatim}
+%
+\subsection{Author-Year System}
+%
+References are cited in the text by name and year in parentheses
+and should look as follows:
+(Smith 1970, 1980), (Ekeland et al. 1985, Theorem 2), (Jones and Jaffe
+1986; Farrow 1988, Chap.\,2). If the name is part of the sentence
+only the year may appear in parentheses,
+e.g.\ Ekeland et al. (1985, Sect.\,2.1)
+The reference list should contain all citations occurring in the text,
+ordered alphabetically by surname (with initials following). If there
+are several works by the same author(s) the references should be listed
+in the appropriate order indicated below:
+\begin{alpherate}
+\setlength{\hfuzz}{5pt}
+\item
+One author: list works chronologically;
+\item
+Author and same co-author(s): list works chronologically;
+\item
+Author and different co-authors: list works alphabetically
+according to co-authors.
+\end{alpherate}
+If there are several works by the same author(s) and in the same year,
+but which are cited separately, they should be distinguished by the use
+of ``a'', ``b'' etc., e.g.\ (Smith 1982a), (Ekeland et al. 1982b).
+%
+\subsubsection*{How to Code Author-Year System.}
+%
+If you want to use this system you have to specify the option
+\verb|[citeauthoryear]| in the \verb|documentclass|, like:
+\begin{verbatim}
+\documentclass[citeauthoryear]{llncs}
+\end{verbatim}
+Write your citations in the text explicitly except for the year, leaving
+that up to \LaTeX{} with the \verb|\cite| command. Then give only the
+appropriate year as the optional argument (i.e. the label in square
+brackets) with the \verb|\bibitem| command(s).\\[2mm]
+{\itshape Sample Input}
+\begin{verbatim}
+The results in this section are a refined version
+of Clarke and Ekeland (\cite{clar:eke}); the minimality result of
+Proposition~14 was the first of its kind.
+\end{verbatim}
+The above input produces the citation: ``\dots\ refined version of
+Clarke and Ekeland (1982); the minimality\dots''. Then the
+\verb|\bibitem| entry of \verb|clar:eke| in the \verb|thebibliography|
+environment should read:
+\begin{verbatim}
+\begin{thebibliography}{}  % (do not forget {})
+.
+.
+\bibitem[1982]{clar:eke}
+Clarke, F., Ekeland, I.:
+Nonlinear oscillations and boundary-value problems for
+Hamiltonian systems.
+Arch. Rat. Mech. Anal. {\bfseries 78} (1982) 315--333
+.
+.
+\end{thebibliography}
+\end{verbatim}
+{\itshape Sample Output}
+\bibauthoryear
+%
+\end{document}

Added: GNUnet-docs/papers/ecrs/llncs.tex
===================================================================
--- GNUnet-docs/papers/ecrs/llncs.tex   2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet-docs/papers/ecrs/llncs.tex   2005-05-31 19:27:19 UTC (rev 833)
@@ -0,0 +1,1093 @@
+% This is LLNCS.DEM the demonstration file of
+% the LaTeX macro package from Springer-Verlag
+% for Lecture Notes in Computer Science,
+% version 2.2 for LaTeX2e
+%
+\documentclass{llncs}
+%
+\usepackage{makeidx}  % allows for indexgeneration
+%
+\begin{document}
+%
+\frontmatter          % for the preliminaries
+%
+\pagestyle{headings}  % switches on printing of running heads
+\addtocmark{Hamiltonian Mechanics} % additional mark in the TOC
+%
+\chapter*{Preface}
+%
+This textbook is intended for use by students of physics, physical
+chemistry, and theoretical chemistry. The reader is presumed to have a
+basic knowledge of atomic and quantum physics at the level provided, for
+example, by the first few chapters in our book {\it The Physics of Atoms
+and Quanta}. The student of physics will find here material which should
+be included in the basic education of every physicist. This book should
+furthermore allow students to acquire an appreciation of the breadth and
+variety within the field of molecular physics and its future as a
+fascinating area of research.
+
+For the student of chemistry, the concepts introduced in this book will
+provide a theoretical framework for that entire field of study. With the
+help of these concepts, it is at least in principle possible to reduce
+the enormous body of empirical chemical knowledge to a few basic
+principles: those of quantum mechanics. In addition, modern physical
+methods whose fundamentals are introduced here are becoming increasingly
+important in chemistry and now represent indispensable tools for the
+chemist. As examples, we might mention the structural analysis of
+complex organic compounds, spectroscopic investigation of very rapid
+reaction processes or, as a practical application, the remote detection
+of pollutants in the air.
+
+\vspace{1cm}
+\begin{flushright}\noindent
+April 1995\hfill Walter Olthoff\\
+Program Chair\\
+ECOOP'95
+\end{flushright}
+%
+\chapter*{Organization}
+ECOOP'95 is organized by the department of Computer Science, Univeristy
+of \AA rhus and AITO (association Internationa pour les Technologie
+Object) in cooperation with ACM/SIGPLAN.
+%
+\section*{Executive Commitee}
address@hidden@address@hidden
+Conference Chair:&Ole Lehrmann Madsen (\AA rhus University, DK)\\
+Program Chair:   &Walter Olthoff (DFKI GmbH, Germany)\\
+Organizing Chair:&J\o rgen Lindskov Knudsen (\AA rhus University, DK)\\
+Tutorials:&Birger M\o ller-Pedersen\hfil\break
+(Norwegian Computing Center, Norway)\\
+Workshops:&Eric Jul (University of Kopenhagen, Denmark)\\
+Panels:&Boris Magnusson (Lund University, Sweden)\\
+Exhibition:&Elmer Sandvad (\AA rhus University, DK)\\
+Demonstrations:&Kurt N\o rdmark (\AA rhus University, DK)
+\end{tabular}
+%
+\section*{Program Commitee}
address@hidden@address@hidden
+Conference Chair:&Ole Lehrmann Madsen (\AA rhus University, DK)\\
+Program Chair:   &Walter Olthoff (DFKI GmbH, Germany)\\
+Organizing Chair:&J\o rgen Lindskov Knudsen (\AA rhus University, DK)\\
+Tutorials:&Birger M\o ller-Pedersen\hfil\break
+(Norwegian Computing Center, Norway)\\
+Workshops:&Eric Jul (University of Kopenhagen, Denmark)\\
+Panels:&Boris Magnusson (Lund University, Sweden)\\
+Exhibition:&Elmer Sandvad (\AA rhus University, DK)\\
+Demonstrations:&Kurt N\o rdmark (\AA rhus University, DK)
+\end{tabular}
+%
+\begin{multicols}{3}[\section*{Referees}]
+V.~Andreev\\
+B\"arwolff\\
+E.~Barrelet\\
+H.P.~Beck\\
+G.~Bernardi\\
+E.~Binder\\
+P.C.~Bosetti\\
+Braunschweig\\
+F.W.~B\"usser\\
+T.~Carli\\
+A.B.~Clegg\\
+G.~Cozzika\\
+S.~Dagoret\\
+Del~Buono\\
+P.~Dingus\\
+H.~Duhm\\
+J.~Ebert\\
+S.~Eichenberger\\
+R.J.~Ellison\\
+Feltesse\\
+W.~Flauger\\
+A.~Fomenko\\
+G.~Franke\\
+J.~Garvey\\
+M.~Gennis\\
+L.~Goerlich\\
+P.~Goritchev\\
+H.~Greif\\
+E.M.~Hanlon\\
+R.~Haydar\\
+R.C.W.~Henderso\\
+P.~Hill\\
+H.~Hufnagel\\
+A.~Jacholkowska\\
+Johannsen\\
+S.~Kasarian\\
+I.R.~Kenyon\\
+C.~Kleinwort\\
+T.~K\"ohler\\
+S.D.~Kolya\\
+P.~Kostka\\
+U.~Kr\"uger\\
+J.~Kurzh\"ofer\\
+M.P.J.~Landon\\
+A.~Lebedev\\
+Ch.~Ley\\
+F.~Linsel\\
+H.~Lohmand\\
+Martin\\
+S.~Masson\\
+K.~Meier\\
+C.A.~Meyer\\
+S.~Mikocki\\
+J.V.~Morris\\
+B.~Naroska\\
+Nguyen\\
+U.~Obrock\\
+G.D.~Patel\\
+Ch.~Pichler\\
+S.~Prell\\
+F.~Raupach\\
+V.~Riech\\
+P.~Robmann\\
+N.~Sahlmann\\
+P.~Schleper\\
+Sch\"oning\\
+B.~Schwab\\
+A.~Semenov\\
+G.~Siegmon\\
+J.R.~Smith\\
+M.~Steenbock\\
+U.~Straumann\\
+C.~Thiebaux\\
+P.~Van~Esch\\
+from Yerevan Ph\\
+L.R.~West\\
+G.-G.~Winter\\
+T.P.~Yiou\\
+M.~Zimmer\end{multicols}
+%
+\section*{Sponsoring Institutions}
+%
+Bernauer-Budiman Inc., Reading, Mass.\\
+The Hofmann-International Company, San Louis Obispo, Cal.\\
+Kramer Industries, Heidelberg, Germany
+%
+\tableofcontents
+%
+\mainmatter              % start of the contributions
+%
+\title{Hamiltonian Mechanics unter besonderer Ber\"ucksichtigung der
+h\"ohreren Lehranstalten}
+%
+\titlerunning{Hamiltonian Mechanics}  % abbreviated title (for running head)
+%                                     also used for the TOC unless
+%                                     \toctitle is used
+%
+\author{Ivar Ekeland\inst{1} \and Roger Temam\inst{2}
+Jeffrey Dean \and David Grove \and Craig Chambers \and Kim~B.~Bruce \and
+Elsa Bertino}
+%
+\authorrunning{Ivar Ekeland et al.}   % abbreviated author list (for running 
head)
+%
+%%%% modified list of authors for the TOC (add the affiliations)
+\tocauthor{Ivar Ekeland (Princeton University),
+Roger Temam (Universit\'{e} de Paris-Sud),
+Jeffrey Dean, David Grove, Craig Chambers (Universit\`a di Geova),
+Kim B. Bruce (Stanford University),
+Elisa Bertino (Digita Research Center)}
+%
+\institute{Princeton University, Princeton NJ 08544, USA,\\
address@hidden,\\ WWW home page:
+\texttt{http://users/\homedir iekeland/web/welcome.html}
+\and
+Universit\'{e} de Paris-Sud,
+Laboratoire d'Analyse Num\'{e}rique, B\^{a}timent 425,\\
+F-91405 Orsay Cedex, France}
+
+\maketitle              % typeset the title of the contribution
+
+\begin{abstract}
+The abstract should summarize the contents of the paper
+using at least 70 and at most 150 words. It will be set in 9-point
+font size and be inset 1.0 cm from the right and left margins.
+There will be two blank lines before and after the Abstract. \dots
+\end{abstract}
+%
+\section{Fixed-Period Problems: The Sublinear Case}
+%
+With this chapter, the preliminaries are over, and we begin the search
+for periodic solutions to Hamiltonian systems. All this will be done in
+the convex case; that is, we shall study the boundary-value problem
+\begin{eqnarray*}
+  \dot{x}&=&JH' (t,x)\\
+  x(0) &=& x(T)
+\end{eqnarray*}
+with $H(t,\cdot)$ a convex function of $x$, going to $+\infty$ when
+$\left\|x\right\| \to \infty$.
+
+%
+\subsection{Autonomous Systems}
+%
+In this section, we will consider the case when the Hamiltonian $H(x)$
+is autonomous. For the sake of simplicity, we shall also assume that it
+is $C^{1}$.
+
+We shall first consider the question of nontriviality, within the
+general framework of
+$\left(A_{\infty},B_{\infty}\right)$-subquadratic Hamiltonians. In
+the second subsection, we shall look into the special case when $H$ is
+$\left(0,b_{\infty}\right)$-subquadratic,
+and we shall try to derive additional information.
+%
+\subsubsection{The General Case: Nontriviality.}
+%
+We assume that $H$ is
+$\left(A_{\infty},B_{\infty}\right)$-sub\-qua\-dra\-tic at infinity,
+for some constant symmetric matrices $A_{\infty}$ and $B_{\infty}$,
+with $B_{\infty}-A_{\infty}$ positive definite. Set:
+\begin{eqnarray}
+\gamma :&=&{\rm smallest\ eigenvalue\ of}\ \ B_{\infty} - A_{\infty} \\
+  \lambda : &=& {\rm largest\ negative\ eigenvalue\ of}\ \
+  J \frac{d}{dt} +A_{\infty}\ .
+\end{eqnarray}
+
+Theorem~\ref{ghou:pre} tells us that if $\lambda +\gamma < 0$, the
+boundary-value problem:
+\begin{equation}
+\begin{array}{rcl}
+  \dot{x}&=&JH' (x)\\
+  x(0)&=&x (T)
+\end{array}
+\end{equation}
+has at least one solution
+$\overline{x}$, which is found by minimizing the dual
+action functional:
+\begin{equation}
+  \psi (u) = \int_{o}^{T} \left[\frac{1}{2}
+  \left(\Lambda_{o}^{-1} u,u\right) + N^{\ast} (-u)\right] dt
+\end{equation}
+on the range of $\Lambda$, which is a subspace $R (\Lambda)_{L}^{2}$
+with finite codimension. Here
+\begin{equation}
+  N(x) := H(x) - \frac{1}{2} \left(A_{\infty} x,x\right)
+\end{equation}
+is a convex function, and
+\begin{equation}
+  N(x) \le \frac{1}{2}
+  \left(\left(B_{\infty} - A_{\infty}\right) x,x\right)
+  + c\ \ \ \forall x\ .
+\end{equation}
+
+%
+\begin{proposition}
+Assume $H'(0)=0$ and $ H(0)=0$. Set:
+\begin{equation}
+  \delta := \liminf_{x\to 0} 2 N (x) \left\|x\right\|^{-2}\ .
+  \label{eq:one}
+\end{equation}
+
+If $\gamma < - \lambda < \delta$,
+the solution $\overline{u}$ is non-zero:
+\begin{equation}
+  \overline{x} (t) \ne 0\ \ \ \forall t\ .
+\end{equation}
+\end{proposition}
+%
+\begin{proof}
+Condition (\ref{eq:one}) means that, for every
+$\delta ' > \delta$, there is some $\varepsilon > 0$ such that
+\begin{equation}
+  \left\|x\right\| \le \varepsilon \Rightarrow N (x) \le
+  \frac{\delta '}{2} \left\|x\right\|^{2}\ .
+\end{equation}
+
+It is an exercise in convex analysis, into which we shall not go, to
+show that this implies that there is an $\eta > 0$ such that
+\begin{equation}
+  f\left\|x\right\| \le \eta
+  \Rightarrow N^{\ast} (y) \le \frac{1}{2\delta '}
+  \left\|y\right\|^{2}\ .
+  \label{eq:two}
+\end{equation}
+
+\begin{figure}
+\vspace{2.5cm}
+\caption{This is the caption of the figure displaying a white eagle and
+a white horse on a snow field}
+\end{figure}
+
+Since $u_{1}$ is a smooth function, we will have
+$\left\|hu_{1}\right\|_\infty \le \eta$
+for $h$ small enough, and inequality (\ref{eq:two}) will hold,
+yielding thereby:
+\begin{equation}
+  \psi (hu_{1}) \le \frac{h^{2}}{2}
+  \frac{1}{\lambda} \left\|u_{1} \right\|_{2}^{2} + \frac{h^{2}}{2}
+  \frac{1}{\delta '} \left\|u_{1}\right\|^{2}\ .
+\end{equation}
+
+If we choose $\delta '$ close enough to $\delta$, the quantity
+$\left(\frac{1}{\lambda} + \frac{1}{\delta '}\right)$
+will be negative, and we end up with
+\begin{equation}
+  \psi (hu_{1}) < 0\ \ \ \ \ {\rm for}\ \ h\ne 0\ \ {\rm small}\ .
+\end{equation}
+
+On the other hand, we check directly that $\psi (0) = 0$. This shows
+that 0 cannot be a minimizer of $\psi$, not even a local one.
+So $\overline{u} \ne 0$ and
+$\overline{u} \ne \Lambda_{o}^{-1} (0) = 0$. \qed
+\end{proof}
+%
+\begin{corollary}
+Assume $H$ is $C^{2}$ and
+$\left(a_{\infty},b_{\infty}\right)$-subquadratic at infinity. Let
+$\xi_{1},\allowbreak\dots,\allowbreak\xi_{N}$  be the
+equilibria, that is, the solutions of $H' (\xi ) = 0$.
+Denote by $\omega_{k}$
+the smallest eigenvalue of $H'' \left(\xi_{k}\right)$, and set:
+\begin{equation}
+  \omega : = {\rm Min\,} \left\{\omega_{1},\dots,\omega_{k}\right\}\ .
+\end{equation}
+If:
+\begin{equation}
+  \frac{T}{2\pi} b_{\infty} <
+  - E \left[- \frac{T}{2\pi}a_{\infty}\right] <
+  \frac{T}{2\pi}\omega
+  \label{eq:three}
+\end{equation}
+then minimization of $\psi$ yields a non-constant $T$-periodic solution
+$\overline{x}$.
+\end{corollary}
+%
+
+We recall once more that by the integer part $E [\alpha ]$ of
+$\alpha \in \bbbr$, we mean the $a\in \bbbz$
+such that $a< \alpha \le a+1$. For instance,
+if we take $a_{\infty} = 0$, Corollary 2 tells
+us that $\overline{x}$ exists and is
+non-constant provided that:
+
+\begin{equation}
+  \frac{T}{2\pi} b_{\infty} < 1 < \frac{T}{2\pi}
+\end{equation}
+or
+\begin{equation}
+  T\in \left(\frac{2\pi}{\omega},\frac{2\pi}{b_{\infty}}\right)\ .
+  \label{eq:four}
+\end{equation}
+
+%
+\begin{proof}
+The spectrum of $\Lambda$ is $\frac{2\pi}{T} \bbbz +a_{\infty}$. The
+largest negative eigenvalue $\lambda$ is given by
+$\frac{2\pi}{T}k_{o} +a_{\infty}$,
+where
+\begin{equation}
+  \frac{2\pi}{T}k_{o} + a_{\infty} < 0
+  \le \frac{2\pi}{T} (k_{o} +1) + a_{\infty}\ .
+\end{equation}
+Hence:
+\begin{equation}
+  k_{o} = E \left[- \frac{T}{2\pi} a_{\infty}\right] \ .
+\end{equation}
+
+The condition $\gamma < -\lambda < \delta$ now becomes:
+\begin{equation}
+  b_{\infty} - a_{\infty} <
+  - \frac{2\pi}{T} k_{o} -a_{\infty} < \omega -a_{\infty}
+\end{equation}
+which is precisely condition (\ref{eq:three}).\qed
+\end{proof}
+%
+
+\begin{lemma}
+Assume that $H$ is $C^{2}$ on $\bbbr^{2n} \setminus \{ 0\}$ and
+that $H'' (x)$ is non-de\-gen\-er\-ate for any $x\ne 0$. Then any local
+minimizer $\widetilde{x}$ of $\psi$ has minimal period $T$.
+\end{lemma}
+%
+\begin{proof}
+We know that $\widetilde{x}$, or
+$\widetilde{x} + \xi$ for some constant $\xi
+\in \bbbr^{2n}$, is a $T$-periodic solution of the Hamiltonian system:
+\begin{equation}
+  \dot{x} = JH' (x)\ .
+\end{equation}
+
+There is no loss of generality in taking $\xi = 0$. So
+$\psi (x) \ge \psi (\widetilde{x} )$
+for all $\widetilde{x}$ in some neighbourhood of $x$ in
+$W^{1,2} \left(\bbbr / T\bbbz ; \bbbr^{2n}\right)$.
+
+But this index is precisely the index
+$i_{T} (\widetilde{x} )$ of the $T$-periodic
+solution $\widetilde{x}$ over the interval
+$(0,T)$, as defined in Sect.~2.6. So
+\begin{equation}
+  i_{T} (\widetilde{x} ) = 0\ .
+  \label{eq:five}
+\end{equation}
+
+Now if $\widetilde{x}$ has a lower period, $T/k$ say,
+we would have, by Corollary 31:
+\begin{equation}
+  i_{T} (\widetilde{x} ) =
+  i_{kT/k}(\widetilde{x} ) \ge
+  ki_{T/k} (\widetilde{x} ) + k-1 \ge k-1 \ge 1\ .
+\end{equation}
+
+This would contradict (\ref{eq:five}), and thus cannot happen.\qed
+\end{proof}
+%
+\paragraph{Notes and Comments.}
+The results in this section are a
+refined version of \cite{clar:eke};
+the minimality result of Proposition
+14 was the first of its kind.
+
+To understand the nontriviality conditions, such as the one in formula
+(\ref{eq:four}), one may think of a one-parameter family
+$x_{T}$, $T\in \left(2\pi\omega^{-1}, 2\pi b_{\infty}^{-1}\right)$
+of periodic solutions, $x_{T} (0) = x_{T} (T)$,
+with $x_{T}$ going away to infinity when $T\to 2\pi \omega^{-1}$,
+which is the period of the linearized system at 0.
+
+\begin{table}
+\caption{This is the example table taken out of {\it The
+\TeX{}book,} p.\,246}
+\begin{center}
address@hidden
+\hline
+\multicolumn{1}{l}{\rule{0pt}{12pt}
+                   Year}&\multicolumn{2}{l}{World population}\\[2pt]
+\hline\rule{0pt}{12pt}
+8000 B.C.  &     5,000,000& \\
+  50 A.D.  &   200,000,000& \\
+1650 A.D.  &   500,000,000& \\
+1945 A.D.  & 2,300,000,000& \\
+1980 A.D.  & 4,400,000,000& \\[2pt]
+\hline
+\end{tabular}
+\end{center}
+\end{table}
+%
+\begin{theorem} [Ghoussoub-Preiss]\label{ghou:pre}
+Assume $H(t,x)$ is
+$(0,\varepsilon )$-subquadratic at
+infinity for all $\varepsilon > 0$, and $T$-periodic in $t$
+\begin{equation}
+  H (t,\cdot )\ \ \ \ \ {\rm is\ convex}\ \ \forall t
+\end{equation}
+\begin{equation}
+  H (\cdot ,x)\ \ \ \ \ {\rm is}\ \ T{\rm -periodic}\ \ \forall x
+\end{equation}
+\begin{equation}
+  H (t,x)\ge n\left(\left\|x\right\|\right)\ \ \ \ \
+  {\rm with}\ \ n (s)s^{-1}\to \infty\ \ {\rm as}\ \ s\to \infty
+\end{equation}
+\begin{equation}
+  \forall \varepsilon > 0\ ,\ \ \ \exists c\ :\
+  H(t,x) \le \frac{\varepsilon}{2}\left\|x\right\|^{2} + c\ .
+\end{equation}
+
+Assume also that $H$ is $C^{2}$, and $H'' (t,x)$ is positive definite
+everywhere. Then there is a sequence $x_{k}$, $k\in \bbbn$, of
+$kT$-periodic solutions of the system
+\begin{equation}
+  \dot{x} = JH' (t,x)
+\end{equation}
+such that, for every $k\in \bbbn$, there is some $p_{o}\in\bbbn$ with:
+\begin{equation}
+  p\ge p_{o}\Rightarrow x_{pk} \ne x_{k}\ .
+\end{equation}
+\qed
+\end{theorem}
+%
+\begin{example} [{{\rm External forcing}}]
+Consider the system:
+\begin{equation}
+  \dot{x} = JH' (x) + f(t)
+\end{equation}
+where the Hamiltonian $H$ is
+$\left(0,b_{\infty}\right)$-subquadratic, and the
+forcing term is a distribution on the circle:
+\begin{equation}
+  f = \frac{d}{dt} F + f_{o}\ \ \ \ \
+  {\rm with}\ \ F\in L^{2} \left(\bbbr / T\bbbz; \bbbr^{2n}\right)\ ,
+\end{equation}
+where $f_{o} : = T^{-1}\int_{o}^{T} f (t) dt$. For instance,
+\begin{equation}
+  f (t) = \sum_{k\in \bbbn} \delta_{k} \xi\ ,
+\end{equation}
+where $\delta_{k}$ is the Dirac mass at $t= k$ and
+$\xi \in \bbbr^{2n}$ is a
+constant, fits the prescription. This means that the system
+$\dot{x} = JH' (x)$ is being excited by a
+series of identical shocks at interval $T$.
+\end{example}
+%
+\begin{definition}
+Let $A_{\infty} (t)$ and $B_{\infty} (t)$ be symmetric
+operators in $\bbbr^{2n}$, depending continuously on
+$t\in [0,T]$, such that
+$A_{\infty} (t) \le B_{\infty} (t)$ for all $t$.
+
+A Borelian function
+$H: [0,T]\times \bbbr^{2n} \to \bbbr$
+is called
+$\left(A_{\infty} ,B_{\infty}\right)$-{\it subquadratic at infinity}
+if there exists a function $N(t,x)$ such that:
+\begin{equation}
+  H (t,x) = \frac{1}{2} \left(A_{\infty} (t) x,x\right) + N(t,x)
+\end{equation}
+\begin{equation}
+  \forall t\ ,\ \ \ N(t,x)\ \ \ \ \
+  {\rm is\ convex\ with\  respect\  to}\ \ x
+\end{equation}
+\begin{equation}
+  N(t,x) \ge n\left(\left\|x\right\|\right)\ \ \ \ \
+  {\rm with}\ \ n(s)s^{-1}\to +\infty\ \ {\rm as}\ \ s\to +\infty
+\end{equation}
+\begin{equation}
+  \exists c\in \bbbr\ :\ \ \ H (t,x) \le
+  \frac{1}{2} \left(B_{\infty} (t) x,x\right) + c\ \ \ \forall x\ .
+\end{equation}
+
+If $A_{\infty} (t) = a_{\infty} I$ and
+$B_{\infty} (t) = b_{\infty} I$, with
+$a_{\infty} \le b_{\infty} \in \bbbr$,
+we shall say that $H$ is
+$\left(a_{\infty},b_{\infty}\right)$-subquadratic
+at infinity. As an example, the function
+$\left\|x\right\|^{\alpha}$, with
+$1\le \alpha < 2$, is $(0,\varepsilon )$-subquadratic at infinity
+for every $\varepsilon > 0$. Similarly, the Hamiltonian
+\begin{equation}
+H (t,x) = \frac{1}{2} k \left\|k\right\|^{2} +\left\|x\right\|^{\alpha}
+\end{equation}
+is $(k,k+\varepsilon )$-subquadratic for every $\varepsilon > 0$.
+Note that, if $k<0$, it is not convex.
+\end{definition}
+%
+
+\paragraph{Notes and Comments.}
+The first results on subharmonics were
+obtained by Rabinowitz in \cite{rab}, who showed the existence of
+infinitely many subharmonics both in the subquadratic and superquadratic
+case, with suitable growth conditions on $H'$. Again the duality
+approach enabled Clarke and Ekeland in \cite{clar:eke:2} to treat the
+same problem in the convex-subquadratic case, with growth conditions on
+$H$ only.
+
+Recently, Michalek and Tarantello (see \cite{mich:tar} and \cite{tar})
+have obtained lower bound on the number of subharmonics of period $kT$,
+based on symmetry considerations and on pinching estimates, as in
+Sect.~5.2 of this article.
+
+%
+% ---- Bibliography ----
+%
+\begin{thebibliography}{5}
+%
+\bibitem {clar:eke}
+Clarke, F., Ekeland, I.:
+Nonlinear oscillations and
+boundary-value problems for Hamiltonian systems.
+Arch. Rat. Mech. Anal. {\bf 78} (1982) 315--333
+
+\bibitem {clar:eke:2}
+Clarke, F., Ekeland, I.:
+Solutions p\'{e}riodiques, du
+p\'{e}riode donn\'{e}e, des \'{e}quations hamiltoniennes.
+Note CRAS Paris {\bf 287} (1978) 1013--1015
+
+\bibitem {mich:tar}
+Michalek, R., Tarantello, G.:
+Subharmonic solutions with prescribed minimal
+period for nonautonomous Hamiltonian systems.
+J. Diff. Eq. {\bf 72} (1988) 28--55
+
+\bibitem {tar}
+Tarantello, G.:
+Subharmonic solutions for Hamiltonian
+systems via a $\bbbz_{p}$ pseudoindex theory.
+Annali di Matematica Pura (to appear)
+
+\bibitem {rab}
+Rabinowitz, P.:
+On subharmonic solutions of a Hamiltonian system.
+Comm. Pure Appl. Math. {\bf 33} (1980) 609--633
+
+\end{thebibliography}
+
+%
+% second contribution with nearly identical text,
+% slightly changed contribution head (all entries
+% appear as defaults), and modified bibliography
+%
+\title{Hamiltonian Mechanics2}
+
+\author{Ivar Ekeland\inst{1} \and Roger Temam\inst{2}}
+
+\institute{Princeton University, Princeton NJ 08544, USA
+\and
+Universit\'{e} de Paris-Sud,
+Laboratoire d'Analyse Num\'{e}rique, B\^{a}timent 425,\\
+F-91405 Orsay Cedex, France}
+
+\maketitle
+%
+% Modify the bibliography environment to call for the author-year
+% system. This is done normally with the citeauthoryear option
+% for a particular contribution.
+\makeatletter
+\renewenvironment{thebibliography}[1]
+     {\section*{\refname}
+      \small
+      \list{}%
+           {\settowidth\labelwidth{}%
+            \leftmargin\parindent
+            \itemindent=-\parindent
+            \labelsep=\z@
+            address@hidden
+              \advance\leftmargin\bibindent
+              \itemindent -\bibindent
+              \listparindent \itemindent
+              \parsep \z@
+            \fi
+            \usecounter{enumiv}%
+            address@hidden@empty
+            \renewcommand\theenumiv{}}%
+      address@hidden
+        \renewcommand\newblock{\par}%
+      \else
+        \renewcommand\newblock{\hskip .11em address@hidden address@hidden
+      \fi
+      \sloppy\clubpenalty4000\widowpenalty4000%
+      address@hidden
+     address@hidden
+       address@hidden@warning{Empty `thebibliography' environment}}%
+      \endlist}
+      address@hidden
+      address@hidden@filesw
+        {\def\protect##1{\string ##1\space}\immediate
+      address@hidden
+\makeatother
+%
+\begin{abstract}
+The abstract should summarize the contents of the paper
+using at least 70 and at most 150 words. It will be set in 9-point
+font size and be inset 1.0 cm from the right and left margins.
+There will be two blank lines before and after the Abstract. \dots
+\end{abstract}
+%
+\section{Fixed-Period Problems: The Sublinear Case}
+%
+With this chapter, the preliminaries are over, and we begin the search
+for periodic solutions to Hamiltonian systems. All this will be done in
+the convex case; that is, we shall study the boundary-value problem
+\begin{eqnarray*}
+  \dot{x}&=&JH' (t,x)\\
+  x(0) &=& x(T)
+\end{eqnarray*}
+with $H(t,\cdot)$ a convex function of $x$, going to $+\infty$ when
+$\left\|x\right\| \to \infty$.
+
+%
+\subsection{Autonomous Systems}
+%
+In this section, we will consider the case when the Hamiltonian $H(x)$
+is autonomous. For the sake of simplicity, we shall also assume that it
+is $C^{1}$.
+
+We shall first consider the question of nontriviality, within the
+general framework of
+$\left(A_{\infty},B_{\infty}\right)$-subquadratic Hamiltonians. In
+the second subsection, we shall look into the special case when $H$ is
+$\left(0,b_{\infty}\right)$-subquadratic,
+and we shall try to derive additional information.
+%
+\subsubsection{The General Case: Nontriviality.}
+%
+We assume that $H$ is
+$\left(A_{\infty},B_{\infty}\right)$-sub\-qua\-dra\-tic at infinity,
+for some constant symmetric matrices $A_{\infty}$ and $B_{\infty}$,
+with $B_{\infty}-A_{\infty}$ positive definite. Set:
+\begin{eqnarray}
+\gamma :&=&{\rm smallest\ eigenvalue\ of}\ \ B_{\infty} - A_{\infty} \\
+  \lambda : &=& {\rm largest\ negative\ eigenvalue\ of}\ \
+  J \frac{d}{dt} +A_{\infty}\ .
+\end{eqnarray}
+
+Theorem 21 tells us that if $\lambda +\gamma < 0$, the boundary-value
+problem:
+\begin{equation}
+\begin{array}{rcl}
+  \dot{x}&=&JH' (x)\\
+  x(0)&=&x (T)
+\end{array}
+\end{equation}
+has at least one solution
+$\overline{x}$, which is found by minimizing the dual
+action functional:
+\begin{equation}
+  \psi (u) = \int_{o}^{T} \left[\frac{1}{2}
+  \left(\Lambda_{o}^{-1} u,u\right) + N^{\ast} (-u)\right] dt
+\end{equation}
+on the range of $\Lambda$, which is a subspace $R (\Lambda)_{L}^{2}$
+with finite codimension. Here
+\begin{equation}
+  N(x) := H(x) - \frac{1}{2} \left(A_{\infty} x,x\right)
+\end{equation}
+is a convex function, and
+\begin{equation}
+  N(x) \le \frac{1}{2}
+  \left(\left(B_{\infty} - A_{\infty}\right) x,x\right)
+  + c\ \ \ \forall x\ .
+\end{equation}
+
+%
+\begin{proposition}
+Assume $H'(0)=0$ and $ H(0)=0$. Set:
+\begin{equation}
+  \delta := \liminf_{x\to 0} 2 N (x) \left\|x\right\|^{-2}\ .
+  \label{2eq:one}
+\end{equation}
+
+If $\gamma < - \lambda < \delta$,
+the solution $\overline{u}$ is non-zero:
+\begin{equation}
+  \overline{x} (t) \ne 0\ \ \ \forall t\ .
+\end{equation}
+\end{proposition}
+%
+\begin{proof}
+Condition (\ref{2eq:one}) means that, for every
+$\delta ' > \delta$, there is some $\varepsilon > 0$ such that
+\begin{equation}
+  \left\|x\right\| \le \varepsilon \Rightarrow N (x) \le
+  \frac{\delta '}{2} \left\|x\right\|^{2}\ .
+\end{equation}
+
+It is an exercise in convex analysis, into which we shall not go, to
+show that this implies that there is an $\eta > 0$ such that
+\begin{equation}
+  f\left\|x\right\| \le \eta
+  \Rightarrow N^{\ast} (y) \le \frac{1}{2\delta '}
+  \left\|y\right\|^{2}\ .
+  \label{2eq:two}
+\end{equation}
+
+\begin{figure}
+\vspace{2.5cm}
+\caption{This is the caption of the figure displaying a white eagle and
+a white horse on a snow field}
+\end{figure}
+
+Since $u_{1}$ is a smooth function, we will have
+$\left\|hu_{1}\right\|_\infty \le \eta$
+for $h$ small enough, and inequality (\ref{2eq:two}) will hold,
+yielding thereby:
+\begin{equation}
+  \psi (hu_{1}) \le \frac{h^{2}}{2}
+  \frac{1}{\lambda} \left\|u_{1} \right\|_{2}^{2} + \frac{h^{2}}{2}
+  \frac{1}{\delta '} \left\|u_{1}\right\|^{2}\ .
+\end{equation}
+
+If we choose $\delta '$ close enough to $\delta$, the quantity
+$\left(\frac{1}{\lambda} + \frac{1}{\delta '}\right)$
+will be negative, and we end up with
+\begin{equation}
+  \psi (hu_{1}) < 0\ \ \ \ \ {\rm for}\ \ h\ne 0\ \ {\rm small}\ .
+\end{equation}
+
+On the other hand, we check directly that $\psi (0) = 0$. This shows
+that 0 cannot be a minimizer of $\psi$, not even a local one.
+So $\overline{u} \ne 0$ and
+$\overline{u} \ne \Lambda_{o}^{-1} (0) = 0$. \qed
+\end{proof}
+%
+\begin{corollary}
+Assume $H$ is $C^{2}$ and
+$\left(a_{\infty},b_{\infty}\right)$-subquadratic at infinity. Let
+$\xi_{1},\allowbreak\dots,\allowbreak\xi_{N}$  be the
+equilibria, that is, the solutions of $H' (\xi ) = 0$.
+Denote by $\omega_{k}$
+the smallest eigenvalue of $H'' \left(\xi_{k}\right)$, and set:
+\begin{equation}
+  \omega : = {\rm Min\,} \left\{\omega_{1},\dots,\omega_{k}\right\}\ .
+\end{equation}
+If:
+\begin{equation}
+  \frac{T}{2\pi} b_{\infty} <
+  - E \left[- \frac{T}{2\pi}a_{\infty}\right] <
+  \frac{T}{2\pi}\omega
+  \label{2eq:three}
+\end{equation}
+then minimization of $\psi$ yields a non-constant $T$-periodic solution
+$\overline{x}$.
+\end{corollary}
+%
+
+We recall once more that by the integer part $E [\alpha ]$ of
+$\alpha \in \bbbr$, we mean the $a\in \bbbz$
+such that $a< \alpha \le a+1$. For instance,
+if we take $a_{\infty} = 0$, Corollary 2 tells
+us that $\overline{x}$ exists and is
+non-constant provided that:
+
+\begin{equation}
+  \frac{T}{2\pi} b_{\infty} < 1 < \frac{T}{2\pi}
+\end{equation}
+or
+\begin{equation}
+  T\in \left(\frac{2\pi}{\omega},\frac{2\pi}{b_{\infty}}\right)\ .
+  \label{2eq:four}
+\end{equation}
+
+%
+\begin{proof}
+The spectrum of $\Lambda$ is $\frac{2\pi}{T} \bbbz +a_{\infty}$. The
+largest negative eigenvalue $\lambda$ is given by
+$\frac{2\pi}{T}k_{o} +a_{\infty}$,
+where
+\begin{equation}
+  \frac{2\pi}{T}k_{o} + a_{\infty} < 0
+  \le \frac{2\pi}{T} (k_{o} +1) + a_{\infty}\ .
+\end{equation}
+Hence:
+\begin{equation}
+  k_{o} = E \left[- \frac{T}{2\pi} a_{\infty}\right] \ .
+\end{equation}
+
+The condition $\gamma < -\lambda < \delta$ now becomes:
+\begin{equation}
+  b_{\infty} - a_{\infty} <
+  - \frac{2\pi}{T} k_{o} -a_{\infty} < \omega -a_{\infty}
+\end{equation}
+which is precisely condition (\ref{2eq:three}).\qed
+\end{proof}
+%
+
+\begin{lemma}
+Assume that $H$ is $C^{2}$ on $\bbbr^{2n} \setminus \{ 0\}$ and
+that $H'' (x)$ is non-de\-gen\-er\-ate for any $x\ne 0$. Then any local
+minimizer $\widetilde{x}$ of $\psi$ has minimal period $T$.
+\end{lemma}
+%
+\begin{proof}
+We know that $\widetilde{x}$, or
+$\widetilde{x} + \xi$ for some constant $\xi
+\in \bbbr^{2n}$, is a $T$-periodic solution of the Hamiltonian system:
+\begin{equation}
+  \dot{x} = JH' (x)\ .
+\end{equation}
+
+There is no loss of generality in taking $\xi = 0$. So
+$\psi (x) \ge \psi (\widetilde{x} )$
+for all $\widetilde{x}$ in some neighbourhood of $x$ in
+$W^{1,2} \left(\bbbr / T\bbbz ; \bbbr^{2n}\right)$.
+
+But this index is precisely the index
+$i_{T} (\widetilde{x} )$ of the $T$-periodic
+solution $\widetilde{x}$ over the interval
+$(0,T)$, as defined in Sect.~2.6. So
+\begin{equation}
+  i_{T} (\widetilde{x} ) = 0\ .
+  \label{2eq:five}
+\end{equation}
+
+Now if $\widetilde{x}$ has a lower period, $T/k$ say,
+we would have, by Corollary 31:
+\begin{equation}
+  i_{T} (\widetilde{x} ) =
+  i_{kT/k}(\widetilde{x} ) \ge
+  ki_{T/k} (\widetilde{x} ) + k-1 \ge k-1 \ge 1\ .
+\end{equation}
+
+This would contradict (\ref{2eq:five}), and thus cannot happen.\qed
+\end{proof}
+%
+\paragraph{Notes and Comments.}
+The results in this section are a
+refined version of \cite{2clar:eke};
+the minimality result of Proposition
+14 was the first of its kind.
+
+To understand the nontriviality conditions, such as the one in formula
+(\ref{2eq:four}), one may think of a one-parameter family
+$x_{T}$, $T\in \left(2\pi\omega^{-1}, 2\pi b_{\infty}^{-1}\right)$
+of periodic solutions, $x_{T} (0) = x_{T} (T)$,
+with $x_{T}$ going away to infinity when $T\to 2\pi \omega^{-1}$,
+which is the period of the linearized system at 0.
+
+\begin{table}
+\caption{This is the example table taken out of {\it The
+\TeX{}book,} p.\,246}
+\begin{center}
address@hidden
+\hline
+\multicolumn{1}{l}{\rule{0pt}{12pt}
+                   Year}&\multicolumn{2}{l}{World population}\\[2pt]
+\hline\rule{0pt}{12pt}
+8000 B.C.  &     5,000,000& \\
+  50 A.D.  &   200,000,000& \\
+1650 A.D.  &   500,000,000& \\
+1945 A.D.  & 2,300,000,000& \\
+1980 A.D.  & 4,400,000,000& \\[2pt]
+\hline
+\end{tabular}
+\end{center}
+\end{table}
+%
+\begin{theorem} [Ghoussoub-Preiss]
+Assume $H(t,x)$ is
+$(0,\varepsilon )$-subquadratic at
+infinity for all $\varepsilon > 0$, and $T$-periodic in $t$
+\begin{equation}
+  H (t,\cdot )\ \ \ \ \ {\rm is\ convex}\ \ \forall t
+\end{equation}
+\begin{equation}
+  H (\cdot ,x)\ \ \ \ \ {\rm is}\ \ T{\rm -periodic}\ \ \forall x
+\end{equation}
+\begin{equation}
+  H (t,x)\ge n\left(\left\|x\right\|\right)\ \ \ \ \
+  {\rm with}\ \ n (s)s^{-1}\to \infty\ \ {\rm as}\ \ s\to \infty
+\end{equation}
+\begin{equation}
+  \forall \varepsilon > 0\ ,\ \ \ \exists c\ :\
+  H(t,x) \le \frac{\varepsilon}{2}\left\|x\right\|^{2} + c\ .
+\end{equation}
+
+Assume also that $H$ is $C^{2}$, and $H'' (t,x)$ is positive definite
+everywhere. Then there is a sequence $x_{k}$, $k\in \bbbn$, of
+$kT$-periodic solutions of the system
+\begin{equation}
+  \dot{x} = JH' (t,x)
+\end{equation}
+such that, for every $k\in \bbbn$, there is some $p_{o}\in\bbbn$ with:
+\begin{equation}
+  p\ge p_{o}\Rightarrow x_{pk} \ne x_{k}\ .
+\end{equation}
+\qed
+\end{theorem}
+%
+\begin{example} [{{\rm External forcing}}]
+Consider the system:
+\begin{equation}
+  \dot{x} = JH' (x) + f(t)
+\end{equation}
+where the Hamiltonian $H$ is
+$\left(0,b_{\infty}\right)$-subquadratic, and the
+forcing term is a distribution on the circle:
+\begin{equation}
+  f = \frac{d}{dt} F + f_{o}\ \ \ \ \
+  {\rm with}\ \ F\in L^{2} \left(\bbbr / T\bbbz; \bbbr^{2n}\right)\ ,
+\end{equation}
+where $f_{o} : = T^{-1}\int_{o}^{T} f (t) dt$. For instance,
+\begin{equation}
+  f (t) = \sum_{k\in \bbbn} \delta_{k} \xi\ ,
+\end{equation}
+where $\delta_{k}$ is the Dirac mass at $t= k$ and
+$\xi \in \bbbr^{2n}$ is a
+constant, fits the prescription. This means that the system
+$\dot{x} = JH' (x)$ is being excited by a
+series of identical shocks at interval $T$.
+\end{example}
+%
+\begin{definition}
+Let $A_{\infty} (t)$ and $B_{\infty} (t)$ be symmetric
+operators in $\bbbr^{2n}$, depending continuously on
+$t\in [0,T]$, such that
+$A_{\infty} (t) \le B_{\infty} (t)$ for all $t$.
+
+A Borelian function
+$H: [0,T]\times \bbbr^{2n} \to \bbbr$
+is called
+$\left(A_{\infty} ,B_{\infty}\right)$-{\it subquadratic at infinity}
+if there exists a function $N(t,x)$ such that:
+\begin{equation}
+  H (t,x) = \frac{1}{2} \left(A_{\infty} (t) x,x\right) + N(t,x)
+\end{equation}
+\begin{equation}
+  \forall t\ ,\ \ \ N(t,x)\ \ \ \ \
+  {\rm is\ convex\ with\  respect\  to}\ \ x
+\end{equation}
+\begin{equation}
+  N(t,x) \ge n\left(\left\|x\right\|\right)\ \ \ \ \
+  {\rm with}\ \ n(s)s^{-1}\to +\infty\ \ {\rm as}\ \ s\to +\infty
+\end{equation}
+\begin{equation}
+  \exists c\in \bbbr\ :\ \ \ H (t,x) \le
+  \frac{1}{2} \left(B_{\infty} (t) x,x\right) + c\ \ \ \forall x\ .
+\end{equation}
+
+If $A_{\infty} (t) = a_{\infty} I$ and
+$B_{\infty} (t) = b_{\infty} I$, with
+$a_{\infty} \le b_{\infty} \in \bbbr$,
+we shall say that $H$ is
+$\left(a_{\infty},b_{\infty}\right)$-subquadratic
+at infinity. As an example, the function
+$\left\|x\right\|^{\alpha}$, with
+$1\le \alpha < 2$, is $(0,\varepsilon )$-subquadratic at infinity
+for every $\varepsilon > 0$. Similarly, the Hamiltonian
+\begin{equation}
+H (t,x) = \frac{1}{2} k \left\|k\right\|^{2} +\left\|x\right\|^{\alpha}
+\end{equation}
+is $(k,k+\varepsilon )$-subquadratic for every $\varepsilon > 0$.
+Note that, if $k<0$, it is not convex.
+\end{definition}
+%
+
+\paragraph{Notes and Comments.}
+The first results on subharmonics were
+obtained by Rabinowitz in \cite{2rab}, who showed the existence of
+infinitely many subharmonics both in the subquadratic and superquadratic
+case, with suitable growth conditions on $H'$. Again the duality
+approach enabled Clarke and Ekeland in \cite{2clar:eke:2} to treat the
+same problem in the convex-subquadratic case, with growth conditions on
+$H$ only.
+
+Recently, Michalek and Tarantello (see Michalek, R., Tarantello, G.
+\cite{2mich:tar} and Tarantello, G. \cite{2tar}) have obtained lower
+bound on the number of subharmonics of period $kT$, based on symmetry
+considerations and on pinching estimates, as in Sect.~5.2 of this
+article.
+
+%
+% ---- Bibliography ----
+%
+\begin{thebibliography}{}
+%
+\bibitem[1980]{2clar:eke}
+Clarke, F., Ekeland, I.:
+Nonlinear oscillations and
+boundary-value problems for Hamiltonian systems.
+Arch. Rat. Mech. Anal. {\bf 78} (1982) 315--333
+
+\bibitem[1981]{2clar:eke:2}
+Clarke, F., Ekeland, I.:
+Solutions p\'{e}riodiques, du
+p\'{e}riode donn\'{e}e, des \'{e}quations hamiltoniennes.
+Note CRAS Paris {\bf 287} (1978) 1013--1015
+
+\bibitem[1982]{2mich:tar}
+Michalek, R., Tarantello, G.:
+Subharmonic solutions with prescribed minimal
+period for nonautonomous Hamiltonian systems.
+J. Diff. Eq. {\bf 72} (1988) 28--55
+
+\bibitem[1983]{2tar}
+Tarantello, G.:
+Subharmonic solutions for Hamiltonian
+systems via a $\bbbz_{p}$ pseudoindex theory.
+Annali di Matematica Pura (to appear)
+
+\bibitem[1985]{2rab}
+Rabinowitz, P.:
+On subharmonic solutions of a Hamiltonian system.
+Comm. Pure Appl. Math. {\bf 33} (1980) 609--633
+
+\end{thebibliography}
+\clearpage
+\addtocmark[2]{Author Index} % additional numbered TOC entry
+\renewcommand{\indexname}{Author Index}
+\printindex
+\clearpage
+\addtocmark[2]{Subject Index} % additional numbered TOC entry
+\markboth{Subject Index}{Subject Index}
+\renewcommand{\indexname}{Subject Index}
+\input{subjidx.ind}
+\end{document}

Added: GNUnet-docs/papers/ecrs/lncs_style.tex
===================================================================
--- GNUnet-docs/papers/ecrs/lncs_style.tex      2005-05-31 19:10:35 UTC (rev 
832)
+++ GNUnet-docs/papers/ecrs/lncs_style.tex      2005-05-31 19:27:19 UTC (rev 
833)
@@ -0,0 +1,1356 @@
+% ACM
+% \documentclass{acmtrans2m}
+% LNCS
+\documentclass[runningheads]{llncs}
+% without page numbers:
+%\documentclass{llncs}
+% without page numbers: change the line \pagestyle{headings} to
+%\pagestyle{empty}.
+
+\input{psfig.sty}
+\usepackage[ansinew]{inputenc}
+\usepackage{makeidx,amsmath,amssymb,exscale,multicol,epsfig,graphics,verbatim,float}
+
+\begin{document}
+
+% todo:
+% - update pictures with merkle tree/CHK
+%   [Krista still is unhappy with the current pictures, CG is not sure
+%    how to do better]
+%
+% Annoying grammar/style notes:
+% - try to avoid the use of ``encoding'' as a noun on its own. ``encoding
+%   scheme'' or ``encoding mechanism'' is better.
+
+%\pagestyle{headings}
+%\pagestyle{empty}
+%\mainmatter
+
+\title{An Encoding for Censorship-Resistant Sharing}
+
+
+% ACM:
+%\author{Krista Bennett and Christian Grothoff \\ Purdue University 
+%        \and Tzvetan Horozov \\ Motorola Labs 
+%        \and J.T. Lindgren \\ University of Helsinki}
+%\terms{Security, Reliability, Verification}
+%\keywords{Searching, encryption, encoding, distribution, sharing, censorship}
+%\markboth{K. Bennett, C. Grothoff, T. Horozov, J.T. Lindgren}{An Encoding for 
Censorship-Resistant Sharing}
+
+%\category{H.3.3}{Information Systems}{Information Storage and 
Retrieval}[Information Search and Retrieval]
+%\category{H.3.4}{Information Systems}{Information Storage and 
Retrieval}{Systems and Software}[Distributed systems]
+% -- how to specify multiple categories??
+
+\author{Krista Bennett\inst{1} Christian Grothoff\inst{2} Tzvetan 
Horozov\inst{3} \and J.T. Lindgren\inst{4}}
+
+% LNCS
+\authorrunning{K. Bennett, C. Grothoff, T. Horozov, J.T. Lindgren}
+\institute{
+  CERIAS / Interdepartmental Program in Linguistics, Purdue University, USA \\
+ address@hidden 
+\and
+  S$^3$ lab, Department of Computer Sciences, Purdue University, USA \\
+  address@hidden 
+\and
+  Motorola Labs, USA \\
+ address@hidden 
+\and
+  Department of Computer Science, University of Helsinki, Finland \\
+  address@hidden \\
+\vspace{0.4cm}
+ \texttt{http://www.gnu.org/software/GNUnet/} \\
+ address@hidden
+
+
+\maketitle
+
+
+\begin{abstract} 
+  
+  This paper describes ECRS, a content encoding scheme for
+  censor\-ship-resistant peer-to-peer networking.  The proposed
+  encoding mechanism supports both efficient dissemination of
+  encrypted data as well as encrypted queries over this data.
+  Intermediaries can verify that an encrypted response matches an
+  encrypted reply without being able to decrypt either.  Furthermore,
+  our encoding allows users to share files encrypted under descriptive
+  keys which are the basis for querying the network for content.  With
+  the proposed scheme, effective load balancing and swarm distribution
+  are possible. The encoding mechanism handles data in small chunks,
+  which can even be efficiently encoded on demand from the plaintext.
+  We also show how spam-resistant publishing and content updating can
+  be realized on top of the encoding scheme, with the limitation that
+  the pseudonym of the publisher must be known in order to perform
+  queries. The proposed encoding is conceptually simple and easy to
+  implement.  We have developed this encoding scheme on top of {\sc
+    gnu}net, a framework for secure peer-to-peer networking.
+
+\end{abstract}
+
+
+
+
+\section{Introduction}
+
+% censorship 
+Internet censorship is a powerful weapon for oppressive governments,
+corporations and pressure groups in stifling dissent and suppressing
+dissemination of information.  A variety of techniques can be used to
+censor online information; hard drives can be confiscated and
+searched, traffic can be filtered, and denial of service attacks can
+be performed against servers.  In addition to these technical
+measures, individuals can be singled out and subjected to harassment.
+A common requirement for all forms of censorship is the ability to
+recognize and locate the objectionable information.
+
+% the big goal of GNUnet
+Our goal is to design a censorship-resistant, anonymous file-sharing 
+protocol that protects against all attempts to limit the free flow 
+of information.  This goal can be partially realized by making it
+infeasible to detect, pinpoint or remove information from the network.
+
+% the small goal of ECRS
+In this context, we propose ECRS, a novel method for encoding
+content.  ECRS allows both content and queries to be encrypted while
+being transmitted or stored on the network.  This ensures that servers
+as well as all intermediate peers are oblivious of the data they are
+actually handling, reducing the chance that they can be singled out
+for an attack or held liable in a court of law.  Note that taking
+legal action is yet another effective method of censorship available
+to adversaries, regardless of the actual legality of the users'
+actions.
+
+% non-goals
+As a content encoding mechanism, ECRS could be integrated into almost
+any generic peer-to-peer infrastructure to enhance its resistance to
+censorship.  We have implemented ECRS in {\sc gnu}net, a secure 
+peer-to-peer networking framework.  System-specific
+details on how peers communicate and route data are outside the scope
+of this paper.  Other important aspects
+of censorship-resistant networking such as peer discovery, resource
+allocation and anonymous routing have been addressed in companion
+papers \cite{gap,gnunettransport,ebe2003} with reference to the {\sc gnu}net
+framework.
+
+% motivation, achieved design goals 
+We have designed the encoding system to suit a diverse wide area network
+where many parties want to share data. In such an environment, the
+peers have varying capabilities and resources, and the usage profiles
+and requirements of users are similarly diverse.  Thus, the encoding
+mechanism must operate in a {\em decentralized} and {\em heterogeneous}
+world and should not prevent peers with small resources from
+participating in the network.  Aside from overall scalability, two
+important issues arise.  First of all, users must be able to insert
+and retrieve data with natural language keywords.  Metadata related to
+the contents of the file must be efficiently accessible regardless of
+the actual file size.  Secondly, identical data can be inserted by
+many independent parties at any time and without any communication
+between these parties.  If the network is to utilize its resources
+effectively, the encoding should always result in identical encodings
+for identical source files, regardless of the keywords used.  Because we
+can guarantee this using ECRS, the duplication in the network caused by 
+multiple insertions of the same file effectively becomes a
+method of increasing fault-tolerance and availability.
+
+% why is this hard? open network == adversaries playground
+Unfortunately, it is not enough to just meet requirements related to
+efficient storage and indexing of the content.  A public filesharing
+network should be open to new participants without any form of access
+control.  While this makes it easy for new users to
+join the network, it opens the network to malicious participants.  Thus,
+encoding scheme should guarantee the {\em integrity} of the content
+despite the presence of malicious participants.  
+
+Attackers may try to insert arbitrary quantities of useless content
+into the network.  And while network denial of service attacks must be 
+handled by the protocol, the encoding mechanism must 
+try to ensure that invalid replies are detected and that peers can 
+{\em distinguish} valuable content from maliciously generated noise.  
+Since peers have bounded storage, attackers may attempt to replace 
+a peer's valuable stored content by causing undesirable or even 
+invalid data to migrate to that peer.  While the value of content 
+can only be determined by a system-specific high-level economic 
+model (like \cite{ebe2003}), the encoding mechanism must allow 
+the system to {\em discriminate} against individual content 
+without losing other data.  
+% FIXME? : I think its not easy to understand the last statement above,
+% maybe because of phrasing. If it hints at tangler, the point is 
+% not very good at this location without explanation. :( -JL
+% btw, I'd say "handled by the peer-to-peer protocol" above,
+% but it messes up the figures with the current amount of words.
+
+In addition to polluting the network with malicious content, an
+adversary may try to pollute the network with inappropriate metadata.
+Since the encoding scheme cannot determine whether or not metadata
+applies to certain content on a semantic level, it must support
+constructs such as directories and namespaces.  These constructs,
+which do require some level of understanding from end-users, can be
+deployed to limit this type of abuse since they allow clustering of
+appropriate and inappropriate metadata-content associations.
+
+% now some meat
+ECRS uses two fundamental primitives in the overall encoding.  The
+majority of the content in the network is CHK-encoded
+\cite{clark99distributed}.  CHK stands for Content Hash Key; in other
+words, the content is encrypted with a key that is derived from a
+cryptographic hash of the plaintext.  The encrypted content is hashed
+again to obtain the query which is used to request the content.
+This key-query pair is what the receiver needs to download and decrypt
+the content.  The second primitive is novel, called triple-hash.  The
+triple-hash encoding is used in order to allow users to securely
+obtain the key-query pair starting with a natural language keyword
+selected by the content provider.
+
+ECRS never subjects entire intact files to the CHK encoding.
+Instead, files are split into blocks of one kilobyte in size which can 
+then be individually distributed (and replicated if need be) across peers in
+the network to balance the load.  These blocks can be individually
+identified by a query, encrypted, decrypted and verified.
+Verification of an encrypted block is accomplished by checking that it matches 
+a given query.  This verification only requires the encrypted block and the
+query; it does not reveal the key required to decrypt the block.
+ECRS guarantees that it is hard to forge a response that passes
+verification for a given query.  Splitting files into small blocks
+allows ECRS to detect data corruption on a fine-grained level.
+Malicious peers can not transmit more than 1k of invalid data before
+being detected.
+
+% spec: 1119 kbps insertion speed for 1.1 MB MP3 test-file
+% spec: 828.9 kbps download speed for 1.1 MB MP3 test-file
+Documents can be inserted under multiple keys at a minimal cost in
+space.  Users can perform boolean searches of the form {\tt a AND b}
+which then return the documents which were inserted under a matching
+set of keywords.  Before the download, the user can refine the search
+results using the metadata associated with the file.  Encoding and
+decoding time are dominated by input-output operations.  For local
+operations with a hot disk-cache on a modern processor, speeds of
+about one megabyte per second can be achieved for both encoding and
+decoding.
+
+% organization
+The rest of the paper is organized as follows.  Section~\ref{related}
+contrasts the current work with mechanisms used in other
+censorship-resistant systems.  Section~\ref{content} describes the
+properties of the ECRS encoding scheme.  Section~\ref{extensions}
+details some extensions to the basic scheme.  Finally,
+section~\ref{discussion} describes attacks against ECRS.
+
+% previous version
+This is a revised version of a paper \cite{esed} which was first
+published at ACISP 2001.  Since then, the encoding scheme has been revised to
+address additional requirements, improve the security in various
+aspects and meet issues related to a more efficient implementation.
+This paper reflects these changes.
+
+\section{Related Work} \label{related}
+
+A large number of censorship-resistant (or at least
+fault-tolerant) publishing systems have been proposed in recent years
+\cite{anderson96eternity,chen99prototype,clark99distributed,freehaven-berk,feamster-infranet,herlihy87how,waldman2001tangler,pub00}.
+The proposed protocols differ in various aspects unrelated to the
+specifics of the encoding mechanism, such as content replication and the use of
+anonymous or steganographic communication.  Characteristic of all of
+these systems is the use of replication and the need to ensure data
+integrity.  (For an overview of content replication strategies see
+\cite{cohen02replication}.)  The censorship-resistant systems all use
+some form of content encoding to hide the specific content from the
+servers.
+
+
+\subsection{Freenet}
+
+The main content encoding scheme used in Freenet
+\cite{clark99distributed} uses CHKs: the hash of the
+content is used as the key.  Just as with ECRS, other types of keys
+point to content-hash keys.  Freenet has several different types of
+keys.  These different key types are used to allow additional features
+such as content signing, personal namespaces and splitting of content.
+While this encryption scheme yields the same encrypted data for
+independent encryptions, it has some disadvantages.
+
+One drawback of Freenet is that it does not allow direct sharing
+of files from the local drive without encrypting and inserting them
+first.  Thus, if a node operator wishes to keep content directly
+accessible on the host, a local copy of the plaintext must be kept in
+addition to the encrypted content in the Freenet database. 
+
+One way to obtain the CHK key of a file in Freenet is to search a
+private subspace.  A subspace contains a set of CHK keys that have
+been cryptographically signed by the owner of the subspace and placed
+into the subspace under a certain keyword.  The result is called a
+subspace-signed key (SSK).  Given the subspace-prefix and keyword,
+users can obtain the CHK key.  The form of the keywords can be freely
+chosen, allowing for conventions such as dates in the keyword to be
+used for updates (in Freenet's terminology, these are called ``date based 
+redirects'').
+
+In addition to CHK and SSK keys, Freenet supports KSK keys.  A KSK key
+is essentially a CHK key stored under a keyword.  The protocol
+attempts to ensure that there cannot be two different CHK keys
+available in the network under the same keyword.  While collisions for
+KSK keys are supposedly not allowed, the protocol cannot prevent them
+from happening.  If an attacker inserts meaningless data under a
+common keyword, Freenet will preserve that content because it is
+frequently requested.  Subsequently, that keyword can no longer be
+used for any useful data since the peers attempt to enforce the
+no-collisions rule.  Note that the no-collision rule cannot be
+enforced for malicious peers.  For these reasons, the Freenet
+developers consider the use of KSK keys insecure and recommend against
+using them.
+
+As a result, Freenet does not support any type of keyword-based
+search, and the CHK keys must be found by using keyservers or ad-hoc
+applications built upon the basic solution by using incremental
+numbers as parts of keywords in signed namespaces.  The disadvantage
+of keyservers is that they must be maintained if the indexed keys are
+to be kept up-to-date.  Freenet does not seem to use any encryption
+for the data stored under KSK or SKS keys and therefore fails to
+prevent intermediaries from learning the CHK keys (and for KSKs even
+tampering with the CHK keys), making censorship by intermediaries
+easier.
+
+\subsection{Free Haven}
+
+In Free Haven~\cite{freehaven-berk}, documents are split into $n$
+shares which are distributed over a number of servers.  Any $k$ out of
+$n$ shares are sufficient to reconstruct the entire
+document~\cite{rabin89efficient}. % eh, shamir? \cite{shamir}
+ To retrieve a document, the user
+must obtain the key that was used to sign the document from some
+source outside the Free Haven network.  The user then forwards the key
+to the server which encrypts and sends its share of the document.
+
+Shares are encoded with an information dispersal algorithm (IDA).
+Hosts are still able to exercise editorial control over the content
+since the IDA does not prevent hosts from decoding parts of the
+plaintext.  Also, the $k$ out of $n$ share reconstruction scheme does
+not allow reconstruction of a file by mixing shares from independent
+insertions.
+
+The requirement that the users obtain Free Haven keys from other
+sources makes it impossible to search the network.  Furthermore, these
+keys consist of random bits instead of guessable keywords.  While this
+is desirable if content in the network is meant to be accessed only by
+authorized parties, it is a drawback in a system where files are
+intended to be publicly available.
+
+
+\subsection{Mnet and Mojo Nation}
+
+Mnet is the successor of Mojo Nation~\cite{mojotech}, a
+peer-to-peer network that was the first to focus on using economic
+incentives when trading content.  As the descendant of a commercial
+product, Mnet focuses mostly on efficiency and reliability.
+Nevertheless, Mnet encrypts files with AES using a user-supplied key
+seed to allow for privacy.  The file is then broken into shares using
+an erasure code.  Multiple shares are identified with an SHA-1 hash
+and stored in an inode.  The file can be retrieved using the hash of
+the inode and the symmetric encryption key.
+
+The use of whole-file AES encryption and the use of an erasure code
+forces Mnet, just like Freenet, to store a second copy of the entire
+file in the Mnet data store even if the user retains a copy of the
+file in plaintext.  The encoding makes it infeasible to encode parts
+of the file on request.  The free selection of the AES key allows
+independent users to create completely different shares for identical
+files.  Since the encryption of the content is a perfectly independent
+pass over the file, other encodings such as Freenet's and {\sc
+  gnu}net's could be easily extended to include this behavior if
+desired -- without the need to mandate a certain style of AES
+encryption.
+
+
+\subsection{Publius}
+
+Publius \cite{pub00} is a static network that uses Shamir's algorithm
+\cite{shamir} to split the key required to restore stored files
+between the available servers.  The encrypted file is then stored on
+all servers.  The servers cannot decrypt the file as the key is never
+entirely revealed to them.
+
+Publius keys are random strings.  The system does not provide any
+search mechanism and expects the users to obtain the keys from an
+alternate source.  Publius never discards any content and thus assumes
+that disk space is never a limitation.
+
+\subsection{Tangler}
+
+The Tangler network \cite{waldman2001tangler} is a system where new
+content is entangled with old content.  This entanglement introduces a
+dependency that makes it impossible to retrieve a piece of content if
+the other content that it was entangled with is lost.  While this
+makes it impossible to censor specific content without losing
+unrelated content (since the entanglement pairs are chosen randomly),
+this process {\em doubles} the amount of data that must be transported
+by the network.  This scheme fails to address the fact that an adversary may 
+not care about losing other data when attempting to censor content.  Also, 
+nothing prevents the adversary from first
+making a copy of important documents and re-inserting them into the
+system after the censorship operation.
+
+Tangler has some similarities with ECRS.  First, it uses hash trees
+for integrity checks on fixed-size blocks of data.  The major
+difference with ECRS is that the Tangler encoding uses Shamir's secret
+sharing \cite{shamir} to entangle the block with other, pre-existing
+blocks, preferably from other documents.  Another similarity between
+Tangler and ECRS is the existence of cryptographically signed data,
+which Tangler calls collections.  Tangler's collections are
+analogous to directories and namespaces in ECRS.  The major difference
+is that in Tangler, a collection has a versioned root which explicitly
+lists all of the contents in the collection, resulting in one of Tangler's
+global synchronization problems.  Placing a document in an
+ECRS namespace only requires that it be adequately signed.
+
+Furthermore, there is no way to flush outdated or unpopular content
+from the system, resulting in enormously impractical use of storage
+space in the long run.  Since Tangler is not able to distinguish and
+discriminate between different pieces of entangled content it easily
+falls prey to an attack in which an adversary maliciously inserts large
+amounts of useless content.  Tangler's mechanisms to protect against
+this type of attack, such as ejecting misbehaving nodes and limiting
+publishing to the amount of data stored by the publisher, are
+ineffective since nodes can forge new identities and entanglements
+with shares of disappearing nodes cannot be undone.  Thus, in effect,
+Tangler would only be censorship-resistant in the presence of infinite disk
+space.  The Tangler protocol also makes other unreasonable
+assumptions, such as extremely high availability of servers and
+synchronous decisions in a distributed network.  The authors note that
+the network will probably not scale \cite{waldman2001tangler}.
+
+\subsection{Gnutella and FastTrack} % what does DirectConnect do?
+
+% ? are these censorship-resistant? ;) if anything goes, there's lot
+% of choices. -- jtl
+% ! well, they're obviously at least not doing a good job, but that
+%does not mean that they should not be discussed *briefly*.  The
+%problem/attack applies to a whole range of systems and is a good
+% motivation for the merkle tree.  Also, the decentralization of
+% gnutella was one of the reasons why it was heralded as the 
+% ``censorship resistant'' successor of napster... -- cg
+% I agree... they're ``related work'' in that sense, brief mention
+% is fine as long as we keep it brief -- klb
+
+The FastTrack network\footnote{Protocol description from the giFT-FastTrack
+  project is available at
+\vspace{3mm}
+
+\url{http://www.ovmj.org/GNUnet/papers/FAST-TRACK-PROTOCOL}.
+
+\vspace{2mm}
+} and
+modern variants of the Gnutella protocol use the SHA-1 hash code of
+the shared files to uniquely identify files.  The SHA-1 hash codes are
+used to identify two files stored on different peers under different
+names as identical.  The peers can then use this information to
+download the file from multiple sources.  The problem with this
+approach is that the SHA-1 hash codes can only be verified once the
+entire file has been retrieved. To ruin a download, it would suffice
+for a malicious peer to provide just one single invalid block.  The
+presence of the invalid block could only be detected after the entire
+file was retrieved.  Worse, the simplistic SHA-1 approach does not
+give peers any way to identify the invalid block or the malicious
+peer.
+
+Because FastTrack and Gnutella use neither file encryption nor
+anonymous routing to hide the address of either the receiver or the
+sender, they do not technically provide any protection from
+censorship beyond decentralized routing of requests.
+
+
+\subsection{Distributed File Systems}
+
+Various distributed file systems based on a peer-to-peer
+infrastructure have been built in recent years
+\cite{cfs:sosp01,mazieres02building,mazires00sfs,muthitacharoen02ivy,rowstron01storage}.
+These systems typically do not focus on censorship-resistance and
+consequently do not encrypt the contents.  Modern systems like
+\cite{cfs:sosp01,rowstron01storage} route content using distributed
+hash tables \cite{maymounkov02kademlia,stoica01chord} to achieve high
+performance.  Writable distributed file systems typically require
+users to authenticate themselves before being granted access to the
+system by one of the servers \cite{mazires00sfs}.  Our work focuses on
+encrypting shared data while allowing peers to verify the integrity of
+the encrypted data that they are routing.  \cite{mazieres02building}
+addresses a similar problem in which users can detect tampering by the
+(untrusted) server that is storing the data in a setting where
+multiple users are updating the same data.  They achieve what they
+call {\em fork consistency}, a guarantee that if the server passes a
+version that lacks the changes of one client to another client at one
+point in time, it can never again make the changes of either client
+visible to the others.  This is a much weaker guarantee than the
+optimal situation where any misbehavior is detected.  ECRS does not
+allow users with distinct pseudonyms to update the same content
+without essentially creating two files.  This allows ECRS to guarantee
+that servers can never return an invalid result since every copy can
+be uniquely identified at all times.
+
+
+\section{ECRS encoding} \label{content}
+
+The primary requirements for censorship-resistant file-sharing
+protocols are {\it plausible deniability}, {\it robustness} and {\it
+  scalability}.  Plausible deniability describes the ability of all
+the participants to claim ignorance of the nature of transferred
+content.  Robustness is the protocol's ability to resist attacks
+against the overall functionality of the protocol or against any
+particular piece of content.  Finally, scalability is simply the
+measure of the system's real-life usability.  If the overhead of
+locating or transferring the content is too high in practice, the
+other aspects are of little value.
+
+We now turn to describing the ECRS encoding scheme that addresses these
+three problems.  ECRS provides plausible deniability by hiding the
+nature of the queries and responses from intermediaries through
+encryption.\footnote{If the data cannot be identified, no
+  editorial control is technically possible.  In {\em Stratton Oakmont
+    v. Prodigy}, an Internet provider was found liable for hosting a
+  bulletin board on which offensive messages had been posted. This
+  finding resulted because the provider had hired individuals to
+  exercise editorial control over content.  If the provider had merely
+  published messages from users without interference, the provider
+  would potentially not have been held
+  accountable~\cite{stratton_oakmont}.}  Despite the fact that queries
+and responses are encrypted, intermediaries can {\em verify} that
+the responses are valid with respect to a particular query.  Thus, the
+encoding mechanism provides robustness against tampering and false
+replies.  Additional robustness is gained in ECRS by splitting files
+into small pieces that can be {\em independently} verified, stored and
+distributed across the network.  This makes it easy for protocols
+using ECRS to incorporate features such as swarm distribution
+\cite{hartman99swarm}, fine-grained load balancing and microeconomics
+\cite{ebe2003}.  These features are also significant from the
+viewpoint of scalability.  When all handled blocks are small, nodes
+can participate in the network activity even if their own resources
+are limited.  Also, storing small, unintelligible pieces of
+potentially objectionable content is likely to further support
+plausible deniability.  Furthermore, the encoding implementation
+requires a relatively small computational overhead.  The additional
+space requirements are also modest.
+
+
+The rest of this section gives a bottom-up description of ECRS.  In
+part~\ref{splitting} we describe both how files are split into manageable
+small blocks and a structure to reconstruct the original data.
+Part~\ref{dblocks} describes how the blocks are encrypted in order to
+make it impossible for the intermediaries to determine what they are
+storing or serving.  Part~\ref{iblocks} shows how multiple blocks are
+grouped to form the entire file.  Part~\ref{rblocks} describes how the
+user can query for content without exposing the (plaintext) query or
+the corresponding content and how intermediaries can verify that a
+given encrypted reply matches the encrypted query.  Finally, the
+core of ECRS is summarized in the form of an algorithm and a protocol
+example.
+
+\begin{figure*}[t]
+\begin{center}
+\includegraphics[scale=0.55]{simple_gblock.eps}
+\caption{Simple encoding of an entire file with one keyword and no {\em 
SBlocks}.}
+ \label{encodingfile}
+\end{center}
+\end{figure*}
+
+\subsection{Overview} \label{splitting}
+
+In ECRS, the encoded representation of a file is a collection of
+small blocks.  There are four types of blocks: {\em IBlocks}, {\em
+  DBlocks}, {\em RBlocks} and {\em SBlocks}.  The size of all types of
+blocks in ECRS is fixed to 1k.  The blocks are used to create a tree
+structure of the encoded file (see figure~\ref{encodingfile}).  The
+actual file data is encoded in {\em DBlocks} which are organized by a
+tree of {\em IBlocks}.  The {\em IBlocks}, which are similar to UNIX
+inodes \cite{mckusick84fast}, are indirection-blocks which encode how
+the leaf-nodes of the tree can be reassembled into the original file.
+Every {\em IBlock} provides the data required to request, decrypt and
+verify the contents of its direct children.  Verification is done
+using hash codes of the children, similar to the way a Merkle tree
+\cite{merkle89tree} works.  Given the size of the file, the top {\em
+  IBlock} uniquely identifies the contents of the entire file.  {\em
+  RBlocks} and {\em SBlocks} facilitate obtaining the key and query
+for the top {\em IBlock}.
+
+\subsection{{\em DBlocks}} \label{dblocks} % CHK
+
+Every {\em DBlock} corresponds to 1k of the original file (the last
+block may be padded with zeros).  The {\em DBlock} $B_i$ is encrypted
+using a symmetric cipher.  The key for the cipher is $K_i := H(B_i)$
+which guarantees that the same block will always be encrypted with the
+same key $K_i$.  Also, the integrity of the decrypted block can be
+verified by checking that $K_i = H(B_i)$.  The encrypted block
+$E_{K_i}(B_i)$ can be uniquely identified by its hash $Q_i :=
+H(E_{K_i}(B_i))$.  A peer can query for $E_{K_i}(B_i)$ using $Q_i$
+without revealing $K_i$.  Consequently, the pair $(K_i, Q_i)$ can be
+used to retrieve and decrypt $B_i$.  Intermediaries can verify that a
+response $E_{K_i}(B_i)$ matches a query $Q_i$ without knowing $K_i$.
+Freenet \cite{clark99distributed} uses the same scheme to encrypt
+entire files (not just blocks) and the authors call the pair $(K_i,
+Q_i)$ a content hash key (CHK).  Following their terminology, we will
+use $CHK_i := (K_i, Q_i)$.
+
+% ARGH - ok, maybe I'm partial to the original drawings in the first paper
+% for this, but I *hate* this figure - I think it's making a simple
+% concept unnecessarily complicated. But that's just me. - klb
+%
+% klb: if you can provide a neater picture I'd go for it any day. If
+% possible, I vote we force the issue. The current picture is quite 
+% awful imo.
+%
+% -- OK, I modified the picture by updating the picture from the old paper.
+%    I'm not sure it's better, but I am pretty sure it ain't worse :) - klb
+%
+\begin{figure*}[t]
+\begin{center}
+\includegraphics[scale=0.66]{iblock.eps}
+ \caption{CHK encoding of blocks in {\em IBlocks}. The individual 
+          blocks $B_1$,...,$B_{25}$ will be encrypted with their hash 
+         values as keys before insertion into the network.}
+ \label{encodingblock}
+\end{center}
+\end{figure*}
+
+\subsection{{\em IBlocks}} \label{iblocks} % CHK+Tree
+
+For files larger than 1k, multiple CHK keys are required to retrieve
+the content.  For example, a $42k$ file will be split into 42 {\em
+  DBlocks} $B_1, \ldots, B_{42}$ of length 1k each.  Groups of up to
+25 CHKs are assembled into one {\em IBlock} (see
+figure~\ref{encodingblock}).  In addition to the CHK keys, {\em
+  IBlocks} also contain a CRC32 checksum and a hash over the CHK
+pairs.  The resulting {\em IBlock}s are CHK encrypted just like the
+{\em DBlocks} and their CHK-keys are again grouped into {\em IBlocks}
+until only one CHK key is left.  Blocks that are less than 1k in
+length are padded with zeroes.  The additional space requirements for encoding 
+the file are about 4\% of the original file size.
+% The encoding requires about 104\% of the original file size.  
+
+\subsection{{\em RBlocks}} \label{rblocks}
+
+The scheme described so far explains how a file can only be obtained
+by knowing the CHK-key of the top {\em IBlock}.  ECRS offers various
+alternative ways to obtain the CHK key, including out-of-band
+communication, {\em SBlocks} and directories.  {\em SBlocks} and
+directories are described in section~\ref{extensions}.  This section
+describes how CHK-keys can be obtained by {\bf searching} for {\em
+  RBlocks}, which is probably the most convenient way to obtain a
+CHK-key.  Searching requires the content provider to supply metadata
+about the file, in particular a list of keywords.  How metadata and
+keywords can be obtained in practice is described in
+section~\ref{keywords}; for now, the assumption is that the content
+provider provides a list of keywords when the file is encoded and that
+the receiver is able to {\bf guess} at least one of the keywords.
+
+An {\em RBlock} is a block that contains the CHK of the topmost {\em
+  IBlock} together with the length of the file and a description of the
+content (which may include the mime-type of the contents and other metadata). 
+Given an {\em RBlock}, the user can learn more about the file (assuming the
+metadata is accurate) and proceed to download the rest of the file
+tree if desired.  There can be any number of {\em RBlocks} for the
+same file, and only one {\em RBlock} for a given file is needed to download it.
+That multiple {\em RBlocks} correspond to the same file
+can be tested by checking that the CHK-keys and filesizes are
+identical. 
+
+For each keyword $k$ associated with a file, the corresponding {\em
+  RBlock} $R$ is encrypted with $H(k)$ and stored under $H(H(k))$.  Using
+the keyword as the source for the key allows the receiver of the file
+to obtain the key by guessing.  Since every {\em RBlock} contains the
+CHK, decrypting any of the encrypted {\em RBlock}s is enough to start
+requesting and decoding the rest of the file.  This mechanism ensures
+a small overhead for each keyword and results in identical blocks for
+the vast majority of the blocks for identical files no matter what
+keywords were used.
+
+Querying for an {\em RBlock} is {\bf not} straightforward.  The
+problem is that the intuitive choice for a query, $H(H(k))$ does not
+give intermediaries a way to verify that the (encrypted) response
+is correct.  The reason for this is that there is no correspondence between
+$E_{H(k)}(R)$ and $H(H(k))$.  Notably, there cannot be any direct
+correspondence since the query is a search that can have multiple
+results, all different from each other but honestly produced and correct.
+The association between keyword and content relies on human input. The
+semantic correlation between keyword and content is difficult (if not
+impossible) to verify by a computer, especially if this content is encrypted.
+The problem of malicious replies to {\em RBlocks} becomes clearly 
+non-negligible if the encoding scheme is to be
+used in a system where (potentially anonymous) peers may be rewarded for
+valid replies.  A reward system cannot work if peers can return
+random data instead of performing a potentially costly search and
+are still credited for the search they never executed.
+
+The solution to {\em RBlock} verification lies in the query.  Instead
+of using $H(H(k))$, the initiator sends the so-called ``triple-hash''
+query $H(H(H(k)))$.  A peer that has stored $E_{H(k)}(R)$ under
+$H(H(k))$ can match the query with the response and send back the pair
+$H(H(k)), E_{H(k)}(R)$.  Intermediaries can verify that the proof of
+authenticity, $H(H(k))$, hashes to the query $H(H(H(k)))$.  Malicious
+peers cannot construct the proof $H(H(k))$ without guessing $k$ or
+inverting the hash function.  If a malicious peer guesses $k$ and is
+thus able to produce the proof of authenticity, this action is
+equivalent to the malicious user inserting (useless) content under the
+guessed keyword $k$.  This type of keyword spamming can be made less
+effective by using the {\em SBlocks} and directory extensions described 
+in section~\ref{extensions}.
+
+In conclusion, the triple-hash scheme makes it harder to reply to
+arbitrary queries with random data; it cannot prevent users from
+inserting such data under popular keywords.  After the triple-hash
+query has been used to obtain an {\em RBlock}, the rest of the file
+tree can be requested by CHK queries as explained above.
+
+\subsection{Summary}
+
+\begin{figure*}[t]
+\hrule
+\vspace{3mm}
+\small
+\begin{enumerate}
+ \item{Input: Content $C$, a list of keywords $\{K_1,...\}$ and a description 
$D$.}
+ \item{Split content $C$ into blocks $B_i$, each of size 1k.  
+       Call these {\em DBlocks}. \label{split}}
+ \item{Compute hash values $H^{key}_i = H(B_i)$, $E_i = E_{H_{key}}(B_i)$ and 
+       $H^{query}_i = H(E_i)$.  Form {\em CHK}$_i$ from 
+           $(H^{query}_i, H^{key}_i)$.
+       Pad content (with zeros) if needed.\label{encryptStep}}
+ \item{Store $E_i$ under the name $H^{query}_i$.}
+ \item{If we have more than 1 block, group the blocks into disjoint sets $I_j$
+       of up to 25 members. For each $I_j$, create {\em Iblock}$_j$
+           containing the {\em CHK}s and CRC32s of the blocks in $I_j$. 
+           Add zero padding if needed.
+       Process each new 1k block obtained 
+           as in step~\ref{encryptStep}.}
+ \item{If the size of $C$ was smaller than 1k (and thus there is 
+       only one pair of hashcodes {\em CHK}$_0$),
+       create an {\em RBlock} containing 
+       {\em CHK}$_0$, the description $D$ of the content, 
+       the original length of $C$, a CRC32 checksum and (possibly) 
+       the mime-type of $C$.  
+         The total size of the {\em RBlock} is again limited to
+       1k in size.  Encrypt the resulting {\em RBlock} $R$ once 
+       for {\em each} keyword $K$ yielding $R_K = E_{H(K)}(R)$. Store the 
+       encrypted {\em RBlock} $R_K$ under $H(H(K))$ separate from
+       {\em DBlock}s and {\em IBlock}s.}
+\end{enumerate}
+\vspace{2mm}
+\hrule
+\caption{The ECRS encoding algorithm.}
+\label{ECRS}
+\end{figure*}
+
+The ECRS encoding algorithm is summarized in figure~\ref{ECRS}.
+Figure~\ref{protocol} shows the sequence of messages exchanged
+by peers to download a 2k file.  {\em SBlock}s are described in
+section~\ref{sblock}.
+
+
+\begin{figure*}[t]
+\small
+\hrule
+\vspace{3mm}
+$B$ shares file $B_0, B_1$ under keyword ``test''.
+\begin{description}
+ \item[$A \to B$:]{Query: $H(H(H(``test'')))$ (triple-hash query)}
+ \item[$B \to A$:]{Response: $H(H(``test'')),E_{H(``test'')}(Q_0, K_0, size)$ 
+                  (encrypted {\em RBlock})}
+ \item[$A \to B$:]{Query: $Q_0$ (CHK-query)}
+ \item[$B \to A$:]{Response: $E_{K_0}(Q_1, K_1, Q_2, K_2)$ (encrypted {\em 
IBlock})}
+ \item[$A \to B$:]{Query: $Q_1$ and $Q_2$ (CHK-query)}
+ \item[$B \to A$:]{Response: $E_{K_1}(B_0)$ and $E_{K_2}(B_1)$ (encrypted {\em 
DBlock}s)}
+\end{description}
+\vspace{2mm}
+\hrule
+\caption{Example protocol for an ECRS download.}
+\label{protocol}
+\end{figure*}
+
+\section{Extensions} \label{extensions}
+
+The vanilla ECRS encoding scheme (as discussed in the previous section)
+still leaves some practical problems that should be addressed to
+facilitate real-life usability. For example, users must be able to
+assign appropriate keywords to content (both for indexing and
+searches), and yet there should be some recourse for users to prevent
+adversaries from being able to use insertion of undesired data under
+specific keywords to flood related queries with invalid content.
+Additionally, the overall system should be efficient in practice;
+thus, overhead caused by random accesses of small blocks and frequent
+queries must be handled properly. The following subsections present
+some ideas on how these issues can be addressed.
+
+\subsection{Keywords} \label{keywords}
+% keywords, a spectrum from passwords to well-known keys (``test'')
+
+% Some introductory yarn
+One problem with ECRS (and peer-to-peer networks in general)
+is that the content must be located by keywords. Although this is 
+vastly better than forcing the user to rely on meaningless bitstrings 
+as the only identifier, the keys must still be chosen so that 
+the target audience can guess them. The simplest non-technical solution
+for this problem, however, is for a group of users to agree on an informal
+standard for keywords.
+
+% informal keyword standards
+If content providers want to make it easy for others to guess a keyword, it is
+typically useful to follow informal conventions for keyword selection.  For
+example, a reasonable convention may be to only use lower-case. 
+%A proposed
+%informal keyword standard for {\sc gnu}net can be found here \cite{keywords}.
+
+% libextractor
+A larger problem for a keyword-based search is that users may be reluctant to
+put in the effort to provide good keywords for the content that they provide.  
+A solution to this problem is the
+{\tt libextractor} library \cite{libextractor}. {\tt libextractor} is
+a library for metadata extraction that is used to automatically
+extract keywords and other metadata, such as descriptions, comments
+and mime-types from various file formats. The downside of using 
+{\tt libextractor} and other automated mechanisms is that most of the content 
+is not likely to be annotated in any meaningful way.
+
+
+\subsection{Directories}
+
+The global keyword space suffers from the problem that popular,
+easy to guess keywords are likely to be spammed (i.e. associated with
+unrelated content by unscrupulous or malicious users).  For example, a search 
+for ''mp3'' or ''jpeg'' is likely to return both too many results and 
+a number of maliciously mislabeled files.  Immutable directories can help in 
+reducing the size of this problem since they reduce the need for searching 
+and can be used to bundle useful content. If several files of such a directory 
+have appropriate descriptions, it is likely that the other files 
+will also have been provided by a non-malicious party.
+
+Integrating directories into the ECRS scheme is fairly straightforward.
+A directory is a file with a standard (1k) header block that contains any
+number of {\em RBlocks} in plaintext.  Like files, directories are
+immutable and are subjected to the same encoding.  The encoding
+guarantees that two identical {\em RBlocks} in two 
+different directories map to the same encrypted block in the database.  
+
+Note that it is possible for any user to assemble a directory that
+refers to any combination of files: user-inserted files, files
+that the user downloaded, files that the user encountered as search
+results but never downloaded (thus, the user has the {\em RBlock}), or even
+invalid data (which will be interpreted as {\em RBlocks} that correspond to
+non-existent files).
+%and even random {\em RBlocks} that correspond to random files that do not
+%even exist in the network.  
+The usefulness of a directory follows from
+the fact that the {\em RBlocks} are explicitly bundled together and 
+it is thus possible for the recipient to download a few of the files and
+form an opinion about the other files that are present in the same
+directory.  
+
+As directories can naturally point to other directories, 
+this scheme allows users to build navigable structures 
+similar to common file systems or the World Wide Web on top of any system 
+using ECRS.
+
+\subsection{Pseudonyms and namespaces} \label{sblock}
+
+One way to avoid searching in an untrustworthy global keyword space 
+is to restrict the search to secure namespaces that contain only
+cryptographically signed content.  The concept of namespaces
+is already present in Freenet \cite{clark99distributed}, but
+with Freenet it is not possible to obtain multiple results by searching. 
+Fortunately, it is easy to add searchable namespaces to ECRS.
+
+Here, the namespace is identified by a secret key (also referred to 
+as the pseu\-do\-nym) that has been used to sign the content. The design 
+also uses $S$, a cryptographic hash of the corresponding
+public key, as a shorter, public handle that can be used to refer to
+the namespace.  Any user can create any number of pseudonyms.  Once
+the user accesses files from a particular namespace it is possible to
+form an opinion about a particular pseudonym, which can then be used
+to refine the search strategy.
+
+Another useful feature of signed namespaces is that they can be updated.
+Without a digital signature, a secure update mechanism is impossible,
+since anyone could publish a potentially illegitimate update.  If the
+update requires a matching digital signature, forged updates are impossible.  
+In the following, we distinguish three types of updates: sporadic, 
+periodic and informal.
+% come back here
+
+A {\em sporadic update} can happen at any time or not at all.  In this case, 
+the current version contains a pointer to a future version; the software 
+then polls for this future version to see if it is available.  Also, if a 
+chain of updates occurs, the entire chain must potentially 
+be traversed to find the latest version.  Since the identifiers in
+the chain can be picked at random, users can be prevented from finding the key
+for earlier versions.
+%
+A {\em periodic update} happens always at a certain frequency, just like a
+periodical.  Given an initial timestamp, the period, an initial identifier and
+a formula expressing how the identifier changes over time, the software can 
+compute the identifier of the current or any future issue and use it to 
+directly request the current edition without traversing the update chain.
+%
+An {\em informal update} is a way to communicate the key of a future update
+using informal protocols between the users.  One example of an informal
+update is the use of the current date in a particular format in the
+identifier.  Informal updates require the end-users to understand and
+follow the informal standards.
+
+Adding namespaces to the design requires a new type of block, called an {\em
+SBlock}. 
+%(Figure~\ref{sblock_fig}).  
+An {\em SBlock} is a partially encrypted,
+signed file identifier with metadata.  Just like an {\em RBlock}, an {\em
+SBlock} identifies a file; unlike an {\em RBlock}, however, it also places the 
+file into a namespace.  Since a file can be in multiple namespaces, it is 
+possible for a file to be associated with any number of {\em SBlock}s 
+(and {\em RBlock}s).  {\em SBlock}s can also occur in directories.
+
+% the image is still a bit 'screaming', that is, doesn't fit well
+% into the look of the big picture - jtl
+
+%\begin{figure*}[t]
+%\begin{center}
+%\includegraphics[scale=0.55]{sblock.eps}   
+% \caption{The layout of an SBlock.  $S$ is the hash of the public key, $H$ is 
a cryptographically secure hash function.}
+% \label{sblock_fig}
+%\end{center}
+%\end{figure*}
+
+\begin{figure*}[t]
+\begin{center}
+\includegraphics[scale=0.7]{sblock_simple.eps}   
+ \caption{The basic layout of an SBlock.}
+ \label{sblock_fig}
+\end{center}
+\end{figure*}
+
+% J.T.: I'm sorry for taking such a big hack at this - I used T and I instead
+% of N and I because it made things conceptually similar (and N = T + I
+% implies that it's also conceptually equivalent. Sorry - Christian's had to
+% put up with me screaming in pain with this for the past several hours trying
+% to figure out what you guys meant here :) -klb
+%
+% klb: never mind the semantics. its supposed to look pretty, and
+% thats what wrong with it currently - it doesn't. :( I'd be nice
+% to have a fig that fits the paper style.
+%
+% I'm not sure my shot at it is more enlightening, but it is less cluttered.
+% - klb
+
+An {\em SBlock} in namespace $S$ contains, just like {\em RBlock}s, a
+block type identifier (to distinguish {\em RBlocks} from {\em
+  SBlocks}), the file identifier (top-CHK, crc, file size) and file
+metadata (mime-type, description, etc.).  In addition, the encrypted
+portion of an {\em SBlock} also contains the creation time of the
+block, an update interval $p$ (with special values for no updates and
+sporadic updates) and two values $I$ and $T$; $T$ is the identifier for the
+current {\em SBlock}, and $I$ is the distance between $T$ and the identifier
+for the next update. Note that the original $T$ (for the first edition) may
+well be a hashed keyword, just as with {\em RBlocks}; subsequent values of
+$T$ for {\em RBlocks} may be calculated by adding the current $I$ value to the
+current $T$ value.
+
+If the {\em SBlock} cannot be updated, $I = 0$.  If the {\em SBlock}
+is sporadically updated, the identifier for the next update in the sequence
+will be some value $N$, where $N \not= T$. The distance between $N$ and $T$
+may be some precalculated $I$ value, or, alternately, if $N$ is chosen
+independently of $T$ (such as when $N$ is a hashed keyword), then $I$ may be
+computed by taking the difference between the current identifier $T$ and the
+desired subsequent identifier $N$ (such that $I = T - N$). 
+
+For periodic updates, $I$ then becomes a constant which is added to $T$ each
+time an update interval has passed. If $T$ is the identifier for the first
+edition, then the identifier for the second edition is $T + I$, and the 
+identifier for third edition is  $T + 2I$. Practically speaking, then, for 
+periodic updates, identifiers for previous and subsequent editions of such 
+content can be calculated by using the update period $p$ to determine how many 
+editions in the past or future the desired edition is; this number is then 
+used as a multiplier for $I$, and when added to $T$, the result will be the 
+desired edition's identifier. Thus, $T$ and $I$ form a number generator. 
+$T$ functions as a nonce, which together with increment $I$ 
+(multiplied by a scalar) is able to produce a deterministic sequence of 
+addresses for a practically endless number of future editions.
+
+To form the {\em SBlocks} themselves, the beginning of each {\em SBlock} is 
+symmetrically encrypted with the key $T$, where $T$ is the current identifier.
+The encrypted portion is followed by the routing key 
+$R := H(T)\, \texttt{xor}\, S$, where $S$ is the hash of the public key
+identifying the namespace. This is stored in plaintext to allow 
+intermediaries to check that the {\em SBlock} matches a particular query.  The
+routing key is used in the query $(S, R)$ to request the {\em SBlock}.  After
+$R$, the {\em SBlock} contains an RSA signature over both the encrypted
+portion of the {\em SBlock} and $R$.  Finally, the {\em SBlock} contains the
+public key of the namespace.
+
+The public key must be contained in every {\em SBlock} to allow
+intermediaries to verify the signature in every {\em SBlock} on the
+spot.  
+
+Note that the signature is always for the {\em encrypted} header of the 
+{\em SBlock}. If an {\em SBlock} is stored in a directory in plaintext, the
+header must be re-encrypted before the signature can be verified again.  Every 
+{\em SBlock} is supposed to be uniquely identified by its key $T$.  
+$R$ was chosen as $H(T)\, \texttt{xor} \, S$ to avoid collisions on $R$ with 
+other namespaces that use the same block identifier $T$;  This is because 
+$T$ can be chosen to be the hash of an arbitrary keyword.
+
+% Should we calc/state some sort of collision probability btw? ;) -jtl
+
+It should be recognized that only the {\em SBlock} identifying the file needs 
+to be re-issued if the content has not changed.  The {\em IBlocks} and {\em
+  DBlocks} of the file or directory do not need to be changed when the 
+namespace identification changes.
+
+\subsection{Efficient lookups with bloom filters}
+
+Given that a query only requires the transmission of a 20-byte hash code, 
+the number of queries that any given peer may receive is quite
+high.  The bandwidth required for the response can generally be
+discounted, since each peer will only be able to respond to a
+small fraction of the received queries.  Assuming that queries
+dominate the traffic, over 100 queries per second could be transmitted over a
+relatively slow 5 kbps modem line.  Peers cannot, obviously, perform
+disk-based database lookups at that speed.  Worse, if peers are sharing
+gigabytes of content, simply keeping the index information in memory is
+no longer feasible.  For every gigabyte of locally available content, the
+index would have to contain information for about one million blocks.  
+
+In order to dramatically reduce the number of database accesses
+required, ECRS can be supplemented with a bloom filter \cite{bloom}, which is
+a probabilistic data structure that uses little memory and can be used
+to filter out queries that definitely cannot be answered by the local
+peer.  The bloom filter is guaranteed to allow all queries that can 
+be locally answered through the filter, and will reject all but a 
+statistically insignificant number of queries that cannot be answered locally.
+
+The size of the bloom filter in memory that is required to reduce the
+number of false-positives to approximately 3\% is about one byte (8
+bit with 5 bloom tests, $2^{-5} \approx 3\%$) per entry.  Since a
+node occasionally needs to remove content from the local database,
+additional bit counters for the bloom filter are stored on the disk.
+The assumption here is that changes to the filter are rare compared to
+the frequency of queries.  Queries that pass through the bloom filter are
+forwarded to the database layer which then attempts to locate the
+content. 
+
+\subsection{Super-Queries}
+
+% Christian: rewrite this like you were talking to someone who didn't know
+% anything about how this stuff works. Once upon a time, I understood what
+% this all was, but frankly your explanation has confused me enough that
+% I'm not comfortable editing this section. You'll have to clean it up,
+% and I'll give it another try afterwards. - klb
+% Tried. -- CG
+
+Using bloom filters to avoid disk accesses as described so far is
+still problematic since even one byte of memory per shared kilobyte of
+data can still be impractical for devices with small amounts of memory
+and large amounts of storage space.  An additional reduction of memory
+usage by a factor of up to 25 can be achieved with the introduction of
+so-called super-queries.  Super-queries are based on the idea that if
+a user indexes a file, his peer will have the response to all blocks
+of that file locally available.  Thus it is not necessary to add an
+entry to the bloomfilter for each of the blocks.  Instead,
+super-hashes are used to correlate blocks that belong to the same {\em
+  IBlock}.  The bloomfilter then contains only the super-hash as an
+entry, instead of the individual queries.  The super-hash for all the
+queries in an {\em IBlock} is the hash of the concatenation of the (at
+most) 25 queries in the {\em IBlock}.\footnote{The top {\em IBlock}
+  has no super-hash.}  If the bloomfilter then has an entry for the
+super-hash, this indicates that all the queries correlated by the
+super-hash must be available.
+
+The super-hash can thus help reduce storage requirements for peers
+that index an entire file.  These peers simply do not add any of the
+individual queries to the bloomfilter, but instead only add the
+super-hash codes.  Since the size of the bloomfilter depends on the
+number of entries, this process reduces memory requirements for
+locally indexed files.  Note that it has no impact on migrated data.
+
+A super-hash in the database alone is insufficient for a peer to
+process a query.  The super-hash must also be communicated together
+with the query in order to allow the peer to perform the proper
+lookup.  A super-query is a request that contains a super-hash and
+1--25 queries from the same {\em IBlock}.  A peer can process a
+super-query by first testing if the super-hash is in its local
+bloomfilter.  If so, the peer knows that all 1-25 queries that follow
+the super-hash are available (with high probability) in the local
+database.  If the super-hash is not in the bloomfilter, it is still
+possible that the content is locally available since blocks can still
+migrate individually, and for those blocks the peer would only have an
+ordinary entry in the bloomfilter.  Thus the peer then proceeds with
+also testing the individual queries against the bloomfilter.
+
+In summary, super-queries can help to reduce the memory requirements
+for locally indexed content by a factor of about 25.  The possibility
+of grouping related queries can also help to increase the locality of
+disk accesses.  Grouping hash codes for multiple blocks into one
+larger query can also help reduce the size of headers transmitted.
+
+
+\section{Discussion} \label{discussion}
+
+The fact that each {\em DBlock} can be encoded independently from any
+other {\em DBlock} results in an important feature of ECRS called 
+on-demand encoding.  Given a plaintext file and an index that
+maps a query to an offset in the file, the resulting {\em DBlock} can
+be encoded on-the-fly, without processing any other part of the file.
+This can be an important benefit if the user intends to keep the file
+in plaintext on the local drive.  In this case, the system can index
+the {\em DBlocks} without replicating the actual data, storing the
+resulting {\em IBlocks} (and {\em RBlocks} and {\em SBlocks}) and then
+later producing the {\em DBlocks} only using the index.  This can result
+in rather dramatic savings in space (about 90\% for 1024 blocks).
+
+Splitting files into many small blocks might be perceived as having a
+negative effect on the preservation of data.  If only one of the small
+pieces is lost, the larger file can no longer be reconstructed.  Thus,
+many other systems~\cite{freehaven-berk,mojotech} strive to keep
+files intact or use erasure codes~\cite{rabin89efficient} to patch
+missing pieces.  While erasure codes could be used together with
+ECRS, they conflict with on-demand encoding.  Consequently, the
+primary mechanism to guard against the loss of files encoded with
+ECRS should be data replication.  Small blocksizes,
+while technically not a fundamental property of ECRS, allow the
+network to duplicate blocks at a negligible cost per block.
+Duplicating a complete file with several megabytes of data between two peers
+would be much more costly and more likely to fail.  Small blocks, on
+the other hand, can migrate quickly from host to host.  For large
+files, it may be difficult for a peer to find individual hosts that are
+willing (or able) to provide enough space to replicate the complete file in
+its entirety. Also, the traffic burst that a large transfer would impose on the
+network might keep the participating nodes busy for too long.  Storing a
+large file on a single host also fails to facilitate distribution of
+load for downloading purposes.  In contrast, small blocks can be cheaply
+and quickly replicated and dispersed and thereby kept available.
+
+The real issue with small blocks is the high number of queries that
+are required to find all of the file pieces in a distributed network.  One
+could argue that a size of 1k is far too small with respect to the
+number of queries required.  Nevertheless, the total size of the
+queries for an ECRS download is only about 2\% of the size of the
+file.  Also, the small block size has some unique advantages.  For
+example, it ensures that the memory requirements of devices participating
+in ECRS are small, possibly allowing embedded devices to provide
+resources.  The primary motivation for this block size in {\sc
+  gnu}net is that Ethernet networks have an MTU of 1500 octets.  Since
+the {\sc gnu}net protocol must add headers to the packets (IP, TCP, UDP, or
+possibly HTTP headers, in addition to the protocol's own headers), the
+block size of 1k approximates this number.  In general, the size of
+the ECRS blocks is likely to depend more on protocol-specific
+details of the system using ECRS than on anything else.
+
+% boolean queries, NOTE: this is redundant from elsewhere. If
+% we are running out of space, consider pruning this, or the 
+% other location.
+
+Another interesting feature of ECRS is the possibility of using
+slightly more complex queries than those using simple, single
+keywords.  Users can specify boolean queries of the form $a\, AND\,
+b$, effectively combining multiple keywords to narrow down the set of
+search results.  The system can then independently search for $a$ and
+for $b$ and display only the {\em RBlocks} which were found with each
+of the keywords.  The reason that this type of search is possible
+is that the providers can insert the same content under many keywords 
+without using significantly more storage space.  ECRS only requires 
+one additional {\em RBlock} per keyword. Additionally, the queries and
+replies are extremely small compared to the actual files.
+
+\subsection*{Attacks}
+
+ECRS is open to two types of attacks from censors.  The most obvious
+attack available to an adversary is to guess possible keywords and use those
+to predict queries for specific {\em RBlock}s.  The adversary can
+then try to censor these queries.  Since the same content can be
+available under many keywords, this technique is not necessary
+successful.  However, this guessing attack does provide the opportunity for
+limited forms of censorship.  An adversary could create a ``blacklist''
+of keywords and attempt to legally force operators to filter matching queries 
+or replies.  
+%It should be noted, however, that guessing the key is the
+%only way to distinguish searches for {\em RBlocks} and requests for
+%{\em DBlocks} or {\em IBlocks}.\footnote{Except for super-queries,
+%  which are an optional optimization that exposes the fact that an
+%  {\em RBlock} is not a possible response.}  Allowing only approved
+%searches from a ``whitelist'' is thus not feasible, unless the censor
+%also details every single {\em DBlock} and {\em IBlock} that could be
+%legally used, which would be about as practical as outlawing
+%encryption.
+
+Instead of predicting keywords, the attacker can also try to guess or
+obtain the exact contents of the file (or at least the exact contents
+of an incriminating part).  The attacker can then encode the file to
+see if the encrypted file matches the encoded information he is looking for.  
+This is possible because the design maps identical files to
+the same ciphertext.  If the adversary can guess the exact file content, he
+can compute the query for the resulting {\em DBlock}s and {\em
+  IBlock}s or even obtain the encrypted {\em DBlock}s and {\em IBlock}s
+themselves.  Again, the adversary can then try to censor the {\em
+  IBlock}.  Note that this attack requires the adversary to obtain an
+exact copy of the content and exercise a certain amount of control
+over the peers in the network.  As users must have a way to decrypt
+the file solely by means of guessing the keyword, this attack cannot
+be avoided.  A fault-tolerant peer-to-peer routing protocol may be
+able to route the content around the adversary-controlled censoring
+peers.  Another possible defense involves slight alterations of the content.
+A single space inserted at the beginning of a text-document 
+is sufficient to change {\em all} blocks of the ECRS encoding.\footnote{
+Note that only operations causing global shifts in the data have this
+property. One single-character replacement changes only one 
+root-to-leaf path in the encoding tree.}  It would then be easy for users 
+to produce many slightly different versions of the same content, 
+making it infeasible for the censor to effectively censor them all.
+
+Both attacks fail to thwart the stated goal of the ECRS encoding
+scheme, which is to prevent intermediaries from being able to exercise
+editorial control over content.  While hosts can theoretically be
+forced to censor well-known keywords and files, they are unable to
+censor new keywords or unknown content since they cannot reasonably
+be expected to perform such a guessing attack on all content that they
+are serving.  As small changes to the content or keyword are
+sufficient to make detection impossible, these types of censorship
+should be impractical.
+
+Another serious type of attack is spamming the global keyword space
+with useless content.  Popular keywords are an easy target since they
+are likely to be easily guessed by an adversary.  Namespaces are a
+step toward defending against this type of attack, but they do create
+the new problem of learning valuable pseudonyms.  Learning about
+pseudonyms in general is easy.  Peers can learn new pseudonyms from
+directories, out-of-band communications, or even {\em SBlocks} that they are 
+routing for other peers.  The real difficulty is in assessing which pseudonyms
+represent users that provide valuable content.  A secure reputation
+system, like Advogato~\cite{levien03advogato}, may be a step towards a
+solution for this problem.  What is potentially more limiting than the
+cryptographic techniques is the challenge of making complex solutions,
+such as pseudonyms, easily accessible for the average user.
+
+The triple-hash allows for another attack by an active, participating
+adversary.  An adversary that is routing a response to a triple-hash
+request can substitute the encrypted content in the $\{H(H(K)),
+E_{H(K)}(Q, K, size)\}$ response while maintaining the $H(H(K))$ token.
+The resulting reply $\{H(H(K)), X\}$ still looks like a valid response
+to the triple-hash query $H(H(H(K)))$.  The triple-hash thus does not
+protect against such a substitution attack by an intermediary.  The
+impact of the attack is such that the network would propagate and cache the
+invalid replies.  The attack will not prevent the spread of valid
+replies through other routes in the system since multiple results to
+the same query are possible.  Furthermore, any user searching for $K$
+will not see the invalid results.  The reason is that the attempt to
+decrypt $X$ with $H(K)$ will (with high probability) result in a
+malformed {\em RBlock}.  Thus, the end-user is still protected from
+this type of spam.  Nevertheless, the adversary can abuse network
+resources for transmitting and caching $X$. 
+
+A solution to this problem is to deterministically compute a
+public-private key pair $(P_{pub}(K), P_{priv}(K))$ from $K$ (by using
+$K$ as the seed of the pseudo-random number generator).  The meta-data
+is then signed with $P_{priv}$ by the inserting peer.  Just like {\em
+  SBlock}s, the resulting {\em KBlock} must also contain $P_{pub}(K)$
+to allow any peer to verify the signature.  A recipient searching for
+$K$ then also computes $P_{pub}(K)$ using the same deterministic
+key-generation algorithm ($P_{priv}(K)$ is also computed but not
+used).  The recipient then uses $H(P_{pub}(K))$ as the query.
+Intermediaries can verify that the response is properly signed and
+tampering is made impossible.  The problem with this approach,
+compared to the triple-hash, is that it is more expensive.  It
+requires every intermediary to verify a digital signature for each
+{\em KBlock} that is being routed (which is the same cost as with {\em
+  SBlock}s).  Furthermore, both sender and receiver must generate a
+public-private key pair for each keyword.  Depending on how
+interactive the application is, this maybe an even bigger drawback.
+Finally, using {\em KBlocks} still does not solve the biggest
+practical problem of the triple-hash since it is still vulnerable to
+guessing attack.  In consequence, {\em KBlocks} work better than the
+triple-hash against adversaries that indiscriminately attempt to abuse
+network resources, but at the expense of significantly more CPU
+utilization even in the absence of an attack.
+
+%
+% Another or complementary direction might be some sort of pagerank 
+% style ranking of search results (if possible to pull off 
+% distributedly)... just a thought. I mean, suppose everyone trusts 
+% and likes "Jeff". After all, Jeff inserted a billion of britney spears
+% pictures. Now its still a bit difficult to find out which of 
+% those pictures are really good ones! -jtl
+%
+% ! + Content availability measuring! In a way its related to encoding,
+%   just as querying is. The question is: can there be any secure
+%   mechanism to measure if all blocks of a file exists in the network. 
+%   I think this pretty important. Pseudonyms are an informal
+%   move towards this direction too. -- jtl
+% : I don't quite see what this has to do specifically with the encoding.
+%   It has more to do with replication and routing, which are off-topic. -- cg
+% ! The point of future directions is precisely what it says. If there
+%   is no future work left in encoding, we should point people to the
+%   remaining problems w.r.t. the bigger concept. Besides, the paper
+%   somewhat tries to give the impression 'look, this here can be seen
+%   as an encoding problem'. What you are basically claiming 
+%   by 'off topic' is that there can be no trick that would connect 
+%   or require connecting content availability measuring to the 
+%   encoding that the data is represented in. For example, an
+%   encoding that would allow an incremental counter to be
+%   incremented *once* by anyone who has decrypted the block,
+%   would be a technique related to the encoding. I'm not
+%   saying that such technique would be feasible or would work, 
+%   what I'm saying that something similar, if possible impossible, 
+%   would belong to the encoding domain. -jtl
+% : Ok, so maybe we should tackle this together with the point of
+%   many other systems using erasure codes to ``heal'' lost portions
+%   of files.  We say, replication is the solution, but obviously
+%   replication requires control over what gets replicated when;
+%   measuring availability is one thing that can help control
+%   replication.  Interestingly, there is another way:
+%   http://www.ovmj.org/GNUnet/papers/p2pmulti.pdf
+%   So we should also: \cite{cohen02replication}
+% \nocite{cohen02replication} % for now
+
+%\vspace{-0.3cm}
+\section{Conclusion} \label{conclusion}
+%\vspace{-0.3cm}
+
+We have described an encoding scheme which is able to produce the same
+ciphertext (with the exception of one small {\em RBlock} per keyword)
+for the encryption of a file independent of the key(words) chosen
+by the content providers.  The resulting ciphertext is not
+significantly larger than the plaintext.  Arbitrary pieces of the
+ciphertext can be generated from plaintext without reading unrelated
+parts of the plaintext.  The encoding mechanism makes it difficult for censors
+to selectively suppress content.  While dictionary attacks on the
+password and known plaintext attacks on the ciphertext are still
+possible, they are harmless with respect to the goal of deniability
+for intermediaries.  We have shown how the basic encoding scheme can be 
+extended with directories and namespaces which allow for restricting searches 
+to content published by known pseudonyms.  Namespaces allow for files and
+directories to be updated securely.
+
+We have implemented the ECRS encoding as a part of {\sc gnu}net, a
+secure platform for peer-to-peer networking.  In {\sc gnu}net, ECRS
+works towards implementing anonymous, censorship-resistant
+file-sharing.  {\sc gnu}net is free software and part of the GNU
+project.  The {\sc gnu}net code is approximately 90,000 lines of C
+code and is available on our 
webpage\footnote{\url{http://www.ovmj.org/GNUnet/}}.
+The {\sc gnu}net server uses about about 6 MB of memory under GNU/Linux.
+
+%And we are cool. (Krista)
+
+% \hfill
+%\begin{acks}
+\subsection*{Acknowledgements}
+The authors thank Roger Dingledine for helpful comments on an earlier draft of 
this paper.
+%Christian Grothoff thanks Jan Vitek for support.
+%And Krista thinks that with 4 authors, we ought to cut out the
+%acknowledgements from individual authors; otherwise, I need to thank Victor,
+%Tzvetan may feel the need to thank Motorola (or Ananth), and J.T. may feel
+%the need to pay homage to colorful plastic horses with much better hair than
+%I have :)
+%\end{acks}
+
+
+{\small
+%\bibliographystyle{acmtrans}
+\bibliographystyle{plain}
+\bibliography{ref}
+}
+
+%\begin{received}
+% Received November 2003
+%\end{received}
+
+% \input{appendix}
+\end{document}

Added: GNUnet-docs/papers/ecrs/main.aux
===================================================================
--- GNUnet-docs/papers/ecrs/main.aux    2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet-docs/papers/ecrs/main.aux    2005-05-31 19:27:19 UTC (rev 833)
@@ -0,0 +1,125 @@
+\relax 
address@hidden@undefined
+\global \let \oldcontentsline\contentsline
+\gdef \contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
+\global \let \oldnewlabel\newlabel
+\gdef \newlabel#1#2{\newlabelxx{#1}#2}
+\gdef \newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
+\AtEndDocument{\let \contentsline\oldcontentsline
+\let \newlabel\oldnewlabel}
+\else
+\global \let address@hidden 
+\fi
+
address@hidden {title}{An Encoding for Censorship-Resistant 
Sharing}{1}{chapter.1}}
address@hidden {author}{Christian Grothoff\unskip {}, Krista Grothoff\unskip 
{}, Tzvetan Horozov\unskip {}, Jussi T. Lindgren\unskip {}}{1}{chapter.1}}
address@hidden {section}{\numberline {1}Introduction}{1}{section.1.1}}
+\citation{dingledine02mixminion,syverson97anonymous}
+\citation{ebe2003}
+\citation{clark99distributed}
+\citation{clark99distributed}
+\citation{esed}
+\citation{esed}
+\citation{anderson96eternity,clark99distributed,chen99prototype,freehaven-berk,feamster-infranet,herlihy87how,waldman2001tangler,pub00}
+\citation{cohen02replication}
+\citation{clark99distributed}
address@hidden {section}{\numberline {2}Related Work}{3}{section.1.2}}
+\newlabel{related}{{2}{3}{Related Work\relax }{section.1.2}{}}
+\citation{freehaven-berk}
+\citation{rabin89efficient}
address@hidden {subsection}{\numberline {2.1}Freenet}{4}{subsection.1.2.1}}
address@hidden {subsection}{\numberline {2.2}Free Haven}{4}{subsection.1.2.2}}
+\citation{mojotech}
+\citation{pub00}
+\citation{shamir}
+\citation{waldman2001tangler}
address@hidden {subsection}{\numberline {2.3}Mnet and Mojo 
Nation}{5}{subsection.1.2.3}}
address@hidden {subsection}{\numberline {2.4}Publius}{5}{subsection.1.2.4}}
address@hidden {subsection}{\numberline {2.5}Tangler}{5}{subsection.1.2.5}}
+\citation{shamir}
+\citation{cfs:sosp01,mazieres02building,mazires00sfs,muthitacharoen02ivy,rowstron01storage}
+\citation{cfs:sosp01,rowstron01storage}
+\citation{maymounkov02kademlia,stoica01chord}
+\citation{mazires00sfs}
+\citation{mazieres02building}
address@hidden {subsection}{\numberline {2.6}Gnutella and 
FastTrack}{6}{subsection.1.2.6}}
address@hidden {subsection}{\numberline {2.7}Distributed File 
Systems}{6}{subsection.1.2.7}}
+\citation{stratton_oakmont}
+\citation{hartman99swarm}
+\citation{ebe2003}
address@hidden {section}{\numberline {3}ECRS encoding}{7}{section.1.3}}
+\newlabel{content}{{3}{7}{ECRS encoding\relax }{section.1.3}{}}
+\citation{mckusick84fast}
+\citation{merkle89tree}
+\citation{clark99distributed}
address@hidden {figure}{\numberline {1}{\ignorespaces Simple encoding of a file 
using a tree of CHK blocks ($DBlock$s and $IBlock$s are CHK encoded) with one 
$KBlock$ to allow for a keyword-based search.}}{8}{figure.1.1}}
+\newlabel{encodingfile}{{1}{8}{ECRS encoding\relax }{figure.1.1}{}}
address@hidden {subsection}{\numberline {3.1}Overview}{8}{subsection.1.3.1}}
address@hidden {subsection}{\numberline {3.2}{\em  
DBlocks}}{9}{subsection.1.3.2}}
+\newlabel{dblocks}{{3.2}{9}{{\em DBlocks}\relax }{subsection.1.3.2}{}}
address@hidden {subsection}{\numberline {3.3}{\em  
IBlocks}}{9}{subsection.1.3.3}}
+\newlabel{iblocks}{{3.3}{9}{{\em IBlocks}\relax }{subsection.1.3.3}{}}
address@hidden {subsection}{\numberline {3.4}Finding 
files}{9}{subsection.1.3.4}}
+\newlabel{sec:search}{{3.4}{9}{Finding files\relax }{subsection.1.3.4}{}}
+\citation{clark99distributed}
address@hidden {subsection}{\numberline {3.5}Namespaces}{10}{subsection.1.3.5}}
+\newlabel{sblock}{{3.5}{10}{Namespaces\relax }{subsection.1.3.5}{}}
address@hidden {subsection}{\numberline {3.6}Keyword 
search}{11}{subsection.1.3.6}}
+\newlabel{kblocks}{{3.6}{11}{Keyword search\relax }{subsection.1.3.6}{}}
address@hidden {subsection}{\numberline {3.7}Summary}{12}{subsection.1.3.7}}
address@hidden {section}{\numberline {4}Extensions}{12}{section.1.4}}
+\newlabel{extensions}{{4}{12}{Extensions\relax }{section.1.4}{}}
+\citation{le2005}
+\newlabel{split}{{2}{13}{Summary\relax }{Item.2}{}}
+\newlabel{encryptStep}{{3}{13}{Summary\relax }{Item.3}{}}
address@hidden {figure}{\numberline {2}{\ignorespaces The ECRS encoding 
algorithm.}}{13}{figure.1.2}}
+\newlabel{ECRS}{{2}{13}{Summary\relax }{figure.1.2}{}}
address@hidden {figure}{\numberline {3}{\ignorespaces Example protocol for an 
ECRS download.}}{13}{figure.1.3}}
+\newlabel{protocol}{{3}{13}{Summary\relax }{figure.1.3}{}}
address@hidden {subsection}{\numberline {4.1}Keyword 
inference}{13}{subsection.1.4.1}}
+\newlabel{keywords}{{4.1}{13}{Keyword inference\relax }{subsection.1.4.1}{}}
+\citation{bloom}
address@hidden {subsection}{\numberline {4.2}Directories}{14}{subsection.1.4.2}}
address@hidden {subsection}{\numberline {4.3}Efficient lookups with bloom 
filters}{14}{subsection.1.4.3}}
+\citation{freehaven-berk,mojotech}
+\citation{rabin89efficient}
address@hidden {section}{\numberline {5}Discussion}{15}{section.1.5}}
+\newlabel{discussion}{{5}{15}{Discussion\relax }{section.1.5}{}}
address@hidden {subsection}{\numberline {5.1}Attacks}{15}{subsection.1.5.1}}
+\citation{levien03advogato}
+\citation{esed}
address@hidden {subsection}{\numberline {5.2}{\em  KBlocks} or 
triple-hash}{16}{subsection.1.5.2}}
address@hidden {section}{\numberline {6}Conclusion}{17}{section.1.6}}
+\newlabel{conclusion}{{6}{17}{Conclusion\relax }{section.1.6}{}}
+\bibstyle{plain}
+\bibdata{ref}
+\bibcite{anderson96eternity}{1}
+\bibcite{esed}{2}
+\bibcite{bloom}{3}
+\bibcite{chen99prototype}{4}
+\bibcite{clark99distributed}{5}
+\bibcite{cohen02replication}{6}
+\bibcite{cfs:sosp01}{7}
+\bibcite{dingledine02mixminion}{8}
+\bibcite{freehaven-berk}{9}
+\bibcite{feamster-infranet}{10}
+\bibcite{ebe2003}{11}
+\bibcite{le2005}{12}
+\bibcite{hartman99swarm}{13}
+\bibcite{herlihy87how}{14}
+\bibcite{levien03advogato}{15}
+\bibcite{maymounkov02kademlia}{16}
+\bibcite{mazires00sfs}{17}
+\bibcite{mazieres02building}{18}
+\bibcite{mckusick84fast}{19}
+\bibcite{merkle89tree}{20}
+\bibcite{muthitacharoen02ivy}{21}
+\bibcite{rabin89efficient}{22}
+\bibcite{rowstron01storage}{23}
+\bibcite{shamir}{24}
+\bibcite{stoica01chord}{25}
+\bibcite{stratton_oakmont}{26}
+\bibcite{syverson97anonymous}{27}
+\bibcite{waldman2001tangler}{28}
+\bibcite{pub00}{29}
+\bibcite{mojotech}{30}

Added: GNUnet-docs/papers/ecrs/main.bbl
===================================================================
--- GNUnet-docs/papers/ecrs/main.bbl    2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet-docs/papers/ecrs/main.bbl    2005-05-31 19:27:19 UTC (rev 833)
@@ -0,0 +1,186 @@
+\begin{thebibliography}{10}
+
+\bibitem{anderson96eternity}
+Ross Anderson.
+\newblock {The Eternity Service}.
+\newblock In {\em Proceedings of Pragocrypt 1996}, 1996.
+
+\bibitem{esed}
+Krista Bennett, Christian Grothoff, Tzvetan Horozov, and Ioana Patrascu.
+\newblock {Efficient Sharing of Encrypted Data}.
+\newblock In {\em {ASCIP}}, volume 2384 of {\em Lecture Notes in Computer
+  Science}, pages 107--120. Springer-Verlag Inc., 2002.
+
+\bibitem{bloom}
+Burton Bloom.
+\newblock Space/time trade-offs in hash coding with allowable errors.
+\newblock {\em Communications of the ACM}, 13(7):422--426, 1970.
+
+\bibitem{chen99prototype}
+Yuan Chen, Jan Edler, Andrew Goldberg, Allan Gottlieb, Sumeet Sobti, and Peter
+  Yianilos.
+\newblock A prototype implementation of archival intermemory.
+\newblock In {\em Proceedings of the Fourth {ACM} International Conference on
+  Digital Libraries}, 1999.
+
+\bibitem{clark99distributed}
+Ian Clarke, Oskar Sandberg, Brandon Wiley, and Theodorew~W. Hong.
+\newblock Freenet: A distributed anonymous information storage and retrieval
+  system.
+\newblock In Hannes Federrath, editor, {\em Designing privacy enhancing
+  technologies: International Workshop on Design Issues in Anonymity and
+  Unobservability, Berkeley, {CA}, {USA}, July 25--26, 2000: proceedings},
+  volume 2009 of {\em Lecture Notes in Computer Science}. Springer-Verlag Inc.,
+  2001.
+
+\bibitem{cohen02replication}
+Edith Cohen and Scott Shenker.
+\newblock Replication strategies in unstructured peer-to-peer networks.
+\newblock In {\em {The ACM SIGCOMM'02 Conference}}, {August} 2002.
+
+\bibitem{cfs:sosp01}
+Frank Dabek, M.~Frans Kaashoek, David Karger, Robert Morris, and Ion Stoica.
+\newblock Wide-area cooperative storage with {CFS}.
+\newblock In {\em Proceedings of the 18th {ACM} {S}ymposium on {O}perating
+  {S}ystems {P}rinciples ({SOSP} '01)}, Chateau Lake Louise, Banff, Canada,
+  October 2001.
+
+\bibitem{dingledine02mixminion}
+George Danezis, Roger Dingledine, and Nick Mathewson.
+\newblock {Mixminion: Design of a Type III Anonymous Remailer Protocol}.
+\newblock In {\em {IEEE} Symposium on Security and Privacy}, 2003.
+
+\bibitem{freehaven-berk}
+Roger Dingledine, Michael~J. Freedman, and David Molnar.
+\newblock The free haven project: Distributed anonymous storage service.
+\newblock In Hannes Federrath, editor, {\em Proceedings of Designing Privacy
+  Enhancing Technologies: Workshop on Design Issues in Anonymity and
+  Unobservability}. Springer-Verlag, LNCS 2009, July 2000.
+
+\bibitem{feamster-infranet}
+Nick Feamster, Magdalena Balazinska, Greg Harfst, Hari Balakrishnan, and David
+  Karger.
+\newblock Infranet: Circumventing web censorship and surveillance.
+\newblock In {\em {11th USENIX Security Symposium}}, 2002.
+
+\bibitem{ebe2003}
+Christian Grothoff.
+\newblock {An Excess-Based Economic Model for Resource Allocation in
+  Peer-to-Peer Networks}.
+\newblock {\em Wirtschaftsinformatik}, 3-2003, June 2003.
+
+\bibitem{le2005}
+Christian Grothoff.
+\newblock {Reading File Metadata with extract and libextractor}.
+\newblock {\em LinuxJournal}, 6-2005, June 2005.
+
+\bibitem{hartman99swarm}
+John~H. Hartman, Ian Murdock, and Tammo Spalink.
+\newblock The swarm scalable storage system.
+\newblock In {\em International Conference on Distributed Computing Systems},
+  pages 74--81, 1999.
+
+\bibitem{herlihy87how}
+Maurice Herlihy and J.~D. Tygar.
+\newblock How to make replicated data secure.
+\newblock In {\em {CRYPTO}}, pages 379--391, 1987.
+
+\bibitem{levien03advogato}
+Raph Levien.
+\newblock Attack resistant trust metrics.
+\newblock Draft available at http://www.levien.com/thesis/compact.pdf, 2003.
+
+\bibitem{maymounkov02kademlia}
+Petar Maymounkov and David {Mazi\`eres}.
+\newblock {Kademlia: A peer-to-peer information system based on the xor
+  metric}.
+\newblock In {\em Proceedings of IPTPS02, Cambridge}, March 2002.
+
+\bibitem{mazires00sfs}
+David {Mazi\`eres}.
+\newblock {\em Self-certifying file system}.
+\newblock PhD thesis, MIT, 2000.
+
+\bibitem{mazieres02building}
+David {Mazi\`eres} and Dennis Shasha.
+\newblock Building secure file systems out of byzantine storage.
+\newblock In {\em Proceedings of the Twenty-First ACM Symposium on Principles
+  of Distributed Computing (PODC 2002)}, 2002.
+
+\bibitem{mckusick84fast}
+Marshall~K. McKusick, William~N. Joy, Samuel~J. Leffler, and Robert~S. Fabry.
+\newblock A fast file system for {UNIX}.
+\newblock {\em Computer Systems}, 2(3):181--197, 1984.
+
+\bibitem{merkle89tree}
+Ralph~C. Merkle.
+\newblock A certified digital signature.
+\newblock In {\em G. Brassard, editor, Advances in Cryptology---CRYPTO '89},
+  pages 218--238. Springer-Verlag, 1990.
+\newblock volume 435 of Lecture Notes in Computer Science.
+
+\bibitem{muthitacharoen02ivy}
+Athicha Muthitacharoen, Robert Morris, Thomer~M. Gil, and Benjie Chen.
+\newblock Ivy: A read/write peer-to-peer file system.
+\newblock In {\em Proceedings of 5th Symposium on Operating Systems Design and
+  Implementation}, 2002.
+
+\bibitem{rabin89efficient}
+Michael~O. Rabin.
+\newblock Efficient dispersal of information for security, load balancing, and
+  fault tolerance.
+\newblock {\em Journal of the ACM}, 36(2):335--348, 1989.
+
+\bibitem{rowstron01storage}
+Antony I.~T. Rowstron and Peter Druschel.
+\newblock Storage management and caching in {PAST}, a large-scale, persistent
+  peer-to-peer storage utility.
+\newblock In {\em Symposium on Operating Systems Principles}, pages 188--201,
+  2001.
+
+\bibitem{shamir}
+A.~Shamir.
+\newblock {How to share a secret}.
+\newblock In {\em {Communications of the ACM}}, volume~22, pages 612--613.
+  {ACM}, 1979.
+
+\bibitem{stoica01chord}
+Ion Stoica, Robert Morris, David Karger, M.~Frans Kaashoek, and Hari
+  Balakrishnan.
+\newblock Chord: A scalable peer-to-peer lookup service for internet
+  applications.
+\newblock In {\em Proceedings of the 2001 conference on applications,
+  technologies, architectures, and protocols for computer communications},
+  pages 149--160. ACM Press, 2001.
+
+\bibitem{stratton_oakmont}
+{Stratton Oakmont vs Prodigy Services Company}, 1995 N.Y. Misc. Lexis 229,
+  (N.Y. Sup. Ct. Nassau Co., 1995).
+
+\bibitem{syverson97anonymous}
+Paul Syverson, David Goldschlag, and Michael Reed.
+\newblock {Anonymous Connections and Onion Routing}.
+\newblock In {\em {IEEE} Symposium on Security and Privacy}, pages 44--54,
+  Oakland, California, 4--7 1997.
+
+\bibitem{waldman2001tangler}
+Marc Waldman and David {Mazi\`eres}.
+\newblock Tangler: A censorhip-resistant publishing system based on document
+  entanglements.
+\newblock In {\em {ACM Conference on Computer and Communications Security}},
+  pages 126--135, 2001.
+
+\bibitem{pub00}
+Marc Waldman, Aviel~D. Rubin, and Lorrie~Faith Cranor.
+\newblock Publius: A robust, tamper-evident, censorship-resistant, web
+  publishing system.
+\newblock In {\em Proc. 9th USENIX Security Symposium}, pages 59--72, August
+  2000.
+
+\bibitem{mojotech}
+Bryce Wilcox-O'Hearn.
+\newblock {Experiences Deploying a Large-Scale Emergent Network}.
+\newblock In {\em {Peer-to-Peer Systems: First International Workshop, ITPTS
+  2002}}, pages 104--110. Springer-Verlag Heidelberg, January 2002.
+
+\end{thebibliography}

Added: GNUnet-docs/papers/ecrs/main.blg
===================================================================
--- GNUnet-docs/papers/ecrs/main.blg    2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet-docs/papers/ecrs/main.blg    2005-05-31 19:27:19 UTC (rev 833)
@@ -0,0 +1,45 @@
+This is BibTeX, Version 0.99c (Web2C 7.4.5)
+The top-level auxiliary file: main.aux
+The style file: plain.bst
+Database file #1: ref.bib
+You've used 30 entries,
+            2118 wiz_defined-function locations,
+            666 strings with 9154 characters,
+and the built_in function-call counts, 10588 in all, are:
+= -- 1015
+> -- 462
+< -- 14
++ -- 187
+- -- 152
+* -- 656
+:= -- 1676
+add.period$ -- 96
+call.type$ -- 30
+change.case$ -- 163
+chr.to.int$ -- 0
+cite$ -- 30
+duplicate$ -- 478
+empty$ -- 913
+format.name$ -- 152
+if$ -- 2326
+int.to.chr$ -- 0
+int.to.str$ -- 30
+missing$ -- 27
+newline$ -- 152
+num.names$ -- 64
+pop$ -- 223
+preamble$ -- 1
+purify$ -- 135
+quote$ -- 0
+skip$ -- 340
+stack$ -- 0
+substring$ -- 530
+swap$ -- 147
+text.length$ -- 14
+text.prefix$ -- 0
+top$ -- 0
+type$ -- 120
+warning$ -- 0
+while$ -- 94
+width$ -- 32
+write$ -- 329

Added: GNUnet-docs/papers/ecrs/main.dvi
===================================================================
(Binary files differ)


Property changes on: GNUnet-docs/papers/ecrs/main.dvi
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: GNUnet-docs/papers/ecrs/main.log
===================================================================
--- GNUnet-docs/papers/ecrs/main.log    2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet-docs/papers/ecrs/main.log    2005-05-31 19:27:19 UTC (rev 833)
@@ -0,0 +1,584 @@
+This is pdfeTeX, Version 3.14159-1.10b-2.1 (Web2C 7.4.5) (format=pdflatex 
2005.5.20)  30 MAY 2005 09:20
+entering extended mode
+**main.tex
+(./main.tex{/usr/share/texmf/pdftex/config/pdftex.cfg}
+LaTeX2e <2001/06/01>
+Babel <v3.7h> and hyphenation patterns for american, french, german, ngerman, b
+ahasa, basque, catalan, croatian, czech, danish, dutch, finnish, greek, iceland
+ic, irish, italian, latin, magyar, norsk, norsk, portuges, romanian, russian, s
+lovak, slovene, spanish, swedish, turkish, ukrainian, nohyphenation, loaded.
+(./llncs.cls
+Document Class: llncs 2001/08/14 v2.10 
+experimental LaTeX document class for Lecture Notes in Computer Science
+(/usr/share/texmf/tex/latex/base/article.cls
+Document Class: article 2001/04/21 v1.4e Standard LaTeX document class
+(/usr/share/texmf/tex/latex/base/size10.clo
+File: size10.clo 2001/04/21 v1.4e Standard LaTeX file (size option)
+)
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
+\abovecaptionskip=\skip41
+\belowcaptionskip=\skip42
+\bibindent=\dimen102
+)
+(/usr/share/texmf/tex/latex/tools/multicol.sty
+Package: multicol 2000/07/10 v1.5z multicolumn formatting (FMi)
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
+\multicoltolerance=\count91
+\multicolpretolerance=\count92
address@hidden
address@hidden
+\premulticols=\dimen106
+\postmulticols=\dimen107
+\multicolsep=\skip43
+\multicolbaselineskip=\skip44
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
+\multicolovershoot=\dimen109
+\multicolundershoot=\dimen110
address@hidden@firstbox=\box50
address@hidden
+)
address@hidden
+LaTeX Font Info:    Redeclaring math symbol \Gamma on input line 343.
+LaTeX Font Info:    Redeclaring math symbol \Delta on input line 344.
+LaTeX Font Info:    Redeclaring math symbol \Theta on input line 345.
+LaTeX Font Info:    Redeclaring math symbol \Lambda on input line 346.
+LaTeX Font Info:    Redeclaring math symbol \Xi on input line 347.
+LaTeX Font Info:    Redeclaring math symbol \Pi on input line 348.
+LaTeX Font Info:    Redeclaring math symbol \Sigma on input line 349.
+LaTeX Font Info:    Redeclaring math symbol \Upsilon on input line 350.
+LaTeX Font Info:    Redeclaring math symbol \Phi on input line 351.
+LaTeX Font Info:    Redeclaring math symbol \Psi on input line 352.
+LaTeX Font Info:    Redeclaring math symbol \Omega on input line 353.
+\tocchpnum=\dimen111
+\tocsecnum=\dimen112
+\tocsectotal=\dimen113
+\tocsubsecnum=\dimen114
+\tocsubsectotal=\dimen115
+\tocsubsubsecnum=\dimen116
+\tocsubsubsectotal=\dimen117
+\tocparanum=\dimen118
+\tocparatotal=\dimen119
+\tocsubparanum=\dimen120
address@hidden
+\fnindent=\dimen121
+\c@@inst=\count97
+\c@@auth=\count98
address@hidden
+\instindent=\dimen122
+\authrun=\box52
+\authorrunning=\toks14
+\tocauthor=\toks15
+\titrun=\box53
+\titlerunning=\toks16
+\toctitle=\toks17
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
+\headlineindent=\dimen123
+)
+(/usr/share/texmf/tex/latex/base/inputenc.sty
+Package: inputenc 2001/07/10 v0.99a Input encoding file 
+
+(/usr/share/texmf/tex/latex/base/ansinew.def
+File: ansinew.def 2001/07/10 v0.99a Input encoding file 
+))
+(/usr/share/texmf/tex/latex/amsmath/amsmath.sty
+Package: amsmath 2000/07/18 v2.13 AMS math features
address@hidden
+
+For additional information on amsmath, use the `?' option.
+(/usr/share/texmf/tex/latex/amsmath/amstext.sty
+Package: amstext 2000/06/29 v2.01
+
+(/usr/share/texmf/tex/latex/amsmath/amsgen.sty
+File: amsgen.sty 1999/11/30 v2.0
address@hidden
address@hidden
+))
+(/usr/share/texmf/tex/latex/amsmath/amsbsy.sty
+Package: amsbsy 1999/11/29 v1.2d
address@hidden
+)
+(/usr/share/texmf/tex/latex/amsmath/amsopn.sty
+Package: amsopn 1999/12/14 v2.01 operator names
+)
address@hidden
+LaTeX Info: Redefining \frac on input line 211.
address@hidden
address@hidden
+LaTeX Info: Redefining \overline on input line 307.
address@hidden
address@hidden
+LaTeX Info: Redefining \ldots on input line 379.
+LaTeX Info: Redefining \dots on input line 382.
+LaTeX Info: Redefining \cdots on input line 467.
address@hidden
address@hidden
address@hidden
+LaTeX Font Info:    Redeclaring font encoding OML on input line 567.
+LaTeX Font Info:    Redeclaring font encoding OMS on input line 568.
+
+
+Package amsmath Warning: Unable to redefine math accent \vec.
+
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
+\multlinegap=\skip46
+\multlinetaggap=\skip47
address@hidden
+LaTeX Info: Redefining \[ on input line 2666.
+LaTeX Info: Redefining \] on input line 2667.
+) (/usr/share/texmf/tex/latex/amsfonts/amssymb.sty
+Package: amssymb 2002/01/22 v2.2d
+
+(/usr/share/texmf/tex/latex/amsfonts/amsfonts.sty
+Package: amsfonts 2001/10/25 v2.2f
+\symAMSa=\mathgroup4
+\symAMSb=\mathgroup5
+LaTeX Font Info:    Overwriting math alphabet `\mathfrak' in version `bold'
+(Font)                  U/euf/m/n --> U/euf/b/n on input line 132.
+))
+(/usr/share/texmf/tex/latex/base/exscale.sty
+Package: exscale 1997/06/16 v2.1g Standard LaTeX package exscale
+LaTeX Font Info:    Redeclaring symbol font `largesymbols' on input line 47.
+LaTeX Font Info:    Overwriting symbol font `largesymbols' in version `normal'
+(Font)                  OMX/cmex/m/n --> OMX/cmex/m/n on input line 47.
+LaTeX Font Info:    Overwriting symbol font `largesymbols' in version `bold'
+(Font)                  OMX/cmex/m/n --> OMX/cmex/m/n on input line 47.
address@hidden
+)
+(/usr/share/texmf/tex/latex/graphics/epsfig.sty
+Package: epsfig 1999/02/16 v1.7a (e)psfig emulation (SPQR)
+
+(/usr/share/texmf/tex/latex/graphics/graphicx.sty
+Package: graphicx 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR)
+
+(/usr/share/texmf/tex/latex/graphics/keyval.sty
+Package: keyval 1999/03/16 v1.13 key=value parser (DPC)
address@hidden@=\toks23
+)
+(/usr/share/texmf/tex/latex/graphics/graphics.sty
+Package: graphics 2001/07/07 v1.0n Standard LaTeX Graphics (DPC,SPQR)
+
+(/usr/share/texmf/tex/latex/graphics/trig.sty
+Package: trig 1999/03/16 v1.09 sin cos tan (DPC)
+)
+(/usr/share/texmf/tex/latex/config/graphics.cfg
+File: graphics.cfg 2001/08/31 v1.1 graphics configuration of teTeX/TeXLive
+)
+Package graphics Info: Driver file: pdftex.def on input line 80.
+
+(/usr/share/texmf/tex/latex/graphics/pdftex.def
+File: pdftex.def 2002/06/19 v0.03k graphics/color for pdftex
address@hidden
+))
address@hidden@height=\dimen134
address@hidden@width=\dimen135
+)
+\epsfxsize=\dimen136
+\epsfysize=\dimen137
+)
+(/usr/share/texmf/tex/latex/tools/verbatim.sty
+Package: verbatim 2001/03/12 v1.5p LaTeX2e package for verbatim enhancements
address@hidden
address@hidden
address@hidden@stream=\read1
+)
+(/usr/share/texmf/tex/latex/misc/float.sty
+Package: float 2001/11/08 v1.3d Float enhancements (AL)
address@hidden@type=\count128
address@hidden
address@hidden
address@hidden@everytoks=\toks27
address@hidden
+)
+(/usr/share/texmf/tex/generic/xypic/xy.sty
+(/usr/share/texmf/tex/generic/xypic/xy.tex Bootstrap'ing: catcodes, docmode,
+(/usr/share/texmf/tex/generic/xypic/xyrecat.tex)
+(/usr/share/texmf/tex/generic/xypic/xyidioms.tex)
+
+ Xy-pic version 3.7 <1999/02/16>
+ Copyright (c) 1991-1998 by Kristoffer H. Rose <address@hidden>
+ Xy-pic is free software: see the User's Guide for details.
+
+Loading kernel: messages; fonts; allocations: state,
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
+ direction,
address@hidden
address@hidden
address@hidden
address@hidden
+\Direction=\count131
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
+
+utility macros; pictures: \xy, positions,
+\swaptoks@@=\toks30
+\connectobjectbox@@=\box60
+ objects,
address@hidden
+ decorations;
+kernel objects: directionals, circles, text; options; algorithms: directions,
+edges, connections;  Xy-pic loaded)
+Package: xy 1999/02/16 Xy-pic version 3.7
+
+(/usr/share/texmf/tex/generic/xypic/xyall.tex
+ Xy-pic option: All features v.3.3
+(/usr/share/texmf/tex/generic/xypic/xycurve.tex
+ Xy-pic option: Curve and Spline extension v.3.7 curve,
address@hidden@=\count133
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
+ circles,
address@hidden
+ loaded)
+(/usr/share/texmf/tex/generic/xypic/xyframe.tex
+ Xy-pic option: Frame and Bracket extension v.3.7 loaded)
+(/usr/share/texmf/tex/generic/xypic/xycmtip.tex
+ Xy-pic option: Computer Modern tip extension v.3.3
+(/usr/share/texmf/tex/generic/xypic/xytips.tex
+ Xy-pic option: More Tips extension v.3.3 loaded) loaded)
+(/usr/share/texmf/tex/generic/xypic/xyline.tex
+ Xy-pic option: Line styles extension v.3.6
address@hidden
+ loaded)
+(/usr/share/texmf/tex/generic/xypic/xyrotate.tex
+ Xy-pic option: Rotate and Scale extension v.3.3 loaded)
+(/usr/share/texmf/tex/generic/xypic/xycolor.tex
+ Xy-pic option: Colour extension v.3.3 loaded)
+(/usr/share/texmf/tex/generic/xypic/xymatrix.tex
+ Xy-pic option: Matrix feature v.3.4
+\Row=\count134
+\Col=\count135
address@hidden
+\queue@@=\toks34
address@hidden
+\qcount@@=\count137
address@hidden
+ loaded)
+(/usr/share/texmf/tex/generic/xypic/xyarrow.tex
+ Xy-pic option: Arrow and Path feature v.3.5 path, \ar, loaded)
+(/usr/share/texmf/tex/generic/xypic/xygraph.tex
+ Xy-pic option: Graph feature v.3.7 loaded) loaded)
+(/usr/share/texmf/tex/generic/xypic/xyknot.tex
+ Xy-pic option: Knots and Links feature v.3.4 knots and links, loaded)
+(/usr/share/texmf/tex/generic/xypic/xypoly.tex
+ Xy-pic option: Polygon feature v.3.7 polygons,
address@hidden
+ loaded))
+(/usr/share/texmf/tex/latex/hyperref/hyperref.sty
+Package: hyperref 2003/01/22 v6.73n Hypertext links for LaTeX
address@hidden
address@hidden
address@hidden
+
+(/usr/share/texmf/tex/latex/hyperref/pd1enc.def
+File: pd1enc.def 2003/01/22 v6.73n Hyperref: PDFDocEncoding definition (HO)
+)
+(/usr/share/texmf/tex/latex/config/hyperref.cfg
+File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive and teTeX
+)
+Package hyperref Info: Hyper figures OFF on input line 1792.
+Package hyperref Info: Link nesting OFF on input line 1797.
+Package hyperref Info: Hyper index ON on input line 1800.
+Package hyperref Info: Plain pages ON on input line 1805.
+Package hyperref Info: Backreferencing OFF on input line 1812.
+
+Implicit mode ON; LaTeX internals redefined
+Package hyperref Info: Bookmarks ON on input line 1916.
+(/usr/share/texmf/tex/latex/misc/url.sty
+\Urlmuskip=\muskip11
+Package: url 1999/03/28  ver 1.5x  Verb mode for urls, etc.
+)
+LaTeX Info: Redefining \url on input line 2055.
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
+Package hyperref Info: Hyper figures OFF on input line 2513.
+Package hyperref Info: Link nesting OFF on input line 2518.
+Package hyperref Info: Hyper index ON on input line 2521.
+Package hyperref Info: backreferencing OFF on input line 2528.
+Package hyperref Info: Link coloring OFF on input line 2533.
address@hidden
address@hidden
+)
+*hyperref using default driver hpdftex*
+(/usr/share/texmf/tex/latex/hyperref/hpdftex.def
+File: hpdftex.def 2003/01/22 v6.73n Hyperref driver for pdfTeX
+
+(/usr/share/texmf/tex/latex/psnfss/pifont.sty
+Package: pifont 2002/09/08 PSNFSS-v9.0a Pi font support (SPQR) 
+LaTeX Font Info:    Try loading font information for U+pzd on input line 62.
+
+(/usr/share/texmf/tex/latex/psnfss/upzd.fd
+File: upzd.fd 2001/06/04 font definitions for U/pzd.
+)
+LaTeX Font Info:    Try loading font information for U+psy on input line 63.
+
+(/usr/share/texmf/tex/latex/psnfss/upsy.fd
+File: upsy.fd 2001/06/04 font definitions for U/psy.
+))
address@hidden
address@hidden
+)
+
+Package hyperref Warning: Option `backref' has already been used,
+(hyperref)                setting the option has no effect on input line 15.
+
+Package hyperref Info: Option `colorlinks' set `true' on input line 15.
+(./main.aux)
+\openout1 = `main.aux'.
+
+LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 18.
+LaTeX Font Info:    ... okay on input line 18.
+LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 18.
+LaTeX Font Info:    ... okay on input line 18.
+LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 18.
+LaTeX Font Info:    ... okay on input line 18.
+LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 18.
+LaTeX Font Info:    ... okay on input line 18.
+LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 18.
+LaTeX Font Info:    ... okay on input line 18.
+LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 18.
+LaTeX Font Info:    ... okay on input line 18.
+LaTeX Font Info:    Checking defaults for PD1/pdf/m/n on input line 18.
+LaTeX Font Info:    ... okay on input line 18.
+ (/usr/share/texmf/tex/context/base/supp-pdf.tex
+(/usr/share/texmf/tex/context/base/supp-mis.tex
+loading : Context Support Macros / Missing
+\protectiondepth=\count146
+\scratchcounter=\count147
+\scratchtoks=\toks37
+\scratchdimen=\dimen175
+\scratchskip=\skip48
+\scratchmuskip=\muskip12
+\scratchbox=\box62
+\scratchread=\read3
+\scratchwrite=\write5
+\zeropoint=\dimen176
+\minusone=\count148
+\thousandpoint=\dimen177
+\emptytoks=\toks38
+\nextbox=\box63
+\nextdepth=\dimen178
+\everyline=\toks39
+\!!counta=\count149
+\!!countb=\count150
+\recursecounter=\count151
+)
+loading : Context Support Macros / PDF
+\nofMPsegments=\count152
+\nofMParguments=\count153
+\everyMPtoPDFconversion=\toks40
+) (/usr/share/texmf/tex/latex/graphics/color.sty
+Package: color 1999/02/16 v1.0i Standard LaTeX Color (DPC)
+LaTeX Info: Redefining \color on input line 71.
+
+(/usr/share/texmf/tex/latex/config/color.cfg
+File: color.cfg 2001/08/31 v1.1 color configuration of teTeX/TeXLive
+)
+Package color Info: Driver file: pdftex.def on input line 125.
+)
+Package hyperref Info: Link coloring ON on input line 18.
+
+(/usr/share/texmf/tex/latex/hyperref/nameref.sty
+Package: nameref 2001/01/27 v2.19 Cross-referencing by name of section
address@hidden@level=\count154
+)
+LaTeX Info: Redefining \ref on input line 18.
+LaTeX Info: Redefining \pageref on input line 18.
+ (./main.out) (./main.out)
+\openout4 = `main.out'.
+
+LaTeX Font Info:    External font `cmex7' loaded for size
+(Font)              <7> on input line 48.
+LaTeX Font Info:    External font `cmex7' loaded for size
+(Font)              <5> on input line 48.
+LaTeX Font Info:    Try loading font information for U+msa on input line 48.
+
+(/usr/share/texmf/tex/latex/amsfonts/umsa.fd
+File: umsa.fd 2002/01/19 v2.2g AMS font definitions
+)
+LaTeX Font Info:    Try loading font information for U+msb on input line 48.
+
+(/usr/share/texmf/tex/latex/amsfonts/umsb.fd
+File: umsb.fd 2002/01/19 v2.2g AMS font definitions
+)
+LaTeX Font Info:    External font `cmex7' loaded for size
+(Font)              <6> on input line 48.
+
+
+Package hyperref Warning: bookmark level for unknown title defaults to 0.
+
+
+Package hyperref Warning: bookmark level for unknown author defaults to 0.
+
+
+Package hyperref Warning: Token not allowed in a PDFDocEncoded string,
+(hyperref)                removing `\unskip' on input line 48.
+
+
+Package hyperref Warning: Token not allowed in a PDFDocEncoded string,
+(hyperref)                removing `\unskip' on input line 48.
+
+
+Package hyperref Warning: Token not allowed in a PDFDocEncoded string,
+(hyperref)                removing `\unskip' on input line 48.
+
+
+Package hyperref Warning: Token not allowed in a PDFDocEncoded string,
+(hyperref)                removing `\unskip' on input line 48.
+
+
+Overfull \hbox (9.0264pt too wide) in paragraph at lines 50--62
+/cmr9/censor-ship-resistant peer-to-peer net-work-ing. The pro-posed en-cod-ing
+ mech-
+ []
+
+[1
+
+{/var/lib/texmf/dvips/config/pdftex.map}]
+Underfull \vbox (badness 1102) has occurred while \output is active []
+
+ [2]
+[3] [4] [5] [6] [7] <xymatrix 9x5 862> [8] [9] [10] [11] [12] [13] [14]
+[15] [16] [17] (./main.bbl [18]
+Underfull \hbox (badness 6658) in paragraph at lines 89--92
+[]/cmr9/Raph Levien.  At-tack re-sis-tant trust met-rics.  Draft avail-able at
+ []
+
+) [19] (./main.aux) ) 
+Here is how much of TeX's memory you used:
+ 6614 strings out of 94960
+ 81038 string characters out of 1182470
+ 208968 words of memory out of 1000001
+ 9522 multiletter control sequences out of 10000+50000
+ 13677 words of font info for 55 fonts, out of 500000 for 1000
+ 198 hyphenation exceptions out of 1000
+ 32i,16n,27p,270b,585s stack positions out of 1500i,500n,5000p,200000b,5000s
+ 311 PDF objects out of 300000
+ 91 named destinations out of 131072
+ 30 words of extra memory for PDF output out of 65536
+{/usr/share/texmf/dvips/tetex/0ef0afca.enc}</usr/share/tex
+mf/fonts/type1/bluesky/cm/cmcsc10.pfb>{/usr/share/texmf/dvips/tetex/bbad153f.en
+c}</usr/share/texmf/fonts/type1/bluesky/cm/cmsy10.pfb></usr/share/texmf/fonts/t
+ype1/bluesky/cm/cmsy7.pfb></usr/share/texmf/fonts/type1/bluesky/cm/cmr5.pfb></u
+sr/share/texmf/fonts/type1/bluesky/cm/cmsy5.pfb></usr/share/texmf/fonts/type1/b
+luesky/cm/cmsy9.pfb>{/usr/share/texmf/dvips/tetex/aae443f0.enc}</usr/share/texm
+f/fonts/type1/bluesky/cm/cmmi5.pfb></usr/share/texmf/fonts/type1/bluesky/cm/cmm
+i7.pfb>{/usr/share/texmf/dvips/tetex/74afc74c.enc}</usr/share/texmf/fonts/type1
+/bluesky/cm/cmbxti10.pfb></usr/share/texmf/fonts/type1/bluesky/cm/cmmi6.pfb></u
+sr/share/texmf/fonts/type1/public/xypic/xydash10.pfb></usr/share/texmf/fonts/ty
+pe1/bluesky/cm/cmsy6.pfb></usr/share/texmf/fonts/type1/public/xypic/xybtip10.pf
+b></usr/share/texmf/fonts/type1/public/xypic/xyatip10.pfb></usr/share/texmf/fon
+ts/type1/bluesky/cm/cmmi9.pfb></usr/share/texmf/fonts/type1/bluesky/cm/cmti9.pf
+b></usr/share/texmf/fonts/type1/bluesky/cm/cmmi10.pfb>{/usr/share/texmf/dvips/t
+etex/f7b6d320.enc}</usr/share/texmf/fonts/type1/bluesky/cm/cmbx10.pfb>{/usr/sha
+re/texmf/dvips/tetex/09fbbfac.enc}</usr/share/texmf/fonts/type1/bluesky/cm/cmtt
+10.pfb></usr/share/texmf/fonts/type1/bluesky/cm/cmti10.pfb></usr/share/texmf/fo
+nts/type1/bluesky/cm/cmbx9.pfb></usr/share/texmf/fonts/type1/bluesky/cm/cmtt9.p
+fb></usr/share/texmf/fonts/type1/bluesky/cm/cmr9.pfb></usr/share/texmf/fonts/ty
+pe1/bluesky/cm/cmr6.pfb></usr/share/texmf/fonts/type1/bluesky/cm/cmr7.pfb></usr
+/share/texmf/fonts/type1/bluesky/cm/cmr10.pfb></usr/share/texmf/fonts/type1/blu
+esky/cm/cmbx12.pfb>
+Output written on main.pdf (19 pages, 267330 bytes).

Added: GNUnet-docs/papers/ecrs/main.out
===================================================================
--- GNUnet-docs/papers/ecrs/main.out    2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet-docs/papers/ecrs/main.out    2005-05-31 19:27:19 UTC (rev 833)
@@ -0,0 +1,2 @@
+\BOOKMARK [0][-]{chapter.1}{An Encoding for Censorship-Resistant Sharing}{}
+\BOOKMARK [0][-]{chapter.1}{Christian Grothoff, Krista Grothoff, Tzvetan 
Horozov, Jussi T. Lindgren}{}

Added: GNUnet-docs/papers/ecrs/main.pdf
===================================================================
(Binary files differ)


Property changes on: GNUnet-docs/papers/ecrs/main.pdf
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: GNUnet-docs/papers/ecrs/main.ps
===================================================================
--- GNUnet-docs/papers/ecrs/main.ps     2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet-docs/papers/ecrs/main.ps     2005-05-31 19:27:19 UTC (rev 833)
@@ -0,0 +1,8432 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software
+%%Title: main.dvi
+%%Pages: 19
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 612 792
+%%DocumentFonts: CMBX12 CMR10 CMR7 CMR6 CMR9 CMTT9 CMBX9 CMTI10 CMTT10
+%%+ CMBX10 CMMI10 CMTI9 CMMI9 XYATIP10 XYBTIP10 CMSY6 XYDASH10 CMMI6
+%%+ CMBXTI10 CMMI7 CMMI5 CMSY9 CMSY5 CMR5 CMSY7 CMSY10 CMCSC10
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips main.dvi -o main.ps
+%DVIPSParameters: dpi=600, compressed
+%DVIPSSource:  TeX output 2005.05.30:0920
+%%BeginProcSet: texc.pro
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
+statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
+N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
+/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
+/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
+df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
+1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
+1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
+0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
+sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
+rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
+gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
+/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
+/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
+A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
+get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
+ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
+fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
+{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
+chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
+1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
+forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
+}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
+bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
+delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
+B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
+p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
+rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
+
+%%EndProcSet
+%%BeginProcSet: f7b6d320.enc
+% Thomas Esser, Dec 2002. public domain
+%
+% Encoding for:
+%     cmb10 cmbx10 cmbx12 cmbx5 cmbx6 cmbx7 cmbx8 cmbx9 cmbxsl10
+%     cmdunh10 cmr10 cmr12 cmr17cmr6 cmr7 cmr8 cmr9 cmsl10 cmsl12 cmsl8
+%     cmsl9 cmss10cmss12 cmss17 cmss8 cmss9 cmssbx10 cmssdc10 cmssi10
+%     cmssi12 cmssi17 cmssi8cmssi9 cmssq8 cmssqi8 cmvtt10
+%
+/TeXf7b6d320Encoding [
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
+/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve
+/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
+/suppress /exclam /quotedblright /numbersign /dollar /percent /ampersand
+/quoteright /parenleft /parenright /asterisk /plus /comma /hyphen
+/period /slash /zero /one /two /three /four /five /six /seven /eight
+/nine /colon /semicolon /exclamdown /equal /questiondown /question /at
+/A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X
+/Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
+/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u
+/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef
+/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute
+/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
+/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+%%EndProcSet
+%%BeginProcSet: 09fbbfac.enc
+% Thomas Esser, Dec 2002. public domain
+%
+% Encoding for:
+%     cmsltt10 cmtt10 cmtt12 cmtt8 cmtt9
+/TeX09fbbfacEncoding [
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi
+/Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown
+/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla
+/germandbls /ae /oe /oslash /AE /OE /Oslash /visiblespace /exclam
+/quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft
+/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
+/two /three /four /five /six /seven /eight /nine /colon /semicolon /less
+/equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N
+/O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright
+/asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l
+/m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright
+/asciitilde /dieresis /visiblespace /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda /Xi /Pi
+/Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup /arrowdown
+/quotesingle /exclamdown /questiondown /dotlessi /dotlessj /grave /acute
+/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
+/OE /Oslash /visiblespace /dieresis /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+%%EndProcSet
+%%BeginProcSet: 74afc74c.enc
+% Thomas Esser, Dec 2002. public domain
+%
+% Encoding for:
+%     cmbxti10 cmff10 cmfi10 cmfib8 cmti10 cmti12 cmti7 cmti8cmti9 cmu10
+%
+/TeX74afc74cEncoding [
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
+/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve
+/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
+/suppress /exclam /quotedblright /numbersign /sterling /percent
+/ampersand /quoteright /parenleft /parenright /asterisk /plus /comma
+/hyphen /period /slash /zero /one /two /three /four /five /six /seven
+/eight /nine /colon /semicolon /exclamdown /equal /questiondown /question
+/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W
+/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
+/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u
+/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef
+/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute
+/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
+/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+%%EndProcSet
+%%BeginProcSet: aae443f0.enc
+% Thomas Esser, Dec 2002. public domain
+%
+% Encoding for:
+%     cmmi10 cmmi12 cmmi5 cmmi6 cmmi7 cmmi8 cmmi9 cmmib10
+%
+/TeXaae443f0Encoding [
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
+/alpha /beta /gamma /delta /epsilon1 /zeta /eta /theta /iota /kappa
+/lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon /phi /chi /psi
+/omega /epsilon /theta1 /pi1 /rho1 /sigma1 /phi1 /arrowlefttophalf
+/arrowleftbothalf /arrowrighttophalf /arrowrightbothalf /arrowhookleft
+/arrowhookright /triangleright /triangleleft /zerooldstyle /oneoldstyle
+/twooldstyle /threeoldstyle /fouroldstyle /fiveoldstyle /sixoldstyle
+/sevenoldstyle /eightoldstyle /nineoldstyle /period /comma /less /slash
+/greater /star /partialdiff /A /B /C /D /E /F /G /H /I /J /K /L /M /N
+/O /P /Q /R /S /T /U /V /W /X /Y /Z /flat /natural /sharp /slurbelow
+/slurabove /lscript /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p
+/q /r /s /t /u /v /w /x /y /z /dotlessi /dotlessj /weierstrass /vector
+/tie /psi /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/space /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi
+/.notdef /.notdef /Omega /alpha /beta /gamma /delta /epsilon1 /zeta /eta
+/theta /iota /kappa /lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon
+/phi /chi /psi /tie /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+%%EndProcSet
+%%BeginProcSet: bbad153f.enc
+% Thomas Esser, Dec 2002. public domain
+%
+% Encoding for:
+%     cmsy10 cmsy5 cmsy6 cmsy7 cmsy8 cmsy9
+%
+/TeXbbad153fEncoding [
+/minus /periodcentered /multiply /asteriskmath /divide /diamondmath
+/plusminus /minusplus /circleplus /circleminus /circlemultiply
+/circledivide /circledot /circlecopyrt /openbullet /bullet
+/equivasymptotic /equivalence /reflexsubset /reflexsuperset /lessequal
+/greaterequal /precedesequal /followsequal /similar /approxequal
+/propersubset /propersuperset /lessmuch /greatermuch /precedes /follows
+/arrowleft /arrowright /arrowup /arrowdown /arrowboth /arrownortheast
+/arrowsoutheast /similarequal /arrowdblleft /arrowdblright /arrowdblup
+/arrowdbldown /arrowdblboth /arrownorthwest /arrowsouthwest /proportional
+/prime /infinity /element /owner /triangle /triangleinv /negationslash
+/mapsto /universal /existential /logicalnot /emptyset /Rfractur /Ifractur
+/latticetop /perpendicular /aleph /A /B /C /D /E /F /G /H /I /J /K
+/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /union /intersection
+/unionmulti /logicaland /logicalor /turnstileleft /turnstileright
+/floorleft /floorright /ceilingleft /ceilingright /braceleft /braceright
+/angbracketleft /angbracketright /bar /bardbl /arrowbothv /arrowdblbothv
+/backslash /wreathproduct /radical /coproduct /nabla /integral
+/unionsq /intersectionsq /subsetsqequal /supersetsqequal /section
+/dagger /daggerdbl /paragraph /club /diamond /heart /spade /arrowleft
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/minus /periodcentered /multiply /asteriskmath /divide /diamondmath
+/plusminus /minusplus /circleplus /circleminus /.notdef /.notdef
+/circlemultiply /circledivide /circledot /circlecopyrt /openbullet
+/bullet /equivasymptotic /equivalence /reflexsubset /reflexsuperset
+/lessequal /greaterequal /precedesequal /followsequal /similar
+/approxequal /propersubset /propersuperset /lessmuch /greatermuch
+/precedes /follows /arrowleft /spade /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+%%EndProcSet
+%%BeginProcSet: 0ef0afca.enc
+% Thomas Esser, Dec 2002. public domain
+%
+% Encoding for:
+%     cmr5
+%
+/TeX0ef0afcaEncoding [
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
+/arrowup /arrowdown /quotesingle /exclamdown /questiondown /dotlessi
+/dotlessj /grave /acute /caron /breve /macron /ring /cedilla /germandbls
+/ae /oe /oslash /AE /OE /Oslash /suppress /exclam /quotedblright
+/numbersign /dollar /percent /ampersand /quoteright /parenleft
+/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
+/two /three /four /five /six /seven /eight /nine /colon /semicolon
+/less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K
+/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /quotedblleft
+/bracketright /circumflex /dotaccent /quoteleft /a /b /c /d /e /f /g /h
+/i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /endash /emdash
+/hungarumlaut /tilde /dieresis /suppress /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda
+/Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup
+/arrowdown /quotesingle /exclamdown /questiondown /dotlessi /dotlessj
+/grave /acute /caron /breve /macron /ring /cedilla /germandbls /ae /oe
+/oslash /AE /OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+%%EndProcSet
+%%BeginProcSet: texps.pro
+%!
+TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
+index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
+exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
+ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
+pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
+div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
+/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
+definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
+sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
+mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
+exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
+forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
+end
+
+%%EndProcSet
+%%BeginProcSet: special.pro
+%!
+TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N
+/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N
+/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
+/@address@hidden div/hsc X}B/@address@hidden div/vsc X}B/@hsize{
+/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
+X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
+/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
+/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
+{userdict/md get type/dicttype eq{userdict begin md length 10 add md
+maxlength ge{/md md dup length 20 add dict copy def}if end md begin
+/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S
+atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{
+itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll
+transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll
+curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf
+pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}
+if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1
+-1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
+get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip
+yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub
+neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{
+noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop
+90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
+neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr
+1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr
+2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4
+-1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S
+TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{
+Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale
+}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
+save N userdict maxlength dict begin/magscale true def normalscale
+currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts
+/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x
+psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx
+psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub
+TR/showpage{}N/erasepage{}N/setpagedevice{pop}N/copypage{}N/p 3 def
address@hidden/doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll
+newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto
+closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N
+/@beginspecial{SDict begin/SpecialSave save N gsave normalscale
+currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N}
+N/@setspecial{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs
+neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate
+rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse
+scale llx neg lly neg TR}{rhiSeen{rhi ury lly sub div dup scale llx neg
+lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx
+ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N
+/setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{
+pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave
+restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B
+/rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1
+setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY
+moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix
+matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc
+savematrix setmatrix}N end
+
+%%EndProcSet
+%%BeginProcSet: color.pro
+%!
+TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop
+setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll
+}repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def
+/TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{
+setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{
+/currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch
+known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC
+/Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC
+/Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0
+setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0
+setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61
+0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC
+/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0
+setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87
+0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{
+0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{
+0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC
+/Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0
+setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0
+setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90
+0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC
+/Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0
+setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0
+0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{
+0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{
+0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC
+/BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0
+setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC
+/CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0
+0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1
+0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11
+0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0
+setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0
+0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC
+/Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0
+setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0
+0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0
+1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC
+/PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0
+setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{
+0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor}
+DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70
+setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0
+setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1
+setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end
+
+%%EndProcSet
+TeXDict begin @defspecial
+
+ /DvipsToPDF { 72.27 mul Resolution div } def /PDFToDvips { 72.27 div
+Resolution mul } def /HyperBorder { 1 PDFToDvips } def /H.V address@hidden
address@hidden null} def /H.B {/address@hidden address@hidden address@hidden 
address@hidden def
+/H.S { currentpoint HyperBorder add /address@hidden exch def dup DvipsToPDF
+/address@hidden exch def HyperBorder sub /address@hidden exch def } def /H.L { 
2
+sub dup /HyperBasePt exch def PDFToDvips /HyperBaseDvips exch def currentpoint
+HyperBaseDvips sub /address@hidden exch def /address@hidden exch def } def 
/H.A {
+H.L currentpoint exch pop vsize 72 sub exch DvipsToPDF HyperBasePt
+sub sub /address@hidden exch def } def /H.R { currentpoint HyperBorder sub
+/address@hidden exch def HyperBorder add /address@hidden exch def currentpoint 
exch
+pop vsize 72 sub exch DvipsToPDF sub /address@hidden exch def } def systemdict
+/pdfmark known not {userdict /pdfmark systemdict /cleartomark get put}
+if
+ 
address@hidden end
+%%BeginFont: CMCSC10
+%!PS-AdobeFont-1.1: CMCSC10 1.0
+%%CreationDate: 1991 Aug 18 17:46:49
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights 
Reserved) readonly def
+/FullName (CMCSC10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMCSC10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{14 -250 1077 750}readonly def
+/UniqueID 5000772 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A30EB76029337
+900ECFB1390CA5C0C3A04528044F266BA17BE487C79B94FAC6D6484684C5BFEA
+87BCCC77D40AD11552035E95E3007126418ED49B68468B38A14E88E68A267B98
+076F1C9769A5AFBC285E5B158EAC9F926F1D6C0B8F1D57D9C31D25AE27123518
+9D2CD92E5689E0213089BD268DA5E47525CB8EABAA4B78A15AEA34705889AB3A
+FFB8953B5B3482E52BFA0940630ADF8C0AC2177D907324299EE980E850F203CD
+B627962F43D5A678C44243CDE97853BDC6AB45FD5C09AD274DAF89929F583CC9
+CCC24BDFC68B92111055ABA5F26D2DC67C70906F71C2957701D65AE746A60C30
+40E6CB24B97FCDAD0487AE38A201FBF0E41BABD2181981A71940F1E707F91E5D
+C8CA50CB16D8702D188E56D014D92F76CE0B52ABDB9110E32438D2BBF3E6A40B
+7B005F10BB437812CAC6ED2996F7606DC962C4FDE207FF322782C343DF44CEC5
+FF06A55C630C20E9AE1B0D1C5673753C43BA0767D65D1B451CC6380D8BB3C4DC
+81E8FD8AA79BE993218686F29D3CD925566DD587F541A0DA1B1CC3BCEA2E6C7D
+5E1016F6917A871F1BBAD96AF9E867735017119A381FCF33EB2D3E1E7093FD90
+CDB0CED4818CFD9E201A03430CEC713620BE0D3254158931FB657C6877C1B3D2
+24030F377820DA58F4B95CFE645109F3F1B80DB5FACFD7D05AE2909EEFCF95AD
+9CB286C8B6C075CA2267C101B736139863186C193E31085E7C9FD88EF8BBECE3
+933542C85309013325B4BBFE9A5B606780C8580ABDA2F5D0064EBFC23939B307
+08568C3B7F5F053BF367DEBA349FABB9F760C44D100BDEEFBB01F27BFC61F955
+BF8996319AFFB6345B2B8A98B44F5A38C50838265CB12472AF474AE9A15B9E1E
+9FA09BC0203D7AFF14FFFD767F6823C6CF53ABF7C0D37135B5AD25825DE66254
+8E0CC5A2AB8A7F291A6F4D7B42A6D0E8B8673F6B9D3FD2F2E0EB1E5926C0B9E9
+CAD5525120301B483F24069CE96A576435EE2D2A1DB2E00D66861A5DBBD3FD9E
+ECAB70EE8EB17BAB9E30BCF8B950058CCE98A89E79D1DAEA79965AD91544B8A9
+C173FB8007058DB964872017EA042754A6B92F04904897CFFECA734A414A6D18
+2B2AF452485640BA9E05E45E99269CF73C85EF34CFCD8572CA3925E9FCA7A700
+4251BCC9B59FD6BDF18E1C8476366AAA2D8D7B89546BADC41E65E0EB01C0D756
+C1AB894E700E35497A67711EDFE64421910C9787B8967020D37F113D06D69820
+2A4403D5F10A0AF21344D7508CB7B7213039AF51F395F53A7A187D4C5CC4404E
+E02DBD12343460017FC5447A916F1131F5DF2C30AC75E33245E94C24750E47C1
+B696FF5356A33EDFD79033DF5DC12EE268BB2E5B56702C9EE3FABED2688AE0E6
+57E67F145B981BF66CBA13C4D4587982AABD15EEF5D655B91092E19996B7F795
+5BD02A6B21D0885136E7159519AA06C99CF9DFDDFB508E22EB22CBE8CCD8A90E
+7BA753B528322FD800E0BC1F2FBDB3F884119638649AC3EC03CA4506A3E5533E
+517C2286D8833F5457DE26E662A1852AE52670C475B7390225CD19132639F2D2
+5A58F27ED0129EE775B199C8A2EACE81CD6B0FF67824D86F0C4AA84104329AF3
+481D402CEF498A5B0995779B10FE332F226C21B3002FD6E5A01A5E30AFFA2C25
+B38DFBDE27272FBEBF13F7A9CBB8DED8919CB2BFD76A72B5077A2FC7D37531B5
+75278B22651A602F22E2782343186D53E6367F742A03C94A6E71488B2CEF7D90
+DC4E5243BA3531FDC7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMSY10
+%!PS-AdobeFont-1.1: CMSY10 1.0
+%%CreationDate: 1991 Aug 15 07:20:57
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights 
Reserved) readonly def
+/FullName (CMSY10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-29 -960 1116 775}readonly def
+/UniqueID 5000820 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
+7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
+A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
+E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
+221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A
+27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF
+5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09
+0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730
+DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A
+71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09
+4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C
+515DB70A8D4F6146FE068DC1E5DE8BC570317AAEA74A842CFD26F9591866F5A0
+9B4EAD7FD9DD9C3A714D0F09E304CD13AE3D2E8625B858A0B2A613382BDC72A6
+0BC933E43544B3E490F91ED7A5187782CE81048608EBCD6AA9F837F0A73B4CB8
+569EA492EE779CC5A843D2565CA9035B0D11028F7056E4273970CC1EB5C4EC5B
+514D732BB6F74AA1D8E81C3884DDF5C6BDB50908E0B77C8A202254084587F45F
+169E9B580C083AB7A3320A7CE9F82F79DF736E2B577A45DFE8944E55ED3B2311
+5543CB5630141440550DB37070158247A5D5B3754EF98D94B0CDF8E0F675C4FB
+93893E56E3C1EC51F40A8D6559DAE55764A71829639713C0D8806190CB6A5E6F
+A3922DE826D0D35432E79727A6F879AB753281FAFBFD297CCD82810525873C6A
+5F4398CCFF2CC73A7B2D9C3A50EB890E202575590D835EBE068855EF6BFFF76E
+C6D974670B95BF9FF230AA1E2A14698C5A264C69D7BCD71FE19257161600C958
+A2DCBD27156791D3C05E65EA8F71AF451F2D8725022F8FFD84ABE5BFFF70D46E
+C7195288AC1B31D57D2480F548D74332A9EF83E41913EFCBED6A42CE21673751
+F5E28CB40CDF9F7153AF94A1CA6218D720461A8FCA060E1D019E4BB887B9A753
+52D097E036FEC85186C6E83EE02EB7F92DC5B4C390346F76743E41830F258B4D
+1B75007AF453D8B3A792AB26B5DAEF5B2B083FC66D3D74060D263E200AC3BDD1
+066552921D3D6DC06458A458FAEF1F5F899644584615127D00C31AD5D9F3423C
+E64508514C6C14635AE5FCDA178868430B31B2AFBCE8BF8133DB86C3E9F5BD6B
+D2F0632CD72A79EC3821EB29271F9C64CF31B0A3665A9936F8D8FC82C2C3985F
+DD8A37FA4C8C55D4EF212BC964F322EF1D715269AEDC02EBE01FA1AAFE3E8132
+15F331A58BD1E4A1EBC8B2F0CE7B0A89DC8DEA12034EEC8713EB1F3F83C17879
+1E5C16AF7760B34EE396B7EA253739DEFDADC7614DF95C3A36BA1C8EDE04CDEC
+1A2870FCBA526803FA4883363B7C3CBA71BA2970E14AC228A404A13B2191CBA8
+A118C20E64C16CF10C7F9275803B4322BCBC0A
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMSY7
+%!PS-AdobeFont-1.1: CMSY7 1.0
+%%CreationDate: 1991 Aug 15 07:21:52
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights 
Reserved) readonly def
+/FullName (CMSY7) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY7 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-15 -951 1252 782}readonly def
+/UniqueID 5000817 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
+7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
+A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
+E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
+221A37D9A807DD01161779DDE7D251491EBF65A98C9FE2B1CF8D725A70281949
+8F4AFFE638BBA6B12386C7F32BA350D62EA218D5B24EE612C2C20F43CD3BFD0D
+F02B185B692D7B27BEC7290EEFDCF92F95DDEB507068DE0B0B0351E3ECB8E443
+E611BE0A41A1F8C89C3BC16B352C3443AB6F665EAC5E0CC4229DECFC58E15765
+424C919C273E7FA240BE7B2E951AB789D127625BBCB7033E005050EB2E12B1C8
+E5F3AD1F44A71957AD2CC53D917BFD09235601155886EE36D0C3DD6E7AA2EF9C
+C402C77FF1549E609A711FC3C211E64E8F263D60A57E9F2B47E3480B978AAF63
+868AEA25DA3D5413467B76D2F02F8097D2841EDA6677731A6ACFEC0BABF1016A
+089B2D24F47B9D66B677886B90AA787AD865B5F78EE434AA47B7B0F1244A4215
+251FDCC670FD01A92226E2C667C2344298D001575BDF782D969D836ECA11E229
+C7A17E28F70F9B17273FF243452DA885068A8BCB5165534F3996CBD8D97307DB
+593D606C197AFC259E691C242F6E1E651575B6852AAD54567905E6F542DCA109
+7F6DA24DC9112FBF7CE48B387953787B2BCB841873AED2DFA83339D39E14F4DD
+3A51584527AC3A93630D121E2AE0C89D9C3F2FFA767743B1276BE1E648041010
+0FD510F1A8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMR5
+%!PS-AdobeFont-1.1: CMR5 1.00B
+%%CreationDate: 1992 Feb 19 19:55:02
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights 
Reserved) readonly def
+/FullName (CMR5) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR5 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-341 -250 1304 965}readonly def
+/UniqueID 5000788 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4
+87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F
+D1F017CE45884D76EF2CB9BC5821FD25365DDEA1F9B0FF4CFF25B8E64D0747A3
+7CAD14E0DBA3E3CA95F10F24B7D5D75451845F1FB7221D7794A860756CFBB3E7
+704A52A22448C34812C3DBEDD41892577AABA7D555E9298C1A0F7DA638078167
+F56E29672683C51CF1C003764A8E7AD9D8ADE77B4983F56FE2D12723AAD8BF36
+682CFBB71B1D12210144D39DD841A971F71DB82AC6CD815987CDCF29ABC3CC96
+5EEBD5D661F452C6E0C74F9ED8D0C5B3755551A172E0FE31EA02344176E32666
+14B6853A1C303A5E818C2E455A6CF8FC9A66DC6E279101D61C523BD9DB8EB82F
+EAF4D7FDF6372383C0794C4568D079648689A199D4B65BA646CF95B7647E4BEC
+83856C27A8EF177B3A686EDA6354FE9573E123C12EC4BA56A7E8BFB8F9B75147
+9DD79A743968F36F7D0D479FA610F0816E6267E5CE327686A5485AB72201525C
+FB3B7CA10E1BF26E44C24E1696CB089CB0055BD692C89B237CF269F77A31DC81
+0F4B75C8400ABCFDCEC6443CD0E81871CD71AA3064ABDE882C4C52322C27FA8B
+41C689F827FB0F8AAF8022CF3C1F41C0B45601190C1328831857CBF9B1E7D1AA
+246117E56D6B7938488055F4E63E2A1C8D57C17D213729C68349FEC2C3466F41
+171E00413D39DF1F67BC15912F30775AFDF7FB3312587E20A68CF77AD3906040
+842D63C45E19278622DD228C18ABDD024DD9613CDC0B109095DB0ADC3A3C0CB5
+AB597D490189EA81239E39202CBC7A829EB9B313A8F962F7879D374ADF529BD0
+5533EF977142F647AD2F5975BA7E340419116099B19ACCCC37C551226DB28A2A
+49F6394324396BF03FEDC34E47427C7B14B81F600732AA1A19FB0A52B6E80FA5
+C5281CFA8ADEE3DEECBEFA91BE8A455A4B93364E087A8EDA1EAA0E0E14B621B7
+BDBC9CF2476E4DF79FFE7967F12B36403F63B3E9C5D00653975872642043D77F
+F178369F138268DD61AFA06EAE4CFED07CF966122596816385AFDC28836247E3
+C3F5757E7608292182CFAD5510BE507FB1F760369A2A9D8DD89321B045B89C38
+739A1B860E40DAFBB62DA7CA0BD0AED0BB12AF77B8DEC9ABDA40C1712672F3BE
+43AF20E1BB228A0AF7CEFB850AD9E4BF4EC373BDF89737C826F92A2FD09DC597
+0504D1D0995C22FA958EE2AF7B3DA314F2DB067139AA03392CC74B983A578AD6
+0772F1523F22957CD61FE32FA411F8058CE4A7761048D44FA9DCA5FE9282E480
+73B8475E07C262FF6E869D40E6166F56F5926CB375064A581A8C9C7B348A907B
+0B781FA90718C352B08F20A56C4C3035DFF64D111E1242CF54C2585141CE23EC
+92F96E7274A24BD53F700B1D4DD1EAF2531D33A28B524C03CAC60C9FF966C7E2
+340719D287EEFB19BAD2D2C9061C74AF6E8E9BEDA9D0EB615FEFA0D1DBD2D772
+DE6740409F4B947603305CE2CEC7C5A31C2D0EDB2BA4B91460E08C4B8B78D3A1
+B6C46D81620CD32F1B780532ADBBD9BE97DBC21160165907E2BEAF1693810F13
+08BCD17CF9D4965EB57FFEBFD96E5F3CE21A8BE43A3B1127DDCBF04669B64029
+E9C127D2E9A6566F46BAC76408F9770A9DA2CD6DBE10F3D014D2B741BC7ABCFA
+9664ED5385088283F01FC2F5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMSY5
+%!PS-AdobeFont-1.1: CMSY5 1.0
+%%CreationDate: 1991 Aug 15 07:21:16
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights 
Reserved) readonly def
+/FullName (CMSY5) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY5 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{21 -944 1448 791}readonly def
+/UniqueID 5000815 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
+7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
+A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
+E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
+221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFBAF552B11EFFB6A16C
+F03FB920C15AE724EFDF0CCBF00A838D34440FF9FED532F44036AD22561184C5
+283722DDFA7285E62754372D716D704AC0E00B2F6AB67154241C7449AA047833
+94CEDB08E8C92907FE72A0B05AE36A7B9226ACD6E7890A0B528FDDE84A950FC6
+801DE75CF2E739E9121149CCB8B1C87A106822648D84A3D3FBF295EE6C4BF403
+BBE9A1C1F6DAEDD1E642ACC486E609703D7612BFFD10C324F5DC710811F7F614
+3691B400E3773987424C0D2B0D8A736873C6371DDB2442F05E018A2B5CA9A4AA
+17AABB95D09E5890CFFFED5AC01495D89A53D3C89F3D8DBAC85E06561646557A
+B16BAE67D1DEF37B876183D3518306F16FC9A96C8AFDA5579A7CC82ED0CE58E3
+574A85B0F37DF7414BB17DD5439734ECFF6CFACEBC4BADBB74A40726355F1C54
+16122BDAE845AD3C8209525459A48B864C38B7F2DDB7B4BF3051E085C3E9B491
+31E2893FE7871618F7DDF0A7165BD2DD4A0C05BD33D9E644ED7C50E444540755
+C06455A14646AD52995A3F9A74B44EAF2EDFA08D22FD564184381000D722A9AC
+886069C5755B1623B32E074423164D0CDB91E323970D42F3A3E059CF684D7F6F
+99CDBC03FD1EED3678B231093C986DC40FEBC47DF0828C6CF7F61ED6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMSY9
+%!PS-AdobeFont-1.1: CMSY9 1.0
+%%CreationDate: 1991 Aug 15 07:22:27
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights 
Reserved) readonly def
+/FullName (CMSY9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY9 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-30 -958 1146 777}readonly def
+/UniqueID 5000819 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
+7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
+A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
+E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
+221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A
+27D1663E0B62F461F6E40A5D6676D0037D33F24E2FAC2B0009AD3C8350CDF8CC
+65BCA87979C36D14CB552E9A985E48BE4E88ECA16DF418749AF04FDD2B0E1380
+D281BB2476BB45FF30946B247DFD7F57305FA87E50CA338121C71CDFDF927A9C
+77FF14CB4A1D6D80356FB1171ED38C37702350497B44E42CE31DB2F493807DAA
+15B887C671199A54C4C1294BC520F5538C15556BC43C9F62342B121C6DCD6C5F
+491DA47FF360201EE21C08A781ED0589A6DF91B99FE118B9B29E4F068672E52F
+1A06C514D91C4C937D4E642503392B1CD1B8F5332A2C13884EB17C99A3A4EC0D
+3790FC10C0EE942D751FCE2C39DA861C35B38C1B6DC0154A5B3EFC4C42AB41A2
+7B4BC9C80BE64D1AD7ADF85762BC2773CC10D3FB97ADC88EAEDB874EF2ABAE63
+369F06F069D96AFB70636D83BF1902507189B5B1779C6F883695091F124C846D
+F1523EAE59F33CE9603880C9CF64C304C3F804D8BF3EE8A3A8674B715849AAF8
+E68B847D50E4E4B58DE8551C3D2DEAE571DD19F38FC55E9C77F82C7C184EAB62
+8643F3884FDE7FF17C778EB61314AC10808E3E62724D7AB8E36754C97B4E73D2
+815B45779B74EA4316F4737BD26423BF0A9A2D6D690CE118D0813FC3AA496647
+7CCFCACD14A8AE7523A81C44F8C86814215F7FD1F6FE31BF7E0BC5CEA217AD38
+64CC15FA35D51C3A4D64B5E7E4B0829718F1E111C881ACB3A0E1718DA45E90FC
+EED45ED1FBAA18DF99640A187B48B60CDEE7B6CCAB6602152301E30779633F3F
+8BD87018310C40AB6815F2B5D862D107B239E2648462DAB117D17DD46B3E3CF1
+95AE7E1D74634D8A6C572E5A96761681725A9355E22168AE84895F1622EA30E8
+FC2CDB55A91BD460EE75A576D6C21AC7D60A824FAD9F6EB961D82724617AEA45
+FC7F40EE598769C70137C31AA7AB2E808D9E7A39A3C2BBD1A557C27F406CF6DE
+7C858D050F1CE3AE99B91C70D8B83629719E217B9622CD4FC3539AD645DC6936
+66251475B0C7352479B6A4D71E0EA18A2F08A561369542FE7CF37AB48B55EFF1
+8A76D87CC0C9AA41D021A18E647B35A5DD93E062B1A8EA4A2484B41BEEFD63DE
+758D0A63D2CEDE024B7F73ED186D85D8436C92BEDFD397CF19ED77F655222C54
+FD3E6C6689AE542CBCB357E3287B23011735D890D33B4EEC265E36F4A2016E53
+278D20DF5E2826108F0E927F9256C67CCA7CB0EAD8F7C1852D3C10F40F839EE6
+3799A93C8655BD841226518B0E5CD4D107C3E56B13F6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMMI5
+%!PS-AdobeFont-1.1: CMMI5 1.100
+%%CreationDate: 1996 Aug 02 08:21:10
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights 
Reserved) readonly def
+/FullName (CMMI5) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI5 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{37 -250 1349 750}readonly def
+/UniqueID 5087380 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA06DA87FC7163A5A2A756A598FAB07633
+89DE8BB201D5DB4627484A80A431B6AFDBBBF23D4157D4AFE17E6B1C853DD417
+25F84CD55402AB88AB7EEFDEDBF2C2C731BD25567C53B474CCF739188A930039
+098A197F9C4BE7594D79442B2C8A67447DE44698321145D7689B91EF235EA80E
+B600AA8E238064F154284096C4C2554EFE8DDF13AFF8D3CE30E0999375C0FEE6
+F992DEA5FC3897E2CC8B7A90238E61E41622DE80F438DD994C73275CC52249D9
+F6686F87F394FB7BB668138B210BEC9E46415A1B58C990B81E7D7DD301143517
+4C2A259D2A0A1E200F8101469C10D7D537B0D4D39296A9AB3F132DA9A3B459B0
+F850E2B3A03BDCB35AEF82285D19C38F474FB414F8EC971B994D1C7DD753B271
+2B71549DF497C665DF0F266988209D9EB616E4D9BA229FF984E7A886DB01FD21
+48ED2E4859FD6416C2CE52537464EA884C8C9C2D1083E2B83BE4B766474C23B6
+6E8EC5003200AB10514BB44D14CA700416AB6B2683E80862E7D5B49A05526A32
+554BB23AB8B0824BBA198E3825CE82380CC0FECF46651E3E5D77F09465E73164
+20342822F29572BC7F73F2C3BF95ED3BB6FDEADC20C6AC866C4F2C679594D7E8
+8D944704A3C5D771DC39503BECAB89F34D8CDB8FDB91AFE21F3F0260D05E90C5
+73E2C13DFA022C4522E5918EE25038A0498FBB530DA33B0AE238B1C6ED03FC04
+2BFED8236E07820C5BAB411EAE1B31D93A2FA7C374B1725FEC359ABCB88E2C89
+214529A263D795AACB0B95A3AB2F4E08EF350C282CE521716DBB06E5B8291B3F
+5D4ACA230FA192F64BC902A4C8842C0F916F92FBD002ADD408BF0401D0284FBB
+F05D4C6DB631420747CC902C5E1617E6573612FB26C8378DF41FFB5048D3CF06
+4893DBA48EF4B043D760F60C75712169D16C83EE020C45369E443E853E1809DD
+F395B812067D6FDBD26111B34F42C21036AF952D0D767FD17F6959D9FDD46005
+D64FFF54772B50BB9B173AE79702981F58F9F235C591F476A31852174DF0619C
+A470359153DC32610E782B204E7945515464DACE9099B81EEECC7EBD4B5126AF
+C3FD9DDFB329AF1C95C41FA4A5F6958869509A23BD7210386329771FA46FF926
+0E54AC35106253EE140449425A8670E1F92B178A02A58EB57540F4BD8110E548
+BB584EA6D625C5F5FE0124A98E49915F1A1B95D2125874360EED1C4379FEF3C6
+90E5780C20309F11F2F23FAD635C44BA030B39EFF083A3ECCDD2641DCB59CC30
+728C0DC15829632716892C6A528D090D10797E0FA0AD850287D613184B175D96
+AC08EFE88008404569CEBE5A9F46211304315CBEE3963BA9704EF6714BBBBD39
+121C3C81A97EFA58F0C7AC3ED689BC483F4C4B95487463514827EF3D2BD733AB
+5637419399A7D4EB2D87B300C70236C31D6B7F5C4440EDF50A8EA44E62E4F161
+05FA8B134720D1D8F8309287D40D6938F0099042BD73288AB13E80AFA3757E73
+B786329CF748F05A897C4575A8D8092BE6DF663CC99E932226D1F53EA718D5C1
+F385B4BC11FF082E2AC564C09DCA43C25168BCFC75B907ADF6BADA8D5F818AA8
+2A880CEB426DB232012CCAEF33A8CE17828D55F2D8CE2F8D5A943F13FD6816CB
+3D45CC1211F2CF37361544F591F2FC4B93D08E0F4C76420411D47E97348FA0E4
+893BFD68D84ADCD3E05E69C598C2DA8FA58AF80F4272AD9D2896E2E501419BF3
+3D6D937B2187053150BA3080A2994509D735DB00B2D2677A5016EECE81986E86
+A9D8CD8CECA20D31BAB6CFE6F1456B7166B20FE43631E3DDEDE1F3A250CA8094
+4CB6344741B710178FBAF7908AD85846D81270CB571005946BFCBD404AFFEE2B
+B02CE2DE1D9001D468F3B557757E47F194572F1039C1DB82B0E186E21CEB6A73
+7622ECBD869BD2402829B739C1C2C1279763EB4E5C08E4865A104A8B837DAB94
+0D4998C87671A64627EA949D7EBDCFCCCA5E12FAD9F8277873D07AF3F3114D15
+8E0ED252E0B33F2B667222283BB3A9C77144B1B2C5BD3EDCF0E8AA09869E8ACC
+BDE16574D82EA1CE042D95C74363C9C37FED7F432908E89B95A9CE6746CDB333
+09B86B1B5DAEA9D3C223B91A358706A2CBA639C826F2BB9230DD0D98133835B3
+00FD11047F0712676EFCD641603EF12EEEB6729AE025DB72D13839D6DE1CCBC9
+2492CF0F32EAB5CB31D925D75328A69497FF6FA4ED3D0B70B7CB4EED535AC4D5
+829A9BE7A342AFC6F0FE895EEF25452BFFD5A24A115E0451CB24199CE712DBB3
+EA2A0FCD5DA832EDD4ABC59FA189740A9881D61CB72DA1E944F5B66D9CDA8C3D
+C3A4908041AF6FBC1B504767E3750F64635C38B8762EC84CEA08F82B8901AB4A
+229AFC0DECFD43BC76B1C517BA5825AD7A35DF182D15AF683EEA010EDB7E50F7
+834BF37A49FBB177A9913BA7A2FF66724D1615E83AF7F7E125BCA7BB406ACFE9
+362447FC7D020E09E0DD80CA38CD72E2DEBCADBF788782C65696DC4417B51D01
+D38725C806F3113A73E3A87039CE836E5FBD4142D5DCDA40A768522A4EA3A640
+42CFF15530365EB08E35D810F95F552A211CA92A73D2EE6546B6670A01410F38
+5A06C4E8C650FB3FE2102AA210A9A64D621FF66B204CB3451B58B32B7A730D3A
+52DB658E78FF2DABA405A8B4BE261A44C74BE07AD72C4CD7D3441950F2EB6635
+F258140DCC6CE49FBC94BAC6504BCF94DAD5057D
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMMI7
+%!PS-AdobeFont-1.1: CMMI7 1.100
+%%CreationDate: 1996 Jul 23 07:53:53
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights 
Reserved) readonly def
+/FullName (CMMI7) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI7 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{0 -250 1171 750}readonly def
+/UniqueID 5087382 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D77639DF1232A4D6233A9CAF69B151DFD33F
+C0962EAC6E3EBFB8AD256A3C654EAAF9A50C51BC6FA90B61B60401C235AFAB7B
+B078D20B4B8A6D7F0300CF694E6956FF9C29C84FCC5C9E8890AA56B1BC60E868
+DA8488AC4435E6B5CE34EA88E904D5C978514D7E476BF8971D419363125D4811
+4D886EDDDCDDA8A6B0FDA5CF0603EA9FA5D4393BEBB26E1AB11C2D74FFA6FEE3
+FAFBC6F05B801C1C3276B11080F5023902B56593F3F6B1F37997038F36B9E3AB
+76C2E97E1F492D27A8E99F3E947A47166D0D0D063E4E6A9B535DC9F1BED129C5
+123775D5D68787A58C93009FD5DA55B19511B95168C83429BD2D878207C39770
+012318EA7AA39900C97B9D3859E3D0B04750B8390BF1F1BC29DC22BCAD50ECC6
+A3C633D0937A59E859E5185AF9F56704708D5F1C50F78F43DFAC43C4E7DC9413
+44CEFE43279AFD3C167C942889A352F2FF806C2FF8B3EB4908D50778AA58CFFC
+4D1B14597A06A994ED8414BBE8B26E74D49F6CF54176B7297CDA112A69518050
+01337CBA5478EB984CDD22020DAED9CA8311C33FBCC84177F5CE870E709FC608
+D28B3A7208EFF72988C136142CE79B4E9C7B3FE588E9824ABC6F04D141E589B3
+914A73A42801305439862414F893D5B6C327A7EE2730DEDE6A1597B09C258F05
+261BC634F64C9F8477CD51634BA648FC70F659C90DC042C0D6B68CD1DF36D615
+24F362B85A58D65A8E6DFD583EF9A79A428F2390A0B5398EEB78F4B5A89D9AD2
+A517E0361749554ABD6547072398FFDD863E40501C316F28FDDF8B550FF8D663
+9843D0BEA42289F85BD844891DB42EC7C51229D33EE7E83B1290404C799B8E8C
+889787CDC2B27F188AB67448F8867C398C58491975019BC7944079F534AC2712
+3E486698A1394AC42116A23790001676548773829EF12493C74F1F30EE403206
+7034FA7968FB8EAD8DF979477C2BFEE53AC2A56843C91F8ED461EBCE3E79993E
+92AC4C5876E33D7A16FBCE0861AD6DDBA92DFF186347AED137B389E74F0EC435
+8FE694912C198852B72E1E1A6E3F805D9AA88B3FAB04B7F658626406B37681A8
+73580A0E96B311CD54382DEE5527100921F4EFA2E312143C10E54A9284EFD871
+2C72D731D667173AF828D327D8E78E2F52438C9F947B8D52FA7FF90586106812
+F69AA584B2D5C4302DD2981010174216191EB31FA1515A8D6CDD43B9BAD34DEB
+E5AC46862CDDA2B42A65FCF0A81F2A999A2B343356EB62CC7F607131A931EB2E
+5C73374EDCAB8D22D2034EAFDE97AA8773B8F105D1D928EBA2601A1563D21D07
+23C3FC34FECEA1A86195A247A66379B9B850CB44D982445F4AF7A7E7288D72ED
+20F89E6CDE848F86421A2715025F0CC56718CFB53D2C5CE01BF74F5BF0560393
+66B89D42C31BE281E4E8AF91059869B08AF3DC24D993038F39640B9116F780AB
+D42ACE572B3C06D718BAAF79FD8D80F8303042382E12F225A6F828840F9445B3
+BBD8B8BD57B890F780E2E1F0796E63BA954A23F402C4BC2476E322DDE42C24FD
+F727B91F1C0CBD9019B8F6938132A41273DDE87A035F29F90BA932C3F55ED459
+65BA36B8415D9AC3E5954E7BD8E6C360635F7ADBB0CC2176EFBF2B5BA30958B2
+5C05F41D84D32A6730085DCE9AF60FEA264698AD719A469C025E0DC391C4B7FF
+5838CAE3337D44890D079F3E32EB04AE122D653F802D39A1807A2BEE2B67C2F5
+8FA84C9B62C1CCF81F9907AECD8E9B1F320CE70446AC3BB3FBBA495EDF58B4EE
+6E0872BEAB8B93E842B084CBA385CCA725AE0EB6E0108BC8B0A380694DF14574
+FE2F721052D6BA099F271B6EA6E3C2CC56F1791964A7432836427558FE16A09E
+F14BAEB43BEE59DBE82D893DA7F88EE847B2E1B120DFD66CA48FE59379551C64
+A0B65D3324DEBB6322079ABA4D7A85494AFA57D184D39A5EC70370050DA6B394
+A9B67E14499AA03E84E5077AE91BC128E55314673480DD8B9A6B36F742D9053B
+397A493DDB579E8AF9F90E51A5B202182A621123B5B24EB6465245C96969E77A
+4BA4D33FD54209CD7B0F2E5B619F8FF2D0FF55A7CCC5B16043301C09BFE96B0A
+49763BB9FFA9B16A021604CD07E671CCD02DD34C239325EE7851D0892997F66C
+960CF88FE12695E307D460AC9604486DA9584E7082341D25BBDBDE8E8C525E23
+3B427A8B41BC9CA14A5982794C6405840E89D6491615E6A6584998FB934BDCAE
+CC4D9A6356C4DDC113E51A226ABD75C62EB74B42309BFD3896D07521EBB5FB78
+1C8733083B512363CAE98960F40D57CA9D4CD8E62E75E54DF1EFE8431D3967D7
+EF1C17D81475A9CA50868785AC630CADE1098141C8C05C17793A9A2E828C5F19
+1AAEC3E7680860C68339CDDA8FC5F4B12E10D3578B27FF1C1A601F6F433DBD33
+0474A9E2A468F8CB7EBBA8F5E0CE1DB1D4AAC1A5605C389F2DAAE6EF4F43A245
+A68DDF01E0AF8D318404235C3E994E9999F6F7622F72DC7FEADDE93AE84D0D7D
+88A8D45B82B492A9EBF263EB3BAD384E64BD30A573A7734BC7B30828EC49AE3A
+561BFA60292EBB75A10A3A37737AA23E3B253ACC51C9C3F6E8ED1B03DFBAF9E8
+D1FB0A7AD35E19FBD27ABD6B0DEBA7906A8EF454B45E57C249CC89F0B54D84C9
+C323E42A0248630BCAB89F817F428C33DDFB9E0B6902500C27038CE45701DDEE
+AC686AB030B778FF7EA1B971B7C6F13DBE58528162D1719D8B312EDF1D62027B
+9BBB63192C8485F6EF0CFD08C6C0E5AFCF2478DD1AD17539835AA9AF4DE51AE8
+AA3EF3317C3FF8C83C4377C0C2258CDFFBE527CA464ACAFF8AF9BD1557545E0F
+AACD3C657B05E23130B8D5F96929ADA2A4AFA28A445FD92B13E98C29879D6128
+C66AA85954F482FCDE9899F8C23B1377A97831B8D71EBF54ADD640FE42C682B3
+1E9EEAB8FFCE406EB2B1C56330EBFA7353E5A0924A38DA8D546D1CB04B0DF081
+A9F2FE3446735F706BE1305093B8492798442DF0CE446F9E5ED4486A6FEC2BC8
+DC66FEC40D5A6C77578DCEA3BE82BE2A3A296235127B045952EFFFD0DE4ECE2D
+399D16656366B397C87369E9BA4793D67C41A9837512F15CB1ACE5D84AABF9F9
+5E2EEFFBB8342E54CFBE9DE04852117F0E811752E47710DE625BE153D74C662C
+EBA426BACC7F65C9188BA927A24D23833BB83B65DC8BCD4291D1047030735114
+AEE27BF06D30576BD0A93575AEDDDCA5F7F9AE67E38F8A966242E3F7C23661C1
+FB47224AF60A12BA667456FF424BFC5F8B698507FD85E46302D5AE94DA3BE25F
+8905E97CF382B2929618A5784F0BDEB12708B43DDDF87F8B807007CDFD680D27
+FDE73EC6D04C656D863F4E7476A77541326531C06EE1F1A74B4B4E692CFEC5DB
+54CE89DF593F1EF18659C24163054EFB0D82978BE093F645AB1A40FE7711C8CC
+F9F91DB275BC1AFCA72275E74C1752D392A0808C15774AD528EE48F044BF484F
+28CEF771745929530306EB3794D6DBD192727BE335E5B92D7478276F50CD8FB5
+0813F8B012B3E606E6EE656AFDD5A67C4E4A522BCD6F1A7C455E9040CC498DFB
+68772090F3F455654825BE88C4E21A67DADE41170165651700304A0958186AE4
+C03CA7123F551828CA9BAF9F9098CBE08BA1203C9984F0C148E9F2A6DAEB0F03
+042E8F7251BBACF5867D4A4EB7192FC62C13FC57A18D4155D2083C7ADEB9CD78
+B4869EC89681B8E2314B6B9CA92F37AC4B564663F1C4BBED70685EEC40666912
+562D2735CE1F6E6946E37981775205EFB242663573796AD32310ACFD8B4E647C
+497FBF1849568977FFE253D5EF562C66568703C2D17385E652D5E9706E40DE2C
+2E8ECFE5151046BEE842BF6CE6192B08D59CBAFB2EC95A2FCB4446D8E51F0AE4
+1EB2A5F638013EE11E4E20DD026787152DA30179A5A18C927990DB542369AA1F
+714D7F504AEBB4D91B661B95703325FDE8AF62E75EC97B13B095BB0467FC44FD
+345C5A02B64DD98407702FC2473FCDBD8E491DEA6DAF5D11A1D91CD712F2D44C
+B283C3953FEA3861D33E0AB7A91D0F6A65219BFE11518DA86037E81745257115
+C14D84C646CC8D5C9195787B7766996D4F76134FA512AF41DA563D09C0AA2EE8
+5733A14B4826CE3F4065AAD92A22665F3DC5628278A77667A626B24C567A9ADF
+ADD470036F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMBXTI10
+%!PS-AdobeFont-1.1: CMBXTI10 1.0
+%%CreationDate: 1991 Aug 18 17:46:30
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights 
Reserved) readonly def
+/FullName (CMBXTI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBXTI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-29 -250 1274 754}readonly def
+/UniqueID 5000771 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D004B836D34E88C20EEB527CE1124209388A2DF
+E27A8DF298A2693A9D529916AA0B2176E6ED237F69D84A8FEEB36861D1847207
+BE2BD61C6A412FFFEDFF13AFEC32AC7735BCCE5965F5966418A62ECB99112AB3
+3BC938EC590FF6922659125EB67E260BF02885E49BA6019E696D33F0B53606A2
+F515E0C45F323311613A94B838491BAB9FE230C5CC79D22925E3D882799F2707
+C32975A494F0F9513E4D8332E7E54470D9721FBD345CDBB48286F2F19CC6D66E
+BB631DD6476A509167A49CA525A72CA50E82C1D08C2B372DB54C5949C753B632
+2009B761EB90492ACD3CBE6A35CE1B66F3BC4D8DC36827CE4261A703328451D1
+879438479917C1647772999171DCCF1491A1C9086E0C6393506768F8757BD81D
+141C46EB9BF507EEC29962A0072B6C5D8C8588F3D68886CD2606DD3BD2FECCEF
+63245494E93EEA12AAFB06110E54ADC444C7E7619627A48A464394E5DE06EB46
+4C76A2FF010318BBE48B3776C826A265C66515717F7F2E943C60EBAB23D96B5B
+FD514A1C4E79BB3D3D2DEB936F90CD3FABF7B09FF7F564AB5CF4AF6A40E869FD
+395885A88F4A138B3CA6943A2D430BBE43D91F7F17621CAF52FB7161DA3B2003
+82244FB6EE792DCA1722C03392C296C029A2DCC5BAAB3EA03F8DEB039DC83AE1
+763AAB84776A2CCFFAE9EAF0BFDAE417E8BE682D237FFEDAF224AC09C9665019
+165CE32F5349E857177D94AD6396570932E1657ADE4D3FF57A3419946CCD210E
+57E5A1D91CF708395942527D127606350924D71BC21C6F969288B1C8CA3404ED
+E6219985F7301A20621368F74747EAD38990A4C9F2B62913B8FDB93657409FF5
+178DAA7F1218B6F8EABB0BD9E0D61A82A79D6B4824BE756E96E643D04C4D419D
+EA5D7FD17218AE5BE43C7C7FCCA887291296CA23ACB6E4FDB42A8BCFAABF3A72
+47D903208E2A61AA58467F6393DF2406BA706F2DA58A99C3FBC64AFC3167A16A
+6E405C1CD0307EA12C6F59027DC38A9B51D72A0F0D4985EF8B4FF1B7734F34BF
+2225D04218C9E6D83FAFF4CAFE8053E548ABFA8A1B2F57E4497F122805BC7292
+8C07BD6ABEAAB7F3F29966B1F68341CABA319AF8D81E1687AE5A87BCD83B4ADD
+FC022D2493860742D73CC1484DC38D0A837915A2ACCB018A038765E43B731340
+843023B843BD5C3CEEC085763950DE7A2B5E1364B8C4284CE8A01B16C7EED548
+21F5D583779650EA0FAFE73D1214BDE7FF53BE6284FD793D1A5C9113E65EFF84
+C76436764F6672ADE2614F86BAAA6DADCF7623C791E45BFBF89B1D4E22F09BA2
+9BA14E76C6E246B7215815F402A89F0B0E0FC3256AD365D6CE74E11BDDEA8824
+A387B188B425BF5A00140CA9C057878D330B770FEF2C6DF873721BF826BFF862
+6047A2BCE7D6B096B553E180A9FCA15514B4FCB1CB2A2665A97C9FC01539D240
+EAA7178D33374781BFB1250C2194A486B4247812FA4996CE6CE4E501B93725C5
+2A37752C9FF5ABCD113C9047BD21BA088974D294445D19F751B5580D86ADC8E6
+93554394789A1E87236D69F191393AA59D8B9356DAC33926FB600AB62B7011B4
+F739507B8312C533C8357984FF5E0D9474D2B2B62FF736B4D3C8E8DAEC148831
+53606B8C245D4E93E9248D462EB3CAB53E89EADAE5ED1B739C803A65F061E242
+60FB9FDCA9AA84966E5BD0BA12D862F30DC38E6E26D37BB3D7F649B7A2606472
+C0D911FDD0C84E62952FB043AC0BAB1234079AF109156BAC11AA81E297B3E797
+13D16C553E0F2ABF37ADA7AAC4B54FEFD89E02B6F839B0D0EAE3200DF5EA5CA6
+ABF15982B2AEF9671BF5DA347BA1546514FECB4ECD915C04E94CEC5277F6B821
+819B183ACC312B5485862E91B3D6CCF5F6FFDDA261CFEF4167D5A09CF6E8C018
+A0CB32843AE14BC72459D65550AAF364384C9BE9278CFF75A34F6289466BFBEB
+0536C5179F8EB8EC0BA2DF992AEE5EC75CCEB4E7EBB88741DEE53813B7242D79
+59FCF06D4A7CB7A83D8725EC038DF2FE91481E51E48B7A54B908D8BBC04A95AF
+FB084F12476C44A28677D1FC9C18CB0CDB16C8F0CAA9D074CDB8E473BB7F2960
+9B0865CCBBC1179F799407D5F3058F34D99AC13F55957218FBE14231E14A4056
+82FCABE094118DB5248FB73B1F2184B3F38006FCD42FB9C1E0D6B4E9B65CECAB
+D72B57CE0DD32C8F2A35D804595086661018F91EECF98A50FB3D439F36F1BF30
+3944956E93B34900704256016F8D1D7674D1C2A4CC497536D28DB14C9446F2C2
+BD6A54AABCBC6F8902ABCD17CC078F9DABD1C9B8592591B395F87ED0383439F2
+5862B9B0C16E28C963424D8ACBE62C72BE08F3E265D0FA014827930F0831B129
+8E77B7FD86560C960BB238B68936467C748BD04E25F4A813E9B1EEA6E8862180
+F5E6F6E8DE3D35F41188F8392FBB329D0A509074AF88A74AB032ED2594DB44B0
+750A5FD5623202FC13FBA525BCEA5764F193B1C1874E37BF237CA5C762543C61
+33EE795E30A1BC6332D025339B29B55CF3141EA0C0CE7DBD9C10F4930ACA4C29
+623F634DCAE17DFBC9CDF7A49F34FE0FC43915CB29AE026D6B737DBFFEC75E99
+B86A8B2FE1898B1B8451995DCDC2226F2671F395EA7D2B15E57087867B4844DC
+22C350BB74BE1D90721109E5E2C622707EDA18637C9C997EE7153350F1C0AD19
+C52F31501847312C1DA437CE434CB6F763BCA482450AEDCE0DEA98551F6F7DF1
+596CA7C0A79A7CE9F9B8D427E8D3C5AA351D51E41E6E0E4F744EB9747B046633
+B9FD901F053CFEE8566C7A5E737839B777F4DC0545BD038E2B4E0B43D1331FCC
+D0CAB830E9B6C92572A24B8FE3567A87409981A028F120AA663AF63596A3EDEB
+5783A0A7E371D75D20949051B23676D12F9CD0AC8307403605A9777301D8AE13
+0817870BCAB1FCFC92BB6414E40F452C2C2F1174E47CEF667767D7D9957A5828
+18158D2878D334B92E3A5B14354D19014BFB68C21C2163B601AA43231559A908
+EC1E3A73B41B1F66AD1FBF2BB596F930CF96B9510D6C6BF2692F11AACDF9BADE
+176E4F8EF6A704BF4982D7B6A18C100F3204EAC427CDEE4DC8D4D552652BB423
+DE767FC85EA6D5240DEACA766F8B9478612B206DBFB67D96AEE2E06E0DA26976
+CDC085A28B0E0709A6BBE4D2DC539BCD0CD2FD8397E10D35F3C66DE53411B6B3
+19B67DFFC7FAD49355F1F0361193F1BB11461871473E2B009CAD0D60A243776D
+6FDE3D5086D772FDA88E282775ED357C59C2CE4F3330450BD2C75A0A2DEF5511
+47F01F0AA2FAB1B33EDD055AF3A722DF3632BB71B68348026A51C77AD046281A
+4A31934DAA12CBE4CB7482CABCE84FF893491E1F83E14DF4D61187F1FA3250BF
+A64BE9628247C2444FA69280EC177FBC0AD3FE7C56C4025FD390167ABA4B493B
+AF5DDF5AC37DF05FD9D53D1F5715C7E8352BF880
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMMI6
+%!PS-AdobeFont-1.1: CMMI6 1.100
+%%CreationDate: 1996 Jul 23 07:53:52
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights 
Reserved) readonly def
+/FullName (CMMI6) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI6 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{11 -250 1241 750}readonly def
+/UniqueID 5087381 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
+5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC
+4391C9DF440285B8FC159D0E98D4258FC57892DDF0342CA1080743A076089583
+6AD6FB2DC4C13F077F17789476E48402796E685107AF60A63FB0DE0266D55CF1
+8D0AD65B9342CB686E564758C96164FFA711B11C1CE8C726F3C7BB1044BBD283
+9AA4675747DF61E130A55E297CA5F0182A3F12F9085AF2F503481071724077A9
+387E27879A9649AD5F186F33500FAC8F7FA26634BDCE1221EC0ED0E359E5EA5E
+6166526FEB90C30D30099FBDC1BC2F9B62EFEEC48345160804AA98F8D0AA54B7
+A480E715426651865C8E444EDB798C7E11040AF6E5A7ED1888653C6DBF5E6169
+70BCD9C063B63B561EF165BF3AF11F8E519F37C6FDA2827685739DE2C48B5ADE
+EE84F067D704D4511DBFA49E166D543CFD9ECD7417055D8A827F51E087CD2927
+BAFC7E6CFBD70B0FE969F890A11149D3D44D422C3370495DA9951AEE7253A49F
+3A9444C8CD9158D84117299F7F2332FEB0F94E6ED8BC7AA789A3219BC2F227D3
+3B5BC75FB53B55D72AF4A6A7BB613FA235B11BB37D059FD87127CEF73D5B3FBF
+9F91ABAD78BD9240BD9525EBA78095EA0BDB25D1A19E876F292882EAD5619D46
+D20317A345D931F4FF4EAE6216C27044CBA525E3B917CEA25A04C120466C4B93
+FC720E6BA832A06CCA0A3916CEF0968D49085AEBD243C41A448289A6F05CE3F5
+79148DC112A3CC7E8FF810B8C1A09E05F496C0F1EBA334E42E05C376C98F5F69
+C06C71BFC0A2F3AC9951CFBB143C66FB84F9C4ED27DF70869352D61BD5E11508
+0797B87C72620B2601AB5144F00BB3F4CC8D47878DB48A403F0294AFDD70B4E5
+FC27F341EB9559C0AF8AA66C260263101A9382499A3A23D456F662EDEF0933F7
+6061DC931B2A590119CB853BB155EA8C01BF0FBE2526A2B2F47130FC930EA556
+84C513EFF43C1AEDC1B5C32E0D6AE1F37DAA57D40A12F36E0966EC09D306F1E3
+ECBEC2A21F9842F31255C6812CA17CB4FD494B1F3F37AC97387A5AC712D73773
+FB6139D7CF5256E0D998505A337D1EB24AFAAB5611A4C2E6398E9B033E6C5BCB
+1521174C1F4DF84176BFF6A3173D54F5A9DE15E5FB72A9CA2A6A244A7A146844
+B49251F416B61F2EBDFB54AA42D8C341B7AC3B3C9AC1F3B76CA9F8AD88D42E7F
+15A46D1F65195C655B7CFEAFC2CA6CF71E471F4A7643416A0C333E29CBE5D75E
+D5257757224929D2633AD76CC975EDE124E9B45E0BDAA09BA32CB79820C02425
+BA8C1B1BA0C794F6ACBFFC75E0D0F903768A96AD688DF072BB3B66AE151A8B6E
+B49AA1FBF9EA06D0C181D28286CE084C80CB36239D6C2628D41CEF82BF9CC5B5
+E40CB1A74BB9C00A604F0C41C1BE4DE122C220A56D3F58CF76FCF79FC1C3C95E
+D277512B6C9DF376CD630E4C14C76311BECECA323E2915FFBBD1CF893A48AF8B
+C9E42E61DDB06B60600B97E72CA6272E5B8DBF2309F79B64427870D5A2967149
+AD03D4B9A2AFF52C5177E337C884F8F5ADEB874DEC6A04D65CCE7783A2A0FEED
+0CD2483C109B307D49EC29E31FFC50939AED3CD29D60EBF01FF028F36F364AE7
+488D2767D471F13FD146E57C47607895D5C631B7CC48BB6159F76CB39A8F6E9D
+FE1F242891B53E3D37C8B558B3EC37EC28E8C7CE2F517D02285E3BB577541BE3
+E4CEEF148FA21FD51DF7DAFEB5F1EC6CF8DA69958093BA5F91FE9A4517FCCD9D
+BD8A14B4C7E9503BD07D41B0FD0E9392289B3DF88D4807C5C547E7BD87ADE907
+F9C5083AD33BEECDD4CF271D429145B245EAF5A80AAB28DAF3FF96931998552A
+85D517332A56899E7DC359BEDE129E0EBCC67AD602F59BD2E710AC6907DB3461
+EA6483DFF678CADE65C98DE84422DC482EF3436E33A2251628F588153A3BA46C
+A99A94266945B0744BC6ED6345531654EF5639EC334D9425E1E25B983EAEECAF
+3EA4FBE0DAAF9DF470DF3194AD1A72D76AB05B87439EF60C41D5E8498BFE22D9
+ED8C72E77B216A7C49BE83835BCE1179A4F8835BAD40E88E450C6147028A56E4
+B8D507E66987FF598F11CFB934AFBBB3FA738765D7D18361397897CD0624E9BD
+8B896D17CED3E5CB54BC0AF245B51A86108697121E4D73708134EAD3E75A0512
+FCCEB1AA0F039C94C811E2CBC38FE984CFC97A5966ECA0EB4FB29987365AACF0
+02276551920B5C7CFC46E3F45ED4F1786039DE6748A93803C3E9902464914D73
+5B89A0409AAE01959D7E75DDC656AA9514374B3A976E9A13F21C3ED5DACDE046
+76793876C306EA5A361F326004D75172C70840C9820EAC3587368AB76167DF4B
+7CE56215B61483EA9B19F02D0073A709E1520846F79418DFE580A12947CEE5DD
+3945C84BA35521DF810B9CD68301C6F1AFC5005C87D232F1E2E86B8C225EFB3E
+BDD70B506CC423720D89EBA59BB2A3D11F790A14D4EAB87452FF9E07A74B478F
+B2F8314D9ACD135C296ADF07A3539459AE1FAB534239DB431E5C5C219A04BF4C
+671ADFF99C14D96A3FB75EEC2EC1CAF358B9D9E62C8534308BFDF6FCAE77F755
+26F0663E5EAFD0AA70FC2D8118A9486DFE81D7E48AF29EE492292D3771DD1759
+91DFA4A9AC43310FCCE5A5F99142F73A685C64F66C13BE7C676D9AEB69C48163
+91AE178FF033336187BC9A4E8597222788D36349E257AF795535D7615577A42B
+39E5AD85CB7583112AF48A0684926304A3F351DABE3597F7A79A7962C8F95F5C
+741982CB80DF5CED9B41955B2CD4CAC42E9779BAD7F1C186C897BCABC048B280
+36BFA9CF9796BFA3045BAD7B2BF3571ECBAA7D69D46714DA87F2ADF224DA1134
+09B43F886BDDBB39BA0320A13107F0AD2A3E3787BCC1FAF82A330F17B7EF5108
+EB16773E3F6EA46C3A6F1B82E0A4C8D152BC0F8C5ACE35BAFF593BA6FAA40142
+419AD07FC7724E7CF46DEA36C801A0D300C85ECF652B0D552704CC0ED04C5D03
+6203F8D54FB8442809CE4471433F22C4A488DE037925444608D7DB765CCD9940
+7853F238B5A51C15027482468EAC1CC08FEA59CE36F3C58DFD985F1FCED53A1C
+719FE2B7DC66B24014DC0A4E91B5FB7067B6EE6D1DDFAAC16A4FC67D0D0F6A5D
+55F4DB9A1B1B60215F3D48133F39D46E94ABB7A9F317B3472679F47759DB8B57
+2FC683CB380040B18F60B67B3A633C247FB808B825B705CD6DD54DA0F649DC3B
+82AA5967AC4AD8E7728722D19F511D46D97F97A152E62E69592121D1D6A0914F
+6C108BAA0657A1B21116F4D6AAF9931BEB0A6530332C49E4FB88D594B7C9E544
+BC94B65B9EB02B870A351543308E3442B9B3C0C00BED6BC0B04B876F5BE8ECDB
+443AE81413169DE352E221891E191EDF9666ECA12CAAB1C2D9F2A6B037B2108C
+2582E0E81AA1F46F6768768FB921F9DF4C9B25F1232C10D438D504606FA4C50E
+5CA0023E03C9BF6D45A243B5617C8893AFF502C88ABD52BA8C91EA7C64D13B6F
+D52A7BDC8A648128BF0DA56A81A79D4BBCF46A8ABCE31B2469DD464FE71B59FC
+F3F1B928635ECDA355668C5E80B8E8E0A16B13593A1DCAECAEE54CC016FFB1D3
+67D9AFE7F1F9868C28754EA17B2C47AF475B0825C6549700A38176606AD4DC1D
+2DE0A355F1E46928BEE039B292DFA3A908C66D1CA29925AB34DBD5B14AA4F226
+6A432DA9C873DDBC3B342278A4D332623DC0DF7296C22D5A64E8DB16FC635AAC
+8AC663C7EFF90E240B598D0E0002C36D9715BF82AF72A2C9832B78C159E0BB67
+D61F61BD9BE8568A40154C159EDB6E8B29520B3D5479B84412F27CBC89833E36
+A20424481EB9C4FDEB3C2ECE3FBF5D1DB826398B22FB770D4192AC5DCD6A3F2E
+A1455A30D2B85C24A349F83F4375D846BCE10EC0DE78FFD8D6CEDFF51028A072
+D7E61DF0FC3C37D7E89735C84923E36679E652227C82DB0E7E520DCFF6F5A02B
+F3CF29A0EDBF6D8B05D48874BBAC75F7B80C04F56692974BB41FFBF7551A1AB9
+3129FEB8A4D2C1E4FCCDDD57C8F2CA5F501C30B63D4C92A645C59C3B8709F829
+0FB78AA045915B156EC83C6055D48CB580DBE86E46E2A319F775CA8D7C667EEF
+A1063CB086407FB645C04CA31E08ECE2D624CC29F0284A0531EBB8DB16093B5B
+145A47BCCD67E9741B568DA4E17FCEB553A25EBF3B6186E8A98C7934E78F0083
+83FBE5544BA38DAF6B425D45BC0517F608ADE9C2D4835D744CB5E2EA5ABD1391
+B69034C5C8E1F9D10D1CC45A654975AC50FC4A36EA0B0C0303CE1D6D424CF441
+F3F3DC5A089F71A524C8BCF311B15A21BD38641B6AEF50E96533167D7412E1FF
+EE0EB0E5CBE8A14DA5C9F9DB01B07EE3D77D41D4FCF2495AACBD6CBCB1638A04
+6598AE76BDE92ED16703DE4282D6FD76547CC923C74CC7CBA7C8744000FC1B79
+67F17D46635EDB296A81B2F10AD1B64254AE378AD2DDD622B87CECBBB9B93432
+FEB1EC23DDE0E4AA6C38D5E6A1D105B2A6EE34593517AD5B9F9CDB760A062BF0
+FB6B6BC5470A7B9ABB62FCE8FE4FD950A852D3181A39EF5525E14DDBC153397E
+9E3140FF9DDF5ADC913D883B782E99B0C02D1F19B2E7694E39A0848EBF8ACABA
+ADDAEDE822D84C2464F238CB9C78123B41AF6AA641BD800F266300F210537A11
+355BE27D6DB0828DD050D014B8A50F0B5A2A658947418D3987951032C40595C5
+E0E02F2BD577F2728845D1885ECD5D201EA00C3A86F9ED2C8F0F88E79C4D2726
+BFCDFC6E935D5AD4AD1E92340417CECA9A9663E1DE24DA660708C292CBF11E4B
+2D1D138923A7F01DBBEA559287837477DD9542326429E3B0F9EA29A907060B36
+FDDDDE17C7AAB062A5A5758FA2FB5496EFA7A5C7B99CCFD096F1193CC5D6D0C4
+AB30FCC9ABDB167F28C20596318BB077BDCD4A32CAD7EAFC770CA1FA7816F1D5
+05336E71C5E0E3C97115A4981E0888B674BEBA77D8F4B3828824F40628B98791
+369703C334D9954528ADB68E7420AA6D8E0D4C46793403EDA1C5B1BC3C9BA102
+617FA0BD6FC63A9CC708C96F4F36037FAFE3BCA07626FDBEF26ED837C81F6E2C
+08639474B858EE873DF7A7158063182AF0392A4AE95315D76C615A94E657C32E
+C03C3894113F0371475933BC4AC691CBEE41F65DAEE36231CFFA710522906E74
+249827232F098575DBADC7D64421E2ADCA7E57AB6241AB8C1D4944F5216F9E56
+3B75C07C0CB75451C16A05234D0789902D6DAD70B7F365445A4F007F2C89887C
+E777C610672C908CFB372E2F762E71B76BBC43C1813EFEAFEAB00ACEFD069B61
+3B4F812761A1FDB76E831A59D8435B85523660305407055264E79C137AC8ED02
+FCBF15A52A570041BFD657637DF61DE2987CFCFEA02DFD715ACCE46DE7F2D840
+81E5F293FB996E194D50B36FD89D7F7DCFCB319E38E1CBFB0F005ECA18F66BBB
+20F09C1C117AC23BDC12B1A454C05F470EF18A7BA53B4A4E51BDE2D1BDAB0E05
+F79A83499BDF3ABFCADA606BC838F11E0ABD666807DA58D2D552D7BA845F118B
+30D1CD9BB6C6E1FDA8CC898C5403EEFEA2C30613E61C6746D39F22ACE78AB127
+5AEAE8655E6BDA117CCA7F897DECD760EFD2DA77655FC8C0B000D183D73D5B5B
+B2BD85E4C12AF6BF3EA58C8CEFD4D89C7B9083C0AEE4FAE3CD82753AFC0EAE28
+8CDBE484C16072E8CD026462BA90605220DA572849DA9BFA7CCF740E51598AAD
+4C7A6CE59643A6C39D1A27A536B61F564EE0BF35310401A401FD351E5B2239D9
+8AD92AEC83767FD6151892A4BF8A9438C1938629CFB8DB6AB235FA23DF9D36E1
+729D854DB895F4AA77047B625A8C45C0EE4BFA040707E35ED47326A8DF6498B2
+17F75E724327CF8762594EC2EF1148D7920D18C6F928304735B909A67A939A64
+640E59D367D4C3591F26BC3665E312B429CBC3C7A8F2B5EA677A970004093EB0
+2EDDCE307427937A0B37B5BB67513010F656DF046104EEAF0B948612272787BD
+47E9B5B224CE0337DC711655CD855DF4D00DCFF89542FB5BCEAD8BA915278591
+9D6BBF377DB6C96AB16DA67203946F41A21A6C811E9D50A55C15284B973A9739
+6566CDFAE6BFA57ACBC9FC598A3391660A80FED92C6D36E4BA3FA6BA8125918A
+E724B45AD06C63E4C4DA4CCD9F8261A1F08880939F8CAD768445E9414942FB36
+C2AABC7CC77964DC25346FA72D72015537D1AB5BD3837B94E55FA0839E3E8027
+EE94A4213F29212677895CC0D04F4C62BE535E0FD966F4564FF4D53AD74345F6
+F82FDD82B15E395B30700918F0F6F0594D385EA4BEAD35374EC4480F928A36CD
+FD89720899D44BF75B6FD19A2502662CB0B56140BD72DB86210B65A591391192
+5F737472B9074C9D0E6E6875E210402403C1A799B1913E693313D6AE51435AF5
+8D1321F54592A240A299B549AD37D9F261A2ABDBF285BF6DB27C614F5E1C6B34
+69B84214DC2383D9B547D5F8FF3AB8D83AF1206EEF06A589378CFC391C656A22
+7571DA3377038910FD06A96E9C4135A63B613D279E89F2CB8F5EE5B56F93A7DA
+5C8526B54FD7931284C6B60915A91B10DD901DE474382C5075E9B6B010C11E78
+9CF95DFB43492EB3EE88D7C7D704184DC98116A85E37FDD1784839175E654D6B
+B3CA11E544766D14AB2DE22CC921F81AE7AA433B4C2D10C2982D89202320A328
+1C390207101335DCD9E104F376CC5CF491A6ECD67C2588AFAA14C8F531086213
+D13E30964220257A691FCA2A43ACDF49AA324FB181F6C80CF1AB094D59AEB52D
+7EA9C85CF308EDD81F3A1E004534C59477A79A7B2430AEF7138DCF9C35C81B0A
+CC71ECA381BDFB8C0F9199C66E7DAC03E6227CD837983A78EEEE72AE148B9170
+CEB3A86EBB34ECB25D9B1B7217C22E0536A2F2A58CAD9C9738F86AFDA5F09665
+FFEA943DF5982B5C8221A7299C5B58984161CAB7A0929D4E3DCB7259431B5958
+3EBFF54F91EFC93CDFCA2F3F218FBAB2BD87E40A2EF110943CB5AA9E975F92C3
+193486846A198B4BC8900FA34C5C8A0853EF7E6C857340F0DCF224D7CF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: XYDASH10
+%!PS-AdobeFont-1.1: XYDASH10 001.104
+%%CreationDate: 1997 Jul 20 21:19:18
+%%RevisionDate: 1997 Aug 28 05:34:12
+%%RevisionDate: 1997 Sep 18 10:23:31
+%
+% XYDASH10: line segments for Xy-pic at 10 point
+%
+% Original Metafont design Copyright (C) 1991-1997 Kristoffer H. Rose.
+% PostScript adaptation Copyright (C) 1994-1997 Ross Moore.
+% Hinting and ATM compatibility Copyright (C) 1997 Y&Y, Inc.
+%
+% This file is part of the Xy-pic macro package.
+% Xy-pic Copyright (c) 1991-1997 Kristoffer H. Rose <address@hidden>
+%
+% The Xy-pic macro package is free software; you can redistribute it
+% and/or modify it under the terms of the GNU General Public License
+% as published by the Free Software Foundation; either version 2
+% of the License, or (at your option) any later version.
+%
+% The Xy-pic macro package is distributed in the hope that it will
+% be useful, but WITHOUT ANY WARRANTY; without even the implied
+% warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+% See the GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this macro package; if not, write to the
+% Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+11 dict begin
+/FontInfo 9 dict dup begin
+/version (001.104) readonly def
+/Notice (Copyright (C) 1996, 1997 Ross Moore and Y&Y, Inc.) readonly def
+/FullName (XYDASH10) readonly def
+/FamilyName (XYDASH) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+/UnderlinePosition -300 def
+/UnderlineThickness 150 def
+end readonly def
+/FontName /XYDASH10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 80 /d80 put
+dup 81 /d81 put
+dup 90 /d90 put
+dup 100 /d100 put
+dup 108 /d108 put
+dup 109 /d109 put
+dup 110 /d110 put
+readonly def
+/FontBBox{-40 -520 503 520}readonly def
+/UniqueID 5092844 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
+7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
+A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
+E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A529226
+454434A66FB600391E72DBCB27066ACC4F037CF32BDBE1D3FEDB2F47ED471216
+614265A890F90F735C48E50F819CB3328DEF7288798EC4F2C110FC584615DA50
+CB3270F8E3CFDCF89F6D8F4A766AE1BE4D71002FDE064A5DB86C717534590905
+8FB00A60B579BEB0FBC24E561A610384F50BA13268295F448B37D49AE5E5897F
+FD7C4D05E340C9755AAB4B78EA191EB05FB2034AEB8CD021AB4B51CD01485AD2
+8AA14D2B090A404B50F59937CFC161701277096CCD53099455F93A77100130DB
+A0B39A41D94D3F74E74346A26CB6EDD5F02B6729626573DCD63FF968811D58D1
+CE45190B7FA7048F1367FF403A4CF44C1480C0E7BCFCA19619DD9A374FA2475D
+BB2A58D516495D45DBD6A54A9B4ADC34B278AAF73F01B3E9D7455C43E9B3FB7A
+AA3381CCFAA9D3F4E3B7AEAF882963AC861E51A3B452D40F03B5E592EC2EF0DC
+E7A1254D7EB78D1EBD1D409AF44B404E38592D1553CD733CDAD08B49B70B2A11
+A371A3994E296C03AB25BE2E449A6E1D313B5F345C3BEF75AE9D099FFB43E6B1
+91EF1F1FE223BBA42230DCFF7E85B1A33528FE191AFE53F889992A0C3ED9BA8B
+C777541201141183BAF645C336C01F37701A461DCD34DFEB41B909DB0E603F07
+0730D8E62D9C931C372B31D1A810B12386ECE812FED18F006FAD29D28EA30D94
+D5164361F11238EADD1CF8CC21BFCA167D9D03AC61818DCDDD6A2AD7306C420F
+53B8DEB01E309F3F6DD0451836FFA20A22DCAD65D0026672F7EAE8C1DEB4FC3B
+1023B53F919693D926C30EE0E764D5F0718E1E6FF21E3D0731747E62B4D1BC67
+A9595FDBB0AADF72F2673854F31FAC1E040DB5717ED9C4DC52C35F70A98D3D4C
+18BBD4D29948159E21F2BB720426F4CE8B804965CB8890845F475F613EC47E54
+8B61DDE88BA990EB4E8E043617A8FBA1828C88C4FEA69330B9E9AB9C6A153104
+DB01EFBA59A70C33BB605D1B92DF823E67CC006C0B6F4C12F3E75C3687330AB0
+267CEA1C38B17F8D1E8E53A65DB4FD0B6F547843EE09DB833F61F7CDA9D29C53
+A384973AC431706EF13C211ADD55045536251D778BC34A3550BD01ED0329DEB6
+8479652785A9206227A5FDF0CCD5BCC8DB3C01692F601BED191938F6AB9C2B44
+DD12111D2F7C4A779C24F09EB330BAFB81C481BDBBC3B9121A03BB300A607183
+E31953CBDA7FC6BF6067A6ACE5DB5BF7DDD7F14DD9F0B19A8E5DB898EF6DD4C5
+464B241F88125A99A85DB9C59B11E2A504737FC738B76129BD35F51705AEE7D1
+F97490CDE6D52158B8384F86CE8CF01807F417B9304A05C9DCDAC4C4E277A570
+1C8DE2B76EB8D19312F90C81C06FDBFF555D1A3F2E01E53B3EE0498A353B976E
+9A13E0870E5939B9E7C1DAB46308F006391AA9A2636B514430F1C54B6115FBD5
+A95E28FD2D2FF053971413F275E2334B8E6ECA3299DDCCD61DAF72C850F98806
+9FF62E10DD3BBE2207755F3A6158273837DCE2BBA0CADD54705BA67DD8D5E1EB
+58277F92117F58BD7041DA5C1E51CF5B544B3DF265DBBAB00687860BA513D44D
+A8A299E9DCBE29012F242D6BC590B7838629DDB5FC3E3D9AFF7797A90B9966DC
+B63F7587A1AF4241010734063B07DEEE6668D277DD29B7C9FE69B01137BEBD24
+4C9F3D0BB78D27B01A52960B7D8FF96C8E598811454EC97458B346E555CA693B
+1094FDFD2E821986CF8CD390C9970E2D170681AEA682895156038BD776D1B2DD
+001C2AC3B33110E5C07197B39B30EA9C0F3FEBDB3F3F906CE9DE2D1113DDA86F
+C252CFA02A160EBA40990E77560AFA5D52CE14F569378685B863B9FA574EF44A
+33F4CAE9AFC93BA8179E6D604F0A1471DA16A231DC96EA11BE8A9B83B64E91B2
+C4D7BF1782C1A97D3B3C9B1DF781E36A574D318982D8BEA8E03CBFFE51ACF4FC
+3D707EF8ACF4E32CA4A06C5D8F74CD4BAFEB791F0E43EC2765B2E4899EF2553E
+19ED6EDB128FBB50
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMSY6
+%!PS-AdobeFont-1.1: CMSY6 1.0
+%%CreationDate: 1991 Aug 15 07:21:34
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights 
Reserved) readonly def
+/FullName (CMSY6) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY6 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-4 -948 1329 786}readonly def
+/UniqueID 5000816 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
+7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
+A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
+E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
+221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFB7605D7BA557CC35D6
+49F6EB651B83771034BA0C39DB8D426A24543EF4529E2D939125B5157482688E
+9045C2242F4AFA4C489D975C029177CD6497EACD181FF151A45F521A4C4043C2
+1F3E76EF5B3291A941583E27DFC68B9211105827590393ABFB8AA4D1623D1761
+6AC0DF1D3154B0277BE821712BE7B33385E7A4105E8F3370F981B8FE9E3CF3E0
+007B8C9F2D934F24D591C330487DDF179CECEC5258C47E4B32538F948AB00673
+F9D549C971B0822056B339600FC1E3A5E51844CC8A75B857F15E7276260ED115
+C5FD550F53CE5583743B50B0F9B7C4F836DEF6BA1ABE5F0F80D96571277EAF86
+A3AAFCE3744F2A25691FE0D96E1339E83442F01FEC47D1D8F07B44CBB89EEE9A
+30C2EA44C2785CD16C3345F5336BA9A4023736FC72CEF9F010BD74C0727A9950
+1AA15F4CFBC724CDE04356826EF4454CE6CF718EF6AC7D217A1A82A4E119BCA3
+1A1647DA3F926125CD2AF93485CF92C4CC708A78F6FBC0646723B23881775249
+8AF71615D43409A012AD60223E00388F6BA44A251D9BE75CE9B5E5941CCD3B1D
+C881C00D093CB8A1B62965F8E223489DEB544A03648071B2D524AC98E99FDE68
+D6890B44D0D7232626509E9D70990FEFD17C05D8B0031CF629575B9BBB191619
+B06A753D847C1911ECB922C0B95F476251D9732B9C0CBF4B74A1C3FE71046458
+459383DD70A6EB5795172F4BD58DC790B9175168962A4276E81CE17CF389EC67
+FA0ECCBA25E52ED53A7F041D3DD276C1A7599A2E0C03E01CA60703
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: XYBTIP10
+%!PS-AdobeFont-1.1: XYBTIP10 001.104
+%%CreationDate: 1997 Jul 20 21:19:18
+%%RevisionDate: 1997 Sep 14 19:58:47
+%
+% XYBTIP10: lower arrow tips for Xy-pic at 10 point "technical style".
+%
+% Original Metafont design Copyright (C) 1991-1997 Kristoffer H. Rose.
+% PostScript adaptation Copyright (C) 1994-1997 Ross Moore.
+% Hinting and ATM compatibility Copyright (C) 1997 Y&Y, Inc.
+%
+% This file is part of the Xy-pic macro package.
+% Xy-pic Copyright (c) 1991-1997 Kristoffer H. Rose <address@hidden>
+%
+% The Xy-pic macro package is free software; you can redistribute it
+% and/or modify it under the terms of the GNU General Public License
+% as published by the Free Software Foundation; either version 2
+% of the License, or (at your option) any later version.
+%
+% The Xy-pic macro package is distributed in the hope that it will
+% be useful, but WITHOUT ANY WARRANTY; without even the implied
+% warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+% See the GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this macro package; if not, write to the
+% Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+11 dict begin
+/FontInfo 9 dict dup begin
+/version (001.104) readonly def
+/Notice (Copyright (C) 1996, 1997 Ross Moore and Y&Y, Inc.) readonly def
+/FullName (XYBTIP10) readonly def
+/FamilyName (XYBTIP) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+/UnderlinePosition -276 def
+/UnderlineThickness 138 def
+end readonly def
+/FontName /XYBTIP10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 15 /d15 put
+dup 40 /d40 put
+dup 44 /d44 put
+dup 114 /d114 put
+dup 118 /d118 put
+readonly def
+/FontBBox{-542 -542 542 542}readonly def
+/UniqueID 5092839 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F409B932A74D078F654BDC704DE35B7CC455A4DC3
+FED12AD5A138F12D1F36AB94792D7CBBABAB576094BB3DACD5249F299F6A44E5
+D55493440B9008DAD1724D1025FF4C1B847BE604D73EB4978213D57EEAD8A8D1
+5A86CA35DD6601510434BA8FFED4C13D902896B29BB9785C3082D736BA9823D5
+7E64CA23FEA7F44B2124E5F67CEC97E9DE58B6FA5B980B36AE286B081C98D7BD
+9879B11A89E194E2DC14674A18FDD0A8E717A0A56E3FC56D5D6D655F4A9249DB
+156F3F9E90103C2B60AC987D0264913C3968879B4C420AD75F215263391DA687
+FF58D5E85224C89D255EE2D1CE35F12658D97B5447970E044DECC9770B3E1D15
+08A427888A7583890516C231E025873CB1971633D6A13245461D4F18E3169505
+5D4C5AEFEDE1C6F5F1CE254FB5302704D8ED60058E645FF630B23D25D6C70C44
+330963D29CA7058CCD18114B4EF9C9AB72AD444484D7CBCD2EE82742C558B477
+0182F1B77892DF07F2189550DFD355042347E288EE60AAC93A4A8F364DCD7582
+63569E845E521F361A8E0AE4CDB4A73DE296E8D0D99CBC0E2407F01C465D6201
+5492CBC3309FF112E164B5182ACD1BCC7616E1577A23FA086C7191A986041E13
+967F12567DA35A9F58F59C298C9D8BB023B1AC9F705CA45B31A132C3BD2BF793
+71B1A4373E71606C132C05A88474875C3E3E963660814FC12497D7A39ABAD71E
+6F08A07F236B72277178119C9011DBE677E6F550F9392455C07518C027D23C5C
+1344CE300AAF4404A774D4A1F7768E8EEB045857C99020FB4524C1E566C2A455
+0897893C02C6D74015BEC17E1AA874514FFA674889CA1E32D373C0711ADB227D
+5C4D26880FCC7ED154B2174FE333899ADA4CE221629739E4BD2863844A0ECDC7
+5CD54B2F408E7D84D3B06C612479E833B91DD1C64AB3CFA1EEB5449DFA8424BE
+407471CB67CBCB03C4846B481154D16BB9A74E383A9FC38DD4B290280C6647E7
+36A63C713F2B02A6AC7852746108E92E9F2A20DAC0A6F93EF869DD1B08053D87
+9A1EC7F2E52DBF1A268129CC29EB8AAB0E47BAE7CD30A9B77B9C8DD618C38FE8
+B7855934FCD5CB0945101AE8CFD7C543864E21FFE85A87D074E3427457EB667A
+D7BA7E30867E8B086E3A7E1C4A16925D6E56802368F10D1264E8DBB45588CD5A
+C5958ED13E0F12790BCCC3C1A99428DA1AFD79C65F08E1FD866361F7DB265F20
+287C2A29574CD6F04D52845632511010565C0DE25B41C89F72AB70369ADBE995
+A0AA5FC0BE481995F56E76A53624B4D48E51273A5F75EF06228774F9287251F4
+FE99220AED2BF6AE168CD1218F25DA232BC495877DCC01F3F1B457D1163F1E58
+6F34B8B004A4D76C5F4E473748AD1C15A7884D97CAA495A914AD3802D911F1D4
+ED9A95658EA8D48CA30E17C28FC3CA0860AE01FADC7FD7B5DCDBB228481F87CF
+7E4734CA0B4CED077A5853981B636814DF0F7F46DAEAC9004B51AB9770ED74DD
+DF93549E4D92FA05A03F34ADB3602AE88A055B514C009D74E83E3205608DEA14
+76AF8277A42769C1C9A26B8B0F520FA02ACCAA635F646CFB85102095FEDFF16C
+6E15CF04AAF0E69C840F646D3A7DBD72D1806ED9E110DC025038229771239A8A
+C02CE283462DD4CFB7FEB5AC6E315124EB2AE23199534EB9232BBAC197C86849
+C35D5862B8548491A23D063689FAB232287E2D8A6D7B1CE5E0857372001AA757
+F59535
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: XYATIP10
+%!PS-AdobeFont-1.1: XYATIP10 001.104
+%%CreationDate: 1997 Jul 20 21:19:17
+%%RevisionDate: 1997 Sep 14 19:58:47
+%
+% XYATIP10: upper arrow tips for Xy-pic at 10 point "technical style".
+%
+% Original Metafont design Copyright (C) 1991-1997 Kristoffer H. Rose.
+% PostScript adaptation Copyright (C) 1994-1997 Ross Moore.
+% Hinting and ATM compatibility Copyright (C) 1997 Y&Y, Inc.
+%
+% This file is part of the Xy-pic macro package.
+% Xy-pic Copyright (c) 1991-1997 Kristoffer H. Rose <address@hidden>
+%
+% The Xy-pic macro package is free software; you can redistribute it
+% and/or modify it under the terms of the GNU General Public License
+% as published by the Free Software Foundation; either version 2
+% of the License, or (at your option) any later version.
+%
+% The Xy-pic macro package is distributed in the hope that it will
+% be useful, but WITHOUT ANY WARRANTY; without even the implied
+% warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+% See the GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this macro package; if not, write to the
+% Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+11 dict begin
+/FontInfo 9 dict dup begin
+/version (001.104) readonly def
+/Notice (Copyright (C) 1996, 1997 Ross Moore and Y&Y, Inc.) readonly def
+/FullName (XYATIP10) readonly def
+/FamilyName (XYATIP) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+/UnderlinePosition -276 def
+/UnderlineThickness 138 def
+end readonly def
+/FontName /XYATIP10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 15 /d15 put
+dup 40 /d40 put
+dup 44 /d44 put
+dup 114 /d114 put
+dup 118 /d118 put
+readonly def
+/FontBBox{-542 -542 542 542}readonly def
+/UniqueID 5092838 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F409B932A74D078F654BDC704DE35B7CC455A4DC3
+FED12AD5A138F12D1F36AB94792D7CBBABAB576094BB3DACD5249F299F6A44E5
+D55493440B9008DAD1724D1025FF4C1B847BE604D73EB4978213D57EEAD8A8D1
+5A86CA35DD6601510434BA8FFED4C13D902896B29BB9785C3082D736BA9823D5
+7E64CA23FEA7F44B2124E5F67CEC97E9DE58B6FA5B980B36AE286B081C98D7BD
+9879B11A89E194E2DC14674A18FDD0A8E717A0A56E3FC56D5D6D655F4A9249DB
+156E71D55EC88A3532CAF855B82F85C3FE0C25A537A2341021AA624B24285243
+57E0798D7E161B1C6A1E32284BA3B1236B5DA8B4FE1D35D1AC64134E2B952218
+C5836BAEF2006F9DB675F519EDE9E4E20A825B8EF4636BDF1EF1BB5190CA66B0
+ED8EA86545CD3632AA51A0C38C7F92B5E2538B6AC6EF9F0BD8E9C8BBE5EDB6B5
+0736FC8D8A23288D93BBF0F7B3805B44B1B50985086DDF1A3CB7DEA6DBDC7ECA
+CCD106F227EDEAF63D6C4CA37A6C3B32A2F582D2B33B366DD1C792DF5DCA71EA
+92BEFEE11AB37472A18AAB07603E1B5658C76374281BF234D7D745458CCADABA
+52685316908C9754A1FEC267FE4CF913253A16A8AC5D43E907F8DB74802C834D
+861B250DC3AC668CCAA5ECD8E58D2AF9499A5B822304FA2BEBA54D325363ED21
+814D5132E07D93D23D68F7366459D13762BD680FF9F4CD0F8361837F4FF9CE08
+477704DF03F1C879247FA5A3FFBAFD383F35D1033E400FA06EB43DE3BE149728
+E98DC609E89DC430440ACA19DF6660529E603C1F436D50169264DD4C1D4E9CB3
+7811678914D4130D20881C0A8F07CCF67CA992DEAE7A1D0D301AB2901B66AE3B
+2098AAD7051FB448BA93EA4BE538AD25F0A10E820C9D2D77DADCDC4515B85C24
+2132423886BE500D7BB36953D8029698246FBFA28196A29E1BC7EA14B512A20F
+D5A871FA5125C93E941FF03EC9CEB9452B7EA935980A3896F6A721F281E9ECED
+C8BC1DF6751AA7C0A2379C82C9F443366F4FE80121ECE691F716B8B737A48862
+6A6040FA03FB8D43D2B8C282947F5C57EA2A31A65652B5912341D480847C3AAB
+D53163A5FF3F4474657DD41550B895CA558228807824EB5D6D6D805CB69EC4C8
+AB8270A0832E68FD70E9433FA8177ED90830131FEC5CCD811CEB4425E933ED88
+D1A7AD2AEFB99B409308CC803414678DD7DBF5B8D90D06C865F4E0588D4F5592
+2C08E0DF2386E3C10AA4133FAEB825D2CF6C9E21CC5E8B61C53535B573234950
+C79AB3BDF831263BEF99FAD29A4CB5187A346696749F898E69CFFB95C31A875F
+F8F7F29C0D000E28B809ADC115472D7222FF586D2593B94FECC89B385A5C7D87
+7B5C4937720B95263FB2871B2F8E087DE4E4EF7D25944097D675699211CD0E1B
+09397C0E71AE5896AF65A69E4CBD8824E94DBA6EBB717998C5E0AF0248CEF32F
+7850AF3C43E48015A8CAF07ABA3860C298C33A6F8312F206310A28E166897A73
+7C9E4085989021C3210CD84F54BB09D5D156120B61EA14F5565733ECC52A9B24
+7DF8FE0F5F5E3987A46410C28DB4631B335DBBD30A3A2718A289E70303B987B2
+1A49D6FAC7309EB9E3BDD77BB33DE3BA3E84CB7EB50314E8772EB5D09693BA88
+AA0FF6112C30AF8F480E53FCB521D5FB84B40CCCADD56F672170D97AC98C5A6F
+5707751CA15A22542C7EC7BD651645142103E0C7F6020EC61EEA4461F130895F
+
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMMI9
+%!PS-AdobeFont-1.1: CMMI9 1.100
+%%CreationDate: 1996 Jul 23 07:53:55
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights 
Reserved) readonly def
+/FullName (CMMI9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI9 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-29 -250 1075 750}readonly def
+/UniqueID 5087384 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
+9E394A533A081C36D6F5CA5FED4F9AC9ADE41E04F9FC52E758C9F45A92BED935
+86F9CFDB57732045913A6422AD4206418610C81D882EE493DE9523CC1BFE1505
+DD1390B19BC1947A01B93BC668BE9B2A0E69A968554239B88C00AF9FBDF09CCD
+67D3B2094C11A04762FE8CC1E91D020A28B3C122D24BEAACF82313F4604F2FEF
+6E176D730A879BE45DD0D4996EF0247AEB1CA0AB08FF374D99F06D47B36F9554
+FAD9A2D3CE451B7791C3709D8A1DDDEFBD840C1B42AB824D5A0DFF0E0F15B0B7
+22AEEB877FF489581DA6FA8DA64944555101EB16F7AB0B717E148B7B98D8DBFD
+730C52937E226545CF8DC3E07C5BA30739BAFCD0F2B44275A6D503F582C0FB4F
+449963D0AD2FAFDE33BA3D77BCA9D1DF878DDAFCA2E22CC4BACD542B282164C7
+97C2BDE318AF9D501CA21F6E662E7AAB75A5F24D2C182E598D175D44E88AB19A
+E7CD59584F95B389183EE21B525BF52A3F23C0FE5383A5565A19361D716F508C
+AAB78411CA5A4D27552CC1C435760D5A89D535B71C593E755C616661363308DA
+A683F54ED0C23FB2C225A008392B0B719F66F11A946A090B7C00B662A3C69599
+B4ECB0CC70C85C4BBBF207E0026F6C7A19F2ACFB7A60804FC98A4BFFD7BFFF2B
+952B42CE273B1118F73E1809D2911924A418CC45E20D9A9C026201263F4A1527
+48E376774D7C218132B4D3680590AB2AA2C2EA741D7E96C49F4BA3E705E2D68A
+D288EC56011CD158D02216881B7E45314D94E45D7ECA73776BA42DACC41248A4
+D19B97FA93D40079BACFE26853F0DF9F75201C59C77FAD42905A1B39ABECBAB2
+C0925759BF0900E0E011E8ADFAD5859FC718F307C85933D6F9FA42D823683703
+8BF34F6666AE5C90B42A4BC5F2F4B170B4DD23DF5C5B2A5D955D48570DA58601
+91048AD248D6F24A19ADF82A9042207C78B544C6466FA3121F200B78FCB656C3
+A313CFFC03E7EF0F8BF5AFE4A87557151498A202E095444274A6F730CBD65C9E
+B6F97B7151BA62E225773FD026E6337E3ED4EECBA496B39EF17F5BCA684BEC61
+230E28960E299749C47601D7EBD58AD5979D8836791F662549167FB78B9B9B4B
+D1B613F1914ABE8E0AB98A13D3423A660237342F55D6C786BFA60C8FC9E62FC5
+10D3E276AFB8CC5042E2915B563ACBFB0376CB7306FE861F0B72261F7F5ABFF5
+A5DB39C34EA5F919CC2CAC72173788BD2DEAA4F3C087EB5186375E6444BDEE36
+616D94B918DB523E2F122FD304B46E0766870DE4E35563FDA8923B17877B3D52
+DCCE656A558AADD8B59EAA3D1503B7B5929E4297B0CBF9B8235A0CABDA14A53D
+08C62A5A5DCD9C9ABBDB973FB5CAC738357D06DEE4ECD642E654779F886940AC
+BCECD76E9CAF18E60D2A191CEB3227CD325F3419A01F8D4EFFC614758BD695A5
+94FBE2436774991F76C41FC1C25A82717B2A9668DA2B7C21F0D436BEA47E3398
+B11CF1E095C59029F97055BD77E29BF93F3AD46AA48F92D6EAE72FB02989C191
+E5D9E06A6A68F142647D01D123C17D03A8E69D8102921928D9AD81C485CB7B5B
+9E567ACDD1DCA2DC1D3B72E9F20840E596A89CFEFA64F06510780E5FBD99AC96
+83AB1D2BC36287C5E8BA490A12F6C0F1587D286EFF2EEED2E8F8E83F6F6953E9
+187654A1ED9B95F948AD8CD1CB3BAA026005A605FCCB27BE91F4821FD3A599AB
+15B6A5B73595363CB0D87533B2D811D9FFF0685AEB5063382B2D69DD4A3554C5
+358C9F55F03DCF7604B94CC211786D71DDC72FF1410EC13DAC0BD90653A951C9
+32B7EB2FE089DE20E41F815FC2B7AF290421A4BB2B2767241ACA2A36035B611E
+2B74FA4576544E20923A1592D89AAAC467BDDB630E1139C3CCF93B7B78972625
+FBC6B070C72ECBDC4326DDED6761ECDA7B5732423F3A9EC8F247AA32FD22C918
+37CCF46B54ACFBB708E74FB6E01283591EAE750F38410256BA1EC8CA7FA61315
+DE54769C1A595BC2A5D2B37A6B46AF0CEDD0DE77A46EBA496D60FF02E7BB93A2
+F89D9C9AC4C1FDAE692838BCA208C831C674E39CAF582E07F89440F06B44E156
+0B197331E748AE05FBC99BEE82C758DD87855BB38B4957740387120C27BFA3DE
+D432939B765A8355D23F924CFEDD33A83243591D938BA4CBD3B4AE3FF0E4C928
+1B82505DDB18C2EAADE8B006A6D3BD0ACD1187B593E8D7FFEDEEB3B9D6337D07
+673E49A242751436E097670AEFD8B298662901A427C3D95037167D2D3A3D5FE4
+63F98A9D600C8CD04F2B7D392F2797424E6F60F2C39C1437BD45CB2780AC4BA0
+ED51CEF7F3A2C79FFE8D2C1B85B412EF5062645B3EB5D6E3FA86444B65AC455E
+C8EA84ECECC52127363C094640A5DD4DDFA5FF2CA7418C78ACAA27E5780BD09B
+802D20177A21F703ACFD8310A3AAB3B62E97D2433795E8364E3A7A975A5D0CA0
+608ECB5D66E92DC3948AA0F56E369C791CFA69F97F23AEB47BB240B22FF76D1B
+B9F95685EBDC5C3882278568C0F4F51F5A41C6C7DDFEC2E6BDF22C3CAF764B90
+32B418E74A7D9CCA1465E2DF8C404479EFAEB8755FA86BFB5F59F0A5E0757A71
+1BEBC10E11CBAD22D74EC694932BAE9D6DE23A2675E7012DFDFC488A4D6E89C3
+168D78D0847E2B7E822366C8C2B882D184C43C6F72DB53B27A3A020805F24BEA
+68CC3C486CDDE308E3697C7D9055210A2C6BE637447E9F62A6CC081C3AE773D5
+9A3AE2CAD228F9F24A5FBCFFDB41A137DCB322061DD89D826CD0BBFB90CABCCF
+021696D5E05C724FA4AB0F658CB71744AB25DB50996BA1A3D6677F749CF26B4A
+797FBA20E40DDC6B4B8B2E4FB2152415AB72400CF78994F4CC139C0D5B04CD38
+0CB9F836CBF80376B55778ECCBE13FEB1C08307DF006319D058F244ADA86E8A3
+71A3F48B1F2A66ECC0AA99CCFEB26BB128B5A56AD6FAE5D2BCD38B3BF4F94171
+63A36197FD8957D1C0A1293080362DFAF590C8648FEE006492EF4DB8C37A666A
+09EAC889745BB0D1371DA4A12312C89166A48DE72488CC7B7E360C5BECE96776
+EA50C3803C4E9788F68AB156370F58D743368552CF46541CA4FC604DAF538ADD
+F3B03338D1FEE8A0230F8EE21DE6DA81DF9E3492553C0AB90500D33E6B01B3DF
+E365118154D9F2FB8231CD227DBEF18A1CB27D4D273F44DF43C6232B8FCE7C8C
+7371F804806E966A313A06944EDF2E480EDED2CC701E757BC9339D118367F579
+ED1EEE70FB7AB254A1AE09D9D30700886C7800E05305B84DFCE07D2F1CD91749
+D4B96790EA84D3B042445DB2A5F3A74540B69BC8D226A0D1736709086F295EB0
+D598B8ADBAE68215C60EF6FCAAA8359F56D34A0546ED3BC05B581F5834022693
+3316B6995AB38969D3278DA330E9E238227311C1FBB9428028F0DBDC8AA342BE
+46E7F9E4C5C6514374083B5F7B1CB6E0C612F63A4AE187D7A9B34F92C9EAB3F6
+7E64EC3B0FAFA11080CCE7924CA235476C045F4E6D919CD0948A229156A21A30
+6186B0C7185D8F3E2086D877D2E4AF6B4FE96CB65BA5998419C8459656C4ECEE
+7307572C14B3873059F4F6C8534DD678ED330475C1AFACDDF2B6501DEB38ACC4
+6E38A4900C430644D2BD8B42E3274E792D8025E458F2D1931C65D813F4EA21EB
+5CE1C814A3336AB33DE6E6BD1F53942B2E914D9D890E26F860546E483DFFC5C0
+98DCEAA747A669A50E461BC4AEA1A872A3A66C44B7524537E7ACF08D8DD3F450
+F8A92CB485487FE32BC2722DB9E5F5A88C00341F102B05C46CC599518803DAE5
+9AC21783067B2D7857F312D3980452BB9BB101D88FE676C7AEC8309E05AF0616
+DE8293D6520C93EFDEDDCC8D66E71B6AF7A4675B2553C5E5615440CDFF0602E3
+13FD6C2FF334A05A8AE0E9311E91609D1E57E74801995CB3FBD79E9C4EB70559
+C0812CFE080C742B4E4CF503C8BAA215D968A2659C09640E60257A375CD101F7
+DCA5DA4ED24791812F3E7F6267AD7492CF92EC5B7AEE27074981786D61544F5F
+B5032075C5E1A0CC1654D60F2D336F4FE5E90E79AFFC21BC12254B5F293B810C
+E3B1694994C74A09783E4CD69F65B1DC63EF75B8690CC33064E86A28CE7BEBB0
+E8B0BF2B88CC0C07C50F54C2D871A7A2F4C4109BC5000F6DBF2A840C5E250C66
+DC25CC7563A3E1BF3B4B043FD6A7856AA72ACF0BD113C2D801C4B74E6715D180
+B631AFC14B800A1A8729F8A9F10AFF6FA61CB02AE40A07B225843841E5A41D5F
+DB797D39305EF241337409300156706FABE9CA9A01239D6DF298FF46C1A1D932
+15B3698E30AB1124D21D5DD81DB3C80040AC31DDB3A7FAC666624CCCF66850F0
+8E06D299510ADE5D9468EB86F994776C8F97A9704E68D2BCFBC219C64A6E7BA8
+5FE7BAB3A71136DACD8D576F90363BB36F586DAB8E4DCF9BB97E9D9FC96432BF
+9FCF05A9FEAAD879E42D08406A9B9A29966DBB201A22C0DA1209484B4618A3FC
+DAADF0D86A2685766ED36B1A81F4225B3940719660DAECD852E82E6622E00D1D
+855A333DB4ECC23EF01E19F86337BE5E704D272705C914FC9674008328F20852
+DA65BF46BA515464C505FB72D8AD2780E2CF0A8B1AD839BCA0A5A9BD06805382
+B8D7D6B0E0CD8F33F312B831E0097362F1C137B572C2237530BADEF8B11A8182
+8F44987EF2BCE86D8157D71405C08CBD6F2B1D269F1E87BFE127547EC72AAB2D
+284BD14673E8A98DDF9358E3D8D5C3524DE0B83A63D2F94DEDE6AB6894182902
+9004DBDCD67B21D3518CFA84FCCA387D06FF1C619F80429AC9F28095584E9092
+111990701048B0E60FA130C9BE29E2680B0AA8F4C5B711A9786FBF3D9B80562B
+CD7C1F808439C21C4B0EDC4D437FE6A238BFA8909F5037DB42DA98E456847404
+48938A915D1BDD7F4DC94C82A5AB306EB120A6CD542B6FF32BB6F893DEFBDA96
+57E68490179CD2E22B2A9EB08EF9E7BF34AC76C6192CD6CA4DFA6FF36FCD2F17
+B8E67E5B139899CCCF5E89F5D91FC54A80C519CB51C2A53AFB0096B531A6D340
+9650615EBDEB71D8D4C9FB6435F8B7A5D0B16B07F695F9BF7CB069B1301F07A6
+DD2E09624FFBF950D9825F3DA78D3D24D09C93AE617CBAA36AF1A7A3242C919A
+D3FAA1993C7619504AEC4D160E5D7F8B6D160086AAD99C5BC460DC8E4FCC4C4C
+9BA738E7ADAD5DBB9A8B9D5B810662C31E04317BD5568B50F5B2F95E8D875B41
+C46BB0864C7765FCADC846D72D5E366AAFB93AC8E5BDA9E46AA4189EA3F5B961
+503DD9BCEC91F36BBF09F35D15661BE47E4B2DD4148F5B346248087401BC3533
+625B277702055F6C3A95576C267ABCCEF01D51FE399D9154613C2F9B9038A4B7
+9067650A4C3828D79353D7E0C31EAC32C1273517D540C0E4027D954FB7DC8ED8
+9EEAF7ACD4092D968735A6DAF39D06EC4A735CC7915FE68450CFD942CE640CD8
+3C3487CC896AAC6FD9E30E31BCD9A0847A5C1DC216C934B8DD76CAEAD5C97ADE
+E112E937BBA7BE9F3A5AD2C665291C4998AEF7FB7C9EF2B8BAD290B452752F3D
+CDD45F1D96F595B9C7688375D6FAFDA05B33D4115B23E2A1E92782F827AB030F
+9EE50FADFF4361BFB714AF22DC29D0DEABFE455AC533E8EF3D6EF9455D6E30B1
+182C16E21D35542DCBC9687F9FA2604FA48F9CC29112706B76AC57758C84C972
+CFE5F3BDA2C4EAC01A368A24FA16EBA6A1F9A8F0965EE2E8B2772055206E45A1
+AAE40910A12B87BF64150681ED614190458AA38F30C6227C192E7C2C0F3F31AA
+8F2B7256449D5884F294D78BFEFC44DBDA835FF95B88CF307F4E2EB04E82AFCD
+E970531149C5871C374A08063BC9ECFC1410CCF6330566912F094CBB3743AC8B
+3900EECC9F054EF4AAC60190A554CC5CE0199D0EF8B500B8C2FFAB127D7BF00D
+F87B1E8E5C0E5914B2DB73D9D448F3246F19D86BBD59185657F159C4329F1D6B
+F97BBFD36354ACEC024037B936DC6F013F5C05B880D3BF77E0D4C37DB853D8F7
+568A65DF27530DDC975F6512FE251C39ED8904C8FB4CD21E93E031C5A092B1C4
+6379FBD9F89DE0AE5BDF6E2AA13196436E05E725D015B7DFBE5236943458D44A
+C8685D10396A4E9D37D616470DEAE67D7CFA971FA8A1F6EF6735ED59A489C9F8
+4A8CD4245036222B2CBCF4C660AEF415FBA741E9D8DBF6415C36DC571E3E71C4
+EE8EA313E3CD178FF396B67EDFA3E9D4620DA4D4B71D32E97952C3AEABF9126F
+AECA2C5A18F940FAAACEC283A05F9C823E79B2517471C98F1B4C12106D4B30F0
+8193BDF5C3E570AEAE0D6FBEFD161CB3B5298F3E53E60071B04499101003F8E5
+5B8D374805E4E8F864A967857394C3EB51CE2CCBDABD011A9F45D3ECF8ED8FB7
+DF30746BA902B8FF6527339E8F88D37AA964034AFB85B78A8C886FB7BC9F5A57
+FD4A989C6DF35CD812D17B713661CAC2086E5C3A54D7748D22F0B0A9FB400F3C
+6A03084425C54D2D48EA9B0CC440F4ECC38B446E1FBAFB59055C87E29CB8886F
+C62714D0DEEE1433B5AB8AF27B2D26FA6164AFB985FCEF45B5E82E2F5BEFF2CA
+C037D6240619CDB4C992141B14C02FF7152DBB4A0FD79261EB6AD2E6B3C47262
+009BBC2F237415B4AE7AACCE3F57FE69F53A41079CEC9DD18F3EEB42E5BDA053
+1D52E8FB65C954E3A6285BA655CE7A75A2646277C850863302BFA94E86D370C7
+301202A1CD49D83398C1786D8F1AE927BDD4239097E2C4DC4E8FC2FA6CB4B554
+940649453DB433B9EE7F14DC30C879DD58A5AB7898CCC8472A39615D161C1526
+1951C762FBFDA761A79F838CF0E29A1E2C739A743F1FEF9135EC4BA497E14C78
+01BAA2C5E29DDEFE319FA7CB1A1C7AE2E268D3E82934A0C56B57D13216F98EEA
+1F95051183EB0FE7E44C932C913BFD35694C4C809A7D7D66E08A115FF55E31DB
+94FD59B01280B1ED3BB3736C9283D3F4DCCEEEA4ACA9891E42E3C6D5C77A4EDE
+164C48EBA4A1852B2A7BE73915E8693AE46E9A1CCFB8AABCA34A0110DE72B6EF
+2A800AF7E62F493FA8FD5F41DA6A9738350E5F85DFC03CD0CCB6959A4658FC0A
+B15BF087BC3929993CB435B56F17A3F9E3AE2FEAF5258D8A23D31EEFAFBD1223
+2AC9783BA0E9EAEC920BC7C6E22404BEB499A3044FE8F2D8F543F6F503898A04
+A16B65904341CB47E677DB118F088A9B3A4D6D74724A53CDED3A2F487B14AEBC
+873F4779EE7A8F48B0854D622F274E0557A066314659942ADEFECC3CD4B36807
+460277A2F9B25A3F9ACFF8A559F7DAD9C78985BA4B62E28AC44E5B1DE3CE7E11
+EED0A53EA0A54653A9F9B7C0BCB74F2535AFA815F370435AE1FD07EE46B724B6
+9CB3EDD3BC2B444E754E60C7DD726A84F9DBD7AEA09F2DCE5E66F75F8B7B2CE1
+6434B901E25DD3ACD0DF270AC9CDE824B9BADC508C6A2F1ADD60637C2D5D7CBB
+96214E630B156D6631851E3210333FB65F4149064613F1797B93946B13D20FB7
+C03B924935656F16E5DE899A510D39A9AB6E30398E57EE19852846AED66A54B1
+E7E7CD4C54F47E93879E3A496585593D501A59D52A6588ACE10388D12E10EC4B
+B67F5A363535CF41B0B62F51EF4DDCF6B2FAFFD9F79006906705CBF419BB25A4
+0E874501CDF4B2130CEF220AD771D3FA4E77B3F6A04B61032EE35BAC0C991013
+27A72C1CCC297544F2A837C4D7F707FCD089969121B6F28A9EB8DE5309AC3BA0
+362DFADB51E800A17789E957BA4C3681FE7A9D2085514A2D71F395E4D771DAAE
+EBB10FDECB8557FE14A3B5693943CB5703E59B6A8B0AD63335CC5529D50A1BF1
+0F0666FFB2EA215EEAB3D7CC605BA0C159D08DC97C08DB0AAAF9C4F0BA7FFC5B
+3DE156A1292F171A70B6BBE7E5C99548CB261584CE9EA1C90F6CBDDC65E20243
+C48F9846A02243497B3A5F21FAB0F2632D67D5B31CA3A4093D74FC7C713584C0
+2CB453DD2BD949DA8821175804278F02E3FA987D796B1A7DAC4128BF4D5BC5B5
+3CFC3BC74BB2D1DAECBDC0762F73E8338E1C449489931C72
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMTI9
+%!PS-AdobeFont-1.1: CMTI9 1.0
+%%CreationDate: 1991 Aug 18 21:08:07
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights 
Reserved) readonly def
+/FullName (CMTI9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMTI9 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-35 -250 1148 750}readonly def
+/UniqueID 5000827 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
+9E3948FFB3DF7BFF10C9BDA4EFE5F68A8CB1526990D1357AE6D2F7C2D2EF8496
+4E47B39E6712EB8908A3265E5FAB40567E866C244814449F1E993AAB422C3F1D
+DFA8C7118584F2E5197FD4BFA3A8AE9E953C6CD4672C0FF51E41C3A919749C1A
+F06650DF4C5E17492164BDBCDF22609A74BFA7F69960A64B9F949FFC2A807458
+8579366C4F41BDE1FDFBCC4845FA19BBB6963D65EE8532549274BAEBDFF24FA6
+03235D1BE37C06B1938AF369DA75BF38DDBC87A1FF445EAA16E1895ABE9506B9
+211955753E447865D33CEF007391D2666A046277A30A49804FFCED3FEA5EB2C3
+E52EE14A9F75241EA10C91974CDA6236EB840FD44D6DDE4D9B3266C3B99BD38B
+D835BCA8CB819C073480FB972CC028D218F6A1D344CE1B63F4FBF2C826F412E1
+6E0B05A26125865A14FD7B7030B478BB8BC6BC395335C3BA940E1C348267F4F9
+0AF97BBEE253511940F1048E175D3569F7D05A28851B6F50765FEB6C9654FEDC
+1BF52F535DB5BB90C1BD5D2EBF75E0AEBE82B20507F3C28A03746781018D4EB2
+298E4F2C27ACF73FA73EBE43F014BB575AAD516C0407B29E1653375135ECB74D
+C91372F06FA8EF37C31AF3FA48AE65318EAA6C34830A5377ABB2DFA5DA53A574
+4266FD34C25C8025FD7DD45F44301DCF03F51335198F9EE71CBD72BB906F445D
+EE6AFBA2FA06A0A045D56CDE98A6F0DE807D81F26D017B74D1C7A5AE254B7705
+7D96CFB3C342DD38DB5730ED913639C2BF3CEBFA6F3D493DCE5F8218F8BD8035
+9E6CDFB95628F7198CFA2EBDE1905F051BFC4F835C5A787E3B43EAD947EC893D
+9D1B04A9A7EE7CF3E02A58BB0867AA7C77F30CFEBCB4B3E6EC68F6B234FB6B26
+7A9D88A3CBF7A29ADDD1D212562AAE1F7506A592ACA0720C2FF4E162274961AE
+2595E81820B04A9E0695A13DDC27AAE1D1D4336D4A5EA976E627A55572B3354C
+9AE1D011E54B0FF279A63962341FC7B0E71B46855BD31F45CB80F02FA1005F14
+7D56C2DC7AB765E2C9BD3986ADC36D63373718B1564D72B4EE59A393C94B3C4B
+1ABB6A2D11E7324063259AA6ED1D3D4BEFCAF094189AAF89E17614117D6553D8
+97910E0091E130C8613B5EC556775B8B17D6F4B967EB1B7FE6C9A77AFB974B9E
+31CF0DAD81F6A6D87FF1F4F6FAF29EF67234DFA0C7A992BB8D727536BB3250B0
+C339FA0237D1A84877B856517ADE5E0C0CA58CA5D0C12070DCCF9EC1D28761C2
+4055936908ED8069B3899B6A449E15CCA6C2AC37596789060B7FAA0009211D27
+685B9573F4819CF21FE46ABB3B5B77F9D78137C27ED6FA744BD4865693786B0D
+94D0AADFF6E0F831DE843472766E323F5237F879194419341C9B049623BF42E4
+7EF714A0CA0416D18CFEC946B7373FCF6136A659A1C7A2C92029274D410C9208
+0F4B687E9FE212305D2A625813BFCABF8C5CE021F7922C7F5B2206E0398CD7C2
+573C59C6439F1263640D666F1EE274B3B519E4C1E6FF81C2D579525766F7DF45
+734877F8981160B061B0567F4420802523FCF31502819F55C9740A3FAD8BA78D
+0DE272B52766769CA2A98287BC0FD03AB564E3B7C1A43235A3A7E62EAB5CA2DE
+65CF83E3225181D2BA3D497D19F2231C6235A90DC324AE4D681C20E747B20198
+B57FEDECF477A9665F9E8558270977354BB3C87623F9F2A15049A77295426CE6
+7C76690DE6055CB7C33003E893348E5782DE7BBE208A1C9E4441CA1CF5C9EC4F
+93516122C798F73FA5D0E364F6CE25FD5137C72FBD9EDDD925A308B7DE8F1F0C
+DB01CD9056424424C468BB61CAF23D4801045CC6D8D925ACC6029904C00DD3F2
+7A330AA3B6FC633B1216B4F3BD6C5612209293FCE134F404B26C5ABBFE14FB2C
+AD93D49A5DC184A076C18A4DF83E358D253A9175B25EA39CDBE6B3F4A7F1AF23
+B7AB464C49B003307B0464AE810C65F8236B82E5A9C956949D9CE78180FBFF91
+0937C22368859355159C748D56A6AB0E31D8154766DABA6E29257D449D2B41B0
+2937E7CB77876810C326A0A53C12E01A612CC257F71E7E17819FCA1E76DFE920
+F40D6A40B7D53BEAFE531B2E9D1FEB3733B6A9EEC5F522ACBF74FB760B63D146
+D777631FFB12BA79DF04C04EB3E5BB99F7F3C9AAD1972B0DB5D73A8033E3A23D
+49391471DFDC5FF3B9C8AFCA3CBDAA74B05579623ECB5368C96552805616DEA7
+FDA854BA9325CD520F79E4A1C367DDE0210CF9133FE9F9C153904B40DEDFE7F1
+80A26DE9531A22A4F04308CF96B4CAC7CF6B9CBAAA53DECAC68BB900DF883427
+96AE34F762C4270FA8C167B32FA8831B0F1663B60630FF9F2C0DB9D7E6EE61B7
+98A1DAEE9410715013AAE33F0C2186BBB947E3A90BF922BF293704E362C9F0AD
+D69D4045F37040F3587B36522307F27A063DF405E21652E4E9D2D92CAF805C60
+7DCBA3EE2781DA9F3713A2E94AD1B55B957A90C023D9E4FDFAD8F9409C2067B0
+1437ECBE4F949054357693DA8C50C1E92AE7D54309D2D4B05A0F67E2C42C7E4B
+B84DBFAB3A69BF010F31A88B733345036F74424E801268B0EC63E1ECF03364D9
+036612A6B70A06071DF55532E9637F09D3AE7AB18276E8BF927705A4D71B75B6
+44237A899670A65429234E87C2F8582B3BB98E15D547F661B94E6DA581B4F98E
+BD4C0830AFBC663D03F86B666DC3482B83216B535D6C36569703374D62F4C3EF
+3D788235EBD98F3E37E61E053D3164FDD935FB2AC03743BFDF8C7378286A4202
+579EE55B822EF7547691BC1D637C32483B17D29B64C69F81E669046370011395
+9CE36732FE830498105200E56B96D3D08D6F1DCD319C681F1DB936D538C65BD3
+6705974F2C1EC86E695F3177FFAACCCCB6B985A5519E0436B54ECB40B0C7492D
+BF1FE6F7CEA5992370465667E90DA0DEE2C3279E9A9F056FAFFB6320F6326329
+82659E9521BA09312612061D14ED623D04F9CB6501C57E729B0D9D36B4E2B109
+35AAA4D6C8AF9D8D11588670BAAF92C559558F459F1B1E1BFD4B7CAA5233822E
+52BD7DD6663F97C63F50E14B534C3AD602D2563909D9F6774F4E254135426D8D
+FB9397D066140C8B35F2D4196C908DE3D55E883913E97C7C3961FB359C0D4DAA
+3D3E3F7DFD72BF2DE8F8FE7271FA2BA8A7EB9AC10467A358809C394BDE39B950
+1098FE0109F68A32B2D93D69DDEE6B3FBC5E344D83ADB377A0D2A7C6B15A19A3
+790F1275399F4318F83B7236D5C21B6457A1668CE163921C6B29C5B00C3C0C03
+29AE4D79B2BC1F3614D7AE77F49AF23F3B7D8229FE38DD06A7239BF0E6459C5E
+E5A375725678EE1312FBF20BF5564994383AD7D18F784B457D77002E206E973B
+2795255CD98870A908B7CBCB35D37DEF510229611F60F9F5545400CD9B187A36
+7BC2B4B130416D25327F50A19B8A851F48F4B35F784DE9DAE981D81D009B441D
+2A5331934980AF705D215A05D2578A5C412BAAB401ADC66F886823EEA7F0E64A
+42F3964A73F3CC57869661BF0FDF7AB7D8AA0106214932F557D80B4F9822FE80
+1964FA02B3EC18129D90A531C1C6D7AC1BAC57EEACDCBD0ABBE73B8222CD0BE1
+7CAF4CE70475F82DF0647FE78C3C862DB7D66698662922A122491C830E23DB2F
+DC3832C5C253A959C8AB141806DAE8144FBFCE5762FCCFAEFFF456E181112C86
+E63681430121D7D91E82A116EAF688228F85E43C882B4719ED7CD38E4139D3DE
+B0CDC1A93A1D1306E78D3C8DEEBCEBC29E633826E3A2393DBE011A24B66A0FF0
+15604206244D5D1D2BBEE9CD6B04F161B9BBC7643DEA06CB08E6C07B01DA5A6E
+1B41D49E2EEF0103F79B58B589B13ACF19D5739B86FBF5273613BCD2C13C1CC0
+80ECD692C97E527D52C694E9C286DC0713879192D849C0DA52E1CDD98C53A298
+36A9D26A4C590627EC508A0A24D424D9F99F02020FDF3F2EB0C536756CE01025
+F40D4959576EEE30F0A5B05044D80E8B08552E40C14B8B3FEE3003CB26FB8CB0
+2EDD60AE8BE3ACE2F3888EDCE31895F73E5A5914C769D13D09E812AB772E7005
+E80D2BE02260B7D98C2FBBD7FFB20CC8990E56381DFBF4AA5739BB8AE99C50B6
+8355CCD74984ACD8DA4F578B6BFD647147E363F709795FCBB261F80C6E31EEFF
+9F37313B58F0E0D70DD40410C3E1EDC7BCDD1977B640CF6E97F7A5F46DCB6B47
+DC0C71CF762BA19193CE0737835577BDF9F72FA9A603806959DE169CD4B45B2C
+CE894995E3A882EB50A2510EE23E46455779F67A1991AD1D07C66F51A9AC3182
+5FBEBA4465AEDA9F66AA3D810A7BA8172CC350823C7C880F2E23FDBA961C1BFA
+70B5CCCF9942EDC56A9E086146D6D7DFA3BED29A27297172D40757BED2E38EF3
+2972540CEAE334CFFB87C6F12F6472219F265E29F24D9E578F621F5B0A9B6C57
+EC6E34A11FB321606906F655FD138901D15CB332BD608EA2F6836AA1F659F380
+A09EE4DC272FFD3D7E8F20DD3B38F77DA8A9484106181232678F241C44A3F4F5
+AC07E6FA522DE75DC9AC67A02B6834100171E77CCCFA08C67D0C03239B926554
+0474A2C2EB6BBE79E5A23EB521D208F4F9879EE3A2F575153D054FA04C6DC958
+D8D265C8E96A690FA7241481965FA7BBB808C472EE9A9ECB67F3937BFA342419
+9D626A28431B1017FADD9B7B40340AA10F628D8750C2639A3C1A32C894096E1F
+E2BD904B17B60F3448FFC29D213FF59A20D1B8D33E06BB8863CA4373397277E1
+E41C6CC274BAC5D0DFE5EF9CF31330112C41A1531A035DE16E5F11166C4EE8AB
+4C724974966B6C3AB810E6949BEC09039E2BFBE14A9446C7F36678DDC7C95D31
+F793457B912C95575CFC6CDD56ADF900A552D8E0512DBC77BB12A75C6A125F8A
+6B179C25F64A1C961D4E8196F6D35F1764C68F337E3EC60F15893D54DBB31FAA
+E51AAADB9D5B87BC5892066001EB48219C3C4DFA5D0D871CFFF93CA1872F1E63
+95812BF0F8E5DE75949851AF3E1F9C1A4FBB2CD44395F3A53325D196019595B2
+DA2CC718114EA99F70BBDF6A47287815733AD71562B6C439F2B0ED787E8F6AE9
+75FBD929203FF12A2661C79343D9B03E38E92949BB7C620D9D05B7CE6469820F
+B968747F28398FECA5F03E5ABC7F9E2C2D8B46A6143701DC4194DC165BAA3874
+70BB1748E87515C1ECED03DC9BC1E2BFEE837F15C0238C761869F1372497E9EE
+A0891D1A73F60F1A5E7A84EB9EA5E3D496313334D9DACDEA9B61CB4BF754444A
+D17F4FEB742A87BD417C04710A6D84819BC219B7E7BAEE8D10AD02006AA48046
+88896764147137E024C6742740EC2481EC17736DED29FA382FDB8147C730318D
+D0CB1485CE42CF81F17EC0CA860DEDE2DAC8448861E3B81921262F570AB92A3D
+4AAF8854756DE82BC8AA16E10182844C5C116960ECA78D88BAAF0971128FC287
+46D313831B4BBAAC7F385F442E75E81298816B3AAA46F16A21F0A687C87B87F9
+46243F0B3E0DBE80C7AC592A3A92DA480863F8DB32B321F4EA6841A0EDC0D50F
+39A40FD625769655663C81D6F4461B75BB53543FE3FD35681AA8D883750E0EB2
+BE0BEDC23B26C57BBFCF49770C8AF7E21F68A5A5ED43D4B66A785A57E68068A8
+4E422F38EBD843300BC0C69A9E698365122706237832EA2EF149AF7371967873
+162B54D13291CB6218F2E994C90969AE10D8ED63DEEE4C10D07304DAA69778E2
+9DAA4E458AA36BF730A97DE89BCA84F4C7192F0190086B570A5CC49E10D73282
+3CAC5B8B05AC3F38F889AE8376C3B5AB6ACD9FAF005664B62A21827A5A733C76
+5134D25CBD4FF9B15CDE17407BF4E82C9F5262E0EA54A5198CF677C1C07057B1
+0873B3AC1455D3A55A7E9336439299821303F20F5FFB4732DB7C3ABCC9BC1569
+089580BFFFAE3B030F9C99F83FBE8AABF0A7C5A6FC45C3A7F9F4E099176615E1
+861D4FCF0986CB9E83676BB630DF57885A3112CCBF2332A9967D6EA34715E4C2
+C666EA1C1466046488DAA18A033F410E9FD74CA054593364523E84C5AF0E5EF8
+AE6D1D26AA89C20E7619EEC2B1A8C60E24F41F66B685E9E01AF362335CEE62DD
+BA95F416BF5AF233590DA96122FF69A7150D5BDFDDE5633521253CFF4F4C1C8A
+DA4F23070EF0057BA56EE6D6CD627E8E8416E1DF8994B756C61BA3476305783E
+D1FFEF27BBA143C9EC4A597C3F951B14BB643BD9EC84471922672B8B25A0C600
+B086E35D2B4FDE79AFDF07824ADE46ADDA31596CE4BEE1F4A0BAC0ECAB8EF823
+21A16B677FBE25D5DDFB6953B5C7B2629CC0A1A8BD6A395913127962F727FFF2
+9F45DEEEEADC9AEFA0E825E2ADF4D60EBE583EEAA9B747C00FC5AB91DC7C375F
+F515B7C2C95B73ACC2E23BA92E44C48950F69F3426AA324DED76B765EE1767A3
+547C15AE5A452A0598A278F89856435978F37C3BEF03686BDD9385CC462F73F4
+3FA11F4615787143565F4A28A529DDFE36DDB9E78C08C93E577BDB030F71E244
+34239328278910AD72E7275843F905E7A6A230050114B8C3B46F913455755225
+F81375DB173CCEE940F0CDC30F76063142674D3E735718C6C0AB5ED58DF93515
+CB2FB5460F4C6A0C0A6E46170DB25E2EF9D8CC9A4AF4580F77C67280998D35BD
+0217D03E6876639567BBD0952E6708C6E47D47A8A0099E4777561F7932604F87
+7AF7FED872BF96AB85911BF5FA4313607BB13E66863CEF12B721987B3FA2B277
+D428132C8088D3FA160C19C3B044681C9C0E0BCF1A8CE735A6FA328450142174
+40D476AA3DEEAA4176873DFFC9ECFF32CE2E445575D0CF81B42E8441713DE7E1
+C054371B8C1762328F6F8EA6D3C50D4838ACD2C58AAE936897147F06E69C89C9
+CE86892A927C739C0F502EE5FDF0BC55602BF0F42682609FAA2AED973CC23A1A
+23C1C3AECD94605F88161EDA9F1B1DADA52D04B113C49F938B6145B0D8751B1C
+27085BA9CF9A5599E8A7C2FEEB3E1DEBC154A6A14348BE4CB9A75CCF07D1C4FB
+A797BEFAD7885CADDF5C4C4912173069BAC18D398227EB31345A2B324100DE3B
+CC734F73462BFD7F0AC6DDC9ECA10349360CFE471A3208D708C0DEEB40EC959A
+26B634A1A5B1DEF138EF469EF534D4AC93D81AE3B02996EF39782FEE3E793243
+90CFB05DD79F7DF0D1E3E2678414247516C2533781D6BDFD60E021F506B2086E
+17FEAF1F78A072B3A8FDFA8017CF3A822D1E6D77CCC7E46C4D8BADF78C46E36A
+A5AFABDE7C05143F35E469B7068BC6BAAB979C130D20BF765C46FCA9A8289FDC
+58CBEC9BB258B7E034E8BA56B1999ABA80CF48D6862ADB752188D4E8264DCF2A
+5036CD09E1ABD6B032BD5E39B45BD2C944690408A81BFFC6A783889264269C32
+B8731F24AFE4133773D273C6F07C66B1F38EF46ADC576EF81F80290C93D212C7
+15793D02A66973870CA2005044B73D51757C70481DA79A00C66A65C66BCD8F24
+BAC472406C4431246AC24A4C3693097BED250D644B94A70E4EE070709DB40DCB
+5EDB6A63A41028D9CFB7AA092C9FA355F6BFD3445677035DD936468DB064E6F3
+6C9F5325A2BE22EC39C53D6FE86A2F2E98FB1D3BCAE3C48F33A85D3BB68E97FD
+89592D052197E7F853DF72B05B76938A586603F0D7950983B558B77BD4909758
+77D4579FAD0AA906F54E84F5AA2C40BE8BCB0C3B4CECD5B5F3C0CABEE9655274
+A3479343F0A89C6DF20B18548DF4B8BDFC8B1DAADCAE007D76551BED1C4E6C63
+8EE269048F2CFE78DCC463E77B44BAA7D227DC67F2BA84DB46FBFE06C4C5EC55
+2D5F03BC4B0BDF35A935BBBA1093A36D7C0E756CA1F2E9A05AC491FFD42021D2
+1C7C264ED7781DFF6EBC3AE94ED6B34F230133727D2FEEC7B779EE1B6C940449
+DAE68B1A2C58B7E37DBDFBA515C3840BDF303D3A377383D9739374408236A017
+9BB9D891C768F3E49A154BABF65C2BAB0D7991064F5810B73092BDAC6B261C58
+A3420ACEE61A04FA208CEDAE2F7CF1046D8430101E4A43D75EE54998C31056F8
+7B636DE942F3BEEF3E673091C3A79ECE60379B240763A203953132707C845B69
+BE19D476BF1A5BED28A3219E5383D1971F679A82C15A4A823757CD0A8F4512D0
+3FF7BEDCA2A8B17ACEB74BDE47C7FB69871AA68325E239C9E766B9D05CC158B9
+39E4987CC84425EC29E8046CC59CF3DF6A1C37434B866112F7C3810C87D1FAF6
+82CF2748C2E8ABFE202830059AD5149E7A45FED442B553F5AE9C3D03B5138877
+BC3C6EB2DB2213B140909CBE16B566DC3BFD01177A4E5D715981C0E23ABD3AC1
+168B5840D5150BB8B96A3ADA478FD12173F7D89EC3765A1C17354F913E9BFCE7
+77EBF313C6DF686C7030D3A63B12160BE4521F0CECE473EB085A477567BAFA56
+65EA9EF8C78AA3837E8138DF362F48C730D687B2BED1DFD5E8E0EA8D361D031A
+49735D5C637FE29391506BCFF8196BCD263C15EE39D8244BF10AB5746C8EE60F
+DA45928AE6B9D987B4D6815CF600928F20498009AADF97E391C093680F468A51
+036B8BEFA1060E476100CEAB8A42B42A4DE7C4BF0DB86BC8BAF48417A16DE27A
+CA155E6F7724026C9F1161116E13C882DA9E1F2365A0B2774A50988024035236
+7B053E36FCE706896CBEE8C1D8D52BE3FB59597658A533B29652E70C5A80CBFF
+57F8E9BC454B87E280BAE1517DB53D3E73F4FA985074D4EC8717F2247EE07E93
+C57998F8EACB7FA299E07A2CAC1791A676EFEFA4D66F8FF91C25A708BFB4586F
+D24446CC40DD8948059FC4919B5A148A27BF1F20DF93F6157E6A5648C585223B
+7A935C4DECED217D0A7060CCB8EC0B856A40D2E9453A7BCFF3AB0ADF76D1F0FF
+844CB3DB6C174CCAEB4372634EB0CF304A533F76564BE58D2893EC721FF404EE
+AAB3F84C49F4736FABA2E32119597282C6FC82315C27BE26CC42EDB0ECA7125B
+A841965A9874AC4428DBC17BE942E5C0698E0D6FCA1D66953D93503431536B68
+52CDF84CF5677D924B950E4E2EC39B40781B890162BE060B5497341D00B96E62
+25E208491ED19A5E2F1B0BECFB7F8E16BCA30FC3F9A5DB4CAAF25816D03B3CB6
+DD2D634072D1D6EACD4AEED7C6F17B03F6893BBC85EC5E337B9568A70EE40EC9
+1D5A010AB0FFD9BD59BA5A0E99221B90AF6DA7EC3B32EB4FD49A3E1AB480ACBA
+B65A2B603F2E81E1C896846AD1484601D5B0C151E2996B8D7CD2C6D9774422DE
+42A22820E380A1F0A10FECAF1A43A1B72625CC8D1CBA57ABCB80386D9AA706B3
+DB695A68B0793AD0D378D268F462ECE3A9B67AC3A2F4BF680B738C71D0534CE3
+1DEEC3501850562355C9EA24C508B826F75430FF7F0C7553705BAD60193103B7
+22E87454045C0A0ADD566A5B12B6FB82FBD4103223044043D4C25E760EB40098
+A4B19F359AFD9E959FEE4006EC5C98C4DAAA9C543B715B8DD2B78590A3FFFB64
+8E498CF4188C58AF7F7AB3D9D74FE6DD86A66F6E781CD9A9856B29F8496CA867
+C5D927C085D6200F68D944D7684C26AFA09C7581B5E04A1B5AF5419888024579
+08531FC907A938E2F049EE4A57F6A5D3B812940820EC979ADEE321E3375BB475
+4B3A07E6719B5B4D8C3E877A270323BB3ABF69A38E93472AE7524355A5D92781
+DDD22E13AF92D815BB4E7084298AA51E92884412E656DFF0F8A301A28A8DEC2E
+9A46C8FAF0DD85FE8013290795F13BAAF18507A4BF18E69ACFE9BF914A97096B
+5625CF222217C8A705BDD27DB80EA07F910CADF77F466A537A4FEC305A574CBB
+92FA5CF7133362F354249F6568425CD9B8BCA12A6430DA5E9D9C1D4813410F7B
+55F4E1AD74C331C6DF5CF6E5962974AD81CB578BCEEDD6E7BF46F9FFBA047564
+013A160350C0C63E3DFDA73EE18721C04204F3D2E6A11FF8BA61B9CF2E4C8060
+549CFCBEC1919D2B5567B86BB162E2CE0CA41D7EB07E4F70689B6C6BD4475340
+954465C12B459C71094BFCC6A6DE80F213A37679FCB2ACCEE8273D063054487C
+A09032D07C91C9731667F3DAD497BF6A00EABAC599DF5100F76F0948991B5C2E
+7452792730BD3589DBE1D1CCB0E2A24D012D68B222A1A2BAB3DDB1AC0A2A449D
+3F6A63A90C8FA8493520DB4178EBEC236B8D1259615941ADF4057D716585E570
+4411F847FCFB43DE736EE7AB2E9CDB6C6C88AAA32F6292D4B35ECFB64D08AD13
+CA79BB71DD5CDE4A0091F607BE051EB6B19C4AA719DEB634D891DB1534BB1383
+FE0C849D61D531479538B3EE24C43B24470076A50872287F2ACC2B666A695EA3
+6533D95BE211A09333333B96081F7F2B421558EAFA1894A09F28E3EBC9467724
+3C7684769515F1F3404100997008CD006E9463D93861ABEFAFB5A30BB95F1E59
+8DACF37A3A7F438A0A23129FA8924390CCF8357B299D4BEAED095753FA2C2954
+A213571AEEC821BE72FAADBDA9DDBD2F052B7BC142384E93DAC5CFE2DE726C93
+BDB6FB7361D75546C99DFB91606F0A32B3CCAFBEC909EB2D874D222FC94D89DB
+CBF772F1AAF30EBB16BF04238F2315A98E7CFC1C82A7B5458F956B51479B3265
+062C878AF283BD1CA13BED8298EFEE46D2AE346E74ADC988FFA6BECDF514CDE5
+14370368AA0753610D0A5990E5576130E33331DBE4EEEBAD5716EED04C8E245A
+5C321465AA78CDAA8773BA957895D6EA252A4DEE6AC4E0989913AE5992687922
+8214211F2356F613E31218769119F09A035C6298C88E306BB24B0C29E5349B49
+F32B66418B99ECF382545B140FC7EFF817213C5208AD925FF4B55974D54CB1AE
+8311FF23DDFD349FF91AC5E16200C1077F8EB8BF81DACAB2D69BC2C09F5D47A3
+CF5768D70674842D47373E7C9E8323972F98FE0F67F22A77DEF4B2950F5DB1A4
+AAEAA1679BCE47A8CE68AD22192D14DBB408CEF9C5CC26F065A034FF2F489F7A
+28AF79D5810AD4A6531CFA6A18D231E46068FE013FD924656DD99DE8B1C9D3DE
+AC5EBA113C87B5B41A778F5BA2CC266D501CE754B5FB153FCC972B9FEAF82B5F
+01075BED33282DFED4E0F92F50A55F6ACE2D2C57CBB847FDFF091FAF74A2782F
+FA6A2360B3DF897AB10F4AF21EFBA50ACCDD27DE787F5421A1BE1134DB6AB8B3
+E3B61ECE5B30ACC921C154CCB7DAC1CE67AD4341D9C83C83FF42807F4D207231
+D951F7FCF868122810F6E8CDE8486328AB579A0E0D00BE90C32467FDE7EE1B89
+70F4176D42442B2692C0ED64DAD7CAE48282555EBE0023029A98F78743687CF2
+2D5240BE3A2774BBC04EFB54B080B8304018B169909662D2056F87CFAC2A11AE
+1180ABA48154C526F1A9CE0C3ADFE1B596BDA42F9609FCDDAD6A61EE9B58B3BB
+EF3D62355351D99F6349F1F591FC4CBA2C830134A7CEA4819F218F2227B34906
+1246423D296847B66A8BC815A566CD1890AC745AC1889B96BAD04743E784D80B
+4D7D9C28FEE7F818A86B12945F66CD4A4FEB71771E885E2D314563320560B436
+C7CBD9C175D557AAD96684AE2944763BB791C157CD40C7DCD0EF1C3830837722
+971525E24BB5B7930C49D039A981739213EE637DCEBAE7EA5A3B37EA11401AA0
+88D06BF229DBB8384DEB99AFA1661C3FCFE232DC8205FEDE50B19B5D65195AF1
+33FAA85CA264EFDC44359FAD86859B2A57F1A25AD8B1457E2F0A4CF847842CF7
+D5221BD7E0B4F078F891D93106F9A71C32320CD824ECCCB55A2AD40468860058
+C989B90AB71C2D83CAE1D3D3FABDEA7C20CB2F61DC8EF122EA0D8CA816D1E790
+7C7069F724997E05AF477A591D1E28557C5634E629972C36F1F32D0A825A1993
+814008EE68E884D4F43E10C10FE0CE35A23C404291DE93A852C2C6BF5C45256A
+90B69D416E1F9D3DC8D56301C4C09F6ACAC0A202496A2A1AA7B94DF6B9E769E0
+151770E2A427FB2DA5262FB2F15070F912C0CBBC4AB5AD7384867136E56F19B6
+F9DF9DCB6C6676673C868754AB03EC8C75960CB127B1F276A2D9F2027E9D532D
+E08888FBF44098BE7A6899744AC5ABBB626399C56BFFC8991B70D4A76424246F
+821DFF4C74849E9B64A0B6F6405FCA262A4D1361CC31D497A215F07EDE7CA089
+637FE10C49FE9CFCE3A2525299CB6B8415A710B873AC9F5874865AEA6E1901A4
+50CBD3C0A77CF6F5AD185D88EA4DF34892DF22233C0A83FB2152D6A56DB0C3DF
+09FEF9F069806400A70D44BC22D8D65CDACBE551366EE15462B1A65556DB692D
+FFBF76ED3877CA37D6B209D541CF6D884AE0B20D7C10CF31655073D52415E80D
+8EFB5DA0271F09043211F87A73E9AD4E90222EE3B7EED77345F8125E40D44B74
+1D81FC082672C23E995AACE501E9107137C51B0FCA2686B060B8AA3086038BEB
+693548AE354621B1FDDD4AB9AD3538110589959F38D6312134138D44196F5591
+A859596406A294D2E9DFCD1CB12BF40F72E86A44160E5BF0481E4760D1A470B7
+7993BFB42411E790A5D0BE8B2B5C5FDFF39EB25C0A3442C7E60DED1D7324DAB0
+A4CE66C0FCE2A9305BD91BC8F10D7ABA720870C18397656CA59356E05094A145
+FCA8C1C44867B0EAEB7CA9FEFA2DC9A8004316EF0AB89DD04A4C32F3560E30BA
+77D06C37C39638AE387C4578E1DC572E68E76A6EA077A0D6AEBEB8428361D5B2
+C42354A47814E6D6527DD3628ECD3B9755C77BD7937EFD0DFBA4AB3E4731AC80
+C5EDED0338528B90FBFD0DF5F1645AC696ADD5768952CA7D32F6167B43B3FC6F
+5B96EE0129376ED28EA127935014FCF044B6A1E54FF7A4B4BFC39E82012484ED
+5329D9E63F00F2D1328649C9E8DA586083B1EAC35CA458CFF151F63222347728
+83D404880F4354F21C7875CF8FA17E75C8087F0CB637B9457A69C92106575627
+402C2E62A8DC514110603E2C0ACBA66E338D4E562A6931B07A01ED4E888C9083
+7EBF6BD906F3CE3477F209180FD288565A80C79D755C117DC0A7355CF3A85689
+09EF4FD50ACF953417B09A9F8770D6AA8D43CDB383B1BD1C48D8A93D98E76A78
+6D5DD9B098E75F4FDA0D976E94A348895AD1365B63AAC6D49582AD71AB77536C
+96978E13DC3E2187098873BACDE21C9D1D2E3E7308D6494EE64842D236A7DE9F
+51AC3370E290FCD5E654444E46717D470B3FCB4EBFB0D17EB2D2AFA31FB53560
+EA2049E654A7D30760F1E1AAEEAB35943B5CDDABB193490B26C15202B24D3BB1
+D481948F8BB5E00E7018B4E1F36AF8DF1DD7B0D31DB446DE685D2EA99A15BFD3
+BC52DB4983170BED85F1B2801DDC82E91E7BF3E0766A22D054F2F73946FB049E
+AF34A291658517E9FB9DEDD8B61C93B3859C39ACE74F654C1E98197880334608
+4CA7F7BB852EEA89185BD5C9418B7B5B368E41102C21F545192460DB4D06142C
+DFBE99AAB2F616FF3C5D9F0B2D5670A0D9EB68A31A0A20122CC760668C6331FB
+7088E276F96AA98198EA91BD9BCFA01D9747E2AC78587CDABBA02A61EC4568B9
+550858EBEE4717AFD79DB6151F0E50F267A51E561C75BF037106B0FBE733E166
+05E77FEFBF5C82996DE3F467BEE0B6C564E2E7B0C3F565520C9D74F869A8FABE
+48D65FF1C78DB6B6B6385F5FCEB95B1BCF6A9C40CFCE543D9A1C4FB1EBB2C01A
+009B7245ED2EC9BBF8D4785136D26F4085F0B0B12F8FD20C43AE8A89595C2893
+D986557C7B6AD3240FECBF7872FAD608734F0BC448F245D81ECCD511FF39084A
+CAD344F24957A8DE460CEE220EB2E8CF7574B710D27B59CF05AB98B522609987
+EB9915337746518C812070D90BE0287DE9C4F9EF7B755EDF9F02A1D64F562B68
+329FAF55943D6351C52B6F9CB21D186B94FDEB2D68A52258375566EF6ED9A441
+AD717A4E5471A8B50253DF9421EA0E66AAD610DAF4B16097F097E57E5B281A0C
+0048527F2001C2CAC7074F35E6B49D0903296C60FCF3D26767AD6A36961DB2A7
+39676B58647CAA98604FEDC9A8BB9EB1E753D117D2978D9123257BC1F168B4F7
+3FF077E8BF6967F3FAD0023225A4D0684E5B3696BC6C2C2A7773A9C86D4BDF4B
+A384317CCCA5055BBA69487A3078C4CC6143408EA67C139CD6694B850E315F99
+102EF045D32ABF0C66D94EF7AE1A7BD2A0315466B72693C92E3C427FF2CE8799
+28BE2193D359704E519484031CEC8A635071E24B3D17744E1DC627EA76A7ECD8
+275BA695E67360CB21F682FFC615B8D25DEC4215CA256546BA848A0E287F3858
+CE7A4E5CE9868E0273DD868876E6F43C49CC3851DE0F759F020CC13500F95874
+E4549C366E66E9501D2ECC182CAE5B46EF1092140FB9B3578A5ED4B48EA2AB1C
+5E4B172F990F363C3FC7C8938D45484DCCC2494E0BA461388F65C99D2C5AB7A6
+14EB7D1F78DB481E21AAFD295B15657156EDE002BDBFADFB8E5E5EED7D09B99F
+936FEB881A6F5D56E8034AE63F4C0ED87259125D37D52629BC5F8823275276A1
+3659EBD24D6EA8B806CD22076C177163D45030FD54438C24D612386258AB4E13
+2BAC171191880A49262DCD2495A6611FA017BD0B9BCB8760D59502D38D5266A3
+4A991DDF026A70D75F1256B2D0AE55A3F79264D31292664AC3790FE506F0A48C
+391B4FC2E2AD195BD027A2D2AA7F656C57B2E235554E293A64CF31B669C9A999
+68F227261D640C2E24EBCA55433A8D1A59F82FB60CE341966AE27FF5F1AAF12A
+7CEDFB9D1FD05A1691F040B3B58E7C4D27B7EEBD7499390575B5CE2BADD5C222
+642613A9E6BAC0A582EDE98DB97FAB9C02F0FCCEF6ACBF1DB9CD21ADD81D6BB9
+4B0C6F67BB4975CA40CC07475748B9A996ECEC5856E79D419528B2E6233AB38F
+2F7E618FB510D7789D50590D4A49F5099236FBEF0541F6E7CE829A2EBCB0B3B3
+634F909CF8639D397B0746239275ECDA46C4D1121634B85999DCB16629AEE1E7
+2327DAB89A16D2E6C63A3F0A38318FE1AB32F2AE5631A485A60CD1EE3AC99E78
+DAF9838D5E011A61F84E318CF36CF88D40257A615313B0317E8DA82D1F5888F7
+158B1C6AC61B64475E0AF6DA9914810B20411CBE5DEA68FBACD2473DD8FDEA1D
+55F9E28EBC213E313CDE9D366237A29F1036F018C65711EBBA1D0916241AD419
+FD1825F2D54DD6EF119A835BE9B452537DC4BF280BCBEBB8A4EAE2AE4DBE14D8
+2DBDCBA0585FE211B020BE087F156A96E80CDEDFDAEB03CE3A8579A73C2C3240
+1EADEBA2A9B4EBE58212AECA36F92A5F4BCD5756DA946260653976B1528FA424
+2063E803179576505BCD79560771D3F477813043E0CA870301C7A8B13F7512BF
+D79110A6830FCCFA61F2D432651A13B7FB12A54A3C81921CF5EC14C920D8DFE6
+FA6CD666F39D031487F494F51AF2CD81D72AFBA040700374798F923EBF806C04
+B1E04C53108EE7D05F6999C1A8501E0EE126EC23BF9DDD5019C7BD79C8BAD47A
+DBA950D5BD087E1AF7F2CB4C05DEE2D3277BA3B7811EE216F5E1A7685533628C
+BE8227DC8097048A204B947333C328E913FACEAFA729E1909F7804A18D273EF2
+5784AC832FD98AA88AF96BF1228ABA5184A3C1E8AF7352D574F12240E6AC35CA
+DA755B79083A5B774AAD4E2E1ECF9AE0C85D0BE8DBC1D8002045D5AB7A9BFA2A
+1378BA55EC9D49BC6C2E5BA396EC6EB002A07C4757DC55EA971B1A7C8EB11436
+48DD5E7E0EF754B558876904398B091F4E96B0BB7949EA9BDFE3127EF289CAAF
+BD92BED02FD7B2A67EE6ECE165FDB8CCB2558C7BA1EC85B5EC8DC45171CBE753
+B3FAF4078B224167FCBEFB1C51124B0DDC192B443A533357E88DAEC48A0148D6
+412CD271F4580CB7808D5ECAB7540C936C258794FA3801694E8B1734316631E4
+FFD5E0CD0754BE75DDFDBFC944D94D80D8024A07D479240B4BC3A5533CECBC02
+04415E6E4A8DC4D1522EF8A84DC50B9BF5C521FA9966A3A6E2AA3701DD64AC76
+813B0AD2CCB39105BF96BE2DED093F3C15363BBC4F604ECBD52C811F58288CEA
+82A19B79F306CFD22D9F790E962AE607E1FAC0A91BBD2933AF20A81068CE297B
+922999796DA6A2B89DD2EA51612BDE27F9FE2543CC2F69BB0266B95F5EE3302E
+1BFDA999C5F5528574D8773965C612042E0F0C0FCA031C47FE191B7F901E2D1C
+B2511E62CED3012ABD91392B3B330669429E02351B351CE36EA52DBDF79C5941
+3CFA1AD94A952E5EF18716AFB348C8E0BE1947321E592FF2F16D6195770B2FBF
+7E89AFD5E7491097C5B7986057FF3CC4914ADBFD59CCA338702C5C7655D3B578
+F3F6E9DB09ED8161DE1166D57BD1716BF36A69DA170FE7AABDBE9C06BE650630
+519668274F15DBA3568C6D4302C4F18648EE34F0E857DA4381452ACE2323465E
+30E8B6F1A3C34B823DECCCFF22F3CDE14C0BC124D2E209BF493EA81E8068AB9B
+F78122931713DCB0F7D4BDA1236D1D596F01F2CE5AEE73D26CBD7BB44D849E65
+1E12EE3B1E556523A61B3F1F5F5FACA24CC4CF43AB5B9EE1353AD81D7697D9C2
+D12A64BB1339036ED834E55CBCA801A252F5305E13B523C4BB2A72EE2D2556EA
+C593E376F92E0A0420FF7847E7682319B1F9475BB90351C2CEB614AC236D88ED
+64C246E99FB725F5783D2BC388D80B91E73A7AFFD90868E12DC40D89562DC813
+B50C8066DE8489B303B24BFE21FE261179EAF53ECFAEAF897E639A7572CE6F1A
+957A01E7055518EE8091D9712440F7C43F1FF7641B75355F369CC739C9B1F78A
+0AC71E6E26D76C8D6F30DD5CF3FAF8CD0E659944B4EEF48540969DCF881718BB
+81FC3B397E41D2760C62A696FC52257E8E139847554B78530692C2D8E3115140
+1499CCDCEE52BE968534A5FF330451E9EF3E0F54E40F02FB6F6A4FA89B9460B9
+5C95ADA1DB9C4CA3C89ED01C44A3C1FD79B5DE3B0B2C7944D9C1385374C8458A
+1DC811880239231EDBA47AE66F9EB71317DB0F258BA813A144998869C7C9B23C
+10738556CC2D7D9D5C56342DC38B1CBFD7DCD6627F48BFEB9B65BC9A0EDD5C1F
+7986545FD37DD0696EC52F69E17F4470168ADAF706744834703918289C93E9E5
+4346555D498B706937BBA40D0C970AA30768CDB33D5C3641FAD4792E48072C65
+6C4C0FE25E83600D32E6762F8F45E2007654D9A4B2F5EC6B4D88AF018A7B9CE4
+51F8B64B1CB3296C0B17D8ABEBC0374820A325B067547CB4921FEEAECAB043A4
+A561296BF28825862BD758C7AA61E8852097E6A63664F56EBF8E2BC005FF477A
+7300E3C798EEDD566DA816882822753DFA48722B56E55BBACFA28C01645F58AC
+50067C1D4F3F3352740270B52DB4FECAF776591B1996351D553981F3BF60F79C
+70DC186A74401B6CF5B8EC85430DFC6FAC9F0DF916CB877006860E78E65AC419
+05FA3101E29161B7CF164C3DACA7DEEE96D74B01A88169406BA254764B5FADB9
+6E27E2E935122E67C038473B5AD6B450B25F7CA897EA06A813CF8614CC9C6E8B
+C164EBFC67FB8BC96C0D12AF8B162751925788D04422FD9A884076F64F178BD3
+8E7E919DEE8B789A2FD97941F9307600228FCE55BC0C8B9F0907BB8B84FD66D5
+6029C3319C44AA03267FFF4903BB1C5F957E02C0B16E2D117818F81D274DFC94
+8098DAE357574C3F2ED1816E073E64FE8FDF488DD0D37C7B0A5736D9D9826D65
+81E60B791402C8A5BE5F7729E7E092719D6560CDD00D771CE9673D1DA2716B83
+98B7C64BB39282BAE9FEE51BA253A710D77858A282C969F51906B923329A672B
+F82ABF7A3A8CED8097036CFE214E224465ABE7D4D6A9C6957E59A8013E92795D
+2652DA2231E932D1C4D8F02288E4B05B712A7A3C2421A87CD34464E4E1DC6865
+D8F194ED4133AB6986FF95B706E8CCB5F81F230131B03BF152FB1E67BF6E9CC7
+6D4421BAAAF1D5D9566502029AD085E0104D88E168AF5504698302670F232F8A
+637A1F9550F6CE26FD6DD57563BD19C43AB928B47AFA85FAE9EE5ED1857AF75C
+6C518C2756824A9C56E3329584C72961853812673CE6B6AA16C75959F22CAD98
+8D51B7D83279AD4F4D028ED1EF69C9F8302F7681B548B7D2069681F39E9BB15C
+18BE185348456B4489125B07F346603579E2524F2B6D4B94C7A21D22E193D1F7
+91D5C66D36DA1602E0E63FC58E745A62F1C2C2E0ABDC9AD913398C72C9B94177
+44E98DBCF54E7B152099A3ECEF0819FFE3FAF34BD116B19EAF13A07BFC59EC0B
+DC04F1504E60DF188A113175709B81D5DE66EE1879D9A1EA4DE60DBA78FC2806
+79E6EC40EAB20F6754BAA7A84F2040020488A357D9B912D7657364F6E9BE68AB
+0360DE1C1867240F6098D85BEDC80939F4FD460F4D5222D17FE6C9AC01B81C1B
+9BEDF5C8764CC144C081971928EFC0521A9FF5B99A4E47CB38BB9EC57FBDC6C1
+362316A5AB1CB7FDB904E14D9D90E727005F42CA705F29C1ED655669F7A0704D
+14A52934FC94BB476447A62CC015D2FD4AD1237B7686BFEDEC39320194E55743
+034CBB6CB767B02D4E57E02271C7EBE7644B01C2564D61282AD4DE61B257E06D
+9FEB150FF47C61E3EC8AC509ADCA7333A33FD0DEC7EAC0D0A7B5BED99E716E51
+4B50203E8CDD660DFD24A8B4AE228DCE3D53196A47A0EC71A621607126B4EF5F
+772CE80ED6E118B3B032445230007438CB2BB076E59351ED30105AD55FD8C817
+9F1B1F4E8645D2C51874CB407A6508A8E28AB2AC70193FEDBC18DF9FD1254066
+6C14B4160DB26A2EB8A19A19B21EEFECDB0E253099FB8FF8B532D998B6849E95
+85756A5A651BF45A87AF9C9D27
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMMI10
+%!PS-AdobeFont-1.1: CMMI10 1.100
+%%CreationDate: 1996 Jul 23 07:53:57
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights 
Reserved) readonly def
+/FullName (CMMI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-32 -250 1048 750}readonly def
+/UniqueID 5087385 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
+9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321
+990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E
+6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB
+DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721
+59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823
+D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF
+8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808
+6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9
+1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE
+03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909
+95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1
+74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2
+3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8
+47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19
+AFC27E4A7E07D09FB08355F6EA74E530B0743143F2A871732D62D80F35B19FD2
+C7FDF08105847F13D50934419AC647CBA71DF74F4531DC02BBDA22AEEA3FBBBB
+407E0ACC52BDC60D01A29407CC4F93EB8BF6D4813E9BA858D54F38918AC82720
+4956D50291F0546E50FCAFA6DBD0099123F5ECD4AB338DB310DB4CAE11337A89
+8ED99B6F483940C97544F888EAF0CBEB11094A13C073D0061808662A04A82BA0
+AD35E8782F854AF66C20C0FEF18D0ECDD1646321B93D327E53D88CA0E825FA95
+05AA57BD70EE700EEE696546A4081CEDBF8A19E9CA90C426522BE55251BA7E19
+EB6A3E1B8359509B30CEF2A838FA84F66E3F18565062C3AB7A1C455481AD9729
+0C204A11D752E3AB1C18A9CDCE7530E09811EDFAA0BB49DE752C84FCE3819B61
+852995D09FBFDE41AA0E2BA2CA720C2D2B565FBFFEF16F6F9AA43D0AF1E466BA
+E31715E4D896A5D658DCB69CD7A412A382AFDD5F6D3996934D383C0F8DFAF866
+412815B3C155587D1F4E4928FA2627BD34495B845C1D033C5B003437B64C9854
+F807C6966D7AA32EC4FB094127DC046ABC489553BDD6CD9A63B840A589A4D6CC
+0FFEE6145F455D72ED43FB477C7104A10270FA0E42779F11190D5629F937F760
+E1A0D4154BF06E30DD1EB7EB81BB4DDCF3928A7AADA25C42B0283845825F1127
+05EBA90EE8A86000D11C003D716818ECEBDB94286FC65516A14D7B85A083E9B7
+6F9BBA613968181E66E4F6744062F0E4F58136CA6BCE0EB402E6FC0968698C89
+1591642D1FB6EA4D720D1C066693739AD4945337B49007ECAABB785188602AE6
+BDF4B77C8EB5093C4E0FE2760D19BB5E4E3BB3C8002485A405DBB1BF7DD15B6D
+28C2D44BBBCDFC4B4797E14362164FB9A30C41BD2C615382B8D8BF3CCF2713D1
+EA941EF9F0B52594D08225C6E72577E86CD417A66003564F3791AEEF2C22320D
+B955E5B5E2B07C9B7684CD5165765E8EE7C4EF8A41C4B453128897A7026387DB
+F167973005A51850BC7A7B6104658335BFCF1A2D9DB00FC7038965D11F8B62E1
+7FA88660E89FAEC5491D267476B076BAD7809E36C723191EFC466BA9BA286606
+996DEA17CEF38060FACF58FF1CE8C07AAB525EA9E3D755E69D7BBAC9D13B2AF2
+58E35CEE9B946269503BC5988A49E9E0390B5481587A6BC9111E9E5D3DCA89B6
+DC957867FE2B87C8A2E6F39BB33298650903A40F2DE818741155A395453E45BA
+72AF7515C914CF17D181C2434BAC4D1778F5CD1327073572F94B2CEB214C9C58
+5988696B4692818E3687C1E74FA096B9E8B996BB9AD7F94405053B46A034707B
+A631BD0EE78F644B26AFBD7595EFB2E4394BBE6ED22950998689351CE728F386
+38197FA6D8B7AE1B380E7ACE85646975A510E71203CE9536B83F6A7F514EA4E6
+6372AD300E086BE230DDE0E3333D1C1AAF2E47A4BECC525A05226BC172606107
+531E4CD319DB1C167B5D1DB3FE2C4ABF5A8AAFB1B72368C1E78471D6B3AAA308
+43EBE324B79E7A2F01B6F187E243478C762B7F1CC2F29ACB3269761EEDC32BA4
+C85303DE838E99042838297952C81A72D2407F7544B427ACD4CB236EC25A94AC
+0048E36473EF39BC6A73B6FBEE10A55A202F03C4AF418CF08972ADCA5A168D17
+F307031A6858852D16632771640B6E4FD311FAD12D9D5A7B45B218F3AF0E024E
+A34A9971F6B47FD7C80B0BD6460FC0076A4E5558AB077BE708B405DA187012F1
+774A649CB4A09B445B2A0E8BE89C8B3519E0BE1A14AD46FA62154F59AA80B501
+E9FB40B95899CF5A0C7C46B2C1D7BD0735DD9B05BAC00679D7AF13E4D1F1471C
+EE117781DA2DDCDB63C1833F3F1B054C171524D23C8E9761AF422B27B58ACEBA
+585B162AB5F639A1E995AF4DE91B16DE41B705B7F1FEB8F06E25D76BF8AC256A
+824F9F54E471514D29E9CFF397BF2B9F09DA25298BC90DA4B771BFC479FAC147
+15215241C9D0CB830983FD4816599A1AC94AD442B676BD7D467DFAED4B2322C0
+031A040AC98119ED7EFC875192E21D92C0A49A68D1162049AE61CFA17F26A9B0
+7E04425603AAD70E4FC35DC73EE82C903AC4800EA286114D3D59AC939D0BAD99
+A1F737642248CA3AACC9EE798948F1E951D5ACD16D8CEAC7169F4106414CC5F9
+4EFBDAE66B7272DCA55942026A97AF101DAD263FAEB71E4C1EDBB5DF2B0F8127
+AC83493D078EEC8C7F280C42675B60CD77820154DEEBE991B14956B750E94E1C
+B97123A153E3D7645175171CC0E8E802768A9386B9D48AEC3A36853D2A53555F
+23C68A89761EE8B3632A0F3AB312F50F569A00C420AED36D67CD2AEBE11EB985
+2C2D1DA5D205F7F58EF142CE728EFAC670C495D2BC13D1C5674CB69F3060B2F1
+4413092CBC73375EA96D84EF1E90B7883BE7E597DCC1B1F44BB371FD5FB40E00
+79CD2D432715DDD0F9CF2EB63EA86FD7078ACFC62110C237638BFEC8803B3CF4
+D4F39DDC1F0B077A190CFBBF1D3A31C7601136F32EFC3AEBCD0EF4F0212EB480
+113EDAB2C1A06B0EBD1F696BB6A1BF72CA794D27A6DBE193208A57BE983C619D
+17B93E78E6DBB9B7E74EC9F9055AE3AAA17299A69E0411D2E0A90189A98243D7
+56A45A8AE01ACF3BE326420474F62A73D0E044334CF4DD178B563B69A3617160
+CB6BCF3CF66401A559BD46D2B87BD87529CB9B3694F769F4E6B3F3B9FADD0C6A
+A9BCEA655F79DFED03A089F7B069DFC4166F8DE3A5A1A059E4CF17676D5037E2
+3CDCA3897653869B1DF95F92D0E9378D55BB3E90AE401A0CBCEFA636AFB7E213
+D6C6C6A696F29F8AA6C87FC0F4099376E14F64C016D1436DD2465F0A3F946672
+1819201908D00F833329F80F66F4BA7F28EEADC964D0437799BDEC57EA0514E6
+0F7E0CE856C4F59466453D820072359EE6F4083C148D57FF3880A5E0C76C611C
+DE41D7BF8B84C21A2C4360E9E4DDE4FA12599E8434891A343CF93B9BFEC83894
+5EFAD6D01D42DF559F0EE0A3C8BE54CD5EDF3786D4867B4D4864605F6B38FAD4
+359E1DAA080834CDABAF269DE8AE57C763CFB587F6138B8F33474E0E1CD76412
+E6A903820F61EF1B81CF91D2B8B326575E05018D610BC46CD319B5486805ECD6
+64545496B4B72C2F8FD1B8AD97C71BC4A1CC7A392298081C6F064724BB3CAB2F
+ECF620119E8A14CAD5EA0381B5555309562130957F1A56A785B1D707340E0ACC
+C570496B720CD2B83F3C9C5EF59C3D2D6941DF863B27E65D01F60078ED1FD591
+C77686708CA3E95979262F76E6F12E929AE30D55EA2939C6E1FC108B7847216D
+4A4BD29103682AACEBBEF3938A7DF8600D717C55FD16E1ABDD49A0DB0BBED8F0
+03C20AC3E397BB6EF5127D97018B7D8BFCA2C15B75602F364225929A553FADEB
+C687AE62DBC1A08F3F947BD431FF8E875B3F348907C09AABD9BFC6F55275B9C8
+FBDC05A74CD52DC62A7E160561FA286BCF4A9B13CC29006DA078C7F2BFD3B2EE
+4CF5F455AD5120F3155FCA642F7F9ECBCCFC2E8C942F5C27AEB2D0B426F0BA3E
+AD90C65ED70C995B046946F2AF2BD167D25C6892FDE586148B44818F3C6CBA5D
+71AF55A1CF141235CDC7E849FA36D4E49577DCCBA0B736B0C94FD36C13C75EA2
+00F22673C387532E5A11516D4BC67DC01ECFD9F34863EA116317DEF587466819
+71AD5FB3638854F4C87407796D7594EEB1560CF6BDCF0BDA81CF43DC22776941
+45E6E751B07B40754BFE3B83D675B0D5DCECC2278FDAC05F61EEEE274690B8A9
+454B0A676B1BB0B181697E005974EEC8E1F6CF1B8AF3D02FAAC7BF77680EA90D
+6BBC03BF22B64F2954E78B52FE386267721177DE2702177BCF28874D671FCCC6
+9D0FDF6C7B63E55626CAFEE75DEBE26F097F053C091956B8974DE74092F8D925
+34DA6BE1AFF622A18AE8078F0400802328B704D90D46655B3A9E1FF6065AEFDE
+B5F44DFCAABDDA034C1584DD20A559F02DBB0BDE03F04B56205713E31DFBA5F9
+118FAF6EE37EC3DB4A4F4D3EF2B065967DEB489BD20F70080B1A08DBB6762563
+7C7A51DA8C63BE22BE14C2E5AFA0F401541E374B7B6C2E61465281AD6B086E67
+28CB6B42C8CD24BE2FB35DAE461F18E15435D244A3892B0570161860ACB23231
+D325289D19BCA1AF5A968063356F047FB9DB5336DCC656CBC888C0ABC39821A9
+F87511C3DD2460AC195FC2DFA3A6CBF85B4AAA2839FE916A1B8ABE4550E65406
+DF101713B775FE2A4AE1D9F815540D6CB517FBE5BC1A6B20654584AC5E742E2F
+8D0D6EF28A15064601E13940460212A41C6B27822EFFE4BB41554F7F3C7002EE
+F51A1658B66E6798D5181A0116F96944FD5E65C7444630B58A3D776FC5AA5C0B
+807582D67DDF40674B8D45362042B9E118A607181520F1AA6105F831AC856EE3
+97CDF6E27E3BB8C3464F4072A7D2102BE4ED9875EBD4A71646C01579552E18A9
+7E9F886748675F29F38872E870866E39CE3486D6F42602507250F26801233FEE
+B948AE40111C5A72FEDF25BC602F1B482DCF5CDBB3312A0F00E52C7712E7652B
+4EA9F4B8B573D733441DE715B753DB6ACED90F2ED2B8C0DA27256435197B4089
+1953AE194398DC499D01281E7F374C9257FB51E6BB9E8182B9889ECBEE22B89A
+EBF75944445B1AFFFB3580CB78AF6EEE86D5A7C645DA0C55BD95DE9472BA437F
+9559977195109CB312EEFCFF77DC1D1DF2BF10157279BAA88A3A5169E6781D8D
+BD784C944F8CF906A569223900DCBD431A8746B7414CAC3FB4881E0A8090A1D1
+2BC51B9CC18EAB659AAAAC186120CF819F69ADF2C1F8D59918F3320B7B15EBE6
+6540B1EAF6717A46EE2ADFFB15F44296CA0F4673447AB6B02B60799B390B65BE
+8F4FCAB0AA67C192320F0761D39726F2892ED97E8AD70634407F8AEEBA00D78E
+D3B84ADAE3361842F04E3C6CA4F051FDE6E55A4C3BC018FC850563FC388DACF2
+DA62E2F975A5AFAC5AE345CA221CF82430BC85D811878258C66AB1F835DF4B4A
+E20B8B29EE06978CE3A7371737B34807327BDC0783D58AE365D3C5B599F96B2C
+B651F2D2386BA2F2449EA56689366002B9AB60FA5BBF437307195DA96C1319A6
+0507A0C50625576EB497A09A3758050C59457438563536406E93FB477510957A
+365046061A98BB1E8B82EE920133EACD03EBA6B006D96A659275CFAAE1637431
+38EA9FB9608D5EFB5A4BB3509AF0C3DE9E125CEB09D21A3235D1A31966CCE0AB
+E3479CBE6AE8E45AD31B3AA370E231AD7EEF2196943D4BD24FAE18856AADE9DF
+31CEE52DEC89FAECEB02D0C515E0D157229D395454875274BD9B2C0008B6D8F7
+7E548E189888CC3887981DC905F86622D6D34A7A45DCB6FD9BECB594B2337F58
+07157E57C8D231AC518AAF2011D6116BCF096DF8C7D190F93525265321AA5528
+822A883145DBFB49EE67DBE518A6DBBD5CE3C01DA7A30AD3FA7848870E0906CF
+152BBBE00DBBB1AFCEEEA720EAF0EE4BDF9940C132C7167317BF42BB5DB59A93
+69BA73F61E5CE56A732548C9B8C8C56D87AEA2F77249CB6DB3BD7B96508DB59B
+95BB5128038574DDBE4C7438FB8C3FDD47E3A26E2614DACB1634945DA09D936D
+CEB39CC83B6D2C26B00802D2F1F020F19C66480227109F8ACF0DF7162FD0A520
+0ACFDF227C2E3E4C86FD1D4E2EF24D4320F76F3ED9E69D0F0B05D4A7915C4565
+35EEAF20ECCBC217AB6E883C5C3C58DF8C7280C79D2B87FA0501304FEC36DE1B
+DF8903775978E566B9FBFA70B34C96AFF89503DEC47FDA64280F3C8E19AC3E4A
+90F515C842F9C849389504FE027D74465BCE8D852615E647F2B4659726C6EAA5
+46C336BD9E4B5E027BAF1F2C541B8248BDA3E350D345602C34FE9C7EB7C7A45E
+1328E747764FE46A28798B08882F02BA0F0F81B949587F3168CA107F229C1573
+993FA1A37A73880153D22E0AB255DD74F406D8F1EAC2A2ED63F7862ACD0F72B0
+19804A3AE595B248DB1DA8185D048CBD245BB75BD49CE921541F35FF9CEBC05F
+93219A25A68CACFCE26B887C9B0C14BCA523BDBC6315D832A7BA72008A9F99D3
+2EA2453F34BF07172FC433A9E92482E283059D4B4D8B22B67A7C86CA3F9E93BB
+D8FD6A4B061FC37427FE220E6CD4A5EE5D96F9FAC03935C8E7929A8D15E2C569
+EC2B747E5499FE7AF9AB8C522D534C7AAD465C38A274EB552B0F16CA9E5B227C
+0D40F3D58A2B1C03C98AD0F73FFD08B8B03C5F3AB42E64067BD5652AE9933327
+6DFE3D5F82D5FDD72BD58FDC71945CE4CC28E7D58D7361F5A44604FAB537E01E
+FD810F699D47AA6B04425C991A95931A594C153A6120B5C801220A474FC808D0
+502644EB4FD8D872A21FAB70F102EEA201F4E2C70A7C77D7A1E317051280B5C4
+21927E3415C67403F80C456C4C7055464D6712B0C1B359AFEB48EFD62C8A8F04
+011A22EC7FAED780E3A664EEEC4F1C387C95494ADE71184BEDA2A98D0D95A321
+A1ABB9BC7FD5693BF41FC8235064261C5A75070D4CB119C0CDB9DFB6DFF0FE20
+0B6E29790FA8AD37C34D626B5FFB6D4BD9D76607C21DB898E3FF80E25E30FDA7
+339EB349EDCEB418F52D908CDEC9A645D81EA36F86BD717707E0C6A97EB02CFD
+56EECC6A826EB88468BCA0884C0B9C25F9F8248FFD9CB766B348BB7238A6C3DD
+E2BC7AF30DE75BE3B3CED4F315FC39CF290F030627144DE6447944DBF879B5AB
+35C99773BAA7F62A285D9987F519130EBE38BF391B0F8B95354B15FC4E6F4B1E
+2DD80CA317F70AD81D472C21139FF1C3B4FD9012BFDA36A76F0CCC4FACCECED1
+4A81F86AA5A5B337C6B4DD738054F44CDBECB7D79F01F3B41126856861DB68D6
+E2A0CB5096E7D07A51E94E00D9B68AD833D28AC55F46A2EF665AC8EE7CA940B1
+65C87FF3012E84E8C95B0F308186474B267EAB6225F7742A5F9C377253AD863F
+E9347FD8B4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMBX10
+%!PS-AdobeFont-1.1: CMBX10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:06
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights 
Reserved) readonly def
+/FullName (CMBX10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-301 -250 1164 946}readonly def
+/UniqueID 5000768 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82
+7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378
+77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18
+2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91
+FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F
+DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68
+7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4
+9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176
+CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D
+6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6
+E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E
+8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E
+3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99
+EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4
+0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9
+4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF
+1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910
+757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E
+0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665
+6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED
+E067598E1B8B78188FA4BCFB0B51692D07B0BEBB930C6F0997B437E2C51B876B
+61A563A2673932C2045833FAA35DB22ADE12102335D36BEEC9D5B0E0CC51613F
+0561B0B802BB1E1111E959C7745653516A296E671784C8F9E06B892846BA33E3
+8AAE46D5DD487E56A90079CA7DA18D25F3681DD0131C46E14DCDF512FC14D9AC
+7341D5046C96E98C17C37FF5841CD42609A279E8E3D4698F925E037E82E12B02
+1B0B763596B1655E53AB42EBE4B24C3F2AD371F10BA0F922AE573BBB163DD66E
+89F2C4E2B1A15300BB08D9818E77F0AB16910AA98FFE60E4A8C7048962318896
+14FC51AC3AF1497ED9F43B8DA7FA23DE5DD815FBF20E1D9DE2223F4CBCDD0068
+884D90CF371C1A2709F44B556CDB7CB1A77C52F20DFD64D7F70A328B8C3D6107
+1868A4CE3AA3077101B3A36C552BA0F270EAE2638FF076060C4F37550A944C8B
+95B4EC1B9A7380E3A66208382AA3BA671B1E88E9AD54CC91B60FDA9109D30B51
+21D35D4755521650099378AECF718D9C52E3CFF47410574094AD902E89688D20
+129A629713E087DF8DD4B02241AB3B1541899171BC12C8AD659ACD0120F4830E
+FED86917C5CEFF9ADFD18C0FE8D4D6EC398CC60728D7C950215F7843FD99CB48
+4614FFAF54066F94B31AA0863E9934CE7C2EA2FB1CE63889E1526A93C1BCBF9F
+25BB7EC9D9675B2F7E4F671B5A17BF82CC947D20F662D0B48B056643CFE19206
+513A9FAD9A9EFFBE5E67FECDC681A6CEDCECFD566DD63D83EA001C76B681675F
+5E4400D758C423D376E2C160558324E097D62EC96E3A6CE9F402ED6B4B7ED5A5
+D8B764216BC9181802C0C0857483036192B3123723667CCBA5FD9457ED7EBEB5
+F93210ABB0BB624ADB3AC453F31C68317DBDA92F6F61640C711AA6C3AD5C2468
+B3257271C0FEFF3726CE5FEB881D996024C4E030BCCDAE670E9E6759C193D44C
+E02070CB55DE012322BF86A8D12C297099974D431D391601E2048AC31ED452AB
+98B4843FD5DD4244726E81B17F00D205E02A0EBAE822C323CE6872B45D735B8B
+8C334C58991EA7E57C686C4C2B16C21F0F952E0666AF999C90CF95FEDFB9752E
+BDD05251E26D027F423144945E786853C9BBF2A194F3440F5D87935F9E83CE14
+30E3E37A287ACA2BC2708A9BD95BC5E912B2F2A621A109633D9702DEED9C9EC6
+D1597C5E676D2D16E9493A2F844111216CECAE91F6C10C8A043E6C91020CCA5B
+FC71BDD1F773898882F63256D5372F6AA8E337D2E5EA68A14967970D215C8530
+4ACF0F6251627590154C61E3C44CC224376327709BAC1ED4DCAA4A65894CE3D5
+59CA000BF23A3BB89DDBC63F9DC14A3EA95A9F818679DC7E902C68F8CAE9E037
+28922060B8315E2E1C6335F9768DB4D55E3A90A7179AF65322691E027C5C1CC9
+0A887B19F9F316A935049BFADF5A85B454F4F1355F2B3CF94EA94BFA669E3838
+989D65D90AA1DA57DDA0F9ED33760E52C720C1214CCFC9B42C2184A045718DAD
+D506AE98E1D88CD4A69FC873831350B8DDDBA6B9E8EB51C53056C2DFB799D835
+7C68591875202613C59ED8B3F7EF5B1110074569B4215256CF805AD524585F57
+A04027FB3F47D63DAB57B0BEC59AD2DB0F8C6FF6FA866A12EBBB787CEC01D9D0
+37F75FA34E1BAA27183AF85C13DCC2617E7B6FF5A5A0C578162E7818097C7906
+43468790ABF883898728D3C6670A29A16D1BBFE4ABFD88BB3714C81975ED8C16
+EBE26F230C89EE345185FDA39726ECBF48AB4FC966A7A04A9F886D077E93AD54
+7927BD8F581C95550B4076F0F024EDA854BB1AD128B6991DDAB98F0C7061739F
+F5B0E2DB726CB1014C8FD93B2EC56539712649E6DBC75A1045ACE60AA4027DC2
+9D17F5E56AE4A59F5F18001E7133F539CA09EBBF8EC968D20A3ADA7741F89050
+7FA457857B8AC622A5248756F172011E601626A30895615C6025B760421603B8
+D2E70D6F385AA2D036829B29743AD33FE56FC0EBB35ACE5F786944DCC95F540B
+8C0D1E200F6777FDC0A90E78AB55FE18798393BB9F51545D31B5BF00300AAFF6
+5B59E551C8C69BFE0BCF6EB6A8CFA3C81783F9A26A3F87D8CE4406BC72770BAC
+01951A60196C91F5D614571F46CA969E03A06FB76B69274CCA6DB36649EDFD51
+A91A12AFFEB478E8CC1853E04A97251A46F82107FF53EE8DE220A62F3CB78366
+9A9786935BFF1B6F68E3B14C2380B48FC26B0E043783161702A449C1BD19932D
+47645477DC84A31317F09C9D58BB49C5E1A597B5B2661493348D5BA1E4329A5A
+A151998D9EA4419B4E1BDCFA55F2D95806BB802141A13F806CEB93CCD8F0685F
+69170569F1B7C2EAE90F2F610DA86304CD85B9AE5A110FE235EC0F531F8A8DF0
+71FD32C11FA5574BDEF4BC4EE5DF944F7408638E1ECB63763AD385C7140A29A9
+4CE1FFA2AFED0C2D0ACEE8BE8E68DA657E4AB533F8DC919538935FDF283A94CD
+A3FF2A71A143731294F1FFCE545FB15612120A193F182829C15100E545A927F9
+03ECB17FD4DC9745EAE806A832B48D75EA017A1196CE4975B1310080CDEB6F2D
+88D60599FE50FA30AAA85CBF8A77027953F4E931F7F101CEEF8C888361262B22
+9A796EADC9B393F10BE9F835460364BD59E318FA82CC14AF605F5F0C841A2F67
+829E351B14FB4F57B9F4A1EC8B5C201233EA9D90F4007E75A2622626144B00C6
+BC01DA4D64272BFCEC70B5B65CAD61535CEEEEDA1F9290470A9027B2295DB46B
+D840CEEE3B1A68B1CF3BD4765ED003F0C47EF037CD797602EA4FACE9963FC590
+3D17CCBED7AF3730A094AE4D85081525D483D1BAF4F01B6A92904EACC56BD384
+1BE8369FB7105203B974B08A8A33782B0AB6E67088DB0C5914B81AFE779F7727
+95EA367518F169F2CCEE12F8871C05CC5C5F200A8335BA967B5B5CBBBF38815E
+A1F6C5E713B95EB4F8327D2193EF117D8673456F8B7230DCEFEBA494595C9EBE
+D3A0E237809F969B489D85ACDEA6A99EBA0E5BB9C79C1C85597223D45D710980
+6DF2ABE4C0137817DFE71838E23F4AAA65C613291ADF1A13DE22A214E079ABF6
+4C9CA80A3C0E4749FF0B7F325DA7E212CE9D9BD68B21C39F2DD12D394171627E
+BDF2A28A8309D0A5B8F35605176BF60B646265F21108935CA1F8B4F3A6618220
+9DAF021272FC7311EBC47EE352F884F4CC4ABF0724E4ABF697D0494A416563A4
+F8F89CBD9B8BA3A268B08654172D14A4ECB2A91E286A3F1CB0C356C402275119
+CDC5079F9849E3D7DCA25D55365241B8D721F1559DDEA9741F80FA7489BCF520
+386ADBD8ADB2DB6EEB33CA0FDD9A066269ED6A0D48168BA6750154993DCB9145
+AC9E6104B9644505ACAA29F15050C1ACCA53E543F2620298CE252A8AA4D5A02C
+6F18F62C7FD48BD336FBBE42310812D712C6913880463DC0E7E6ED1B72705AAA
+7B531CEE4B782F220CEBE9DC90F91295D3C0EF7EB6D891B256F4B45F22604D5F
+CE6646826C5B3B56A6AB9FC0641946ED5ED61094679C829B9FB4E83F1ACC3CC9
+4075E13165B247ED18F6EC4BDBBB58757B0452DE5702ECBEB0715A41CB109022
+9F9B10C5FFDFBCF391D5AC309AA6361EA199D35BE968A872EF7E2555173E5342
+022498AB5AEAB181AA8B090C389060D8B09A6CC07F8410237800CA4B76BF7443
+2EB77D90C4BDEE39FAB40CBF6F973D1CF103EFBA9584A3E6C1610D3387C6106F
+A9B7C398629CD189D882EB07A3BC046502C82CE80BAEA5D98FEBDD85137682E2
+49F1F25FAD223D458C00B5A2049A508A6393112364078A75D031D7A753E56AA0
+74B35F538DC57776DC88B7F540FB7CF9231D71B80B7A0587CB91B6785BD176E5
+3F4117C7B0EB443A04A80EEAB10B93440AA69FA7182A55A9B76CD111E6E8E64C
+3E9A9EE21E82714688427E621E6F980B94A836DE248C052AC6D30D418E6CB785
+C19E5D97C2B0681FDC97ACD120423BADA07433B93BBC9662352610825B69B97E
+596A08BB190B50790398C9209891C418CC3AE3C5066158B852C5AA0E2136D282
+23200BF70C14135B6F0962FD732655930990E2B7647834EC1646C4B6DE12827A
+D70F4AF310174F6AD11DBE2D32D4C9D655E65AEEB06A1014357FBC8AFE6FA5D4
+886A8BA7FD6BE6C76EC41FB68FDC99919D70BCF19E5A39722D00CEDF231DC63A
+399CE887473CB2AF1F446C1DA837D177D73CFCCE7FC13451DF735835F7E5546D
+6B6D318830C707F22CFD84F3C6F55D68AF33F75A9A4F2CD2603E9216E30B2949
+1C2E01BAD8F944EB94506A0FCC5539B800A104797B55D65AAFCB4EE443EC21A6
+F91630F483D1E59B436B6BD82D453BABA1097230FB204DE5F903BCDFF63C02B4
+5DF9FA790129A565A3ECC1CDD17846EB9361ADBC69CB2BD6701E1E30C13EEA4D
+01C51337013EDC6B154AA64913DAE7212EFC0C5D226F9F85908B919EBA27231F
+863683819ADCC9EEB4F92DD707B48668337B0053652227DFE1957B4095B35A8F
+B7853FF6EDD9185CB64BC38798B4538566416C308CEFE19C98BAF00795D393F4
+A947C1737A8BDCCC3BC0ED9E2D444DE263116CA5D123F966180A9AA7AFDD9AFC
+46D0D02FC6A1E2D78BFDB1BA45939DCAC4E5FBE7813007C3365D25DF2E1F0477
+6A717DF3899A2242D9D15B5140F19C4CDB1F9C7EC58BCB455126D6CE58C78371
+5FFC16C48C6F935573BF1FA63C4FD9F8620CFE3BC7E70167A4F0725D1879F7A3
+14B89AA468C14F40AABE020A1DB2C38F09864D2E852A7EDCD637EEFF920A428D
+DC73392D3E6BA3DEAA8AB3F0BD6635AA1254AF53A588A81A6960489DCB2876C1
+1ED94458540133CF16CA8CBAECFC9FB929DEB721E4A7CF806168C9EA0C523D35
+159D4DD8BC39BC416758399A5E324039572F57B4B188B511B579612BE8068E3A
+E7374A6D42F191F2229787363799FD510015C0E013F6F0961C5E656A5D03F5D2
+2D28C978A5811BC82E49BA6A57A7390EBCC2EAF2452C7D46A82A478DE1B968AF
+3082D7A44540EFC555B6DC97D5EFF5769E46381DF8B225830F02AB30993E4CC7
+145C04AE2E8E7148A50AA08DB10DA8663CF4A7840C817EC5E9F8E1DDABA25DE8
+24128B83B71B480FEE06FB5F7D360E4ED6C4D772B7B080025BF9FB7CFBFDF2C1
+ECA2066BC16935646500BB97FA42D89A740187D95EC70811DB76DB82E9D5F8FF
+0E140AC413F07F2EEB49E1A8912FFE8AF50F18FD1C9BDC2EB84078CF54E92679
+B7BCBDCEBD8C914B4AC30F86F12492B8249CE4612ACA6076926AC3C789E2B579
+1E9F9132107DC87927FDE981D3128F1182AB329DE82A6BC4DFF2248A410A6263
+803A05F0FBAD1EA14DD99996D7CB9964B81B7B504AFEBDEEDBF2B504B474AB0B
+0871CAD376BDB0533D5DF7D40D2F2DF78B40CC6033BAC676B09FEBDE354197AF
+DDA7D3240A5D9544C402419C4609C6FEB1FA67DE68D835833B5BDE62814D8BD7
+AB8D76E5D3795B2CE4D86EB72655CE6EF4113E9F6FFBE13024BA6DA1292E47C3
+2E1FD246404A219C82EDDF2D64BDEF288526E5F0A07090F501BAE98C6F089FD1
+92D921A3222A376CAA1F92A7FD413EA6CE563013F68E8B34F69ED445E23254A5
+057F2455475B0A92646CF874249DB46F0D2D0001C729782B4D01C23D3F4CA097
+891205EB2E44BA08E1223A5B905746B3AEFA20D16DC49D3A2A973546B32FB6BC
+FF708A554B94D0D012A82BC0D621B042CF22AA77B5B80691BB17CEB14B34CA7B
+1F2A9D5A08740912C0FDDFF9B676D78B44D6A75AF5BCBFA0FEB60636FA82F634
+B843E8C7D53A088500CC2F79B533DC45935E46116BC0B81A0A4DB12DFF2CBB33
+879E1BB94CE7F36E122F527ADE2A2BD23434A94992B181A9256CD43C39518BC2
+BD7246230F81A788F101ABE9D68A635B5ED081220D950FEF8340939D95F7596F
+67F2263C73A5B5A94F6CA4925ED40F8E7E583E2E4B3F21DC4898CD7E5CEDFB0E
+65E9181B02473EEE5B0FB777077E9A5D8A58D6D314B535B7CF69C050337D813E
+EB713428EF426BD35DC7E25392E1B13D49E92CF4DE13F2F686CCE8E45F14C2CC
+0DD469B542DC16A4D63A3E8917BAF74A6B17B0524CD637F26DE89847FB03261E
+E157A477AEFFD4C5EAA63BF613E04993E5E06582B3E0A2877AE5AF3F556B0AFE
+CA3C667A6F70C7C441FE3B3D867E79FC6485A2298267485CA6744149175A2A62
+B30619CFF3CFA2C0C9F575784D34175E46D80351E0B282082F5A8876E9908D87
+62CC9FCAF336C10A8557673C541941EB2D4013ED21A5E0D70E2A6942DE94FD42
+C66AC928EECDDBEB1C8E1C3DBC87CC204547F80414F61F69144A00DD2D7BE195
+BCD3CBD2B7FC4735259237EB0B243E422C14F1666E4FD67B949A5F18DA24ECEE
+157A464B01CAFF4D8149FFFDDCFFA7D4748BED7DC16AC1E950D5D7EDA79D3C5B
+28AAB577618A48E7B367E9DD1F2F33CE107BAAE00CDF0D12A8DA557E8E267DB4
+4A642ADE6558403E2CE13568EF250C018FFD0937DF9DA6516398F48B471D5C7E
+521868517B34E81F16D2F992CB4BC9983DF9AA670C9DFC4C0F2DA3FC0A6BB8FE
+F992C0780512F82083C1BF4CF601F6D0E492C5D8E402BCDFA24DAD4D1AF902FB
+8AC667BF765BA02F036C7633EF495AF0E35C12DE7B9E031478337AD6F65027AF
+2F1F0C115818BE7E8CD3487621B74C77231BBDD873D6CA01B2612BCFEA59B005
+A5CD74209CFEEBA697C6400702CAF067DB65A6BF1D38370E341F52A9ACDA87D5
+CF1EE3BF78F0C555241D43584F6ED92C2B27D5023E68432BBFE7E972F2404401
+6CEDFBAA150AE84B5CE12D936B0E3048DA950DA9886880B797116B8D041CD97E
+A33B28CF39E977DCD5B060657636672D2F684ACCDCAFE5A443C1B324871C62E5
+B0A647C0E96B5E95396E2B2AD6E914A0873A0CAE556BBA906FF2961E0BA4040B
+20845D6D977BE110724F36624C07B0B3EFD919CFE569C471402256CF9DBD65B1
+A1858B8108794157F11906C58EFB5E0FA55083881410C8011FACBAFF851257DB
+856CD6EAB49DE8E672632A321FB2CFE294485524B34E6AC000F80A285B3F6DEC
+CCB59B0AAE1272E69DCA044BF49D997D38E2E159F03C253700F030C764781385
+8C4C1AEF067019D50FC8683A15BFC0B5C6B47CF49AEE7336F6B9FCD13EE2CFDE
+38EFAD7CA071432356655738FEF3F09FB21332B1E712D80884DC03C7E6429E71
+DBFCABE411112F5E45CAA9C7E06597E8FA793134E86230F8F6BFE876FFFCDA90
+11D86E28AABD34DBD3A90B343A8220E8340DC76EB96DAE856DE464DBA9F06516
+65E3441B8159FB1F25E6E0186C5FB35EA58761632B766742C6224234E05B3D4C
+B8F0F84EA4766EC708CB75D6AFAC41E64E1F0C76BB8C0FE4A5D2C6E8153B2AC5
+AF8170E82AE8E2390334AB8DFEC1A9A8A677233D96B341349711839187467959
+82F4B0442C4C39753EF6AF7A27239A665BAED85439518E98D9578500CDB3134B
+2BE5638F86C8118169B9CB8B301C33BC62C1DB167424401DDFEA15A70B11AE49
+DD9FC3677BB55C894F689DCAAC7EC66B4983C66510B9AB0FC30FBC0124A389EE
+4EE79A41938DD47B73A9862F92E804BCBE32590BEB487458B2DEDD83E9BF24E1
+3458AEDCBF202718B886C1D61CB8E034E7FA95D19925D4B3B63969D4F3E11923
+83747C4338DAFBC389DB7A5C52BDC25AE34C240B58F2D2678AFE5C6052A0E0AD
+51ADFC4B15492AD9060DAEB24DDD8B73315A17DE4F03CC17B95014E74683A375
+D4864CD3EAE5F2AB3BDB2BF7B0A2A7DB07ADC88AE63B528AA5286ECCA8A8E567
+CCA540251DB6A23F814DA79071956425B58A58745073A588604178B2DD1DF9EA
+0A6B97E8941CC96D515491532E2DD56496BA17931C1A3B0F11527029A940BD77
+2DD1580F6F82096FB766AAB27B0DAAA4395FC2DE3CD753A1341DF09CECDC7E35
+FD93E4C6CED141CA0D0EECD4082183D53A30FFA098E0A365890091CF00A54936
+495377E86A36BD3E5BF2E176B0208AE61732BF6E03ECBA8489B90D45458C6C17
+08340758605E9FCAFE7CC748512A78E47B36F20C79BA6EF572C4A2E4467731AB
+8340F338966807E9619E6D2130F050DE3F132CC4DBC57AF4A297ED553A11CC66
+0B85ACBFF40FE6363EC3F9F647544D9BC0BBD2EA890F48424F2F0C44C68BEC74
+24B19B6F198E192E7A381217DDC8642A5FDC2063986D2173E2D169FB130C6DCC
+521E23A7DB4CA08775987D2F58F748A03A43BBB4CF345B89171EEE0B7218635C
+CBE5EDDE42C532FB2A0CC6B4FC65F5B436AE690274AC97E8C1C3E82A64BFBCAA
+299ACD3E4F62ED6ACBCB7210810787241279FB90AE6E3E3B894993CE82736DC4
+2B4E10C97E1D557EBE25ABCAFCDB5C990D880321DB014431A52F36FEFA77970C
+3308074B679597943D1073CD1CB4138315CB0A74A014926DA36A888A1EFFEDA4
+999E5B25B1A5FE63CB5B1F55324876C6E7450C1713AFEDA559D4ED155A7FA909
+BF6F6B30270C93B23559B7EDD07FD7792031C536FF74E2FA32433FC2BDF74127
+62323A82F35EF707D37423B911F37E948F2174DF4D3FE1F8B787B9E896635F0A
+58595E77DE1B1D91520E8FFEA4F10488E50A840065BA633D155AAA746CF5FD23
+50D6754AE123A4B2AC4246CC1CF35EF0F82D9D46E18C33D9A6AA1E9E7FE1A74E
+A5FF30F870D916B47F9778AA7AB02EC4CB1AFE370466B8B718490AD0AF532617
+AE64A363A617E7E47BF48FAF88A5B1D9298ABA81926155DFE273746A52F3494D
+CD41A286A50E6AC254D2A6433DDFD9684916C8B25DECFB5A7D4B94D685DA425D
+C06136E9828E058F1C713B2D24A3710CE2233A20A9CB8EED0D3FC4C579D56033
+99A366A840282D9154ACA10707D8841DD4F5AF4990A26276DC085B8EC91A02EC
+F11A14AD8D700323AA2C8899B48554CC9E6F5AE0BDF2ABD466D6C53123AC706E
+53A96C7EF316773D87501FFB78BBF203A608051E6ABBCDD22E18B63DEFDBC5DF
+AF8241366BA0E01D7BBDFE684A9C9457942A0CE0C87EAA3788BD1092D1A9CEED
+1C03A4DF4D2925E28F002A5E7E4981867E449F5729087BA7E94C3BE0BCFFF147
+BDA227CC6FE66C28A02CFA09167F89BFF514684CB5CAE0EA6BB45C93532CD279
+E86DBBAB031DBEDC63E843EDCD2D16257865054FC97CD8F57B6792A5EEB5149C
+3AEF8D7F3D54B85401E588363F02583D1FCB81CFC8B45757AE9F78F3EAAD0EF2
+C5B73A50270AA183C1F5FBC27E0C1143DF39E972E7F7FC2C66517484317A9CCA
+1A39C7AC070094DAD681F2DCC3DDE8E5E0686D476F2B6640D6C10987F1F6EB34
+CC877FAA1F9AB3A6637D5C4D284615786A1094D06C931AEF485300872BF65533
+1BDDC21E560559550C96043FE3BFD9ABAC8B01F2CE08F55770113303BA2233AE
+A81CA5B4A4442D1B9DD01F0BEE7FA42F0FCD748C184AE8E0F6D228A5B3E6A667
+670BCFE3C7437E14C5A6B5B63CFDE1B26448998C011C47A3C59E53A5034B72AE
+63B265FC370F0C758366C356268E0B734B9370D4ACA7EA711E8B4B994055A6A6
+29CC62C34BDF0FD35AA78E667DE05646BB36BD57854C49BD69BFECEC5A7FD9EF
+05D0F7AD8619661E5D35C7071A690708C321171DA120E8495F5E8F36C13938E8
+BC63CA5144354AD6049DA467008514F69D470DA497C825CD0FC8B246C78EE747
+4B8602523D898F6FA637F8AA3DB3D8D2E27E7D06672075DA8135B90E976986EE
+F242A5490DCB536686C00FA826C027140F7F5D473B00DFA9761CE4D18E1879F2
+4BBD6A475FA560F5EC85240CE0D76299B9A40B03C51F21916DFFECEDE4567D41
+E188B89B310B1E33A6EA1D095F630074488F59A3BCC5450F39F655530E1A5B07
+39EA0FB3019245889E7BA9817F41EEBA22DC9B3095139981BD71BB874EBC01D0
+D52D1103EC5262A1FD6D2505E218CE130B0031A8FE0EA498309BB0474FA5A528
+DB00DA7BC41D90F2A66EB5668B00BA789AE15728A4D813F5F85182F6D16B2409
+197B40078371F9E6A6D3A4C771994FC4DF2503C7948B4E97DD0478E342152A2F
+5A91B2B72D04B6B05DF7B7F697A3127CB63988BB0ABC3827E2244021BC0F4405
+BB3DA3C12A471CB31F8151A66ED53C6AE4274B2D9A3C1CF88F8A0AB86B1BD3B6
+55CF316DD2EFD3EB36638DDAE9851C52ADDD8DEAA877CDD790A03042CC968099
+2AF7E1F0946B9FCE82FCB8C0D98FBAA25BB494E6F962069A6044BA933DEF10C0
+79F95FD66D129F7C2ACD578A490061BEB3CD4B1100ACDD96EE10A53C8DB1BCC2
+5DBB7AD4799DB01B0265B23C981FC9165F2FBE8C801E9A07F9040F6D6F58E098
+793A9C84E0B941F35BB74C82B6DF2E5D9702E898543876946449387738C67580
+B8D8CB8495AF951F84CD56982E8E2C55A2FC338E495C00F91785D118599D64AC
+488D7DBDB9E407517FFD3BDDCC075F7A641CABF8368CA6BFB788E00B4CFF0183
+6793F04601E214849C7AF34D2FDDB256671929B2BF0EE8B0E46383228BC3B87D
+AB15530FCC2121E9F891F74858457E789734D12F0909E1D21F5C3044CDB3F6ED
+1CA155D5765E2070DAB10DDEEAD9AAACF766A75582C1C20B9AD5ADFCF2D1E0B7
+7662B56B04D73F007F06869F10FBDD78E843D7BF741AA5A73ABDC393479FEAE7
+DAFB70005C81D387B960394AF016B12A8E73048D06A7A83039C3D53D43CA4A3D
+B1C0290A8502E3FE10D692428E2B5B5C3880457633D9B30DC69241D3162599CB
+0635C9D64C10E049AF2A04CBA28B0650FC356B78D666C041BEEA72A774D482EC
+ECD19AA25BA2ABBD41DF3FD1187B7D6867DCA8FBF2D60E728B48771E779F6CBB
+E6F4D35752FA4F0396C4167841DCBD1B0161A5BA019C9BB4CE4B4B010730CC20
+A92E2840CE301820C95F28E46E5FC4FE05C3BB23AE5965F010E48EACC2537C12
+D5521E5333ED7F3730442D654420F7F1B0F8B86CB4C3413208C43D91C357572F
+4FFF2890BBAE66679FE48D8EF935A3E50A0A2EE17B4DEAE2EA58A792E1FE887E
+16AED34F268BD50FD2A621301E3B4F22231FB1EF60A4BE64879E1F3348907217
+336AE7E609EC24C64276F61AE8146556A7E741AA198B297872364AD079CDDF38
+F99E76DF4EFAB0CEC030895562AA315CE8F3778609819E06284A26887FE0BF44
+440AA9530B1347290CE791377BC6D184D7FD6598201086BE3A2F4E9454D50AE5
+02B982D6E9DFEE244D794321D6CA46CD5D2BCBF5C40C63D958AA8A62A039E676
+FE7A6F57BEAF5F57F0E33BCF5745834D020CB4BEC82C4E901260261846A86534
+9BCF2196AE379880C40BFD58827CA049656F469FF2D4D5130CE0F976BECF2E1A
+08DB3C133B90DC8C378B2B2B621286D364941652A84C719E31744B44819B76C6
+C6B390B21BBE1064312D29661C46B3737B792B850526F6D26BB3CA39B831B3E5
+3780CB4524F948C7EC33A8E4499EA70C5947E97AD61329FD6A6C00719E602B35
+D565F0DAF6B0554AC168225C06C2DA0C1B71A51A9EF3E35A31E0CAE31248E893
+420E46A0EB13CAEDC853D85D82D5A69E3618BA2EB415FDBFD033788C368855DF
+0D86921FF800060D4EE3A8FC7C88A61F30FD2794822939AB8DB26DF937954906
+63D675638FAA01BB92AF2F98B28DCA1D336022A216927A6454D68041EC003338
+35AFD8E970E89A7B56B28D14F29AB0B937F7D6DE1235047DBA2FC59905F02BFA
+7146009A13814BD713DC78D64420BD3A90F791FDB5DA162B0D04BAFCA1ED375C
+659A5D383C8EE938653BCEB3E0CC80C72BFFBD46E4F16ADCCDAC6D36F28296F3
+5111917A11CE8B7A861B1E8548BE3049B8994D7B1C2222371772B42186731A5E
+0ADF67701B0923B87095CADF7033204D5F5241D677F017F7097C4DBEEC51BC8F
+CEE3197B733836B5CEB957BBB122F393A9EADDA051A26F5BBC0903F9273963BE
+CC6DDF021188A929660219D5F6E67EBB5AA342437D836685D894FA8F44E2C6FB
+F692720BC754D41B86467B68BF04E7723EF32BCBDE82F37824450CB9B3BE9296
+428EC5FFAD4FB49B74B57E25611B04DCFC1B980A617F6C514CF7DA0F66D6347F
+756AE39418BC2BDCBB0281BE4F46C2EFFDC1517948F7108937703B298B584168
+81C61A67A0094853C79A4064C5B012C5F41BAC8C29EBCFDDE5033C890EF4E158
+CB6CDF90AE33C088EEA96D944FA8AE5B850EEA2562AF5C5258D291025B8B8AE3
+EABEEADCD5F2D25ABB924BA87B4CCD99E8CF09FA18D613A375E9F7E032FCFFF5
+B51AB280A79139C3B2BA28BA2D089289FD9691EBA0AFA50C0EA8CCE00585386B
+3AD6CA6C612BF16472BAE5F1EA2F52EF923870E91BEBE59DCB7843F24D7E56EB
+D2936B10490F24A80ED7EB39A65B1681AA5EEC490C9FE444683C0C9A10D57DD5
+E2B17B90CF6BE85A86D783833814B56E7B9106C545F80A3284C3D3279100C0F8
+DEFAC90BB71695017377D5AD6918E1C74796F4B699AD5E74A52C07D8DAE2ADA9
+DF7429C8D8E9CCA2588DD2DF3855DAAF52C3152D49C2828FEC6C650200D6FA33
+E718FCCE5873325C9CFC4FAAD36302D07D3EB38C04A2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMTT10
+%!PS-AdobeFont-1.1: CMTT10 1.00B
+%%CreationDate: 1992 Apr 26 10:42:42
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights 
Reserved) readonly def
+/FullName (CMTT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-4 -235 731 800}readonly def
+/UniqueID 5000832 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19
+38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF
+D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204
+EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727
+A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593
+F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714
+4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA
+6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E
+A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B
+E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F
+1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438
+452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF
+8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369
+5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA
+DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9
+BA304FA879392EE0BCC1A77C8392948FE1B07931A19298FB60E443E198089A0A
+16D46095558E6DBAB7E03022F2A762470D545CE6B8D931FA66E63DDB04125D5E
+A2F86EC0944B0D160100C2DB33B92C400A8CCB715F68477177459BCD57C86D97
+449A25D63E9584EEF820A7AB919BC62D28434BFBA0EC53913CEB3BF4857057BB
+3FB43E95092D6DC0B7CE4E1D8C1FDD292F80E973E277C7FCC9878D2F97D0E3E9
+8DD466CCB4EEC3E16429C36FC9583A048A83F68049C707E5FC1473E7DF90125D
+BCC3489C04F227D170EA0C1E8E021294FBF894B19E966F94B1F3FF879474E9EA
+34D55A9EEB4459E5DBF801CDAB652D681BC673C26D3C73FE1AE6232638CB2582
+F75CA7F1BA6327B0A39B251E10606247224799C0B710586D3E3DDF28A5864D56
+6F5C532735511ECB7C52B7B6D47042B26B5C7B7D12DE631FE3BB27C41F4FB436
+5874CC0D1A182B42E4E0146BBECF156134C82BC2BE6F136D0439FF5B2585A53C
+7CB0DA52270915680C1610576D93988FC7CBCE8F8EEAD343E3ECE86CFC8D7D71
+D73F8FAB6D0BDCA8250D0E561E2A9F3A9ADCFCF2099128D1C3565C6F5FC2D898
+DF5FAA3E7F348F470074C814565E4159A859B8C0E0E7268FCD3893A97143C97D
+A6DEEEC5D09AA10EC8934E9DCC5E576FC9D07CA79B87E618EE99342CAD8F88D1
+AD71C35F81AE4B0670B9B7AB53756337C1B4140E17AA50A7E01776A21B427863
+7189D45A4CBFE2732A1C68594F1FC860D909E575E1ADCE69C01434BF4EA1D1F5
+E5754C857CEBD3BC5AE36CBB335677C3FB2AB5359C205A5A615C61E1FFA0ACDE
+9AA36F020869427242D783CF0D5CA4661A6578FA0C8FA8C86C0D95192C772C12
+9F71427E98CC2ECABE772F1E066CBCBA4B3FCF3BC8D6A3496230AAF1232518D3
+987752F69281A72D0FDD5334B63F8D214124A76F92D73E55AD0E1C9828A733F5
+2DF9FC916D18EF588D0B6E6B6DE5B2D9E2B982BA91481172FE7207DBCCA477C2
+C5D7668B90C5A53C08753190565E31D8F64D7CD5BAAA03F840EEEDF458AF1C93
+74B7E5E398515AD57F81263BFFA0DD34C23A5FB9F5513ABDE418E818813E9E31
+7C6D79EA4A2AD510A75A6CA6A9E9C4F30A3177A2F4D7459CE0F582F0576D75EF
+30F2C605E38BD88BF83400A984A5EC28ADA6D6AAF6A97B9BC01832A01C138AA8
+2FD43F5BD9BC9DC33CABEC1D7575247249F40B8857BFB3432D683304F10172AB
+B027576186382ECA5E35C0315D78D8DD0D059A09AE9A910463AC11123F5F327E
+E33CEE07E8C1D2A462D56C2720ACA707FE79A9E21E900991F7F5B5C9D41D13EB
+B0BA7028A7AB0CCDA73CD0AAF5C47DD696237522DA01AD51972B534923CC1090
+0B822C7D63FF9F637658D9B322CB93AF9DBEFA1C8FE8473B9DDA4D1E4EF54B63
+34507354BD86F34355123DF39250C3EDE50656A033DBC40F64AF6707A856A0F4
+D34D58E4E58984ED0601494BB221A28B275B1D17B801E99932176F6FB1A365E6
+35193106A08B4D25367E136B12B7CDB97813BC3FF9DA5BFEECBDB7890C9CD88D
+82DE2B1EDBD43715C2368CCF16C00D2ACECF3C63F71DBF8BE9E4DB18B6787297
+BAD509657AEC06C341130980B2A668168C99A38A842BBF3A2161337C6283C7C6
+3B657C95883EE015BBD28CD457D84CF7C033417C72141247A75382FB163664B9
+B95F1AFAA4B7CAA2A4A1ACA22ECA5112C06D8FB75BF10D26BD79C7D6E5AAAB2A
+023F827E3AB76BC9B446BE8ADD75CEACBC4FB7B1DA7E1AF01326C6AA2070DF4B
+65CCA278D1652F21DFDFE8C107A96192A1BA0DBB09F586FE69EA456D6DFC8B9C
+928E0D6337F4F14CB90484E964B5B2A2730235B750FF9BADDEEC6C83F97F4013
+A77E30333D53E9B8073E797D1D24620A0FEBF563E11971AFC2E8642F7B06ED8E
+0F378ABE93139F641245FAF99C2196C6C6A60419A15418C864EBFCBD1F38392E
+280D8F8E051CEDE7BDB80833FAC1432B933D799A39A94ABCB4BB63E360206323
+27A28891442B7B809980D003E03E9E496DF7831B794122A9F7829E7D35CB6CC2
+A44CD18688F74B61E9FB2DE5CAF15364CC98C680641E8C0B9702D575F41D40F2
+EEB9D4CBB20D88367C86D73BDD31CC4EB9EA9DAC26C8E81ACDCF57E74BE8D26B
+42CE87C64A471970FA5DDA6B0DCB87A4281AE95DF0753374A3BE67666E6C1F6E
+FC77BEFD89C7BC9737016E8C9519E7D8A835F0B015478BA843C7449C791C1320
+46F0E42AA46C76EE127E91290D5177FA6BA2075CAEFE94776C521015325D44F0
+4B31FDA1C4CBB9BC662702FF1B94D3261C23F7E276A387C4EC7EFB806008EFAF
+F233F68617CDB3E7C738BBEC5E15A39BCE0AF5416F5DF3376A3E4BA4865FD0F5
+823C02D475E8BA52FDF214658842F273928CF2B8E070119C92D9B44A382EBF1F
+311DBAA2FE59599F1DD8D571232DE232B7AC0372D6F26489A401603C14B07F27
+7A427AE96EBDA95A5DEF2290EF7BBD5EC398CB61D12EA7E215A26F4082B67E26
+C97FB098A304356FC777ECA014EC79C2053B2154B753D5BA14F972BBE498BEB9
+E18042F6BBB7018C617C81545E9A12357DD882D03163634EB5FC4A65CFA9549B
+DCEA093FF14D0958BAFCF9E1D41A80B75DA6DA3D40375B47FF371E6B2507C53E
+428FD39485DD4627B7E4924079A96784199EB8D57F86AB60C923DB6F04455C1A
+3F830CB7580CD40D96F1F7741306529BCAD0B9D7EC00E311CD54FB14A08283F1
+EB0CAD4A8848C140541705DB6309FCDD86FFE5261D77F2DADDFB8EC31EBDA031
+56549505D2358C3F951351BFAED1341B07E03D61E87A9EA0E158A8DED63D4522
+6962ED0C981D066C3E460FC098C507492A43DB27252926350D51BFC1901AA8AC
+47C41D245D7029A80F40A65BBD2CFD5AC303C104467E1108C829B6EBAF3FB268
+8B43DBB5EF906ECA9A5FBD9C885BDBD449EEEE60B0803243FF304A9D50E6C0F2
+10F678D72E815A290BCC57A5700CD5334E984B8CAA335F40CDEE6E99E52DE17E
+7E56B9F793846556F45ED324D43A23FC04FAD8C130C89F6989CADFAA137D6776
+C74726FE8B95BDDCE73EF932EA7C3CDB618EF575DFA31FED6FC3782565297814
+7B2F3A6BC497840FF59B443752376430F031619922F2AB9409068EFF466F86FA
+EC3EDE51BB813E565992DD3EF690745EF0B9F3776F2D2B59C11F8F7649820DB0
+BB5568C27BCF69582B87C9F1784547A58E3E8E01C2666F8B1ACAC8282CA1F5C3
+DFDA49703D31678880C7862C1E1143F3338804F769DB07CB1E8A64A99742FB7A
+03F433B2E662635F08C46D3B451C73A6EDA7B6D44039724304D9FFA963B64988
+EBD9F7D89135817E4FB9FC8A86397D1DDAEE8D6D7589515A8BD0D651F9D2B8D4
+7767EB2C930A3E9850D868C05F162DA8757F35A0B797C154AC733D81DB75BC01
+92DE63A9B0B1CBCAF147CB54867366CBD872B89D457BD150CBF7E4352F18182D
+6A80C46E09C59FD5063F7DE8BFCC466093A8DDD9E882FE18B1D0B9B7715F9BB9
+B565C794740C49AB79223C35E0464D78A67C93E7CF27C21F2A973829FA6D5E58
+1ABF963EBA9BD24EBB01E8D7E6418EA27F11B60FC3E8DC8200EA1F26258F04F1
+ED697DCA6B40A5DFFB0F6EDAD2E54C03646D4FC4F42F5B4D1DA4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMTI10
+%!PS-AdobeFont-1.1: CMTI10 1.00B
+%%CreationDate: 1992 Feb 19 19:56:16
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights 
Reserved) readonly def
+/FullName (CMTI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMTI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-163 -250 1146 969}readonly def
+/UniqueID 5000828 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
+9E3948FFB0B4E70F212EC976D65099D84E0D37A7A771C3101D6AD26A0513378F
+21EC3643079EECE0C9AB54B4772E5DCA82D0D4ACC7F42FB493AA04A3BF4A1BD6
+06ECE186315DBE9CFDCB1A0303E8D3E83027CD3AFA8F0BD466A8E8CA0E7164CF
+55B332FAD43482748DD4A1CB3F40CB1F5E67192B8216A0D8FE30F9F05BF016F5
+B5CC130A4B0796EE065495422FBA55BEE9BFD99D04464D987AC4D237C208FA86
+0B112E55CE7B3782A34BC22E3DE31755D9AFF19E490C8E43B85E17ECE87FA8B9
+1485831624D24F37C39BF9972D74E6EC4784727AC00B9C4A3AD3DA1C22BD6961
+7E0ADAF55422F22ACA5E4DCD4DF9FCD187A566B7FB661D0530454D0DD6C6C50A
+7A3875C6CBF8EC7769F32A1F3F7FC1C072BADEC97794D4E90E0035282A170402
+356E5A9CD9ABD80AC4342A5283E458A7269252F4541CBB6452B39ED54D336D0B
+19928E9CD1AB26AD83EB209E2EC75011A2643813053B5DBB0246097C4821B5F2
+C92554E9140BE35B2DBFCD98809A8EC9FC910FDE9E0D86457C70ACB056EBF90F
+244DC0A5BBD455E15D6E3180311D52CF50B0BF7D0A7F64F3A1821E0AEDBC2E7B
+AEB549FE1D51088C153799C6E089B5D5D65E1C4E2D2B430CDF1FFA23CCB25D95
+5C4DD885310A706B320AB25C8D742C6F29953254FA54DAAEE60ED477877D19BC
+D28E9AB576B0EA088171FD000B60D73B3C57F754BC07EBC9BF751B7D2B32459D
+993861B7C4B0D98C422A11BECEF76F4EFC0ECAEE89723E6CED53E3678D733363
+2DF068AEF0FE7DFB57393BDAA439A6A4C396F86032A98009EAE1247B7DE83B3B
+E46DF2898598FF5E6CA6953127432A967E4FD41CDD60D6E413059A58FA556EF3
+309178B57C16A763CFC9BEEC276944BDEA255789EF4E1ECDE1EA43EEDB955513
+F42EDDCF39AE522A1DC2D80B2772B05DA60F3DC15A815A6BAFEDC399C7956E75
+3851CB3588E22936FBFB63A58300298B11C45D82385C083D07AF133BB1BC941A
+FDD9F34D5E0B8087EF2A58C54D8AB7580EE3ED58AEB83B72CB9028F472ADBF11
+05A77651F118824F6CD00209EFB60C1D32D46DF39770905D31D051FF2ACECBD0
+08911D3CC25B783103E4A26EFDD866414ED5F0DD28A4BBEB1461ADD6EC174A1E
+75AFFD283746EA8657E33B8872EA021C6875189718CA0E705F28A9792E71452A
+B89E04787CB1DE71CCC500EA765379AE119A4D5F99F68D41B9178C7C8ED352E0
+A1E6DC9DF53C5301100FA3234C1D8E2EB7D5E267C640158A7C16ED424F1F801E
+D49A6E55D88E47257C1FE6F4911A80F453FE60FAC91C0F1C634BC8303F889319
+2249F256E3D03ABCABBEF82548BE9EE4760D5AFEC07FBDEA52A0AD12BEC7726C
+C7A5EF714229940B17A6B638974A56D694D6F66A013BA2D8D4A60B81A2F0B8BD
+627726A1D308E4C165897DDD1C6C07951D370BDFC93DD6CE8FC11E8839074F07
+2F7A33169142CD5111A96B9329B900A59C968D6D8173F96DFF71F41B7F8BE237
+9134ACABF031EA746CDDB104F1B5E5C06009F0683FABCF10B9A6051677B387F5
+531A67FDDD8823647E4B439568DCBB111777721A42823443B86A0F57766F688D
+B7C054730A4537A56A7CAE08112F5172BA5055BA8D9CFF93B2575CC605A5ACB5
+3D94A1EE7763E7CB1F9CCD0975AC3F6BD8C3638A6129A305AD6EE19F39A932A5
+F13FC835E8921C1EC43848E62C8AADBC1A03F80627E1A6886A638C5AE45C011B
+345F6E3E07DB5D6D79FE0C613FEF6A4006917632E1F00C8201B7512677EC6B86
+04B7839E551E57863817E4ADAD71D7A065FDFCC66F50277095D91C576DE705EE
+6F7A46E7977E36DAC75C9F1E473B302ABA01999BD772CAF825FE6D33E49844A0
+0DF3DCE9CC49FD08FCD7BA84936F1034DBD12FC4982ACE0B5CE96FB309FF7A2F
+5047BEC044DE76F258C52CF830592BF4257E30B786A0CFA3FAA60BBC5244AD63
+780F45A7B50C9032A9FFB5C9DD8D3DEA5F5060E7A827CBB50935F12EEB457529
+0C4AD558D51721CFAC355CAEFB562930772EE6F1457DEDC1D5A852BEADAA8551
+D099A754892DC10E8B90630F615DBE228B4A5F42CFB193E06B1CD9E31BF768D7
+6A46C3BF9E69162EDE5CEC031333B7BA03F948A00EC21F4CDE5B8BDF69FA7820
+8861581268B2E921687B87270E23820C863952CBDF6D7FCE3D65D349E3978CD3
+D9416179DC012AEE4DCF4FF032AF714F2F4B463DB08CA9DE789AC48B236A2630
+576BB41772D562DAA6D2F7265F89EEF37051DEE9ACAAE9EE0E2D6435DC443CEA
+F264BFF6718FB8C37B3AFBD4632D04E79A9F86931A33470D7B30F9607362D2C9
+66B52680BBCCFA75F2CB1E81BEAF995B142C7757570A975171F69B44DD5F1060
+E9B7D2FE9A88ECF2168941C978260A2D175A0999C898FF89F0B8586610514849
+B3B66982D96AECB74993AE3C078342EDAFB99023AFF0A6E59B464FCD4BD6F6B0
+21B2E153DBA08E557432DE31ACAC8F40353199825BE5D8F3C0ADCDE153DCCE80
+0A513F33CBD28B23D61D5772BD572D5CC73613B3F0C7DD5D1EC4D111EDDC16D6
+546D5070A5EC95956ED2235DE6C151CBEACFE4E31444CC5E15235796D3060236
+89BE413757539CA59C4E1ABCC9B30DACA22B004C976FF1A858F90B20D7D23179
+38A30E17E1FB2C226EE8D272592EECA01A95AF57540B46B4D236C54DE4C1161E
+B18D1BA8142680BEF856A24580F1E2CBD06FD5179F9AF9F6DF0FF78DD1D01E84
+8E4F408F2F4E0C619F99EBFB3B45B6C2502CDF066AE3D857B283D5EFD86A178A
+E2338B57A571C63F52947C910F6085FEBA457B96B8C65E21D78740579750B76F
+C720C4C423C2DBB3B59CEAFA2CCAC24CDB8E5C85CF5F3545BD147532425EA91A
+C9EF2E76BA9C49A89E6A869FDDFC7B32BFF963956BBF0D25DA923D5E34157492
+FC01E3AA5B7004DF7FBFEB0F2BCAE2396FE70049BE547BF85DF790A24640DEB2
+D93372E7BE7D4EF3D77CDE7A2BA4B8429A5270C9FB5A3A512E0CA72E6E7036AE
+EE71D0FC3290FE3EF38738B95F88F0357DAEDA7D2AB812AE1955A4029204DF5F
+2CF1FB6B2134BDCAEB6859FC6B05C46D67E9E10FFBAEEE628452B7B5DF1DA1BB
+4BFBA1E981513423BC53017C0A49C9C6CF8E7F75CBFE6BD71E63EEF98729CEAF
+A30D8967A13337195A13BB4201C44A7C1D5E0A4542CF367AA6DB4651F7838CF7
+CA687AD201FE51E186354B4F44B47037A9E7B7CE9785EF9B2B46FB8BF36E231A
+20A0C6FEA57505F08E2898796DE4B7B55A695E66751F6114426F43D85F2CE6B0
+4425DF04EDB0C20761F2FAAD25D640AC0E076C0A6E9AD14A1603E1E64084ECC9
+AF53B0AA4A714BFD77BC5B63E8C357879F5C3D579558427DF85EE002E5004FC4
+C6C5A69E4F45E3BE31AD4A45D540AE07536F02E6BF3EF6F7612DFD47EE612C68
+580792AC8F495F223B6137FF16F62FC0735A21586A2C6E1BBE6F1F0361ACE0D1
+F5618CDC77620D7B1460891CE4A016531D8EAD1F9CF32ECA8906D2B8C49D6B69
+30D20B7CD53D841103424FA95BEDEB8415C4F53E01CA37BD22FA37FB539679D0
+089E15706D0498348766048E04D28DA5DABBC9073DEEE0937CA44AA6B4652617
+FC82C9CC230FAF4B7564D9CE654071F42FD9870E0DAC8A537B39CB920ABFA6E1
+0CACE83C9C1E1A5A18C94C9F3E718398B94920E788DB4292A7A127A24425BBB7
+549C21123677D68104D3D0F48206BCC18FB5EE655362D4C15E977F00C8F9B76F
+4A4812B815AE26F8817CD551F63826431C67F01B4B0299A9BF1BF6E7A2F5C2F2
+23C1ADDD3E22E38D891CB636C66B1B542ABDD01217138641A2D3052F21F7C5E7
+B2FA10AC427BB11ED4D5F1270CB80DDDDCFDA5472BBF3C474ADB259F77D8529C
+A0E1A9C664559C3D8A9644DF86ABFE31ACD89BA150A0A9E0614BBC0922FBBCB3
+6BA2BA383CA13CF9F1C28753CDBE7F602114E1EC2213703305132D8BEDF723E0
+A6CBA47B3F5E8D290E4A1C6E37DC5B711031BAAB8A22C2837070A60D97B8E739
+024759E4DD51C0518F8BABD38402AABCD071577CE4F2E1EE35A357CAEAFC451C
+E5FB23C0D8023F6A381B126455C63D8A6152DC812E1E454ADAE7482975084546
+5AA52ADF809EF1DE3373E877D985434BC5FDB98AF41A94776324661ADB8B3171
+9B279992180A96AC5549017825BC3D632B69D964836B73AB40AB983C2158D422
+7B12F2352BD34EB3695B55ACB4519CF1279199D226A924BC951533EE88B9A4A0
+09CFD635F46C8E9C6F79BD781442F4FB1E22CE4083A211F16400DCC35D6ED651
+3B346D6228E0ABED5A88E606DFADE8D3D925531034FB7304CF29A30A1B5F8562
+A1943C5C1610BD4879E22E755110EE5E80FEA0D91446BD3E2CB81E845C8D0D3E
+26FEEB372732D352DC0BCAC17C3BE1339C6AAB7149E44ACBB73538C7F730CEA4
+D8A6BF34F8589658986EFFAC09943C7A14BC709D465C591E69C3BEF8B45497CC
+1ED12FFC38DB73856E5F35478A5AC8B6DDBE17DE10F224A07CB7AAED1A530528
+98DF2464142AD1C0B13AE43CE7A458C8784506A8AE44852D792B825CEEB9A3D9
+E8946B0F57D92F47C7E90A6FA1D125D6F06FDF78018C0EF9050C17FE69437072
+C878AE5E2F1B9E499C50016316B05AC8F6056D59751F8DA9FFC1211BBD30F1D0
+65BB1F362D51C950C056655DFE753819786D474951FDF6F8045158B60F042E96
+46E5D3370D6E8E49E4FBECE06BD87B8CE4A1CF23141EF5F30AFDFF047E6587FA
+3BBA67075BA5372A2A1FFB69B3BB5CC93DE3E9B151C6108FBB4B3E77AB31FEC7
+6DB598F981E2EC80D89D408FE34D9FCFA8C14E131A14F7217FC34DD6C8348583
+C4079236AA88A27A16E2E7CC3A8384CAAE84FC0DC16F442E98B7AE559863B100
+7EFA672C6976E208765E1D7B9819AA33A1998BBCDB65A18B3695F92A960A401A
+C5FDEC5685F03EA6E53FCCA95C9819934054204C3ADF684423BDB1D81F7270B8
+DD1426BA5249A284F8E70303B9CD291F73EF33B7C8F2A515DD6E6D91E8ECB0BD
+7F59EED0290A567A7BD37DCFC965E8F210B3C319769F1BB0FE45525B267BF2CE
+A24EB3690032E6DA2470C2B058B685B3DE9A20526CE0F9715E3FE855569FEFC3
+592FB4281FCB8A9D82DA613FACF94B4432BDB82371DE633AB92DBC50EBF38FA2
+CA4328BFBD5D0D47C4B14472EB02AECE25FB1A927F896193B898F11597FDBBBF
+920B9D538266BDE2723E09A4F6386B2B129E1F5A93A6683B5D56227BF3AFD857
+E9A02F1C979E425A9868204D2250D9222BEEBE4D70E95911988AC66D85E2379C
+684BAD357EA7A4749AAF093796862B6C9F6CEB8F12DA56705BA6C6C1B391500D
+84F183D30395B5E50BA5A8AE9B45633F6EA22B433CCB4793AFCF94B5F0633269
+81B8CB8C726BCA8046670AFD7DF0BCB136C4B351AAFB92B3BE656191A1DA768C
+2E8C07960F07F50C907AF3D9F2C7A788F3CD3048FDE5E8917E1E8B94B7D8046F
+A440C3C4193C4473569EDD0D5091C4398320433B57823343DB71A32B27CF16C8
+D7C59C4A1BFB5CF145681E69256203073B0CB92DCF7002FD301B2D5732ED5561
+FCB9A2980F8F6110EC732B8ACF9C8E3AB7117E758959AB2F4DDF57864781211F
+FB1BAFA2CFEC1DDA7B5E2EBC8FF764A0A9033D28ADDA9F5207AE0B967C181309
+C7A25323D517F84B33394EBA15FF6A0FB2B9ED317A13CF712E28168B73542130
+138229CB67EC860F5FFEB1AE3F2C2D0724723A5D2FE3ECD074A91649D76D5653
+59201263F5B0036DE5AA613CF72489D2E6BE47D60B6D8A5C672441D30165D94A
+5D7236C5B5D1D175E9A2CA3D914862160644666E51283CAE0E05C4E5C3B64828
+3240C3A30A22E43DFC64E173E61F791CA600F2A9187A0D3613E6F3C0761D992B
+66664D2C5155EFE72CD0F2728DBA773E2AE1F499AA3D3A8958644A92AECAF5C3
+E60F687F1EB7F90312EF2FAFD8B8A70981137942CABA5BCDDEE89D5DCB051BEE
+01AF0CE097583921467910BCA7C8A4E2B8DA1DEC590920BB22383AB3B4DF42BD
+4C06F7FD214CACA72891A56BBB7038C179936BAFCE226F3C538ABB8FDC155A9C
+6757F93743FC9305A0BDA749EFFA16FAD55E27E5F093562C972C12358D077ACD
+3F9ED5EE1B91A598E1DCF68BE7775B18A5D67E03BB1B5A38DFFAE87917284EC6
+70CA0B56A091510BA566323D76A2B4AAB11B32276C925DF41A4F8398EFF76F4F
+B76DC01BA998EB8F9F1C58AB87F267EC451DDD3BAF4873EEC2051BCD500B63FE
+9A682DBF460DAF85BB1B076FBDAF84D0F7FB479350B23C23CD41EE3800BFA8D6
+3DDDDFA7D51F9300473FD6B23A5EC924E06F57F27D999B8874105CA04DA55A0C
+B84935F14A986C20A4A27EA6F2DA8465328399105CE0F568AB766CFC386022F3
+A2848036D00FEDA73F0EE0DE68D21D5A06BA5A0473938315FB690A8A8A385C44
+6935E87562C868DDAA46EF348AA1CE432B8B71F739282ACD34DC270139D95C6C
+E28E76066A0044D58B53876F97C77640B13B3A76990AAAE5E366C74E2A69042B
+56022319C8F67C2BA87089B76ED30468DBCCC83FA5D756EEBD9ED0981636DBFF
+E8A94A0073459AE2B0D6F70B2057D2F0361EE8A0389D77F20E105719857B2DD6
+C3337AE89F513E55ED380202B607A37A9EC67C80093A7393CBE3BF6658FC301B
+9285FD0E12717826A679D84232234D6602D7254E3F0CF1D4A7757979E9EF7FC7
+23E4D415E3596781E4EE10006F68874F13F65AC5C005F3E5C812656D00D9E107
+14ED63E282CB6AA30F7E599B912C89539F24FACFF3BEA6D24D172E707CAFC099
+30026209A79117983F0ED6216BC537E35A462F26C23D66CB4ACF979D2BEFBA18
+FFA070BC12AE14EAAE813F98511A671DBC0DFAF548C1EF87951119BE7D4E300D
+B50A9B9A7303328E5D3873A41E8F09E384F655758E4371499C288FE8760C57EA
+F7C465E6BFE1F3BEE31B15B04E13D054AA74AE1F5CDD38487C0ED341642B9F13
+FD78BC59FD5AAB4583F2DD8EA8844152AD3109BE3BA45D8418723AD8123D7BB2
+E3A6770720902D11A4263FFAED84B8BAE2C0B4F7E3B16C22C414A6085137349E
+71108E70F29201E1F351C0D6EF9FBEBC666CB5C88AEFC886E14FB792DD976784
+98210EFBEBCA2DE7D244F7AE1C2581AC4F7224E6EB1D2EF882B3271DB472BF9E
+A06EA22A37134D03268E9EFFCA58CAEAA6133F140DFECC867CBD428B877C0B3E
+1E04AB543485B0C5EC6E657A10D561D8BA5BFA024E43663D56B264556D0DE7D9
+E737B05853EEB876701D931368010D4E97C0BC0E2404A152CAEA3357F378236E
+F76630CF23418CDD5A3717FEBC99A1C9853A82DEC679B4901AD1BBDFE1AD826C
+AAD8F474AAA58F1701861C2807FB54CE2E52D931DB7CEE8F93CB9AF75AA9CC54
+7B7ED1B761FC474266C2BD3282EA38769E30EEE640F3C936BA95BEB5BB38167A
+8D9B48D12E19261A6D93E569F38CC31B0177F1440D8459B2D4991B21A2D5CF0B
+5F094C3CF63454EF218F3BA471948DAF44EE76E3C327CAB326FEDFF9AA45895B
+BB09314E6E477C379BF208E0E609C11EB7E5F169154130057E9597427068070F
+7CBE5ABD96B691634398A5B2D7CEE0A0C0DA4CF33912BEBB440E9C1E1A6FA56E
+C6CC558ED71B1EC92232B191EF9AA62BB7CC6FEC719B0799297BE0F96E8B15EE
+AAD0D88CB43D264B6C8188C2B73F2680977582889D5227A8FEE11A9A074D7E3A
+E3E953D14754D2F1652F2A09ACD307CAA447E102FC787C67919EF3A3EBF556D0
+95F18A42E6AF9DEB073D5BA08715369E6B6995A6641A9369B024A06B8964BE53
+CFD5A1B782BA3DA0D83A639BC30910A38E2BD217CE6E623938FF749B1BC85770
+A4C9E39D1879B260980DECA6564D088CC4A4685D04DCCB69B60A24F97E871491
+67E7A524D718899F782FC10FFDC29F4DD98BB461A1F3E3802966ED36762ACF41
+9B15A94641018736DBB6DE6D5283A7BF8DCB2DB3639039276904E35DDBEA97B4
+EF07CF3940F03BC06E7D1004FE9099E341560D62E1265E7EC9747E1C3C539C9B
+26C0FD0271CEE33351D81E221266D552B2AA82FED4DD22E41F23FF98272E8DB9
+D438C9050CAD50AB01F5358A56FE5CFC01DE33B55B69D54C0B57D31974255DD9
+679CAE12DC121085C8A718FC4B0C10DDA6A97C1C5BC27E921105812A941FBEF2
+D9B04E6A55C8FD66547257CDEE758F6BE9E2E68E60A80C04E663FAE2063E47A2
+91F0612F49E1FFF1ABB19B1B7DB4B815F23625D927E180523A6F44173079549A
+378887A56E83592B41C32CA06DB29B10E7F61163479302113C259146F3290056
+7CD997FD38D0DA57A528322D72B48B633B87F80EFB40A8E4145DAE69B70A6434
+7BCFFE66FF14DC5A2B7FD1F97DE8C8A5EDDC33B6C493F2267926177886D053F3
+D2833C7D445DE383672F43A5A07011222052D4F388DF38D5F3D65E5297A2C219
+B9530970DA22D5886C073344DACA03D9B5307FBE5650264DAF128EA3EAA1F62A
+2BB8757420F7002C39063FCB2D5B835ADD61EE4FAA9CA8F17D459826D9CCA000
+FB3CB53AA76AF4A7E08BA07D5B020809FB7B194E44439B4FCACB5D1D3C5A2792
+EFF43B0DB4E1293C95C11B6A79E36C300E21E3ABC593403CBCA7C41E627DB17B
+F6D24F869273F83DCCC1CA27723A0103B890EA47941CE18681DD80820FCCB92B
+62DDC6C4EC1AB73AA6F767B508EFA3C97EFB8B34F295A30B0BBA6B2F60B12C4F
+E50176C23D7A88923BBA51557416E9F23A455EABF9969820AE84C0A52F0555EB
+44D4A2EA662E8B499F309B8C1C8111788210568764BEA7501EA81777C9E5C147
+480B0BDFA1ECAB004881D443DEEADB49BDD1E645782998AE3405ADBBFB910764
+EA216E13838927CFA19989BD469463E81FF527478567CAB6C8DF020798CE9B33
+7BEB51416EECF914100F58F3411604E8810A5DAD1B79B454CFFF718E264A692F
+8BDC86E6DDB53F5F8767A342D539BC4678DECC91751AA76EB8C7B62C054C2AA3
+3BD3DEF54895153DC4D8D15BA77534D931E5A039AD37EB105A4FFFAF8926ACBF
+B224F1CC3CA5E15003C0B2E73870D9C3E201EECF2512F8BD33853083EBA810B2
+A1D65AF651971A44DDC1AD9CF6D22035F86166508946CFDBC05611FD165C4B1B
+878A13E8C17B8697CED115960EB9CC3C9F04681C6D59F5E34BB4BBDD6002D08E
+8D0194522E86D42A044EB2510F75C4F6E537FD79F319DC16F2E3CE029FD8CB45
+D8B3F7B0221DCFFDCE1BB8A3F5C486CD9DF8FF4336118676F6173EAFF4429C65
+D725F14FE5E4F443429EF65B361EE16642D95E299BBE9EB9194B98AC3A3C9948
+214559575BF25174AD413937F27F3C990973DABA790C2717E79ADB223DFA3966
+C6F07F37616A5326419F357AA6D4473314DAE91DFA849054C122357F61096D9E
+A256D4A49E1C42AF5EE61F6DB46DDF479AA13DFD4BFAC31F45DC7F30850BE6C9
+34C383A3AE42B0848546033D67D87AE25FD91BFB35309D498F22D6D5333D6055
+FE4F9AC7C0D8173988B111BC564B3D57C9E85449FC24942AF6CA19BA06923B55
+F742F585E965246CDFECB3CE3A0AB940F5BA98EEE1AA181C5C380B5CAD41D84A
+CCFD102F083EC51055968D2D77E701AC7337629AC1CBBD33524E27CBFE19893A
+12CC16F7EC6A21C3712A5827CC637653267AA1CFBC858F2C4AB54EC58BBDB7FC
+76201FE494EDEF7C0B8E704558A5DC43822551079998660D8C66F1C725CF8525
+BA2F58917A561A25721F34CC87AA3214CD205684EFA9A6E2931B7420AD5671DF
+690D3FFB05C835A903D220C03EBB723EC27E251DE312B18C2B7B979207452943
+FBF988D305CC60F1C24429FFA3DCA070B2B9D62F61836E9167B6C5F06D100ED9
+56C006ED5C82B3BD1185A100B6DC79FC7571590EA13B1DA6F1AA701F426C71F2
+530114CF531E6F4D1804022E1A73997D58FCABD9B1511E56D34CCBD3C20100D7
+A49FBAB87810A740420985385C083D42EF6633D1B0BCDCD108A731D8D3179305
+4559B887754B909C2BF4B9252C6CCA21FD4C769D09AD1612475A4FA31534CCE2
+7165E1BF7D57E9889D75047FEC317C765F791F0325ECDC5C537DEAD75658292C
+F0F9C012DBEB0786AB27922B0D469D30F889A57BAEF69305EA1CDE921C510797
+0EFF77831C3E2A91499F21FA844DDE5F0CE52AAF7CCE5BFEA7171ADB0963067B
+53B642DF071AA58F08D11BBF0892C48E12E0834136F1222BC82B5A69CF47FFF2
+CDC31DD294E40256DB631775A224A313C92E9604D91D99198F52C8B1828479A5
+EF233BDA0FC819A72E0C6AE7D7D54B9A798CDCA8CA2407495D77DB1F6A102546
+EB27AE42D8D9455A328BA05049EF401B2B54DD0B1DCD7269F3A0D80D0D50C856
+9E329C1CA254D9EB5876E0EC4E944DE9B01E2817B78E91E4D846D7A9760D493D
+067DE8E8C17818FA900A048515AC5238B5B991E103C97F62585102342B2F84D9
+FE484C809CE2F885BF6D5BBA805428DCF6FE7C4D70
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMBX12
+%!PS-AdobeFont-1.1: CMBX12 1.0
+%%CreationDate: 1991 Aug 20 16:34:54
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights 
Reserved) readonly def
+/FullName (CMBX12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-53 -251 1139 750}readonly def
+/UniqueID 5000769 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712
+B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99
+AEBE70DAAED49EA45AF94F081934AA47894A370D698ABABDA4215500B190AF26
+7FCFB7DDA2BC68605A4EF61ECCA3D61C684B47FFB5887A3BEDE0B4D30E8EBABF
+20980C23312618EB0EAF289B2924FF4A334B85D98FD68545FDADB47F991E7390
+B10EE86A46A5AF8866C010225024D5E5862D49DEB5D8ECCB95D94283C50A363D
+68A49071445610F03CE3600945118A6BC0B3AA4593104E727261C68C4A47F809
+D77E4CF27B3681F6B6F3AC498E45361BF9E01FAF5527F5E3CC790D3084674B3E
+26296F3E03321B5C555D2458578A89E72D3166A3C5D740B3ABB127CF420C316D
+F957873DA04CF0DB25A73574A4DE2E4F2D5D4E8E0B430654CF7F341A1BDB3E26
+77C194764EAD58C585F49EF10843FE020F9FDFD9008D660DE50B9BD7A2A87299
+BC319E66D781101BB956E30643A19B93C8967E1AE4719F300BFE5866F0D6DA5E
+C55E171A24D3B707EFA325D47F473764E99BC8B1108D815CF2ACADFA6C4663E8
+30855D673CE98AB78F5F829F7FA226AB57F07B3E7D4E7CE30ED3B7EB0D3035C5
+148DA8D9FA34483414FDA8E3DC9E6C479E3EEE9A11A0547FC9085FA4631AD19C
+E936E0598E3197207FA7BB6E55CFD5EF72AEC12D9A9675241C7A71316B2E148D
+E2A1732B3627109EA446CB320EBBE2E78281CDF0890E2E72B6711335857F1E23
+337C75E729701E93D5BEC0630CDC7F4E957233EC09F917E5CA703C7E93841598
+0E73843FC6619DE017C8473A6D1B2BE5142DEBA285B98FA1CC5E64D2ADB981E6
+472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E
+A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26
+35FD4F5CD7C10D1AA982C30AF9DC9B3B22747B32FDE22742D5E370BF56DBB99E
+43F1ED8DB32DCA5995A24ED64B47DFCC63742DBE5F02F769D2C65ADC78730E10
+735FD6FEAA5D24044B6F8D1A114634BFDFB52020BA2A90461925EADBAC1FF4E2
+FFD8DE1AF359FB85747DDDBDF4577ACFE6254ED56BF78CDA007E0380A3CD8BDF
+B73FD2AD6AC46F6233592DD1CA06DACA2DFA63445C4EC9599489FE090FEE40EE
+9A9AA43E56E92B76926884F909F6A38DEDA3A1562F474CA2051A4E35146543AB
+78A34D8F917CE2D93A4A9D51B55DD2C9586F3949343090282988E8E0A7CF5651
+BD91EEF0DD71C6B1F4B0A9B21FC047729912FDB7DB8DB1E3331BC00A7D9A5AC6
+904B6B861202CD189A7EF310A9CA1D1488E189CC8E677A7287F841285C289DF7
+24021EC39B9E948C791233F3F74935B03EEEBD89C24C97717CB42E7668A399EF
+A6D8363F0AD023B7801C50BCBB28BAA7D6002DCF1BFA0AD0303D8837BC034D06
+E15989DA4D82AC30CBBEC5B66657C47EA427CD5CD9591C478678306ED9FFAC2E
+84B4BF48B6A089D1CDE2CA10EEE191FF2A3727A230E8FFF74C48C2706F2B41FE
+1D985B7B54676E411E75FC00DE787090BF39C49019CA771ED796C700074F2F35
+793DE3C19CF5E2AF8BBFE8835614D166E1E26AEF6B37C8E82BEFB1B1D76A1A91
+DA27EB887BF9E301DF919A020F6466A9DFD55BF35521F270349ADCCD13956957
+4EDE2D1F89116EBCE2A21193D14E70908CE9765BEDC3C5F1391D72B506AF153C
+DB2564BAAE504A9F406F551769D71E2F0DA7FB37A80936923A7A213DD8F539C6
+5AE1F1E880C7B3AAC75C5987407F41C1F3B67AF3AD2BA8553F7ED0C9504CE206
+F77B4FF91E65710F4DA0A1D278D27FF96A8466143D64D9173E511B1B1E96B671
+8610881E7933C4551AF61182A587D674848C85D49CEF70FBE50738C4D48A70EB
+1CAB00C5F13C6754CCC0C5ACD371D678AA03B4C05A096A0427F0575FA36EDBCF
+715AAAC454D71461165521C3400A2D91EBD54165EAAC6E12B9D841FFFD1E215A
+BC9A8E32423D86A01EEC7A28EE8D0F40242F543BA71657258A20BC85E5ABADA8
+42EBE6C015E5DB95CC683B5C41B531239C7A56DDBE46A563E42DA62FCABB22F0
+244F28194D98AFF1DA9F0147C43635488CDA4401BD3B31E1828846390F047D18
+34DAEF7E8E61B5FF5E3B5357EF93C1D5EF16B5556990ECB5E0D2967D4C6424C5
+2C8C5AE029850E5EC1B97DBCCDF0BC1ED1371BB087367342EDC2E2DF6469698A
+3C82B8ABECB9C1DC37E58625B9F76B2FAAF811460B93ED6EBAC7259DBDF4A008
+A2BB38416E43B5E6032364007AF9E4CB2FDC437697BDBC43C67AF4C2F8BC0E25
+0C5669D208D18F446D80FF4DED076E03F99D4959D5DC9A99C2F46823CE81B1F2
+0379B1641CDADF0D07CD6FD4AF25D2DC31A7864E797AB425269C0ADFAC8E8DDA
+E486515200DAFC454A5327D6B4B90CC16E30A6031A4D3F65A1E8A3BD89C21D68
+AF708831DF1343AE2A88A857AB60236B0033CB3712B4DD04563C51D992B3E563
+97DFC9834D4BFBCB4D210D91DC12F8ED66BEE657398C08D1B1724F06A480D23E
+6249FD708E1C4A0DF706681410BD20C29CBC89B276B90693F9139AF5671F4929
+017DAB8BC68131AB77231A8FABEF37F76FDB7FCE5000D7DEC185575FD8812FD3
+0A0BD9A4132BDFD986CF6331D235D4543EA704A3B5961C378A25541B9A1A8C3C
+944A10ABD89A0CC72FA7AB2EA4DB49E97E346615566A67732E38AA4299932E12
+E3606ABE3D2B2FA42C392DF6D9BBAC6CD51DF6AA2825C07779769CFAEDDEB706
+70ECE0B7209FBCEC3CDB71CEFAD3D220B53401FA69E5892B8B45CB24BBFC17A6
+7B0E316DE23B798F5B8BA07A6469117A3D5D6F0DBE971FAC0B52AA859250E157
+CC758C5C634E88474BDF5ED2B1E83DAB5DC4B7C0DA10D5D471083CC88F7696EC
+F4A9AF2A98206F1346A5F70BB6CACF654D2D9305D62E6A0EBAF22B833A4DA713
+E6F3ED176E47B1AE8C5594BD4A261323CF199C7C3A2E4E1964CA0219D3720A3A
+F753E7FFDC756BE5376486E1F0AEB9897A6065356586D218E2029575BE1780BE
+EED6B40B6EFAEBC77BBAD1D369010193A671BE12B9013AF4887BE21C7126C402
+6BEF1CF6EC3C7E0D02B2B1DFB577CBB5D9CE3236DED0B9CC01ED63928C0F540B
+15352F0ABDA3CEB33EB4E103F6FC7350A2494D71FEFF4143B870AE10CDEC3165
+BEDF382B6C10BD8EF0DEE3A55EFA86338492EA37891AF075617FC3E8F5079AB8
+9C7599F2C068961FA3BDBCA7298620E5352661B907B2D7144D6EBCCA6DC3E089
+35D8666F473B72BD7E7BDF0D8073458BEC15F1F6634DF1EC24A9EA8B07F8FF5C
+BF1EB93F18E14186815E8BAC357834665DC3E9F9D76FCAF72D5085E9C35A1546
+8B927AE0AF1A392B094A31E4126AEA7F75E4ACAB9B1925D8557D54A329F4ABFF
+20F8D2AAFC79BD7BF72FCECCED5761748372365C33A263CA1574E4EA87B421EF
+14EFA629D9E5FDDCEA399FDBAA7AFA14F867A5E8AD9EE7046D91E54A428FBC08
+EA946A6CE7D73694ACA1FC67B2F67BBA97AB58C528AACFD57C4A5AC802579EFA
+43A8B8A99AA542E8A2471609D02BEB92F2E51AF04E8DD61D20F938ED4C950A8F
+C466C0EA769EB8B46E265B06B543CA171395EAC0CA72ABE5E62DCA0440E4540F
+019933F59008DE51DD9271C81B395191DEF59AD97FCC60CC93E59FC126310D01
+A29457A1AAACAE19F91368387050BF7129AAAA6613C4829460B65E64C138A069
+2FCD5E0559A5A3AB1924D4FB22F3F5CA1519831F4E41C87678EFD2FA3CF3B335
+266BB07B6D5CF82D3D547BD9020DBE2BDEEEDE61F6FCDD35F896B63E7B1CB104
+C7D488B99B4A5643E1546AFD096C183098D7ACEEFFF84BE9F2FD02F98F90671F
+12A5CCB20A0A1269221280F8DF3CC33455AB3A8DC32380335F8E3E75D0DE1A1A
+83E4A7E7BFAA59BD0090F034C9FED7DC2E8C66814276FC99E6378E7BB0FF38BB
+B5A81DA91AB6474A4DC9A0E4FEB313FA885AB1E9BFBE8198417C5EEF90DDCE55
+453B3B153F4B8DB73683117B6C484D098F57B6DCA65E4C59C8B7050B080DB465
+1D07039B35DF1B3A8A4DC98A77F29DE13978D1854C4B73E8BB973AB40A4A38AE
+9325911E222702054C90DD14FB3B61289FFEDD6744F1E721A57F77D824838D9E
+333EBADED37D76CCF63CD736E5831E9C7D51EE570A8C9AD9717EEA95D42143A0
+048816FA23FAE10C54898998525AC14CD811B0765E6E658879AE7080FFB20D30
+9EAF2D838B3F1D96D51590A2A0F5D484F7548E33C549237576D5D82BC256D925
+E1138FE09B87FCB7540B3E2187FE2DE58D8FDAED0D75651C9BC188BACC56AB5B
+E7C7496C553B7714383ED3E70D6B92F14B05E26B6B0274E44C53C6A84B61CF22
+9273BF78466892B242F58AAA92C038E13258F3C2F9A57098B605C885991025CF
+9BBD909A6F93DB0DE07FBBEBAFC9CB1A87A6A6773A5A5FC417B9F31595750E60
+B50DC0A5CAECFE62543F59E96F51B0D338B7A0C44358C650553B296883CC573B
+C2DD43BC846EB197E852194A2C9835750D6524D63294BF6F4FD3CAE8D1EA16EF
+834B6801D1B081A56E405EE80900D0F6DC00E7800C396DFF63676EACD908608E
+4DDA1DC3A800B63E1368677A2B5EFD2530917BA1539BE6C648CFE0C2244FCC43
+2C1739FBFC39FC2E50875425BC64605B1FB6C37357AE11BEB8E499604036F51B
+52457B6FB29A9126838DFA068EC9D01FE8E69F113F57DC8BC3B52DE2A35CD032
+56F1096B6ACA46DF36F8CE45AEA357C1B7F6FA8AC3C4AA760BAF57B5128D6438
+21EF83DFED26E4144E16AEF1B841CA546B2C54A4EDACDD6D5EC5A6A4642A1955
+65313193EA7C499B168CE70EF13538C30C94DBE6F86FF103029A3A7CA8E0B5B8
+2D6B7B777FE1DBFB279B5E855E19FF08275FEA6A3B9A9D8E719D59CF7D3E151D
+63AC8B3436F913478D7B8E3EA85D7B73FE0DABB9D1EFE917580E2E6B6BC0EFF3
+9444C157805BAB4B00499C528476B2AEA8A98CF4A2530AEFF169786F9BF30B93
+DFD7CF3557CABB61280718C432D1EF9A4FE963B4DC8409B5B38852837ED1C01D
+E6C05FC403E99A5ED5F13E889173C17276142F20F2AA3D8F141BB5C460B41D19
+83C93DD5912F6DD150BDCDDEFC4A27B1A3764FF654FBF0A8CC9EA73F4EA270E4
+A0B7BA521AB41F8869826DF7F22074521F50F53690AD3321ABD7F5EF49545053
+F7F90E8940DF878A9308F5941680A25BD1119B2D003C02E9E271774334D6022B
+64F2A995C5EFA8AA8BF1D6E0BBEDCD698D6781E1C675E632EF7D6070EBD3A0EE
+DB0AA291E350EB1F221354CDB9B8536C2978FE6BB3B0BD6DA6B0B91EE683F6CA
+4621352BDABAEA6CC90B9FD9E94EAFB05E61B62DB5484748A7FF0D83E448DDB8
+9400308AD834C46502D605EB7E08FB5A2671E3FBEBA766CDCADA8B79A3CABB98
+195C456B136E92519068067BDEFD98F4FE4C4AD4294D5176AFCA73439EF93B03
+0BD966E6F1B2BE3B22373CDB626BBDBA1F17A78FF0900BE60BE4D5D39C4B8DE1
+686582842A732094E2F5B09D0E4C20849B103C8F2BE7DE926E5EB9280932336C
+845D9BE95F2C2A36AC3B309786A280A319070DA1FAAC6AD63F4F07971D85C474
+6897955C270CAE919F09E95E3F8C619409D01DDEC5EAB8B8C9CD1C23DB2AEA3C
+FD0E2A2BDECB96389BF0C426D9FD37ABE5F42B1E2C16D9FAD4CA60DA27078937
+108979AB5635BBD83A85AA1FA53ED7AE4E9F62836A405A47FDBB9EE9139E7EE9
+CFD7BE1F069EAC13181C205A4F31E84010727738E1AE9346B013B041DA251787
+DE232006A566ED887AC0DFC66D225FB30056A32BFF52E424F0FB5E7DE74D730A
+3B52A096A0C2C7C88ABE8487245DF995189031D2B83591B41312463C1BCA542F
+CB58F26B6C9C8E33DE5D46178F42B11B09C327B977D9BBF12D84F92C30B4F87D
+A2D656668ED80AA24DE48F60620E6FF319B2D033F228F7819BFB94461CB3D628
+FE05EF240D0A758752C0B841607140C1D8D4469AD4AB47E66B817B2D28115BE1
+57A82769E9530206EFAC4008C66DA918175ADEF5D862D10D0A27145B651053E7
+15042E5E68F771EE1C84B147FACCDD9CB249FD2505EBB3D3CA589A3E7B05E10D
+3EF0E7C2E5C620E68DF375AE4592FAAE964DB394B969ADE73CF9338AF65AA5AC
+04522F0F7054F7868CF38A54FDBC40F85E7804977E5D950F5AD1A2F66EC24608
+A685183DA6AFAAE7CF28B185EFF8F1A26814605CE4D223FD2CB6A079EB5CF7E5
+078E0AA5109C87B3EDCB1383ED7D3E47ED9C30D2AD85F150B9186B609A3DB4CF
+F79FA7BB093B8A243A5ADDD14DB4CCD8BEF6A53FEEE0FA9D300C0EFE06D7BA3F
+BC30F0F22CDE2C36F349A18759F88C7884AEEE21D06D7C02BCF93B3CD17CF374
+9C8C80FF0F29A954485ADCACFC9C45C86147CA65FC34D79161CB7C106711727F
+635D38DC5083506135238A4E750E63DED93E6935D4EB75CC149E6BC3973CF5E1
+60D4C9E8B5DC4F0A4E5B1A4910AC3AD727AA2A27DB3FB5A49A2829149A17B7EE
+AB7FC2C2B9F3E503BBDBDDD7F10BA1A12A2CB61408A23B7379FABB11624DD883
+7364AF01A37017F7D20C4DD20A32CAE20EC709972794AF7426F8CD5A92F68DD3
+C676872ED2CFC73AD91F207A355462923209B449ADDEA984CE93ED30BEBDDFBB
+EA514B2859CB8E6BEA3C259BE25E0E78B2373FD115D2DCB7DBFE1E9B967385F2
+3F784D96F6F9C6A6925BA7054E18F1753855BE9FC4390CE2A394A39E278DEF45
+5B26188A7B28F935FEF2EEEE809BA40250E17BF843E5694007C89010E24889F9
+761BB4D1FC3EDA64295F97AB77D916B02EA4BA866FE2AB03D7A0ACC59DF414DA
+8D3BAF84A16EAE1B42302A21EDC4D8AF38990B936086B399161DBDEA44CCBA44
+3DB4F66F20BDF07C9B28EFAD710186C241F716A69ACD6BBB2EA238B94A0002FB
+DA0B80801918F6E3E12A57E836614703B1D42DB35F27862E58B7CF4233B01288
+2AB48AE700C299C9DFFBA0060C07ACB8AC57031B3E853901844E63BFCB4698E4
+D1C01886850B615E42706FCC15C0A4326C26B78AAD1AA1A2DE32C655761E9E82
+E36EF7DEF7C11BA1D2FBD3085D0C79869C93775622B97BFFA8C88EC793F730C2
+3C7EDEBA218E2616F47448DA23E4B750DFD15D53A1809915EABF8953DC152B2C
+8126931CFA112E100F5F5196918A29C0BBE0D9B57B5311E408BAF5D4F69B22D4
+3330D936A375A7381E6E26166FEB108E719AACA906CF0564A621D5538F88DE5B
+EA8174D416DF5A5E4D6FF766229F6B2A13F6C99A3B813E30EC46BEF614BF7A4C
+88ECB0DE5324D806F63D755D73E000002CA833995AE1CC35951D363EB591A751
+C282B4BA536F4E5E475F32C669F2B40B30E133975A1B066B6F2E9DCCC4394E44
+0D6D73A5A1182BC6633D837432B54998EBC1B7C78F2C97ADCB68DE357609D018
+5DBFF60A15EDEC18AC62C6AF4B9084F6BD2805A3F1295BF9573F03D5F2717F49
+00E086F6E7948EFCD3F1329B874321FEB824E2757ED18DC8DB2CF6E4EC87C36B
+D9969FC3AE3040C0E7CA7B1D0FFE77F45503A52601C1FF22A88F7BFE87CDA6C8
+7F2010682A9D47D020584E1B0589CB3506F30AF338B24512DB82BBC543AA2F61
+7B3A2DF6F0F38BCBEC9CB8E514BC9EA0BE85BA65164EF438DFF8BF8431C04CF6
+EA6BCD20057E86DF0E2DBFB15FB2E8BCD11EDECC2EF55529CB9B8792DE210381
+089B90C19B117BF2B88E5FCA492BFE546D7515C25264DAD4C0C45F6483DCC05F
+5BAE731326420411E7F5773E673CB9A9A84DDC1899CA896F55486C096A4670B5
+633F76A24947654B465E65B1144F3D661B98F7BA2470154DE081588962BD16D4
+94FFDFAE48DC3CF727FED78C56419C328BDCD30FFA2BA50EFB2648D66A1518CA
+FCDE32B5626DF79E03BD7AFCC4EDCA05E2A4F17B7836810E11DD44BC14D48A98
+028A15A853DAFCC4DF862E08AA1C8423DB1EE1C6A5BBE90EAFA8BD72981E0A68
+8B687C155294491941DB5E05FABB7BA957701B448E92BF377DBE7FD6AF56EEB2
+8ABADA2FDDDC6105DC2EE8193D579DA71B2AE335A408C84258813B7F48512E3F
+F26232E759F5566E0B1A65ADB1D98EF2C1E699564E4E8808BDFFF17D2993C536
+FBFFE327AE60F81AEA77CDF2DB327BA884B72EBF28677A5767C74A359DBF2D4A
+5E5B86A99905B95B8A774189B89046BA78B484788DF8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMBX9
+%!PS-AdobeFont-1.1: CMBX9 1.0
+%%CreationDate: 1991 Aug 20 16:36:25
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights 
Reserved) readonly def
+/FullName (CMBX9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX9 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-58 -250 1195 750}readonly def
+/UniqueID 5000767 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712
+B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99
+AEBE70DAAED49EA45AF94F081934AA47894A370D635D93B1823EC35EB8316AA1
+86031FCC99F57CB21E8400E54AA474B57112F0D4754A16BEC19117E9D3638986
+0777A71B135CC18E20E193AE6C2BCD89F4A27516DBD2BFE69FF9920D547796F9
+89E0825B6BD5F492B36AF136EA91B826501ADB1979A4204B2CB5C0517F2B9494
+9B2077F316D2B3DA256C99F7549E6BC4B04FE12072B09B4F5D482A126AE351F3
+97DB85F3026A793B51E6B28B54661FEB087F011F0BFF67272DD1E8825C180723
+22AE77CD6166D2605D0C0F131537417CB60086F08E7197AA916D590944BD801B
+DEE8F29FFC516E11396CCB8395CFEC9262E22521882DC0316B0A129DBFA5FB57
+E656890C2471675E0566FE461028FB05532E274E6DF77E7D320D09B2203BBB5A
+8B185B66B2F8A18A49589C4EE27596DD56260D0D759D2A12CEF7FC3010BA1B36
+85A2FD45129DC01A0C7570423305C25D957DFF9215102FFF35F428C823D549E5
+014E7F99ACA6C10B3C92805376D0F3F280D65852CEA54F5CC9DEF9EC1347824B
+0733D3341B34937316E77E952AD9366D3B2ED045165565F07CB636385E5A5911
+2620E185B105EF6C93890833054E05B6301137338A3F1D6AB2F80095E57AE60D
+6E5EE2764624849978C811EC38E014AE4A5823734C5CEB2BC22DDA46BB408D00
+4F25CA8ED287D35E26A4CACA77D2D4B986ED2ADD3BC0C3405741CAD56DE28C7C
+68E8944967C022CC55907B3DFACC1EFAFD38D3EDDA1AADB6E2C006ECBEFAC8D7
+18ED3C46C331623D8FAACC6CF9292B8F1B407806A0D4808F51A5BC97FFF59BEB
+03767AEC2B6A88BD4C2E4DB8EA66094068C760FAD1CC29BDF625F831CB8C4840
+79C8550C8241C0C7002722F70E6046031B619E5BCD1B56C537C6F6506F83C057
+F489E227B49AB82DECC871124FFE463D8B624FDB734D28DA427C2EE6C4289797
+4930686136A813045E6B9D51EE3E1C48017DFE3A8BF7EC74A4008EF30AFFC68D
+40BDF5300613DE1EC54D2B13641B8C1898F28642DC8247CCB638B8037463E812
+FE021B7ABFA08C2E6FFCFFDC6EFD65622D50D389FDA80BC2BA629B2E6D1BD6D6
+F655E007CC1A29D44288297010B35359DCC69CFC9D49E478697EB9C29857112A
+462CB83FB0AC53F9148B05834F4659AAC50B979EF0AE3739C7AA9B59961D68EC
+C5A1FCE6016EE3080DF24BB9FF7168C25AA22D3BBDA56C096159B3A5B1642079
+6EB3E29CCCF42D243F43F460B28A2D341B935CD72CADDBB84046C8069DF19154
+605F2A05DA4C634BDC93DECEF681B638C5B1E3D4FC0683C80ACDCB699619BFD2
+59F2FBB0F86B3D9FB4F09111C221C1775B0BAD78661EE0093824FA310B9A7DF7
+EA39CA3B8190B7F8AB2B6E6ABF1C56169360E9CE96832A394D95D6A3B23F707B
+D722DB290D1C06626C4FD1C12737919577A7792854A940C25072E7C4A18A299B
+D728CA9969E5D35367AEDF9444AA0EB22DA89A6B52A9325E5063ADFF0426E0D7
+175694C9090B8079EE96F1D3F22065F83AC7E57A558FDA16DBFFE94ABF3BCA85
+3E89AABBFD4A09FEC104EDBC15D90C295189AECF1499017D7FE59B27C0BCE3EC
+EEF893F66BABA72F61410F0DB9EC5F331334F021083B9163C8B82FF133CAB7E6
+AE2D845AAD60D6EDF6648D8427D68AD5CEF520BBEFC5744DDA2839EE0FF64B86
+9A19466E09D2FEB89E852929681AF889D5CE814C9E6B52F1AAD9F9F52AA62AC7
+18A3BD13FCF0371DAA0E2406CFAF4D470F41701957F228A27B828164A67517A2
+458CC82CD884C3463CC7B390A370F60C1733512344BF950875A1077B8EDCF36D
+4B4D8EA8E82ED14D433BB6F07F042DEFB701CA07567A63C75134B65D3EF2E110
+3F77B3CA6307B9258B7EC84F5FB9D95E220F6C4FF3B679467BB6988CB2C9F406
+D35BAF6A1A2866FDEC1975929B21E637B89EFB2C00A5DEC960E2C3A0967AA152
+5DCD2097185FC9FC3BE58903106D180BFC9457CA0D09F0C5ED13F3EF8924FA39
+015B6CBF4F5F2ADD6F1D015A83F279EDE510E4C3D9151A509BCDD2A899AE2E44
+01A565D9387C2676EA8C69644DADD205263DE9215DEB947F90576240F0FB2E77
+E0B61645A865C164A2EBB4D168FAB72C3638A18314517B6E7911C7357E6ADFCA
+201D38FF5FFD45E54F2A9B91A6D94B8984F43554498E3715092B1920CF3798E0
+CB6C721478BA08F9D1788280AC644967FAA11BE8FF42A7AAF6165820D650A499
+1205AE0FC69CBE9C22876DF292EF55DB33EB59D42B94FBF896977A5DC430E60C
+84C3DEA0E57D3417B21CEDF2F31F16DAE71E5BBED4F243B87CF1A2E3F29BDD62
+36B8AE866E809DE2029B6BDE5C1C1016006DC48864B44CA5EC62AA2E248DF514
+5AA10F6FAC16FE7FADE47405DCE32B62A56CCE03AC947FD72B2959DACAFAFC5A
+51BAE60F49DBA29A27716C5BC43B865976D574F0A2849F78455E7F62A4C357E6
+3860AAC2F8D582BBF14510D1499F2AA36075702E2E7DC9A4B96CD009450A1DDE
+0C062541E090B178FC420D195C98DFD20AD65A0E107E198C4E2A1CA081FDA2B5
+5FC6E8D5243851181B12746D6794DA05C9D7B793FA7DD88B2BB7B1979044FDF8
+C728A51975AB24CE3A7F2526EABD97808BB0944BD401E4D1F3A0EF79E498FCA7
+A16EE68344A9FEA77B9B7B7F7CB1084AC615643D3F38004413C304FAFD6BEC81
+1DBA56C37A55E464A124A97AD5405D1FB2A6AD6D10F770073D422E400A633B8D
+BBC752
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMTT9
+%!PS-AdobeFont-1.1: CMTT9 1.0
+%%CreationDate: 1991 Aug 20 16:46:24
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights 
Reserved) readonly def
+/FullName (CMTT9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT9 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-6 -233 542 698}readonly def
+/UniqueID 5000831 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D1E
+2931CE5F5D18C658602059F07BE66E6EFC9239D7AB2FB8A4CBD41675B8ECF279
+650C29E53B14AC0E392A664848C1844B1CECBB2D5CFB72D0916B675C9A9A1E35
+F12696A6F628473C604A95376468E06E295AD6F76CEB939D94113532050B9D5A
+D2F41A9EFB9424D986612313B89EFE9C8A71313340B248F6853B1EDBF02B7F9E
+F447220FE131D7D54CFB8AA1281DBAEA73E665BACB1F164552CC0CEDB63BD4B1
+4A9AE8AC6FA02242DBE8DA46B64B6BFC11762F0784F216FC8B9120D688D1705A
+438B14F5E5DEAF2A98408B3B64620DE3732A4DAE6D08D5D97E34C75DAE19EABD
+BA0796165C1151BCBFB1DF8D29A63A8300DBDB9E3323CB82D0337598B83F4F2B
+A97CF5196D4D1CEC1EDB8966E548C0D9C194C932319610FB43EA1B86322FE641
+AB48770FF13BD475A7267E142388563D1A400419C585B22A9886074687BEDF74
+D905BE8EE440BA2ABF28EAB673399B7F129B9729DD5564C681954621903B84BB
+CAF89AC5ADB2932472DF29ADA2BDBDB4D05F65F28F5F4C529613D61858E0074A
+082A852710A62A147C966F2B85B51B0BE85F11D2057C66FDD61F6C5755367980
+9F4DE680601D4DA41B46F8D2148450000413C27AA39B586B74B977B25F0FD3C0
+4BA1EBFAFDBEC531EA1210365091671CE3C86A6D4BC591C37DCC02570042575A
+9D24252D6E01A8603753934D7EA5CAC1BE4E5AD2BA047DE8F3983B23A8A1511F
+B08D373B69E5076CE4300137B8805EBCC0AAB89BBB312A77835795E3C069322D
+42C893A30AD739E2BDD299679B158F7493764F2321E3965141B5ED1C6F4765ED
+F46D391A646B30C90002B1C461AEE79E5F094CACCA656CEA3DB921CC5205F328
+A2C69F817061D6C60B121EEE844CA5008F23DF0B684AF2D86CDAD0B9B89B284C
+7F05E8724D62600E309D682BBF4916BC25BAA1C4ACD0DDF2BE84A2274BAD3598
+526068C7744C5C6E474468DFA23DCB368E30F3CE4A5EF2B1B48CBCBFA0E0F430
+A563F675431FA8D330953FFA01C9E69C012CEF00A13116214B50CB8203544CA2
+C9E4768C3CCC0712EE4937356D5D110395A953BBBA93C00B98BDCE70B4F95F38
+BA88CF80CC1E7EE0BBE8B001F71F66F335F7446CA951FD1AF98799036B024985
+ECA90CA9745699BC3B5279C52A49A9FFCBCA452578B43803D23F36A2E1FF428D
+81D6CB0CA4D4E6127E88B6DC231E3F623370F1A8B0E64F6177F42E37A23B01D3
+BF3DD14AC47E649B2E2AA5E0E7E3C6B0666F4E6C6EC3C4115052D91D604E91F6
+FBF5B8ED61B8E149905197C6487D4C6EDBAC0F887AE20A56141AE585CE7620A8
+E6C20D3A092C13A8EC5AEF208A66D44A87245F21957D87FA600B1157E2FFE9A4
+1F7E2BFDA8C87DE7E3202964779A33AA92B186940228541B80E647A69E5322A1
+7F3063D9E49A1209F812E7FFF4BFD25A0E31E7659085A510125DAAD75A9DFB32
+BCA3A4748C377F8979637B33409BD0E4EF751894654CC503C044352061365A40
+FF3E5493D54A2710502CF9A1F71CD1A96358E4B4B40A4CEE17568EC6407CBA33
+AFF1FDA80AA6840F681EA1C28857E2BA34458EB722E780149F5905CF05E92085
+DC37DB8E563205DFF5C0EE249518D1F1CD949B12264AF33E49BF600571A247F5
+C8B967F4695261DDE8C2EA86466CF1B252EDAC5487B505E79A8D3C668A854747
+A5D9A3DC04706A78E5FBB8F0A516718B0856157386FFB6CF6CCAA2442C07B8E4
+9ED934E5351E76229A9235B28A4D3175C15E67186E914B7720C5839B61F6E82C
+999C94D06A01FD6E740F5E276B21BCC6C5DBF56F343C273BF707581F2B694582
+B7D897AC6947B4446504781AE8BBECD83C7EB3D5667F5F29B3D507B51476DB00
+033A2AA36D8A1554A299AC168ED0470A0839404CFA3CCEECAC3E92528021D148
+9A906755D1EAF65A0DED77F7F197ABF188E7484ED2AF663DFC23F2FF04B70182
+9F9F947670FAC63C37E3325220F4BF4FB8F5120C3599DDF146FC9F53C217B010
+0CE6A8946B6F44F0AF34760F4D25C1D75F1017DBB0EB3FB2A7C9B834DB453DFE
+B29E980FCA2E48D8BCD7F453AF3AFE90F44F41ACAE670347582681609A31EC06
+2D89892B85D886A79D18128A3D7105504B6763A64ABF46CF23A29A7574DA14BE
+354BBE17CCC056228CD43AAF73F752B0D09AC146E0F3B3717581115068B4AA46
+BCC3F006F39CD7BA3A03FD3CC0CE0AE6BE363BBADADDB213A84EA03DD2ECA742
+C0613B587975B35F767D23023A5F8D40C0C7484CF3F3FEF432441EC2FD71670C
+0F0364676138B2295A2EA73915F8F92DC573D378189BDC2BA6AE2E6FEDAF5814
+BD1C90FCD513E6FC022409704B69301919073BC7001C663A897B1C92BD9FF37F
+89B989034623A14E9D5540A8C4399838EC08EFC973C6EA5CCC6E7F07324E0CCE
+AB18C814195BEE7EDD1EAB668CDB081C385AB25E02B3C185A5711D79688677EF
+94898642DF7FE1FC4178477DFC76C3850CC2376F1FA5DF86AB31E2584A54F041
+481242D133DBA34C32785CA87B78AE212CE5F93706E6D0418E80F7F70E03C68B
+0F6D5163D6AD407C5EE87792BE7C32D36B9A47A5DAA41A23AE94D252B133218F
+DEE7E90C095A52C8A89887BF605AF6333B71204D4718398EBDD329CCAB5D973B
+A00FB9C65B6A2859A2B96D7CB7E4593E9EC3F0ECF0E92FBCC4F758EE3676FAAD
+ED7F3ED0E15277DF5167A27B6D896CA5530B056B263CDF9578342982120C61E3
+D1D19347D2C80F53CE83CF4F0873BFE9BBD9B0B46FBC7039EE28C306A92873AF
+58D30A44A9D1AC49A2CBFD061DAB80CD4CFF6B8854227D09341153EF4BCAB405
+DF617E81CDB9D74FD1A051C249BBE7EB12256B13273A62B685A69CB28E328368
+0497E3E7B028662CD71A797888E5B21AAA1D997E677C9B78D8A2B4FB1AA6FE3B
+BC3A160A5E40D282B45C7FA2E8F080D357EDA9267C863D24D7594F4262B3ABD9
+91CCFBB6ED2D4867A5C501E5ADD59891DA07C5701F6449CC3F3A5B70ED43A682
+5683730AF379E3E7111DEE7E77F8EAF1085FD657CAC54154B35391EFEF11D5CF
+1CC486822B2DA9E46DE6978666C2834CC2DDF2F64E4F2082FA922DFAF06008EE
+908BF7CC6E6FF7342A1DE6B3CEA674BB3AA15E693287CB112E0939E4FBB7AC31
+6101390396143B5C5463E1D2AC0FB3FFDB0BDE2757EECFE65F2648D641C85F65
+013ED4FC68EB43ED69C994EC6A02167E3D66D521B8993B03BA0588AFD969AEEE
+14303EB1B878D8E261DCEAA32DB4AD6D2A0EF967623D842CE63F5D5FCE91476C
+3CFF8F0BB0B128935BCB4A7965B99875E551534146104F09E3265391A49CC17E
+BB1E9D56C3B3741F1F4E9BCA252101A2F095C3E9024545C5BC356BFBAD6FED24
+D9E6DA8452664F461003A1788958CC64F932E94917D8195F5E60DFD32CC4C865
+5EBBEC164D4050ED64C03676BFC463E1F12AA3853E00808C0DB701B75D7D40BF
+D7AA6795F9929FB2C9B261AE6C5595D5C8AAE4F22099544DEB219F86782E49D3
+F21A3B167A3998623F72EC8CE6E54BE0CF0FD6B01938AC3CC555000E0690308C
+7491C8BFB3E711C09B541A035E58EE0FC8DFAD55F9E1644C7846A723280856DF
+0205DA4987F3F4EE759D1EE715623BF43A1481FA23D4DD16D698FA987A5A087A
+2B9678135BC49174F70DFAD07E7757B6674AA766939CDBEEE8480EA86E0DD3BD
+483D6EC18490176731ABBAE88209363C5C01FEC3BCA237CE328B210A3C9D42D3
+A41B81D249898A194884FAE7C5949E50CFA44664045F347FE82C9A4FA580179C
+3472F2E2F4A4DE7491B219396718C1589991DB8A5B9368F97281F79B6F84BCD1
+71CADE49B8D7735C0DB09981E8A3AEAE8EB7B1E2028CD5A36E39113D14D6DAB4
+D6916937640A7427F54EF354414F1FB61AA821CABD63903879E626D4DDA9DFD5
+21C24899697C6965CCA421A3D46FCB56E2875B785D884BA487CDA39FF8C4B1A9
+9BA2B7BCA9A390833A5B1B9CDEE7A66674B5B9AA38BFCE0D46BD8CA13F8FC3A0
+20494D7D7E4161F39DAF1D40ACD72AAE89CC17EE10CDC5BEDA799D089975EEB7
+E7BD3458BAFF1600722E013054AD69412377B1455F04A2E6B3996DDB6BC439C0
+84B3885AF28605B70B222C5200DA7B4DEAFBF7B309159452D8293E65A64CCFF9
+78C023BC64003E1B2F2BF89896A60217F314744816664E8ADFEACAED3D9A671D
+8BB7A425F3081405BFFCEB7497BC88579045AFE3801C6116F8478431D39DD48B
+8B8E4903A69F0FDCAD68E126A046E9B05CE344832EDFD48C5BA321D5C8913D83
+98436B66E71C9E044259B51784F05E6F893E1B888E438D64235CB135C6F41570
+77DDDB1DE8FBE7F5A5FBD48D48535EFBB4EC643648FAE254A4F6BE4A6BD98AA0
+A194273BC7E1FE0B51529C7D8FE5CD56CC4C285A1BA6489FD2C73F6FEACA599A
+A288B60D83C786453B12EB12E59E826E62A50243D28AE9E920B36CE1E900A28A
+8A13F754CFFDCBE473C09FA4A63B61F804900ED09A7E72A246E55C0496CA1735
+CC5695D08B334870D94B8196F56512C572A7D106848F7AFBC60B4ADAC92E32F2
+E137A706676530751B819859A5287FF49D88DB64B239EB7414FB2A05DBB53C87
+8DC5A6B452D800961EBC15CDA74F1B5F251F1FF17841FD9DF682B577D112DF12
+57B35865A3CF92C22F671B286ABBC2E681E3321FF9FEA6A00B048E7D59721264
+C41B51940770E1B7907247830BA1D8366F54ACEE26636561962909D1F3F1B682
+0218A43BD414954A5B438C4C1A997D3999E572CCB76DF01BCFB59618129B78AC
+060B6C6BCB18FEB1A63D2A3F7C7CCC99343D1323B350307571A0FDEB2F1F7C2F
+B378C6936816CDEEEC141F3906FF8249D836A4C0EBFFD4975C2B8BD04F621187
+EF6D04FFDCD36EB9FBCEB4C1C98A6B424D2456242DBFEB76F75C5A6606DD7192
+257FE33CA698116D60467F4B5E521C2E26ABFC6406971D852F9AB0E7C609B35E
+DC7A96721B1B63FFF8620A2F52F250FE512B95265D639818869E3BC11B5D2DED
+1C1E27C3DFF094430FC3359618C00B3ADF14B13929EAF1F0A7E7AC270AB80899
+5ACD29E2A10522AE8FD6B492CA9CB32AFF080CF6D5974926678D3A23D0228AAD
+8CDD10D7F8D5FB6EAF5FA4BA682F85EBEC7C2DFFFBE3BB3008C90674F5D0BCC7
+41156EEB016BD76DD0A7D117B50856F8E490851778A9DF22BED937DA30E0E578
+14CF602AE76814FBE0FB95C8A2D0B0F9429BBA96D64A464B0DBD55FCDDC0FBFA
+36DF38DB55629DCBDCC2BC9577A8487E8EE8DC96CAD6E59A60AF94C85D807DEE
+21FD7D40872D1A941859E92A22D21C5041F01C336EC83A8EA14A52E628F7F1C9
+15FA0E701CABB0944E0D1C7BC1CD8CCD692F1403D26742F221283F7EAD3DF562
+EB875D12FBB4CDAF455C67CDD03B3954FBB1A7123B06B94B368D26DAF4EF7CA4
+7FC76026E0F0F51073027858C008D4AE7DBC50AA23EFD98A56A0DFF92DBAE8E6
+6ABBDBDE4055876E3B0118B7C0A0DB98F03D0206CB72CB42F5C417C783C8CD60
+33DA23EF566C17887A199E2B331678F95DA12A47EC0AE3762B108865B934BBE7
+1D9CB5D5EB5D91D092930F7AF91BA46CC2CC872A0FD93ED66EBB4E5D76439358
+DFD609BE5527E495173115FD823DB5B40AFD85A1F20F317A5FBFAFA8AD935954
+1F8AAEE5676004FE57176C1B9A3E015BEE6D6841EE9E1F6CDDC8AA2D32C498AE
+57F8E4956494C5235592A0094BECA939406D22EA8E52F34F22F6721B914CC3BD
+34EC6B422126E4591C584042965DF903593E9075516167C4A3D58539BD15618E
+AB537C1ED92C450AEB9CFA97EF8633C93972BD9FB43DFB6D1CCA3977329A87FB
+A6AA3B0037AD1F90D01F7C637AA1C49C69693039395FEBAC024E522CBEF68CE4
+486D7A6AF67B2EFE8ACF98395528243690562190AF5F505E4B7883C3D5728AA9
+F20D30805B0DF2A4EA9D5EC6EE2A278ACE38E67E66ED9B2E889AC0F1C445383A
+9E3D4A5644B7C68F419516DB783E2FD6094C748EF98178B7607DA566F98C8D57
+0F2C84DE51103699A136B8F0744660FEDCF6F4057C72643EECC14849CA92AF4F
+BE043EC5B3EEB725A83B6552141F0D8724A41B65F6579BA256F14B503356203A
+8B6C208C2FCB556845CFF9AD77F1DA67A77D8981CBB978F3AF938C5395D9EC37
+14A52E404075AD94F95B64EE058A2C18C6133EEC490998737F401A947C6CD2F1
+E1D50D958983CEB70C07573D3CFDFD7368BA6AE08DB120C967923C4B986FC86D
+0E2134CB815146B5EDEFFABA96644707CC1821B36598F0A12FED0E4886C1FEA1
+23DCFF783F61B6A48A0CDBD33A6AE0E2E95F4457D0EFC648D097D54EB4769A0A
+89A6590B9DB75DF410883E7FD0A2BA369E3C62B4C14C311D93D7D472AAE8ED5C
+F2EF01604215A12FC1308489484B35FF1140A8082F113711F56AFA4FB5FC3D99
+E7ACBAAB0AC90125C1E536C2B49968207588DE4516725097AA9C61751C8C0E8B
+1AE2FE2A306C2FF1975D26578B9B61473DDB55B4FC84C4B8FC9E9CA2FBDA7685
+EF3C838F461590BD11CA0EE1B846629DEF939303E00CC19505D2845B039BFC9E
+169A55941884B6B42D03FE0B2DBC9AB075DFD6B3BCC3926EFDC89393613F663B
+F4C37F1B260F6FBD8901A04DAE0431C59EDF634E629F88F0D925C9C766B42A51
+800C1BC1B984DBECDF049183D3DE912645B4C27EF8E43789EEA3E46978C2A91C
+08D9C4EA40EFF790B66EAF7B0AB5F86FC671BE1016820A842921CF5C5A1CDE90
+1BABF932B8B2F8286F7DE072237D9B4C4CE35D2CF6DAFA70EBF963F99820373D
+4019AF0DABF0683D37C2944D5969C16D556D46C5C643D1D526D24FE084F478CB
+C118F9AA92676DC33EC88B68618DD3DAD29C55C7F6F03D276D47CB32B00AC950
+330B5D24F382F104388E34AF95ED7188B7F177FCE9443082B69F4CFD8AF49B23
+02465739EF1CA21645E7CF5863989ED53B559F59892E83783D2B070DBE285F80
+726D6158CCA2E8E1F100EEB39DCF98EEA9B0ECF0FD5704EFD32117620A03AF41
+003459EDFBD282D7A7E9127CDF0E1F75C0B328336E93D59478869363F7E26513
+01EA6DC559D7504159C75823C24EFAFBD0418307AF860293F62982CDD9A416B5
+9EC57F9B283476EC0EBF4042C4F7BCBF1E1661D1C49077FD8EDFBD7FD7A1F387
+8907453945D5EB21B4499F8D1B6097E8B1D642F0A9F8B3F37945977C299BFF33
+F43FEF0780374FE2F8D0CF0E1A3C38FA6D5DAE1533889A9451ADEA5F19971C0A
+0B7C84B72333C95B0D760FC9DFC73D41A0CCE826C0C82BA05ADEB82B795B7052
+A52B23096104A98EF8A67885B3B090FE521BD9DC98DBBAB5D8A686F35940369C
+D205A307D9495C1348307FB52B4A23217C224544821D311F4CD4BBD6604D56C8
+8877AD44D6F8BA2A9E76A65647DFDFCDF7E2F8260ABE1F70EEC3C5EA5018C64E
+92EA9AA0822B3D5D41AF329A245C0FA9E2900485DDA924827269E5C599E4063A
+282300382532DE48074C198419BB638713AB82D30F96036F28E9867D60BDB908
+25B8E6006B87C9BE7B32F29E2B3CEB5ADF2423C44E874ED480D3133145BF1D10
+382870C5857E51994DABF9789901F71550660AE62502428EB6CB408FE38C0FB7
+A11D0BA74B6528BA38B31891CBF97B504D34B180930F3342882DED1CD8941272
+F94923D9A3FB80E59A02AF1C34EFEBC54B1B60EFF404A85B3B1D6396CF06FA4A
+86A30F3FCE9B25CD349271D93094F97F172D54CE02243F2FB715A5827C7D6536
+98EC3ECCF29CAFC4FFFAE4742B4E34226BC7937BD84FE1AE1257BD9191E55A9B
+1475FA9A8839D71299CA3EA1FADD83B0099A45081E156162B95BBA987EF22BC7
+CC1C5836DD5CA033DE4B1A3B7114DBB1E9BDF040CAD40EA273A2E152D159255F
+EF6E3E7190B8DF90DCE8BE773BD5D9C4B7972422DEA2D8324A7CED37FA39FF46
+E4FAE54677A2712F290F6598FFF6D21C1310F38242CAF0CF1F2B968551657AC0
+72597C0A7FF9DA2802BD050A2D82BF65F1E8B08637486811EFF2AD93E5F2BA75
+E99D106924161B23E182F24D8B0ABC7376B1001F32A1799BED4534EC5FD40A23
+41E82944D8A3382BBC639262E5361819ED2693D6FEAC0968B93B7002901AF03C
+230912E19BDBBEE725B8805387DD977FB9023A56D3EA75376666A9BBE49A7DA9
+98AFE085017642B6B7D1E4320C1E5D68F915129D69F137D1C3A28DAA7459E76A
+655DA5925DF7E1BB9A87253204A26D2E4188C8F269D7DFDF1B99140AD4363A16
+753E61D097848C74C3C6C8FD066E9FE33E62125A084E6E4B5654266AD4AA4E08
+E8B2774358B7213173B7E6504E281CA5AD320ACB662A2A15D6A7307F82CE186D
+7DD20F0331B2DE86F02E2E7BAF5D1AFD192E05AE1920B606FE8FEA00442AE158
+0C23784BFE00B40028AE055E191D21751A15B123397FEBE18F372BDB2607D792
+E1E3874951CB4C361A5D902C0B14D6E418D68046B062191465B8B926841A0467
+8AEDDE24E2235D19143E49AFCDED0A17377E6832C765A2FAA87DA95A3A7E9AF8
+14B5E7C1FEF4705AA9BF3C6BE158BB16326FE8E65A51A45FB58F5E5834823A07
+7B4CF384A9CEBF3E35CB3BF128AED01ECADA4F0404AA0A97A4B27826AC4FAE1E
+63F915401785072BC3DC38607501A9EAEE50C128408684A840EA352E30636FCB
+593429F9CAE5DA3685FA4F211AC947D0266634D95690B89AF5543B115402A953
+35E153D464E4BBDD8E6F256D7BBF99D5DC54108CAAFD6204C8AA2EE845CAA75A
+51F06EDEA9BEB0F7A3EBD26DA0F4C838D08CDA369E7D93DFFF974507514A32F8
+32CC846433211C2010AE7F6CF6F6D20AE62BC2D5E39A80B4FBC5D539320613D4
+163E81A50C9B415F058E626B5979E6C8AC30645E1E07233A01E6260F31C907BC
+7870DA8770AEEB5F990D24ABF76F9CB70DBF5DB7CD3FACAA638167E7CD63A1C4
+2E1822A5536B0D38CD473B446126604BDCE90B9100F2C341539D122AF1230272
+D907D8B43E5FE4B51271DBEF177AEA119BB1DE911C993C8A251587B18A0B266C
+1A9982BCC6C632F1F0D1C3B9CB10F70836DE21BE12A332ADF5C68D170D059912
+A1363C2E052B427B1C575065F859E063DAD71502291037FFC674DCAD6A7FBB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMR9
+%!PS-AdobeFont-1.1: CMR9 1.0
+%%CreationDate: 1991 Aug 20 16:39:59
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights 
Reserved) readonly def
+/FullName (CMR9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR9 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-39 -250 1036 750}readonly def
+/UniqueID 5000792 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4
+87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F
+D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0
+92A36FADB679CF58BAFDD3E51DFDD314B91A605515D729EE20C42505FD4E0835
+3C9D365B14C003BC6DD352F0228A8C161F172D2551CD1C67CD0B1B21DED53203
+046FAFF9B1129167921DD82C5964F9DDDFE0D2686875BD075FC81831A941F20E
+C5CD90040A092E559F6D1D3B0E9BB71733595AE0EA6093F986377A96060BF12A
+A1B525CD9FA741FE051DD54A32BECD55A868DD63119A4370F8322CCBEC889BC2
+A723CB4015FC4AA90AE873EA14DE13382CA9CF0D8DFB65F0ABEDFD9A64BB3F4D
+731E2E1C9A1789228FF44116230A70C339C9819676022AB31B5C9C589AE9094B
+09882051AD4637C1710D93E8DD117B4E7B478493B91EA6306FDB3FA6D738AAB1
+49FBB21A00AC2A999C21445DE3177F21D8B6AAB33869C882613EA6B5EC56476B
+5634181ECBF03BFEDB57F079EACE3B334F6F384BDF9D70AEBD592C8ECF21378B
+54A8B5DBF7CB9282E16AA517E14843909339B5E7C55B038BF3BB493F3B884A1C
+C25F9E8FB912CBE23199AD9D2C3E573727701BA301526C66C3617B9514D6F11F
+11930B1D97C17816C85B1BFD9B973A191B33CC3B391815AC46268691C741B2D4
+48A840F1128D9B2F9CF07D0709FE796B23A836417BF7B5B12D67F74453C82F5F
+25F7B30701D6F6D4F4DC623C0C27D6A6FBECC7312A3CD10932FC7C10851C3C52
+24B75DEA8A648B7F34F5711DB0E843C914E25663C510185BC37BDB7593C1C259
+21D8DDAD33982C336BF272BAB2F48E68217403FE9F54877B243614A87E64784D
+2796EE4179FBF96123D1BEE3EF89D682B427BA4F12A1318A57F18BE5DD903815
+261919C6C24454E652A8EE1835C79E7F020745D97E8B02D00A5A0C55D2E203B2
+9700C5B49CE6C2BA3FFC71FBF71B6FC07BE51E2D7B4F03A32F378384A0048C28
+56678D93C2D6B40C8A4735D90F9A89F8FCE00D2A293F25DA434D9F76B8C430C8
+A4AA7F3685B27BE9496A9ECE956867064911DD00911EA779D39BE988F0D7E280
+66779E0ABEBC1EFE003E27DE90E4D532539F950D090C20224EB4EA99DA79D9FD
+70ECDF80358DE212F763B7D785BC3B773EE1BB62556EC6364E455EAE3675A6AD
+2558ADCDDFC587C975A88A7C6BEB0A90FF7390C55A9D188E43BD930BE70DF8DC
+39FF249D6095BCA09E1A875277C3FC5EDBDC08EC9F24AB595E912E8B0BD37D8E
+92BC43F4906825BC5F2FEFED5DE35E6D3A3759BE4A426FF9BFBABC9E94F1424F
+0B33FC0AAEADCA06EDEA7C637794D14CFFB305F68E7FA065B5AF368F46FF8B75
+0B7D29533E79039BAF886B40A0AF19A81F8B1B01C723BBCA8EF0609EBA9074EB
+6623FD116166AECA1B65E60334EFE16A266813E340BFD7B6BEE75B6AE4C21AB8
+05905F219E1EC73EDB25F4204ABBEE992898DB0819F21246809593EA7A5FB536
+17945BD87EF19AB13A4D99B1B69E192AB2D539429106BC5ACA9E5765ADF5F970
+99E92D36871EB7CEBE545D7785FF7870C55FFD323C98086221447A7C2EB53CCE
+01D96CB241E4CA8379CA32EA8B78ED224D3F802E3D836882F8F9F122D4DCFB82
+2537EA1DC2BEB4D092277689BE53B4C2BD8641398027D6F6F565D46FBD465B7A
+EA3E00DC9917C0DCEFAC93BECBAB112F978553D19721EDE9CC8FD7AA0CFEFA9D
+1E6BA915340C19857A1DCBC69A84F3519C0E81E58A09F710F22B7F6735C8B2C7
+68A99C1D6C415BF5141FEF475C875F48D72F8DB27464CFBBDD689E9BD6BAE2D0
+8C9867D2037F40020762E53CB422596704671A9E46053E147F2C8AC51D4505A6
+3D0BA063A1A8D2CEEDEADFF5CFF3B72A1EC5788C13DCD8F66989E368EFD6A89E
+6126C3BC9DFA00475145010E12E3051A3AA84BBF334A8C36810D96D983BA0E71
+98F43D93FFED20F9ECD5489ABB4272A273A8A476BD0082742D401EF1C2A56E83
+CE2060CE23E3FF0796F188FC80CD0F5734F1F5E2DE2DD499036804F47D73C311
+43E5DBE0449E37B3782526CFFC457772F9F8151B917F25E615AA10864CB2108D
+45ABD47B4D82D369226D377D01CA3109FFEF2D698DF8F8E3898986AD37C16200
+A37350774AF5C838BE265FEEB554897B68A59C22FAD7091C327974F95B61DC5C
+EF287CF9BDFFF1571B93F7DC6A63385801E144F19EBED37E8916867296E7356B
+313AF6E4656FB5B02271C4FDE8821A6E3C55EF158A266F1D816F1D847835E796
+86228EB1B7C521819FBE12F557E72F19207276EC880086E2AC83710746D40F72
+E8073B6C45CC1EB32F543D0A114D686DFEF59C88AA5E75C750DCA8B6B8CF0185
+44E6A57AFECA5832CEC79FBA967321C9D836134251B29FECB99E93DE0B87908D
+BFCCC06672DA9F04711BE194AF45740245E885FE8AFEBBC753C5FDFBB8A1BB3E
+A76A7735CC686F2760817588A92A467468490565E7228E3062D0D1F70EBCCE41
+084111777E03DF2C0349EC2582BB04B8A2A6BE52F62ED888042A144304036C55
+E2595D59734E5ED5C2114089B518FC0E2B29BD5FF80953C4C84A263C316D2035
+E2B11F49AAFBDCB2D1E6D2B11DC0BF853CC6C54900E0B7C5926D78A3D1DFC446
+675B7E50E60AE35A8B751DD9CC4AE4362A15AE17C2C9B9C97C4621FD5840E090
+6BB7E14200CBC7FE696C6E7741806AE85EA3BB49C658D5479F05539CC21B4E0B
+C68087FD845E77884EA6B4F465A8CB33B5037FDB6CB9C3A3F38C2A150B6FC7F0
+F2A8725458757199CDC177337B5E89BE19031DAFD815FAA49B7D29CD6F15304B
+71560BF44443FE4799E4E18B7CFB9350E01F5C51268999F47BE653FF43674AF2
+C3B06618C0BB9B863754170A290F7C7149FC89381353AF538B86C6DA751215D7
+715EB3A18DAD988A19864F362AE7E9392E692447492409A1AF82E12CF4BAB53C
+B62BF87B0197BBB1BB4A53D98C31CA34B996F819D0625320C875F8C6342B6DF6
+5351CD86EEB077FA199989FE691922E255E72857D95971C20A1E8D0DD778FBDF
+4BD8F235CBFD04B77D0F514AE30F8F5EE04E1324A0359B211EEFCD24B0D5B0DE
+2BD508297782B0F3C726D8EA5310C71A974F76C6CCCF2534624F249B20C0F297
+91CEBCDF2503EDFD1DDBF9C228FEDF3E8EA8D3D4531C161E00F760D8F1AB549C
+7095FC2783E7234E3941BC81DD189112F583941B9F34730ADACB3C7E079AA5C1
+5872BA405D0BBF20BAA38472682D1B87899507276DA5B0B1E11FD2DA0B8A605C
+6F0B7C69992B57A740816096DA6909C490415DC7CFAC3596A907B3A5A4F058F9
+5497BC6328D37FF3A87F3236039B866A2515C1672B803CA1F58F2C0A4E399905
+B1ED553CF99FB259D6D129D1BA7B12ECDEDCAA87CEB0F8FD93CB130800FCBC91
+4388E95EBF6BA882FB7F9F0B2DDA84B5E150C6D3C20FFE2006FC0B7C42528E85
+676EEEC0BD708D36330281299B7540BD4279B7B4C142E445EDC2520881B2ACEE
+8D3E07CD4550D360D6442935DA315AEBBAA072B1379F4F899684E9D7B78A3D64
+C726BDD54D3541D046ABD750D6629E6E1AD98E1B057C15778928C232EFDF89D0
+4800DF40688202CF7165F3B5145F141D7EE2BA7DDBBD3C5852CC19B0C79A60AE
+9FE8C6189B8F9D45D683C045BAD54D37B09ACE0499BBC452763074532910B559
+7192FB5FDEFDE73F18DE6E02CB403FC0005EB660923B7548BDDB158873E92570
+80FB3D8E5B7E7CE458192AC0FC726F36E7B97F37AE64BD2E3A292392F8E31D4C
+60615AE5CEFC3A72F4FB607255C063DEFBE7994DC07917956F91495EF44AB2AC
+E9BF0CC1E7A48DE8D962942B94B96CF456762FCAF09019C27E4790C7046D94C3
+ED7A606BD964AEF6F2C9DAD58ED8A57A80B5F398CDBED33AAE478E0906F7D5A4
+CBAADA312DDA34C88F2BA9A58A25AE5AB29822A4D5649D865810E197DF221201
+B08DB6FFB986E18D6126286C146C74256FCDC123A5E7AABA4377A4038475A9C6
+D71ECD5A747CDB800DA1A1153CD135E475CDBF2683FC17DA7B621EFB307E17AF
+D96D50584C924D57A011F49AABF204FF7CDF8D6E00238FA01F73FAF2F38B8012
+30EC8CC1383CB62A1D3C2685E94997D1BC6C827F2659DA684BCA700A2CD7BF08
+37FF752D3BAC14EDF878FDFA49504ABE38174FFE3B3AE42ADD2BF7B0FC44B893
+DCD081B902A653BDA4D9356C52D692E4A1A73F2761012D308B09CF5A718CA5AE
+096A588E2C9AD505085F325142D844B0B21B2A241A4DD1148B6A26842CECCDA1
+C230E1435D45390215302E35648B090FB6E9F2D9B860E438A7789C90378AD500
+5B8410D45D92478A601EDAEEA1A47F19E2C4CB54D9507FADAF941AD0FE9F38E7
+0411FBCFB7D8C2D01ECF07DD97CC112553394008F4AFE46BD0EE7557F072063F
+7B5A9C36C9A0F955FAA9FDABD92B0CBB9E87275524E02065004A5FA4CEE1A5D5
+08F0D9503BC52E45440E30620D097B90D74651BAEEB403B83F87FD655E44BAFD
+EB6967D4CD0E145437936F34DCCF197DAF0D84680235586FE06B3E97CA566C70
+E534A79569BB2A55718E59336FFF0240D0453C3144DD10B38FB83A66BDE04B29
+E7498ED497E0EB9A1946E64E1444FDEA4492C54AA474C46E49D2731C0B7EF365
+EBB80969244D5D3622B1374EA6F91F06D0890FEDB5CEA9CD6196E693DB9A65B4
+5F9F440FE5C59682D9441D334678A9F7741C87D1AC377809115CE70ED6A4AEDB
+6A918521A417C9419A8B2D8AC664EFA4287C8063F350DEAD1EB8BD94C0E4CCE5
+20AD82F9536250B2B6131F1CDC4C22283EF9C85FCC82C505C381CAC9E87DE628
+1DA2323A8265781C5BFA58EA4CC7372C80A4926A004B31E213BCD4CA7AFC1534
+0CF118E312F6AD37B5A16E582BB10CE06C01355C2A34AAF1121C84485D157379
+35DC68BF409549C96FE62E853FFFC91450ADC3DBDEAD631BA712B9FDD41FFB0F
+CBB71161D32FBB06B5495393121A40BC7E806FBE9CE3EE79A7578FC6F6DAC1BB
+2089F9DD7CB8DF522221D417842231ACF6BD48F2E8850080C1422BD96B8CAA58
+3BA46FE0727915449132C9B2C1BCDA7CF07ABAB72EED345581BAAC17F45A1AC3
+19941CEBE3F09FAA52CF3945AA08414B4BE3FF0E79B1A4D913EB23A8A918DA50
+AB8C104550D8680650B71098EA4DDEF30A3A50CB834723D6619AE341147492EB
+45FF2A98D8D4423C1011F4EC79EA0ED07C4C8D5DC86696BE7B28B9A04D3C6C4D
+7CE2EEA057E1BD6D6846D69B8C7BC9F146E91F5FC280F61636D1BD1BDAEF8E90
+F75DDC53A9582736531D289EADC7CBEA9F9F0BE1964788AE28386090FAEDA625
+35E7B031533AE7F0712F4D86856C0AC0F645188B37A48C4A357FC2FA87C3C8F0
+A0898335E7C4413E3E1CBD196293F7DE4B0766A64078B8ABB8EB75E095B6A24A
+4476DD3B764E625B70B7B60B749D9221EC8B936525C9594595766C305FA981E5
+60A60790C659BADCAEE06D27E897158E393A7A9607BB6C6AC90F9123DF447DB2
+7EC03FB75E759ACE0D2C18C9B31CADE88B77B7632FA74D7EAB83AAF6A3723C57
+9F2464F561260C75588A5857EB82F40A7F5F660B1BBF9B9C0F224442185D96C0
+15FDA12604DF724C5607385A288676D411F03083BBE666E22B86F04FE751F49C
+768502434F21C2BD4026E98E0907555F20EBDC9EB94E351A4D79B97D2DEAB787
+37C77B68FE2DC40BC116D3776C54733512108AD614148AD84EDA1929B3393DD3
+26560A5CEE9F321526AA71E38531A170C773EC39C74216F6075BFD2147A35C76
+3B946111C61EAA39E157680715ADCBD538B85A6B9F3D0A7B9FAFFAD89F2E2C61
+11AD72A9C184F3168F01259E31E6EC5AFAFC86A4E2751B5607CF50000BA52BA1
+0F559916263CA01CE6A49BE621E9D6D18554877B4CF86CF9760C1CAFBECFB352
+5198066A877E82D77FF83BA2ADE97EFEF6D9A974AFC1249507A292757DF891D1
+8E31F96328CB614883B647D418AF17F975ED56F2C8B5ECB0EC763BFAA8D5BAAF
+97F3338BE6290702832E717ED12B78817E3CB953909FA9E646E75AE6121EB011
+9EBB890B96E71D22A7F7E91C9E6A1B1C9C3D9BAC774C99AA2337412971232F00
+EA06F1D02C3E3FA9F8E994E2D760613C51B6C2E16493C055990E1EA231909024
+342016D1B78EB3F60F155399E62B02F1A081B83E554A2F5E746ABA48EE6462A1
+9AF890275A8D5285BC91166D3051DA8284E21C54D7A0D5368CDCAE65010F3085
+14B7E04C1031763ABCC798193C7C01EB3E53A14ABEB7E3F16DED1B49FB14C252
+B957DFAEF6ECF82C6681F5102617D04B35B228A8F57CE3D62C0CE0B9BDD04D86
+77475568BFD970C1FC122AF5734BBC96B3F4E93B18542C19CC70146E6AFA3C28
+BB8635A5531EA7AD625031C03B66EA58B304F04741FB017935DB5783B67DD1FB
+F20EC86A77878CF2AEA29D29488E6C73CB0DE84CE6C7D7C1F0EC80065897179F
+7E0732978772FB82F38E79C82E269624B1F6306C3AE80B5F9DE0BC07FB294326
+3B576976E79E1AB42BC5C9B653A211DD7D1D67A767581AC96BF85BC02FC3D623
+B7ED86ED765A1E5913499C009B02083073A4218E09BF03CBED03AE091352D957
+013649ABBC1076AEF60908B14EEBD37398265CFCDABF3CC13AEF27FC95EB1D14
+D1AF7A82CFE0C19DF1FFA7B959A8BBCEF24AF9215E892EB8163C32DD77436864
+E2D580B4017E003DFC9664702C3B27F0503066B2F89ACFF2B61C775F8E5B9AFA
+EC659D3C2CA6462CF54A76CB839A9AD5BEAB1A9E06DE0D69440E25B93357AFE9
+92DCA62A4287EDD6E72A7F052D42EA43235B4599D3A660A3EA711AA511599FC9
+0541D4B848C25B124ACAE709306248B3B2F4B9EB78622D27A707055DD6293DE0
+F12933413C78185659591F4D7ED008351E4589446F6E987BF6FB45BF2285E39E
+C6A821B7CBEA02F072FE61A3951CDF458F6085A60DB5133F144DFD463EB80D39
+5EE90DD2ED902A4A8126516C78E98AF89A66892AB2BDD3CB45D7005AFBCD624D
+6F2FB4F453AC44EF503BE5B99E3F61AB3FD1A1E34CDCE307AFE5E9DB92F5BB7F
+9E64B59703CA5CADD907290979C324AEF0D03DB8A5407E8C6C65B1FACE3DEB9D
+49E3F8CE447EAF1CAB42F65CA7CC8E35AF0D34F18A07B77FC6F4181D54026BFC
+EECDDBD5F40A5C47FBBE3B881F26DDA0B35F8D05BB10AC14A90474A2827D997D
+8098B3DBE856C03054C10C07C096832A80F69FEC948634E74137825579DC119A
+E8B3F975FF3BF78457988D505085902BA078E3F529ABA1714D10F75A2557A782
+36F45B9A6C73E4A4DD6B6C1E793C7A1ACFC6E08DCFFF5EFB75338F843005178A
+077868C937A1BF1798BDC4E1F3713B45F0F18FA183821A996B6A0836CDE34973
+21A6F0F6E2FFA5F8F1139F7842E62F3588094A418F5EBE23BA281E5CAC36AF1A
+8A101AE26E4196BA4F12A1482B1F526F913392A135EDE99132A964D4D9E2E28C
+74E72BADA2097BAA162E585EB241423120B1896EEC3BA1449A3FB725B0F71FE9
+A9C0CB17B3C21743CDAD3D64F8D2F3FEAE094FACF82C8C9277B21396E3E9D227
+B59B01C159469C175D02B3CF2C3AC008FBA99C32F94A463B0AC8B093D7AE9BC5
+6F1F582688855E90B18EEFC04C743D994C553C0233A1FD287A85BE4F57E9D127
+2406B496A62B0C490AA2026C55BC7BFD4FDDA893C7737C2E7C1912A5DCDC5104
+06CDD4560AB857D626FD3CA35B142A546B38F254C2FB70C6E57FDBC9DCC06EB7
+598B62F446A5B5824135435C0ACD277FCC9115AE2E25270B2EC391784F563FFA
+E4CCA7BF6E2959B0A108C5BD27B692BBF803F5889E9C04704302EA2B181D7207
+623A0305DFFAF0A82E1D679E50050EBE639F453BF5E6363A8AC1CAB4C282A654
+4F6D7811C5270DF23F2A8FD76AB635E4D2A73312007DCB029258C72579F03B99
+583F79B8D4B429D5F80F09BE28E55FE6BFCBD01285199EF5A5FD9F5C64E31EE3
+E658C9BB8310ED621A86A2F0F834395B7287AA5276066419FD4FD0F64E84A09C
+F543F822261B3D78752BBFFC55F3CF95B0E438F786804929E025C3A8236CDD5E
+7C66E1DEAEC4EBA060D14526F7D90308940C83754CC156E1EFCF791FB99AD8F7
+E5EF3A77B93E7D37EF4FECF0BA5380E0FAD268D218BDF04564602831DEAB7ECF
+CB075091761D7017DE89BE37C9E8CCF7DC3E2A6F17472EF11CE7D8A627C1E619
+5204962253DB67BAF673490054AA8C2DE0D4B238DE725BFD83067ACDCC86D40C
+2F54FF7B19CDA68F88C12C06938D79BF896E8C12C3E3E2A12A86DF92E47A7CC9
+7F29A5E210AAB051D9345F336D5E4585F1231B52AF2207B7A1F9B68354819026
+77E0F37E214A0A35481EEC1BA89D77EC9B1925C46D78C4617D0AC4561974C246
+FCA163BE09D4B39AC2DFFE9AC63ADD16886B28835995B1560687F7237069FACC
+717D1BE80D7BF4E9BD72F0B37FEA9A5E42597D465150DD0F5F54216715038AD3
+99E644CFA1B8871CAD1E06BD90097B5FDFEEE1726FC98E9960A7CBEE9FBA6BF0
+1DDACF61AD74A6AE6556ED7A43A09CB06D13AC271EE1F50816044F3BABD829B6
+CBDEC825CE8BD633B945FEA329A2A049EBCE645C5E1C78924F171F0AECE26023
+FD7195D02705F7FFF55CF57A755D6783AB112042C472A9CB5AE722017C3B20DE
+C01906016AD43506FA69393D82260CF9E4E76CD75880461C92BE776A1EB7EF48
+561BE446ED37B4CF4B6BE8EF04C4757A8139C9DA4CE6BEBA2DCF27B46AC482E4
+2F01AC80744F0C19B15147023E3E0619E7A88889C83E05D818311B3093A4E551
+99631D961B652A181943523B21533042D8FA87EF43E9ED384EB3F84596972A4F
+66ED20FF9A0052F6E285024B781D4EDDCA700EEBC2B0869618BA83E4D74A4862
+8D236569E87D59C0D18AB9A71CC3E8AA63D615EB2A6550A15BA4720194186215
+DD68F2AC55B1D6B867F792B01601D9235B284C3688560CC5B7FA6E865C4E6966
+D12E41044E7AD38775D530AC25B23C892F28761645E33813945BAC7E5FD79EEE
+A6E38935F622E1F52277677AB502EC06C1998C0F31FA5A2DB5ECE907E96D28D9
+F0B845017486A40A59E646DD3D2F92ED8BCB2B89C2525558215319FF8B12FE4A
+AA92F40E75E1B13D539C31A49131A989379A7B5D1D9620FFC716E0645BC09BE8
+C8747F69EE9FBC369AA6BBB5348BFE44CB3EAA3C7DF47CC8736D1748B98054F4
+D171CC74A5705138350AFF5FAF900579B015DDEE94694ABB7AB49FE185B7DA0A
+196814FDA53B621DCA356EC1C852BAAADA7EA8A12B741E5B60A0DDB8CCF1F288
+588DA235CDCE2D33DBF0FF6BF769DFFC52424300E42DB1666372D2FD8971DC88
+AB38D7B7DDCD2FB0A93882CBEC8EF562FD6E0F052643BA8F1760EDACBC433BDE
+63F2A2B052BB9AC5F7E21A58846C51AC3EDDD5C6D7A63347DC430DF7721EC633
+36FC4D6435269822D079EFF4A5A20FE082DFEFBDB4D88673BFA15681095C419C
+1CEAA00C678C1E67B03D97F123915DEEF7FDE76D4D7ED33C03F386655831151C
+37C394C4D9A84D3EF6C3C5CA82FF2BC9489197631F5E69BC3CDD0CF5BC5300A9
+BC1AE74D3C4D98E77E14DB0C2DEF97236F55AF00A47C21DC05CC4F01E1F6164E
+7B230D519632750650BA18F209212106D720AFB81C010DDD916515BFF9CB588D
+ED13E5BDD3F0F767FEB8AC950AD01E542FDD294E08D1CDF53C7253E8A2A9CA6A
+A214E48C235610DBD63B941C0020ACB91289AA026483551274FBBC88B50DEC12
+21E9D5514FDFB92AE722E53EE3D845471B038BFEAA2215A428F062B8A7B21B1C
+CB42933C58AE9FBFB28F6E9028EE316DB95389C214683A970685EA5E2D138459
+86822EA02D0837C26A4E9A3E72A743292CC2C0E4DA2688BCBC84556D60C41333
+A131EAC984DA86BBF01D3AAC03DDF8551E71E7B38719E9102420F89F8B3338B9
+D9AB68A638EB361D08EA599240234269372B1342EB2112D7931EFDED3B71AA03
+5D86E46BDF19B389A8FAB179A4E8D7E025C0AA5FFF94C524B7D60F61F40492FB
+CEBAC5929145EDFF86E058B836BA6DDEC59C0E1E0413DA4288A212298C135D28
+89CE98597A52A978C55285214FD5628483FE6E9886DCC3C5CEA4449836CA84BE
+527E88CB08CCF9CA32EBC467D351D690E031182CC48AD4B5F9A56B4A5423E20F
+4F86B70034A47FF4E0B43DA488C28004C5FCF2ED21A5DB3734D5850D9E07A883
+15EEAD2616CB846F217D52CF8FD86A2BEC7BC5678E3D1BE8777F48D3F403CFFF
+BDC9BB8D3BE3C572E1CAA9AD44819201BAE5B9A88CC33A6801A8D4215212A452
+CA95F500A974720D67F302C4B9BBDEA32108503EE83A92D127D3114119043889
+1BE5DE25F1969A5FE0EAC5482264489B5F1AC1A4EC36536F230A6E756ACB57D5
+3CBBADE7C7BC19DF5B808FDCDEFF07A524D7379FA0CAA178AF9DF91BC044D52C
+45618F8957E7E7BCE551748E8E0C83369B8AC5E19CB8D0D2629EBFCFBEF511F2
+F5371FB5D62A3AD8B5C119FD73092DAD1A51CEC82DC411199D095D69120A4795
+067B0FB48A972C60A2B01A7607C8E6166481458EAE767ED22C13656FFD54FA0E
+BB77F5867C40606D41414BE88DFD88D4B4225813316CE835F97214D6D4116E3A
+92A07A8382490BA4E20BF3BE6821939616E16A0AE05399205E8F97AB169E26D3
+5C86CADF6DE86691FF9A54FAFF0286AFAAA465DA4DD6893B8C77D25187A577F0
+A7E6CAAA9CC360EE0552B126E815C689C45F4310F084E564925DF52558C684A6
+5CDCCE0E26ED549C9DC7735530D0A1D27A22066FC5C90E7D0273BAE5024D4273
+8EAE0EC5C593CFAD1E0D128AC4B3779F335981EC68C12545F14D00E87F2C058B
+9115826A52DEF207EB266202662622E3C8490F6ABE4F3D2B6222872BC4E82E89
+36466DCD85AE1AB5AB8407FB44C0439BD293D7C536AF2BAA0956893862FC1CD2
+D1E49855181859919054DCB06EEFC1C895548CC73F2F20C4FB6BE74A7980F56D
+84B9FA9D66482639DA2581CE2B2417A37141603B198F7F68D0F7AD48489A1E71
+745AD263E808832B3BE2D88AC85661A3F6C3E08FF39CED6E5EB853080C3ECCA1
+DC957E9FC78758C829ED13D6D1B9DAD9C6D0308449DAC6E2E54380416E22F4A1
+B88213795E34C1BD99F8BDFE57834B13D44A4530265D6D19B68DF99C4934D284
+1123FF4CEC6D4084B0B55C3BCDFE89B671DCEE25ED5B8EE1E4490761BD84F567
+D28B487EE0610412C9C1D01CE96318F946C180D44B2E66FC3591220ECD62EBE0
+308E5B91C8B49547CA901D4270355298CAC4B63178127ECA5818A567297A83BA
+01B72F526717513D4653BCB9DC893BD4B6DC81976A6A3344CCDF67EDB2C4DE01
+152BEB75F3322B999188EC684608897F2FD504E8D835015DA41EAE3EC8B3E5E0
+05C99EC5DAF4CC0B5733D7CEC5620E611450A6DFD19AD3523703C1397D738FA0
+CE9C63D0034C065B5ABE9B0C0DC75D729858F167BD9249CDEB7B9F1028C08015
+322F2D2513B58884C2B38368F756A8463851251DA71DF376B55EC756ED92991B
+2963D92A513BF7633E87495E44038BBD5CBAFD394E7831CC6762B9FAD1E78EEF
+013DEEA1F7D40B009D665610E7BA717DF069530CD72309802B908316FBF5EACD
+4A81B6B5632B4E873DD5B7B9DE9E4E2A46278CD9565D57EECC5073F265CFF309
+19202372363B98099855AD5ECFEBE42D94F0E3D1DDEF8E4B580DFD7D3B197BC0
+1EDB9761DBBDC6B149930C28784B937C2BC7ED0D624BF5D9575B640D89DB8FD6
+0991A79E1437D4A8481CD1ABDA328651B716EFBC2BF72912DEC39D3D25593DC6
+86A03B3F14D022EF984BF8277E0FA474529147F60D2702C80B2FC8B7878B0799
+6E05723BE3D2032B19AD087AA7B77B3AAC227B8405C5453643F40EEB098C7F43
+453F3E5023A014DDF01AE8219B2C2268F99806A8599AF60C2F20E63B83469BC4
+28B834B2C6619D6A4CFEE13DB4E8857E735AC7B17C1919FD40C07D4F3799E20C
+39DB4F8B51AEC9AA1750B53018CCA2FAE8DE0AE615075CA33C001031B3A025F6
+97922A026D1838FDC85FF71E77ADE2A069EDE725DA54DF2A13500A1FD0E7763E
+D59B85A9C8C0C591925159B3C8FC59C56092EFD9398A6DB511AECA472019D866
+D52CAD81936EDEFBBE39677AC2970DD690BE2B08DECB0D928C6E7B1DB601B689
+775B69A21F4FBCF93F6BE93C21E83E0AF2DA3CEA3D116661945DB08E6A1749AD
+745BA75E6D3AFFA96E471274EFC5004C9CC386B6AC72FCFFD9DC67F0FF268047
+28B290A6752291B7E56EC8A331A623CD0253A3D135C022A99D5631888BF8EA4A
+AF2575A77B1D7A30A6ABAD0E8C6B3C5A3C9350E8D70A5E4661905C065ADBECB5
+44EFA0CB9A3A492B473231ABFAA3DB2FE4D96214929F4E567EF35EBC848B31D4
+90174DCF586E36D869096DC46DEF3145F1FA5E72068989080C243BDB70BC011A
+A18393E41D774C6582EB65651181DA598CB5EFC35704B58FF27E6A4A7D6F6A00
+2C026F869EA07274CDE9629C6769F2D1DCE4131405EEB0EBD56B2332C5EB51FC
+DAACF39572B516589E43B19450EB73C8DDF58438242CAF79B4A178C31511EB7D
+BA1CD450A3D891B484EC3CDF5653FF13FBB75B4228D74069D2C8CAFA576BF09D
+985A2C7741A211BE331B832658F66B5733D9DF7BA7306C1E1763DDB271D85A17
+97C7D10E91D8DF6742A02EACB14B5CB98AF79A1664769CE3979FB2491158311C
+1C110A5896D0C4756B27C5686C47B873F0979ED3F871C4386D95DD04044C45EF
+EB1E1D3363C73646D2DE6A485357D05B558034E1CF810FC00FBCFBAB65173729
+81BEB93D5B0FCAFB98A757A752CF18B372FD6D70388805BB93291679EC7A9403
+FFBC32DE619773299610D4B516755A0BE1A9FC892B9946DED9715D9A4EB187CB
+8F5E8F0D95B0BAFCF00E5C4B470DA8B53EBB852C6AFED8F9E4C717AB49115BA6
+5576C0AC82521BA8D86D09D0D107A3EE0D171DB4F9C92ED13553FE062251876B
+9DF49BB6B3DC4C7C136C6391551D3E3CAB14AB0ABAFA6C3B4095676B94796C79
+E5B48904DEB3A146D01AFCDC37C5C75130F989E7C1F1F31791F70D8B35D1DC3C
+3DB46EA314E5458838A257922DBC4CBA33F461F5BC73329D3E13B92837EC44ED
+7F3D3C39A2A050C4E8259E28AF0EB4096DC7FDD1DE863707A3D083AC50CCA6D1
+FF443CE3550FD5659D2D0E033B598FB69CCA23EAFBE482C3A49AAE0DA9051E34
+4C54D38C70936F0D6F60CA6090F736206A634938B8B660035F709CF501B23202
+EF027A45A44B54E8093BA46C58035722B5AA09367D85163D6187182B7628699A
+65AC4F7FE6163D33891AE2C9B0BC48D54786022F6CE82A68F64ED214791F9F42
+8F63185B234A9A472A160016847D0AA7AE361F76B2FCF87069381A792FE25F96
+987D2EDFEE1CCBF728A296F6B2AA0B94412C86DC8C761D0021637430CB5B65C7
+0F6E10612A9588C53490311F9005E55140531A2DC6EBCEABE14153EB972AD87D
+E6DCFA5A120F737920723D5D0E0FC90981C6A20F15C474BD7692811D65371E14
+7FF9E4E83BD90B633DF4845C3E454902701CC99584070DFDABEAFBD63CBDC376
+E1A61ABD5BD4638DF46875B64A95A683D76826BEBA3DF023B8E02A3727913888
+27A7E4F5341C57A3E030BD30DE5E0367F526E458D5066F880CA212FC97936B5E
+DD8920F50BA9E2EF3EE40CB1AF4951451F609221FE31496F4B8D5AB0A183760D
+CA94E172CD43C89AFC0ED61C8AEDA5EB3F48D75DED23321F001D978BE990F845
+A65CE9EFF19D8233EC3C1299EA281DF42DF9D460BD4EFCFEAB3AEFAAE8F37710
+596F4D5EE6377EAEDAFD2F45D4E82D17D3B0B103369A5A3FFE0CB6B1C16C7900
+9A3E8F2D66C7A92830B52B72991D4FF1BC9451AF39715683BEA2AE589DA7B36E
+D7E2C1816E5EEA2D55F6D0B5A473955EE7994F9FC378BC9B6351FF544FD4CDD2
+DD82C28BF6395955A0FD15240C11E34F5908810878D20FFA6EED6A439FEF39A2
+BAE2F83028EB4435F2530472472DE7A6948A33E011480448AC33ED19F66CED04
+8F5AA37A9306AD0D88C8E7FE4020A2D67FE6A62FDD5E9318D73D07B6087923C9
+DFCB0B3CE208E6A7DEAD73722B23F15AE490D15D2522F7EC66D0722E46B80ACB
+569B92A57395B0D19660A0D088A2B24AE431C0BC9B5BDC8020CE3843F7B32889
+3156DCE594DFB427A5C3A40E9F8248692BED523E5DFE9D6E4C4B891654939726
+D405839D3FF3EC07A974BB362368AAEC863F16CADCBE46519E70D1710918B86D
+D87E543D488409C49E6E0F05A49781DEF6C172B18058A9E96AAD1530A6C6297D
+77EAFB8B18F0E69A82D20A7FBC5847373E5A8E46D6B3455C7FFE63F1C997DE19
+4C3CC1AFB6725E86AB97AC5E0BEA995BD44AFF61B7883E40C330BCAE435AADD8
+A49B8AE9CD125E3E217780DEDDABCC517F2DD78DA0D817201A383E721886C4AC
+D81E3A0BBF6E39D8E392500214D165B9819C075B670FB76C2813994256B34BD9
+153618DAB80BC8D99D2A19895FF9F53DC864663B634DCF778B7023C33F01DF25
+0F95E723BE18950718E5058B698B219492796717F6E7831B8D55E5186656D7D4
+E9B8D5FDEDA0A318927F7747AF248F80253A7A3B320236C5E742778E57B390BE
+5E1FC1A5BB9AFFA8A4C4726F2783F047810E49EB500B32851FFC4C72E5ADD0AE
+8E5968B01F17AE08B9544CB268AF812EA15C441F8987D29A8283779D46706358
+ACC3835A98D0F07C23D11F8B32EAC3E1426D3C22AC4EA922A3A674D4C5959F2E
+1FBB3D2427C32EB39CB5A9C1E495B42947D9FE2FAB232592E08D136A74A45746
+B133A9F359DC68695E4CF428355ECBA12A991296C96359A348EDB05D147415CC
+99B84FBE0DDA43F390FC4404D7367D7CCE51E9C235FEC491A0054558B10027CE
+47C756271A7EF774F91DB3DA07C2F031DB8015E398D673F72CB4C79A9A672708
+D39E586A2A6969CA39C90F012151E021881EA3C3035CBB8223243B8288A45B05
+621ADF5FF34A1B387B591F38C98E5933ECD3524036A07F6F329E134ED6CBCA71
+9FDFB814ED2F66E730C3DB1E76230E390230B077A8D8D066975F5E91B1558987
+28903B7892AA4F19B54393DAD3A625F3F0ED52BA5F23C43A405397ABDE9B6CFE
+39190A163C04484267A2FBD2B90EAD7A8C7DB5B29E5C13FB8917529B9F1AAB46
+C4DF27EED141A5815BAC5D70E9701D8C4655C0898362DADC70A952069FA3B5ED
+BE9968CEE7D38B81CFCF4E74F7891FFE748FAD669EE0773F315CFA89FFE5A09F
+97BC6A6FFDE4B780C81570C8CF21701B0246E7EC5947201F1F7109414CB278CA
+307B7BF2EB13D056574F163EC0127C96B4603FB5061075DCA7D11C738C05867E
+01879E8FE9685718435D86704D4AFFDAD373AF1B317CD20F87A03C55BAB6074A
+C777E0B442784CEEFB529F7FF26E5E86F615DD2FBFC96DDBBD37EBD79675F04D
+730B332BBD55D95CCD032869CFD7BEC33ECEB7430AA5E3ECA533374EC3575F75
+BC855705516C02461D3B76397C84850350E70134C6031D04DF033A617B60E486
+0B28E9658BBE8315FDB3B62E1E35531FB0F16D9A8170C4068396C81D7F233F18
+B97FF876FDDFEC39437551C8B8761869C1F0E24F75ADC9A0EF677BED74605554
+C7CADF4C9388B553B8B7BC679620D3EA01FC3192C79A1951991E85078B1611F7
+69440A06F53DB151F0E966E1ADCD477175A501DE17530006E8FFD0A993870428
+8A007CD31098E3161B49F62BF6914EB46A8192881FDA8B8F3D3A8567E2355450
+C802FA5B1A9149D4E34A7555A0ADE1AF915CAA0790590C361A08065F8174D9B4
+1B3D56A7F3175EF21B0AD4B1E56B868EB3DF47C6C704BEB62E00F1A6CEFBF596
+4F5E3FC0EFD9FBAC71DC1680BB9144934887989862F8BE5E62C7E3FEBA50DE86
+864658635FBC6470D11931B04121A543489710EF6BB1A93AF6BCFEA71159C39D
+5602F8C45627DE41DF98E459D7641994E5778950C3E6FAC91DA0E438EC2887E1
+4216A358A9E0A71F1C90A7248722F93AE22E683FF5423DB6AC192A9DE432A111
+979B231D4AF1D79916296EA450D6FC8867A9084945E8FCE2BDC131E5B980E7AE
+94252220DA9C3B2333E379DCBBE778B37F8D91D329BB7DC4C4BB94B5BA3D2132
+A5780CA68D491AEA70324681B4293DC0B7C1003FB2DE2B085DFF821333DCAAE7
+3C8B5A76CE44EE26000F352E8962F48FEC9B84A941244B41FE6E4DF0DD38F84F
+2424F598746DDAFDF33B68BFC9D4BE2066BCEDA34527363BEED8826F606F8C84
+FD5217258856BAD5AF74108A6021F996F096126D15603079B83BC9BCC46DB47A
+C2A40478AEADE987B588F48C7B9D1E7BCE31CC8AE784336B5AB5C0C3CA41C554
+B80B9E51D6756DBABADE2872EDECE9391548192C0B1960DB5618AC6BB6337293
+666742098DA2B0D09F448E34A4CE2F3DC431C9A7DD7DC0BB9FC13121810CCB00
+E9460CFBD6DE43534A5243B9F9765BC03C58201CD988B7F48D66C720B5FB4DB7
+553CAD5E76D100887FD2B0BD2A142D2526423E246A255ADA2C8531558F24CC47
+CB1629F89413EA964C8E27DC618F554196B336CAE001FD1DCB49FE997B866682
+2CBAD1EE015876823C4980E80321552BC4CCCD2B422F101509AFC8474183D869
+0EBB2FEB8D650307B27B9BF2695B20EB13C3512048EE3AC639A4D1FE362E1120
+5CEC6D9F1ECE60E4AACEF6671671E1265E16981B6C386339200F801BA1A6B403
+D549C9C0877498D2523B6550D97CAF25BC3F5D333CC816629F844767342BC15D
+6B9BA9EC34C57967FAF05A11ED11B54F36E11173BA4BC6870847D7BE9319896A
+7C7080FEA4F1AF6067ED835E3E7FAA9BFA1E7F551C3550FA7BB2A8CE6872B571
+D51C6E69A5A548583C81E0646D9E046AD268ABA23C36FC4CBB91BA0DB42F32E6
+B1B2CAFF9A5BCFB8B61C78EF9733C8F9D44867AA31414552D54893145743B09F
+47E9A2DB34C77E49657E3AB4CD2A240E2A51DE334571B63C550CFA69A0425213
+07F4CCBF9D87593B7E87BF8317B3440A4048115FCF7D279B37B5D752CB15C149
+B3F64B21805397EA537DF4E25B1938CF6E19FCFADD55A9E8546AA89F73910C4A
+6485D665DD590E5C93188F943DAB4D0885A4ADA75ECF09B53288CE8C11D62755
+6AA30BF573AE8312B2D4F1DBB96B35928E84B069AF6DCECECDD757FA0C7A4155
+54FD063C2B3B3998A7657DD3CA8CB6FC9FB9D34423EE45A9706C770C19801EA6
+6A625469C9DD65844D960BF366DA29AAE4A23537DA720F26AC8EB40F425A9922
+68807E387F29D0B14C8E4C6770CBA068B7A2A817FB0759D048E221CD4E893E05
+1FC6AF0E5C80C15E5BABD2463D723835FFB7085B39F37FBD628BFF0D60328846
+E81E0101C319BBBAC33E42289C0633A02EF817E2D47BDF979EB85A3037150695
+6DC908DDFDA1FA48BABBE0AED208E2EFFD1A29644715A8D9FC37014441805603
+1679E983541F84CFA488050177EB3C9DDAF61883CA8D73EFA27DA4D7C54BB72A
+D98F7976BBD937A65E7BBCA5EE5B151FB51F8AE2DEFCB6FB2A06DD582884E703
+D87C02C25D4BE407D1E8A6FDD7EB5687DE2D50CD816C4F51738F1BB027156AEE
+F366A2D1E6D5B04C176E4B210F3DEDAABF41E46D1AF3D4ED14D28FC2C6D9ED18
+598F8F0B3DA0CB222BB5BD4132C41398B09BABE1E7C1B340B18222D24B223D2A
+7E3497E6C5A04A44E6CE0544C2E58CC25E5BE03EFBCC2EAB715599DE67CB30C8
+9AC70AAF2F7DBB2C4C4F1BB1807E3FD6E9941E5E034A6E9990B33A93B75774D7
+561A7B2700F65EDCCD0205B629A28DE0E906514FCCBD4A9B3956A44BC5EDBFAC
+179A9482B19BF2E588FE078A253EAA7585DBD88FDAB460E8B604949332384240
+06FBC4E3F3D864ADAB4BF3C8C467A878D2A1E1F1EFE181D5E298AFE1E9AE435A
+3EDF041F1F247A11590FF8F2C1B85B41A57F01084DDF16191A34391B8F244667
+8B4D4C3D5A9788267AEF6894CB77918ABB10AD45BAF2AE8669319A80125F294E
+25A8D903271DA46DAF0BB71DB6D896F35C74F0CB80FEBB7EA099F1E71EF35573
+EDF070BB94EEDCF01867350518B70F1E4D612D5FCC9EC8596974A693D49D209A
+5D26DE6EFDB6B39A1881FE7858DFC613E36B052AFB225DB9BC15BA76D406F4D5
+D12A2AEBF71069B6FA8F96658E5D121D946D2F79F05C9DA26CF3DF2B4262BF0E
+5A0F1074738CB7DB7E5F56101B707FBAAE318A39EE24475DDF186F01A748F205
+85918A9E29FDA404F873913643889B882740B20B80707389A523FC698457F14E
+2FFE82AE89042BEA5CC5E014E6D0410FAA2E83C4A692251CC399580B7EA2E1C2
+41868175FDCE450A5EF51BB57B6C5238E96B4B8FEC854782F7A4322469A09686
+6302AC0D11EC1DDD2E0BA72BF1977D0F4B49134963F7F3A41D074E61566D06E4
+D3B4EDFB808DD2A979E4F16ED7631FE6A051D28F6F4BECFE8EC60240CBD1FFC5
+4AF19CE504B3DA4BCC802A47671B5A6EFCC22783CD13D85A411AE3A021ED37D7
+5FDE87770AF10E3ADEA876F9CAB887373C488B863EDE31D38DD9708CAF3FF3C1
+63D882E73360D440EFA1A2C02013AD0EC7A2A2BB29D4BEB61E34AD26B88931E4
+788B6FD865D6EC6DB97C918CE09744AF7940DB923569BA0777F43639AF72BFE1
+30A4C01FE8CC35D380820C1E6F4899016B4C779D9A6260B6B61603321E116FFB
+3D7D9977A243C5FCDA9DD7D1D682727CE773CCB7750E1D365099CE1715F68F0A
+098DA3902B44B34699200455B297329167B978D47F4614EAC52C3B4500728778
+139E66D00AB9A9F6CBDE7CD9C1346E54173915D657096A9C4530685750618096
+460D43764DC32AD9DF85943DDFCD8C265FF6B8A1155DF15533976A542F6230F5
+4EFE6CC9DB639A579A6287305863FD45ADC613EDC989D3072FAFD8BD9BD5D84B
+D3F5CD091A12684E77DA4DDABBEF0EB6C1005B45BE601FE8FC97030C74C5D37B
+32AC20087E9FD4249C3B9B395B01C11C02E7F1A2D01BE2A2B6697952F9B3D3DC
+D14B3373AA6B0AD3FD455F277EE7A4E5A614FA140A01C504360FCB4CCD8F0CC9
+4F122141FCC9357CA28D4DF7EB27E7B74A61681C0F52B3E335F1E36022822E0C
+579B45A541E178B261E82247386427896A111B86CC2E90964374920E2D4B0406
+5354E982BA27D9875D57ADF5127681DF2D3B9FF7D941F3FDE2899906D3EA8076
+6B61F1C5D28E87AB6E469A84E0EA890E
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMR6
+%!PS-AdobeFont-1.1: CMR6 1.0
+%%CreationDate: 1991 Aug 20 16:39:02
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights 
Reserved) readonly def
+/FullName (CMR6) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR6 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-20 -250 1193 750}readonly def
+/UniqueID 5000789 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
+68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
+3645B82392D5CAE11A7CB49D7E2E82DCD485CBA17D1AFFF95F4224CF7ECEE45C
+BFB7C8C77C22A01C345078D28D3ECBF804CDC2FE5025FA0D05CCC5EFC0C4F87E
+CBED13DDDF8F34E404F471C6DD2E43331D73E89BBC71E7BF889F6293793FEF5A
+C9DD3792F032E37A364C70914843F7AA314413D022AE3238730B420A7E9D0CF5
+D0E24F501451F9CDECE10AF7E14FF15C4F12F3FCA47DD9CD3C7AEA8D1551017D
+23131C09ED104C052054520268A4FA3C6338BA6CF14C3DE3BAF2EA35296EE3D8
+D6496277E11DFF6076FE64C8A8C3419FA774473D63223FFA41CBAE609C3D976B
+93DFB4079ADC7C4EF07303F93808DDA9F651F61BCCF79555059A44CBAF84A711
+6D98083CEF58230D54AD486C74C4A257FC703ACF918219D0A597A5F680B606E4
+EF94ADF8BF91A5096A806DB64EC96636A98397D22A74932EB7346A9C4B5EE953
+CB3C80AA634BFC28AA938C704BDA8DC4D13551CCFE2B2784BE8BF54502EBA9AF
+D49B79237B9C56310550BC30E9108BB06EAC755D6AA4E688EFE2A0AAB17F20FE
+00CD0BFF1B9CB6BDA0FA3A29A3117388B6686657A150CE6421FD5D420F4F7FB5
+B0DAA1BA19D638676E9CF159AC7325EF17B9F74E082BEF75E10A31C7011C0FFA
+99B797CE549B5C45238DD0FADD6B99D233AC69282DF0D91EA2DBD08CE0083904
+A6D968D5AE3BD159D01BDFF42D16111BC0A517C66B43972080D9DD4F3B9AE7FB
+11B035CE715C1218B2D779761D8D7E9DEBE277531BD58F313EBD27E33BEF9DC5
+50C7821A8BBC3B9FDF899D7EAA0B94493B97AFEAC503EB5ED7A7AB6D9A929A8D
+D186043A1A15F89EDE60FC17A136907ED2A1F8A538DFABC863DA3AE06FE15AA6
+C0957AB448B27734124D849C08EDF1FB565B0F939B3062EFA13AD657F147671C
+F05A2BECC69DD1FA903D10945AC93C49E001031A2824A6542DA4412F8D0829D3
+D1F8F66FA8370E0D97EBD9D91CFA51E322EB5C7172F81FE7F7CD1D917A8366AD
+83779ABF0BD9EC621E258C2705B46123F7EF26500A6A9056DF27ED58080D5E88
+DF972A7A140C6603C293DCBBAD2B14ECC943158A9A2D8E96207775CF61184FF4
+C5D3E49CAD9FB4F596D85D528DD5FB878F9D16F65A32DFBCC797E8733920D73F
+EA5987223E2C8EFB75F928FEBB017454926D4902FF9FBBA4B7D5F265BED6E2EC
+7431B21BA645FE3DFAF756264AB731E360258B92FC629A984A10148952CEBCB6
+AC14569E12474292857F3CDD821F88687A81461BB0A92BE48857CF7EF59F092C
+96246EC073C3639395326F0E333ED281B11D380CCEF63F763F5CAFDC233E294E
+52EF22116BB191277A6D2F341CC3D1F09385FA8083C173BB55029B3B9C78A4E1
+C395B8659BF06B021FE03CD71A5C28E833569FD90DFC10ED409C833740C5E060
+03E8ED41F7AC3AF8B12A607E55EA87348A5B88579F1ECF97275E95052F886F94
+53BB7A4F7F75D6258C2728A5C61E6559D8E191BC3B885C6AB3D3E0737C1A1C1D
+EA66053BDA8525541740E8772992CA315831416FC7947437FE639F660294A7D6
+05A745165ABF3AD3BCC6D4CB445BDBF08822B990BDE43E44285FB43B9B48DF0F
+0636C9B1963D1B2600E5E7A5A4EE9810864FEED2F83B0631F973970E72517A82
+FC34114DAFF007FDC73ABAF3AB42849AAC8DA1275D728B09ADA14F413FDFBD2B
+D8ED064722B6BE623B813CF39E3CD4677CF0226C3DBF6053357D10DABCA26610
+E4FEB1BD22CB443800C9FCA0F36C77F51D479CB69862EE643DB2A6D20128D609
+6327438A9E8F3FFDA9B15258F8B494770C951924ACA83D7850AFAC732DC03399
+679593C5EB0815D94F72634B724963570C571CB409C3FAF8C630E3B58CE9DC6C
+990CEEE4273F1CC0136A6353526C57AE2002FB137206CF4299EE7F63E72DDEB3
+0DB9BFB366A628F1F0A1862D4EBD99989C2E4E50A169A84710EA6FD4FDA051B6
+ADB9724FF0111394723B537F108768465B4FCEE65ED85ACCA215A2BCFBA65B60
+E385A1BA21EAC6248CAD75EA17162AC10B0348142EA11F9D618480591BDDC25E
+1E8FD992B19977907361764F838D04221D66F9C925D2AD2CC228F4FA3B4C0962
+EF05A8CC318BA25E623504E8ADA0094A6048C96120DA110C0850BDEC57A16039
+822BDFDC953AC78D575F70B4BCBA42F7F7FE0CF128763BB0DC0CEA857989410A
+216A02BDDF9CD8EABF0159CC2758F8E5072373B0099462D8B3BD43739F8A0972
+F5487D1FEC5970A2B702AC02FD42D1A32F1617C9FCD36C9014DE54BDD6DED73D
+93F4E9DAB5904700DC78C633A8F69BD0DF254AA34BF55205B933091D3EC248F0
+C6D3103B748976A171E29CB87E5980A32DEB19A567EBD3616E86F44E6D87CF7B
+37AD78B0CDFAA02607573E33F63AA94FE85A7B32D82DDC2641E0E9FCE2B4A794
+B32431350B1EFDB652B7811D26EEB266DFF9251DD3D12337B14148D2036F1800
+2246DB26EE838AA71326FEE65579A965A36622D872E1848D772A9CB72727E525
+3755A85AC961920595AADD9A9BD4749FC7AFBE840E37A7DBE7FE2042646478EF
+684B7BD8E733349CE01E8032B7A00D1FF8884CAB0EC9B2188BA07F069B4309AC
+886EE0611A2DA0E25237AFA086F35051EE96FAFD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMR7
+%!PS-AdobeFont-1.1: CMR7 1.0
+%%CreationDate: 1991 Aug 20 16:39:21
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights 
Reserved) readonly def
+/FullName (CMR7) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR7 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-27 -250 1122 750}readonly def
+/UniqueID 5000790 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF5B8CABB9FFC6CC3F1E9AE32F234EB60FE7D
+E34995B1ACFF52428EA20C8ED4FD73E3935CEBD40E0EAD70C0887A451E1B1AC8
+47AEDE4191CCDB8B61345FD070FD30C4F375D8418DDD454729A251B3F61DAE7C
+8882384282FDD6102AE8EEFEDE6447576AFA181F27A48216A9CAD730561469E4
+78B286F22328F2AE84EF183DE4119C402771A249AAC1FA5435690A28D1B47486
+1060C8000D3FE1BF45133CF847A24B4F8464A63CEA01EC84AA22FD005E74847E
+01426B6890951A7DD1F50A5F3285E1F958F11FC7F00EE26FEE7C63998EA1328B
+C9841C57C80946D2C2FC81346249A664ECFB08A2CE075036CEA7359FCA1E90C0
+F686C3BB27EEFA45D548F7BD074CE60E626A4F83C69FE93A5324133A78362F30
+8E8DCC80DD0C49E137CDC9AC08BAE39282E26A7A4D8C159B95F227BDA2A281AF
+A9DAEBF31F504380B20812A211CF9FEB112EC29A3FB3BD3E81809FC6293487A7
+455EB3B879D2B4BD46942BB1243896264722CB59146C3F65BD59B96A74B12BB2
+9A1354AF174932210C6E19FE584B1B14C00E746089CBB17E68845D7B3EA05105
+EEE461E3697FCF835CBE6D46C75523478E766832751CF6D96EC338BDAD57D53B
+52F5340FAC9FE0456AD13101824234B262AC0CABA43B62EBDA39795BAE6CFE97
+563A50AAE1F195888739F2676086A9811E5C9A4A7E0BF34F3E25568930ADF80F
+0BDDAC3B634AD4BA6A59720EA4749236CF0F79ABA4716C340F98517F6F06D9AB
+7ED8F46FC1868B5F3D3678DF71AA772CF1F7DD222C6BF19D8EF0CFB7A76FC6D1
+0AD323C176134907AB375F20CFCD667AB094E2C7CB2179C4283329C9E435E7A4
+1E042AD0BAA059B3F862236180B34D3FCED833472577BACD472A463E26637C66
+FAD3F83D6DF42D2272506260CB761DD59CB9AD24DE4A642D19C3AF997AA659B6
+8099E7D59BB44B111E1A932A8B579FD310191A56A0DB2CD18017C1366442F8DC
+EBA43FC3BD0DB552CA5251FCFE024E9A70E10BAFEEBFE0D2CF386448A9A80B11
+3F764B6481F3B4E93CAB7CFF2777A02A6FDF8B6055AAFF40437539D3A39A6829
+6981AC9443BF2E0F6FAD7C752E2176E6FC45B0E8DC832592C1945DFB758499D6
+229DCB9ACB6E60335DA76D7E1282CCA3885C0594820652D79BA578CA33A1D828
+4DFAB3F56394921DFD477C10748BB9E4DCF3279CC13D6ABA567E56B2EA89D929
+CB1CA27183C3CD093CF0161375F11A9F70EA649406A7FFC9BFA35FB89C203DB3
+7F3367F31BBEE814D47359332B3490ED4D04AA2E84D7BF1C93DA372B7A32C23A
+4BD98E14B474FB27AA66B42E0DA1ED9681B8C4A6B726A3DE686C99629981D466
+42E000942D3597C56AA438EA6F046E713A3EC3D181D156A57CD9C2A055891F1A
+C22DD4BD5D7921208D336CE5662646F4F8A6768E2ECA08E37E02D09BDB2F2077
+D1CB8839C299EEE9C953B7AEC052758C45B4CFA1A74755EA7FC80249EEACD4DC
+86B75B24ED43BF98618E370F26ACC6ADAA2D4F7F427517835DAEF5EE2ABD5A84
+57D0092DFDA0AFFEF903CDB34E7DB858479AA1FEBDE7F369461B6A24A9FA7142
+4030473DF089D64D93D4B8B2DFABD5FEEBB8875252F6E05D42D51179F9BF1408
+AE56525F82048991E87CE8CCF40EE635A4BA439EC68A3ED3529F746838CACCBF
+0B62334A2901889A7D741604E2B25325EA80B6AE34B98FC906ACCDF3D96F3060
+4B0DF7C5A23A46D05F8437C42B9F348B2EFC8C12B19711886EE6E52A7F6B4E98
+D55EAECAEF4931034BBD81A6E1BB8DD1AA2A9CBF1CBDB6241D3DBC2A81D84250
+34C268EC6F85852AAD8F8DF4EA70D04DAEB4972A242A71DFD71602744B0FB4A8
+9FDD759AECF668607F43F0EC0A2FBD07A0233177E4527FCD82FE807FA584D63A
+5971498C8247A0E02CA84D13D9E289BCFBDD929DC6722913616A5B0F9A3D0181
+F0C03BDB0B59EEF4E6D89489EA5B98E30C73F7183A279F743A02945D5739E85E
+78622F098E0A7D70454612C104A4294D9612D2E5DE37E8850774A2CDD9D91935
+804D771C7A75F86A3D691AF4891BD797445CE29E2CF45B12D60A7F9D51D6FFE2
+538C5F6A2A96F3B468F72A3914FE3E7A0F638C86D29785C75F4051FB8BF33019
+F97D86536A3F5DA81986BEA8CB6EA411C41BEB858CA709D000A3501A64C4EA55
+4FE551B75BA090065656B83D36AB2BBBF1E3631C9E3D86A0BD61184F50BB79B8
+DB217409D7F3D811BB52E6C59BAD723CCDDBB2C9A66834C225F1D5BF8D41DCB1
+9396418AEFC8737F1877DCF148A0217D17D3BA40893DB2E206326227973BB98A
+78B2F8EDB786049697FFE9616C8C6E76A939201B36DE3B6C6B575ACB8E684882
+D49F6EDC7651BD9CE3DC2A217770C45FD1E14699B0DFE4BACA749C4436C57FBE
+461C9872CD2F5CECE6991B68D2A27510701CE02C836AD642732F12DE734D8D01
+78A5621D85BE71ED5BF0538B96D648363C4400D3A85C9B2582EFD9C062EF299C
+DCC9EFEEE6D8A9940F15EBDA58393480154E8A4884DFB2BC1765F96BBC310159
+5ED53A2C2DFE653A292FD8F220DC933524CDCA81A736162BC9F8E858749A3BB4
+C6B309E72AAA1354C1B8176360DB77B10268FA583F47CDEFA4924546A8EE0B3A
+B9A26C480DCD7D8BDBB9AE955F211A5BEEBDB7CBAD33416D7B567E9AC6482EED
+D199A22CE0C4E16BE1F20CCC0B00362248F5740E9819D371BABABDCD011CFFEB
+E40E92EFDB89B3F3DB8BAAE326811F5928E60984DAD99B593BCAEF5F8FB9B841
+18229891C8F1C6B7565195ABB07B29B0635D3CAA602A3FC9C9C500E9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMR10
+%!PS-AdobeFont-1.1: CMR10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:52
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights 
Reserved) readonly def
+/FullName (CMR10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-251 -250 1009 969}readonly def
+/UniqueID 5000793 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4
+87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F
+D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0
+92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C
+295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75
+409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C
+4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF
+2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E
+0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E
+B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008
+24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B
+43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF
+D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575
+5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC
+96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3
+7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65
+0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830
+B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D
+AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007
+97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8
+FEF3D8C63B2F8B99FE0F73BA44B3CF15A613471EA3C7A1CD783D3EB41F4ACEE5
+20759B6A4C4466E2D80EF7C7866BAD06E5DF0434D2C607FC82C9EBD4D8902EE4
+0A7617C3AEACCB7CCE00319D0677AA6DB7E0250B51908F966977BD8C8D07FDBD
+F4D058444E7D7D91788DEA997CBE0545902E67194B7BA3CD0BF454FCA60B9A20
+3E6BB526D2D5B5321EE18DD2A0B15E53BCB8E3E01067B30ED2DD2CB9B06D3122
+A737435305D42DE9C6B614926BFD44DF10D14402EBEDFF0B144B1C9BD22D7379
+5262FEEAFE31C8A721C2D46AA00C10681BA9970D09F1EA4FA1566B96E221864A
+45A24ADAEC63F61C9FD18376D39E0FDDE3FB4FBCDD6A7B66068A99D31CF54CD7
+DF2262DA91CCC72889CAA62B1D6F2155CC8E940A2C35D8CD3EC75326188E2D30
+1090F31AB50F30AC77D2C445BAF7323389406C44641B3A72C26BCDA442504D03
+6C22A3BA1A69E5F87EA400501A3B3231E46F96AC3A6C0E4A4F6F21E0B2BEEF53
+E016F34D7003351FD12436520926C632218410359AF9FF167750D3CE0DAC3B91
+B310C457402E05C316F400246C8C38B98CC8030F71104BC4FA0505B5EFA4F5C5
+9E4FA27C3E790D698690336254D7E34451E692AE23BF5FFBACBDF33E25359BD2
+B0E7A0686602568BC87422F32486CB50776C7EAAE7F1BF78B228CA3254510653
+3D6368A4985C5FF5A48AEF16E1AB71D7CE2C6649F2CF4B2879D4FA042239B504
+F988D2FBE87C3BC784E55B8EE36F1BB5EF14FD5836CA448E139EF8FE221E827D
+0608A6B90E08CBF44A30669AF4E20CD5C0C8051E5F86062204AF362DA690B74C
+B952C9F4799FB2535E47AC019175950A1F3A0D0937016148222B545B1E00A91B
+39D2121462F51F736802C523BCFBA894EC11C3353F9BCDF0892C00EB583A4D62
+247118996064991B816F9F490FA73861FA614FEC7FC23A5D45310527B6559781
+F1C805F0EC931D0C60E70FD5AC55F22E6379D369303F63A0E7069237118DA0A6
+5BB55FC6EA1797BC51C1D053401ACD4E9B5E724F4AEB149C38DB0E2BFEE811A9
+A94A7405422CDC911CDD97EC4976E27F766A9E3F84387C04C6367509157E4D91
+09A1F6DDB59AB9096FC43A6F9773ED9CE3DA6B56D10AEF99FD277F8666E72028
+807AEC6C26E5A142496CD41A80EC051E875DF9F547BEF060B969B197AF97608B
+F7A3740B3153621A680DAEAB0454706C65581255CA9B40078FA6D352737F0165
+D834359ABCFDF5C212F8AE9FD50BEE9683E7D5969D183C058E8BDA78F61B61AC
+98746B3A1750093A40C17EBD4AEF36BB2DFA1C9AC2A12834DE4623CCC76BF5A7
+92B2B2E368D1DF3471D83495B19154836569D2A30F9CB05C0EC499EA5D3184CD
+BAE8D2A2CF80C6359275B3894B4DAD7F92501BA9A6BD215256CF9F35C2BDD40A
+D1D949000633FF0B5FC7674BBED71294AD28FF25710E968E85C3FE71046BF0C1
+71EF48F8024C28959FBE6E896BD1AFE579764616672C724959FD66C8398ABB5D
+6C02C5619866453708E3FDCAC2754E9C333C1123A5F746DC5B2CA9D430263645
+A88C743EBEF8C82DA0236FB73D3DCDFF874A1A5928406838A81E40F34816EBEA
+0D7A89406A6F492E5E5E6C8C4D85A2B9A83B6A4304B05AB541041AE014C845B4
+283CE3F75DA22CB7CD78C67A1F067C79B209BDBA6705D80FBF08CD0FEB9D3293
+D9955BF6730BD59495A1F81B708292B509537089D8AC34A06DAE5E8BBB9B0A0D
+F09BA6723DEA964F06C0E1A6541656470E251F5AFC6677043DE7C6D85B60D3EB
+B8A4415DBFDE3F29D5FAA0B5CE4BE9559595265FA8BC24A172FBAF9B1AD0A4E1
+1CADABC2B71A43098146DBFDF7E126069259EB490CAAB07D5C9CE17851C89DF5
+572CCA6C0BB6AB68134501204E2F42F12A5FBA5AF39B47CEFC12B69A96539F94
+33C51466006D0C920D65668958967054C281834D9C7655F2F6524386218ECC2A
+663FD92E0B7F7405B78EDCD58A9F3271BA25BFE20425BE8277E060439CC611EA
+7DFF650F64415B04FBE57214EE2B29B5CE8F92A993464BF54D9182B0EE8D7119
+809AB256DC872A482F0E60B0A19C6B37951739429C3A0530CF99435775F3F792
+94B73CF661AB4204C024F5F19006E9EEDF6017C6BE0394BB447F8234C99BBDDC
+2C2B5152E47DA5DE6755C163062053B41027582ED55DB7B07BF47CD5ADBB02B3
+9015D56435A66993565A41CAE6F0AB8759E5DAC216C22CDABBDCE5D4439BEE99
+3270FFDCE90B4549177EA0EBAE2C5A1E847AA817E02532B5D385D3B5A26C2B56
+DECDAF956D6D29A7DDB8354BDE4E48C2AB710EBDF5C625193F0ED160A40B49A0
+C9DAE7AEF51711C397619848A91B59BEFE41076A0E27BB683A1DCACB22E260AA
+3E86F800CBEBDC74D02DA003F0CAC365F884FB44B3973EA6DC4FF623FE085D43
+858127C8DD62D421859BA1F7916416C80E831836D3CF0B73EC2FA2FB22AA624B
+F3A710DE015119CF6EDAE22AF154541C5A587897D181AAA2175FF982BA7CE014
+4BCD82134B6A6A5660EF786A60B928525C5D88147DAB7EAA987F93E98BAE4818
+169293C7CADCB1DC7C9F07B479534802084F1731BB66E5EB7C110542CD6A3298
+DE36F3507C76C1ADD1AC1068DE972966A0251AFA805D875C451865BEF7CAB9AA
+CCC11E1FECCDF6A9123CE9C74A3FD7085D2983011A7802DA90949FA3BE5CEE54
+AB3331C80548C7466F159105E91F82975A6825D805567BECF797B837AC11E688
+6E6754DC135F6E4C282A60527A9C953B2E50F5075DD685A18098FE4F3D24B950
+1872172E32B5680789F7E59D484ACCEE8E99E45A817CE6A5CA9FAE944C09B476
+A5CD9D94B162E78AF508B60FAAFE7F3E0C8F7923084D1C4A67D3320F025C6E52
+BFC0032BEA5A3F76E76429EE2C793805420E30BE3A5C53840B78F5F38109CF9F
+99E43F466EFAF83C7152E41068DAFB33A323892D80BF6E90130EAC21AF7CBF4A
+EFE033EB416BB7517658E4B5BF4257290474C9CECB421F3F1BA6B80EF96BCBA0
+E0382B913A7FD88E458EB8BBF47539E828136AD3EA71646EFEC60C67F91E2727
+00368846A6416B2A1733E98724F27598E3D5897132BAF362F59817362F6CC968
+E9F3E9E308F7530B72FF543FB9010F4BB2F2515264DE8C31F4E00B62F9595118
+3B2C36AC6BDA716BD6D32FD96D42EC6D302738329A283465AEDA47E552E6AF69
+C84E3B2D73419809C4BD374A77BCFAEFFF9A5062249A354F9FB10893DB86CCCF
+200E466C296BCE3E3E5705414D9BBDA844C1BB3E006A79042825C4BDFB799EFF
+E3EF1B1E7A65CBD0A0A6372E59B5B7EE4A592824465AE2962A6B7369457A8E94
+0010EDB10AF373ED96B37A46BB89956DE7A19B23AD950CCE08CB45C85AE790A4
+E85A6F880EFB2BB7BF3E2E29B5E2A83232A1B8BDE671126C4B33575A60B5E747
+189D930005BC349F7D0B41825EAB6D3A589A76F2E8B243B926C727BBA1EF517A
+FD8DBE8C0A7CA001413225ACD0817849E26C410DEF3918C3BDB0DAE151A495C8
+14285ED6E31111ED9731C671E77C8F54F9464FFC2456F9567092ACF93AECFB8D
+3727837B8ED97903A6D41647019C67E2747BF2BF65B3D59CA88F51ED1DCDF6DC
+806E4A102B918A9DB827A7B66EC4C4EE3E5775C71D8510237C1497C45277F22C
+0DFA2881AD867FDE7BC39934F070C534F1280287BAB0FEEDDC6F8BCB318F7386
+1B376D22DE4B8B5F2E08920C97E4E6E8065EA223A9C359231871AA4CA20811F7
+8F49B500DB26FB2B550ECEAA706932846016F8EA7D9023B71773FA201111302D
+7634F88FB89AFA818AD7C787A2166E72DD905512437EAD930644E4BA72B30576
+71AF31BE577E7EC8B14F59276B18A134A78C03B677C554C06DCB7A208CE49425
+37C35D9D87AA3A7AB609E35F6E91C30152FD25C41BF9464CE4BA51A9AC615518
+2F36CA26ACAFA7E98A7AA00A47A5B6EDE065C5688952CA2EF7B09A15B19647EC
+E0544F55617714BDF5D9AEF7DBFAB78A586A68803D9844781E8A51D609F13568
+9F57F24318710B9C452365D50447226C82C5917EA8A64A2A89ABD7670E0D7E4A
+6D974C5E2B951A64D1DFFE5EE7A485A3AC53E912CC9C92105DB48CE130CEDCB9
+5821598180C98E391F9EC60B400CCA34458F1A373322D9A3B9E1E81BE06E866F
+9EC2178AB4ECDB59D93457073071D7E43E5FDFB0E062EAFDB97E8EC218ECEE68
+DD6D35AA1894825F1FEA6D81B7D23A44F8D08A19CB4BF0E18F4EA76763FB2A50
+64F7E5F07B5A876169DDBD8D650F3D4610722B2E07FEFC533F68819B53A8F438
+5A602C58C058771B3F8BC7F96AE43EFB3FCFDEF95A5CABFAE677AE8F9AD4A36A
+A6BA3F38BDD73400CD1EF3C4831A45E05B9E7B9231420B6D768B23A82E9A4EA2
+DBED14D6E50B7E01927E453EA6D8B30C78825AE4909553EC5BD882B4B035E6A2
+7CE1203A335617541EEA4695058A4E126787E22D5E1669714B969CC5AE84A31D
+9EDFCBBEAD06C9A7916BC53847011A6ADC275A6EC33270DCA0BA9BA932A23145
+BCACA63666478E0A7C5160FD93EBDA381ACA5C8F58F06B3702A0BBAA05DC4CCA
+D2C44EAC4C4D298E9E46CC571685D256C83BEE24E62DDD8E76536F3B3609424F
+F1171F1BF0AD0A58714CFAEAF6DE54191223D0ABA749C8101E5A16127D1D0DF4
+9406C8429E444A743F31B9330AD6EAD5F6F73520420EF459237BC0C66B260C1A
+187F137ACAF9F40BDBB989989E7AB8A1C3335E710B67C3500371A2E7C4AFAB4E
+1FB4DDC6A131072C5FD06791B2EEBE9373F4B3441D3AE98522EA2973A90FA3CC
+4B2AFE99D1C4C9EB7F5C1C47EE9E7DDC3C3B68F650B7C9E886FC26367DA426A8
+71B42B7C4755E0095D0532B46261900F7E8B329AD2EC68A68D4931A0E3BE16A0
+01485EAE7996A78EC4D4A6BDFE74110C2E02FF334F3CA7159ACA2B650675D5B1
+1EDE3B9E601458EB787F3AC4CEA4767B73B52A57CAD1EB70D6568261E9CBA12E
+384CC67E3994CACDD5C0D0F47D887F300F12F7D1FAC2B7CE1197FD00054C0EF1
+AF89DC26A1B1C2AF63021D0BFA7CB3047F656E91A19AE24EB43B040CF5E9F95E
+BA1795D67FBA2E546487A18CBAA7529C721774A8AFF7C100C14C297A9F384160
+A04776F76E2680D6943134C709F687F237F4CF6EF47163EB132B794E2FF20A82
+053F328D17079DF6CF32E9848FD66BC527C0E131E9D1FC97829F5A1CC8E83ACE
+EB69F29779E6307754F922406DC678D1D03B79332B37599691A631E870162E2B
+9E62E33B855E302CCC65BB63C9CF27020B37468C7D6D077A1B160965C068BD71
+82D9F8ABDD4774667E1E39E24B1A633A43366F4944DC8D2C11F7A02B8674BF00
+B23CCB21EAFFEA50D1480D1FDE0202A070AD2E26F3A3D4818C788AAB7504A31A
+0100373E671C092AF5DA9120697A02BC5117CEF9C99529BD7CE69638563C47DB
+F3F5C0D1CDA42F4B4022BA73D38D08D3D9EDF3974411853CB106A42250EE1B89
+F30FD8C198EE0B8853A94938D1F1EA49A01A29DF4223961176E652DF1B7386ED
+5FE67E6862B8C251D7099FA595BECA96ED987EFF9FEEAF458C9D8CC96E7950DB
+0C3953247246EBBBBDEC54FEEA94361D2A48989A505AA0FDFADC79EC04C21B7C
+30BC7447206D18803A805D761E118C4C00FA627E668C27BB2B8611F383B0C083
+EC2C893C321865A6F1A2A5D41FF784146869B32CB36B90F280A1DEA8C0AEB466
+E8E41E3644EFA86A570B35DBEE3D659DC218626E669EDC6356103E3E0278A698
+D922C30B1E17B1306D47EDF100839B607E38625E606DD8A69665CAD2DB0359BB
+114B563DC25B4435EE7B48EE13FF7279684799C77D173DAE3745C5B96EF36130
+FD4287E15F5AD3FC860450B626EEAE8A91C5DF4E0026A79DB29EEBC1CD6D7F9A
+6F5F1F7EF2D86A27C17C549F5AE2A70F37D875ABBF3DB9A887EDB9523640CC57
+8139F9D3E3D447C6AFAE0FDEBDBDB6B684AA0756BDBF7F6FE3F98A9B3762C633
+B402C3AE79AC1FAAA7153067493CCC75E36FB3E5712334BB97844CEB1A373CA5
+E8E3719FC1356C5EAD2DF0651BFA411DB07685E9DC0202D84D1F345DA2415EB9
+589641BE4AC38179B1A84235FFB9C027E9ACBD4F617B85C67200367EA46EFFC7
+D6DD98ACFAE40146DE5D6832ECC2D02E96296E02DE80413214A358F16BDB1C25
+6F36571B1EFD46B7C55FC027B5DB2D02BAFEC217C6F1ECDDFF93366158F0E61F
+E6BCA221296534EEDBE3C858CCD8D59F93FC6BEFD108C15E37171E39587084DF
+59DC1DA290D4DBD0CB60E6A679DD2343D9218C1C710227152D2E969C9E6F190E
+0BF9B0BC1E4869FE1E84F5D75F181A2741C1EA5BA1F60E0CCE48721A66949703
+6CE15B088831BC62F8036F41617C50A1AF95BD03BADCD06EDD21D2F7B4723B66
+33592393B74D2181FB85F43261B2A13E363EB1A7E6C659F7395DCB66C330A744
+F73D1E97B5C056220541984A964031D7EF095EEC10AD3A25760F90C6715AE72F
+EFA9305D5D9CD8DF6F40DADDB59817389B1B8230BCEB6C14A121BCA144561E33
+9D7A8A5524196C58669ED88E1D9045C92CBAAAACEBC1A811869214EC20B591B8
+65A23D369213762F23A57C62563D29107BCD2A5F5AC891A57C9ECD174407F42B
+1AFCED966981E52DB5C4A4C3F720B5F59F040E301CFB6A51AD65D525E6B5C87A
+35834D558A2060D04BF6E707B7911EEC1DF03083BBF0F9183F4C8CF77B4E8D02
+DA5EAF50FF0C488E9F79DFE5430EC8CD8A5F89296F0D821E493EEEB1FCEC24C9
+78B6F286AAE0E651F4C7DC9FEF119FA5BDED701E7BF810916EEBFB8C6B484E56
+8819F0844707AFF8DAF18C5D3D9B517F77CAAF2DA954513178956208D8C9DD61
+220354F7508D604ECC88ACD5EC8043289F2AE45CCD364EC4E166DD0EDEFA72AA
+CDB6296445F2990EC4960843CD578C7006022B95EC3DAB29952F77CF1BC8080F
+DF604B19F6EA7893DF55BF917942DF0A3BC0CD616DBC17086601BE682B684E5B
+D857526612AB7AD14FB568F14DC362ACB03B62C9088E086F65F35893DC6D6855
+7C182E47D8777123B791574EC9B21B84BBACFCE67C09260399506A647542D7FC
+13D6957AE5E5540EDC6426D593584FA88BCFEAD50D58BC8ED4CF2EC9A17C24E3
+116B461A5700489D4BF18E5E0EF65DE53B54717C214CD56136550C3A6234BBE3
+EC5E3E1419D85EACF258D99FC6E24C31DA6F295C37F67C60F67CADABC52E9DDD
+C551E89661D67615730BBB10FDBD1752CC3878432692ACFC21574672BD96B124
+14CED5145F7D900832BE52330E61DF52EA15E053108A216F05111E10362F3150
+CE2C71A1CFF3E180AC73656282F8131D04E7AC606A5D3DD7F73903F86A9C962C
+7E3757E021FFE13F500291B0BD7B125CC72F72AE812CEB518635DACE4526D8AF
+6F59F7E04BAB47EBBFC00DABC431C138C3AB431A5711E8300E642057C1B53406
+6AE834CF6E015BC7C1BDC5732A6FBD1FF9AEE433CB95EC2876E5C21088D6C9DA
+3B4B202A9DB29F39403EED0162A345C27D6394EAE12022FE7DBEDEC44B5C3DDA
+2AABFE9FC183E1444041A93D61FB32513CF0F9668F6BC1C0E70AF86825A2AF96
+9E3E81E1719E96B57444E668B3FA5C5752CB20E3939E4FD0FBF486335A106D06
+0B92D048462A276E06ABBA46C29BD8CC2DD2E5B1D9C1C5473A2EE9A07C4AB93F
+D6145C20E057B0E3676963F91506E04ED4F722A21E7E87FE3801EDAD2B538CBF
+C6F01C248A875EE5465FB6F18461D90A33EDDF809EB16F41ACD4E9A787FFAC7A
+B898E66ACE4EBD13D4A0EA1900960BE198353E0DB4E4B487CAB3C97CEC4D4F47
+CA30F76BA036EA388F755A6DEEE83B44562ABDBE5A5CEED2F89C9242DD3C940A
+61AB21E66AB7467EACB4B6DEDDC793511902B452B5F61E1E6D808E29C908B747
+7AB4694A4CC0F9F47E00507578B436523E11398E7B55CFE51C6A8364F301D487
+470CFD00A8A47B31D50106E49677E9D87956D906601F0E289520E0FDE9E499CC
+89FBE94A5E688FF50CF7B2387E08C46FD5B8E8FC96B137FEB9FC5DCE08723D40
+06E4A53E208FAEBE3888F0F93D2A644C06CFB89FB5B2395B49BB9A4EC70831AA
+05C293689F11F077E05E6F0A8E461DF9FBB71A9355D720C8C1373D3B3153DC00
+410A637D79C7CF4BA752EDCCD261E31014E6F547CC2868714AD2DE3C31E89617
+23A588D89ED8EE5C659988273E41719B1DDC0D11EA1D3C726AEF7AA29A34951A
+9D45D317D2746301CD942D37D2876ADA6E12F86D1AA6B4DB8F2B2EF325AD1F38
+82858F588D2DF81D22826A537BF910A7C16D5FB515246F6C0D040EA4102693D8
+A87A3C0B8583F860B95D9B9C79093829CF6203487F60E5D72D5E82434EEDA725
+AC16C090B8BB9294D3E393903338B25B1D62BABC34FFB10F4BF2D5E82F60AD08
+72DD274414A257221EF9F5C5A8E8DDEE14836700258DB7D13A12DCD0DD021BC6
+589799D67D959AC31F00CB99170D2DCCBF8160A51EBB2CD2BA029E848932BBE2
+B9423EC5BA33DFB0A3C67CFB4D797D2C8122FBF2C7EA01EC2C399C6CE040E3F4
+0BB6F2D2F03C930204B6567A65CD0C60AC6A732E50EE667BC8260F1C361A13EC
+2B136537DD3896FB79DD38618F3131C921BC9BDD7E614BDF54C1FAD91BDC4679
+7C5E029F2BDDFF742C814C412654050AA927369C8728CBFAC36FE8F13BA49E1D
+A0122018BF04D21DA0D52634B0B899B95FCD1DE6D30CD187FADF6751886A61D9
+101426CC72A376E06BA803534C9A13DC1C307C050950FBBABB74E47F031C61AB
+4FBCF8342C2BFA693BA2FF69E019AFA66A1C0C32DA0D3EED025BFE2F7ED95B81
+C8252D16F395F22E8755FEA6F4538A5CF02446E50D70D56443CF211CC81E26C6
+8C39D2FCCCA77D5F3F9ABA64A65951DDE22B5EF4B4496F921DD0FFB057A48639
+784D16F9248C86F267ED2AD0CE266320877F62BC81BE7C9BCAEC9E1584F94D36
+F1ADA9AC0411D5274CBD0C442AAFC80BB2DDB74CFEEE05236E06813FFEE32223
+7ECC65E13350B557EDDEA13585EBE55DC13183F5E99436E7DAD73CBAFB4CFB64
+B5BE7831D843596C3D4253F857329AA4AB04CDB89B105BC802472922FAAB7F15
+DA1E0B69880562E14FEBBBEA4DA6BBFA0651228596F9B8FC9F58D4581AE2602D
+05A865808D8A4589E7F1AF367B005A6DD91D729B5AFCA23E62D0DC90F3D6A1D8
+48C9168C60CA6C56F2F5DD26C1F5D684C2BE9B99C6B6CF2CA3299169F89F7C6A
+69751C92BABCF3EF4FDEDBC054DEFE206736309E9B389C6076545224A42E7ACA
+A11DE0ED03455BC7BA39C03D85551CF55555FFDACB028B0D4BF14D623A73D1DF
+3F586BCF7B5055289EE607C749EA6D4A9395346EDAE9A4E9217DCCA5E68ABCF7
+C3A056DE823247A1558564B77C32260E6F7E0B3AADBBD96C34C3198B49F2A153
+C01CEAAB7CF15BE284B73FD0A96E1F95FDABA3EF350CB517B32352A8E0A25563
+73FC2ED666350CB611424297FFD478546B8F7FF61EC59FE1CFC6FA55A4B3B826
+E8AA4C3304AF466CB20167C94DA8BD705572B76D23AFF04AB385FEB64B59C2A5
+8BA8C060E27C100E644DE834A7473A54924719BE73BB8A9E75E3C9E3B81B0D35
+30A87D83F62BE30440FFB54713CA7A0BE7E88EB555C1F3AA39C089A3BEA298D9
+346AEBCB2DD30D7BD35AB683816FF2EA42F4D43120364CCC51D1EDA5ED096E64
+D727DA194FCBC594D84CD31DBBD05FA91A96718B111E5D33F52D946A6173E661
+CFFE5A419A3924AFDC74923CD358FE3B3918CFA198DC5BF8F062FB77F64EEA2F
+4986FC5CFE6601C337D095024559823097737BCA52E916A4AC18D8717C5C71CF
+EEDEB3DE27EA888639BBC39605B69FEB4457E1D5580F4E30F91917FFD44C25E1
+C1B6972076CD9D585CE0F96C45D30A95857F2CDD7F5FE98C22485B63398967A2
+9678FE1BD298C81CB1989865C7F82EF201A1DCD210E8A8666B145A05F03A127A
+3C7B16E3EC52E1FAF83620361B4AD4F067F0141AFDAD6074E2C68922DF475B7C
+5BE99C01B7A1AE6E7A791A0BA23CA6A33752FC7DC462DE924A4FBB1AE9DE30E3
+F1CEBE20AC478212E258464DE54EC1E0EA48E2D7C76E62CAFA6492F0CBA72411
+1B7E34006BAAAAF8385F3B5F20E4D071792382DBC39C74E3F3BF8DA11CDD15A1
+190EBB2B0F22F0BBE85AFC7F26CA83B344D8AB7CFCB87A395A0D92EF966B756B
+63EFC17B18E8653F994BC68F659878A200B5DAF31E4195F7CB8F1B1A1A079FAD
+212BA2087367D148ADA13B3564960B24FBA16892385C654722C697187C12CC33
+3B21306D63CAB253A4E737FD993EE6C7CF5230F8071112C4054CE4D957A3104D
+CA46EB332C241786B26CC45919C8260665656ED01B59D2C38200DA5781462467
+958E91F8AE462F8AE6325A073F92EF306F2430799877603F5FE849D4A992C9DF
+ACE5B7B4D6A6B1B19D043688A22E866FFC0D775BD1585B32CD9EBDA38E35608B
+1981FDCB099623FFED826C52F51AE910839B71F7ECB1FC31524D386C5E7C63B3
+9307A957690434656D818845961A20A0F30E0961ABBEE7776E2CD8E7DF26F0CF
+C25819F9E36E1CF6EE12B266A9D61EFC899233D71A86CF17B636AE55C32B09DA
+989765539CF7A9B3A54674C7A7A8676AADFFA27D1B63A6C4523F230E0F25E15E
+A0EDD901AEF7B01851CF789D9EA15216D669B66CE75BA0DA4A669E50E36C0FEB
+1B0D1E67472ADC245E19294754306483CC4D5EE7942A3FDDA06E259BBD6B668A
+C1BB439851A310EC53950EDEB58C4A2191EBA0641A680927D40C9A2C1EF90C28
+DB10E8A813E2205528D32806B94892324E79244768ADEB93472CDA73D9C6AA01
+48B9CBDDB6327AF19101E6AEA401B486EDD74D5F15DA7BA6499FD35157A9D826
+28127D16F1468944D3C0990DD6A1D7AA01B4A08B9AD211DA05CC91E20B13FB19
+8B382AEF3ECB6842A1DA36CF19895A0F436A828FE6F9E086AFAC59799D44E2C5
+0BB0FFF40E57EBB65B8AE3D40069F4B4BD7087A2345A3EE81FFE4597BB0A6CE5
+BF6F7A3AC8A791D85DAC3BB70C9ECF94479CFA501C68EF346391934C5DBD2C09
+C021A4F9EDD7CA78BEB91B34460C0686ED9D1B9D15EB07E2EE9DD55F964A61A0
+9FD9D4FD928C59F5401727E0EFA45566C1D73AE815E5541EAEE59FEEBE3637A8
+C5803CBBC37828136231B1E7583E2C780FDAA747F329BA0CFD5033AD0019EE24
+95BC522121E59EC013C75EA082225A094D89C7FF915C05FB0B436A4E7B70C035
+17A78F2B4B308B7841E25E5C7CFB99F3AAE58FBD9D5AEDDF3FC219CCA4D6FB6D
+962C0BC9566153291395954B637224A2A1593C9FD2138B4A530F078C2866E863
+4B4B3365FD75EEEB935737A54E998CFEA8128375E405F6F389418DC7F0B504B3
+ED0198251EC80DDC52A3F9BB8AACB3ED4B51093B8E62CD3BBA8CDD39F4D4EABA
+C31FB3991D024E898182381631FE87B2E8ED46B19F95DB31042EA0E5149C543E
+90C02CCBDF62E901B0B798694152873DC6668B59F3FB3BE97D9FDD12763FA1AD
+EE86055F986E5CAF39AF4AB92AC5E95A9578F76E0B191F1BB0C56F1E879BE45F
+BC1B7BDF3E0D9447467027B00393EBA97D191D343E6CF3877A37AF53126A9192
+BB5E42A095DB6964CD1F6C2101CCC59316672A2AF080CDAF1934B17EBA7CC765
+96CF22B85FCAC9261ECF876B129AF108911B4275BCAAE901B0095EDFEACC3449
+CD0EBCE7D4E4C552705A7D01B4879B7F49DC483B4BA26814EF2C9FB6474F55CD
+8AB90BA29F12D9BFADBA586A184FA7F6CB0358E7D622CEB128575DE463451EB7
+215D1C822584B8B542E8D0DD34986129C07E70115E21BA7DAD879FF07E298DE4
+0A7D1A28B2C787B12FBDFED5FB50AAC2D9BCD67926148CDA531EE281F38EDF6A
+E6CC4DDC6B96FA556961F3BC8E4A02EB2285E7CA7DF0FF6A274A78192B1EF820
+A1D15F17DA4983555A5F75E0D26D223876BB2ACBF58F71F18C76DAE1584DBD05
+D3CBE86433CB65FCCE32E6C6BFB9B75E60568D982FA7CE0B9B7FD93A3CC37E80
+C84E1D27B63CA6E28E448FC98D6686F6ED70E91050AB5047DB8B1C4473DF1D56
+F5DE7F4F6F1E9D5C88F74483CAB700608EA88664B75ABF182D76CDA3F958F659
+0D061606DCA82D1EC10063741CC132FA13835B43B1295079829D399EBEC46D10
+43B69C6A0E4052137131FF4350928498AA5FEE97403652CF3ED4069F53CDD195
+C1857381FEBAE8E5D14354BC469893D5431A94D2292C1613E5E84892CB94DD9E
+BE4197C709A8250FBD21687D6F18DDDE8E1E5ACBDD9A0B6C80BE504BB72C668E
+2A707F9063F7735A5CE89E564E5819A95388F1AE4E6729D1E23C0FC8A54B7D1E
+A8B94E178C0B7FECE0CF8AD2027A357C7B39D53A59359A2CA52F9E79B8B88F81
+AB0B29B5253D7E83C1490E355EFDAF509E9ED848A0BBE70F1E478F4806EDD06D
+D07F3FF71CFD68FA2D94762AEBEC789C5B4B3969CAE0DA4B80EC8BC4D49CDDCA
+71E94861B8FDB67729865208F0B265605181EDBBC6F206F646D6FF03A6C09DAF
+A8FE5F8AA063593A7DC14AF7815E12A732F735D7C13CEBFB82CD9A6E909E8EBD
+5FF8171B50B3965F082A48A8B522BF114A24D49CD32CDBEED36F0B02ED5AC0B2
+36993E916F8C67409F55B0A26BD2F1ECC5F2325007954A426AA581F30FD87D76
+CBDF59DA235328B26B09857244B0AAE4AF7F81979EF8370093D89D3593A29E67
+7BC08278CB7BF8331E18A0FF46317A8081481952BF165950809ACA3A6607F0D2
+B096DA590A10C0B4A91115F58EF0B7C771C8BF16D9376F9E9B9735D9C0831A5E
+D836687B4E0E830D43D6FFBD43A43C4A1B70C0028CE95D9E64E5421ED03AD60E
+99793476D06F3A44D79AC930981818586C279F62D37FD42456862268DDA6138E
+BB9308D998A2FC88A9B1E461BC65026CDA0E941D375E37E13C8B165EF29754C6
+12F914E3D3A1348A9B956F0B518EB34EC6388D81AB8EC996151FC2C3B8E497CC
+5028CF38DB471E584F8F150E88815A466BFE818FD43D52CAE459299996D1A670
+3B29CA9B6CADA7B7C596A61DC733E5E8FADA0921CA0D078737E660DF20EB2844
+B9C33C854D9887E60B951D198AD9ED1EB42F7124609E86555C3A3831C5813FDE
+3233B25B93B09B33F30D603CB76E6F41E448043FACBFF2BEB756EC8904909C51
+FE339667DAA919E2137A05CF47CD688309489B533B0932EE7033DBEE9E89ED6D
+B01B65D2FF6B79EA139BF29E43AA4171AEC3E02D664A79BB4B35BADCDEF566D1
+7C9556E49F662EB58509E9D97598B7702421321E9112530EEE09DC422E5D67EC
+9F66CD538954A0B9EEBF2CD10B0BEDA587E1CAA11DB457222B389AB8ACC7B584
+05B933776CF85DBB84337BF933343619FDC86DED5497AECE5505273A64F6CC39
+37A3364A93E3FC926A6255DE5268230C39106F8F94FAA95C36955BC90ED34AD1
+8CF7234AE05A66A6084F3B638D95AC3340D7A74E0E9897C68B77A8D93C75A676
+350EEF8A8ACFBDD49E3F1C55CBA7F67BD11A9302B5813DF2FC2FA3BF575B37DF
+C5EF80CCAEAA343FA95349ACAAE3A6EA9B59B9991347BF5614899D527E28E246
+47157FBB14D8BC6C41F3B654AC99C0B330ABBACA588D22D50EE9569E46A6E234
+3CA379817DFAE1F028FE5412E55CEE1EE1E15B67AD8752EB1114243F4A06EA28
+9D5C8BFEDAEF268EB14588C08700BECA1FB875C57F625AB918940FA8FB94A051
+334A6589BE80E2A87C95A5BC152FEBFF7BB953622E84172205C279537563222C
+7E4B19D7112B0969222A1746C8DEFCF6B617363F8C72734DD57E0F22DB9F9395
+212601C1FC6C20A4695B5EB81691526E235D2AFB5F624B775BA75D1D60F43A9C
+961D8C71699B4E57564AE53A57F36C36396C46A1EE24F70DCDEDA619F424A16A
+47908B0D7EE77B07E922E04833A1121828CF7C09D5616A93A29EE5A18D22202F
+053970DAB4B50D4C7F25888B7ED74CAD6962671AA4E71139BA3E079554A9A613
+D2AC04609A2D447962EEE7C4C78C4E0466D93E23E98904DB01A3A891FF3BB877
+CCDED5F0806069790A8A3106E185D87A521A3B464864FFF911978ABED276D464
+E4994691A02931E25B169B8CCA93DB1B92638CAFC1D1289C1C6781F7EEA4FCE5
+057F93DA6DFE98B46E32F92FC4F2AE46AE2BF31DB7FAD1001070CD628D925FBB
+47F92E728D4FD4E2044D1EDEB622218107678326593E5868019AAA866632A857
+0C8AD45C31B9EF8D9725FCEA640EB7109D4AEF50100D4EC40450F7BE5D1F7E9F
+EC5860EE0155F624B1AE37C94FA5D59DD036970A0635283F5E52A9627685A5B2
+82EF5AFA036794FD5C6398133EEB01D2AB6B0F74CE39D91841E4F995F8E91EC2
+79E618A93E09C880DC85BF838AFDA6FF5FEBC215EAA0F219B1F0567865EDB66D
+616F4A1CE93EC30FFD55955B86507D764D0C92734BF59CD4635F606117F5A114
+57E0DA619D283955453F57BFB195E607D4DC130BFADD986B8E31FA6A4051CF1E
+AE72A59CC89E6DB66F20B8011FF06BBC221CCCAA7A65135BD22F56C92D650469
+36B25A56004FC0359D204B1F2250B3068560BB88DFB57A2A40B84BB992173C05
+316566C8878CFCBD33FAC8791C094941D80AD7694AC49BCD13CCED7873FD11C1
+C0100DD30C00216A671FE4E1B57A422597E93594CF14DF7C1D984BA6B2B17FED
+F896D06F1713391B35F4ADC35EEC0EF329930A0DAB2A6B9051B8F80CADD84CC5
+D3CAC6FEDAA9C375776493ABC66E664EBCB74CA46784BEFF43EDCDE17B9A1D16
+82F1A44B1F09E39699B0CF630F934FF5D4C117631F53BA68F0199A97AE9D1EA2
+3E6451A57DB3EBD60C74DF45C36EFA1FEA3970D34B2B624434787801111D9003
+25BA207908A2219A0B3AC5228DFF310977422DF28F29BCB804A8ACE3DD4655C9
+6477696B58D080819A2A9EEF68A4371874EA10CFB05A6F40A6C8BEA90CE8AE99
+F624785DD9C968A8A5342A08F57CDE8491A7CFB8A733568F06A8A630C5D7177F
+3945F49CEEF21283572C6960FC25B0AD9BAD7B0888B98C8E2F8C5030C53D3B35
+BF5E77543E0198BCB139CBFDD3EFE2EA1D7C5A8B9D788C679EF8201A6FEAC57F
+6AECE25AE5A9A8EC31D99BCA363E8E3AC52D900FD3C79CF2D89B41412FEAE24A
+3F0D1FB7B49C1FFADA99A1F37F62CCDB4AC431728AB8A2CB42DF871106C52B5F
+2773BFEEB09096FB6A0C6F236A3BAAB546C3AC1FA4B2712647F9B3A72A5B0C89
+532CF302867D8433DDE77CA8A73744D0E118887EE2CDECA1256DBFB2CC8D23E0
+BDAAC9DCC60B97BCE913D5C4DA237E43EF492169467EC29AFD09F7FBC491B088
+EA18058BE143135A1CB1B62DAD3460533399840A4B782C2388BA9704F0575759
+4B2977FD6DEE58A779D4EC849A83A91A5EB9EDB2ECD7DF10F40F41D4E3954299
+E20341FE5C593798A7A0F0E6F739EBE4A4955F8486E53B14B8E78AE87CD6C6CC
+063296BEE9278EE797BE9995EED424226FBBCC1BEF77B70253CA9275BA4A38CD
+5D04CE830AE87A239ED10675ADDA5C1C374C521D1AFB8C3F9A8C6188B2FED02C
+BF56146DF0092587ED494E89DB0E03F1E41A1C93C36FB1B97D0B9C8E119D1FF5
+02E3387555B96150887883DD5394567DF96087AA59B31CAF90BF01ED035845EC
+FBA3D44BFD132210940CDDD9212303BB3EB70B740444058A00F7C8A0CA2620E3
+F97D0CF456F46DF47B9CBC8CC3820FA09254AACC59D894D1CDDC7C8CD9051EE6
+45E3FB285A6D10D7655A2BEBD20F54B82C01EE82978525E5625230491066CC63
+2FF6DB6AF94F8C4D7F831B80558A82C65D0F763E0CCA39A4BACC3642491D26D8
+CD87833F9A857BE16D0D98484C4BD5746779587B7DDD55A5DFF8228E23F16238
+7EAC786A5A8EB28123C37F83CABB8C084047181E7B7AB4BB3A184ADF32CFAE24
+C9E3E74D0A465FA5F078FAB09BC2EF9B037AA1540485AAEA66A01E5F18635DD9
+F73EB92DE236A20BF6C465C5E8021E4BADBBB5B3435E7AE1046FCEBC27F76104
+0A58AD8B1CD7B06B0D20930812E335A3A96885678D2CCD3F397787385C87BF68
+986BA31F23AF7E6EED90C9A402F4C8E3C53A887FCF4DEB5A22AAAA6638D42341
+82CCD1EDAA7E64B4A8A160F00D1ABF358226DF713DFADE3C091237F666002035
+6CDB4ED762FCB6C9AC8304CF148479EE515B89E592666A3E754976DE89D84AFC
+16B1ACA54116DEA768EAEE388A15A1C5A963122CFCD2AF09C1B75167EC067F40
+DB4B0115666694350DA7EFD31CE61BC25C2830F5123B2D637FE3FA12F7574046
+7B956B7C26097377FA2A9D2F46996681B06BFB6611B08BE6CAA992F7E478106E
+4B96B2216572326288CEEBA96A081CD75F1420BE819ABFD36D7B8FF98E3CE88A
+296C274C9A37FC4CB43D80E5D3E060B120BD7A6B651D61F14534BBE0550ECAC4
+47054FCE4B419A66B86C9A81C2D7C57F974BFFDA29EA4FC3371B86D0A5830F80
+57E01B98EA747386175B0CC956D2FE382783BD23A646DF002CAFF9888D4B2AA0
+458E11E7C7D705098BD8D45FE27258270E9E8C293C30EDDC01751A2B3E6CE750
+6518B65D56604D6441060561BF0AFA03F48D5265EBC583D4EB27DAD8332050F6
+6EB5B4E4CDE434C7C78EE4C5822C741058B54E64C92E0395CE01C54FAEFBAD2C
+4AEDBFF77FB2BA4B3E7D5CD5279FF7E74FF98C49809F0166F73C5630364296A8
+2BA9AE282FC5491C9C0867DA346578DEEB95DA6EF7FA2EE9D38DF03911F97F0F
+5D87008C200B169D0FC41311E924DFA7B33C03719824CD40E7F66B92A0533FFA
+C9C02E4EF1B1AE8AE28FEB7F88714D355DDBFF33B124CDBFDA5A737FB2F52344
+4867B79B421A3B9D228752ADA1CFFB96ADF24B586268F1672CDB654A43D9C7B9
+B702B0C2E9A4975330FCB1C4C495EC6D4B9AA4694F9BB3A6478BDE8358A280FB
+960D82315A245319FF6F76C93996770533C626FC67F2DFC484F0766B31779BDC
+93AECDC6C2DB032FBAA0A5053C1BC6B90AE24D9593326F35B40257FD4F8AADA4
+BA77EC5965EEAF0B0A5FA007D6577BFD68A4BA4B9EA6BF3CD03FB0915E75BC5C
+48CECEE9AFBA6C70CF3B8897FE47619C27C7E13285585A09D555B85FE40469D8
+A5CEBF1C233EFEE4926866E9BC42F07AC8185D61C3A309E0C571F05F39EE3399
+93618309634C5950A2BD841D95083DECA9B0B347FAFA8AE2C52605F32EC53F2A
+478AFABF33B05AF3309A8EE02DF012AAAF626C73A7FDD93FAEC87260C1972A56
+30145924523721F3B51242AB86F7D7EA48A9B117D3767DCE60CFC12B4491F043
+AD0727FA87B88000F8DCF3BD8B1573751F4B52AD8BCC6AF892E8B633350E3E65
+B032050EED7506A4989AEF0B0AA4BB004DE986B4AD4235F1C32F68EB16B0ADF5
+BD41D50280FCD33BF252D0BE8B1C1E6A1B22BFB344A1E78CCC5E8AB50FE2CAFA
+575CBF02CBEFEC8DCB2E7DDAA49EABD8D21531F08260E679661FF7CBE6AF58E1
+2A0DC93539ADEDE77958DD3120A9C69EEF15D4953E8E810F51CF6A23CEED8364
+8AEAD4C1CB317CEF990804CE156BE948B5F50D1354792E3FCCA559311C2AA447
+21C9D7039E63626E2B1B277B763CBDE35212AA3340DC5EC16726423395464D19
+DAEFB204A9BDF27940D3724B73CD8D2E10D1CE4C73153AA9C9B2BB9363AF2DF5
+3E3C96BDD2B0F2325D63BE49A0AE73861A368CB8EAA8CADD36F1313C88BA82F6
+E847BF01FC47C942074A6F833EB37E7F415BCD394C2235520BE1BACCD9034F98
+E53684B3C6B688840157A9D97AE4860E078DFB3ECDB8D7868D1AA1E53CC5967E
+AA296A14829027C4A8530A76DF75368A886A8780FF2B74B78FE46E985FE3E473
+FC0F68072CD64651D77396B15636ACB1A576D7796564EB1390E2A193097BB1EF
+E332201091BAF991AF038886A7806C32B0B4E77368652A10C590E3566EA7E7F7
+6CCBEA67FE42B984143AE6B42D536D81E15DA1974CA61F8D3446C76D99E409CA
+51F253470CDEC8B9CB42596CF67F9E0EF935044411AB1907A2F9D5A13821A446
+7295848DCB65FFDFA8FA6B193033A5FBF3614AD44E7FB9BAD6573632E8DA9655
+784657B934D3E86224BA3671AC0E3C49317CA392F8C6E7706C56469C4E50D0E8
+5853563606019C1FE4AF22DC2B6522C97989B4B29575E5413F6108157DAEA373
+B69A2EA20318B382D5ACBD8AF5D0C39DF69B511809E3D657851C7144B022D9B4
+703DD62AC30D8A03CABE7D6F37F5B5BFFBC9AA65C393A17D5980A2DDB75D15F1
+264AE0D60A8ABA77277BCA5408FD592EBFB81966BDCC075B460D44815AFB8070
+FF37822FA968C31327339DF12F5D92FB080425B258214C0D705B0F6F0B941A79
+93663ABCA6B6F6F9D100BC483EA1EA98E8B1C1CD0C8E8DF86D15C233A816FC5E
+B0E89CC1EE4A6935881C3D507C0E317B96F1371F1CF7DB35E955CCAA7338A287
+BC5294ED62D17A22EA09AEED7AD28DCE5930F0B021061FD21E195F01C4F99C85
+54B606A2319CFE5DA22BC6A847868CC283A9F21B3CCBB00BEC3B326EBF9198EB
+62020CB699840941FF28F40DE5FB47C4D5C059587565437E66D8ED785A3CDA77
+2A794BDD640B0BE71CEE3DC9CEBEBDD0DB20E39FB4BC221096769AA466D23ACF
+4487E6098ABE933D1F4671AAE20ED5374914F94D1D1103A3AF4D3763D56ACBB1
+A09D88CD6DE9F2F840B584EFD2A61521C730C660287E46E3A4EF23C1C617773B
+79039E4AB6789DE7EDA20C15EFA8995B5DB566F57068CD2A6EB6B62A3C2CB7AA
+B74DB1801ED08E80AD1143B8DCE49D090448149B716698F7F861FF2F78F879CB
+BBDA7081AA87E87017756060D7CCA0F847DB19DD07F0D48ED54CE90AB6B11B65
+4E1C12E025D88A1A7659F3607D259BDCD23950D4B59A0C6384FB51D26446E7A9
+7875CCA1F1DA306F1950A69B39631DB20A4C2C91573D7C5100D022E3C0A312B7
+6B7AB287503A1362B31BB48F384BF179E6E9E36466BD7D1E530182AEB668FEAB
+2E9DEBF2A67F826B584094568F898191129AF7350EC1542B7A65A38A664A5022
+B44FAB4E7A500635276FC6991040215A7C89C3C3907FAC78624FEFF85A3A7C14
+63239F0DB9556373BE0C2B4624543F8A31584532426CC45DDBDFACE0C01509E0
+08F711FDF7782DF220A6242CFFD51D2E9D3A052A72C8FB41565BB08DF622D644
+A0B0710C32DD0F38E2AA0F98AACD307BE455EB1E5AC41D74C7F8991E635BA384
+02D046CE3C1D0B360C774412D18ADF5F6FE49D610FC73C5ACC47EF91383F0282
+ECF18A607D8C9E5CDAD5F17CE87CDDDE07002EE9D30AFD832D172CD9BA702E6B
+CB70C85440D8F51DA0D5F1EF289789CE6081969C7BE04AA7FE93B1AF25B32872
+E2291B63FEE97C43370AFA11BB90F276FB2D748BF43C7A82A227D90D0E81670B
+D269E5519A343DFE4B4B141562E73CE4D9C8E9518CEBC9E940FB6BAF8C33EB14
+51DE02DA63604C8D5B17DD3D102E10640BCD815AD79A0C15DD1E6F7DAC49C902
+FACC9A462C902BDE52C2DB0B3E67BE36B085CA3A861861EADBA5231CA142C008
+C20229B8FAC13D44F4C25D38A4D9C7D4456F771BE971211643AE91308D01511D
+D0EDC2E8ABDE6E83DFE82C441FA75F2ADFF87919FB88EA48D8DB894DF776280A
+0E3855420C1B3D500B29C6957D96E03455373144188447F684E01C0740C58AD8
+B12646B99B1A3EF34974FDC29C8C9D546477C27170058205CE97E229D2746963
+97F1D36222AD044301872AB919C295DD9C1D3460552447DD0862A0058DADFB46
+4FE9A768BD5A43268BC2337CBD87073B0F93FADB338B79D7A3D44C46E5E0633B
+BF814A6D10171850DE5653F4598809AF79D7D3256D54ECAD8CCC755BAF3373FE
+79EF066EBEDAEC6B3C4C15C63F4A0F7698F6BD6ACD9D32E6EC58163D624DD948
+E6375137E9282C98DF48471D01B40892621E22166B426D3A800AC4AA574B8449
+F4F664E8A14E3A81D623DBCDCB56EAB5D112900D55DEF1D17C778564D4DD5994
+5C5CDEEBE9EAC283C473C1EC3B86EAC40FBAE151AED795B0A4BB31CED7D07772
+511C3BA735CD472E197E385DFB2DC32E372D9B6F41E32795630AC1DB1DC316D8
+1C7728B86500991125DCE37DC70A05B713A6F7AF08872B134EA5843B4D765D55
+1F728F9C9303FB44AA1907D2E46CD65AC16CFC35E68DF9243CB35EAF332877EC
+B4F677AD317F1792C749A66759D5B00D845EFC7E8C5F2E4DF2DE0EB66CAE334E
+F36B24E516BD81E9941DA25BA998898621A1A9346532F7031FCA2CBBEDDE5415
+AD85B04FB4B8C2AF8A1FC77A32BE105EF1D20F3D809A10EC30185CEF6F96150D
+E153BBFE6CC92B5A155F3D01066D4E223012EB5F21DC10301FD4347A41A616EF
+3DA260F8CD2576438DA8C6BB50C07755A692FFAEA037EAEBFAA0F6DB41BB3A81
+AD8C658936347E8F473B36506BF1434F81E8EFDD2EC0F2F0E5001968FEF77722
+37BFE44D4E408CFE08AC8AB8834BA1C45913328E43B46AD2F8BD13390F52A833
+DAC40B1306CB0AF6D9CA3CBA83F98A7613A06912583633A921DD3C75E27E507D
+A7D23A9D1E313A8817A0A261897D808573A0595CD714102544EC2B45590AA0C9
+31664D44AF87CFC139A58B4C991814A9F630FC90
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+TeXDict begin 40258437 52099151 1000 600 600 (main.dvi)
address@hidden /Fa 138[51 6[51 6[53 103[{ TeX0ef0afcaEncoding ReEncodeFont }3
+83.022 /CMCSC10 rf /Fb 152[42 42 76[65 25[{
+ TeXbbad153fEncoding ReEncodeFont }3 83.022 /CMSY10 rf
+/Fc 255[52{ TeXbbad153fEncoding ReEncodeFont }1 58.1154
+/CMSY7 rf /Fd 205[28 28 28 48[{ TeX0ef0afcaEncoding ReEncodeFont }3
+41.511 /CMR5 rf /Fe 207[18 48[{ TeXbbad153fEncoding ReEncodeFont }1
+41.511 /CMSY5 rf /Ff 152[38 38 68[77 33[{
+ TeXbbad153fEncoding ReEncodeFont }3 74.7198 /CMSY9 rf
+/Fg 134[30 13[31 1[22 3[28 101[{ TeXaae443f0Encoding ReEncodeFont }4
+41.511 /CMMI5 rf /Fh 137[33 39 2[31 1[34 4[35 1[23 6[29
+22[56 2[54 72[{ TeXaae443f0Encoding ReEncodeFont }9 58.1154
+/CMMI7 rf /Fi 140[40 3[49 2[25 44 7[44 23[74 1[39 4[73
+1[68 66[{ TeX74afc74cEncoding ReEncodeFont }9 83.022
+/CMBXTI10 rf /Fj 134[32 2[31 37 24 29 29 28 32 1[38 54
+20 33 25 22 3[29 2[27 22[51 2[50 72[{ TeXaae443f0Encoding ReEncodeFont }
+18 49.8132 /CMMI6 rf /Fk 145[42 42 42 7[42 9[42 8[42
+42 80[{}7 83.022 /XYDASH10 rf /Fl 193[48 13[18 48[{
+ TeXbbad153fEncoding ReEncodeFont }2 49.8132 /CMSY6 rf
+/Fm 137[0 3[0 69[0 3[0 24[0 15[{}5 83.022 /XYBTIP10 rf
+/Fn 137[0 3[0 69[0 3[0 24[0 15[{}5 83.022 /XYATIP10 rf
+/Fo 133[36 5[28 36 3[37 2[23 40 1[26 1[37 1[36 1[33 15[47
+58 61 5[65 1[34 64 2[57 63 55 58 58 5[21 21 58[{
+ TeXaae443f0Encoding ReEncodeFont }23 74.7198 /CMMI9
+rf /Fp 131[78 39 1[37 35 51 35 41 25 31 32 1[39 39 43
+63 20 35 1[24 39 35 24 35 39 35 35 39 7[57 57 77 1[57
+55 43 56 1[52 59 57 69 48 59 40 30 57 59 50 52 58 55
+54 57 6[24 39 39 1[39 39 2[39 39 39 1[24 27 24 2[31 31
+24 26[43 12[{ TeX74afc74cEncoding ReEncodeFont }63 74.7198
+/CMTI9 rf /Fq 133[39 6[39 3[40 50 1[25 43 1[29 3[39 1[36
+10[69 5[63 66 53 63 3[71 1[36 69 2[61 69 1[63 6[23 23
+58[{ TeXaae443f0Encoding ReEncodeFont }22 83.022 /CMMI10
+rf /Fr 134[50 1[69 50 53 37 38 39 1[53 48 53 80 27 50
+29 27 53 48 29 44 53 42 53 46 12[66 53 2[65 72 75 91
+1[75 2[75 75 60 63 73 2[72 9[48 48 48 48 48 48 48 2[27
+32 30[80 1[53 12[{ TeXf7b6d320Encoding ReEncodeFont }47
+83.022 /CMBX10 rf /Fs 135[44 3[44 1[44 2[44 2[44 2[44
+3[44 1[44 44 44 18[44 9[44 2[44 65[{ TeX09fbbfacEncoding ReEncodeFont }
+13 83.022 /CMTT10 rf /Ft 133[34 40 1[55 38 45 28 34 35
+38 42 42 47 68 21 38 1[25 42 38 25 38 42 38 38 42 13[47
+61 6[64 1[32 4[63 1[58 20[30 45[{ TeX74afc74cEncoding ReEncodeFont }31
+83.022 /CMTI10 rf /Fu 135[59 2[62 44 44 46 2[56 62 1[31
+59 1[31 1[56 34 51 62 50 1[54 9[116 3[62 84 8[42 3[74
+86 81 12[56 56 56 56 56 56 49[{ TeXf7b6d320Encoding ReEncodeFont }29
+99.6264 /CMBX12 rf /Fv 139[34 35 36 14[39 49 43 31[67
+6[25 11[25 46[{ TeXf7b6d320Encoding ReEncodeFont }9 74.7198
+/CMBX9 rf /Fw 133[39 2[39 39 39 39 39 39 1[39 39 39 39
+39 39 39 39 39 39 39 39 39 39 1[39 11[39 39 39 39 1[39
+39 39 1[39 39 3[39 39 2[39 1[39 39 5[39 10[39 39 39 45[{
+ TeX09fbbfacEncoding ReEncodeFont }40 74.7198 /CMTT9
+rf /Fx 132[38 34 41 41 55 41 43 30 30 30 41 43 38 43
+64 21 41 23 21 43 38 23 34 43 34 43 38 3[21 38 21 1[58
+58 79 58 58 55 43 57 60 52 60 58 70 48 60 39 28 58 60
+50 52 59 55 54 58 3[60 2[21 38 38 38 38 38 38 38 38 38
+38 38 21 26 21 2[30 30 21 4[38 15[38 2[64 64 1[43 45
+11[{ TeXf7b6d320Encoding ReEncodeFont }80 74.7198 /CMR9
+rf /Fy 163[30 39[30 30 30 30 30 6[24 24 40[{
+ TeXf7b6d320Encoding ReEncodeFont }8 49.8132 /CMR6 rf
+/Fz 202[33 33 33 33 33 33 6[26 26 40[{
+ TeXf7b6d320Encoding ReEncodeFont }8 58.1154 /CMR7 rf
+/FA 132[42 37 44 44 60 44 46 32 33 33 44 46 42 46 69
+23 44 25 23 46 42 25 37 46 37 46 42 3[23 42 23 2[62 85
+62 62 60 46 61 65 57 65 62 76 52 65 43 30 62 65 54 57
+63 60 59 62 1[39 1[65 1[23 23 42 42 42 42 42 42 42 42
+42 42 1[23 28 23 2[32 32 23 1[69 2[42 23 18[69 46 46
+48 11[{ TeXf7b6d320Encoding ReEncodeFont }81 83.022 /CMR10
+rf /FB 139[52 53 55 1[75 67 75 4[37 75 67 41 61 75 60
+1[65 13[75 100 12[88 1[97 1[102 19[45 45[{
+ TeXf7b6d320Encoding ReEncodeFont }20 119.552 /CMBX12
+rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 600dpi
+TeXDict begin
+ end
+%%EndSetup
+%%Page: 1 1
+TeXDict begin 1 0 bop 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a 0 0 a
+SDict begin [ /Title (An Encoding for Censorship-Resistant Sharing)
+/Subject (Privacy Enhancing Technologies) /Creator (LaTeX with hyperref 
package)
+/Author (Christian Grothoff and Krista Grothoff and Tzvetan Horozov and Jussi 
T. Lindgren)
+/Producer (dvips + Distiller) /Keywords (encoding privacy censorship resistant 
sharing file peer distributed system network)
+/DOCINFO pdfmark end
+ 0 0 a Black 0
+TeXcolorgray 523 232 a
+SDict begin H.S end
+ 523 232 a 0 TeXcolorgray 0 TeXcolorgray
+523 232 a
+SDict begin H.R end
+ 523 232 a 523 232 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.1) cvn H.B /DEST pdfmark
+end
+ 523 232 a Black Black 523
+365 a
+SDict begin [ /Count -0 /Dest (chapter.1) cvn /Title (An Encoding for 
Censorship-Resistant Sharing)
+/OUT pdfmark end
+ 523 365 a 523 365 a
+SDict begin [ /Count -0 /Dest (chapter.1) cvn /Title (Christian Grothoff, 
Krista Grothoff, Tzvetan Horozov, Jussi T. Lindgren)
+/OUT pdfmark end
+ 523 365 a 523 365 a
+SDict begin [ /Page 1 /View [ /Fit ] /PageMode /FullScreen  /DOCVIEW
+pdfmark end
+ 523 365
+a 523 365 a
+SDict begin [ {Catalog} << /ViewerPreferences << >> >> /PUT pdfmark
+end
+ 523 365 a 523 365 a
+SDict begin H.S end
+ 523 365 a 523 365 a
+SDict begin 12 H.A end
+ 523
+365 a 523 365 a
+SDict begin [ /View [/XYZ H.V] /Dest (Doc-Start) cvn H.B /DEST pdfmark
+end
+ 523 365 a 523 365 a
+SDict begin H.S end
+ 523 365 a 523 365
+a
+SDict begin 12 H.A end
+ 523 365 a 523 365 a
+SDict begin [ /View [/XYZ H.V] /Dest (chapter.1) cvn H.B /DEST pdfmark
+end
+ 523 365 a Black Black 586 448 a
+FB(An)45 b(Enco)t(ding)f(for)h(Censorship-Resistan)l(t)i(Sharing)566
+737 y FA(Christian)27 b(Grotho\013)1239 707 y Fz(1)1276
+737 y FA(,)g(Krista)g(Grotho\013)1889 707 y Fz(2)1926
+737 y FA(,)g(Tzv)n(etan)g(Horozo)n(v)2599 707 y Fz(3)2634
+737 y FA(,)h(Jussi)f(T.)h(Lindgren)3326 707 y Fz(4)1116
+879 y Fy(1)1189 911 y Fx(Departmen)n(t)d(of)i(Computer)f(Sciences,)g
+(UCLA,)g(USA)1532 1002 y Fw(address@hidden)606
+1062 y Fy(2)679 1094 y Fx(CERIAS)f(/)h(In)n(terdepartmen)n(tal)f
+(Program)i(in)f(Linguistics,)h(Purdue)e(Univ)n(ersit)n(y)-6
+b(,)25 b(USA)1532 1185 y Fw(address@hidden)1580
+1244 y Fy(3)1653 1276 y Fx(Motorola)j(Labs,)e(USA)1572
+1368 y Fw(address@hidden)827 1427 y Fy(4)900 1459
+y Fx(Departmen)n(t)f(of)h(Computer)g(Science,)g(Univ)n(ersit)n(y)f(of)i
+(Helsinki,)f(Finland)1513 1550 y Fw(address@hidden)1278
+1736 y(http://www.gnu.org/software/GNU)q(net/)1670 1827
+y(address@hidden)p Black 759 2154 a Fv(Abstract.)p Black
+43 w Fx(This)i(pap)r(er)g(describ)r(es)h(ECRS,)f(a)h(con)n(ten)n(t)e
+(enco)r(ding)i(sc)n(heme)f(for)759 2246 y(censorship-resistan)n(t)18
+b(p)r(eer-to-p)r(eer)f(net)n(w)n(orking.)h(The)f(prop)r(osed)h(enco)r
+(ding)f(mec)n(h-)759 2337 y(anism)36 b(supp)r(orts)e(b)r(oth)h
+(e\016cien)n(t)f(dissemination)i(of)g(encrypted)d(data)i(as)h(w)n(ell)
+759 2428 y(as)f(encrypted)e(queries)h(o)n(v)n(er)g(this)g(data.)g(In)n
+(termediaries)h(can)f(v)n(erify)g(that)g(an)759 2520
+y(encrypted)e(resp)r(onse)i(matc)n(hes)f(an)g(encrypted)e(reply)i
+(without)g(b)r(eing)g(able)g(to)759 2611 y(decrypt)24
+b(either.)h(F)-6 b(urthermore,)24 b(ECRS)h(allo)n(ws)h(users)f(to)g
+(share)g(\014les)g(encrypted)759 2702 y(under)i(descriptiv)n(e)g(k)n
+(eys)g(whic)n(h)g(are)h(the)f(basis)i(for)f(querying)f(the)g(net)n(w)n
+(ork)g(for)759 2793 y(con)n(ten)n(t.)f(With)f(the)g(prop)r(osed)h(sc)n
+(heme,)g(e\013ectiv)n(e)g(load)g(balancing)g(and)g(sw)n(arm)759
+2885 y(distribution)21 b(are)h(p)r(ossible.)h(The)e(enco)r(ding)h(mec)n
+(hanism)g(handles)f(data)g(in)g(small)759 2976 y(c)n(h)n(unks,)h(whic)n
+(h)h(can)g(also)h(b)r(e)f(e\016cien)n(tly)g(enco)r(ded)g(on)g(demand)f
+(from)i(the)f(plain-)759 3067 y(text.)29 b(The)h(prop)r(osed)g(enco)r
+(ding)g(is)g(conceptually)f(simple)h(and)f(easy)h(to)g(imple-)759
+3159 y(men)n(t.)523 3319 y
+SDict begin H.S end
+ 523 3319 a 523 3319 a
+SDict begin 12 H.A end
+ 523
+3319 a 523 3319 a
+SDict begin [ /View [/XYZ H.V] /Dest (section.1.1) cvn H.B /DEST pdfmark
+end
+ 523 3319 a 116 x Fu(1)112 b(In)m(tro)s(duction)523
+3629 y FA(In)n(ternet)32 b(censorship)f(is)h(a)g(p)r(o)n(w)n(erful)f(w)
+n(eap)r(on)g(for)h(oppressiv)n(e)e(go)n(v)n(ernmen)n(ts,)g(corp)r(ora-)
+523 3729 y(tions)36 b(and)g(pressure)f(groups)f(in)j(sti\015ing)f
+(dissen)n(t)g(and)g(suppressing)e(dissemination)i(of)523
+3828 y(information.)31 b(A)h(v)-5 b(ariet)n(y)30 b(of)i(tec)n(hniques)f
+(can)g(b)r(e)h(used)g(to)f(censor)f(online)i(information;)523
+3928 y(hard)f(driv)n(es)g(can)g(b)r(e)h(con\014scated)f(and)h(searc)n
+(hed,)e(tra\016c)h(can)h(b)r(e)g(\014ltered,)g(and)f(denial)523
+4028 y(of)i(service)e(attac)n(ks)h(can)g(b)r(e)i(p)r(erformed)e
+(against)g(serv)n(ers.)e(In)j(addition)g(to)g(these)f(tec)n(h-)523
+4127 y(nical)f(measures,)e(individuals)i(can)f(b)r(e)h(singled)g(out)f
+(and)h(sub)5 b(jected)31 b(to)f(harassmen)n(t.)g(A)523
+4227 y(common)j(requiremen)n(t)g(for)g(all)g(forms)g(of)g(censorship)g
+(is)g(the)h(abilit)n(y)f(to)h Ft(r)l(e)l(c)l(o)l(gnize)g
+FA(the)523 4327 y(ob)5 b(jectionable)27 b(information.)648
+4426 y(The)21 b(goal)g(of)g(the)h(enco)r(ding)f(sc)n(heme)g(presen)n
+(ted)g(in)h(this)g(pap)r(er)f(is)h(to)f(mak)n(e)g(it)h(di\016cult)523
+4526 y(to)28 b(iden)n(tify)h(information)f(stored)f(or)g(transmitted)i
+(in)f(a)g Ft(de)l(c)l(entr)l(alize)l(d)p FA(,)i(op)r(en)e(wide)g(area)
+523 4625 y(net)n(w)n(ork)21 b(where)h(man)n(y)f Ft(untruste)l(d)g
+FA(p)r(eers)h(w)n(an)n(t)g(to)g(share)f(data.)h(The)g(prop)r(osed)f
+(enco)r(ding)523 4725 y(sc)n(heme,)36 b(called)g(ECRS,)g(allo)n(ws)f(b)
+r(oth)i(con)n(ten)n(t)f(and)g(queries)g(to)g(b)r(e)h(encrypted)f(while)
+523 4825 y(b)r(eing)e(transmitted)h(or)e(stored)g(on)h(the)h(net)n(w)n
+(ork.)e(This)h(ensures)f(that)i(serv)n(ers)d(as)h(w)n(ell)523
+4924 y(as)g(all)h(in)n(termediate)f(p)r(eers)h(are)f(oblivious)g(of)g
+(the)i(data)e(they)h(are)f(actually)g(handling,)p Black
+Black eop end
+%%Page: 2 2
+TeXDict begin 2 1 bop 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a Black 0 TeXcolorgray
+523 232 a
+SDict begin H.S end
+ 523 232 a 0 TeXcolorgray 0 TeXcolorgray 523
+232 a
+SDict begin H.R end
+ 523 232 a 523 232 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.2) cvn H.B /DEST pdfmark
+end
+ 523 232 a Black Fx(2)237 b(C.)27
+b(Grotho\013,)f(K.)g(Grotho\013,)g(T.)h(Horozo)n(v,)f(J.T.)h(Lindgren)p
+Black 523 448 a FA(reducing)f(the)i(c)n(hance)e(that)h(they)g(can)g(b)r
+(e)h(singled)e(out)h(for)g(an)f(attac)n(k)g(or)h(held)g(liable.)g(It)
+523 548 y(is)22 b(imp)r(ortan)n(t)g(to)g(note)g(that)h(the)f(primary)f
+(goal)g(is)h Ft(deniability)j FA(for)d(the)g(p)r(eers)g(storing)f(and)
+523 648 y(transmitting)i(the)g(information.)f(These)h(p)r(eers)f(m)n
+(ust)h(b)r(e)g(able)g(to)g(claim)f(that)i(decrypting)523
+747 y(the)k(information)f(is)g(infeasible)h Ft(for)j(them)p
+FA(.)648 865 y(W)-7 b(e)23 b(\014nd)g(it)f(acceptable)g(if)h(a)g
+(censor)e(who)h(precisely)g(kno)n(ws)f(whic)n(h)i(con)n(ten)n(t)f(to)g
+(censor)523 965 y(is)28 b(able)f(to)g(matc)n(h)h(a)f(request)g(or)f
+(resp)r(onse)h(against)f(that)i(particular)f(con)n(ten)n(t.)g(ECRS)g
+(is)523 1065 y(supp)r(osed)33 b(to)f(protect)h(in)n(termediaries)e
+(that)i(merely)f(transmit)h(information)f(and)h(that)523
+1164 y(need)i(to)g(b)r(e)h(able)e(to)h(sho)n(w)g(that)g(they)g(w)n(ere)
+f(unable)h(to)g(recognize)f(ob)5 b(jectionable)34 b(in-)523
+1264 y(formation)g(for)g(their)h(o)n(wn)f(protection.)g(The)h(ultimate)
+g(senders)f(and)h(receiv)n(ers)e(of)i(the)523 1363 y(data)i(should)g(b)
+r(e)h(protected)f(b)n(y)g(other)f(means,)h(suc)n(h)g(as)g(anon)n(ymous)
+f(routing)g([)p 0 1 0 TeXcolorrgb 3211 1363 a
+SDict begin H.S end
+ 3211 1363
+a 0 1 0 TeXcolorrgb FA(8)p 0 1 0 TeXcolorrgb 3253 1310
+a
+SDict begin H.R end
+ 3253 1310 a 3253 1363 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.dingledine02mixminion) cvn H.B /ANN pdfmark end
+ 3253 1363 a Black FA(,)p 0 1 0
+TeXcolorrgb 3276 1363 a
+SDict begin H.S end
+ 3276 1363 a 0 1 0 TeXcolorrgb
+FA(27)p 0 1 0 TeXcolorrgb 3359 1310 a
+SDict begin H.R end
+ 3359 1310 a 3359
+1363 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.syverson97anonymous) cvn H.B /ANN pdfmark end
+ 3359 1363 a Black FA(].)523 1463 y(As)c(a)g(con)n(ten)n(t)g
+(enco)r(ding)g(mec)n(hanism,)g(ECRS)f(could)h(b)r(e)h(in)n(tegrated)e
+(in)n(to)h(almost)g(an)n(y)523 1563 y(generic)c(p)r(eer-to-p)r(eer)f
+(infrastructure)g(to)i(enhance)f(its)h(resistance)e(to)h(censorship.)g
+(Sp)r(e-)523 1662 y(ci\014c)i(details)g(on)g(ho)n(w)g(p)r(eers)g(comm)n
+(unicate)f(and)h(route)g(data)g(are)f(therefore)g(outside)h(of)523
+1762 y(the)e(scop)r(e)f(of)h(this)g(pap)r(er.)648 1880
+y(As)35 b(an)h(enco)r(ding)f(sc)n(heme,)g(ECRS)g(has)g(to)h(address)e
+(t)n(w)n(o)h(imp)r(ortan)n(t)g(issues.)g(First)523 1980
+y(of)c(all,)g(users)f(m)n(ust)i(b)r(e)f(able)g(to)g(\014nd)h(con)n(ten)
+n(t,)f(preferably)f(b)n(y)h(searc)n(hing)e(with)j(simple,)523
+2079 y(natural)e(language)e(k)n(eyw)n(ords.)g(Metadata)i(related)g(to)g
+(the)g(con)n(ten)n(ts)g(of)g(the)h(\014le)f(should)523
+2179 y(b)r(e)f(made)f(a)n(v)-5 b(ailable)27 b(as)h(part)g(of)g(the)h
+(searc)n(h)e(result)h(and)h(prior)e(to)h(the)h(do)n(wnload)e(of)i(the)
+523 2279 y(actual)d(\014le.)h(Secondly)-7 b(,)27 b(the)g(enco)r(ding)g
+(sc)n(heme)f(should)h(supp)r(ort)f(sw)n(arming,)g(that)h(is)g(the)523
+2378 y(do)n(wnload)f(of)i(a)f(\014le)g(from)h(m)n(ultiple)g(p)r(eers.)f
+(Since)h(it)f(is)h(p)r(ossible)f(that)h(iden)n(tical)f(data)g(is)523
+2478 y(inserted)e(b)n(y)g(man)n(y)f(indep)r(enden)n(t)i(parties)e(the)i
+(enco)r(ding)f(sc)n(heme)f(should)h(alw)n(a)n(ys)e(result)523
+2577 y(in)k(iden)n(tical)f(enco)r(dings)g(for)h(iden)n(tical)f(source)f
+(\014les.)i(This)g(w)n(a)n(y)e(the)i(duplication)g(caused)523
+2677 y(b)n(y)c(m)n(ultiple)g(insertions)f(of)g(the)i(same)e(con)n(ten)n
+(t)g(increases)f(fault-tolerance,)h(p)r(erformance)523
+2777 y(and)27 b(a)n(v)-5 b(ailabilit)n(y)e(.)648 2895
+y(Unfortunately)g(,)26 b(it)g(is)g(not)g(enough)g(to)g(just)g(meet)h
+(requiremen)n(ts)e(related)g(to)h(e\016cien)n(t)523 2994
+y(storage)c(and)h(retriev)-5 b(al)22 b(of)i(the)g(con)n(ten)n(t.)f(A)h
+(public)g(\014lesharing)e(net)n(w)n(ork)g(should)h(b)r(e)h(op)r(en)523
+3094 y(to)d(new)g(participan)n(ts)f(without)h(an)n(y)f(restrictiv)n(e)g
+(form)g(of)h(access)f(con)n(trol.)f(This)i(op)r(ens)g(the)523
+3194 y(net)n(w)n(ork)k(to)i(malicious)f(participan)n(ts.)f(Th)n(us,)i
+(the)g(enco)r(ding)f(sc)n(heme)g(should)h(guaran)n(tee)523
+3293 y(the)h Ft(inte)l(grity)g FA(of)f(the)h(con)n(ten)n(t)g(ev)n(en)f
+(in)h(the)g(presence)e(of)i(malicious)f(participan)n(ts.)648
+3411 y(The)k(enco)r(ding)g(mec)n(hanism)f(m)n(ust)i(ensure)e(that)i(in)
+n(v)-5 b(alid)31 b(replies)f(are)g(detected)i(and)523
+3511 y(that)38 b(p)r(eers)f(can)h Ft(distinguish)g FA(v)-5
+b(aluable)38 b(con)n(ten)n(t)f(from)g(maliciously)g(generated)g(noise.)
+523 3611 y(This)32 b(is)g(particularly)e(imp)r(ortan)n(t)i(in)g(three)g
+(cases.)f(First,)h(if)g(large)f(\014les)h(are)f(assem)n(bled)523
+3710 y(using)c(blo)r(c)n(ks)f(from)h(m)n(ultiple)h(p)r(eers,)f(some)f
+(of)i(these)f(p)r(eers)g(ma)n(y)f(b)r(e)i(malicious)e(and)h(try)523
+3810 y(to)g(corrupt)f(the)i(\014le.)g(These)f(corruptions)e(should)i(b)
+r(e)h(detected)g(on)f(a)g(small)f(gran)n(ularit)n(y)523
+3910 y(and)j(repaired)f(with)h(correct)f(data)h(from)g(other)f(p)r
+(eers.)h(Second,)g(for)f(searc)n(hes)g(it)h(should)523
+4009 y(b)r(e)38 b(di\016cult)g(for)f(p)r(eers)g(to)h(spam)f(the)g
+(result)h(set.)f(Otherwise)g(the)h(users)e(ma)n(y)h(dro)n(wn)523
+4109 y(in)c(useless)f(information.)g(Finally)-7 b(,)32
+b(in)n(termediaries)g(and)g(that)h(are)f(merely)g(routing)g(the)523
+4208 y(con)n(ten)n(t)k(should)g(b)r(e)g(able)g(to)g(detect)g(in)n(v)-5
+b(alid)36 b(replies.)g(This)g(enables)g(lo)r(cal)f(economies)523
+4308 y(\(lik)n(e)28 b([)p 0 1 0 TeXcolorrgb 731 4308
+a
+SDict begin H.S end
+ 731 4308 a 0 1 0 TeXcolorrgb FA(11)p 0 1 0 TeXcolorrgb
+814 4255 a
+SDict begin H.R end
+ 814 4255 a 814 4308 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.ebe2003) cvn H.B /ANN pdfmark end
+ 814 4308 a Black FA(]\))g(and)f(prev)n
+(en)n(ts)g(the)h(retransmission)e(and)h(replication)g(of)g(corrupted)g
+(data)g(b)n(y)523 4408 y(non-malicious)f(p)r(eers.)648
+4526 y(ECRS)h(uses)g(t)n(w)n(o)g(fundamen)n(tal)h(primitiv)n(es)g(in)g
+(the)g(o)n(v)n(erall)d(enco)r(ding)j(sc)n(heme.)f(The)523
+4625 y(ma)5 b(jorit)n(y)38 b(of)i(the)g(con)n(ten)n(t)f(in)g(the)h(net)
+n(w)n(ork)e(uses)i(a)f(v)-5 b(arian)n(t)38 b(of)i(F)-7
+b(reenet's)39 b(CHK)g(en-)523 4725 y(co)r(ding)34 b([)p
+0 1 0 TeXcolorrgb 818 4725 a
+SDict begin H.S end
+ 818 4725 a 0 1 0 TeXcolorrgb
+FA(5)p 0 1 0 TeXcolorrgb 859 4672 a
+SDict begin H.R end
+ 859 4672 a 859 4725
+a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.clark99distributed) cvn H.B /ANN pdfmark end
+ 859 4725 a Black FA(].)h(CHK)e(stands)h(for)g(Con)n(ten)n(t)f(Hash)h
+(Key;)g(in)g(other)f(w)n(ords,)g(the)h(con)n(ten)n(t)g(is)523
+4825 y(encrypted)25 b(with)g(a)f(k)n(ey)g(that)h(is)g(deriv)n(ed)f
+(from)g(a)g(cryptographic)f(hash)h(of)h(the)g(plain)n(text.)523
+4924 y(The)38 b(encrypted)f(con)n(ten)n(t)g(is)h(hashed)f(again)g(to)g
+(obtain)g(the)i(query)d(whic)n(h)i(is)g(used)f(to)p Black
+Black eop end
+%%Page: 3 3
+TeXDict begin 3 2 bop 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a Black 0 TeXcolorgray
+523 232 a
+SDict begin H.S end
+ 523 232 a 0 TeXcolorgray 0 TeXcolorgray 523
+232 a
+SDict begin H.R end
+ 523 232 a 523 232 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.3) cvn H.B /DEST pdfmark
+end
+ 523 232 a Black 1036 w Fx(An)25
+b(Enco)r(ding)h(for)h(Censorship-Resistan)n(t)f(Sharing)238
+b(3)p Black 523 448 a FA(request)25 b(the)i(con)n(ten)n(t.)e(This)h(k)n
+(ey-query)e(pair)h(is)h(what)g(the)g(receiv)n(er)f(needs)h(to)f(do)n
+(wnload)523 548 y(and)i(decrypt)h(the)g(con)n(ten)n(t.)648
+649 y(The)23 b(primary)f(di\013erence)i(to)f(the)h(use)f(of)g(CHK)g(b)n
+(y)h([)p 0 1 0 TeXcolorrgb 2304 649 a
+SDict begin H.S end
+ 2304 649 a 0 1 0
+TeXcolorrgb FA(5)p 0 1 0 TeXcolorrgb 2345 596 a
+SDict begin H.R end
+ 2345
+596 a 2345 649 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.clark99distributed) cvn H.B /ANN pdfmark end
+ 2345 649 a Black FA(])g(is)f(that)h(ECRS)f(nev)n(er)f
+(sub)5 b(jects)523 749 y(en)n(tire)35 b(\014les)h(to)f(the)h(CHK)f
+(enco)r(ding.)g(Instead,)h(\014les)f(are)g(split)h(in)n(to)f
+(\014xed-size)g(blo)r(c)n(ks)523 849 y(whic)n(h)j(could)f(then)h(b)r(e)
+g(individually)g(distributed)g(\(and)g(replicated\))f(across)f(p)r
+(eers)h(in)523 948 y(the)27 b(net)n(w)n(ork.)e(This)i(is)f(a)g(natural)
+g(w)n(a)n(y)f(to)i(balance)f(the)h(load)e(and)i(to)f(enable)h(sw)n
+(arming.)523 1048 y(The)i(blo)r(c)n(ks)g(can)f(b)r(e)i(individually)f
+(iden)n(ti\014ed)g(b)n(y)g(a)g(query)-7 b(,)28 b(encrypted,)h
+(decrypted)g(and)523 1148 y(v)n(eri\014ed.)39 b(V)-7
+b(eri\014cation)38 b(of)i(an)f(encrypted)g(blo)r(c)n(k)g(is)g
+(accomplished)g(b)n(y)g(c)n(hec)n(king)f(that)523 1247
+y(it)g(matc)n(hes)f(a)h(giv)n(en)f(query)-7 b(.)37 b(This)h(v)n
+(eri\014cation)e(only)h(requires)g(the)h(encrypted)g(blo)r(c)n(k)523
+1347 y(and)30 b(the)g(query;)g(it)g(do)r(es)g(not)g(rev)n(eal)f(the)h
+(k)n(ey)f(required)g(to)h(decrypt)g(the)h(blo)r(c)n(k.)e(ECRS)523
+1446 y(guaran)n(tees)23 b(that)j(it)g(is)g(hard)f(to)g(forge)g(a)g
+(resp)r(onse)f(that)i(passes)e(v)n(eri\014cation)h(for)g(a)g(giv)n(en)
+523 1546 y(query)-7 b(.)30 b(Splitting)h(\014les)f(in)n(to)g(blo)r(c)n
+(ks)f(allo)n(ws)g(ECRS)h(to)g(detect)h(data)f(corruption)f(on)h(the)523
+1646 y(blo)r(c)n(k)i(lev)n(el.)g(Malicious)f(p)r(eers)h(cannot)g
+(transmit)g(more)f(than)i(the)f(selected)h(blo)r(c)n(k)e(size)523
+1745 y(of)d(in)n(v)-5 b(alid)27 b(data)g(b)r(efore)h(b)r(eing)f
+(detected.)648 1847 y(The)18 b(second)h(primitiv)n(e)f(used)h(b)n(y)f
+(ECRS,)h(the)g Ft(KBlo)l(ck)p FA(,)h(is)f(completely)f(no)n(v)n(el.)g
+Ft(KBlo)l(ck)p FA(s)523 1946 y(allo)n(w)h(users)g(to)h(securely)g
+(obtain)f(the)i(k)n(ey-query)d(pair)i(starting)f(with)i(a)e(natural)h
+(language)523 2046 y(k)n(eyw)n(ord)f(selected)h(b)n(y)g(the)h(con)n
+(ten)n(t)f(pro)n(vider.)e Ft(KBlo)l(ck)p FA(s)k(impro)n(v)n(e)d(on)h
+(the)h(triple-hash)e([)p 0 1 0 TeXcolorrgb 3317 2046
+a
+SDict begin H.S end
+ 3317 2046 a 0 1 0 TeXcolorrgb FA(2)p 0 1 0 TeXcolorrgb
+3359 1993 a
+SDict begin H.R end
+ 3359 1993 a 3359 2046 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.esed) cvn H.B /ANN pdfmark end
+ 3359 2046 a Black
+FA(],)523 2146 y(a)25 b(primitiv)n(e)h(with)g(exactly)f(the)h(same)f
+(goal,)f(in)i(that)g Ft(KBlo)l(ck)p FA(s)h(cannot)e(b)r(e)h(attac)n(k)n
+(ed)e(suc-)523 2245 y(cessfully)i(b)n(y)g(a)g(non-guessing)f(in)n
+(termediary)-7 b(.)25 b(This)h(is)g(ac)n(hiev)n(ed)f(using)h
+(signatures)f(from)523 2345 y(deterministically)37 b(generated)f
+(public)i(k)n(eys)f(to)g(sign)g(con)n(ten)n(t)g(adv)n(ertisemen)n(ts.)f
+(Using)523 2445 y Ft(KBlo)l(ck)p FA(s,)e(do)r(cumen)n(ts)g(can)e(b)r(e)
+i(inserted)f(under)g(m)n(ultiple)h(k)n(eys)e(at)i(a)e(minimal)i(cost)f
+(in)523 2544 y(space.)18 b(Users)g(can)h(p)r(erform)f(b)r(o)r(olean)h
+(searc)n(hes)e(of)h(the)i(form)e Fs(a)43 b(AND)g(b)18
+b FA(whic)n(h)h(then)g(return)523 2644 y(the)j(do)r(cumen)n(ts)g(whic)n
+(h)g(w)n(ere)f(inserted)g(under)h(a)f(matc)n(hing)g(set)h(of)g(k)n(eyw)
+n(ords.)e(Before)h(the)523 2743 y(do)n(wnload,)30 b(the)h(user)f(can)g
+(re\014ne)g(the)h(searc)n(h)f(results)g(using)g(the)h(metadata)f(asso)r
+(ciated)523 2843 y(with)e(the)g(\014le.)648 2945 y(The)e(rest)f(of)i
+(the)f(pap)r(er)g(is)g(organized)e(as)i(follo)n(ws.)f(Section)p
+1 0 0 TeXcolorrgb 2582 2945 a
+SDict begin H.S end
+ 2582 2945 a 1 0 0 TeXcolorrgb
+FA(2)p 1 0 0 TeXcolorrgb 2624 2891 a
+SDict begin H.R end
+ 2624 2891 a 2624
+2945 a
+SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(section.1.2) cvn H.B /ANN pdfmark end
+ 2624 2945 a Black 26 w FA(con)n(trasts)f(the)j(curren)n(t)523
+3044 y(w)n(ork)e(with)i(mec)n(hanisms)e(used)h(in)h(other)f
+(censorship-resistan)n(t)d(systems.)j(Section)p 1 0 0
+TeXcolorrgb 3226 3044 a
+SDict begin H.S end
+ 3226 3044 a 1 0 0 TeXcolorrgb
+FA(3)p 1 0 0 TeXcolorrgb 3268 2991 a
+SDict begin H.R end
+ 3268 2991 a 3268
+3044 a
+SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(section.1.3) cvn H.B /ANN pdfmark end
+ 3268 3044 a Black 26 w FA(de-)523 3144 y(scrib)r(es)j(the)g
+(ECRS)h(enco)r(ding)e(sc)n(heme)h(in)h(detail.)f(Section)p
+1 0 0 TeXcolorrgb 2476 3144 a
+SDict begin H.S end
+ 2476 3144 a 1 0 0 TeXcolorrgb
+FA(4)p 1 0 0 TeXcolorrgb 2517 3090 a
+SDict begin H.R end
+ 2517 3090 a 2517
+3144 a
+SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(section.1.4) cvn H.B /ANN pdfmark end
+ 2517 3144 a Black 29 w FA(lists)h(some)f(extensions)f(to)523
+3243 y(the)h(basic)e(sc)n(heme.)h(Finally)-7 b(,)28 b(section)p
+1 0 0 TeXcolorrgb 1760 3243 a
+SDict begin H.S end
+ 1760 3243 a 1 0 0 TeXcolorrgb
+FA(5)p 1 0 0 TeXcolorrgb 1802 3190 a
+SDict begin H.R end
+ 1802 3190 a 1802
+3243 a
+SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(section.1.5) cvn H.B /ANN pdfmark end
+ 1802 3243 a Black 28 w FA(discusses)f(attac)n(ks)g(on)h(ECRS)g
+(and)g(con)n(trasts)f(it)523 3343 y(to)h(previous)e(w)n(ork.)648
+3445 y(This)e(w)n(ork)f(builds)h(on)g(our)g(earlier)f(pap)r(er)h([)p
+0 1 0 TeXcolorrgb 2036 3445 a
+SDict begin H.S end
+ 2036 3445 a 0 1 0 TeXcolorrgb
+FA(2)p 0 1 0 TeXcolorrgb 2077 3391 a
+SDict begin H.R end
+ 2077 3391 a 2077
+3445 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.esed) cvn H.B /ANN pdfmark end
+ 2077 3445 a Black FA(])h(whic)n(h)f(w)n(as)f(\014rst)h
+(published)h(at)f(A)n(CISP)523 3544 y(2001.)e(Since)h(then,)h(the)g
+(enco)r(ding)f(sc)n(heme)g(has)g(b)r(een)h(revised)e(to)i(address)e
+(additional)h(re-)523 3644 y(quiremen)n(ts,)g(to)g(impro)n(v)n(e)e(the)
+j(securit)n(y)e(in)h(v)-5 b(arious)22 b(asp)r(ects)h(and)g(to)g(meet)g
+(issues)g(related)523 3743 y(to)28 b(a)f(b)r(etter)h(implemen)n
+(tation.)f(This)h(pap)r(er)f(re\015ects)g(these)h(c)n(hanges.)523
+3916 y
+SDict begin H.S end
+ 523 3916 a 523 3916 a
+SDict begin 12 H.A end
+ 523 3916 a 523 3916 a
+SDict begin [ /View [/XYZ H.V] /Dest (section.1.2) cvn H.B /DEST pdfmark
+end
+ 523
+3916 a 102 x Fu(2)112 b(Related)38 b(W)-9 b(ork)523 4227
+y FA(A)40 b(large)f(n)n(um)n(b)r(er)g(of)h(censorship-resistan)n(t)d
+(\(or)j(at)f(least)h(fault-toleran)n(t\))f(publishing)523
+4327 y(systems)30 b(ha)n(v)n(e)f(b)r(een)h(prop)r(osed)f(in)i(recen)n
+(t)e(y)n(ears)g([)p 0 1 0 TeXcolorrgb 2170 4327 a
+SDict begin H.S end
+ 2170
+4327 a 0 1 0 TeXcolorrgb FA(1)p 0 1 0 TeXcolorrgb 2211
+4273 a
+SDict begin H.R end
+ 2211 4273 a 2211 4327 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.anderson96eternity) cvn H.B /ANN pdfmark end
+ 2211 4327 a Black FA(,)p
+0 1 0 TeXcolorrgb 2234 4327 a
+SDict begin H.S end
+ 2234 4327 a 0 1 0 TeXcolorrgb
+FA(5)p 0 1 0 TeXcolorrgb 2276 4273 a
+SDict begin H.R end
+ 2276 4273 a 2276
+4327 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.clark99distributed) cvn H.B /ANN pdfmark end
+ 2276 4327 a Black FA(,)p 0 1 0 TeXcolorrgb 2299
+4327 a
+SDict begin H.S end
+ 2299 4327 a 0 1 0 TeXcolorrgb FA(4)p 0 1 0 TeXcolorrgb
+2341 4273 a
+SDict begin H.R end
+ 2341 4273 a 2341 4327 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.chen99prototype) cvn H.B /ANN pdfmark end
+ 2341 4327 a Black
+FA(,)p 0 1 0 TeXcolorrgb 2364 4327 a
+SDict begin H.S end
+ 2364 4327 a 0 1 0
+TeXcolorrgb FA(9)p 0 1 0 TeXcolorrgb 2405 4273 a
+SDict begin H.R end
+ 2405
+4273 a 2405 4327 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.freehaven-berk) cvn H.B /ANN pdfmark end
+ 2405 4327 a Black FA(,)p 0 1 0 TeXcolorrgb
+2428 4327 a
+SDict begin H.S end
+ 2428 4327 a 0 1 0 TeXcolorrgb FA(10)p 0 1 0
+TeXcolorrgb 2511 4273 a
+SDict begin H.R end
+ 2511 4273 a 2511 4327 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.feamster-infranet) cvn H.B /ANN pdfmark end
+ 2511
+4327 a Black FA(,)p 0 1 0 TeXcolorrgb 2534 4327 a
+SDict begin H.S end
+ 2534
+4327 a 0 1 0 TeXcolorrgb FA(14)p 0 1 0 TeXcolorrgb 2617
+4273 a
+SDict begin H.R end
+ 2617 4273 a 2617 4327 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.herlihy87how) cvn H.B /ANN pdfmark end
+ 2617 4327 a Black FA(,)p
+0 1 0 TeXcolorrgb 2640 4327 a
+SDict begin H.S end
+ 2640 4327 a 0 1 0 TeXcolorrgb
+FA(28)p 0 1 0 TeXcolorrgb 2723 4273 a
+SDict begin H.R end
+ 2723 4273 a 2723
+4327 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.waldman2001tangler) cvn H.B /ANN pdfmark end
+ 2723 4327 a Black FA(,)p 0 1 0 TeXcolorrgb 2746
+4327 a
+SDict begin H.S end
+ 2746 4327 a 0 1 0 TeXcolorrgb FA(29)p 0 1 0 TeXcolorrgb
+2829 4273 a
+SDict begin H.R end
+ 2829 4273 a 2829 4327 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.pub00) cvn H.B /ANN pdfmark end
+ 2829 4327 a Black
+FA(].)i(The)f(prop)r(osed)523 4426 y(proto)r(cols)18
+b(di\013er)i(in)g(v)-5 b(arious)18 b(asp)r(ects)h(unrelated)g(to)h(the)
+f(sp)r(eci\014cs)h(of)f(the)h(enco)r(ding)f(mec)n(h-)523
+4526 y(anism,)28 b(suc)n(h)g(as)f(con)n(ten)n(t)h(replication)f(and)h
+(the)g(use)g(of)g(anon)n(ymous)e(or)i(steganographic)523
+4625 y(comm)n(unication.)33 b(Characteristic)g(of)h(all)g(of)g(these)g
+(systems)f(is)h(the)h(use)f(of)g(replication)523 4725
+y(and)i(the)h(need)f(to)h(ensure)e(data)h(in)n(tegrit)n(y)-7
+b(.)36 b(F)-7 b(or)35 b(an)h(o)n(v)n(erview)f(of)h(con)n(ten)n(t)g
+(replication)523 4825 y(strategies)26 b(see)h([)p 0 1 0
+TeXcolorrgb 1050 4825 a
+SDict begin H.S end
+ 1050 4825 a 0 1 0 TeXcolorrgb
+FA(6)p 0 1 0 TeXcolorrgb 1091 4771 a
+SDict begin H.R end
+ 1091 4771 a 1091
+4825 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.cohen02replication) cvn H.B /ANN pdfmark end
+ 1091 4825 a Black FA(].)h(The)f(censorship-resistan)n(t)e
+(systems)i(all)g(use)g(some)g(form)g(of)g(con)n(ten)n(t)523
+4924 y(enco)r(ding)g(to)h(hide)g(the)g(sp)r(eci\014cs)f(of)h(the)g(con)
+n(ten)n(t)f(from)g(the)h(serv)n(ers.)p Black Black eop
+end
+%%Page: 4 4
+TeXDict begin 4 3 bop 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a Black 0 TeXcolorgray
+523 232 a
+SDict begin H.S end
+ 523 232 a 0 TeXcolorgray 0 TeXcolorgray 523
+232 a
+SDict begin H.R end
+ 523 232 a 523 232 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.4) cvn H.B /DEST pdfmark
+end
+ 523 232 a Black Fx(4)237 b(C.)27
+b(Grotho\013,)f(K.)g(Grotho\013,)g(T.)h(Horozo)n(v,)f(J.T.)h(Lindgren)p
+Black 523 365 a
+SDict begin H.S end
+ 523 365 a 523 365 a
+SDict begin 12 H.A end
+ 523 365 a 523 365
+a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.2.1) cvn H.B /DEST
+pdfmark end
+ 523 365 a 83 x Fr(2.1)95 b(F)-8 b(reenet)523 584 y
+FA(The)30 b(main)f(con)n(ten)n(t)h(enco)r(ding)f(sc)n(heme)g(used)h(in)
+g(F)-7 b(reenet)30 b([)p 0 1 0 TeXcolorrgb 2452 584 a
+SDict begin H.S end
+
+2452 584 a 0 1 0 TeXcolorrgb FA(5)p 0 1 0 TeXcolorrgb
+2493 531 a
+SDict begin H.R end
+ 2493 531 a 2493 584 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.clark99distributed) cvn H.B /ANN pdfmark end
+ 2493 584 a Black FA(])g(uses)f(CHKs:)h
+(the)g(hash)f(of)523 684 y(the)e(con)n(ten)n(t)f(is)g(used)g(as)g(the)g
+(k)n(ey)-7 b(.)26 b(F)-7 b(reenet)26 b(has)g(sev)n(eral)e(other)i(t)n
+(yp)r(es)g(of)g(k)n(eys)g(whic)n(h)g(are)523 784 y(used)e(to)f(refer)g
+(the)h(user)f(to)g(con)n(ten)n(t-hash)g(k)n(eys.)f(These)i(di\013eren)n
+(t)f(k)n(ey)g(t)n(yp)r(es)h(are)f(used)g(to)523 883 y(allo)n(w)e
+(additional)h(features)g(suc)n(h)g(as)g(con)n(ten)n(t)g(signing,)g(p)r
+(ersonal)f(namespaces)h(and)g(split-)523 983 y(ting)28
+b(of)g(con)n(ten)n(t.)f(F)-7 b(reenet's)28 b(CHK)g(yields)f(the)i(same)
+e(encrypted)g(data)h(for)f(indep)r(enden)n(t)523 1082
+y(encryptions.)g(Ho)n(w)n(ev)n(er,)f(it)i(has)f(sev)n(eral)e(disadv)-5
+b(an)n(tages.)648 1182 y(One)31 b(dra)n(wbac)n(k)g(of)h(F)-7
+b(reenet's)32 b(CHK)g(is)g(that)g(it)h(do)r(es)f(not)g(allo)n(w)f
+(direct)h(sharing)f(of)523 1282 y(\014les)c(from)f(the)h(lo)r(cal)g
+(driv)n(e)e(without)j(encrypting)e(and)g(inserting)h(them)g(\014rst.)g
+(Th)n(us,)f(if)h(a)523 1381 y(no)r(de)22 b(op)r(erator)f(wishes)h(to)g
+(k)n(eep)g(con)n(ten)n(t)g(directly)g(accessible)f(on)h(the)h(host,)f
+(a)g(lo)r(cal)g(cop)n(y)523 1481 y(of)h(the)g(plain)n(text)g(m)n(ust)g
+(b)r(e)g(k)n(ept)f(in)h(addition)g(to)g(the)g(encrypted)f(con)n(ten)n
+(t)h(in)g(the)g(F)-7 b(reenet)523 1581 y(database.)22
+b(Also,)i(F)-7 b(reenet)23 b(do)r(es)g(not)h(supp)r(ort)f(sw)n(arming.)
+f(One)h(reason)f(certainly)g(is)i(that)523 1680 y(F)-7
+b(reenet's)30 b(CHK)h(enco)r(ding)f(can)g(only)g(v)n(erify)g(a)g
+(\014le)h(in)f(its)h(en)n(tiret)n(y)f(and)g(not)h(pin-p)r(oin)n(t)523
+1780 y(corruptions)26 b(on)h(a)h(smaller)e(scale.)648
+1879 y(One)33 b(w)n(a)n(y)f(to)i(obtain)f(the)i(CHK)e(k)n(ey)g(of)h(a)f
+(\014le)h(in)g(F)-7 b(reenet)34 b(is)f(to)h(searc)n(h)e(a)h(priv)-5
+b(ate)523 1979 y(subspace.)27 b(A)h(subspace)f(con)n(tains)f(a)i(set)f
+(of)h(CHK)f(k)n(eys)g(that)h(ha)n(v)n(e)e(b)r(een)i(cryptographi-)523
+2079 y(cally)e(signed)h(b)n(y)g(the)g(o)n(wner)f(of)h(the)g(subspace)g
+(and)f(placed)h(in)n(to)g(the)g(subspace)g(under)f(a)523
+2178 y(certain)e(k)n(eyw)n(ord.)g(These)g(signed)h(references)f(are)f
+(called)i(subspace-signed)e(k)n(eys)h(\(SSK\).)523 2278
+y(Giv)n(en)i(the)g(subspace-pre\014x)e(and)h(the)i(k)n(eyw)n(ord,)c
+(users)i(can)h(obtain)f(the)h(CHK)g(k)n(ey)-7 b(.)25
+b(The)523 2378 y(form)d(of)g(the)g(k)n(eyw)n(ords)e(can)i(b)r(e)h
+(freely)e(c)n(hosen,)h(allo)n(wing)e(for)i(con)n(v)n(en)n(tions)e(suc)n
+(h)i(as)f(dates)523 2477 y(in)j(the)h(k)n(eyw)n(ord)d(to)i(b)r(e)h
+(used)f(for)g(up)r(dates)g(\(in)h(F)-7 b(reenet's)24
+b(terminology)-7 b(,)23 b(these)h(are)f(called)523 2577
+y(\\date)k(based)g(redirects"\).)648 2676 y(In)g(addition)h(to)f(CHK)g
+(and)g(SSK)h(k)n(eys,)e(F)-7 b(reenet)28 b(supp)r(orts)f(KSK)g(k)n
+(eys.)f(A)i(KSK)f(k)n(ey)523 2776 y(is)j(essen)n(tially)f(a)g(CHK)h(k)n
+(ey)g(stored)f(in)h(plain)n(text)g(\(!\))h(under)e(a)h(k)n(eyw)n(ord.)e
+(The)i(proto)r(col)523 2876 y(attempts)25 b(to)f(ensure)g(that)g(there)
+h(cannot)e(b)r(e)i(t)n(w)n(o)f(di\013eren)n(t)g(CHK)h(k)n(eys)e(a)n(v)
+-5 b(ailable)23 b(in)i(the)523 2975 y(net)n(w)n(ork)g(under)h(the)h
+(same)f(k)n(eyw)n(ord.)e(While)j(collisions)e(for)h(KSK)g(k)n(eys)f
+(are)g(supp)r(osedly)523 3075 y(not)36 b(allo)n(w)n(ed,)e(the)i(proto)r
+(col)e(cannot)h(prev)n(en)n(t)g(them)h(from)f(o)r(ccurring.)g(If)h(an)f
+(attac)n(k)n(er)523 3175 y(inserts)27 b(meaningless)f(data)h(under)g(a)
+g(common)g(k)n(eyw)n(ord,)e(F)-7 b(reenet)27 b(will)h(try)f(to)g
+(preserv)n(e)523 3274 y(that)g(con)n(ten)n(t)g(b)r(ecause)f(it)h(is)g
+(frequen)n(tly)f(requested.)h(Subsequen)n(tly)-7 b(,)26
+b(that)h(k)n(eyw)n(ord)e(can)523 3374 y(no)h(longer)f(b)r(e)i(used)f
+(for)g(an)n(y)f(useful)i(data)f(since)g(the)g(p)r(eers)g(attempt)h(to)f
+(enforce)g(the)h(no-)523 3473 y(collisions)j(rule.)h(Note)g(that)g(the)
+h(no-collision)d(rule)i(cannot)f(b)r(e)i(enforced)e(for)h(malicious)523
+3573 y(p)r(eers.)h(F)-7 b(or)32 b(these)h(reasons,)e(the)i(F)-7
+b(reenet)33 b(dev)n(elop)r(ers)e(consider)h(the)h(use)f(of)h(KSK)f(k)n
+(eys)523 3673 y(insecure)27 b(and)g(recommend)g(against)g(using)g
+(them.)648 3772 y(As)19 b(a)g(result,)g(F)-7 b(reenet)19
+b(do)r(es)g(not)g(really)f(supp)r(ort)h(an)n(y)g(t)n(yp)r(e)g(of)g(k)n
+(eyw)n(ord-based)d(searc)n(h.)523 3872 y(The)30 b(CHK)g(k)n(eys)f(m)n
+(ust)i(b)r(e)f(found)h(b)n(y)e(using)h(k)n(eyserv)n(ers)d(or)j(ad-ho)r
+(c)f(applications)g(built)523 3972 y(up)r(on)j(the)g(basic)f(solution)h
+(b)n(y)f(using)h(incremen)n(tal)f(n)n(um)n(b)r(ers)g(as)g(parts)g(of)h
+(k)n(eyw)n(ords)e(in)523 4071 y(signed)f(namespaces.)g(The)h(disadv)-5
+b(an)n(tage)28 b(of)i(k)n(eyserv)n(ers)d(is)j(that)g(they)g(m)n(ust)g
+(b)r(e)g(main-)523 4171 y(tained)39 b(if)g(the)h(indexed)e(k)n(eys)g
+(are)g(to)h(b)r(e)g(k)n(ept)g(up-to-date.)f(F)-7 b(reenet)39
+b(do)r(es)f(not)h(seem)523 4270 y(to)c(use)g(an)n(y)g(encryption)f(for)
+h(the)h(data)f(stored)f(in)h(KSK)g(or)f(SKS)i(k)n(eys)e(and)h
+(therefore)523 4370 y(fails)27 b(to)h(prev)n(en)n(t)e(in)n
+(termediaries)g(from)h(learning)g(the)h(CHK)f(k)n(eys)f(\(and)i(for)f
+(KSKs)f(ev)n(en)523 4470 y(tamp)r(ering)h(with)h(the)g(CHK)g(k)n
+(eys\),)f(making)g(censorship)f(b)n(y)h(in)n(termediaries)g(easier.)523
+4610 y
+SDict begin H.S end
+ 523 4610 a 523 4610 a
+SDict begin 12 H.A end
+ 523 4610 a 523 4610 a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.2.2) cvn H.B /DEST
+pdfmark end
+ 523
+4610 a 79 x Fr(2.2)95 b(F)-8 b(ree)31 b(Ha)m(v)m(en)523
+4825 y FA(In)24 b(F)-7 b(ree)24 b(Ha)n(v)n(en)f([)p 0 1 0
+TeXcolorrgb 1074 4825 a
+SDict begin H.S end
+ 1074 4825 a 0 1 0 TeXcolorrgb
+FA(9)p 0 1 0 TeXcolorrgb 1115 4771 a
+SDict begin H.R end
+ 1115 4771 a 1115
+4825 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.freehaven-berk) cvn H.B /ANN pdfmark end
+ 1115 4825 a Black FA(],)i(do)r(cumen)n(ts)f(are)e(split)j(in)n
+(to)f Fq(n)f FA(shares)g(whic)n(h)h(are)f(distributed)h(o)n(v)n(er)e(a)
+523 4924 y(n)n(um)n(b)r(er)27 b(of)g(serv)n(ers.)f(An)n(y)h
+Fq(k)j FA(out)d(of)h Fq(n)f FA(shares)f(are)g(su\016cien)n(t)h(to)h
+(reconstruct)e(the)h(en)n(tire)p Black Black eop end
+%%Page: 5 5
+TeXDict begin 5 4 bop 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a Black 0 TeXcolorgray
+523 232 a
+SDict begin H.S end
+ 523 232 a 0 TeXcolorgray 0 TeXcolorgray 523
+232 a
+SDict begin H.R end
+ 523 232 a 523 232 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.5) cvn H.B /DEST pdfmark
+end
+ 523 232 a Black 1036 w Fx(An)25
+b(Enco)r(ding)h(for)h(Censorship-Resistan)n(t)f(Sharing)238
+b(5)p Black 523 448 a FA(do)r(cumen)n(t)30 b([)p 0 1 0
+TeXcolorrgb 931 448 a
+SDict begin H.S end
+ 931 448 a 0 1 0 TeXcolorrgb FA(22)p
+0 1 0 TeXcolorrgb 1015 395 a
+SDict begin H.R end
+ 1015 395 a 1015 448 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.rabin89efficient) cvn H.B /ANN pdfmark end
+ 1015
+448 a Black FA(].)g(T)-7 b(o)30 b(retriev)n(e)f(a)g(do)r(cumen)n(t,)i
+(the)g(user)e(m)n(ust)h(obtain)g(the)h(k)n(ey)f(that)g(w)n(as)523
+548 y(used)21 b(to)g(sign)g(the)g(do)r(cumen)n(t)h(from)f(some)f
+(source)g(outside)h(the)h(F)-7 b(ree)21 b(Ha)n(v)n(en)f(net)n(w)n(ork,)
+g(the)523 648 y(design)32 b(itself)i(do)r(es)e(not)h(discuss)f(an)n(y)g
+(searc)n(h)f(functionalit)n(y)-7 b(.)33 b(The)g(user)f(then)h(forw)n
+(ards)523 747 y(the)28 b(k)n(ey)f(to)g(the)h(serv)n(er)e(whic)n(h)i
+(encrypts)f(and)g(sends)h(its)f(share)g(of)g(the)h(do)r(cumen)n(t.)648
+848 y(Shares)21 b(are)g(enco)r(ded)i(with)g(an)f(information)g(disp)r
+(ersal)f(algorithm)g(\(ID)n(A\).)j(Hosts)e(are)523 948
+y(still)34 b(able)f(to)h(exercise)e(editorial)h(con)n(trol)f(o)n(v)n
+(er)g(the)i(con)n(ten)n(t)f(since)h(the)g(ID)n(A)g(do)r(es)f(not)523
+1047 y(prev)n(en)n(t)f(hosts)f(from)h(deco)r(ding)g(parts)g(of)g(the)h
+(plain)n(text.)f(Also,)g(the)h Fq(k)i FA(out)e(of)f Fq(n)g
+FA(share)523 1147 y(reconstruction)f(sc)n(heme)g(do)r(es)h(not)g(allo)n
+(w)f(reconstruction)f(of)i(a)g(\014le)g(b)n(y)g(mixing)f(shares)523
+1247 y(from)c(indep)r(enden)n(t)i(insertions)e(with)h(di\013eren)n(t)f
+(v)-5 b(alues)28 b(for)f Fq(k)j FA(or)d Fq(n)p FA(.)523
+1417 y
+SDict begin H.S end
+ 523 1417 a 523 1417 a
+SDict begin 12 H.A end
+ 523 1417 a 523 1417 a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.2.3) cvn H.B /DEST
+pdfmark end
+ 523
+1417 a 85 x Fr(2.3)95 b(Mnet)31 b(and)h(Mo)5 b(jo)32
+b(Nation)523 1675 y FA(Mnet)d(is)f(the)g(successor)f(of)h(Mo)5
+b(jo)27 b(Nation)h([)p 0 1 0 TeXcolorrgb 1938 1675 a
+SDict begin H.S end
+
+1938 1675 a 0 1 0 TeXcolorrgb FA(30)p 0 1 0 TeXcolorrgb
+2021 1621 a
+SDict begin H.R end
+ 2021 1621 a 2021 1675 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.mojotech) cvn H.B /ANN pdfmark end
+ 2021 1675 a Black
+FA(],)h(a)e(p)r(eer-to-p)r(eer)g(net)n(w)n(ork)g(that)h(w)n(as)g(the)
+523 1774 y(\014rst)d(to)g(fo)r(cus)g(on)f(using)h(economic)f(incen)n
+(tiv)n(es)g(when)h(trading)g(con)n(ten)n(t.)f(As)h(the)h(descen-)523
+1874 y(dan)n(t)g(of)g(a)g(commercial)f(pro)r(duct,)i(Mnet)f(fo)r(cuses)
+g(mostly)g(on)g(e\016ciency)h(and)f(reliabilit)n(y)-7
+b(.)523 1974 y(Nev)n(ertheless,)34 b(Mnet)i(encrypts)f(\014les)g(with)g
+(AES)h(using)e(a)h(user-supplied)g(k)n(ey)f(seed)h(to)523
+2073 y(allo)n(w)24 b(for)g(priv)-5 b(acy)e(.)24 b(The)g(\014le)h(is)g
+(then)g(brok)n(en)e(in)n(to)i(shares)e(using)h(an)h(erasure)d(co)r(de.)
+j(Mul-)523 2173 y(tiple)30 b(shares)e(are)h(iden)n(ti\014ed)h(with)g
+(an)g(SHA-1)f(hash)h(and)f(stored)g(in)h(an)f(ino)r(de.)h(The)g(\014le)
+523 2272 y(can)d(b)r(e)g(retriev)n(ed)f(using)h(the)h(hash)f(of)g(the)g
+(ino)r(de)h(and)f(the)g(symmetric)g(encryption)g(k)n(ey)-7
+b(.)648 2373 y(The)30 b(use)g(of)g(whole-\014le)f(AES)h(encryption)g
+(and)g(the)g(use)g(of)g(an)g(erasure)e(co)r(de)i(forces)523
+2473 y(Mnet,)25 b(just)f(lik)n(e)g(F)-7 b(reenet,)24
+b(to)g(store)f(a)h(second)f(cop)n(y)g(of)h(the)g(en)n(tire)g(\014le)g
+(in)h(the)f(Mnet)g(data)523 2573 y(store)h(ev)n(en)h(if)g(the)g(user)g
+(retains)f(a)h(cop)n(y)f(of)h(the)g(\014le)g(in)g(plain)n(text.)g(The)g
+(enco)r(ding)g(mak)n(es)523 2672 y(it)h(infeasible)f(to)g(enco)r(de)g
+(parts)f(of)i(the)f(\014le)h(on)f(request.)f(The)h(free)g(selection)g
+(of)g(the)h(AES)523 2772 y(k)n(ey)j(allo)n(ws)f(indep)r(enden)n(t)j
+(users)d(to)i(create)f(completely)g(di\013eren)n(t)h(shares)e(for)h
+(iden)n(tical)523 2871 y(\014les.)35 b(Since)g(the)h(encryption)e(of)h
+(the)g(con)n(ten)n(t)g(is)g(a)f(p)r(erfectly)i(indep)r(enden)n(t)g
+(pass)e(o)n(v)n(er)523 2971 y(the)e(\014le,)g(other)e(enco)r(dings)h
+(suc)n(h)g(as)g(ECRS)g(and)g(F)-7 b(reenet's)32 b(enco)r(ding)f(could)g
+(b)r(e)h(easily)523 3071 y(extended)i(to)g(include)h(this)f(b)r(eha)n
+(vior)e(if)j(desired)e({)h(without)g(the)h(need)f(to)g(mandate)f(a)523
+3170 y(certain)27 b(st)n(yle)g(of)h(AES)f(encryption.)523
+3341 y
+SDict begin H.S end
+ 523 3341 a 523 3341 a
+SDict begin 12 H.A end
+ 523 3341 a 523 3341 a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.2.4) cvn H.B /DEST
+pdfmark end
+ 523
+3341 a 85 x Fr(2.4)95 b(Publius)523 3598 y FA(Publius)23
+b([)p 0 1 0 TeXcolorrgb 843 3598 a
+SDict begin H.S end
+ 843 3598 a 0 1 0 TeXcolorrgb
+FA(29)p 0 1 0 TeXcolorrgb 926 3545 a
+SDict begin H.R end
+ 926 3545 a 926 3598
+a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.pub00) cvn H.B /ANN pdfmark end
+ 926 3598 a Black FA(])h(is)g(a)f(static)g(net)n(w)n(ork)f(that)i
+(uses)f(Shamir's)g(algorithm)g([)p 0 1 0 TeXcolorrgb
+2736 3598 a
+SDict begin H.S end
+ 2736 3598 a 0 1 0 TeXcolorrgb FA(24)p 0 1 0
+TeXcolorrgb 2819 3545 a
+SDict begin H.R end
+ 2819 3545 a 2819 3598 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.shamir) cvn H.B /ANN pdfmark end
+ 2819
+3598 a Black FA(])g(to)h(split)g(the)g(k)n(ey)523 3698
+y(required)j(to)g(restore)g(stored)g(\014les)g(b)r(et)n(w)n(een)h(the)g
+(a)n(v)-5 b(ailable)27 b(serv)n(ers.)e(The)j(encrypted)g(\014le)523
+3798 y(is)33 b(then)h(stored)f(on)g(all)g(serv)n(ers.)e(The)j(serv)n
+(ers)d(cannot)i(decrypt)g(the)h(\014le)f(as)g(the)g(k)n(ey)g(is)523
+3897 y(nev)n(er)27 b(en)n(tirely)g(rev)n(ealed)f(to)h(them.)648
+3998 y(Publius)34 b(k)n(eys)g(are)g(random)g(strings.)g(The)h(system)g
+(do)r(es)g(not)g(pro)n(vide)e(an)n(y)i(searc)n(h)523
+4098 y(mec)n(hanism)c(and)h(exp)r(ects)f(the)h(users)f(to)h(obtain)f
+(the)h(k)n(eys)f(from)g(an)g(alternate)g(source.)523
+4197 y(Publius)d(nev)n(er)e(discards)h(an)n(y)g(con)n(ten)n(t)g(and)h
+(th)n(us)g(assumes)e(that)i(disk)g(space)f(is)h(nev)n(er)e(a)523
+4297 y(limitation.)523 4452 y
+SDict begin H.S end
+ 523 4452 a 523 4452 a
+SDict begin 12 H.A end
+ 523
+4452 a 523 4452 a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.2.5) cvn H.B /DEST
+pdfmark end
+ 523 4452 a 101 x Fr(2.5)95 b(T)-8 b(angler)523
+4725 y FA(The)31 b(T)-7 b(angler)30 b(net)n(w)n(ork)f([)p
+0 1 0 TeXcolorrgb 1345 4725 a
+SDict begin H.S end
+ 1345 4725 a 0 1 0 TeXcolorrgb
+FA(28)p 0 1 0 TeXcolorrgb 1428 4672 a
+SDict begin H.R end
+ 1428 4672 a 1428
+4725 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.waldman2001tangler) cvn H.B /ANN pdfmark end
+ 1428 4725 a Black FA(])i(is)g(a)f(system)h(where)f(new)h(con)n
+(ten)n(t)g(is)g(en)n(tangled)f(with)h(old)523 4825 y(con)n(ten)n(t.)22
+b(This)g(en)n(tanglemen)n(t)g(in)n(tro)r(duces)g(a)g(dep)r(endency)h
+(that)g(mak)n(es)e(it)i(imp)r(ossible)f(to)523 4924 y(retriev)n(e)i(a)g
+(piece)h(of)g(con)n(ten)n(t)g(if)g(the)g(other)g(con)n(ten)n(t)f(that)h
+(it)h(w)n(as)e(en)n(tangled)g(with)h(is)g(lost.)p Black
+Black eop end
+%%Page: 6 6
+TeXDict begin 6 5 bop 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a Black 0 TeXcolorgray
+523 232 a
+SDict begin H.S end
+ 523 232 a 0 TeXcolorgray 0 TeXcolorgray 523
+232 a
+SDict begin H.R end
+ 523 232 a 523 232 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.6) cvn H.B /DEST pdfmark
+end
+ 523 232 a Black Fx(6)237 b(C.)27
+b(Grotho\013,)f(K.)g(Grotho\013,)g(T.)h(Horozo)n(v,)f(J.T.)h(Lindgren)p
+Black 523 448 a FA(While)20 b(this)h(mak)n(es)d(it)j(imp)r(ossible)e
+(to)h(censor)f(sp)r(eci\014c)h(con)n(ten)n(t)f(without)h(losing)f
+(unrelated)523 548 y(con)n(ten)n(t)j(\(since)h(the)g(en)n(tanglemen)n
+(t)e(pairs)h(are)g(c)n(hosen)f(randomly\),)h(this)h(pro)r(cess)e
+Ft(doubles)523 648 y FA(the)f(amoun)n(t)f(of)g(data)g(that)h(m)n(ust)f
+(b)r(e)h(transp)r(orted)f(b)n(y)g(the)h(net)n(w)n(ork.)e(This)h(sc)n
+(heme)g(fails)g(to)523 747 y(address)29 b(the)i(fact)f(that)h(an)f(adv)
+n(ersary)d(ma)n(y)j(not)g(care)g(ab)r(out)g(losing)f(other)h(data)g
+(when)523 847 y(attempting)35 b(to)g(censor)f(con)n(ten)n(t.)h(Also,)f
+(nothing)h(prev)n(en)n(ts)f(the)h(adv)n(ersary)e(from)h(\014rst)523
+946 y(making)e(a)g(cop)n(y)f(of)h(imp)r(ortan)n(t)g(do)r(cumen)n(ts)h
+(and)f(re-inserting)f(them)h(in)n(to)h(the)f(system)523
+1046 y(after)27 b(the)h(censorship)f(op)r(eration.)648
+1146 y(T)-7 b(angler)22 b(has)h(some)g(similarities)g(with)h(ECRS.)g
+(In)g(particular,)e(it)i(uses)f(hash)g(trees)h(for)523
+1245 y(in)n(tegrit)n(y)h(c)n(hec)n(ks)f(on)i(\014xed-size)f(blo)r(c)n
+(ks)g(of)h(data.)f(The)h(ma)5 b(jor)25 b(di\013erence)g(with)i(ECRS)e
+(is)523 1345 y(that)e(the)g(T)-7 b(angler)21 b(enco)r(ding)i(uses)f
+(Shamir's)g(secret)g(sharing)f([)p 0 1 0 TeXcolorrgb
+2525 1345 a
+SDict begin H.S end
+ 2525 1345 a 0 1 0 TeXcolorrgb FA(24)p 0 1 0
+TeXcolorrgb 2608 1291 a
+SDict begin H.R end
+ 2608 1291 a 2608 1345 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.shamir) cvn H.B /ANN pdfmark end
+ 2608
+1345 a Black FA(])i(to)g(en)n(tangle)e(the)j(blo)r(c)n(k)523
+1445 y(with)29 b(other,)e(pre-existing)g(blo)r(c)n(ks,)h(preferably)f
+(from)h(other)f(do)r(cumen)n(ts.)h(Another)g(sim-)523
+1544 y(ilarit)n(y)j(b)r(et)n(w)n(een)g(T)-7 b(angler)31
+b(and)g(ECRS)h(is)f(the)h(existence)g(of)f(cryptographically)e(signed)
+523 1644 y(data,)i(whic)n(h)h(T)-7 b(angler)30 b(calls)h(collections.)g
+(T)-7 b(angler's)30 b(collections)h(are)f(analogous)g(to)h(di-)523
+1743 y(rectories)g(and)h(namespaces)f(in)h(ECRS.)g(The)h(ma)5
+b(jor)31 b(di\013erence)h(is)g(that)h(in)f(T)-7 b(angler,)31
+b(a)523 1843 y(collection)j(has)g(a)g(v)n(ersioned)f(ro)r(ot)h(whic)n
+(h)h(explicitly)f(lists)h(all)f(of)h(the)g(con)n(ten)n(ts)f(in)h(the)
+523 1943 y(collection,)22 b(resulting)h(in)g(one)g(of)g(T)-7
+b(angler's)21 b(global)h(sync)n(hronization)f(problems.)h(Placing)523
+2042 y(a)27 b(do)r(cumen)n(t)h(in)g(an)f(ECRS)h(namespace)e(only)h
+(requires)g(that)g(it)i(b)r(e)f(adequately)e(signed.)523
+2207 y
+SDict begin H.S end
+ 523 2207 a 523 2207 a
+SDict begin 12 H.A end
+ 523 2207 a 523 2207 a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.2.6) cvn H.B /DEST
+pdfmark end
+ 523
+2207 a 84 x Fr(2.6)95 b(Gn)m(utella)31 b(and)h(F)-8 b(astT)g(rac)m(k)
+523 2456 y FA(The)31 b(F)-7 b(astT)g(rac)n(k)28 b(net)n(w)n(ork)p
+1 0 0 TeXcolorrgb 1376 2456 a
+SDict begin H.S end
+ 1376 2456 a -30 x Fz(1)1412
+2456 y
+SDict begin 12 H.L end
+ 1412 2456 a 1412 2456 a
+SDict begin [ /Subtype /Link /Dest (Hfootnote.1) cvn /H /I /Border
+[0 0 0] /Color [1 0 0] H.B /ANN pdfmark end
+ 1412 2456 a Black 31 w
+FA(and)i(mo)r(dern)g(v)-5 b(arian)n(ts)29 b(of)i(the)g(Gn)n(utella)f
+(proto)r(col)f(use)i(the)523 2556 y(SHA-1)f(hash)f(co)r(de)g(of)h(the)g
+(shared)f(\014les)g(to)h(uniquely)f(iden)n(tify)i(\014les.)e(The)h
+(SHA-1)f(hash)523 2656 y(co)r(des)d(are)f(used)i(to)f(iden)n(tify)h
+(iden)n(tical)f(\014les)g(stored)g(on)g(di\013eren)n(t)g(p)r(eers.)g
+(The)g(p)r(eers)g(can)523 2755 y(then)d(use)g(this)g(information)f(to)h
+(do)n(wnload)f(the)h(\014le)g(from)f(m)n(ultiple)i(sources)d(\(sw)n
+(arming\).)523 2855 y(The)e(problem)f(with)h(this)h(approac)n(h)c(is)j
+(that)g(the)g(SHA-1)g(hash)f(co)r(des)h(can)f(only)h(b)r(e)g(v)n
+(eri\014ed)523 2955 y(once)30 b(the)g(en)n(tire)g(\014le)g(has)f(b)r
+(een)i(retriev)n(ed.)e(T)-7 b(o)29 b(ruin)h(a)g(do)n(wnload,)f(it)h(w)n
+(ould)g(su\016ce)g(for)523 3054 y(a)35 b(malicious)f(p)r(eer)h(to)g
+(pro)n(vide)f(just)i(one)f(single)f(in)n(v)-5 b(alid)35
+b(blo)r(c)n(k.)g(The)g(presence)g(of)g(the)523 3154 y(in)n(v)-5
+b(alid)33 b(blo)r(c)n(k)g(could)g(only)f(b)r(e)i(detected)f(after)g
+(the)h(en)n(tire)e(\014le)i(w)n(as)e(retriev)n(ed.)g(W)-7
+b(orse,)523 3253 y(the)21 b(simplistic)g(SHA-1)g(approac)n(h)e(do)r(es)
+h(not)h(giv)n(e)f(p)r(eers)g(an)n(y)g(w)n(a)n(y)g(to)h(iden)n(tify)g
+(the)g(in)n(v)-5 b(alid)523 3353 y(blo)r(c)n(k)27 b(or)g(the)h
+(malicious)f(p)r(eer.)648 3453 y(Because)i(F)-7 b(astT)g(rac)n(k)29
+b(and)h(Gn)n(utella)h(use)f(neither)g(\014le)h(encryption)f(nor)g(anon)
+n(ymous)523 3552 y(routing)37 b(to)h(hide)g(the)g(address)f(of)h
+(either)f(the)i(receiv)n(er)d(or)h(the)h(sender,)f(they)h(do)g(not)523
+3652 y(tec)n(hnically)23 b(pro)n(vide)f(an)n(y)h(protection)g(from)g
+(censorship)f(b)r(ey)n(ond)h(decen)n(tralized)g(routing)523
+3752 y(of)28 b(requests.)523 3917 y
+SDict begin H.S end
+ 523 3917 a 523 3917
+a
+SDict begin 12 H.A end
+ 523 3917 a 523 3917 a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.2.7) cvn H.B /DEST
+pdfmark end
+ 523 3917 a 83 x Fr(2.7)95 b(Distributed)31
+b(File)f(Systems)523 4166 y FA(V)-7 b(arious)21 b(distributed)i(\014le)
+g(systems)f(based)g(on)g(a)g(p)r(eer-to-p)r(eer)f(infrastructure)g(ha)n
+(v)n(e)h(b)r(een)523 4265 y(built)39 b(in)f(recen)n(t)f(y)n(ears)f([)p
+0 1 0 TeXcolorrgb 1342 4265 a
+SDict begin H.S end
+ 1342 4265 a 0 1 0 TeXcolorrgb
+FA(7)p 0 1 0 TeXcolorrgb 1384 4212 a
+SDict begin H.R end
+ 1384 4212 a 1384
+4265 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.cfs:sosp01) cvn H.B /ANN pdfmark end
+ 1384 4265 a Black FA(,)p 0 1 0 TeXcolorrgb 1407
+4265 a
+SDict begin H.S end
+ 1407 4265 a 0 1 0 TeXcolorrgb FA(18)p 0 1 0 TeXcolorrgb
+1490 4212 a
+SDict begin H.R end
+ 1490 4212 a 1490 4265 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.mazieres02building) cvn H.B /ANN pdfmark end
+ 1490 4265 a Black
+FA(,)p 0 1 0 TeXcolorrgb 1513 4265 a
+SDict begin H.S end
+ 1513 4265 a 0 1 0
+TeXcolorrgb FA(17)p 0 1 0 TeXcolorrgb 1596 4212 a
+SDict begin H.R end
+ 1596
+4212 a 1596 4265 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.mazires00sfs) cvn H.B /ANN pdfmark end
+ 1596 4265 a Black FA(,)p 0 1 0 TeXcolorrgb
+1619 4265 a
+SDict begin H.S end
+ 1619 4265 a 0 1 0 TeXcolorrgb FA(21)p 0 1 0
+TeXcolorrgb 1702 4212 a
+SDict begin H.R end
+ 1702 4212 a 1702 4265 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.muthitacharoen02ivy) cvn H.B /ANN pdfmark end
+ 1702
+4265 a Black FA(,)p 0 1 0 TeXcolorrgb 1725 4265 a
+SDict begin H.S end
+ 1725
+4265 a 0 1 0 TeXcolorrgb FA(23)p 0 1 0 TeXcolorrgb 1808
+4212 a
+SDict begin H.R end
+ 1808 4212 a 1808 4265 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.rowstron01storage) cvn H.B /ANN pdfmark end
+ 1808 4265 a Black FA(].)i(These)g
+(systems)f(t)n(ypically)h(do)f(not)h(fo)r(cus)g(on)523
+4365 y(censorship-resistance)g(and)j(consequen)n(tly)f(do)g(not)h
+(encrypt)g(the)g(con)n(ten)n(ts.)f(Mo)r(dern)523 4464
+y(systems)26 b(lik)n(e)g([)p 0 1 0 TeXcolorrgb 1004 4464
+a
+SDict begin H.S end
+ 1004 4464 a 0 1 0 TeXcolorrgb FA(7)p 0 1 0 TeXcolorrgb
+1045 4411 a
+SDict begin H.R end
+ 1045 4411 a 1045 4464 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.cfs:sosp01) cvn H.B /ANN pdfmark end
+ 1045 4464 a Black
+FA(,)p 0 1 0 TeXcolorrgb 1068 4464 a
+SDict begin H.S end
+ 1068 4464 a 0 1 0
+TeXcolorrgb FA(23)p 0 1 0 TeXcolorrgb 1152 4411 a
+SDict begin H.R end
+ 1152
+4411 a 1152 4464 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.rowstron01storage) cvn H.B /ANN pdfmark end
+ 1152 4464 a Black FA(])g(route)g(con)n(ten)n(t)g
+(using)g(distributed)g(hash)g(tables)g([)p 0 1 0 TeXcolorrgb
+2805 4464 a
+SDict begin H.S end
+ 2805 4464 a 0 1 0 TeXcolorrgb FA(16)p 0 1 0
+TeXcolorrgb 2889 4411 a
+SDict begin H.R end
+ 2889 4411 a 2889 4464 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.maymounkov02kademlia) cvn H.B /ANN pdfmark end
+ 2889
+4464 a Black FA(,)p 0 1 0 TeXcolorrgb 2912 4464 a
+SDict begin H.S end
+ 2912
+4464 a 0 1 0 TeXcolorrgb FA(25)p 0 1 0 TeXcolorrgb 2995
+4411 a
+SDict begin H.R end
+ 2995 4411 a 2995 4464 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.stoica01chord) cvn H.B /ANN pdfmark end
+ 2995 4464 a Black FA(])g(to)g(ac)n(hiev)
+n(e)p Black 523 4538 473 4 v 546 4592 a Fy(1)p 0 TeXcolorgray
+606 4532 a
+SDict begin H.S end
+ 606 4532 a 0 TeXcolorgray 0 TeXcolorgray 606
+4532 a
+SDict begin H.R end
+ 606 4532 a 606 4532 a
+SDict begin [ /View [/XYZ H.V] /Dest (Hfootnote.1) cvn H.B /DEST pdfmark
+end
+ 606 4532 a Black 92 x Fx(Proto)r(col)i
+(description)e(from)g(the)g(giFT-F)-6 b(astT)g(rac)n(k)26
+b(pro)t(ject)h(is)f(a)n(v)l(ailable)h(at)p 0 1 0 0 TeXcolorcmyk
+689 4802 a
+SDict begin H.S end
+ 689 4802 a 0 1 0 0 TeXcolorcmyk -16 x Fw
+(http://gnunet.org/papers/FAST)q(-)t(TR)q(ACK-)5 b(PROTO)q(COL)p
+0 1 0 0 TeXcolorcmyk 2423 4734 a
+SDict begin H.R end
+ 2423 4734 a 2423 4786
+a
+SDict begin [ /H /I /Border [0 0 0] /Color [0 1 1] /Action << /Subtype
+/URI /URI (http://gnunet.org/papers/FAST-TRACK-PROTOCOL) >> /Subtype
+/Link H.B /ANN pdfmark end
+ 2423 4786 a Black Fx(.)p Black Black Black eop end
+%%Page: 7 7
+TeXDict begin 7 6 bop 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a Black 0 TeXcolorgray
+523 232 a
+SDict begin H.S end
+ 523 232 a 0 TeXcolorgray 0 TeXcolorgray 523
+232 a
+SDict begin H.R end
+ 523 232 a 523 232 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.7) cvn H.B /DEST pdfmark
+end
+ 523 232 a Black 1036 w Fx(An)25
+b(Enco)r(ding)h(for)h(Censorship-Resistan)n(t)f(Sharing)238
+b(7)p Black 523 448 a Fq(O)r FA(\(log)15 b Fq(n)p FA(\))32
+b(scalabilit)n(y)-7 b(.)30 b(W)-7 b(ritable)32 b(distributed)g(\014le)f
+(systems)g(t)n(ypically)g(require)g(users)f(to)523 548
+y(authen)n(ticate)25 b(themselv)n(es)g(b)r(efore)f(b)r(eing)i(gran)n
+(ted)e(access)f(to)i(the)h(system)f(b)n(y)g(one)g(of)g(the)523
+648 y(serv)n(ers)c([)p 0 1 0 TeXcolorrgb 815 648 a
+SDict begin H.S end
+ 815
+648 a 0 1 0 TeXcolorrgb FA(17)p 0 1 0 TeXcolorrgb 898
+594 a
+SDict begin H.R end
+ 898 594 a 898 648 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.mazires00sfs) cvn H.B /ANN pdfmark end
+ 898 648 a Black FA(].)i(This)f(w)n(ork)g(fo)r
+(cuses)g(on)h(encrypting)f(shared)f(data)i(while)g(allo)n(wing)e(p)r
+(eers)h(to)523 747 y(v)n(erify)j(the)g(in)n(tegrit)n(y)f(of)i(the)f
+(encrypted)g(data)g(that)h(they)f(are)f(routing.)h(In)g([)p
+0 1 0 TeXcolorrgb 2961 747 a
+SDict begin H.S end
+ 2961 747 a 0 1 0 TeXcolorrgb
+FA(18)p 0 1 0 TeXcolorrgb 3045 694 a
+SDict begin H.R end
+ 3045 694 a 3045
+747 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.mazieres02building) cvn H.B /ANN pdfmark end
+ 3045 747 a Black FA(])g(a)g(similar)523 847 y(problem)g(is)f
+(addressed;)g(here)h(users)f(can)g(detect)i(tamp)r(ering)e(b)n(y)h(the)
+g(\(un)n(trusted\))h(serv)n(er)523 946 y(that)h(is)f(storing)f(the)i
+(data)e(in)i(a)f(setting)g(where)g(m)n(ultiple)h(users)e(are)g(up)r
+(dating)i(the)g(same)523 1046 y(data.)f(This)g(w)n(ork)e(ac)n(hiev)n
+(es)h(what)h(is)g(called)f Ft(fork)30 b(c)l(onsistency)p
+FA(,)c(a)g(guaran)n(tee)e(that)i(if)h(the)523 1146 y(serv)n(er)h
+(passes)h(a)g(v)n(ersion)g(that)h(lac)n(ks)e(the)j(c)n(hanges)d(of)i
+(one)f(clien)n(t)h(to)g(another)f(clien)n(t)h(at)523
+1245 y(one)j(p)r(oin)n(t)g(in)g(time,)h(it)f(can)g(nev)n(er)f(again)g
+(mak)n(e)g(the)h(c)n(hanges)f(of)h(either)g(clien)n(t)g(visible)523
+1345 y(to)28 b(the)h(others.)f(This)g(is)g(a)g(w)n(eak)n(er)f(guaran)n
+(tee)f(than)j(the)g(optimal)f(situation)g(where)g(an)n(y)523
+1445 y(misb)r(eha)n(vior)20 b(is)h(detected,)h(ho)n(w)n(ev)n(er)e(it)h
+(is)h(the)f(strongest)g(p)r(ossible)g(prop)r(ert)n(y)f(that)i(can)f(b)r
+(e)523 1544 y(ac)n(hiev)n(ed)h(giv)n(en)g(the)i(securit)n(y)e(mo)r(del)
+i(used.)f(ECRS)g(do)r(es)g(not)g(allo)n(w)f(users)h(with)g(distinct)523
+1644 y(pseudon)n(yms)31 b(to)h(up)r(date)h(the)f(same)g(con)n(ten)n(t)f
+(without)i(essen)n(tially)e(creating)g(t)n(w)n(o)g(\014les.)523
+1743 y(This)36 b(allo)n(ws)e(ECRS)i(to)g(guaran)n(tee)e(that)i(p)r
+(eers)g(can)f(nev)n(er)g(return)h(an)f Ft(invalid)j FA(result)523
+1843 y(since)27 b(ev)n(ery)g(cop)n(y)f(can)i(b)r(e)g(uniquely)f(iden)n
+(ti\014ed)h(at)g(all)f(times.)523 2012 y
+SDict begin H.S end
+ 523 2012 a 523
+2012 a
+SDict begin 12 H.A end
+ 523 2012 a 523 2012 a
+SDict begin [ /View [/XYZ H.V] /Dest (section.1.3) cvn H.B /DEST pdfmark
+end
+ 523 2012 a 101 x Fu(3)112
+b(ECRS)37 b(enco)s(ding)523 2316 y FA(The)30 b(primary)e(requiremen)n
+(ts)h(for)g(the)h(ECRS)f(enco)r(ding)g(are)g Ft(plausible)k
+(deniability)f FA(and)523 2415 y Ft(r)l(obustness)p FA(.)22
+b(Plausible)f(deniabilit)n(y)h(describ)r(es)g(the)g(abilit)n(y)g(of)g
+(the)h(participan)n(ts)e(to)h(claim)523 2515 y(ignorance)k(of)i(the)g
+(nature)f(of)h(transferred)e(con)n(ten)n(t.)h(The)h(idea)f(here)h(is)f
+(that)h(b)n(y)g(making)523 2615 y(it)g(hard)f(for)g(in)n(termediaries)g
+(to)g(determine)h(the)g(con)n(ten)n(ts)f(that)h(they)g(are)f(routing,)g
+(they)523 2714 y(are)h(less)h(lik)n(ely)f(to)i(casually)d(infringe)i
+(on)g(the)h(priv)-5 b(acy)28 b(of)h(other)g(users,)f(to)h(b)r(e)h
+(forced)e(to)523 2814 y(do)c(so)g(b)n(y)g(an)h(adv)n(ersary)c(and)k
+(\014nally)f(to)g(b)r(e)h(held)g(resp)r(onsible)f(for)g(the)h(actions)e
+(of)i(others)523 2914 y(that)34 b(they)g(w)n(ere)e(un)n(wittingly)i
+(facilitating.)p 1 0 0 TeXcolorrgb 1961 2914 a
+SDict begin H.S end
+ 1961 2914
+a -31 x Fz(2)1998 2914 y
+SDict begin 12 H.L end
+ 1998 2914 a 1998 2914 a
+SDict begin [ /Subtype /Link /Dest (Hfootnote.2) cvn /H /I /Border
+[0 0 0] /Color [1 0 0] H.B /ANN pdfmark end
+ 1998
+2914 a Black 34 w FA(Robustness)f(is)h(the)g(enco)r(ding)f(abilit)n(y)g
+(to)523 3013 y(resist)i(attac)n(ks)f(suc)n(h)h(as)f(data)h(corruption)f
+(and)h(spam.)g(Spam)g(is)g(di\013eren)n(t)h(from)e(data)523
+3113 y(corruption)29 b(in)h(that)h(the)f(goal)f(of)h(the)g(spammer)g
+(is)g(to)g(direct)g(the)g(user)g(to)g(undesirable)523
+3212 y(con)n(ten)n(t,)d(p)r(ossibly)h(hiding)f(useful)i(information)e
+(in)h(a)f(sea)g(of)h(useless)f(results.)g(Naturally)523
+3312 y(the)h(enco)r(ding)e(should)h(not)g(signi\014can)n(tly)g
+(increase)f(the)h(amoun)n(t)g(of)g(data)g(that)g(needs)g(to)523
+3412 y(b)r(e)h(transferred.)648 3512 y(The)34 b(ECRS)g(enco)r(ding)g
+(sc)n(heme)g(addresses)f(these)i(requiremen)n(ts.)e(ECRS)h(pro)n(vides)
+523 3612 y(plausible)40 b(deniabilit)n(y)f(b)n(y)h(hiding)g(the)g
+(nature)f(of)h(the)g(queries)f(and)h(resp)r(onses)e(from)523
+3711 y(in)n(termediaries)26 b(through)h(encryption.)648
+3812 y(Despite)c(the)g(fact)g(that)g(queries)f(and)h(resp)r(onses)e
+(are)h(encrypted,)h(in)n(termediaries)e(can)523 3911
+y Ft(verify)29 b FA(that)f(the)g(resp)r(onses)e(are)g(v)-5
+b(alid)28 b(with)g(resp)r(ect)f(to)g(a)g(particular)g(query)-7
+b(.)26 b(Th)n(us,)i(the)523 4011 y(enco)r(ding)38 b(mec)n(hanism)f(pro)
+n(vides)f(robustness)h(against)g(tamp)r(ering)g(and)h(false)g(replies.)
+523 4111 y(Additional)26 b(robustness)f(is)h(gained)f(in)h(ECRS)g(b)n
+(y)f(splitting)h(\014les)g(in)n(to)g(small)f(pieces)h(that)523
+4210 y(can)33 b(b)r(e)h Ft(indep)l(endently)g FA(v)n(eri\014ed,)f
+(stored)f(and)h(distributed)h(across)d(the)j(net)n(w)n(ork.)e(This)523
+4310 y(mak)n(es)e(it)h(easy)e(for)h(proto)r(cols)f(using)i(ECRS)f(to)g
+(incorp)r(orate)f(features)h(suc)n(h)g(as)g(sw)n(arm)p
+Black 523 4382 473 4 v 546 4436 a Fy(2)p 0 TeXcolorgray
+606 4376 a
+SDict begin H.S end
+ 606 4376 a 0 TeXcolorgray 0 TeXcolorgray 606
+4376 a
+SDict begin H.R end
+ 606 4376 a 606 4376 a
+SDict begin [ /View [/XYZ H.V] /Dest (Hfootnote.2) cvn H.B /DEST pdfmark
+end
+ 606 4376 a Black 92 x Fx(If)19
+b(the)g(data)g(cannot)g(b)r(e)f(iden)n(ti\014ed,)h(editorial)h(con)n
+(trol)g(is)f(tec)n(hnically)g(imp)r(ossible.)i(In)d Fp(Str)l(atton)606
+4559 y(Oakmont)36 b(v.)g(Pr)l(o)l(digy)p Fx(,)g(an)e(In)n(ternet)f(pro)
+n(vider)h(w)n(as)i(found)e(liable)i(for)f(hosting)g(a)g(bulletin)606
+4650 y(b)r(oard)29 b(on)h(whic)n(h)f(o\013ensiv)n(e)g(messages)i(had)e
+(b)r(een)g(p)r(osted.)h(This)g(\014nding)e(resulted)h(b)r(ecause)606
+4742 y(the)g(pro)n(vider)g(had)g(hired)g(individuals)h(to)f(exercise)i
+(editorial)f(con)n(trol)g(o)n(v)n(er)g(con)n(ten)n(t.)f(If)g(the)606
+4833 y(pro)n(vider)17 b(had)g(merely)h(published)f(messages)j(from)e
+(users)g(without)g(in)n(terference,)g(the)f(pro)n(vider)606
+4924 y(w)n(ould)26 b(p)r(oten)n(tially)g(not)g(ha)n(v)n(e)f(b)r(een)g
+(held)h(accoun)n(table)g([)p 0 1 0 TeXcolorrgb 2319 4924
+a
+SDict begin H.S end
+ 2319 4924 a 0 1 0 TeXcolorrgb Fx(26)p 0 1 0 TeXcolorrgb
+2396 4876 a
+SDict begin H.R end
+ 2396 4876 a 2396 4924 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.stratton_oakmont) cvn H.B /ANN pdfmark end
+ 2396 4924 a Black
+Fx(].)p Black Black Black eop end
+%%Page: 8 8
+TeXDict begin 8 7 bop 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a Black 0 TeXcolorgray
+523 232 a
+SDict begin H.S end
+ 523 232 a 0 TeXcolorgray 0 TeXcolorgray 523
+232 a
+SDict begin H.R end
+ 523 232 a 523 232 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.8) cvn H.B /DEST pdfmark
+end
+ 523 232 a Black Fx(8)237 b(C.)27
+b(Grotho\013,)f(K.)g(Grotho\013,)g(T.)h(Horozo)n(v,)f(J.T.)h(Lindgren)p
+Black Black 1957 442 a Fo(K)5 b(B)t(l)q(ock)2091 526
+y Fn(\017)p Fm(\017)p 2090 526 4 60 v 1947 603 a Fo(I)h(B)t(l)q(ock)
+2183 612 y Fl(>)1249 724 y Fn(r)p Fm(r)1249 723 y Fk(d)1288
+717 y(d)1328 710 y(d)1367 703 y(d)1407 697 y(d)1446 690
+y(d)1486 683 y(d)1525 677 y(d)1565 670 y(d)1605 663 y(d)1644
+656 y(d)1684 650 y(d)1723 643 y(d)1763 636 y(d)1802 630
+y(d)1842 623 y(d)1881 616 y(d)2091 722 y Fn(\017)p Fm(\017)p
+2090 722 4 86 v 2968 725 a Fn(,)p Fm(,)2927 718 y Fk(Z)2888
+712 y(Z)2849 705 y(Z)2810 699 y(Z)2770 692 y(Z)2731 686
+y(Z)2692 679 y(Z)2653 673 y(Z)2613 667 y(Z)2574 660 y(Z)2535
+654 y(Z)2496 647 y(Z)2456 641 y(Z)2417 634 y(Z)2378 628
+y(Z)2339 622 y(Z)2299 615 y(Z)2260 609 y(Z)953 773 y
+Fo(I)g(B)t(l)q(ock)1189 781 y Fy(1)823 866 y Fn(v)p Fm(v)p
+Fk(m)857 851 y(m)890 837 y(m)923 823 y(m)1088 892 y Fn(\017)p
+Fm(\017)p 1087 892 V 1349 865 a Fn(\()p Fm(\()1311 849
+y Fk(Q)1279 834 y(Q)1246 820 y(Q)1214 806 y(Q)2046 755
+y Fo(:)14 b(:)f(:)1752 909 y Fn(v)p Fm(v)p Fk(n)1786
+893 y(n)1821 877 y(n)1855 861 y(n)1889 845 y(n)1923 829
+y(n)1957 813 y(n)1992 798 y(n)2091 892 y Fn(\017)p Fm(\017)p
+2090 892 4 112 v 2430 909 a Fn(\()p Fm(\()2393 891 y
+Fk(P)2358 876 y(P)2324 860 y(P)2290 844 y(P)2256 828
+y(P)2222 812 y(P)2188 796 y(P)2153 780 y(P)2993 772 y
+Fo(I)6 b(B)t(l)q(ock)3229 781 y Fj(k)2856 866 y Fn(v)p
+Fm(v)2856 865 y Fk(l)2890 851 y(l)2925 836 y(l)2959 822
+y(l)3130 892 y Fn(\017)p Fm(\017)p 3129 892 4 86 v 3399
+866 a Fn(\()p Fm(\()3361 849 y Fk(Q)3327 835 y(Q)3294
+821 y(Q)3260 806 y(Q)548 942 y Fo(D)r(B)t(l)q(ock)809
+950 y Fy(1)696 1066 y Fn(\017)p Fm(\017)p 695 1066 4
+91 v 1044 925 a Fo(:)13 b(:)g(:)1088 1066 y Fn(\017)p
+Fm(\017)p 1087 1066 4 117 v 1333 942 a Fo(D)r(B)t(l)q(ock)1594
+951 y Fj(l)1476 1066 y Fn(\017)p Fm(\017)p 1474 1066
+4 91 v 2046 925 a Fo(:)h(:)f(:)2091 1035 y Fn(\017)p
+Fm(\017)p 2090 1035 4 86 v 2564 942 a Fo(D)r(B)t(l)q(ock)2825
+950 y Fj(m)2724 1066 y Fn(\017)p Fm(\017)p 2723 1066
+4 91 v 3085 925 a Fo(:)h(:)f(:)3130 1066 y Fn(\017)p
+Fm(\017)p 3129 1066 4 117 v 3376 942 a Fo(D)r(B)t(l)q(ock)3637
+950 y Fj(n)3528 1066 y Fn(\017)p Fm(\017)p 3527 1066
+4 91 v 1836 1105 a Fw(Original)41 b(data)523 1301 y Fr(Fig.)15
+b(1.)p 0 TeXcolorgray 814 1201 a
+SDict begin H.S end
+ 814 1201 a 0 TeXcolorgray
+0 TeXcolorgray 814 1201 a
+SDict begin H.R end
+ 814 1201 a 814 1201 a
+SDict begin [ /View [/XYZ H.V] /Dest (figure.1.1) cvn H.B /DEST pdfmark
+end
+ 814 1201
+a Black 100 x FA(Simple)40 b(enco)r(ding)g(of)f(a)h(\014le)g(using)f(a)
+h(tree)f(of)h(CHK)g(blo)r(c)n(ks)f(\()p Fq(D)r(B)t(l)r(ock)s
+FA(s)g(and)523 1400 y Fq(I)7 b(B)t(l)r(ock)s FA(s)41
+b(are)f(CHK)i(enco)r(ded\))f(with)h(one)g Fq(K)6 b(B)t(l)r(ock)43
+b FA(to)e(allo)n(w)g(for)g(a)g(k)n(eyw)n(ord-based)523
+1500 y(searc)n(h.)p Black Black Black 523 1957 a(distribution)e([)p
+0 1 0 TeXcolorrgb 1010 1957 a
+SDict begin H.S end
+ 1010 1957 a 0 1 0 TeXcolorrgb
+FA(13)p 0 1 0 TeXcolorrgb 1093 1904 a
+SDict begin H.R end
+ 1093 1904 a 1093
+1957 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.hartman99swarm) cvn H.B /ANN pdfmark end
+ 1093 1957 a Black FA(],)h(\014ne-grained)d(load)i(balancing)f
+(and)h(micro)r(economics)e([)p 0 1 0 TeXcolorrgb 3024
+1957 a
+SDict begin H.S end
+ 3024 1957 a 0 1 0 TeXcolorrgb FA(11)p 0 1 0 TeXcolorrgb
+3107 1904 a
+SDict begin H.R end
+ 3107 1904 a 3107 1957 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.ebe2003) cvn H.B /ANN pdfmark end
+ 3107 1957 a Black
+FA(].)i(These)523 2057 y(features)27 b(are)g(also)g(signi\014can)n(t)g
+(from)h(the)g(viewp)r(oin)n(t)g(of)g(scalabilit)n(y)-7
+b(.)27 b(When)h(all)g(handled)523 2157 y(blo)r(c)n(ks)d(are)g(small,)h
+(no)r(des)g(can)f(participate)g(in)i(the)f(net)n(w)n(ork)e(activit)n(y)
+i(ev)n(en)f(if)i(their)f(o)n(wn)523 2256 y(resources)36
+b(are)h(limited.)i(Also,)f(storing)f(small,)h(individually)g(unin)n
+(telligible)g(pieces)g(of)523 2356 y(p)r(oten)n(tially)19
+b(ob)5 b(jectionable)18 b(con)n(ten)n(t)h(is)g(lik)n(ely)f(to)h
+(further)g(supp)r(ort)g(plausible)g(deniabilit)n(y)-7
+b(.)648 2461 y(The)23 b(rest)g(of)h(this)g(Section)f(giv)n(es)g(a)g(b)r
+(ottom-up)h(description)f(of)g(ECRS.)h(After)g(a)f(brief)523
+2561 y(o)n(v)n(erview,)29 b(P)n(art)p 1 0 0 TeXcolorrgb
+1083 2561 a
+SDict begin H.S end
+ 1083 2561 a 1 0 0 TeXcolorrgb FA(3.2)p 1 0 0
+TeXcolorrgb 1189 2507 a
+SDict begin H.R end
+ 1189 2507 a 1189 2561 a
+SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(subsection.1.3.2) cvn H.B /ANN pdfmark end
+ 1189
+2561 a Black 31 w FA(sho)n(ws)h(ho)n(w)g(individual)h(data)g(blo)r(c)n
+(ks)f(are)g(encrypted)h(in)g(order)f(to)523 2660 y(mak)n(e)c(it)i(imp)r
+(ossible)f(for)g(the)h(in)n(termediaries)e(to)h(determine)g(what)g
+(they)h(are)e(storing)g(or)523 2760 y(transmitting.)k(P)n(art)p
+1 0 0 TeXcolorrgb 1219 2760 a
+SDict begin H.S end
+ 1219 2760 a 1 0 0 TeXcolorrgb
+FA(3.3)p 1 0 0 TeXcolorrgb 1325 2706 a
+SDict begin H.R end
+ 1325 2706 a 1325
+2760 a
+SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(subsection.1.3.3) cvn H.B /ANN pdfmark end
+ 1325 2760 a Black 31 w FA(then)g(describ)r(es)f(ho)n(w)h
+(\014les)g(are)f(split)h(in)n(to)g(those)f(data)h(blo)r(c)n(ks.)523
+2860 y(P)n(arts)p 1 0 0 TeXcolorrgb 742 2860 a
+SDict begin H.S end
+ 742 2860
+a 1 0 0 TeXcolorrgb FA(3.4)p 1 0 0 TeXcolorrgb 848 2806
+a
+SDict begin H.R end
+ 848 2806 a 848 2860 a
+SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(subsection.1.3.4) cvn H.B /ANN pdfmark end
+ 848 2860 a Black 25 w FA(through)p
+1 0 0 TeXcolorrgb 1184 2860 a
+SDict begin H.S end
+ 1184 2860 a 1 0 0 TeXcolorrgb
+FA(3.6)p 1 0 0 TeXcolorrgb 1290 2806 a
+SDict begin H.R end
+ 1290 2806 a 1290
+2860 a
+SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(subsection.1.3.6) cvn H.B /ANN pdfmark end
+ 1290 2860 a Black 26 w FA(motiv)-5 b(ates)25 b(and)g(explains)f
+(ho)n(w)h(ECRS)g(enables)f(users)g(to)i(searc)n(h)523
+2959 y(for)f(con)n(ten)n(t)f(without)i(exp)r(osing)e(the)h(\(plain)n
+(text\))h(query)e(or)g(the)h(corresp)r(onding)e(con)n(ten)n(t)523
+3059 y(and)39 b(ho)n(w)g(in)n(termediaries)f(can)h(v)n(erify)f(that)i
+(a)f(giv)n(en)f(encrypted)h(reply)g(matc)n(hes)g(the)523
+3158 y(encrypted)e(query)-7 b(.)36 b(Finally)-7 b(,)37
+b(the)h(core)e(of)h(ECRS)g(is)f(summarized)h(in)g(the)h(form)e(of)h(an)
+523 3258 y(algorithm)26 b(and)i(a)f(proto)r(col)f(example.)523
+3446 y
+SDict begin H.S end
+ 523 3446 a 523 3446 a
+SDict begin 12 H.A end
+ 523 3446 a 523 3446 a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.3.1) cvn H.B /DEST
+pdfmark end
+ 523
+3446 a 89 x Fr(3.1)95 b(Ov)m(erview)523 3729 y FA(In)37
+b(ECRS,)g(the)g(enco)r(ded)f(represen)n(tation)f(of)i(a)g(\014le)f(is)h
+(a)f(collection)h(of)f(small)h(blo)r(c)n(ks.)523 3828
+y(There)j(are)f(four)h(t)n(yp)r(es)g(of)g(blo)r(c)n(ks:)g
+Ft(DBlo)l(cks)p FA(,)h Ft(IBlo)l(cks)p FA(,)g Ft(SBlo)l(cks)h
+FA(and)e Ft(KBlo)l(cks)p FA(.)h(The)523 3928 y(maxim)n(um)e(size)f(of)h
+(all)g(blo)r(c)n(ks)f(in)h(ECRS)f(is)h(supp)r(osed)g(to)f(b)r(e)i
+(\014xed)f(b)n(y)f(some)g(small)523 4028 y(n)n(um)n(b)r(er,)29
+b(for)h(example)f(32k.)f(The)i(blo)r(c)n(ks)f(are)g(used)g(to)h(create)
+e(a)i(tree)f(structure)g(of)h(the)523 4127 y(enco)r(ded)35
+b(\014le)h(\(see)g(Figure)p 1 0 0 TeXcolorrgb 1437 4127
+a
+SDict begin H.S end
+ 1437 4127 a 1 0 0 TeXcolorrgb FA(1)p 1 0 0 TeXcolorrgb
+1479 4074 a
+SDict begin H.R end
+ 1479 4074 a 1479 4127 a
+SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(figure.1.1) cvn H.B /ANN pdfmark end
+ 1479 4127 a Black
+FA(\).)g(The)f(actual)g(\014le)h(data)f(is)g(enco)r(ded)h(in)g
+Ft(DBlo)l(cks)g FA(whic)n(h)523 4227 y(are)j(organized)g(b)n(y)h(a)g
+(tree)f(of)i Ft(IBlo)l(cks)p FA(.)g(The)g Ft(IBlo)l(cks)p
+FA(,)g(whic)n(h)f(are)g(similar)f(to)h(UNIX)523 4327
+y(ino)r(des)32 b([)p 0 1 0 TeXcolorrgb 807 4327 a
+SDict begin H.S end
+ 807
+4327 a 0 1 0 TeXcolorrgb FA(19)p 0 1 0 TeXcolorrgb 890
+4273 a
+SDict begin H.R end
+ 890 4273 a 890 4327 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.mckusick84fast) cvn H.B /ANN pdfmark end
+ 890 4327 a Black FA(],)g(are)f
+(indirection-blo)r(c)n(ks)g(whic)n(h)g(enco)r(de)h(ho)n(w)g(the)g
+(leaf-no)r(des)f(of)h(the)g(tree)523 4426 y(can)22 b(b)r(e)h(reassem)n
+(bled)e(in)n(to)h(the)h(original)d(\014le.)j(Ev)n(ery)e
+Ft(IBlo)l(ck)i FA(pro)n(vides)e(the)i(data)f(required)523
+4526 y(to)29 b(request,)g(decrypt)g(and)g(v)n(erify)f(the)i(con)n(ten)n
+(ts)e(of)h(its)h(direct)f(c)n(hildren.)g(V)-7 b(eri\014cation)28
+b(is)523 4625 y(done)38 b(using)f(hash)h(co)r(des)f(of)h(the)g(c)n
+(hildren,)g(similar)f(to)h(the)g(w)n(a)n(y)e(a)i(Merkle)f(tree)h([)p
+0 1 0 TeXcolorrgb 3299 4625 a
+SDict begin H.S end
+ 3299 4625 a 0 1 0 TeXcolorrgb
+FA(20)p 0 1 0 TeXcolorrgb 3382 4572 a
+SDict begin H.R end
+ 3382 4572 a 3382
+4625 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.merkle89tree) cvn H.B /ANN pdfmark end
+ 3382 4625 a Black FA(])523 4725 y(w)n(orks.)27
+b(Giv)n(en)i(the)g(size)f(of)h(the)g(\014le,)g(the)g(top)g
+Ft(IBlo)l(ck)h FA(uniquely)f(iden)n(ti\014es)g(the)g(con)n(ten)n(ts)523
+4825 y(of)h(the)g(en)n(tire)f(\014le.)h Ft(KBlo)l(cks)g
+FA(and)g Ft(SBlo)l(cks)g FA(facilitate)g(obtaining)f(the)h(k)n(ey)f
+(\(to)h(decrypt\))523 4924 y(and)d(query)g(\(to)h(request\))f(for)g
+(the)h(top)g Ft(IBlo)l(ck)p FA(.)p Black Black eop end
+%%Page: 9 9
+TeXDict begin 9 8 bop 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a Black 0 TeXcolorgray
+523 232 a
+SDict begin H.S end
+ 523 232 a 0 TeXcolorgray 0 TeXcolorgray 523
+232 a
+SDict begin H.R end
+ 523 232 a 523 232 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.9) cvn H.B /DEST pdfmark
+end
+ 523 232 a Black 1036 w Fx(An)25
+b(Enco)r(ding)h(for)h(Censorship-Resistan)n(t)f(Sharing)238
+b(9)p Black 523 365 a
+SDict begin H.S end
+ 523 365 a 523 365 a
+SDict begin 12 H.A end
+ 523 365 a 523
+365 a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.3.2) cvn H.B /DEST
+pdfmark end
+ 523 365 a 83 x Fr(3.2)95 b Fi(DBlo)-5 b(cks)523
+632 y FA(Ev)n(ery)38 b Ft(DBlo)l(ck)j FA(corresp)r(onds)d(to)h(32k)g
+(of)h(the)g(original)e(\014le)i(\(the)h(last)e(blo)r(c)n(k)h(ma)n(y)f
+(b)r(e)523 732 y(padded)31 b(with)h(zeros\).)f Ft(DBlo)l(ck)p
+FA(s)h(are)e(encrypted)h(using)g(a)g(symmetric)g(cipher.)g(The)h(k)n
+(ey)523 831 y(for)26 b(the)i(cipher)e(for)h(the)g Ft(DBlo)l(ck)h
+FA(corresp)r(onding)d(to)i(the)g(plain)n(text)g Fq(B)2782
+843 y Fh(i)2836 831 y FA(is)g Fq(K)2990 843 y Fh(i)3040
+831 y FA(:=)c Fq(H)7 b FA(\()p Fq(B)3322 843 y Fh(i)3350
+831 y FA(\).)523 931 y(This)36 b(guaran)n(tees)d(that)j(the)g(same)f
+(blo)r(c)n(k)g(will)h(alw)n(a)n(ys)d(b)r(e)j(encrypted)g(with)g(the)g
+(same)523 1031 y(k)n(ey)-7 b(.)29 b(Also,)h(the)g(in)n(tegrit)n(y)f(of)
+g(the)h(decrypted)g(blo)r(c)n(k)f(can)h(b)r(e)g(v)n(eri\014ed)f(b)n(y)g
+(c)n(hec)n(king)g(that)523 1130 y Fq(K)594 1142 y Fh(i)644
+1130 y FA(=)23 b Fq(H)7 b FA(\()p Fq(B)903 1142 y Fh(i)931
+1130 y FA(\).)21 b(The)f(encrypted)h(blo)r(c)n(k)f Fq(E)1822
+1142 y Fh(K)1878 1150 y Fg(i)1909 1130 y FA(\()p Fq(B)2004
+1142 y Fh(i)2032 1130 y FA(\))h(can)f(b)r(e)h(uniquely)g(iden)n
+(ti\014ed)g(b)n(y)g(its)f(hash)523 1230 y Fq(Q)589 1242
+y Fh(i)649 1230 y FA(:=)33 b Fq(H)7 b FA(\()p Fq(E)939
+1242 y Fh(K)995 1250 y Fg(i)1025 1230 y FA(\()p Fq(B)1120
+1242 y Fh(i)1148 1230 y FA(\)\).)34 b(A)g(p)r(eer)f(can)g(query)g(for)g
+Fq(E)2142 1242 y Fh(K)2198 1250 y Fg(i)2228 1230 y FA(\()p
+Fq(B)2323 1242 y Fh(i)2351 1230 y FA(\))h(using)f Fq(Q)2706
+1242 y Fh(i)2767 1230 y FA(without)h(rev)n(ealing)523
+1330 y Fq(K)594 1342 y Fh(i)621 1330 y FA(.)39 b(Consequen)n(tly)-7
+b(,)38 b(the)h(pair)f(\()p Fq(K)1664 1342 y Fh(i)1692
+1330 y Fq(;)14 b(Q)1795 1342 y Fh(i)1822 1330 y FA(\))39
+b(can)f(b)r(e)h(used)g(to)g(retriev)n(e)e(and)i(decrypt)f
+Fq(B)3354 1342 y Fh(i)3382 1330 y FA(.)523 1429 y(In)n(termediaries)28
+b(can)g(v)n(erify)g(that)i(a)e(resp)r(onse)g Fq(E)2105
+1441 y Fh(K)2161 1449 y Fg(i)2192 1429 y FA(\()p Fq(B)2287
+1441 y Fh(i)2315 1429 y FA(\))h(matc)n(hes)f(a)h(query)f
+Fq(Q)3067 1441 y Fh(i)3124 1429 y FA(without)523 1529
+y(kno)n(wing)j Fq(K)926 1541 y Fh(i)953 1529 y FA(.)i(F)-7
+b(reenet)32 b([)p 0 1 0 TeXcolorrgb 1333 1529 a
+SDict begin H.S end
+ 1333
+1529 a 0 1 0 TeXcolorrgb FA(5)p 0 1 0 TeXcolorrgb 1375
+1475 a
+SDict begin H.R end
+ 1375 1475 a 1375 1529 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.clark99distributed) cvn H.B /ANN pdfmark end
+ 1375 1529 a Black FA(])h(uses)e(the)i
+(same)f(sc)n(heme)g(to)g(encrypt)g(en)n(tire)g(\014les)h(\(not)f(just)
+523 1628 y(blo)r(c)n(ks\))27 b(and)h(the)g(authors)e(call)h(the)h(pair)
+f(\()p Fq(K)1981 1640 y Fh(i)2009 1628 y Fq(;)14 b(Q)2112
+1640 y Fh(i)2139 1628 y FA(\))28 b(a)f(con)n(ten)n(t)g(hash)g(k)n(ey)g
+(\(CHK\).)523 1813 y
+SDict begin H.S end
+ 523 1813 a 523 1813 a
+SDict begin 12 H.A end
+ 523 1813 a
+523 1813 a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.3.3) cvn H.B /DEST
+pdfmark end
+ 523 1813 a 82 x Fr(3.3)95 b Fi(IBlo)-5 b(cks)523
+2079 y FA(F)e(or)32 b(\014les)h(larger)e(than)h(the)i(blo)r(c)n(ksize,)
+e(m)n(ultiple)h(CHK)f(k)n(eys)g(are)g(required)g(to)g(retriev)n(e)523
+2179 y(the)25 b(con)n(ten)n(t.)g(F)-7 b(or)25 b(example,)f(with)i(a)f
+(blo)r(c)n(ksize)f(of)h(32k)f(and)h(512)e(bit)j(hash)e(co)r(des,)h(a)g
+(32m)523 2278 y(\014le)f(w)n(ould)e(b)r(e)i(split)g(in)n(to)f(1024)e
+Ft(DBlo)l(cks)j Fq(B)1910 2290 y Fz(1)1948 2278 y Fq(;)14
+b(:)g(:)g(:)f(;)h(B)2195 2290 y Fz(1024)2355 2278 y FA(of)23
+b(length)h(32k)e(eac)n(h.)g(Groups)h(of)523 2378 y(up)k(to)f(256)f
+(CHKs)h(are)f(assem)n(bled)g(in)n(to)h(one)g(32k)f Ft(IBlo)l(ck)p
+FA(,)j(resulting)e(in)g(four)g Ft(IBlo)l(ck)p FA(s)i(for)523
+2478 y(the)c(32m)g(\014le.)g(The)g(resulting)f Ft(IBlo)l(ck)p
+FA(s)i(are)e(CHK)h(encrypted)g(just)g(lik)n(e)g(the)g
+Ft(DBlo)l(cks)h FA(and)523 2577 y(their)30 b(CHK-k)n(eys)e(are)h(again)
+g(group)r(ed)g(in)n(to)h Ft(IBlo)l(cks)h FA(un)n(til)f(only)g(one)f
+(CHK)h(k)n(ey)f(is)h(left.)523 2677 y(F)-7 b(or)31 b(the)i(32m)e
+(\014le,)h(the)g(CHKs)g(for)f(the)h(four)g Ft(IBlo)l(ck)p
+FA(s)h(are)e(th)n(us)h(collected)f(in)i(one)e(\014nal)523
+2776 y(top)25 b Ft(IBlo)l(ck)p FA(.)i(The)f(additional)f(space)f
+(requiremen)n(ts)h(for)g(enco)r(ding)g(the)h(\014le)f(are)g(t)n
+(ypically)523 2876 y(less)i(than)h(1\045)f(of)h(the)g(original)e
+(\014le)i(size.)523 3056 y
+SDict begin H.S end
+ 523 3056 a 523 3056 a
+SDict begin 12 H.A end
+ 523
+3056 a 523 3056 a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.3.4) cvn H.B /DEST
+pdfmark end
+ 523 3056 a 87 x Fr(3.4)95 b(Finding)30
+b(\014les)523 3327 y FA(The)35 b(CHK)h(enco)r(ding)e(describ)r(ed)i(so)
+e(far)h(is)g(useful)h(for)f(transmitting)g(con)n(ten)n(t)g(that)g(is)
+523 3426 y(enco)r(ded)e(and)h(y)n(et)f(v)n(eri\014able)f(for)h(in)n
+(termediaries.)f(Ho)n(w)n(ev)n(er,)f(a)i(practical)g(\014le-sharing)523
+3526 y(sc)n(heme)e(needs)g(to)h(ha)n(v)n(e)e(w)n(a)n(ys)g(for)h(the)h
+(users)f(to)g(obtain)g(the)h(query)f(and)g(the)h(k)n(ey)f(that)523
+3626 y(are)f(no)n(w)h(necessary)f(in)h(order)f(to)h(retriev)n(e)f(the)i
+(enco)r(ded)f(con)n(ten)n(t.)g(While)h(out-of-band)523
+3725 y(comm)n(unication)24 b(of)h(those)g(CHK)f(k)n(eys)g(is)h
+(certainly)f(feasible,)h(an)g(in)n(tegrated)f(solution)g(is)523
+3825 y(clearly)i(desirable.)648 3928 y(The)e(k)n(ey)g(problem)g(for)g
+(the)h(searc)n(h)e(is)h(that)h(simply)f(publishing)h(CHK)f(k)n(eys)g
+(in)g(plain-)523 4028 y(text)36 b(under)g(certain)f(k)n(eyw)n(ords)f
+(\(as)h(done)h(in)g(F)-7 b(reenet)35 b(with)i(KSK)e(k)n(eys\))g(has)g
+(v)-5 b(arious)523 4127 y(dra)n(wbac)n(ks.)24 b(First,)i(in)n
+(termediaries)f(w)n(ould)h(learn)g(ab)r(out)g(the)g(CHK)h(k)n(eys)e
+(that)i(they)f(are)523 4227 y(storing)32 b(or)g(transmitting,)h(whic)n
+(h)g(ma)n(y)f(allo)n(w)g(them)h(to)g(easily)f(censor)g(searc)n(h)f
+(results.)523 4327 y(Second,)e(the)h(k)n(eyw)n(ords)d(are)i(exp)r(osed)
+g(to)g(the)h(in)n(termediaries,)e(whic)n(h)h(again)f(w)n(ould)h(fa-)523
+4426 y(cilitate)d(censorship.)e(Finally)-7 b(,)25 b(p)r(eers)g(w)n
+(ould)g(b)r(e)h(able)f(to)h(send)f(in)n(v)-5 b(alid)25
+b(replies)g(that)h(refer)523 4526 y(to)e(inappropriate)g(con)n(ten)n
+(t.)g(This)g(ma)n(y)g(b)r(e)h(just)g(a)f(n)n(uisance)g(if)h(malicious)f
+(p)r(eers)g(use)h(this)523 4625 y(for)j(adv)n(ertising)g(\(this)h(kind)
+g(of)g(b)r(eha)n(vior)f(can)g(b)r(e)i(observ)n(ed)d(on)i(gn)n(utella)f
+(from)h(time)g(to)523 4725 y(time\).)j(Ho)n(w)n(ev)n(er,)d(if)i(a)f
+(net)n(w)n(ork)g(w)n(an)n(ts)g(to)g(economically)g(rew)n(ard)f(p)r
+(eers)h(for)h(returning)523 4825 y(searc)n(h)g(results)h(the)h(p)r
+(ossibilit)n(y)f(of)h(returning)e(arbitrary)g(nonsense)h(w)n(ould)g
+(mak)n(e)f(suc)n(h)523 4924 y(incen)n(tiv)n(e)c(sc)n(hemes)g
+(impractical.)p Black Black eop end
+%%Page: 10 10
+TeXDict begin 10 9 bop 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a Black 0 TeXcolorgray
+523 232 a
+SDict begin H.S end
+ 523 232 a 0 TeXcolorgray 0 TeXcolorgray 523
+232 a
+SDict begin H.R end
+ 523 232 a 523 232 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.10) cvn H.B /DEST pdfmark
+end
+ 523 232 a Black Fx(10)199 b(C.)27
+b(Grotho\013,)f(K.)g(Grotho\013,)g(T.)h(Horozo)n(v,)f(J.T.)h(Lindgren)p
+Black 648 448 a FA(But)33 b(ho)n(w)g(can)g(a)g(system)g(prev)n(en)n(t)g
+(p)r(eers)g(from)g(returning)g(in)n(v)-5 b(alid)33 b(resp)r(onses)f(to)
+h(a)523 548 y(searc)n(h?)23 b(Since)i(the)g(nature)f(of)h(a)f(searc)n
+(h)f(is)i(that)g(the)g(initiator)f(do)r(es)g(not)h(kno)n(w)f(precisely)
+523 648 y(what)31 b(con)n(ten)n(t)f(is)h(desired,)g(it)g(is)g(imp)r
+(ossible)g(for)f(the)h(query)f(to)h(completely)g(determine)523
+747 y(the)37 b(reply)-7 b(.)36 b(F)-7 b(or)36 b(this)g(reason)f(sc)n
+(hemes)h(lik)n(e)g(CHK)g(cannot)g(b)r(e)h(applied)f(to)h(the)g(searc)n
+(h)523 847 y(problem.)24 b(Instead,)f(ECRS)h(m)n(ust)g(trust)g(the)h
+(user)e(who)h(is)g(uploading)f(the)h(con)n(ten)n(t.)g(That)523
+946 y(user)32 b(m)n(ust)h(sp)r(ecify)h(appropriate)d(k)n(eyw)n(ords)f
+(and)j(metadata)g(that)g(prop)r(erly)f(describ)r(es)523
+1046 y(the)f(con)n(ten)n(t.)g(Clearly)e(this)i(trust)g(ma)n(yb)r(e)g
+(misplaced.)f(Namespaces)g(are)f(a)i(solution)f(to)523
+1146 y(this)d(problem)f(since)g(they)h(enable)f(users)g(to)g(learn)g
+(whic)n(h)g(other)g(users)g(are)g(trust)n(w)n(orth)n(y)-7
+b(.)523 1299 y
+SDict begin H.S end
+ 523 1299 a 523 1299 a
+SDict begin 12 H.A end
+ 523 1299 a 523 1299
+a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.3.5) cvn H.B /DEST
+pdfmark end
+ 523 1299 a 84 x Fr(3.5)95 b(Namespaces)523 1537 y FA(One)25
+b(w)n(a)n(y)f(to)i(a)n(v)n(oid)d(searc)n(hing)h(in)i(an)f(un)n(trust)n
+(w)n(orth)n(y)f(global)g(k)n(eyw)n(ord)f(space)i(that)h(ma)n(y)523
+1637 y(con)n(tain)21 b(mostly)g(inappropriately)f(lab)r(eled)i(con)n
+(ten)n(t)f(is)g(to)h(restrict)e(the)i(searc)n(h)e(to)i(names-)523
+1736 y(paces.)c(A)i(namespace)e(is)g(a)h(k)n(eyw)n(ord)e(space)h(that)i
+(con)n(tains)e(con)n(ten)n(t)g(that)h(is)g(cryptograph-)523
+1836 y(ically)g(signed)g(with)h(the)g(same)f(priv)-5
+b(ate)19 b(k)n(ey)-7 b(.)19 b(The)g(concept)g(of)h(namespaces)e(is)h
+(also)g(presen)n(t)523 1936 y(in)31 b(F)-7 b(reenet)32
+b([)p 0 1 0 TeXcolorrgb 947 1936 a
+SDict begin H.S end
+ 947 1936 a 0 1 0 TeXcolorrgb
+FA(5)p 0 1 0 TeXcolorrgb 988 1882 a
+SDict begin H.R end
+ 988 1882 a 988 1936
+a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.clark99distributed) cvn H.B /ANN pdfmark end
+ 988 1936 a Black FA(],)f(but)h(with)g(F)-7 b(reenet)31
+b(it)g(is)g(not)g(p)r(ossible)g(to)g(obtain)g(m)n(ultiple)h(results)e
+(b)n(y)523 2035 y(searc)n(hing)e(a)h(namespace.)f(F)-7
+b(ortunately)g(,)29 b(it)h(is)g(easy)e(to)h(add)h Ft(se)l(ar)l(chable)h
+FA(namespaces)d(to)523 2135 y(ECRS.)648 2234 y(In)22
+b(ECRS,)g(a)g(namespace)f(is)i(iden)n(ti\014ed)f(b)n(y)g(a)g
+(public-priv)-5 b(ate)22 b(k)n(ey)g(pair)g(\(also)f(referred)523
+2334 y(to)k(as)g(the)h(pseudon)n(ym\).)f(The)h(priv)-5
+b(ate)25 b(k)n(ey)g(is)g(used)h(to)f(sign)g(the)h(con)n(ten)n(t)f(that)
+h(is)f(placed)523 2434 y(in)n(to)e(the)g(namespace,)f(and)h(the)g
+(public)h(k)n(ey)e(\(or)g(more)g(precisely)-7 b(,)22
+b(the)i(hash)e(of)h(the)h(public)523 2533 y(k)n(ey\))38
+b(is)g(used)g(as)g(a)g(public)g(handle)g(that)h(is)f(used)g(to)g(refer)
+g(to)g(the)h(namespace.)e(An)n(y)523 2633 y(user)d(can)g(create)g(an)n
+(y)g(n)n(um)n(b)r(er)g(of)h(pseudon)n(yms.)f(Once)g(the)h(user)f
+(accesses)f(\014les)h(from)523 2733 y(a)41 b(particular)f(namespace)g
+(it)i(is)f(p)r(ossible)g(to)g(form)g(an)g(opinion)g(ab)r(out)g(a)g
+(particular)523 2832 y(pseudon)n(ym,)27 b(whic)n(h)h(can)f(then)h(b)r
+(e)g(used)g(to)f(target)g(the)h(searc)n(h.)648 2932 y(Adding)37
+b(namespaces)g(to)g(the)h(design)f(requires)f(a)h(new)h(t)n(yp)r(e)g
+(of)f(blo)r(c)n(k,)g(called)g(an)523 3031 y Ft(SBlo)l(ck)p
+FA(.)25 b(An)g Ft(SBlo)l(ck)g FA(con)n(tains)f(the)g(k)n(ey)g(and)g
+(query)f(\(CHK\))i(of)f(the)h(top)f Ft(IBlo)l(ck)i FA(together)523
+3131 y(with)h(metadata)e(ab)r(out)h(the)g(con)n(ten)n(t,)g(thereb)n(y)f
+(allo)n(wing)g(users)g(that)i(receiv)n(e)d(an)i Ft(SBlo)l(ck)523
+3231 y FA(to)32 b(do)n(wnload)g(the)h(\014le.)f(Ho)n(w)n(ev)n(er,)f
+(this)i(data)f(is)g(encrypted)g(suc)n(h)h(that)f(in)n(termediaries)523
+3330 y(do)c(not)g(learn)f(an)n(ything)h(ab)r(out)g(the)g(referenced)g
+(\014le.)g(The)g(encryption)g(k)n(ey)f(is)h(the)g(hash)523
+3430 y(of)33 b(an)f(iden)n(ti\014er)h(that)f(the)i(inserter)d(c)n(hose)
+h(for)g(the)h(con)n(ten)n(t.)f(The)h(iden)n(ti\014er)g(do)r(es)f(not)
+523 3530 y(ha)n(v)n(e)f(to)g(b)r(e)h(unique)g(and)g(can,)f(for)h
+(example,)f(b)r(e)h(a)f(k)n(eyw)n(ord)f(\(to)i(allo)n(w)f(searc)n(hing)
+f(the)523 3629 y(namespace\))i(or)g(a)g(passw)n(ord)f(\(for)h(priv)-5
+b(ate)33 b(con)n(ten)n(t\).)f(The)h(encrypted)g(p)r(ortion)f(of)h(the)
+523 3729 y Ft(SBlo)l(ck)28 b FA(is)f(follo)n(w)n(ed)e(b)n(y)i(a)g(hash)
+f(co)r(de)h(whic)n(h)f(is)h(the)g Ft(query)h FA(for)e(the)h(con)n(ten)n
+(t.)g(The)g(query)523 3828 y(is)32 b(the)g(hash)f(of)h(the)g(k)n(ey)f
+(\(or)g(the)h(hash)f(of)h(the)g(hash)f(of)h(the)g(iden)n(ti\014er\).)g
+(When)g(a)g(user)523 3928 y(searc)n(hes)d(a)h(namespace,)f(the)i
+(request)f(con)n(tains)g(the)h(pseudon)n(ym)f(\(hash)g(of)h(the)g
+(public)523 4028 y(k)n(ey\))36 b(together)f(with)i(the)g(query)-7
+b(.)35 b(By)h(using)g(the)h(hash)f(of)g(the)g(k)n(ey)g(as)f(the)i
+(query)f(the)523 4127 y(correct)g Ft(SBlo)l(ck)j FA(can)f(b)r(e)g(iden)
+n(ti\014ed)g(b)n(y)f(in)n(termediaries)g(but)h(not)g(decrypted.)g(A)n
+(t)g(the)523 4227 y(same)f(time,)h(only)f(the)g(iden)n(ti\014er)g(and)h
+(the)f(pseudon)n(ym)g(are)f(required)h(to)g(searc)n(h)f(the)523
+4327 y(namespace.)23 b(Finally)-7 b(,)25 b Ft(SBlo)l(ck)p
+FA(s)g(con)n(tain)e(digital)h(signature)f(of)i(the)f(con)n(ten)n(t.)g
+(This)g(allo)n(ws)523 4426 y(in)n(termediaries)35 b(to)i(v)n(erify)e
+(that)i(a)f(giv)n(en)g Ft(SBlo)l(ck)h FA(w)n(as)f(created)g(b)n(y)g
+(the)h(o)n(wner)e(of)i(the)523 4526 y(namespace.)648
+4625 y(Since)32 b Ft(SBlo)l(ck)p FA(s)i(are)d(signed,)h(it)h(is)g(p)r
+(ossible)f(to)h(allo)n(w)e(up)r(dates.)i(Without)g(a)f(digital)523
+4725 y(signature,)26 b(a)h(secure)f(up)r(date)i(mec)n(hanism)e(is)h
+(imp)r(ossible,)g(since)g(an)n(y)n(one)f(could)h(publish)523
+4825 y(a)j(p)r(oten)n(tially)g(illegitimate)g(up)r(date.)g(If)h(the)f
+(up)r(date)h(requires)e(a)h(matc)n(hing)f(digital)h(sig-)523
+4924 y(nature,)35 b(forged)f(up)r(dates)h(are)g(imp)r(ossible.)g(In)g
+(order)f(to)h(allo)n(w)f(con)n(ten)n(t)h(up)r(dates,)h(the)p
+Black Black eop end
+%%Page: 11 11
+TeXDict begin 11 10 bop 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a Black 0 TeXcolorgray
+523 232 a
+SDict begin H.S end
+ 523 232 a 0 TeXcolorgray 0 TeXcolorgray 523
+232 a
+SDict begin H.R end
+ 523 232 a 523 232 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.11) cvn H.B /DEST pdfmark
+end
+ 523 232 a Black 1036 w Fx(An)25
+b(Enco)r(ding)h(for)h(Censorship-Resistan)n(t)f(Sharing)199
+b(11)p Black 523 448 a FA(metadata)34 b(of)h(an)f Ft(SBlo)l(ck)i
+FA(can)e(con)n(tain)g(information)g(ab)r(out)h(when)g(and)f(under)h
+(whic)n(h)523 548 y(iden)n(ti\014ers)c(up)r(dates)g(ma)n(y)g(b)r(e)g
+(published.)h(If)f(suc)n(h)g(forw)n(ard)e(p)r(oin)n(ters)i(are)f
+(presen)n(t,)h(the)523 648 y(o)n(wner)f(of)g(the)i(namespace)e(can)g
+(decide)h(to)g(publish)g(up)r(dates)g(to)g(a)f(particular)g(\014le)h
+(at)f(a)523 747 y(later)35 b(time.)g(Since)h(the)g(priv)-5
+b(ate)35 b(k)n(ey)f(used)h(for)g(signing)g(is)g(o)n(wned)f(b)n(y)h(a)g
+(single)g(en)n(tit)n(y)-7 b(,)523 847 y(consistency)33
+b(issues)h(from)g(parallel)f(up)r(dates)h(do)g(not)h(arise.)e(ECRS)h
+(do)r(es)g(not)g(prev)n(en)n(t)523 946 y(the)28 b(o)n(wner)e(of)i(the)g
+(namespace)f(to)g(publish)h(con\015icting)f(up)r(dates.)648
+1046 y(It)22 b(should)h(b)r(e)g(recognized)e(that)i(the)g(same)f
+(\014le)g(can)h(b)r(e)g(part)f(of)g(m)n(ultiple)h(namespaces)523
+1146 y(under)k(m)n(ultiple)h(iden)n(ti\014ers)f(without)h(the)g(need)f
+(for)g(storing)f(the)i(\014le)f(m)n(ultiple)h(times)g(in)523
+1245 y(the)37 b(net)n(w)n(ork.)e(The)i Ft(IBlo)l(cks)h
+FA(and)e Ft(DBlo)l(cks)i FA(of)e(the)h(\014le)g(do)f(not)h(need)g(to)f
+(b)r(e)h(c)n(hanged)523 1345 y(when)28 b(the)g(namespace)e(or)h
+(namespace)g(iden)n(ti\014er)g(c)n(hanges.)648 1445 y(Ho)n(w)n(ev)n
+(er,)d(namespaces)h(cannot)g(completely)h(solv)n(e)f(the)i(searc)n(h)d
+(problem.)i(Most)g(im-)523 1544 y(p)r(ortan)n(tly)-7
+b(,)31 b(users)g(w)n(ould)h(still)g(ha)n(v)n(e)e(to)i(\014nd)g(the)g
+(namespaces)f(themselv)n(es,)g(and)h(while)523 1644 y(it)g(can)g(b)r(e)
+g(assumed)f(that)i(users)e(can)g(guess)g(k)n(eyw)n(ords,)f(they)i(are)f
+(unlik)n(ely)g(to)h(b)r(e)g(able)523 1743 y(to)d(guess)f(public)h(k)n
+(eys)f(for)h(a)f(namespace)g(searc)n(h.)g(ECRS)g(solv)n(es)g(this)h
+(problem)f(b)n(y)h(also)523 1843 y(o\013ering)g(a)g(pure)h(k)n(eyw)n
+(ord-based)d(searc)n(h)h(in)i(a)g Ft(glob)l(al)h FA(k)n(eyw)n(ord)d
+(space)h(where)h(an)n(y)f(user)523 1943 y(can)35 b(adv)n(ertise)g(con)n
+(ten)n(t.)g(Here,)g(the)h(disadv)-5 b(an)n(tage)34 b(is)i(clearly)f
+(that)h(it)g(is)f(p)r(ossible)h(for)523 2042 y(malicious)h(users)g(to)h
+(p)r(ollute)g(the)g(global)f(k)n(eyw)n(ord)f(space)h(with)h(adv)n
+(ertisemen)n(ts)e(and)523 2142 y(other)24 b(inappropriate)g(data.)g(Ho)
+n(w)n(ev)n(er,)f(it)i(is)g(assumed)g(that)g(in)g(that)g(case)f(users)g
+(will)h(use)523 2242 y(k)n(eyw)n(ords)j(that)j(are)e(more)h(di\016cult)
+h(to)f(guess)f(or)h(only)f(use)i(the)f(global)f(k)n(eyw)n(ord)g(space)
+523 2341 y(to)e(disco)n(v)n(er)e(trust)n(w)n(orth)n(y)h(namespaces)g({)
+h(th)n(us)g(a)n(v)n(oiding)e(the)j(spam)f(most)g(of)g(the)g(time.)523
+2495 y
+SDict begin H.S end
+ 523 2495 a 523 2495 a
+SDict begin 12 H.A end
+ 523 2495 a 523 2495 a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.3.6) cvn H.B /DEST
+pdfmark end
+ 523
+2495 a 83 x Fr(3.6)95 b(Keyw)m(ord)32 b(searc)m(h)523
+2733 y FA(This)23 b(section)f(describ)r(es)g(ho)n(w)g(the)i(CHK)e(k)n
+(eys)g(that)h(are)f(necessary)f(to)i(retriev)n(e)e(a)h(\014le)h(can)523
+2832 y(b)r(e)34 b(obtained)g(b)n(y)g(searc)n(hing)e(using)h(natural)h
+(language)e Ft(keywor)l(ds)j FA({)f(without)g(rev)n(eiling)523
+2932 y(the)20 b(k)n(eyw)n(ords)e(to)h(in)n(termediaries.)g(Searc)n
+(hing)f(requires)h(the)h(con)n(ten)n(t)f(pro)n(vider)f(to)i(supply)523
+3031 y(metadata)28 b(ab)r(out)g(the)g(\014le,)h(in)f(particular)f(a)h
+(list)g(of)g(k)n(eyw)n(ords.)e(It)j(is)f(assumed)f(that)i(the)523
+3131 y(user)39 b(searc)n(hing)f(for)h(data)g(is)h(able)f(to)h
+Ft(guess)f FA(at)h(least)f(one)g(of)h(these)f(k)n(eyw)n(ords.)f(The)523
+3231 y(nature)28 b(of)h(the)f(searc)n(h)f(implies)i(that)g(there)f(is)h
+(no)f(direct,)g(cryptographically)e(v)n(eri\014able)523
+3330 y(relation)35 b(b)r(et)n(w)n(een)h(the)h(k)n(eyw)n(ord)d(and)i
+(the)g(con)n(ten)n(t.)g(Man)n(y)g(\014les)g(can)f(matc)n(h)h(a)g(giv)n
+(en)523 3430 y(k)n(eyw)n(ord,)f(and)i(di\013eren)n(t)g(users)f(ma)n(y)g
+(ev)n(en)g(sometimes)h(ha)n(v)n(e)f(a)g(di\013eren)n(t)h(p)r(erception)
+523 3530 y(of)i(what)f(is)h(a)f(correct)f(seman)n(tic)h(matc)n(h.)h(Th)
+n(us)f(a)g(k)n(eyw)n(ord)f(searc)n(h)g(alw)n(a)n(ys)g(has)h(the)523
+3629 y(p)r(oten)n(tial)f(of)f(resulting)g(in)h(searc)n(h)e(results)h
+(that)h(a)g(user)f(ma)n(y)f(\014nd)j(inappropriate.)d(It)523
+3729 y(is)j(also)f(not)h(p)r(ossible)g(to)g(prev)n(en)n(t)f(a)g(user)h
+(from)f(supplying)h(k)n(eyw)n(ords)e(that)i(ha)n(v)n(e)f(no)523
+3828 y(seman)n(tic)c(relation)f(with)h(the)h(con)n(ten)n(t)e(and)h
+(thereb)n(y)f(increasing)g(the)h(c)n(hance)g(of)g(other)523
+3928 y(users)27 b(\014nding)g(undesirable)g(results)g(for)g(those)h(k)n
+(eyw)n(ords.)648 4028 y(Ho)n(w)n(ev)n(er,)21 b(ECRS)j(should)f(\(and)h
+(can\))f(giv)n(e)g(some)g(un)n(usual)g Ft(guar)l(ante)l(es)g
+FA(for)g(k)n(eyw)n(ord-)523 4127 y(based)29 b(searc)n(hes.)e(First,)j
+(the)f(k)n(eyw)n(ord)f(used)h(for)g(a)g(searc)n(h)f(is)h(not)g(exp)r
+(osed)g(to)h(in)n(terme-)523 4227 y(diaries)h(in)h(a)f(w)n(a)n(y)f
+(that)i(w)n(ould)f(allo)n(w)g(them)h(to)f(easily)g(exercise)g
+(editorial)f(con)n(trol)h(\(i.e.)523 4327 y(to)c(censor)g(queries\).)g
+(Again)g(a)g(guessing)f(attac)n(k,)h(where)g(the)h(in)n(termediary)e
+(guesses)h(the)523 4426 y(k)n(eyw)n(ord)e(and)i(can)g(then)g(compute)h
+(the)f(query)f(for)h(this)g(k)n(eyw)n(ord,)f(is)h(acceptable.)f(Plau-)
+523 4526 y(sible)g(deniabilit)n(y)f(for)g(the)h(in)n(termediaries)f(is)
+g(una\013ected)h(b)n(y)f(this)h(attac)n(k.)f(Second,)g(only)523
+4625 y(p)r(eers)36 b(that)i(ha)n(v)n(e)d(con)n(ten)n(t)i(a)n(v)-5
+b(ailable)35 b(under)i(the)g(giv)n(en)f(k)n(eyw)n(ord)f(should)h(b)r(e)
+i(able)e(to)523 4725 y(pro)r(duce)24 b(a)f(v)-5 b(alid)25
+b(resp)r(onse.)e(In)h(other)f(w)n(ords,)g(the)i(ultimate)f(resp)r
+(onder)f(m)n(ust)i(ha)n(v)n(e)d(suc-)523 4825 y(ceeded)30
+b(in)g(guessing)f(the)i(k)n(eyw)n(ord.)d(This)i(is)g(imp)r(ortan)n(t)f
+(since)h(it)h(prev)n(en)n(ts)e(p)r(eers)g(from)523 4924
+y(making)24 b(up)h(replies)f(for)g(arbitrary)f(requests)h(on-the-\015y)
+-7 b(.)24 b(If)h(p)r(eers)f(w)n(ere)g(able)g(to)h(resp)r(ond)p
+Black Black eop end
+%%Page: 12 12
+TeXDict begin 12 11 bop 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a Black 0 TeXcolorgray
+523 232 a
+SDict begin H.S end
+ 523 232 a 0 TeXcolorgray 0 TeXcolorgray 523
+232 a
+SDict begin H.R end
+ 523 232 a 523 232 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.12) cvn H.B /DEST pdfmark
+end
+ 523 232 a Black Fx(12)199 b(C.)27
+b(Grotho\013,)f(K.)g(Grotho\013,)g(T.)h(Horozo)n(v,)f(J.T.)h(Lindgren)p
+Black 523 448 a FA(to)g(an)n(y)g(k)n(eyw)n(ord)f(query)h(without)h(ha)n
+(ving)e(to)i(at)f(least)g(guess)g(the)h(k)n(eyw)n(ord,)d(they)j(could)
+523 548 y(use)38 b(this)h(to)f(spam)f(ev)n(ery)g(p)r(ossible)h(searc)n
+(h,)f(rendering)g(the)h(k)n(eyw)n(ord)f(searc)n(h)f(mostly)523
+648 y(useless.)e(F)-7 b(orcing)33 b(resp)r(onders)g(to)h(guess)f(k)n
+(eyw)n(ords)f(do)r(es)i(not)g(eliminate)h(the)g(problem)523
+747 y(completely)-7 b(.)23 b(Ho)n(w)n(ev)n(er,)e(it)j(do)r(es)f(limit)h
+(the)f(attac)n(k)f(to)h(the)h(common,)e(easily)h(guessed)f(k)n(ey-)523
+847 y(w)n(ords.)32 b(Finally)-7 b(,)34 b(the)g(v)n(eri\014cation)e
+(that)i(a)f(resp)r(onse)g(is)h(v)-5 b(alid)33 b(should)h(b)r(e)g(p)r
+(ossible)f(not)523 946 y(only)27 b(for)g(the)h(\014nal)g(recipien)n(t,)
+f(but)h(also)f(for)g(in)n(termediaries.)648 1055 y(ECRS)38
+b(ac)n(hiev)n(es)g(all)g(of)h(this)h(with)f(a)g Ft(new)h(crypto)l(gr)l
+(aphic)j(primitive)p FA(,)e(whic)n(h)e(is)f(a)523 1155
+y(public-priv)-5 b(ate)35 b(k)n(ey)g(pair)g(\()p Fq(P)1481
+1167 y Fh(pub)1588 1155 y FA(\()p Fq(K)6 b FA(\))p Fq(;)14
+b(P)1819 1167 y Fh(pr)r(iv)1949 1155 y FA(\()p Fq(K)6
+b FA(\)\))36 b(that)g(is)f(generated)g(from)g(a)g(k)n(eyw)n(ord)523
+1254 y Fq(K)6 b FA(.)34 b(The)g(k)n(eyw)n(ord)e Fq(K)40
+b FA(is)33 b(used)h(as)g(the)g(seed)g(and)g(only)g(input)g(to)g(the)h
+(pseudo-random)523 1354 y(n)n(um)n(b)r(er)30 b(generator)e(that)i(is)g
+(used)g(in)g(the)h(generation)d(of)i(the)h(public-priv)-5
+b(ate)29 b(k)n(ey)h(pair.)523 1454 y(The)h(authors)f(are)g(not)i(a)n(w)
+n(are)d(of)i(an)n(y)f(previous)g(use)h(of)g Fq(K)6 b
+FA(-deterministic)31 b(public-k)n(eys.)523 1553 y(Giv)n(en)k(suc)n(h)f
+(a)h Fq(K)6 b FA(-deterministic)34 b(public-priv)-5 b(ate)34
+b(k)n(ey)-7 b(,)35 b(ECRS)f(generates)g Ft(KBlo)l(ck)p
+FA(s)h(b)n(y)523 1653 y(signing)27 b(the)h(metadata)e(necessary)g(to)h
+(do)n(wnload)g(the)g(\014le)h(with)g Fq(P)2675 1665 y
+Fh(pr)r(iv)2833 1653 y FA(b)n(y)f(the)h(inserting)523
+1753 y(p)r(eer.)36 b Ft(KBlo)l(ck)p FA(s)h(are)e(essen)n(tially)g(lik)n
+(e)g Ft(SBlo)l(ck)p FA(s)i(only)e(that)i(the)f Fq(K)6
+b FA(-determinate)35 b(k)n(ey)g(is)523 1852 y(used)28
+b(instead)f(of)h(the)g(pseudon)n(ym.)648 1961 y(A)e(p)r(eer)h(searc)n
+(hing)d(for)i Fq(K)32 b FA(also)25 b(computes)h Fq(P)2094
+1973 y Fh(pub)2202 1961 y FA(\()p Fq(K)6 b FA(\))26 b(using)g(the)h
+(same)f(deterministic)523 2060 y(k)n(ey-generation)31
+b(algorithm)i(\()p Fq(P)1555 2072 y Fh(pr)r(iv)1685 2060
+y FA(\()p Fq(K)6 b FA(\))34 b(is)f(also)g(computed)h(but)g(not)g
+(used\).)f(The)h(p)r(eer)523 2160 y(then)28 b(uses)f
+Fq(H)7 b FA(\()p Fq(P)1049 2172 y Fh(pub)1156 2160 y
+FA(\()p Fq(K)f FA(\)\))28 b(as)e(the)i(query)-7 b(.)27
+b(In)n(termediaries)e(can)i(v)n(erify)g(that)g(the)h(resp)r(onse)523
+2260 y(is)k(prop)r(erly)e(signed)h(b)n(y)h(a)f(public)h(k)n(ey)f(that)h
+(hashes)f(to)h(the)g(query)-7 b(,)31 b(but)h(are)f(unable)g(to)523
+2359 y(decrypt)h(the)h(resp)r(onse)e(or)h(learn)f(the)i
+Fq(K)38 b FA(that)33 b(w)n(as)e(used)i(to)f(generate)f(the)i(public)g
+(k)n(ey)523 2459 y(without)28 b(guessing.)648 2568 y(In)k(conclusion,)g
+(using)h Ft(KBlo)l(ck)p FA(s)g(it)g(is)g(p)r(ossible)f(to)g(allo)n(w)g
+(in)n(termediaries)f(to)i(v)n(erify)523 2667 y(the)21
+b(in)n(tegrit)n(y)f(of)h(replies)f(without)h(learning)f(ab)r(out)g(the)
+h(query)f(or)g(the)h(resp)r(onse.)f Ft(KBlo)l(ck)p FA(s)523
+2767 y(require)29 b(a)h(k)n(eyw)n(ord)e(guess,)i(making)f(it)i(it)g
+(harder)e(to)h(reply)g(to)g(arbitrary)e(queries)h(with)523
+2867 y(random)24 b(data;)g(they)i(cannot)e(prev)n(en)n(t)g(users)g
+(from)h(inserting)f(suc)n(h)g(data)h(under)g(p)r(opular)523
+2966 y(k)n(eyw)n(ords.)i(The)h(receiv)n(er)f(of)i(the)g
+Ft(KBlo)l(ck)h FA(can)e(retriev)n(e)f(the)i(rest)g(of)f(the)h(\014le)g
+(tree)f(using)523 3066 y(CHK)g(queries)e(in)i(the)g(same)f(w)n(a)n(y)f
+(as)h(it)h(is)g(done)f(for)g Ft(SBlo)l(ck)p FA(s.)523
+3268 y
+SDict begin H.S end
+ 523 3268 a 523 3268 a
+SDict begin 12 H.A end
+ 523 3268 a 523 3268 a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.3.7) cvn H.B /DEST
+pdfmark end
+ 523
+3268 a 92 x Fr(3.7)95 b(Summary)523 3572 y FA(The)32
+b(ECRS)g(enco)r(ding)f(algorithm)g(is)h(summarized)f(in)h(Figure)p
+1 0 0 TeXcolorrgb 2610 3572 a
+SDict begin H.S end
+ 2610 3572 a 1 0 0 TeXcolorrgb
+FA(2)p 1 0 0 TeXcolorrgb 2652 3518 a
+SDict begin H.R end
+ 2652 3518 a 2652
+3572 a
+SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(figure.1.2) cvn H.B /ANN pdfmark end
+ 2652 3572 a Black FA(.)g(Figure)p 1 0 0 TeXcolorrgb
+2973 3572 a
+SDict begin H.S end
+ 2973 3572 a 1 0 0 TeXcolorrgb FA(3)p 1 0 0
+TeXcolorrgb 3015 3518 a
+SDict begin H.R end
+ 3015 3518 a 3015 3572 a
+SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(figure.1.3) cvn H.B /ANN pdfmark end
+ 3015
+3572 a Black 32 w FA(sho)n(ws)f(the)523 3671 y(sequence)26
+b(of)h(messages)e(exc)n(hanged)g(b)n(y)i(p)r(eers)f(to)h(do)n(wnload)e
+(a)i(64k)e(\014le)i(starting)f(with)h(a)523 3771 y(k)n(eyw)n(ord.)523
+3973 y
+SDict begin H.S end
+ 523 3973 a 523 3973 a
+SDict begin 12 H.A end
+ 523 3973 a 523 3973 a
+SDict begin [ /View [/XYZ H.V] /Dest (section.1.4) cvn H.B /DEST pdfmark
+end
+ 523
+3973 a 109 x Fu(4)112 b(Extensions)523 4327 y FA(The)33
+b(v)-5 b(anilla)32 b(ECRS)g(enco)r(ding)g(sc)n(heme)g(\(as)g(discussed)
+g(in)g(the)h(previous)e(section\))i(still)523 4426 y(lea)n(v)n(es)22
+b(some)h(practical)f(problems)h(that)g(should)g(b)r(e)h(addressed)e(to)
+h(facilitate)h(real-life)e(us-)523 4526 y(abilit)n(y)-7
+b(.)25 b(F)-7 b(or)25 b(example,)h(the)g(man)n(ual)f(e\013ort)g(of)h
+(assigning)e(or)g(guessing)h(k)n(eyw)n(ords)e(should)523
+4625 y(b)r(e)h(minimized.)g(Also,)f(the)h(o)n(v)n(erall)d(system)j
+(should)f(b)r(e)h(e\016cien)n(t)f(in)h(practice;)f(th)n(us,)g(o)n(v)n
+(er-)523 4725 y(head)32 b(caused)g(b)n(y)g(random)g(accesses)f(of)i
+(small)f(blo)r(c)n(ks)g(and)g(frequen)n(t)g(queries)g(m)n(ust)h(b)r(e)
+523 4825 y(handled)j(prop)r(erly)-7 b(.)35 b(The)i(follo)n(wing)e
+(subsections)g(presen)n(t)h(some)f(ideas)h(on)f(ho)n(w)h(these)523
+4924 y(issues)27 b(can)g(b)r(e)h(addressed.)p Black Black
+eop end
+%%Page: 13 13
+TeXDict begin 13 12 bop 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a Black 0 TeXcolorgray
+523 232 a
+SDict begin H.S end
+ 523 232 a 0 TeXcolorgray 0 TeXcolorgray 523
+232 a
+SDict begin H.R end
+ 523 232 a 523 232 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.13) cvn H.B /DEST pdfmark
+end
+ 523 232 a Black 1036 w Fx(An)25
+b(Enco)r(ding)h(for)h(Censorship-Resistan)n(t)f(Sharing)199
+b(13)p Black Black 523 369 2882 4 v 523 439 a
+SDict begin H.S end
+ 523 439
+a 523 439 a
+SDict begin 11 H.A end
+ 523 439 a 523 439 a
+SDict begin [ /View [/XYZ H.V] /Dest (Item.1) cvn H.B /DEST pdfmark
+end
+ 523 439 a Black 563 496
+a Fx(1.)p Black 42 w(Input:)25 b(Con)n(ten)n(t)g Fo(C)5
+b Fx(,)26 b(a)g(list)h(of)f(k)n(eyw)n(ords)f Ff(f)p Fo(K)2014
+504 y Fy(1)2049 496 y Fo(;)14 b(:::)p Ff(g)27 b Fx(and)e(metadata)h
+Fo(D)r Fx(.)523 514 y
+SDict begin H.S end
+ 523 514 a 523 514 a
+SDict begin 11 H.A end
+ 523 514 a 523
+514 a
+SDict begin [ /View [/XYZ H.V] /Dest (Item.2) cvn H.B /DEST pdfmark
+end
+ 523 514 a Black 563 587 a Fx(2.)p Black 42 w(Split)g(con)n(ten)n
+(t)f Fo(C)30 b Fx(in)n(to)c(blo)r(c)n(ks)g Fo(B)1653
+595 y Fj(i)1680 587 y Fx(,)f(eac)n(h)h(of)h(size)f(32k.)h(Call)g(these)
+e Fp(DBlo)l(cks)p Fx(.)523 602 y
+SDict begin H.S end
+ 523 602 a 523 602 a
+SDict begin 11 H.A end
+
+523 602 a 523 602 a
+SDict begin [ /View [/XYZ H.V] /Dest (Item.3) cvn H.B /DEST pdfmark
+end
+ 523 602 a Black 563 678 a Fx(3.)p
+Black 42 w(Compute)f(hash)f(v)l(alues)h Fo(H)1469 643
+y Fj(k)q(ey)1463 698 y(i)1590 678 y Fx(=)d Fo(H)6 b Fx(\()p
+Fo(B)1829 686 y Fj(i)1855 678 y Fx(\),)23 b Fo(E)1986
+686 y Fj(i)2034 678 y Fx(=)e Fo(E)2172 686 y Fj(H)2222
+698 y Fg(k)q(ey)2321 678 y Fx(\()p Fo(B)2409 686 y Fj(i)2436
+678 y Fx(\))i(and)g Fo(H)2706 643 y Fj(q)r(uer)r(y)2700
+698 y(i)2891 678 y Fx(=)e Fo(H)6 b Fx(\()p Fo(E)3129
+686 y Fj(i)3154 678 y Fx(\).)24 b(F)-6 b(orm)664 785
+y Fp(CHK)835 793 y Fj(i)887 785 y Fx(from)26 b(\()p Fo(H)1168
+749 y Fj(q)r(uer)r(y)1162 804 y(i)1332 785 y Fo(;)13
+b(H)1436 749 y Fj(k)q(ey)1430 804 y(i)1536 785 y Fx(\).)26
+b(P)n(ad)g(con)n(ten)n(t)f(\(with)h(zeros\))g(if)h(needed.)523
+804 y
+SDict begin H.S end
+ 523 804 a 523 804 a
+SDict begin 11 H.A end
+ 523 804 a 523 804 a
+SDict begin [ /View [/XYZ H.V] /Dest (Item.4) cvn H.B /DEST pdfmark
+end
+ 523 804
+a Black 563 876 a Fx(4.)p Black 42 w(Store)f Fo(E)922
+884 y Fj(i)973 876 y Fx(under)f(the)g(name)h Fo(H)1598
+840 y Fj(q)r(uer)r(y)1592 896 y(i)1762 876 y Fx(.)523
+896 y
+SDict begin H.S end
+ 523 896 a 523 896 a
+SDict begin 11 H.A end
+ 523 896 a 523 896 a
+SDict begin [ /View [/XYZ H.V] /Dest (Item.5) cvn H.B /DEST pdfmark
+end
+ 523 896
+a Black 563 967 a Fx(5.)p Black 42 w(If)g(there)f(is)g(more)h(than)f
+(one)g(blo)r(c)n(k,)h(group)f(the)g(blo)r(c)n(ks)g(in)n(to)h(disjoin)n
+(t)g(sets)g Fo(I)2942 975 y Fj(j)2999 967 y Fx(of)g(up)e(to)i(256)664
+1059 y(mem)n(b)r(ers.)e(F)-6 b(or)23 b(eac)n(h)h Fo(I)1348
+1067 y Fj(j)1380 1059 y Fx(,)f(create)h Fp(Iblo)l(ck)1838
+1067 y Fj(j)1894 1059 y Fx(con)n(taining)g(the)f Fp(CHK)p
+Fx(s)g(of)h(the)f(blo)r(c)n(ks)g(in)g Fo(I)3185 1067
+y Fj(j)3218 1059 y Fx(.)g(Add)664 1150 y(zero)k(padding)e(if)h(needed.)
+g(Pro)r(cess)h(eac)n(h)f(new)g(32k)g(blo)r(c)n(k)f(obtained)h(as)g(in)g
+(step)p 1 0 0 TeXcolorrgb 3084 1150 a
+SDict begin H.S end
+ 3084 1150 a 1 0 0
+TeXcolorrgb Fx(3)p 1 0 0 TeXcolorrgb 3123 1102 a
+SDict begin H.R end
+ 3123
+1102 a 3123 1150 a
+SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(Item.3) cvn H.B /ANN pdfmark end
+ 3123 1150 a Black Fx(.)523 1165 y
+SDict begin H.S end
+
+523 1165 a 523 1165 a
+SDict begin 11 H.A end
+ 523 1165 a 523 1165 a
+SDict begin [ /View [/XYZ H.V] /Dest (Item.6) cvn H.B /DEST pdfmark
+end
+ 523 1165
+a Black 563 1241 a Fx(6.)p Black 42 w(If)e(the)f(size)i(of)f
+Fo(C)29 b Fx(w)n(as)24 b(smaller)i(than)d(32k)h(\(and)f(th)n(us)g
+(there)g(is)h(only)g(one)g(pair)g(of)g(hashco)r(des)664
+1332 y Fp(CHK)835 1340 y Fy(0)870 1332 y Fx(\),)h(create)h
+Fp(SBlo)l(ck)p Fx(s)f(and)g Fp(KBlo)l(ck)p Fx(s)h(con)n(taining)g
+Fp(CHK)2436 1340 y Fy(0)2470 1332 y Fx(,)f(the)g(metadata)h
+Fo(D)h Fx(ab)r(out)e(the)664 1424 y(con)n(ten)n(t)i(and)g(the)g
+(original)i(length)f(of)g Fo(C)5 b Fx(.)28 b(Encrypt)f(and)g(sign)h
+(the)f(resulting)h Fp(SBlo)l(ck)p Fx(s)g(and)664 1515
+y Fp(KBlo)l(ck)p Fx(s.)p 523 1649 2882 4 v Black 1253
+1789 a Fr(Fig.)14 b(2.)p 0 TeXcolorgray 1531 1690 a
+SDict begin H.S end
+ 1531
+1690 a 0 TeXcolorgray 0 TeXcolorgray 1531 1690 a
+SDict begin H.R end
+ 1531
+1690 a 1531 1690 a
+SDict begin [ /View [/XYZ H.V] /Dest (figure.1.2) cvn H.B /DEST pdfmark
+end
+ 1531 1690 a Black 99 x FA(The)28 b(ECRS)f(enco)r
+(ding)h(algorithm.)p Black Black Black 523 1941 2882
+4 v 523 2064 a Fo(B)h Fx(shares)e(\014le)f Fo(B)1024
+2072 y Fy(0)1058 2064 y Fo(;)13 b(B)1150 2072 y Fy(1)1211
+2064 y Fx(under)25 b(k)n(eyw)n(ord)g(\\test".)p Black
+523 2221 a Fo(A)c Ff(!)g Fo(B)t Fv(:)p Black 41 w Fx(Query:)k
+Fo(H)6 b Fx(\()p Fo(R)q(S)t(A)1350 2190 y Fj(pub)1449
+2221 y Fx(\()p Fo(H)g Fx(\(\\)p Fo(test)1745 2190 y Fl(00)1784
+2221 y Fx(\)\)\))p Black 523 2313 a Fo(B)25 b Ff(!)c
+Fo(A)p Fv(:)p Black 41 w Fx(Resp)r(onse:)34 b(\()p Fo(E)1281
+2325 y Fj(H)t Fy(\(\\)p Fj(test)1495 2311 y Fe(00)1535
+2325 y Fy(\))1563 2313 y Fx(\()p Fo(Q)1654 2321 y Fy(0)1688
+2313 y Fo(;)13 b(K)1787 2321 y Fy(0)1822 2313 y Fo(;)g(siz)s(e)p
+Fx(\))p Fo(;)g(R)q(S)t(A)2225 2281 y Fj(pub)2324 2313
+y Fx(\()p Fo(H)6 b Fx(\(\\)p Fo(test)2620 2281 y Fl(00)2659
+2313 y Fx(\)\))p Fo(;)13 b(sig)s Fx(\))33 b(where)g Fo(sig)j
+Fx(is)e(a)664 2404 y(signature)27 b(generated)f(with)g
+Fo(R)q(S)t(A)1691 2372 y Fj(pr)r(iv)1812 2404 y Fx(\()p
+Fo(H)6 b Fx(\(\\)p Fo(test)2108 2372 y Fl(00)2147 2404
+y Fx(\)\))25 b(\(encrypted)g Fp(KBlo)l(ck)p Fx(\))p Black
+523 2495 a Fo(A)c Ff(!)g Fo(B)t Fv(:)p Black 41 w Fx(Query:)k
+Fo(Q)1143 2503 y Fy(0)1203 2495 y Fx(\(CHK-query\))p
+Black 523 2587 a Fo(B)g Ff(!)c Fo(A)p Fv(:)p Black 41
+w Fx(Resp)r(onse:)26 b Fo(E)1243 2595 y Fj(K)1294 2605
+y Fd(0)1330 2587 y Fx(\()p Fo(Q)1421 2595 y Fy(1)1455
+2587 y Fo(;)14 b(K)1555 2595 y Fy(1)1589 2587 y Fo(;)f(Q)1684
+2595 y Fy(2)1718 2587 y Fo(;)h(K)1818 2595 y Fy(2)1852
+2587 y Fx(\))26 b(\(encrypted)e Fp(IBlo)l(ck)p Fx(\))p
+Black 523 2678 a Fo(A)d Ff(!)g Fo(B)t Fv(:)p Black 41
+w Fx(Query:)k Fo(Q)1143 2686 y Fy(1)1203 2678 y Fx(and)g
+Fo(Q)1413 2686 y Fy(2)1473 2678 y Fx(\(CHK-query\))p
+Black 523 2769 a Fo(B)g Ff(!)c Fo(A)p Fv(:)p Black 41
+w Fx(Resp)r(onse:)26 b Fo(E)1243 2777 y Fj(K)1294 2787
+y Fd(1)1330 2769 y Fx(\()p Fo(B)1418 2777 y Fy(0)1453
+2769 y Fx(\))f(and)h Fo(E)1715 2777 y Fj(K)1766 2787
+y Fd(2)1802 2769 y Fx(\()p Fo(B)1890 2777 y Fy(1)1924
+2769 y Fx(\))g(\(encrypted)e Fp(DBlo)l(ck)p Fx(s\))p
+523 2905 V Black 1059 3046 a Fr(Fig.)15 b(3.)p 0 TeXcolorgray
+1338 2946 a
+SDict begin H.S end
+ 1338 2946 a 0 TeXcolorgray 0 TeXcolorgray
+1338 2946 a
+SDict begin H.R end
+ 1338 2946 a 1338 2946 a
+SDict begin [ /View [/XYZ H.V] /Dest (figure.1.3) cvn H.B /DEST pdfmark
+end
+ 1338 2946 a Black
+100 x FA(Example)27 b(proto)r(col)f(for)h(an)h(ECRS)f(do)n(wnload.)p
+Black Black 523 3283 a
+SDict begin H.S end
+ 523 3283 a 523 3283 a
+SDict begin 12 H.A end
+ 523 3283
+a 523 3283 a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.4.1) cvn H.B /DEST
+pdfmark end
+ 523 3283 a 83 x Fr(4.1)95 b(Keyw)m(ord)32
+b(inference)523 3613 y FA(One)26 b(problem)f(with)i(ECRS)e(is)h(that)g
+(the)h(con)n(ten)n(t)e(m)n(ust)h(often)h(b)r(e)f(asso)r(ciated)f(with)h
+(k)n(ey-)523 3713 y(w)n(ords.)20 b(Although)i(this)g(is)g(v)-5
+b(astly)21 b(b)r(etter)h(than)g(forcing)f(the)h(user)f(to)h(rely)f(on)g
+(meaningless)523 3812 y(bitstrings)27 b(as)g(the)h(only)f(iden)n
+(ti\014er,)h(the)g(k)n(eys)e(m)n(ust)i(still)g(b)r(e)g(c)n(hosen)e(so)h
+(that)h(the)g(target)523 3912 y(audience)g(can)h(guess)e(them.)i(The)g
+(simplest)g(non-tec)n(hnical)e(solution)i(for)f(this)g(problem,)523
+4012 y(ho)n(w)n(ev)n(er,)f(is)h(for)g(a)g(group)g(of)g(users)g(to)g
+(agree)f(on)h(an)h(informal)f(standard)f(for)h(k)n(eyw)n(ords.)523
+4111 y(If)23 b(con)n(ten)n(t)g(pro)n(viders)e(w)n(an)n(t)h(to)h(mak)n
+(e)f(it)i(easy)e(for)g(others)g(to)h(guess)f(a)h(k)n(eyw)n(ord,)e(it)i
+(is)g(t)n(yp-)523 4211 y(ically)29 b(useful)h(to)g(follo)n(w)f
+(informal)g(con)n(v)n(en)n(tions)f(for)h(k)n(eyw)n(ord)f(selection.)h
+(F)-7 b(or)29 b(example,)523 4310 y(a)e(reasonable)f(con)n(v)n(en)n
+(tion)g(ma)n(y)h(b)r(e)h(to)f(only)g(use)h(lo)n(w)n(er-case.)648
+4426 y(A)g(larger)f(problem)h(for)g(a)g(k)n(eyw)n(ord-based)e(searc)n
+(h)h(is)h(that)h(users)f(ma)n(y)g(b)r(e)h(reluctan)n(t)523
+4526 y(to)e(put)g(in)g(the)g(e\013ort)f(to)g(pro)n(vide)g(go)r(o)r(d)g
+(k)n(eyw)n(ords)e(for)i(the)h(con)n(ten)n(t)f(that)h(they)g(pro)n
+(vide.)523 4625 y(A)g(solution)f(to)h(this)g(problem)f(is)g(the)h
+Fs(libextractor)22 b FA(library)j([)p 0 1 0 TeXcolorrgb
+2575 4625 a
+SDict begin H.S end
+ 2575 4625 a 0 1 0 TeXcolorrgb FA(12)p 0 1 0
+TeXcolorrgb 2658 4572 a
+SDict begin H.R end
+ 2658 4572 a 2658 4625 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.le2005) cvn H.B /ANN pdfmark end
+ 2658
+4625 a Black FA(].)i Fs(libextractor)22 b FA(is)k(a)523
+4725 y(library)j(for)h(metadata)f(extraction)h(that)g(is)g(used)g(to)g
+(automatically)g(extract)f(k)n(eyw)n(ords)523 4825 y(and)f(other)g
+(metadata,)g(suc)n(h)g(as)g(descriptions,)g(commen)n(ts)g(and)g(mime-t)
+n(yp)r(es)h(from)f(\014les)523 4924 y(of)g(v)-5 b(arious)26
+b(formats.)p Black Black eop end
+%%Page: 14 14
+TeXDict begin 14 13 bop 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a Black 0 TeXcolorgray
+523 232 a
+SDict begin H.S end
+ 523 232 a 0 TeXcolorgray 0 TeXcolorgray 523
+232 a
+SDict begin H.R end
+ 523 232 a 523 232 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.14) cvn H.B /DEST pdfmark
+end
+ 523 232 a Black Fx(14)199 b(C.)27
+b(Grotho\013,)f(K.)g(Grotho\013,)g(T.)h(Horozo)n(v,)f(J.T.)h(Lindgren)p
+Black 523 365 a
+SDict begin H.S end
+ 523 365 a 523 365 a
+SDict begin 12 H.A end
+ 523 365 a 523 365
+a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.4.2) cvn H.B /DEST
+pdfmark end
+ 523 365 a 83 x Fr(4.2)95 b(Directories)523 617 y FA(Another)25
+b(approac)n(h)e(to)i(a)n(v)n(oiding)e(searc)n(hes)g(is)i(to)g(group)e
+(\014les)i(in)n(to)g(directories.)f(Directo-)523 716
+y(ries)k(can)g(help)h(with)h(the)f(searc)n(h)e(problem)h(since)h(they)f
+(reduce)h(the)g(need)g(for)f(searc)n(hing.)523 816 y(Also,)i(they)h
+(can)f(b)r(e)h(used)f(to)g(bundle)h(similar)f(con)n(ten)n(t)g(and)g(th)
+n(us)h(help)g(users)e(a)n(v)n(oid)g(in-)523 916 y(appropriately)g(lab)r
+(eled)h(data.)h(If)g(sev)n(eral)d(\014les)j(of)g(suc)n(h)f(a)g
+(directory)f(ha)n(v)n(e)h(appropriate)523 1015 y(descriptions,)k(it)h
+(is)g(lik)n(ely)f(that)h(the)g(other)f(\014les)h(will)g(also)f(ha)n(v)n
+(e)f(b)r(een)i(pro)n(vided)f(b)n(y)g(a)523 1115 y(non-malicious)26
+b(part)n(y)-7 b(.)648 1215 y(In)n(tegrating)38 b(directories)g(in)n(to)
+i(the)g(ECRS)f(sc)n(heme)g(is)h(fairly)f(straigh)n(tforw)n(ard.)e(A)523
+1315 y(directory)29 b(is)h(a)g(\014le)h(with)g(a)f(standard)f(\(1k\))h
+(header)g(blo)r(c)n(k)g(that)g(con)n(tains)g(an)n(y)f(n)n(um)n(b)r(er)
+523 1414 y(of)g Ft(SBlo)l(ck)p FA(s)i(or)d Ft(KBlo)l(ck)p
+FA(s)i(in)g(plain)n(text)g(\(!\).)g(Lik)n(e)f(\014les,)g(directories)f
+(are)h(imm)n(utable)g(and)523 1514 y(are)e(sub)5 b(jected)27
+b(to)h(the)g(same)f(enco)r(ding.)648 1614 y(Note)c(that)g(it)h(is)f(p)r
+(ossible)g(for)g(an)n(y)f(user)h(to)g(assem)n(ble)f(a)h(directory)f
+(that)h(refers)g(to)g(an)n(y)523 1714 y(com)n(bination)i(of)h(\014les:)
+g(user-inserted)f(\014les,)h(\014les)g(that)h(the)f(user)g(do)n
+(wnloaded,)f(\014les)h(that)523 1813 y(the)21 b(user)e(encoun)n(tered)g
+(as)h(searc)n(h)e(results)i(but)h(nev)n(er)e(do)n(wnloaded,)g(or)g(ev)n
+(en)g(in)n(v)-5 b(alid)20 b(data)523 1913 y(\(whic)n(h)34
+b(will)g(b)r(e)g(in)n(terpreted)g(as)f(references)g(that)h(corresp)r
+(ond)e(to)i(non-existen)n(t)f(\014les\).)523 2013 y(Directories)28
+b(can)h(also)f(refer)h(to)g(other)g(directories,)f(allo)n(wing)g(users)
+g(to)i(build)g(na)n(vigable)523 2112 y(structures)35
+b(similar)h(to)g(\014le)g(systems)g(\(without)h(delete)f(or)f(up)r
+(date)i(op)r(eration\))e(or)h(the)523 2212 y(W)-7 b(orld)25
+b(Wide)g(W)-7 b(eb.)26 b(While)f(deletions)g(and)g(up)r(dates)g(are)f
+(not)h(p)r(ossible,)f(it)i(is)f(p)r(ossible)f(to)523
+2311 y(refer)h(to)g(con)n(ten)n(ts)g(of)g(other)g(users)f(and)h(ev)n
+(en)g(to)h(\014les)f(or)f(directories)g(that)i(are)e(supp)r(osed)523
+2411 y(to)k(b)r(e)g(published)g(in)f(the)h(future.)523
+2579 y
+SDict begin H.S end
+ 523 2579 a 523 2579 a
+SDict begin 12 H.A end
+ 523 2579 a 523 2579 a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.4.3) cvn H.B /DEST
+pdfmark end
+ 523
+2579 a 84 x Fr(4.3)95 b(E\016cien)m(t)31 b(lo)s(okups)f(with)i(blo)s
+(om)e(\014lters)523 2831 y FA(Giv)n(en)24 b(that)h(a)g(query)e(only)i
+(requires)e(the)i(transmission)e(of)i(a)f(hash)g(co)r(de,)h(the)g(n)n
+(um)n(b)r(er)f(of)523 2931 y(queries)29 b(that)i(an)n(y)e(giv)n(en)g(p)
+r(eer)h(ma)n(y)f(receiv)n(e)g(is)h(quite)g(high.)g(The)g(bandwidth)h
+(required)523 3030 y(for)g(the)h(resp)r(onse)e(can)h(generally)f(b)r(e)
+i(discoun)n(ted,)f(since)g(eac)n(h)g(p)r(eer)g(will)h(only)f(b)r(e)g
+(able)523 3130 y(to)36 b(resp)r(ond)f(to)h(a)g(small)g(fraction)f(of)h
+(the)g(receiv)n(ed)f(queries.)h(Assuming)g(that)g(queries)523
+3230 y(dominate)23 b(the)g(tra\016c,)g(o)n(v)n(er)e(50)h(queries)g(p)r
+(er)h(second)g(could)g(b)r(e)g(transmitted)g(o)n(v)n(er)e(a)i(slo)n(w)
+523 3329 y(mo)r(dem)h(line.)h(Man)n(y)e(p)r(eers)h(could)g(not)g(p)r
+(erform)f(disk-based)g(database)g(lo)r(okups)g(at)h(suc)n(h)523
+3429 y(rates.)h(W)-7 b(orse,)25 b(if)h(p)r(eers)g(are)f(sharing)f
+(gigab)n(ytes)g(of)i(con)n(ten)n(t,)g(simply)g(k)n(eeping)f(the)h
+(index)523 3529 y(information)h(in)h(memory)f(is)g(also)g(often)g(no)h
+(longer)e(feasible.)648 3629 y(In)k(order)f(to)h(dramatically)e(reduce)
+i(the)g(necessary)f(n)n(um)n(b)r(er)h(of)g(database)f(accesses,)523
+3728 y(ECRS)c(can)g(b)r(e)g(supplemen)n(ted)h(with)f(a)g(blo)r(om)g
+(\014lter)g([)p 0 1 0 TeXcolorrgb 2275 3728 a
+SDict begin H.S end
+ 2275 3728
+a 0 1 0 TeXcolorrgb FA(3)p 0 1 0 TeXcolorrgb 2316 3675
+a
+SDict begin H.R end
+ 2316 3675 a 2316 3728 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.bloom) cvn H.B /ANN pdfmark end
+ 2316 3728 a Black FA(],)h(whic)n(h)f(is)g(a)f
+(probabilistic)g(data)523 3828 y(structure)39 b(that)h(uses)f(little)h
+(memory)f(and)g(can)g(b)r(e)h(used)g(to)f(\014lter)h(out)f(queries)g
+(that)523 3928 y(de\014nitely)29 b(cannot)f(b)r(e)i(answ)n(ered)d(b)n
+(y)h(the)h(lo)r(cal)g(p)r(eer.)f(The)h(blo)r(om)f(\014lter)h(is)g
+(guaran)n(teed)523 4027 y(to)21 b(allo)n(w)f(all)g(queries)h(that)g
+(can)f(b)r(e)i(lo)r(cally)e(answ)n(ered)f(through)i(the)g(\014lter,)g
+(and)g(will)g(reject)523 4127 y(all)33 b(but)h(a)f(statistically)g
+(insigni\014can)n(t)f(n)n(um)n(b)r(er)h(of)h(queries)e(that)i(cannot)f
+(b)r(e)g(answ)n(ered)523 4226 y(lo)r(cally)-7 b(.)648
+4327 y(The)24 b(size)g(of)g(the)h(blo)r(om)f(\014lter)g(in)g(memory)g
+(that)g(is)g(required)g(to)g(reduce)g(the)g(n)n(um)n(b)r(er)523
+4426 y(of)19 b(false-p)r(ositiv)n(es)f(to)i(appro)n(ximately)d(3\045)j
+(is)f(ab)r(out)g(one)g(b)n(yte)h(\(8)f(bit)h(with)g(5)f(blo)r(om)g
+(tests,)523 4526 y(2)565 4496 y Fc(\000)p Fz(5)685 4526
+y Fb(\031)30 b FA(3\045\))i(p)r(er)h(en)n(try)-7 b(.)31
+b(Since)i(a)f(no)r(de)g(o)r(ccasionally)f(needs)h(to)g(remo)n(v)n(e)e
+(con)n(ten)n(t)i(from)523 4625 y(the)27 b(lo)r(cal)e(database,)h
+(additional)f(bit)i(coun)n(ters)e(for)h(the)h(blo)r(om)f(\014lter)g
+(are)f(stored)h(on)g(the)523 4725 y(disk.)g(The)g(assumption)f(here)h
+(is)g(that)g(c)n(hanges)e(to)i(the)h(\014lter)f(are)f(rare)f(compared)h
+(to)h(the)523 4825 y(frequency)31 b(of)g(queries.)g(Queries)f(that)i
+(pass)e(through)h(the)h(blo)r(om)f(\014lter)g(are)g(forw)n(arded)523
+4924 y(to)d(the)f(database)g(la)n(y)n(er)f(whic)n(h)h(then)h(attempts)g
+(to)g(lo)r(cate)f(the)h(con)n(ten)n(t.)p Black Black
+eop end
+%%Page: 15 15
+TeXDict begin 15 14 bop 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a Black 0 TeXcolorgray
+523 232 a
+SDict begin H.S end
+ 523 232 a 0 TeXcolorgray 0 TeXcolorgray 523
+232 a
+SDict begin H.R end
+ 523 232 a 523 232 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.15) cvn H.B /DEST pdfmark
+end
+ 523 232 a Black 1036 w Fx(An)25
+b(Enco)r(ding)h(for)h(Censorship-Resistan)n(t)f(Sharing)199
+b(15)p Black 523 365 a
+SDict begin H.S end
+ 523 365 a 523 365 a
+SDict begin 12 H.A end
+ 523 365 a
+523 365 a
+SDict begin [ /View [/XYZ H.V] /Dest (section.1.5) cvn H.B /DEST pdfmark
+end
+ 523 365 a 83 x Fu(5)112 b(Discussion)523 640
+y FA(The)23 b(fact)g(that)h(eac)n(h)e Ft(DBlo)l(ck)i
+FA(can)f(b)r(e)g(enco)r(ded)h(indep)r(enden)n(tly)f(from)g(an)n(y)g
+(other)f Ft(DBlo)l(ck)523 739 y FA(results)35 b(in)g(an)g(imp)r(ortan)n
+(t)g(feature)f(of)h(ECRS)g(called)g Ft(on-demand)i(enc)l(o)l(ding)p
+FA(.)f(Giv)n(en)f(a)523 839 y(plain)n(text)22 b(\014le)g(and)g(an)f
+(index)i(that)f(maps)f(a)h(query)f(to)h(an)g(o\013set)g(in)g(the)g
+(\014le,)g(the)h(resulting)523 939 y Ft(DBlo)l(ck)28
+b FA(can)e(b)r(e)h(enco)r(ded)g(on-the-\015y)-7 b(,)26
+b(without)h(pro)r(cessing)f(an)n(y)g(other)g(part)g(of)h(the)g(\014le.)
+523 1038 y(This)19 b(can)f(b)r(e)h(an)g(imp)r(ortan)n(t)f(b)r(ene\014t)
+i(if)f(the)g(user)g(in)n(tends)f(to)h(k)n(eep)f(the)i(\014le)f(in)g
+(plain)n(text)f(on)523 1138 y(the)i(lo)r(cal)g(driv)n(e.)f(In)h(this)g
+(case,)f(the)h(system)g(can)f(index)h(the)h Ft(DBlo)l(cks)g
+FA(without)f(replicating)523 1237 y(the)36 b(actual)e(data,)h(storing)f
+(the)i(resulting)e Ft(IBlo)l(cks)j FA(\(and)e Ft(SBlo)l(cks)h
+FA(and)g Ft(KBlo)l(cks)p FA(\))g(and)523 1337 y(then)26
+b(later)e(pro)r(ducing)g(the)i Ft(DBlo)l(cks)g FA(only)e(using)h(the)g
+(index.)g(This)g(can)g(result)g(in)g(rather)523 1437
+y(dramatic)i(sa)n(vings)f(in)i(space)e(\(no)i(replication)f(of)g(enco)r
+(ded)h(con)n(ten)n(t\).)648 1536 y(Splitting)j(\014les)g(in)n(to)g(blo)
+r(c)n(ks)f(migh)n(t)g(b)r(e)i(p)r(erceiv)n(ed)e(as)g(ha)n(ving)g(a)g
+(negativ)n(e)g(e\013ect)h(on)523 1636 y(the)25 b(preserv)-5
+b(ation)23 b(of)h(data.)g(If)h(only)f(one)g(of)h(the)g(small)f(pieces)g
+(is)g(lost,)g(the)h(larger)e(\014le)h(can)523 1736 y(no)j(longer)g(b)r
+(e)h(reconstructed.)f(Th)n(us,)g(man)n(y)g(other)h(systems)f([)p
+0 1 0 TeXcolorrgb 2550 1736 a
+SDict begin H.S end
+ 2550 1736 a 0 1 0 TeXcolorrgb
+FA(9)p 0 1 0 TeXcolorrgb 2591 1682 a
+SDict begin H.R end
+ 2591 1682 a 2591
+1736 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.freehaven-berk) cvn H.B /ANN pdfmark end
+ 2591 1736 a Black FA(,)p 0 1 0 TeXcolorrgb 2614
+1736 a
+SDict begin H.S end
+ 2614 1736 a 0 1 0 TeXcolorrgb FA(30)p 0 1 0 TeXcolorrgb
+2698 1682 a
+SDict begin H.R end
+ 2698 1682 a 2698 1736 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.mojotech) cvn H.B /ANN pdfmark end
+ 2698 1736 a Black
+FA(])g(striv)n(e)g(to)h(k)n(eep)f(\014les)523 1835 y(in)n(tact)20
+b(or)e(use)i(erasure)d(co)r(des)i([)p 0 1 0 TeXcolorrgb
+1499 1835 a
+SDict begin H.S end
+ 1499 1835 a 0 1 0 TeXcolorrgb FA(22)p 0 1 0
+TeXcolorrgb 1583 1782 a
+SDict begin H.R end
+ 1583 1782 a 1583 1835 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.rabin89efficient) cvn H.B /ANN pdfmark end
+ 1583
+1835 a Black FA(])g(to)h(patc)n(h)f(missing)g(pieces.)g(While)h
+(erasure)e(co)r(des)h(could)523 1935 y(b)r(e)26 b(used)g(together)f
+(with)i(ECRS,)e(they)i(w)n(ould)e(con\015ict)h(with)g(the)h(p)r
+(erformance)d(b)r(ene\014ts)523 2034 y(of)h(on-demand)f(enco)r(ding.)g
+(Consequen)n(tly)-7 b(,)24 b(the)h(primary)f(mec)n(hanism)g(to)h(guard)
+e(against)523 2134 y(the)31 b(loss)e(of)i(\014les)f(enco)r(ded)g(with)h
+(ECRS)f(should)g(b)r(e)h(data)f(replication.)f(Since)i(ECRS)f(is)523
+2234 y(splitting)22 b(\014les)g(in)n(to)f(blo)r(c)n(ks)g(it)h(should)g
+(b)r(e)g(p)r(ossible)g(for)f(the)h(net)n(w)n(ork)e(to)i(duplicate)g
+(blo)r(c)n(ks)523 2333 y(at)34 b(a)f(negligible)g(cost)h(p)r(er)f(blo)r
+(c)n(k.)h(Duplicating)g(a)f(complete)h(\014le)g(of)g(sev)n(eral)e
+(gigab)n(ytes)523 2433 y(w)n(ould)j(b)r(e)h(m)n(uc)n(h)f(more)f(costly)
+h(and)g(more)g(lik)n(ely)g(to)g(fail.)g(F)-7 b(or)35
+b(large)f(\014les,)h(it)h(ma)n(y)f(b)r(e)523 2533 y(di\016cult)c(for)e
+(a)g(p)r(eer)h(to)g(\014nd)g(individual)g(hosts)g(that)g(are)f(willing)
+g(\(or)h(able\))f(to)h(pro)n(vide)523 2632 y(enough)c(space)g(to)h
+(replicate)f(the)h(complete)g(\014le)g(in)g(its)g(en)n(tiret)n(y)-7
+b(.)26 b(Also,)h(the)g(tra\016c)f(burst)523 2732 y(that)h(a)f(large)g
+(transfer)g(w)n(ould)g(imp)r(ose)h(on)f(the)h(net)n(w)n(ork)f(migh)n(t)
+g(k)n(eep)h(the)g(participating)523 2831 y(no)r(des)33
+b(busy)g(for)g(to)r(o)f(long.)h(Blo)r(c)n(ks,)f(on)h(the)g(other)g
+(hand,)g(can)g(migrate)f(quic)n(kly)g(from)523 2931 y(host)20
+b(to)h(host.)f(Storing)g(a)g(large)f(\014le)i(on)f(a)g(single)g(host)g
+(also)g(fails)g(to)g(facilitate)h(distribution)523 3031
+y(of)28 b(load)e(for)i(do)n(wnloading)e(purp)r(oses.)523
+3188 y
+SDict begin H.S end
+ 523 3188 a 523 3188 a
+SDict begin 12 H.A end
+ 523 3188 a 523 3188 a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.5.1) cvn H.B /DEST
+pdfmark end
+ 523
+3188 a 84 x Fr(5.1)95 b(A)m(ttac)m(ks)523 3430 y FA(ECRS)34
+b(is)f(op)r(en)h(to)g(t)n(w)n(o)f(t)n(yp)r(es)h(of)f(attac)n(ks)g(from)
+h(censors.)e(The)i(most)f(ob)n(vious)g(attac)n(k)523
+3530 y(a)n(v)-5 b(ailable)22 b(to)g(an)h(adv)n(ersary)d(is)j(to)g
+(guess)f(p)r(ossible)g(k)n(eyw)n(ords)f(and)i(use)g(those)f(to)h
+(compute)523 3629 y(queries)i(for)g(sp)r(eci\014c)h Ft(KBlo)l(ck)p
+FA(s.)g(The)g(adv)n(ersary)d(can)i(then)h(try)f(to)h(censor)e(these)i
+(queries.)523 3729 y(Since)g(the)g(same)f(con)n(ten)n(t)g(can)g(b)r(e)h
+(a)n(v)-5 b(ailable)25 b(under)g(man)n(y)g(k)n(eyw)n(ords,)f(this)i
+(tec)n(hnique)f(is)523 3828 y(not)j(necessary)e(successful.)h(Ho)n(w)n
+(ev)n(er,)f(this)i(guessing)e(attac)n(k)h(do)r(es)h(pro)n(vide)e(the)i
+(opp)r(or-)523 3928 y(tunit)n(y)k(for)f(limited)i(forms)e(of)g
+(censorship.)g(An)h(adv)n(ersary)c(could)k(create)e(a)i(\\blac)n
+(klist")523 4028 y(of)c(k)n(eyw)n(ords)d(and)j(attempt)g(to)g(legally)e
+(force)h(op)r(erators)f(to)h(\014lter)h(matc)n(hing)f(queries)g(or)523
+4127 y(replies.)648 4227 y(Instead)e(of)h(predicting)g(k)n(eyw)n(ords,)
+e(the)i(attac)n(k)n(er)e(can)i(also)f(try)h(to)f(obtain)h(the)h(exact)
+523 4327 y(con)n(ten)n(ts)37 b(of)h(the)g(\014le)g(\(or)f(at)h(least)g
+(the)g(exact)f(con)n(ten)n(ts)g(of)h(an)g(incriminating)f(part\).)523
+4426 y(This)d(ma)n(yb)r(e)f(ac)n(hiev)n(ed)g(b)n(y)g(searc)n(hing)f
+(the)i(net)n(w)n(ork)f(for)g(certain)g(k)n(eyw)n(ords)f(and)h(then)523
+4526 y(do)n(wnloading)i(the)i(resulting)g(con)n(ten)n(t.)f(This)h(w)n
+(a)n(y)f(the)h(attac)n(k)n(er)e(can)h(again)g(compute)523
+4625 y(the)e(query)e(for)h(the)h Ft(DBlo)l(ck)p FA(s)g(and)f
+Ft(IBlo)l(ck)p FA(s)h(and)f(also)g(obtain)g(the)g(encrypted)g
+Ft(DBlo)l(ck)p FA(s)523 4725 y(and)d Ft(IBlo)l(ck)p FA(s)h(themselv)n
+(es.)f(Again,)f(the)i(adv)n(ersary)c(can)j(then)g(try)g(to)g(censor)f
+(this)h(data.)523 4825 y(Note)25 b(that)g(this)h(attac)n(k)e(requires)g
+(the)h(adv)n(ersary)d(to)j(obtain)g(a)g(cop)n(y)f(of)h(the)h(con)n(ten)
+n(t)e(and)523 4924 y(then)g(exercise)f(a)g(certain)g(amoun)n(t)g(of)h
+(con)n(trol)e(o)n(v)n(er)g(the)i(p)r(eers)f(in)h(the)g(net)n(w)n(ork.)e
+(As)i(users)p Black Black eop end
+%%Page: 16 16
+TeXDict begin 16 15 bop 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a Black 0 TeXcolorgray
+523 232 a
+SDict begin H.S end
+ 523 232 a 0 TeXcolorgray 0 TeXcolorgray 523
+232 a
+SDict begin H.R end
+ 523 232 a 523 232 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.16) cvn H.B /DEST pdfmark
+end
+ 523 232 a Black Fx(16)199 b(C.)27
+b(Grotho\013,)f(K.)g(Grotho\013,)g(T.)h(Horozo)n(v,)f(J.T.)h(Lindgren)p
+Black 523 448 a FA(m)n(ust)22 b(ha)n(v)n(e)f(a)h(w)n(a)n(y)f(to)h
+(decrypt)g(the)g(\014le)g(solely)g(b)n(y)f(means)h(of)g(guessing)f(the)
+h(k)n(eyw)n(ord,)f(this)523 548 y(attac)n(k)j(cannot)g(b)r(e)i(a)n(v)n
+(oided.)d(A)i(fault-toleran)n(t)f(p)r(eer-to-p)r(eer)g(routing)g(proto)
+r(col)f(ma)n(y)i(b)r(e)523 648 y(able)i(to)h(route)f(the)h(con)n(ten)n
+(t)f(around)g(the)h(adv)n(ersary-con)n(trolled)23 b(censoring)j(p)r
+(eers.)648 748 y(If)39 b(suc)n(h)f(an)g(activ)n(e)g(censorship)f(attac)
+n(k)h(is)g(kno)n(wn)g(to)g(o)r(ccur)g(on)g(a)h(large)e(scale,)g(a)523
+848 y(p)r(ossible)26 b(defense)g(w)n(ould)g(b)r(e)h(to)f(publish)h(the)
+g(con)n(ten)n(t)e(with)i(sligh)n(t)f(alterations)f(for)h(eac)n(h)523
+947 y(k)n(eyw)n(ord.)20 b(A)h(single)g(space)g(inserted)g(at)g(the)h(b)
+r(eginning)f(of)g(a)g(text-do)r(cumen)n(t)h(is)f(su\016cien)n(t)523
+1047 y(to)34 b(c)n(hange)g Ft(al)t(l)h FA(blo)r(c)n(ks)f(of)g(the)h
+(ECRS)f(enco)r(ding.)p 1 0 0 TeXcolorrgb 2148 1047 a
+SDict begin H.S end
+
+2148 1047 a -30 x Fz(3)2185 1047 y
+SDict begin 12 H.L end
+ 2185 1047 a 2185 1047
+a
+SDict begin [ /Subtype /Link /Dest (Hfootnote.3) cvn /H /I /Border
+[0 0 0] /Color [1 0 0] H.B /ANN pdfmark end
+ 2185 1047 a Black 34 w FA(While)h(this)g(w)n(ould)f(defeat)g(the)h
+(use)523 1147 y(of)26 b(con)n(v)n(ergen)n(t)e(encryption)i(and)g
+(increase)f(the)h(storage)e(and)i(bandwidth)h(requiremen)n(ts,)523
+1246 y(this)20 b(w)n(ould)f(mak)n(e)f(it)i(infeasible)f(for)g(the)h
+(censor)e(to)i(e\013ectiv)n(ely)f(censor)f(all)h(of)g(the)h(v)-5
+b(arian)n(ts.)523 1346 y(Since)35 b(suc)n(h)f(a)g(p)r(o)n(w)n(erful)f
+(activ)n(e)h(attac)n(k)n(er)e(is)j(lik)n(ely)f(to)g(b)r(e)h(uncommon)f
+(the)g Ft(default)i FA(in)523 1445 y(ECRS)27 b(is)h(to)f(use)h(con)n(v)
+n(ergen)n(t)d(encryption.)648 1546 y(Both)33 b(attac)n(ks)f(fail)i(to)f
+(enable)h(in)n(termediaries)e(to)h(exercise)g(editorial)g(con)n(trol)f
+(o)n(v)n(er)523 1645 y(con)n(ten)n(t)25 b(in)g(general.)f(While)i(p)r
+(eers)f(can)g(theoretically)f(b)r(e)i(forced)e(to)h(censor)f(w)n
+(ell-kno)n(wn)523 1745 y(k)n(eyw)n(ords)d(and)h(\014les,)h(they)g(are)f
+(unable)h(to)g(censor)e(new)i(k)n(eyw)n(ords)e(or)h(unkno)n(wn)g(con)n
+(ten)n(t.)523 1845 y(As)38 b(small)g(c)n(hanges)f(to)h(the)h(con)n(ten)
+n(t)f(or)f(k)n(eyw)n(ord)g(are)g(su\016cien)n(t)h(to)g(mak)n(e)g
+(detection)523 1944 y(imp)r(ossible,)28 b(these)f(t)n(yp)r(es)h(of)f
+(censorship)g(should)g(b)r(e)h(impractical.)648 2045
+y(Another)j(serious)f(t)n(yp)r(e)i(of)g(attac)n(k)f(is)g(spamming)g
+(the)h(global)f(k)n(eyw)n(ord)f(space)g(with)523 2144
+y(useless)37 b(con)n(ten)n(t.)g(P)n(opular)f(k)n(eyw)n(ords)f(are)h(an)
+i(easy)e(target)h(since)g(they)h(are)e(lik)n(ely)h(to)523
+2244 y(b)r(e)31 b(easily)e(guessed)h(b)n(y)g(an)g(adv)n(ersary)-7
+b(.)28 b(Namespaces)h(can)h(theoretically)f(eliminate)i(this)523
+2344 y(problem,)k(ho)n(w)n(ev)n(er)e(they)j(create)f(a)g(new)g
+(di\016cult)n(y)h(in)g(assessing)d(whic)n(h)j(pseudon)n(yms)523
+2443 y(represen)n(t)29 b(users)h(that)g(pro)n(vide)f(v)-5
+b(aluable)30 b(con)n(ten)n(t.)g(A)h(secure)e(reputation)h(system,)g
+(lik)n(e)523 2543 y(Adv)n(ogato)38 b([)p 0 1 0 TeXcolorrgb
+934 2543 a
+SDict begin H.S end
+ 934 2543 a 0 1 0 TeXcolorrgb FA(15)p 0 1 0
+TeXcolorrgb 1017 2489 a
+SDict begin H.R end
+ 1017 2489 a 1017 2543 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.levien03advogato) cvn H.B /ANN pdfmark end
+ 1017
+2543 a Black FA(],)h(ma)n(y)g(b)r(e)g(a)g(step)g(to)n(w)n(ards)f(a)h
+(tec)n(hnical)f(solution)h(for)g(this)g(problem.)523
+2643 y(A)c(p)r(ossibly)f(more)g(imp)r(ortan)n(t)g(c)n(hallenge)g(for)g
+(future)h(w)n(ork)e(is)h(making)g(suc)n(h)g(complex)523
+2742 y(solutions)27 b(easily)g(accessible)f(for)h(the)h(a)n(v)n(erage)d
+(user.)523 2911 y
+SDict begin H.S end
+ 523 2911 a 523 2911 a
+SDict begin 12 H.A end
+ 523 2911 a 523
+2911 a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.5.2) cvn H.B /DEST
+pdfmark end
+ 523 2911 a 84 x Fr(5.2)95 b Fi(KBlo)-5 b(cks)32
+b Fr(or)g(triple-hash)523 3166 y FA(The)c(triple-hash)f(that)h(w)n(as)f
+(used)g(instead)h(of)g Ft(KBlo)l(ck)p FA(s)g(in)g(our)f(earlier)g(w)n
+(ork)54 b([)p 0 1 0 TeXcolorrgb 3093 3166 a
+SDict begin H.S end
+ 3093 3166
+a 0 1 0 TeXcolorrgb FA(2)p 0 1 0 TeXcolorrgb 3134 3112
+a
+SDict begin H.R end
+ 3134 3112 a 3134 3166 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.esed) cvn H.B /ANN pdfmark end
+ 3134 3166 a Black FA(])28 b(allo)n(ws)523
+3265 y(for)35 b(an)h(attac)n(k)f(b)n(y)g(an)h(activ)n(e,)f
+(participating)g(adv)n(ersary)-7 b(.)33 b(The)j(follo)n(wing)f
+(paragraphs)523 3365 y(\014rst)28 b(brie\015y)f(presen)n(t)g(the)h
+(original)e(sc)n(heme,)i(discuss)f(the)h(attac)n(k)f(and)h(then)g
+(compare)f(it)523 3464 y(with)h(the)g Ft(KBlo)l(ck)h
+FA(approac)n(h)d(tak)n(en)h(in)g(this)h(pap)r(er.)648
+3565 y(Let)37 b(an)h Ft(RBlo)l(ck)g FA(b)r(e)g(a)f(blo)r(c)n(k)g(that)h
+(con)n(tains)f(the)h(metadata)f(of)h(a)f(\014le)h(\(including)523
+3664 y(the)33 b(top)f(CHK)g(data\).)g(The)h(only)f(di\013erence)g(b)r
+(et)n(w)n(een)g Ft(RBlo)l(ck)p FA(s)h(and)f Ft(KBlo)l(ck)p
+FA(s)i(is)e(that)523 3764 y Ft(RBlo)l(ck)p FA(s)d(are)e(enco)r(ded)h
+(and)g(requested)f(using)h(the)g(triple-hash)g(sc)n(heme.)f(F)-7
+b(or)28 b(eac)n(h)f(k)n(ey-)523 3864 y(w)n(ord)k Fq(k)j
+FA(asso)r(ciated)c(with)i(a)g(\014le,)g(the)g Ft(RBlo)l(ck)g
+Fq(R)g FA(of)g(the)g(\014le)g(is)f(encrypted)h(with)g
+Fq(H)7 b FA(\()p Fq(k)s FA(\))523 3963 y(and)29 b(stored)f(under)g
+Fq(H)7 b FA(\()p Fq(H)g FA(\()p Fq(k)s FA(\)\).)30 b(Using)e(the)h(k)n
+(eyw)n(ord)e(as)h(the)h(source)f(for)g(the)h(k)n(ey)f(allo)n(ws)523
+4063 y(the)g(receiv)n(er)e(of)h(the)h(\014le)g(to)g(obtain)f(the)h(k)n
+(ey)f(b)n(y)g(guessing.)648 4163 y(Querying)39 b(for)h(an)g
+Ft(RBlo)l(ck)h FA(is)f Fr(not)h FA(straigh)n(tforw)n(ard.)c(The)k
+(problem)f(is)g(that)h(the)523 4263 y(in)n(tuitiv)n(e)g(c)n(hoice)e
+(for)h(a)g(query)-7 b(,)40 b Fq(H)7 b FA(\()p Fq(H)g
+FA(\()p Fq(k)s FA(\)\))40 b(do)r(es)g(not)h(giv)n(e)e(in)n
+(termediaries)g(a)h(w)n(a)n(y)f(to)523 4363 y(v)n(erify)32
+b(that)i(the)f(\(encrypted\))h(resp)r(onse)e(is)h(correct.)f(Instead)h
+(of)g(using)g Fq(H)7 b FA(\()p Fq(H)g FA(\()p Fq(k)s
+FA(\)\),)34 b(the)523 4462 y(initiator)d(sends)g(the)g(so-called)f
+(\\triple-hash")g(query)g Fq(H)7 b FA(\()p Fq(H)g FA(\()p
+Fq(H)g FA(\()p Fq(k)s FA(\)\)\).)32 b(A)g(p)r(eer)f(that)h(has)523
+4562 y(stored)j Fq(E)842 4577 y Fh(H)t Fz(\()p Fh(k)q
+Fz(\))994 4562 y FA(\()p Fq(R)q FA(\))i(under)f Fq(H)7
+b FA(\()p Fq(H)g FA(\()p Fq(k)s FA(\)\))37 b(can)f(matc)n(h)g(the)g
+(query)g(with)g(the)h(resp)r(onse)e(and)523 4662 y(send)27
+b(bac)n(k)e(the)i(pair)f Fq(H)7 b FA(\()p Fq(H)g FA(\()p
+Fq(k)s FA(\)\))p Fq(;)14 b(E)1640 4677 y Fh(H)t Fz(\()p
+Fh(k)q Fz(\))1792 4662 y FA(\()p Fq(R)q FA(\).)27 b(In)n(termediaries)e
+(can)h(v)n(erify)g(that)h(the)g(pro)r(of)p Black 523
+4748 473 4 v 546 4801 a Fy(3)p 0 TeXcolorgray 606 4742
+a
+SDict begin H.S end
+ 606 4742 a 0 TeXcolorgray 0 TeXcolorgray 606 4742 a
+SDict begin H.R end
+
+606 4742 a 606 4742 a
+SDict begin [ /View [/XYZ H.V] /Dest (Hfootnote.3) cvn H.B /DEST pdfmark
+end
+ 606 4742 a Black 91 x Fx(Note)g(that)f(only)g(op)
+r(erations)i(causing)g(global)g(shifts)f(in)g(the)f(data)h(ha)n(v)n(e)f
+(this)h(prop)r(ert)n(y)-6 b(.)25 b(One)606 4924 y(single-c)n(haracter)d
+(replacemen)n(t)g(c)n(hanges)f(only)g(one)g(ro)r(ot-to-leaf)i(path)d
+(in)h(the)g(enco)r(ding)g(tree.)p Black Black Black eop
+end
+%%Page: 17 17
+TeXDict begin 17 16 bop 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a Black 0 TeXcolorgray
+523 232 a
+SDict begin H.S end
+ 523 232 a 0 TeXcolorgray 0 TeXcolorgray 523
+232 a
+SDict begin H.R end
+ 523 232 a 523 232 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.17) cvn H.B /DEST pdfmark
+end
+ 523 232 a Black 1036 w Fx(An)25
+b(Enco)r(ding)h(for)h(Censorship-Resistan)n(t)f(Sharing)199
+b(17)p Black 523 448 a FA(of)40 b(authen)n(ticit)n(y)-7
+b(,)41 b Fq(H)7 b FA(\()p Fq(H)g FA(\()p Fq(k)s FA(\)\),)41
+b(hashes)e(to)h(the)h(query)f Fq(H)7 b FA(\()p Fq(H)g
+FA(\()p Fq(H)g FA(\()p Fq(k)s FA(\)\)\).)41 b(Malicious)e(p)r(eers)523
+548 y(cannot)33 b(construct)f(the)i(pro)r(of)e Fq(H)7
+b FA(\()p Fq(H)g FA(\()p Fq(k)s FA(\)\))34 b(without)f(guessing)f
+Fq(k)k FA(or)c(in)n(v)n(erting)g(the)h(hash)523 648 y(function.)648
+749 y(The)41 b(problem)g(with)h(the)f(triple-hash)g(is)g(that)h(an)f
+(adv)n(ersary)d(that)k(is)f(routing)f(a)523 849 y(resp)r(onse)35
+b(to)h(a)g(triple-hash)f(request)h(can)g(substitute)h(the)f(encrypted)g
+(con)n(ten)n(t)g(in)h(the)523 948 y Fb(f)p Fq(H)7 b FA(\()p
+Fq(H)g FA(\()p Fq(K)f FA(\)\))p Fq(;)14 b(E)1020 963
+y Fh(H)t Fz(\()p Fh(K)t Fz(\))1195 948 y FA(\()p Fq(Q;)g(K)q(;)g(siz)t
+(e)p FA(\))p Fb(g)k FA(resp)r(onse)h(while)i(main)n(taining)e(the)i
+Fq(H)7 b FA(\()p Fq(H)g FA(\()p Fq(K)f FA(\)\))21 b(tok)n(en.)523
+1048 y(The)26 b(resulting)g(reply)f Fb(f)p Fq(H)7 b FA(\()p
+Fq(H)g FA(\()p Fq(K)f FA(\)\))p Fq(;)14 b(X)7 b Fb(g)24
+b FA(still)j(lo)r(oks)e(lik)n(e)g(a)h(v)-5 b(alid)26
+b(resp)r(onse)f(to)h(the)g(triple-)523 1148 y(hash)i(query)f
+Fq(H)7 b FA(\()p Fq(H)g FA(\()p Fq(H)g FA(\()p Fq(K)f
+FA(\)\)\).)28 b(The)g(triple-hash)f(th)n(us)h(do)r(es)g(not)g(protect)f
+(against)g(suc)n(h)g(a)523 1247 y(substitution)34 b(attac)n(k)e(b)n(y)h
+(an)g(in)n(termediary)-7 b(.)32 b(The)i(impact)f(of)h(the)f(attac)n(k)g
+(is)g(suc)n(h)g(that)523 1347 y(the)c(net)n(w)n(ork)f(w)n(ould)g
+(propagate)f(and)h(cac)n(he)g(the)h(in)n(v)-5 b(alid)29
+b(replies.)f(The)h(attac)n(k)f(will)h(not)523 1447 y(prev)n(en)n(t)39
+b(the)i(spread)e(of)i(v)-5 b(alid)40 b(replies)f(through)h(other)g
+(routes)f(in)i(the)f(system)g(since)523 1546 y(m)n(ultiple)25
+b(results)f(to)g(the)g(same)g(query)f(are)h(p)r(ossible.)g(F)-7
+b(urthermore,)23 b(an)n(y)g(user)h(searc)n(hing)523 1646
+y(for)i Fq(K)32 b FA(will)27 b(not)f(see)h(the)f(in)n(v)-5
+b(alid)27 b(results.)f(The)h(reason)e(is)h(that)h(the)g(attempt)g(to)f
+(decrypt)523 1745 y Fq(X)34 b FA(with)29 b Fq(H)7 b FA(\()p
+Fq(K)f FA(\))28 b(will)g(\(with)h(high)e(probabilit)n(y\))h(result)f
+(in)h(a)g(malformed)f Ft(RBlo)l(ck)p FA(.)i(Th)n(us,)523
+1845 y(the)21 b(end-user)f(is)h(still)g(protected)f(from)h(this)g(t)n
+(yp)r(e)g(of)f(spam.)h(Nev)n(ertheless,)f(the)h(adv)n(ersary)523
+1945 y(can)27 b(abuse)g(net)n(w)n(ork)f(resources)g(for)h(transmitting)
+g(and)h(cac)n(hing)e Fq(X)7 b FA(.)648 2046 y(Replacing)26
+b(the)h(triple-hash)g(with)g Ft(KBlo)l(ck)p FA(s)h(for)f(ECRS)f(comes)h
+(at)g(a)f(relativ)n(ely)g(high)523 2146 y(price.)42 b(Where)g(the)g
+(trip)r(e-hash)g(only)f(requires)g(a)h(simple)g(hash)g(op)r(eration)f
+(to)h(v)n(erify)523 2246 y(replies,)30 b Ft(KBlo)l(ck)p
+FA(s)h(need)f(to)g(p)r(erform)g(a)g(public)g(k)n(ey)g(op)r(eration.)f
+(W)-7 b(orse,)30 b(when)g(publish-)523 2345 y(ing)d(con)n(ten)n(t)f(or)
+g(searc)n(hing,)f(the)j(triple-hash)e(sc)n(heme)g(again)g(only)g
+(requires)g(a)g(few)i(quic)n(k)523 2445 y(hash)33 b(op)r(erations)e(to)
+i(compute)h(the)f(query)g(or)f(the)h(con)n(ten)n(t.)g(With)h
+Ft(KBlo)l(ck)p FA(s,)g(the)f(cost)523 2544 y(increases)h(to)h
+(additionally)f(generating)g(a)g(public-priv)-5 b(ate)35
+b(k)n(ey)g(pair)f(in)h(addition)g(to)g(a)523 2644 y(public)28
+b(k)n(ey)f(op)r(eration)g(and)g(hash)g(op)r(erations.)648
+2746 y(Both)42 b Ft(KBlo)l(cks)h FA(and)f(the)h(triple-hash)e(are)h
+(vulnerable)f(to)h(the)h(guessing)e(attac)n(k.)523 2845
+y(Guessing)d(is)h(sligh)n(tly)f(easier)f(for)h(the)h(triple-hash)f
+(since)g(the)h(computation)g(for)f(eac)n(h)523 2945 y(guess)21
+b(is)h(m)n(uc)n(h)f(c)n(heap)r(er.)g(Ov)n(erall,)f Ft(KBlo)l(cks)j
+FA(w)n(ork)e(b)r(etter)h(than)g(the)g(triple-hash)f(against)523
+3045 y(adv)n(ersaries)f(that)j(indiscriminately)g(attempt)h(to)e(abuse)
+h(net)n(w)n(ork)e(resources,)g(but)j(at)f(the)523 3144
+y(exp)r(ense)28 b(of)f(higher)g(CPU)h(utilization)f(ev)n(en)g(in)h(the)
+g(absence)f(of)h(an)f(attac)n(k.)g(Th)n(us)g(using)523
+3244 y(the)36 b(triple-hash)e(sc)n(heme)g(ma)n(y)h(still)g(b)r(e)h
+(reasonable)d(in)i(net)n(w)n(orks)f(with)h(limited)h(CPU)523
+3343 y(p)r(o)n(w)n(er)26 b(or)h(less)g(stringen)n(t)g(securit)n(y)g
+(requiremen)n(ts.)523 3517 y
+SDict begin H.S end
+ 523 3517 a 523 3517 a
+SDict begin 12 H.A end
+ 523
+3517 a 523 3517 a
+SDict begin [ /View [/XYZ H.V] /Dest (section.1.6) cvn H.B /DEST pdfmark
+end
+ 523 3517 a 102 x Fu(6)112 b(Conclusion)523
+3828 y FA(This)24 b(pap)r(er)g(has)g(describ)r(ed)h(an)f(enco)r(ding)g
+(sc)n(heme)g(whic)n(h)g(is)g(able)g(to)h(pro)r(duce)f(the)h(same)523
+3928 y(ciphertext)f(\(with)h(the)f(exception)g(of)g(one)f(small)h
+Ft(KBlo)l(ck)h FA(p)r(er)f(k)n(eyw)n(ord\))e(for)i(the)g(encryp-)523
+4028 y(tion)36 b(of)h(a)f(\014le)g(indep)r(enden)n(t)i(of)e(the)h(k)n
+(ey\(w)n(ords\))e(c)n(hosen)g(b)n(y)h(the)h(con)n(ten)n(t)f(pro)n
+(viders.)523 4127 y(The)27 b(resulting)f(ciphertext)g(is)g(not)h
+(signi\014can)n(tly)f(larger)e(than)j(the)g(plain)n(text.)f(Arbitrary)
+523 4227 y(pieces)36 b(of)g(the)h(ciphertext)f(can)g(b)r(e)g(generated)
+f(from)h(plain)n(text)g(without)h(reading)e(un-)523 4327
+y(related)h(parts)g(of)g(the)h(plain)n(text.)g(The)f(enco)r(ding)h(mec)
+n(hanism)f(mak)n(es)f(it)i(di\016cult)h(for)523 4426
+y(censors)d(to)g(selectiv)n(ely)h(suppress)f(con)n(ten)n(t.)h(While)g
+(dictionary)f(attac)n(ks)g(on)h(the)g(pass-)523 4526
+y(w)n(ord)29 b(and)h(kno)n(wn)f(plain)n(text)h(attac)n(ks)f(on)g(the)i
+(ciphertext)f(are)f(still)h(p)r(ossible,)g(they)g(are)523
+4625 y(harmless)36 b(with)h(resp)r(ect)g(to)f(the)i(goal)d(of)i
+(deniabilit)n(y)g(for)f(in)n(termediaries.)g(The)h(basic)523
+4725 y(enco)r(ding)28 b(sc)n(heme)g(can)f(b)r(e)i(extended)f(with)h
+(directories)e(and)h(namespaces)f(whic)n(h)h(allo)n(w)523
+4825 y(for)23 b(restricting)f(searc)n(hes)f(to)i(con)n(ten)n(t)g
+(published)g(b)n(y)g(kno)n(wn)g(pseudon)n(yms.)f(Namespaces)523
+4924 y(allo)n(w)27 b(for)g(\014les)g(and)h(directories)e(to)h(b)r(e)h
+(up)r(dated.)p Black Black eop end
+%%Page: 18 18
+TeXDict begin 18 17 bop 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a Black 0 TeXcolorgray
+523 232 a
+SDict begin H.S end
+ 523 232 a 0 TeXcolorgray 0 TeXcolorgray 523
+232 a
+SDict begin H.R end
+ 523 232 a 523 232 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.18) cvn H.B /DEST pdfmark
+end
+ 523 232 a Black Fx(18)199 b(C.)27
+b(Grotho\013,)f(K.)g(Grotho\013,)g(T.)h(Horozo)n(v,)f(J.T.)h(Lindgren)p
+Black 648 448 a FA(ECRS)35 b(is)g(implemen)n(ted)h(as)f(a)g(part)g(of)h
+Fa(gnu)p FA(net,)g(a)f(secure)g(platform)g(for)g(p)r(eer-to-)523
+548 y(p)r(eer)i(net)n(w)n(orking.)f(In)i Fa(gnu)p FA(net,)g(ECRS)f(w)n
+(orks)f(to)n(w)n(ards)g(implemen)n(ting)i(anon)n(ymous,)523
+648 y(censorship-resistan)n(t)31 b(\014le-sharing.)h
+Fa(gnu)p FA(net)i(is)g(free)f(soft)n(w)n(are)f(and)i(part)f(of)g(the)h
+(GNU)523 747 y(pro)5 b(ject.)25 b(The)g Fa(gnu)p FA(net)h(co)r(de)f(is)
+h(appro)n(ximately)d(100,000)g(lines)i(of)h(C)f(co)r(de.)g(ECRS)h
+(itself)523 847 y(is)20 b(implemen)n(ted)h(in)g(ab)r(out)f(8,000)f
+(LOC.)h(The)g(co)r(de)g(is)h(freely)f(a)n(v)-5 b(ailable)19
+b(from)h(the)h Fa(gnu)p FA(net)523 946 y(w)n(ebpage)p
+1 0 0 TeXcolorrgb 831 946 a
+SDict begin H.S end
+ 831 946 a -30 x Fz(4)867
+946 y
+SDict begin 12 H.L end
+ 867 946 a 867 946 a
+SDict begin [ /Subtype /Link /Dest (Hfootnote.4) cvn /H /I /Border
+[0 0 0] /Color [1 0 0] H.B /ANN pdfmark end
+ 867 946 a Black FA(.)523 1186
+y Fr(Ac)m(kno)m(wledgemen)m(ts)523 1259 y
+SDict begin H.S end
+ 523 1259 a
+523 1259 a
+SDict begin 12 H.A end
+ 523 1259 a 523 1259 a
+SDict begin [ /View [/XYZ H.V] /Dest (section*.1) cvn H.B /DEST pdfmark
+end
+ 523 1259 a 84 x FA(The)k(authors)f
+(thank)h(Roger)f(Dingledine)h(for)g(helpful)g(commen)n(ts)g(on)g(an)g
+(earlier)e(draft)i(of)523 1442 y(this)j(pap)r(er.)523
+1698 y Fu(References)523 1788 y
+SDict begin H.S end
+ 523 1788 a 523 1788 a
+SDict begin 11 H.A end
+
+523 1788 a 523 1788 a
+SDict begin [ /View [/XYZ H.V] /Dest (section*.2) cvn H.B /DEST pdfmark
+end
+ 523 1788 a 523 1788 a
+SDict begin H.S end
+ 523 1788
+a 523 1788 a
+SDict begin 11 H.A end
+ 523 1788 a 523 1788 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.anderson96eternity) cvn
+H.B /DEST pdfmark end
+ 523 1788 a Black 561
+1877 a Fx(1.)p Black 43 w(Ross)e(Anderson.)34 b(The)26
+b(Eternit)n(y)f(Service.)34 b(In)25 b Fp(Pr)l(o)l(c)l(e)l(e)l(dings)30
+b(of)d(Pr)l(ago)l(crypt)j(1996)p Fx(,)d(1996.)523 1892
+y
+SDict begin H.S end
+ 523 1892 a 523 1892 a
+SDict begin 11 H.A end
+ 523 1892 a 523 1892 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.esed) cvn H.B /DEST pdfmark
+end
+ 523 1892
+a Black 561 1966 a Fx(2.)p Black 43 w(Krista)34 b(Bennett,)g(Christian)
+h(Grotho\013,)g(Tzv)n(etan)f(Horozo)n(v,)g(and)g(Ioana)h(P)n(atrascu.)
+60 b(Ef-)663 2058 y(\014cien)n(t)31 b(Sharing)h(of)h(Encrypted)e(Data.)
+54 b(In)31 b Fp(ASCIP)p Fx(,)h(v)n(olume)g(2384)h(of)g
+Fp(L)l(e)l(ctur)l(e)j(Notes)e(in)663 2149 y(Computer)28
+b(Scienc)l(e)p Fx(,)f(pages)g(107{120.)i(Springer-V)-6
+b(erlag)25 b(Inc.,)h(2002.)523 2164 y
+SDict begin H.S end
+ 523 2164 a 523
+2164 a
+SDict begin 11 H.A end
+ 523 2164 a 523 2164 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.bloom) cvn H.B /DEST pdfmark
+end
+ 523 2164 a Black 561 2238
+a Fx(3.)p Black 43 w(Burton)g(Blo)r(om.)37 b(Space/time)26
+b(trade-o\013s)g(in)g(hash)g(co)r(ding)h(with)f(allo)n(w)n(able)i
+(errors.)37 b Fp(Com-)663 2329 y(munic)l(ations)28 b(of)f(the)i(A)n(CM)
+p Fx(,)c(13\(7\):422{426,)30 b(1970.)523 2348 y
+SDict begin H.S end
+ 523 2348
+a 523 2348 a
+SDict begin 11 H.A end
+ 523 2348 a 523 2348 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.chen99prototype) cvn H.B
+/DEST pdfmark end
+ 523 2348 a Black 561
+2418 a Fx(4.)p Black 43 w(Y)-6 b(uan)19 b(Chen,)i(Jan)h(Edler,)f
+(Andrew)g(Goldb)r(erg,)h(Allan)f(Gottlieb,)h(Sumeet)e(Sobti,)h(and)g(P)
+n(eter)663 2509 y(Yianilos.)39 b(A)26 b(protot)n(yp)r(e)g(implemen)n
+(tation)h(of)h(arc)n(hiv)l(al)f(in)n(termemory)-6 b(.)37
+b(In)26 b Fp(Pr)l(o)l(c)l(e)l(e)l(dings)31 b(of)663 2601
+y(the)d(F)-6 b(ourth)29 b(A)n(CM)e(International)i(Confer)l(enc)l(e)g
+(on)f(Digital)f(Libr)l(aries)p Fx(,)g(1999.)523 2616
+y
+SDict begin H.S end
+ 523 2616 a 523 2616 a
+SDict begin 11 H.A end
+ 523 2616 a 523 2616 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.clark99distributed) cvn
+H.B /DEST pdfmark end
+ 523 2616
+a Black 561 2690 a Fx(5.)p Black 43 w(Ian)h(Clark)n(e,)h(Osk)l(ar)g
+(Sandb)r(erg,)f(Brandon)h(Wiley)-6 b(,)28 b(and)g(Theo)r(dorew)i(W.)f
+(Hong.)43 b(F)-6 b(reenet:)663 2781 y(A)35 b(distributed)f(anon)n
+(ymous)i(information)g(storage)h(and)e(retriev)l(al)h(system.)63
+b(In)35 b(Hannes)663 2872 y(F)-6 b(ederrath,)28 b(editor,)g
+Fp(Designing)i(privacy)h(enhancing)f(te)l(chnolo)l(gies:)h
+(International)g(Work-)663 2964 y(shop)38 b(on)f(Design)g(Issues)h(in)f
+(A)n(nonymity)g(and)h(Unobservability,)g(Berkeley,)g(CA,)e(USA,)663
+3055 y(July)25 b(25{26,)g(2000:)g(pr)l(o)l(c)l(e)l(e)l(dings)p
+Fx(,)h(v)n(olume)c(2009)j(of)e Fp(L)l(e)l(ctur)l(e)k(Notes)f(in)f
+(Computer)h(Scienc)l(e)p Fx(.)663 3146 y(Springer-V)-6
+b(erlag)25 b(Inc.,)h(2001.)523 3161 y
+SDict begin H.S end
+ 523 3161 a 523
+3161 a
+SDict begin 11 H.A end
+ 523 3161 a 523 3161 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.cohen02replication) cvn
+H.B /DEST pdfmark end
+ 523 3161 a Black 561 3235
+a Fx(6.)p Black 43 w(Edith)31 b(Cohen)g(and)g(Scott)g(Shenk)n(er.)50
+b(Replication)31 b(strategies)i(in)e(unstructured)f(p)r(eer-to-)663
+3327 y(p)r(eer)25 b(net)n(w)n(orks.)35 b(In)25 b Fp(The)j(A)n(CM)f
+(SIGCOMM'02)g(Confer)l(enc)l(e)p Fx(,)g(August)e(2002.)523
+3342 y
+SDict begin H.S end
+ 523 3342 a 523 3342 a
+SDict begin 11 H.A end
+ 523 3342 a 523 3342 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.cfs:sosp01) cvn H.B /DEST
+pdfmark end
+ 523
+3342 a Black 561 3416 a Fx(7.)p Black 43 w(F)-6 b(rank)26
+b(Dab)r(ek,)i(M.)g(F)-6 b(rans)27 b(Kaasho)r(ek,)h(Da)n(vid)f(Karger,)h
+(Rob)r(ert)g(Morris,)h(and)e(Ion)g(Stoica.)663 3507 y(Wide-area)j(co)r
+(op)r(erativ)n(e)h(storage)g(with)e(CFS.)47 b(In)28 b
+Fp(Pr)l(o)l(c)l(e)l(e)l(dings)34 b(of)d(the)h(18th)g(A)n(CM)e(Sym-)663
+3598 y(p)l(osium)25 b(on)g(Op)l(er)l(ating)h(Systems)g(Principles)f
+(\(SOSP)g('01\))p Fx(,)f(Chateau)f(Lak)n(e)g(Louise,)g(Ban\013,)663
+3690 y(Canada,)k(Octob)r(er)e(2001.)523 3705 y
+SDict begin H.S end
+ 523 3705
+a 523 3705 a
+SDict begin 11 H.A end
+ 523 3705 a 523 3705 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.dingledine02mixminion) cvn
+H.B /DEST pdfmark end
+ 523 3705 a Black 561
+3779 a Fx(8.)p Black 43 w(George)32 b(Danezis,)g(Roger)g(Dingledine,)g
+(and)f(Nic)n(k)f(Mathewson.)52 b(Mixminion:)32 b(Design)g(of)663
+3870 y(a)d(T)n(yp)r(e)f(I)r(I)r(I)g(Anon)n(ymous)g(Remailer)i(Proto)r
+(col.)45 b(In)28 b Fp(IEEE)i(Symp)l(osium)h(on)g(Se)l(curity)g(and)663
+3961 y(Privacy)p Fx(,)c(2003.)523 3976 y
+SDict begin H.S end
+ 523 3976 a 523
+3976 a
+SDict begin 11 H.A end
+ 523 3976 a 523 3976 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.freehaven-berk) cvn H.B
+/DEST pdfmark end
+ 523 3976 a Black 561 4050
+a Fx(9.)p Black 43 w(Roger)18 b(Dingledine,)h(Mic)n(hael)g(J.)g(F)-6
+b(reedman,)18 b(and)g(Da)n(vid)f(Molnar.)23 b(The)c(free)f(ha)n(v)n(en)
+g(pro)t(ject:)663 4141 y(Distributed)37 b(anon)n(ymous)i(storage)g
+(service.)73 b(In)38 b(Hannes)g(F)-6 b(ederrath,)38 b(editor,)h
+Fp(Pr)l(o)l(c)l(e)l(e)l(d-)663 4233 y(ings)26 b(of)g(Designing)g
+(Privacy)h(Enhancing)g(T)-6 b(e)l(chnolo)l(gies:)27 b(Workshop)g(on)g
+(Design)f(Issues)h(in)663 4324 y(A)n(nonymity)h(and)g(Unobservability)p
+Fx(.)g(Springer-V)-6 b(erlag,)26 b(LNCS)f(2009,)i(July)f(2000.)523
+4339 y
+SDict begin H.S end
+ 523 4339 a 523 4339 a
+SDict begin 11 H.A end
+ 523 4339 a 523 4339 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.feamster-infranet) cvn H.B
+/DEST pdfmark end
+ 523
+4339 a Black 74 x Fx(10.)p Black 43 w(Nic)n(k)21 b(F)-6
+b(eamster,)23 b(Magdalena)g(Balazinsk)l(a,)h(Greg)f(Harfst,)g(Hari)f
+(Balakrishnan,)h(and)e(Da)n(vid)663 4504 y(Karger.)k(Infranet:)20
+b(Circum)n(v)n(en)n(ting)g(w)n(eb)g(censorship)g(and)f(surv)n
+(eillance.)26 b(In)19 b Fp(11th)k(USENIX)663 4596 y(Se)l(curity)29
+b(Symp)l(osium)p Fx(,)d(2002.)523 4611 y
+SDict begin H.S end
+ 523 4611 a 523
+4611 a
+SDict begin 11 H.A end
+ 523 4611 a 523 4611 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.ebe2003) cvn H.B /DEST pdfmark
+end
+ 523 4611 a Black 74 x Fx(11.)p
+Black 43 w(Christian)h(Grotho\013.)35 b(An)25 b(Excess-Based)i
+(Economic)g(Mo)r(del)g(for)f(Resource)h(Allo)r(cation)g(in)663
+4776 y(P)n(eer-to-P)n(eer)f(Net)n(w)n(orks.)34 b Fp
+(Wirtschaftsinformatik)p Fx(,)27 b(3-2003,)h(June)d(2003.)p
+Black 523 4839 473 4 v 546 4893 a Fy(4)p 0 TeXcolorgray
+606 4833 a
+SDict begin H.S end
+ 606 4833 a 0 TeXcolorgray 0 TeXcolorgray 606
+4833 a
+SDict begin H.R end
+ 606 4833 a 606 4833 a
+SDict begin [ /View [/XYZ H.V] /Dest (Hfootnote.4) cvn H.B /DEST pdfmark
+end
+ 606 4833 a Black 0 1 0 0
+TeXcolorcmyk 606 4941 a
+SDict begin H.S end
+ 606 4941 a 0 1 0 0 TeXcolorcmyk
+-17 x Fw(http://gnunet.org/)p 0 1 0 0 TeXcolorcmyk 1312
+4872 a
+SDict begin H.R end
+ 1312 4872 a 1312 4924 a
+SDict begin [ /H /I /Border [0 0 0] /Color [0 1 1] /Action << /Subtype
+/URI /URI (http://gnunet.org/) >> /Subtype /Link H.B /ANN pdfmark end
+ 1312 4924 a Black Black
+Black Black eop end
+%%Page: 19 19
+TeXDict begin 19 18 bop 0 0 a
+SDict begin /product where{pop product(Distiller)search{pop pop pop
+version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
+closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
+grestore}if}{pop}ifelse}{pop}ifelse}if end
+ 0 0 a Black 0 TeXcolorgray
+523 232 a
+SDict begin H.S end
+ 523 232 a 0 TeXcolorgray 0 TeXcolorgray 523
+232 a
+SDict begin H.R end
+ 523 232 a 523 232 a
+SDict begin [ /View [/XYZ H.V] /Dest (page.19) cvn H.B /DEST pdfmark
+end
+ 523 232 a Black 1036 w Fx(An)25
+b(Enco)r(ding)h(for)h(Censorship-Resistan)n(t)f(Sharing)199
+b(19)p Black 523 365 a
+SDict begin H.S end
+ 523 365 a 523 365 a
+SDict begin 11 H.A end
+ 523 365 a
+523 365 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.le2005) cvn H.B /DEST pdfmark
+end
+ 523 365 a Black 83 x Fx(12.)p Black 43 w(Christian)33
+b(Grotho\013.)55 b(Reading)32 b(File)i(Metadata)f(with)g(extract)f(and)
+g(lib)r(extractor.)56 b Fp(Lin-)663 540 y(uxJournal)p
+Fx(,)27 b(6-2005,)h(June)d(2005.)523 555 y
+SDict begin H.S end
+ 523 555 a
+523 555 a
+SDict begin 11 H.A end
+ 523 555 a 523 555 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.hartman99swarm) cvn H.B
+/DEST pdfmark end
+ 523 555 a Black 76 x Fx(13.)p
+Black 43 w(John)d(H.)g(Hartman,)h(Ian)f(Murdo)r(c)n(k,)h(and)f(T)-6
+b(ammo)23 b(Spalink.)28 b(The)23 b(sw)n(arm)g(scalable)h(storage)663
+722 y(system.)67 b(In)36 b Fp(International)j(Confer)l(enc)l(e)g(on)f
+(Distribute)l(d)h(Computing)f(Systems)p Fx(,)h(pages)663
+813 y(74{81,)28 b(1999.)523 828 y
+SDict begin H.S end
+ 523 828 a 523 828 a
+SDict begin 11 H.A end
+
+523 828 a 523 828 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.herlihy87how) cvn H.B /DEST
+pdfmark end
+ 523 828 a Black 76 x Fx(14.)p Black
+43 w(Maurice)42 b(Herlih)n(y)e(and)h(J.)h(D.)f(T)n(ygar.)81
+b(Ho)n(w)42 b(to)f(mak)n(e)g(replicated)h(data)g(secure.)81
+b(In)663 996 y Fp(CR)-6 b(YPTO)p Fx(,)25 b(pages)i(379{391,)i(1987.)523
+1011 y
+SDict begin H.S end
+ 523 1011 a 523 1011 a
+SDict begin 11 H.A end
+ 523 1011 a 523 1011 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.levien03advogato) cvn H.B
+/DEST pdfmark end
+ 523
+1011 a Black 76 x Fx(15.)p Black 43 w(Raph)76 b(Levien.)189
+b(A)n(ttac)n(k)77 b(resistan)n(t)h(trust)f(metrics.)190
+b(Draft)78 b(a)n(v)l(ailable)h(at)663 1178 y(h)n
+(ttp://www.levien.com/thesis/compact.p)r(df,)31 b(2003.)523
+1197 y
+SDict begin H.S end
+ 523 1197 a 523 1197 a
+SDict begin 11 H.A end
+ 523 1197 a 523 1197 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.maymounkov02kademlia) cvn
+H.B /DEST pdfmark end
+ 523
+1197 a Black 72 x Fx(16.)p Black 43 w(P)n(etar)h(Ma)n(ymounk)n(o)n(v)f
+(and)h(Da)n(vid)f(Mazi)n(\022)-36 b(eres.)56 b(Kademlia:)33
+b(A)f(p)r(eer-to-p)r(eer)f(information)663 1361 y(system)f(based)g(on)g
+(the)g(xor)g(metric.)48 b(In)29 b Fp(Pr)l(o)l(c)l(e)l(e)l(dings)34
+b(of)d(IPTPS02,)g(Cambridge)p Fx(,)g(Marc)n(h)663 1452
+y(2002.)523 1452 y
+SDict begin H.S end
+ 523 1452 a 523 1452 a
+SDict begin 11 H.A end
+ 523 1452 a 523
+1452 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.mazires00sfs) cvn H.B /DEST
+pdfmark end
+ 523 1452 a Black 91 x Fx(17.)p Black 43 w(Da)n(vid)25
+b(Mazi)n(\022)-36 b(eres.)36 b Fp(Self-c)l(ertifying)28
+b(\014le)g(system)p Fx(.)35 b(PhD)26 b(thesis,)g(MIT,)h(2000.)523
+1558 y
+SDict begin H.S end
+ 523 1558 a 523 1558 a
+SDict begin 11 H.A end
+ 523 1558 a 523 1558 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.mazieres02building) cvn
+H.B /DEST pdfmark end
+ 523
+1558 a Black 76 x Fx(18.)p Black 43 w(Da)n(vid)e(Mazi)n(\022)-36
+b(eres)28 b(and)e(Dennis)g(Shasha.)36 b(Building)27 b(secure)g(\014le)f
+(systems)h(out)f(of)h(b)n(yzan)n(tine)663 1726 y(storage.)66
+b(In)35 b Fp(Pr)l(o)l(c)l(e)l(e)l(dings)k(of)d(the)i(Twenty-First)h(A)n
+(CM)d(Symp)l(osium)h(on)g(Principles)g(of)663 1817 y(Distribute)l(d)29
+b(Computing)f(\(PODC)f(2002\))p Fx(,)g(2002.)523 1836
+y
+SDict begin H.S end
+ 523 1836 a 523 1836 a
+SDict begin 11 H.A end
+ 523 1836 a 523 1836 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.mckusick84fast) cvn H.B
+/DEST pdfmark end
+ 523 1836
+a Black 72 x Fx(19.)p Black 43 w(Marshall)e(K.)f(McKusic)n(k,)g
+(William)i(N.)d(Jo)n(y)-6 b(,)24 b(Sam)n(uel)g(J.)h(Le\017er,)f(and)g
+(Rob)r(ert)f(S.)h(F)-6 b(abry)g(.)30 b(A)663 1999 y(fast)c(\014le)g
+(system)g(for)g(UNIX.)33 b Fp(Computer)c(Systems)p Fx(,)e
+(2\(3\):181{197,)j(1984.)523 2018 y
+SDict begin H.S end
+ 523 2018 a 523 2018
+a
+SDict begin 11 H.A end
+ 523 2018 a 523 2018 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.merkle89tree) cvn H.B /DEST
+pdfmark end
+ 523 2018 a Black 72 x Fx(20.)p
+Black 43 w(Ralph)e(C.)i(Merkle.)45 b(A)28 b(certi\014ed)h(digital)h
+(signature.)45 b(In)28 b Fp(G.)j(Br)l(assar)l(d,)h(e)l(ditor,)f(A)l
+(dvanc)l(es)663 2182 y(in)e(Cryptolo)l(gy|CR)-6 b(YPTO)32
+b('89)p Fx(,)d(pages)g(218{238.)j(Springer-V)-6 b(erlag,)29
+b(1990.)44 b(v)n(olume)29 b(435)663 2273 y(of)d(Lecture)g(Notes)g(in)f
+(Computer)h(Science.)523 2288 y
+SDict begin H.S end
+ 523 2288 a 523 2288 a
+SDict begin 11 H.A end
+
+523 2288 a 523 2288 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.muthitacharoen02ivy) cvn
+H.B /DEST pdfmark end
+ 523 2288 a Black 76 x Fx(21.)p
+Black 43 w(A)n(thic)n(ha)21 b(Muthitac)n(haro)r(en,)i(Rob)r(ert)f
+(Morris,)i(Thomer)f(M.)f(Gil,)i(and)d(Benjie)j(Chen.)k(Ivy:)21
+b(A)663 2455 y(read/write)i(p)r(eer-to-p)r(eer)e(\014le)g(system.)28
+b(In)21 b Fp(Pr)l(o)l(c)l(e)l(e)l(dings)26 b(of)d(5th)i(Symp)l(osium)f
+(on)g(Op)l(er)l(ating)663 2547 y(Systems)29 b(Design)f(and)g
+(Implementation)p Fx(,)e(2002.)523 2562 y
+SDict begin H.S end
+ 523 2562 a
+523 2562 a
+SDict begin 11 H.A end
+ 523 2562 a 523 2562 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.rabin89efficient) cvn H.B
+/DEST pdfmark end
+ 523 2562 a Black 76
+x Fx(22.)p Black 43 w(Mic)n(hael)k(O.)f(Rabin.)45 b(E\016cien)n(t)29
+b(disp)r(ersal)h(of)g(information)h(for)f(securit)n(y)-6
+b(,)29 b(load)h(balancing,)663 2729 y(and)25 b(fault)h(tolerance.)36
+b Fp(Journal)28 b(of)f(the)i(A)n(CM)p Fx(,)c(36\(2\):335{348,)30
+b(1989.)523 2748 y
+SDict begin H.S end
+ 523 2748 a 523 2748 a
+SDict begin 11 H.A end
+ 523 2748 a 523
+2748 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.rowstron01storage) cvn H.B
+/DEST pdfmark end
+ 523 2748 a Black 72 x Fx(23.)p Black 43 w(An)n(ton)n(y)k(I.)h
+(T.)i(Ro)n(wstron)f(and)f(P)n(eter)h(Drusc)n(hel.)64
+b(Storage)37 b(managemen)n(t)f(and)f(cac)n(hing)663 2912
+y(in)c(P)-6 b(AST,)30 b(a)i(large-scale,)h(p)r(ersisten)n(t)f(p)r
+(eer-to-p)r(eer)e(storage)j(utilit)n(y)-6 b(.)50 b(In)30
+b Fp(Symp)l(osium)j(on)663 3003 y(Op)l(er)l(ating)c(Systems)g
+(Principles)p Fx(,)d(pages)g(188{201,)j(2001.)523 3018
+y
+SDict begin H.S end
+ 523 3018 a 523 3018 a
+SDict begin 11 H.A end
+ 523 3018 a 523 3018 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.shamir) cvn H.B /DEST pdfmark
+end
+ 523 3018
+a Black 76 x Fx(24.)p Black 43 w(A.)g(Shamir.)48 b(Ho)n(w)30
+b(to)g(share)g(a)h(secret.)47 b(In)30 b Fp(Communic)l(ations)i(of)f
+(the)h(A)n(CM)p Fx(,)e(v)n(olume)g(22,)663 3185 y(pages)c(612{613.)j(A)
+n(CM,)d(1979.)523 3200 y
+SDict begin H.S end
+ 523 3200 a 523 3200 a
+SDict begin 11 H.A end
+ 523 3200
+a 523 3200 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.stoica01chord) cvn H.B /DEST
+pdfmark end
+ 523 3200 a Black 76 x Fx(25.)p Black 43
+w(Ion)k(Stoica,)i(Rob)r(ert)e(Morris,)j(Da)n(vid)d(Karger,)i(M.)f(F)-6
+b(rans)31 b(Kaasho)r(ek,)h(and)e(Hari)h(Balakr-)663 3368
+y(ishnan.)g(Chord:)24 b(A)f(scalable)i(p)r(eer-to-p)r(eer)f(lo)r(okup)f
+(service)h(for)h(in)n(ternet)e(applications.)33 b(In)663
+3459 y Fp(Pr)l(o)l(c)l(e)l(e)l(dings)26 b(of)d(the)i(2001)f(c)l(onfer)l
+(enc)l(e)i(on)d(applic)l(ations,)i(te)l(chnolo)l(gies,)g(ar)l(chite)l
+(ctur)l(es,)h(and)663 3550 y(pr)l(oto)l(c)l(ols)j(for)f(c)l(omputer)h
+(c)l(ommunic)l(ations)p Fx(,)e(pages)g(149{160.)h(A)n(CM)e(Press,)h
+(2001.)523 3565 y
+SDict begin H.S end
+ 523 3565 a 523 3565 a
+SDict begin 11 H.A end
+ 523 3565 a 523
+3565 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.stratton_oakmont) cvn H.B
+/DEST pdfmark end
+ 523 3565 a Black 77 x Fx(26.)p Black 43 w(Stratton)19
+b(Oakmon)n(t)g(vs)h(Pro)r(digy)g(Services)g(Compan)n(y,)g(1995)h(N.Y.)f
+(Misc.)h(Lexis)f(229,)h(\(N.Y.)663 3733 y(Sup.)k(Ct.)h(Nassau)g(Co.,)h
+(1995\).)523 3752 y
+SDict begin H.S end
+ 523 3752 a 523 3752 a
+SDict begin 11 H.A end
+ 523 3752 a
+523 3752 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.syverson97anonymous) cvn
+H.B /DEST pdfmark end
+ 523 3752 a Black 72 x Fx(27.)p Black 43 w(P)n(aul)35
+b(Syv)n(erson,)g(Da)n(vid)f(Goldsc)n(hlag,)j(and)e(Mic)n(hael)h(Reed.)
+62 b(Anon)n(ymous)34 b(Connections)663 3915 y(and)29
+b(Onion)f(Routing.)45 b(In)29 b Fp(IEEE)h(Symp)l(osium)h(on)g(Se)l
+(curity)h(and)f(Privacy)p Fx(,)g(pages)f(44{54,)663 4007
+y(Oakland,)25 b(California,)k(4{7)e(1997.)523 4022 y
+SDict begin H.S end
+
+523 4022 a 523 4022 a
+SDict begin 11 H.A end
+ 523 4022 a 523 4022 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.waldman2001tangler) cvn
+H.B /DEST pdfmark end
+ 523 4022
+a Black 76 x Fx(28.)p Black 43 w(Marc)36 b(W)-6 b(aldman)34
+b(and)h(Da)n(vid)f(Mazi)n(\022)-36 b(eres.)64 b(T)-6
+b(angler:)37 b(A)d(censorhip-resistan)n(t)i(publishing)663
+4189 y(system)25 b(based)f(on)h(do)r(cumen)n(t)g(en)n(tanglemen)n(ts.)
+33 b(In)24 b Fp(A)n(CM)i(Confer)l(enc)l(e)i(on)f(Computer)h(and)663
+4280 y(Communic)l(ations)g(Se)l(curity)p Fx(,)f(pages)g(126{135,)h
+(2001.)523 4295 y
+SDict begin H.S end
+ 523 4295 a 523 4295 a
+SDict begin 11 H.A end
+ 523 4295 a 523
+4295 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.pub00) cvn H.B /DEST pdfmark
+end
+ 523 4295 a Black 77 x Fx(29.)p Black 43 w(Marc)36
+b(W)-6 b(aldman,)36 b(Aviel)g(D.)f(Rubin,)g(and)h(Lorrie)g(F)-6
+b(aith)36 b(Cranor.)65 b(Publius:)36 b(A)g(robust,)663
+4463 y(tamp)r(er-eviden)n(t,)18 b(censorship-resistan)n(t,)i(w)n(eb)g
+(publishing)f(system.)24 b(In)18 b Fp(Pr)l(o)l(c.)k(9th)g(USENIX)663
+4554 y(Se)l(curity)29 b(Symp)l(osium)p Fx(,)d(pages)g(59{72,)i(August)d
+(2000.)523 4569 y
+SDict begin H.S end
+ 523 4569 a 523 4569 a
+SDict begin 11 H.A end
+ 523 4569 a 523
+4569 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.mojotech) cvn H.B /DEST
+pdfmark end
+ 523 4569 a Black 76 x Fx(30.)p Black 43 w(Bryce)i(Wilco)n
+(x-O'Hearn.)39 b(Exp)r(eriences)27 b(Deplo)n(ying)h(a)f(Large-Scale)h
+(Emergen)n(t)g(Net)n(w)n(ork.)663 4737 y(In)e Fp(Pe)l(er-to-Pe)l(er)32
+b(Systems:)e(First)g(International)g(Workshop,)f(ITPTS)f(2002)p
+Fx(,)g(pages)g(104{)663 4828 y(110.)f(Springer-V)-6 b(erlag)25
+b(Heidelb)r(erg,)i(Jan)n(uary)f(2002.)p Black Black eop
+end
+%%Trailer
+
+userdict /end-hook known{end-hook}if
+%%EOF

Added: GNUnet-docs/papers/ecrs/main.tex
===================================================================
--- GNUnet-docs/papers/ecrs/main.tex    2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet-docs/papers/ecrs/main.tex    2005-05-31 19:27:19 UTC (rev 833)
@@ -0,0 +1,1122 @@
+\documentclass[runningheads]{llncs}
+%\pagestyle{empty}.
+
+\usepackage[ansinew]{inputenc}
+\usepackage{amsmath,amssymb,exscale,multicol,epsfig,graphics,verbatim,float}
+\usepackage[all,knot,poly]{xy}
+\usepackage{hyperref}
+
+\hypersetup{backref,
+  pdfpagemode=FullScreen,
+  pdftitle=An Encoding for Censorship-Resistant Sharing,
+  pdfauthor=Christian Grothoff and Krista Grothoff and Tzvetan Horozov and 
Jussi T. Lindgren,
+  pdfkeywords=encoding privacy censorship resistant sharing file peer 
distributed system network,
+  pdfsubject=Privacy Enhancing Technologies,
+  colorlinks=true}
+
+
+\begin{document}
+
+% Annoying grammar/style notes:
+% - try to avoid the use of ``encoding'' as a noun on its own. ``encoding
+%   scheme'' or ``encoding mechanism'' is better.
+%
+% Todo:
+% - Look into/cite MIT FARSITE system (convergent encryption)
+% - fix xy-pic (dotted arrows, multicols)
+
+\title{An Encoding for Censorship-Resistant Sharing}
+\author{Christian Grothoff\inst{1}, Krista Grothoff\inst{2}, Tzvetan 
Horozov\inst{3}, Jussi T. Lindgren\inst{4}}
+\authorrunning{C. Grothoff, K. Grothoff, T. Horozov, J.T. Lindgren}
+\institute{
+  Department of Computer Sciences, UCLA, USA \\
+ address@hidden 
+\and
+  CERIAS / Interdepartmental Program in Linguistics, Purdue University, USA \\
+ address@hidden 
+\and
+  Motorola Labs, USA \\
+ address@hidden 
+\and
+  Department of Computer Science, University of Helsinki, Finland \\
+  address@hidden \\
+\vspace{0.4cm}
+ \texttt{http://www.gnu.org/software/GNUnet/} \\
+ address@hidden
+
+\maketitle
+
+\begin{abstract} 
+This paper describes ECRS, a content encoding scheme for
+censor\-ship-resistant peer-to-peer networking.  The proposed encoding
+mechanism supports both efficient dissemination of encrypted data as
+well as encrypted queries over this data.  Intermediaries can verify
+that an encrypted response matches an encrypted reply without being
+able to decrypt either.  Furthermore, ECRS allows users to share files
+encrypted under descriptive keys which are the basis for querying the
+network for content.  With the proposed scheme, effective load
+balancing and swarm distribution are possible.  The encoding mechanism
+handles data in small chunks, which can also be efficiently encoded on
+demand from the plaintext.  The proposed encoding is conceptually
+simple and easy to implement.
+\end{abstract}
+
+\section{Introduction}
+
+% censorship 
+Internet censorship is a powerful weapon for oppressive governments,
+corporations and pressure groups in stifling dissent and suppressing
+dissemination of information.  A variety of techniques can be used to
+censor online information; hard drives can be confiscated and
+searched, traffic can be filtered, and denial of service attacks can
+be performed against servers.  In addition to these technical
+measures, individuals can be singled out and subjected to harassment.
+A common requirement for all forms of censorship is the ability to
+{\em recognize} the objectionable information.
+
+% the big goal and how it relates
+The goal of the encoding scheme presented in this paper is to make it
+difficult to identify information stored or transmitted in a {\em
+decentralized}, open wide area network where many {\em untrusted}
+peers want to share data.  The proposed encoding scheme, called ECRS,
+allows both content and queries to be encrypted while being
+transmitted or stored on the network.  This ensures that servers as
+well as all intermediate peers are oblivious of the data they are
+actually handling, reducing the chance that they can be singled out
+for an attack or held liable.  It is important to note that the
+primary goal is {\em deniability} for the peers storing and
+transmitting the information.  These peers must be able to claim that
+decrypting the information is infeasible {\em for them}.  
+
+We find it acceptable if a censor who precisely knows which content to
+censor is able to match a request or response against that particular
+content.  ECRS is supposed to protect intermediaries that merely
+transmit information and that need to be able to show that they were
+unable to recognize objectionable information for their own
+protection.  The ultimate senders and receivers of the data should be
+protected by other means, such as anonymous
+routing~\cite{dingledine02mixminion,syverson97anonymous}.  As a
+content encoding mechanism, ECRS could be integrated into almost any
+generic peer-to-peer infrastructure to enhance its resistance to
+censorship.  Specific details on how peers communicate and route data
+are therefore outside of the scope of this paper.
+
+As an encoding scheme, ECRS has to address two important issues.
+First of all, users must be able to find content, preferably by
+searching with simple, natural language keywords.  Metadata related to
+the contents of the file should be made available as part of the
+search result and prior to the download of the actual file.  Secondly,
+the encoding scheme should support swarming, that is the download of a
+file from multiple peers.  Since it is possible that identical data is
+inserted by many independent parties
+% convergent encryption~\cite{farsite} should be used such that 
+% identical source files always result in identical encodings.
+the encoding scheme should always result in identical
+encodings for identical source files.  
+This way the duplication caused by multiple insertions of the same
+content increases fault-tolerance, performance and availability.
+
+% why is this hard? open network == adversaries playground
+Unfortunately, it is not enough to just meet requirements related to
+efficient storage and retrieval of the content.  A public filesharing
+network should be open to new participants without any restrictive
+form of access control.  This opens the network to malicious
+participants.  Thus, the encoding scheme should guarantee the {\em
+integrity} of the content even in the presence of malicious
+participants.
+
+The encoding mechanism must ensure that invalid replies are detected
+and that peers can {\em distinguish} valuable content from maliciously
+generated noise.  This is particularly important in three cases.
+First, if large files are assembled using blocks from multiple peers,
+some of these peers may be malicious and try to corrupt the file.
+These corruptions should be detected on a small granularity and
+repaired with correct data from other peers.  Second, for searches it
+should be difficult for peers to spam the result set.  Otherwise the
+users may drown in useless information.  Finally, intermediaries and
+that are merely routing the content should be able to detect invalid
+replies.  This enables local economies (like~\cite{ebe2003}) and
+prevents the retransmission and replication of corrupted data by
+non-malicious peers.
+
+% now some meat
+ECRS uses two fundamental primitives in the overall encoding scheme.
+The majority of the content in the network uses a variant of Freenet's
+CHK encoding~\cite{clark99distributed}.  CHK stands for Content Hash
+Key; in other words, the content is encrypted with a key that is
+derived from a cryptographic hash of the plaintext.  The encrypted
+content is hashed again to obtain the query which is used to request
+the content.  This key-query pair is what the receiver needs to
+download and decrypt the content.
+
+The primary difference to the use of CHK by~\cite{clark99distributed}
+is that ECRS never subjects entire files to the CHK encoding.
+Instead, files are split into fixed-size blocks which could then be
+individually distributed (and replicated) across peers in the network.
+This is a natural way to balance the load and to enable swarming.  The
+blocks can be individually identified by a query, encrypted, decrypted
+and verified.  Verification of an encrypted block is accomplished by
+checking that it matches a given query.  This verification only
+requires the encrypted block and the query; it does not reveal the key
+required to decrypt the block.  ECRS guarantees that it is hard to
+forge a response that passes verification for a given query.
+Splitting files into blocks allows ECRS to detect data corruption on
+the block level.  Malicious peers cannot transmit more than the
+selected block size of invalid data before being detected.
+
+The second primitive used by ECRS, the {\em KBlock}, is completely
+novel.  {\em KBlock}s allow users to securely obtain the key-query
+pair starting with a natural language keyword selected by the content
+provider.  {\em KBlock}s improve on the triple-hash~\cite{esed}, a
+primitive with exactly the same goal, in that {\em KBlock}s cannot be
+attacked successfully by a non-guessing intermediary.  This is
+achieved using signatures from deterministically generated public keys
+to sign content advertisements.  Using {\em KBlock}s, documents can be
+inserted under multiple keys at a minimal cost in space.  Users can
+perform boolean searches of the form {\tt a AND b} which then return
+the documents which were inserted under a matching set of keywords.
+Before the download, the user can refine the search results using the
+metadata associated with the file.
+
+% organization
+The rest of the paper is organized as follows.  Section~\ref{related}
+contrasts the current work with mechanisms used in other
+censorship-resistant systems.  Section~\ref{content} describes the
+ECRS encoding scheme in detail.  Section~\ref{extensions} lists some
+extensions to the basic scheme.  Finally, section~\ref{discussion}
+discusses attacks on ECRS and contrasts it to previous work.
+
+% previous version
+This work builds on our earlier paper~\cite{esed} which was first
+published at ACISP 2001.  Since then, the encoding scheme has been
+revised to address additional requirements, to improve the security in
+various aspects and to meet issues related to a better implementation.
+This paper reflects these changes.
+
+
+
+\section{Related Work} \label{related}
+
+A large number of censorship-resistant (or at least
+fault-tolerant) publishing systems have been proposed in recent years
+\cite{anderson96eternity,clark99distributed,chen99prototype,freehaven-berk,feamster-infranet,herlihy87how,waldman2001tangler,pub00}.
+The proposed protocols differ in various aspects unrelated to the
+specifics of the encoding mechanism, such as content replication and the use of
+anonymous or steganographic communication.  Characteristic of all of
+these systems is the use of replication and the need to ensure data
+integrity.  For an overview of content replication strategies see
+\cite{cohen02replication}.  The censorship-resistant systems all use
+some form of content encoding to hide the specifics of the content
+from the servers.
+
+
+\subsection{Freenet}
+
+The main content encoding scheme used in
+Freenet~\cite{clark99distributed} uses CHKs: the hash of the content
+is used as the key.  Freenet has several other types of keys which are
+used to refer the user to content-hash keys.  These different key
+types are used to allow additional features such as content signing,
+personal namespaces and splitting of content.  Freenet's CHK yields
+the same encrypted data for independent encryptions.  However, it has
+several disadvantages.
+
+One drawback of Freenet's CHK is that it does not allow direct sharing
+of files from the local drive without encrypting and inserting them
+first.  Thus, if a node operator wishes to keep content directly
+accessible on the host, a local copy of the plaintext must be kept in
+addition to the encrypted content in the Freenet database.  Also,
+Freenet does not support swarming.  One reason certainly is that
+Freenet's CHK encoding can only verify a file in its entirety and not
+pin-point corruptions on a smaller scale.
+
+One way to obtain the CHK key of a file in Freenet is to search a
+private subspace.  A subspace contains a set of CHK keys that have
+been cryptographically signed by the owner of the subspace and placed
+into the subspace under a certain keyword.  These signed references
+are called subspace-signed keys (SSK).  Given the subspace-prefix and
+the keyword, users can obtain the CHK key.  The form of the keywords
+can be freely chosen, allowing for conventions such as dates in the
+keyword to be used for updates (in Freenet's terminology, these are
+called ``date based redirects'').
+
+In addition to CHK and SSK keys, Freenet supports KSK keys.  A KSK key
+is essentially a CHK key stored in plaintext (!) under a keyword.  The
+protocol attempts to ensure that there cannot be two different CHK
+keys available in the network under the same keyword.  While
+collisions for KSK keys are supposedly not allowed, the protocol
+cannot prevent them from occurring.  If an attacker inserts meaningless
+data under a common keyword, Freenet will try to preserve that content
+because it is frequently requested.  Subsequently, that keyword can no
+longer be used for any useful data since the peers attempt to enforce
+the no-collisions rule.  Note that the no-collision rule cannot be
+enforced for malicious peers.  For these reasons, the Freenet
+developers consider the use of KSK keys insecure and recommend against
+using them.
+
+As a result, Freenet does not really support any type of keyword-based
+search.  The CHK keys must be found by using keyservers or ad-hoc
+applications built upon the basic solution by using incremental
+numbers as parts of keywords in signed namespaces.  The disadvantage
+of keyservers is that they must be maintained if the indexed keys are
+to be kept up-to-date.  Freenet does not seem to use any encryption
+for the data stored in KSK or SKS keys and therefore fails to
+prevent intermediaries from learning the CHK keys (and for KSKs even
+tampering with the CHK keys), making censorship by intermediaries
+easier.
+
+
+\subsection{Free Haven}
+
+In Free Haven~\cite{freehaven-berk}, documents are split into $n$
+shares which are distributed over a number of servers.  Any $k$ out of
+$n$ shares are sufficient to reconstruct the entire
+document~\cite{rabin89efficient}. To retrieve a document, the user
+must obtain the key that was used to sign the document from some
+source outside the Free Haven network, the design itself does not
+discuss any search functionality.  The user then forwards the key to
+the server which encrypts and sends its share of the document.
+
+Shares are encoded with an information dispersal algorithm (IDA).
+Hosts are still able to exercise editorial control over the content
+since the IDA does not prevent hosts from decoding parts of the
+plaintext.  Also, the $k$ out of $n$ share reconstruction scheme does
+not allow reconstruction of a file by mixing shares from independent
+insertions with different values for $k$ or $n$.
+
+
+\subsection{Mnet and Mojo Nation}
+
+Mnet is the successor of Mojo Nation~\cite{mojotech}, a
+peer-to-peer network that was the first to focus on using economic
+incentives when trading content.  As the descendant of a commercial
+product, Mnet focuses mostly on efficiency and reliability.
+Nevertheless, Mnet encrypts files with AES using a user-supplied key
+seed to allow for privacy.  The file is then broken into shares using
+an erasure code.  Multiple shares are identified with an SHA-1 hash
+and stored in an inode.  The file can be retrieved using the hash of
+the inode and the symmetric encryption key.
+
+The use of whole-file AES encryption and the use of an erasure code
+forces Mnet, just like Freenet, to store a second copy of the entire
+file in the Mnet data store even if the user retains a copy of the
+file in plaintext.  The encoding makes it infeasible to encode parts
+of the file on request.  The free selection of the AES key allows
+independent users to create completely different shares for identical
+files.  Since the encryption of the content is a perfectly independent
+pass over the file, other encodings such as ECRS and Freenet's
+encoding could be easily extended to include this behavior if desired
+-- without the need to mandate a certain style of AES encryption.
+
+
+\subsection{Publius}
+
+Publius~\cite{pub00} is a static network that uses Shamir's
+algorithm~\cite{shamir} to split the key required to restore stored
+files between the available servers.  The encrypted file is then
+stored on all servers.  The servers cannot decrypt the file as the key
+is never entirely revealed to them.
+
+Publius keys are random strings.  The system does not provide any
+search mechanism and expects the users to obtain the keys from an
+alternate source.  Publius never discards any content and thus assumes
+that disk space is never a limitation.
+
+
+\subsection{Tangler}
+
+The Tangler network~\cite{waldman2001tangler} is a system where new
+content is entangled with old content.  This entanglement introduces a
+dependency that makes it impossible to retrieve a piece of content if
+the other content that it was entangled with is lost.  While this
+makes it impossible to censor specific content without losing
+unrelated content (since the entanglement pairs are chosen randomly),
+this process {\em doubles} the amount of data that must be transported
+by the network.  This scheme fails to address the fact that an
+adversary may not care about losing other data when attempting to
+censor content.  Also, nothing prevents the adversary from first
+making a copy of important documents and re-inserting them into the
+system after the censorship operation.
+
+Tangler has some similarities with ECRS.  In particular, it uses hash
+trees for integrity checks on fixed-size blocks of data.  The major
+difference with ECRS is that the Tangler encoding uses Shamir's secret
+sharing~\cite{shamir} to entangle the block with other, pre-existing
+blocks, preferably from other documents.  Another similarity between
+Tangler and ECRS is the existence of cryptographically signed data,
+which Tangler calls collections.  Tangler's collections are analogous
+to directories and namespaces in ECRS.  The major difference is that
+in Tangler, a collection has a versioned root which explicitly lists
+all of the contents in the collection, resulting in one of Tangler's
+global synchronization problems.  Placing a document in an ECRS
+namespace only requires that it be adequately signed.
+
+
+\subsection{Gnutella and FastTrack} % what does DirectConnect do?
+
+% ? are these censorship-resistant? ;) if anything goes, there's lot
+% of choices. -- jtl
+% ! well, they're obviously at least not doing a good job, but that
+%does not mean that they should not be discussed *briefly*.  The
+%problem/attack applies to a whole range of systems and is a good
+% motivation for the merkle tree.  Also, the decentralization of
+% gnutella was one of the reasons why it was heralded as the 
+% ``censorship resistant'' successor of napster... -- cg
+% I agree... they're ``related work'' in that sense, brief mention
+% is fine as long as we keep it brief -- klb
+
+The FastTrack network\footnote{Protocol description from the giFT-FastTrack
+  project is available at
+\vspace{3mm}
+
+\url{http://gnunet.org/papers/FAST-TRACK-PROTOCOL}.
+
+\vspace{2mm}
+} and modern variants of the Gnutella protocol use the SHA-1 hash code
+of the shared files to uniquely identify files.  The SHA-1 hash codes
+are used to identify identical files stored on different peers.  The
+peers can then use this information to download the file from multiple
+sources (swarming).  The problem with this approach is that the SHA-1
+hash codes can only be verified once the entire file has been
+retrieved.  To ruin a download, it would suffice for a malicious peer
+to provide just one single invalid block.  The presence of the invalid
+block could only be detected after the entire file was retrieved.
+Worse, the simplistic SHA-1 approach does not give peers any way to
+identify the invalid block or the malicious peer.
+
+Because FastTrack and Gnutella use neither file encryption nor
+anonymous routing to hide the address of either the receiver or the
+sender, they do not technically provide any protection from
+censorship beyond decentralized routing of requests.
+
+
+\subsection{Distributed File Systems}
+
+Various distributed file systems based on a peer-to-peer
+infrastructure have been built in recent
+years~\cite{cfs:sosp01,mazieres02building,mazires00sfs,muthitacharoen02ivy,rowstron01storage}.
+These systems typically do not focus on censorship-resistance and
+consequently do not encrypt the contents.  Modern systems
+like~\cite{cfs:sosp01,rowstron01storage} route content using
+distributed hash tables~\cite{maymounkov02kademlia,stoica01chord} to
+achieve $O(\log n)$ scalability.  Writable distributed file systems
+typically require users to authenticate themselves before being
+granted access to the system by one of the
+servers~\cite{mazires00sfs}.  This work focuses on encrypting shared
+data while allowing peers to verify the integrity of the encrypted
+data that they are routing.  In~\cite{mazieres02building} a similar
+problem is addressed; here users can detect tampering by the
+(untrusted) server that is storing the data in a setting where
+multiple users are updating the same data.  This work achieves what is
+called {\em fork consistency}, a guarantee that if the server passes a
+version that lacks the changes of one client to another client at one
+point in time, it can never again make the changes of either client
+visible to the others.  This is a weaker guarantee than the optimal
+situation where any misbehavior is detected, however it is the
+strongest possible property that can be achieved given the security
+model used.  ECRS does not allow users with distinct pseudonyms to
+update the same content without essentially creating two files.  This
+allows ECRS to guarantee that peers can never return an {\em
+invalid} result since every copy can be uniquely identified at all
+times.
+
+
+\section{ECRS encoding} \label{content}
+
+The primary requirements for the ECRS encoding are {\it plausible
+deniability} and {\it robustness}.  Plausible deniability describes
+the ability of the participants to claim ignorance of the nature of
+transferred content.  The idea here is that by making it hard for
+intermediaries to determine the contents that they are routing, they
+are less likely to casually infringe on the privacy of other users, to
+be forced to do so by an adversary and finally to be held responsible
+for the actions of others that they were unwittingly
+facilitating.\footnote{If the data cannot be identified, editorial
+control is technically impossible.  In {\em Stratton Oakmont
+v. Prodigy}, an Internet provider was found liable for hosting a
+bulletin board on which offensive messages had been posted.  This
+finding resulted because the provider had hired individuals to
+exercise editorial control over content.  If the provider had merely
+published messages from users without interference, the provider would
+potentially not have been held accountable~\cite{stratton_oakmont}.}
+Robustness is the encoding ability to resist attacks such as data
+corruption and spam.  Spam is different from data corruption in that
+the goal of the spammer is to direct the user to undesirable content,
+possibly hiding useful information in a sea of useless results.
+Naturally the encoding should not significantly increase the amount of
+data that needs to be transferred.
+
+The ECRS encoding scheme addresses these requirements.  ECRS
+provides plausible deniability by hiding the nature of the queries and
+responses from intermediaries through encryption.
+
+Despite the fact that queries
+and responses are encrypted, intermediaries can {\em verify} that the
+responses are valid with respect to a particular query.  Thus, the
+encoding mechanism provides robustness against tampering and false
+replies.  Additional robustness is gained in ECRS by splitting files
+into small pieces that can be {\em independently} verified, stored and
+distributed across the network.  This makes it easy for protocols
+using ECRS to incorporate features such as swarm
+distribution~\cite{hartman99swarm}, fine-grained load balancing and
+microeconomics~\cite{ebe2003}.  These features are also significant
+from the viewpoint of scalability.  When all handled blocks are small,
+nodes can participate in the network activity even if their own
+resources are limited.  Also, storing small, individually
+unintelligible pieces of potentially objectionable content is likely
+to further support plausible deniability.  
+
+
+The rest of this Section gives a bottom-up description of ECRS.  After
+a brief overview, Part~\ref{dblocks} shows how individual data blocks
+are encrypted in order to make it impossible for the intermediaries to
+determine what they are storing or transmitting.  Part~\ref{iblocks}
+then describes how files are split into those data blocks.
+Parts~\ref{sec:search} through~\ref{kblocks} motivates and explains
+how ECRS enables users to search for content without exposing the
+(plaintext) query or the corresponding content and how intermediaries
+can verify that a given encrypted reply matches the encrypted query.
+Finally, the core of ECRS is summarized in the form of an algorithm
+and a protocol example.
+
+\begin{figure*}[t]
+\begin{center}
+\small
address@hidden 
+  &&&& KBlock\ar[d] &&&&\\
+  &&&& IBlock_{\top}\ar[dlll]\ar[d]\ar[drrr] &&&& \\
+  & IBlock_1\ar[dl]\ar[d]\ar[dr] &&& \ldots\ar[dl]\ar[d]\ar[dr] &&& 
+    IBlock_{k}\ar[dl]\ar[d]\ar[dr] & \\
+  DBlock_1\ar[d] & \ldots\ar[d] & DBlock_{l}\ar[d]&& \ldots\ar[d] 
+  && DBlock_{m}\ar[d] & \ldots\ar[d] & DBlock_{n}\ar[d] \\
+  &&&& \texttt{Original data} &&&& \\ % FIXME: put this in a box and across 
all rows!
+} % FIXME: replace solid arrows with dotted arrows for dotted targets!
+\caption{Simple encoding of a file using a tree of CHK blocks 
+         ($DBlock$s and $IBlock$s are CHK encoded) with 
+         one $KBlock$ to allow for a keyword-based search.}
+ \label{encodingfile}
+\end{center}
+\end{figure*}
+
+\subsection{Overview} 
+
+In ECRS, the encoded representation of a file is a collection of small
+blocks.  There are four types of blocks: {\em DBlocks}, {\em IBlocks},
+{\em SBlocks} and {\em KBlocks}.  The maximum size of all blocks in
+ECRS is supposed to be fixed by some small number, for example 32k.
+The blocks are used to create a tree structure of the encoded file
+(see Figure~\ref{encodingfile}).  The actual file data is encoded in
+{\em DBlocks} which are organized by a tree of {\em IBlocks}.  The
+{\em IBlocks}, which are similar to UNIX inodes~\cite{mckusick84fast},
+are indirection-blocks which encode how the leaf-nodes of the tree can
+be reassembled into the original file.  Every {\em IBlock} provides
+the data required to request, decrypt and verify the contents of its
+direct children.  Verification is done using hash codes of the
+children, similar to the way a Merkle tree
+\cite{merkle89tree} works.  Given the size of the file, the top {\em
+  IBlock} uniquely identifies the contents of the entire file.  {\em
+  KBlocks} and {\em SBlocks} facilitate obtaining the key (to decrypt) 
+and query (to request) for the top {\em IBlock}.
+
+\subsection{{\em DBlocks}} \label{dblocks} % CHK
+
+Every {\em DBlock} corresponds to 32k of the original file (the last
+block may be padded with zeros).  {\em DBlock}s are encrypted using a
+symmetric cipher.  The key for the cipher for the {\em DBlock}
+corresponding to the plaintext $B_i$ is $K_i := H(B_i)$.  This
+guarantees that the same block will always be encrypted with the same
+key.  Also, the integrity of the decrypted block can be verified by
+checking that $K_i = H(B_i)$.  The encrypted block $E_{K_i}(B_i)$ can
+be uniquely identified by its hash $Q_i := H(E_{K_i}(B_i))$.  A peer
+can query for $E_{K_i}(B_i)$ using $Q_i$ without revealing $K_i$.
+Consequently, the pair $(K_i, Q_i)$ can be used to retrieve and
+decrypt $B_i$.  Intermediaries can verify that a response
+$E_{K_i}(B_i)$ matches a query $Q_i$ without knowing $K_i$.
+Freenet~\cite{clark99distributed} uses the same scheme to encrypt
+entire files (not just blocks) and the authors call the pair $(K_i,
+Q_i)$ a content hash key (CHK).
+
+\subsection{{\em IBlocks}} \label{iblocks} % CHK+Tree
+
+For files larger than the blocksize, multiple CHK keys are required to
+retrieve the content.  For example, with a blocksize of 32k and 512
+bit hash codes, a 32m file would be split into 1024 {\em DBlocks} $B_1,
+\ldots, B_{1024}$ of length 32k each.  Groups of up to 256 CHKs are
+assembled into one 32k {\em IBlock},
+resulting in four {\em IBlock}s for the 32m file. The resulting {\em
+IBlock}s are CHK encrypted just like the {\em DBlocks} and their
+CHK-keys are again grouped into {\em IBlocks} until only one CHK key
+is left.  For the 32m file, the CHKs for the four {\em IBlock}s are
+thus collected in one final top {\em IBlock}.  The additional space
+requirements for encoding the file are typically less than 1\% of the
+original file size.
+
+\subsection{Finding files} \label{sec:search}
+
+The CHK encoding described so far is useful for transmitting content
+that is encoded and yet verifiable for intermediaries.  However, a
+practical file-sharing scheme needs to have ways for the users to
+obtain the query and the key that are now necessary in order to
+retrieve the encoded content.  While out-of-band communication of
+those CHK keys is certainly feasible, an integrated solution is
+clearly desirable.  
+
+The key problem for the search is that simply publishing CHK keys in
+plaintext under certain keywords (as done in Freenet with KSK keys)
+has various drawbacks.  First, intermediaries would learn about the
+CHK keys that they are storing or transmitting, which may allow them
+to easily censor search results.  Second, the keywords are exposed to
+the intermediaries, which again would facilitate censorship.  Finally,
+peers would be able to send invalid replies that refer to inappropriate
+content.  This may be just a nuisance if malicious peers use this for
+advertising (this kind of behavior can be observed on gnutella from
+time to time).  However, if a network wants to economically reward
+peers for returning search results the possibility of returning
+arbitrary nonsense would make such incentive schemes impractical.
+
+But how can a system prevent peers from returning invalid responses to
+a search?  Since the nature of a search is that the initiator does not
+know precisely what content is desired, it is impossible for the query
+to completely determine the reply.  For this reason schemes like CHK
+cannot be applied to the search problem.  Instead, ECRS must trust the
+user who is uploading the content.  That user must specify appropriate
+keywords and metadata that properly describes the content.  Clearly
+this trust maybe misplaced.  Namespaces are a solution to this problem
+since they enable users to learn which other users are trustworthy.
+
+
+\subsection{Namespaces} \label{sblock}
+
+One way to avoid searching in an untrustworthy global keyword space
+that may contain mostly inappropriately labeled content is to restrict
+the search to namespaces.  A namespace is a keyword space that
+contains content that is cryptographically signed with the same
+private key.  The concept of namespaces is also present in
+Freenet~\cite{clark99distributed}, but with Freenet it is not possible
+to obtain multiple results by searching a namespace.  Fortunately, it
+is easy to add {\em searchable} namespaces to ECRS.
+
+In ECRS, a namespace is identified by a public-private key pair (also
+referred to as the pseu\-do\-nym).  The private key is used to sign
+the content that is placed into the namespace, and the public key (or
+more precisely, the hash of the public key) is used as a public handle
+that is used to refer to the namespace.  Any user can create any
+number of pseudonyms.  Once the user accesses files from a particular
+namespace it is possible to form an opinion about a particular
+pseudonym, which can then be used to target the search.
+
+Adding namespaces to the design requires a new type of block, called
+an {\em SBlock}.  An {\em SBlock} contains the key and query (CHK) of
+the top {\em IBlock} together with metadata about the content, thereby
+allowing users that receive an {\em SBlock} to download the file.
+However, this data is encrypted such that intermediaries do not learn
+anything about the referenced file.  The encryption key is the hash of
+an identifier that the inserter chose for the content.  The identifier
+does not have to be unique and can, for example, be a keyword (to
+allow searching the namespace) or a password (for private content).
+The encrypted portion of the {\em SBlock} is followed by a hash code
+which is the {\em query} for the content.  The query is the hash of
+the key (or the hash of the hash of the identifier).  When a user
+searches a namespace, the request contains the pseudonym (hash of the
+public key) together with the query.  By using the hash of the key as
+the query the correct {\em SBlock} can be identified by intermediaries
+but not decrypted.  At the same time, only the identifier and the
+pseudonym are required to search the namespace.  Finally, {\em
+SBlock}s contain digital signature of the content.  This allows
+intermediaries to verify that a given {\em SBlock} was created by the
+owner of the namespace.
+ 
+Since {\em SBlock}s are signed, it is possible to allow updates.
+Without a digital signature, a secure update mechanism is impossible,
+since anyone could publish a potentially illegitimate update.  If the
+update requires a matching digital signature, forged updates are
+impossible. In order to allow content updates, the metadata of an {\em
+SBlock} can contain information about when and under which identifiers
+updates may be published.  If such forward pointers are present, the
+owner of the namespace can decide to publish updates to a particular
+file at a later time.  Since the private key used for signing is owned
+by a single entity, consistency issues from parallel updates do not
+arise.  ECRS does not prevent the owner of the namespace to publish
+conflicting updates.
+
+It should be recognized that the same file can be part of multiple
+namespaces under multiple identifiers without the need for storing the
+file multiple times in the network.  The {\em IBlocks} and {\em
+DBlocks} of the file do not need to be changed when the namespace
+or namespace identifier changes.
+
+However, namespaces cannot completely solve the search problem.  Most
+importantly, users would still have to find the namespaces themselves,
+and while it can be assumed that users can guess keywords, they are
+unlikely to be able to guess public keys for a namespace search.  ECRS
+solves this problem by also offering a pure keyword-based search in a
+{\em global} keyword space where any user can advertise content.
+Here, the disadvantage is clearly that it is possible for malicious
+users to pollute the global keyword space with advertisements and
+other inappropriate data.  However, it is assumed that in that case
+users will use keywords that are more difficult to guess or only use
+the global keyword space to discover trustworthy namespaces -- thus
+avoiding the spam most of the time.  
+
+
+\subsection{Keyword search} \label{kblocks}
+
+This section describes how the CHK keys that are necessary to retrieve
+a file can be obtained by searching using natural language {\em
+keywords} -- without reveiling the keywords to intermediaries.
+Searching requires the content provider to supply metadata about the
+file, in particular a list of keywords.  It is assumed that the user
+searching for data is able to {\em guess} at least one of these
+keywords.  The nature of the search implies that there is no direct,
+cryptographically verifiable relation between the keyword and the
+content.  Many files can match a given keyword, and different users
+may even sometimes have a different perception of what is a correct
+semantic match.  Thus a keyword search always has the potential of
+resulting in search results that a user may find inappropriate.  It is
+also not possible to prevent a user from supplying keywords that have
+no semantic relation with the content and thereby increasing the
+chance of other users finding undesirable results for those keywords.
+
+However, ECRS should (and can) give some unusual {\em guarantees} for
+keyword-based searches.  First, the keyword used for a search is not
+exposed to intermediaries in a way that would allow them to easily
+exercise editorial control (i.e. to censor queries).  Again a
+guessing attack, where the intermediary guesses the keyword and can
+then compute the query for this keyword, is acceptable.  Plausible
+deniability for the intermediaries is unaffected by this attack.
+Second, only peers that have content available under the given keyword
+should be able to produce a valid response.  In other words, the
+ultimate responder must have succeeded in guessing the keyword.  This
+is important since it prevents peers from making up replies for
+arbitrary requests on-the-fly.  If peers were able to respond to any
+keyword query without having to at least guess the keyword, they could
+use this to spam every possible search, rendering the keyword search
+mostly useless.  Forcing responders to guess keywords does not
+eliminate the problem completely.  However, it does limit the attack
+to the common, easily guessed keywords.  Finally, the verification
+that a response is valid should be possible not only for the final
+recipient, but also for intermediaries.
+
+ECRS achieves all of this with a {\em new cryptographic primitive},
+which is a public-private key pair $(P_{pub}(K), P_{priv}(K))$ that is
+generated from a keyword $K$.  The keyword $K$ is used as the seed and
+only input to the pseudo-random number generator that is used in the
+generation of the public-private key pair.  The authors are not aware
+of any previous use of $K$-deterministic public-keys.  Given such a
+$K$-deterministic public-private key, ECRS generates {\em KBlock}s by
+signing the metadata necessary to download the file with $P_{priv}$ by
+the inserting peer.  {\em KBlock}s are essentially like {\em SBlock}s
+only that the $K$-determinate key is used instead of the pseudonym.
+
+A peer searching for $K$ also computes $P_{pub}(K)$ using the same
+deterministic key-generation algorithm ($P_{priv}(K)$ is also computed
+but not used).  The peer then uses $H(P_{pub}(K))$ as the query.
+Intermediaries can verify that the response is properly signed by a
+public key that hashes to the query, but are unable to decrypt the
+response or learn the $K$ that was used to generate the public key
+without guessing.
+
+In conclusion, using {\em KBlock}s it is possible to allow
+intermediaries to verify the integrity of replies without learning
+about the query or the response.  {\em KBlock}s require a keyword
+guess, making it it harder to reply to arbitrary queries with random
+data; they cannot prevent users from inserting such data under popular
+keywords.  The receiver of the {\em KBlock} can retrieve the rest of
+the file tree using CHK queries in the same way as it is done for {\em
+SBlock}s.
+
+
+\subsection{Summary}
+
+\begin{figure*}[t]
+\hrule
+\vspace{3mm}
+\small
+\begin{enumerate}
+ \item{Input: Content $C$, a list of keywords $\{K_1,...\}$ and metadata $D$.}
+ \item{Split content $C$ into blocks $B_i$, each of size 32k.  
+       Call these {\em DBlocks}. \label{split}}
+ \item{Compute hash values $H^{key}_i = H(B_i)$, $E_i = E_{H_{key}}(B_i)$ and 
+       $H^{query}_i = H(E_i)$.  Form {\em CHK}$_i$ from 
+           $(H^{query}_i, H^{key}_i)$.
+       Pad content (with zeros) if needed.\label{encryptStep}}
+ \item{Store $E_i$ under the name $H^{query}_i$.}
+ \item{If there is more than one block, group the blocks into disjoint sets 
$I_j$
+       of up to 256 members. For each $I_j$, create {\em Iblock}$_j$
+       containing the {\em CHK}s of the blocks in $I_j$. 
+       Add zero padding if needed.  Process each new 32k block obtained 
+       as in step~\ref{encryptStep}.}
+ \item{If the size of $C$ was smaller than 32k (and thus there is 
+       only one pair of hashcodes {\em CHK}$_0$),
+       create {\em SBlock}s and {\em KBlock}s containing 
+       {\em CHK}$_0$, the metadata $D$ about the content and
+       the original length of $C$. 
+       Encrypt and sign the resulting {\em SBlock}s and {\em KBlock}s.}
+\end{enumerate}
+\vspace{2mm}
+\hrule
+\caption{The ECRS encoding algorithm.}
+\label{ECRS}
+\end{figure*}
+
+The ECRS encoding algorithm is summarized in Figure~\ref{ECRS}.
+Figure~\ref{protocol} shows the sequence of messages exchanged
+by peers to download a 64k file starting with a keyword. 
+
+
+\begin{figure*}[t]
+\small
+\hrule
+\vspace{3mm}
+$B$ shares file $B_0, B_1$ under keyword ``test''.
+\begin{description}
+ \item[$A \to B$:]{Query: $H(RSA^{pub}(H(``test'')))$}
+ \item[$B \to A$:]{Response: 
$(E_{H(``test'')}(Q_0,K_0,size),RSA^{pub}(H(``test'')),sig)$
+                   where $sig$ is a signature generated with 
$RSA^{priv}(H(``test''))$
+                  (encrypted {\em KBlock})}
+ \item[$A \to B$:]{Query: $Q_0$ (CHK-query)}
+ \item[$B \to A$:]{Response: $E_{K_0}(Q_1, K_1, Q_2, K_2)$ (encrypted {\em 
IBlock})}
+ \item[$A \to B$:]{Query: $Q_1$ and $Q_2$ (CHK-query)}
+ \item[$B \to A$:]{Response: $E_{K_1}(B_0)$ and $E_{K_2}(B_1)$ (encrypted {\em 
DBlock}s)}
+\end{description}
+\vspace{2mm}
+\hrule
+\caption{Example protocol for an ECRS download.}
+\label{protocol}
+\end{figure*}
+
+
+
+\section{Extensions} \label{extensions}
+
+The vanilla ECRS encoding scheme (as discussed in the previous
+section) still leaves some practical problems that should be addressed
+to facilitate real-life usability.  For example, the manual effort of
+assigning or guessing keywords should be minimized. Also, the overall
+system should be efficient in practice; thus, overhead caused by
+random accesses of small blocks and frequent queries must be handled
+properly. The following subsections present some ideas on how these
+issues can be addressed.
+
+
+\subsection{Keyword inference} \label{keywords}
+
+One problem with ECRS is that the content must often be associated
+with keywords.  Although this is vastly better than forcing the user
+to rely on meaningless bitstrings as the only identifier, the keys
+must still be chosen so that the target audience can guess them.  The
+simplest non-technical solution for this problem, however, is for a
+group of users to agree on an informal standard for keywords.  If
+content providers want to make it easy for others to guess a keyword,
+it is typically useful to follow informal conventions for keyword
+selection.  For example, a reasonable convention may be to only use
+lower-case.
+
+A larger problem for a keyword-based search is that users may be
+reluctant to put in the effort to provide good keywords for the
+content that they provide.  A solution to this problem is the {\tt
+libextractor} library~\cite{le2005}.  {\tt libextractor} is a library
+for metadata extraction that is used to automatically extract keywords
+and other metadata, such as descriptions, comments and mime-types from
+files of various formats.
+
+
+\subsection{Directories}
+
+Another approach to avoiding searches is to group files into
+directories.  Directories can help with the search problem since they
+reduce the need for searching.  Also, they can be used to bundle
+similar content and thus help users avoid inappropriately labeled
+data.  If several files of such a directory have appropriate
+descriptions, it is likely that the other files will also have been
+provided by a non-malicious party.
+
+Integrating directories into the ECRS scheme is fairly
+straightforward.  A directory is a file with a standard (1k) header
+block that contains any number of {\em SBlock}s or {\em KBlock}s in
+plaintext (!).  Like files, directories are immutable and are
+subjected to the same encoding.
+
+Note that it is possible for any user to assemble a directory that
+refers to any combination of files: user-inserted files, files that
+the user downloaded, files that the user encountered as search results
+but never downloaded, or even invalid data (which will be interpreted
+as references that correspond to non-existent files).  Directories can
+also refer to other directories, allowing users to build navigable
+structures similar to file systems (without delete or update
+operation) or the World Wide Web.  While deletions and updates are not
+possible, it is possible to refer to contents of other users and even
+to files or directories that are supposed to be published in the
+future.
+
+
+\subsection{Efficient lookups with bloom filters}
+
+Given that a query only requires the transmission of a hash code, the
+number of queries that any given peer may receive is quite high.  The
+bandwidth required for the response can generally be discounted, since
+each peer will only be able to respond to a small fraction of the
+received queries.  Assuming that queries dominate the traffic, over 50
+queries per second could be transmitted over a slow modem line.  Many
+peers could not perform disk-based database lookups at such rates.
+Worse, if peers are sharing gigabytes of content, simply keeping the
+index information in memory is also often no longer feasible.
+
+In order to dramatically reduce the necessary number of database
+accesses, ECRS can be supplemented with a bloom filter~\cite{bloom},
+which is a probabilistic data structure that uses little memory and
+can be used to filter out queries that definitely cannot be answered
+by the local peer.  The bloom filter is guaranteed to allow all
+queries that can be locally answered through the filter, and will
+reject all but a statistically insignificant number of queries that
+cannot be answered locally.
+
+The size of the bloom filter in memory that is required to reduce the
+number of false-positives to approximately 3\% is about one byte (8
+bit with 5 bloom tests, $2^{-5} \approx 3\%$) per entry.  Since a
+node occasionally needs to remove content from the local database,
+additional bit counters for the bloom filter are stored on the disk.
+The assumption here is that changes to the filter are rare compared to
+the frequency of queries.  Queries that pass through the bloom filter are
+forwarded to the database layer which then attempts to locate the
+content. 
+
+
+
+\section{Discussion} \label{discussion}
+
+The fact that each {\em DBlock} can be encoded independently from any
+other {\em DBlock} results in an important feature of ECRS called {\em
+on-demand encoding}.  Given a plaintext file and an index that maps a
+query to an offset in the file, the resulting {\em DBlock} can be
+encoded on-the-fly, without processing any other part of the file.
+This can be an important benefit if the user intends to keep the file
+in plaintext on the local drive.  In this case, the system can index
+the {\em DBlocks} without replicating the actual data, storing the
+resulting {\em IBlocks} (and {\em SBlocks} and {\em KBlocks}) and then
+later producing the {\em DBlocks} only using the index.  This can
+result in rather dramatic savings in space (no replication of encoded
+content).
+
+Splitting files into blocks might be perceived as having a negative
+effect on the preservation of data.  If only one of the small pieces
+is lost, the larger file can no longer be reconstructed.  Thus, many
+other systems~\cite{freehaven-berk,mojotech} strive to keep files
+intact or use erasure codes~\cite{rabin89efficient} to patch missing
+pieces.  While erasure codes could be used together with ECRS, they
+would conflict with the performance benefits of on-demand encoding.
+Consequently, the primary mechanism to guard against the loss of files
+encoded with ECRS should be data replication.  Since ECRS is splitting
+files into blocks it should be possible for the network to duplicate
+blocks at a negligible cost per block.  Duplicating a complete file of
+several gigabytes would be much more costly and more likely to fail.
+For large files, it may be difficult for a peer to find individual
+hosts that are willing (or able) to provide enough space to replicate
+the complete file in its entirety.  Also, the traffic burst that a
+large transfer would impose on the network might keep the
+participating nodes busy for too long.  Blocks, on the other hand, can
+migrate quickly from host to host.  Storing a large file on a single
+host also fails to facilitate distribution of load for downloading
+purposes.
+
+
+\subsection{Attacks}
+
+ECRS is open to two types of attacks from censors.  The most obvious
+attack available to an adversary is to guess possible keywords and use
+those to compute queries for specific {\em KBlock}s.  The adversary
+can then try to censor these queries.  Since the same content can be
+available under many keywords, this technique is not necessary
+successful.  However, this guessing attack does provide the
+opportunity for limited forms of censorship.  An adversary could
+create a ``blacklist'' of keywords and attempt to legally force
+operators to filter matching queries or replies.
+
+Instead of predicting keywords, the attacker can also try to obtain
+the exact contents of the file (or at least the exact contents of an
+incriminating part).  This maybe achieved by searching the network for
+certain keywords and then downloading the resulting content.  This way
+the attacker can again compute the query for the {\em DBlock}s and
+{\em IBlock}s and also obtain the encrypted {\em DBlock}s and {\em
+IBlock}s themselves.  Again, the adversary can then try to censor this
+data.  Note that this attack requires the adversary to obtain a copy
+of the content and then exercise a certain amount of control over the
+peers in the network. As users must have a way to decrypt the file
+solely by means of guessing the keyword, this attack cannot be
+avoided.  A fault-tolerant peer-to-peer routing protocol may be able
+to route the content around the adversary-controlled censoring peers.
+
+If such an active censorship attack is known to occur on a large
+scale, a possible defense would be to publish the content with slight
+alterations for each keyword.  A single space inserted at the
+beginning of a text-document is sufficient to change {\em all} blocks
+of the ECRS encoding.\footnote{Note that only operations causing
+global shifts in the data have this property.  One single-character
+replacement changes only one root-to-leaf path in the encoding tree.}
+While this would defeat the use of convergent encryption and increase
+the storage and bandwidth requirements, this would make it infeasible
+for the censor to effectively censor all of the variants.  Since such
+a powerful active attacker is likely to be uncommon the {\em default}
+in ECRS is to use convergent encryption.
+
+Both attacks fail to enable intermediaries to exercise editorial
+control over content in general.  While peers can theoretically be
+forced to censor well-known keywords and files, they are unable to
+censor new keywords or unknown content.  As small changes to the
+content or keyword are sufficient to make detection impossible, these
+types of censorship should be impractical.
+
+Another serious type of attack is spamming the global keyword space
+with useless content.  Popular keywords are an easy target since they
+are likely to be easily guessed by an adversary.  Namespaces can
+theoretically eliminate this problem, however they create a new
+difficulty in assessing which pseudonyms represent users that provide
+valuable content.  A secure reputation system, like
+Advogato~\cite{levien03advogato}, may be a step towards a technical
+solution for this problem.  A possibly more important challenge for
+future work is making such complex solutions easily accessible for the
+average user.
+
+
+%
+% Another or complementary direction might be some sort of pagerank 
+% style ranking of search results (if possible to pull off 
+% distributedly)... just a thought. I mean, suppose everyone trusts 
+% and likes "Jeff". After all, Jeff inserted a billion of britney spears
+% pictures. Now its still a bit difficult to find out which of 
+% those pictures are really good ones! -jtl
+%
+% ! + Content availability measuring! In a way its related to encoding,
+%   just as querying is. The question is: can there be any secure
+%   mechanism to measure if all blocks of a file exists in the network. 
+%   I think this pretty important. Pseudonyms are an informal
+%   move towards this direction too. -- jtl
+% : I don't quite see what this has to do specifically with the encoding.
+%   It has more to do with replication and routing, which are off-topic. -- cg
+% ! The point of future directions is precisely what it says. If there
+%   is no future work left in encoding, we should point people to the
+%   remaining problems w.r.t. the bigger concept. Besides, the paper
+%   somewhat tries to give the impression 'look, this here can be seen
+%   as an encoding problem'. What you are basically claiming 
+%   by 'off topic' is that there can be no trick that would connect 
+%   or require connecting content availability measuring to the 
+%   encoding that the data is represented in. For example, an
+%   encoding that would allow an incremental counter to be
+%   incremented *once* by anyone who has decrypted the block,
+%   would be a technique related to the encoding. I'm not
+%   saying that such technique would be feasible or would work, 
+%   what I'm saying that something similar, if possible impossible, 
+%   would belong to the encoding domain. -jtl
+% : Ok, so maybe we should tackle this together with the point of
+%   many other systems using erasure codes to ``heal'' lost portions
+%   of files.  We say, replication is the solution, but obviously
+%   replication requires control over what gets replicated when;
+%   measuring availability is one thing that can help control
+%   replication.  Interestingly, there is another way:
+%   http://gnunet.org/papers/p2pmulti.pdf
+%   So we should also: \cite{cohen02replication}
+% \nocite{cohen02replication} % for now
+
+
+\subsection{{\em KBlocks} or triple-hash}
+
+The triple-hash that was used instead of {\em KBlock}s in our earlier
+work ~\cite{esed} allows for an attack by an active, participating
+adversary.  The following paragraphs first briefly present the original
+scheme, discuss the attack and then compare it with the {\em KBlock}
+approach taken in this paper.
+
+Let an {\em RBlock} be a block that contains the metadata of a file
+(including the top CHK data).  The only difference between {\em
+RBlock}s and {\em KBlock}s is that {\em RBlock}s are encoded and
+requested using the triple-hash scheme.  For each keyword $k$
+associated with a file, the {\em RBlock} $R$ of the file is encrypted
+with $H(k)$ and stored under $H(H(k))$.  Using the keyword as the
+source for the key allows the receiver of the file to obtain the key
+by guessing.  
+
+Querying for an {\em RBlock} is {\bf not} straightforward.  The
+problem is that the intuitive choice for a query, $H(H(k))$ does not
+give intermediaries a way to verify that the (encrypted) response is
+correct.  Instead of using $H(H(k))$, the initiator sends the
+so-called ``triple-hash'' query $H(H(H(k)))$.  A peer that has stored
+$E_{H(k)}(R)$ under $H(H(k))$ can match the query with the response
+and send back the pair $H(H(k)), E_{H(k)}(R)$.  Intermediaries can
+verify that the proof of authenticity, $H(H(k))$, hashes to the query
+$H(H(H(k)))$.  Malicious peers cannot construct the proof $H(H(k))$
+without guessing $k$ or inverting the hash function.
+
+The problem with the triple-hash is that an adversary that is routing
+a response to a triple-hash request can substitute the encrypted
+content in the $\{H(H(K)), E_{H(K)}(Q, K, size)\}$ response while
+maintaining the $H(H(K))$ token.  The resulting reply $\{H(H(K)), X\}$
+still looks like a valid response to the triple-hash query
+$H(H(H(K)))$.  The triple-hash thus does not protect against such a
+substitution attack by an intermediary.  The impact of the attack is
+such that the network would propagate and cache the invalid replies.
+The attack will not prevent the spread of valid replies through other
+routes in the system since multiple results to the same query are
+possible.  Furthermore, any user searching for $K$ will not see the
+invalid results.  The reason is that the attempt to decrypt $X$ with
+$H(K)$ will (with high probability) result in a malformed {\em
+RBlock}.  Thus, the end-user is still protected from this type of
+spam.  Nevertheless, the adversary can abuse network resources for
+transmitting and caching $X$.
+
+Replacing the triple-hash with {\em KBlock}s for ECRS comes at a
+relatively high price.  Where the tripe-hash only requires a simple
+hash operation to verify replies, {\em KBlock}s need to perform a
+public key operation.  Worse, when publishing content or searching,
+the triple-hash scheme again only requires a few quick hash operations
+to compute the query or the content.  With {\em KBlock}s, the cost
+increases to additionally generating a public-private key pair in
+addition to a public key operation and hash operations.  
+
+Both {\em KBlocks} and the triple-hash are vulnerable to the guessing
+attack.  Guessing is slightly easier for the triple-hash since the
+computation for each guess is much cheaper.  Overall, {\em KBlocks}
+work better than the triple-hash against adversaries that
+indiscriminately attempt to abuse network resources, but at the
+expense of higher CPU utilization even in the absence of an attack.
+Thus using the triple-hash scheme may still be reasonable in networks
+with limited CPU power or less stringent security requirements.
+
+
+
+\section{Conclusion} \label{conclusion}
+
+This paper has described an encoding scheme which is able to produce
+the same ciphertext (with the exception of one small {\em KBlock} per
+keyword) for the encryption of a file independent of the key(words)
+chosen by the content providers.  The resulting ciphertext is not
+significantly larger than the plaintext.  Arbitrary pieces of the
+ciphertext can be generated from plaintext without reading unrelated
+parts of the plaintext.  The encoding mechanism makes it difficult for
+censors to selectively suppress content.  While dictionary attacks on
+the password and known plaintext attacks on the ciphertext are still
+possible, they are harmless with respect to the goal of deniability
+for intermediaries.  The basic encoding scheme can be extended with
+directories and namespaces which allow for restricting searches to
+content published by known pseudonyms.  Namespaces allow for files and
+directories to be updated.
+
+ECRS is implemented as a part of {\sc gnu}net, a secure platform for
+peer-to-peer networking.  In {\sc gnu}net, ECRS works towards
+implementing anonymous, censorship-resistant file-sharing.  {\sc
+gnu}net is free software and part of the GNU project.  The {\sc
+gnu}net code is approximately 100,000 lines of C code.  ECRS itself is
+implemented in about 8,000 LOC.  The code is freely available from the
+{\sc gnu}net webpage\footnote{\url{http://gnunet.org/}}.
+
+\subsection*{Acknowledgements}
+
+The authors thank Roger Dingledine for helpful comments on an earlier
+draft of this paper.
+
+
+{\small
+\bibliographystyle{plain}
+\bibliography{ref}
+}
+
+\end{document}

Added: GNUnet-docs/papers/ecrs/makefile
===================================================================
--- GNUnet-docs/papers/ecrs/makefile    2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet-docs/papers/ecrs/makefile    2005-05-31 19:27:19 UTC (rev 833)
@@ -0,0 +1,23 @@
+# sane targets
+all: doc
+doc:   
+       latex main.tex
+       bibtex main || echo "ok"
+       latex main.tex
+       latex main.tex
+       latex main.tex
+       dvips main.dvi -o main.ps
+       pdflatex main.tex
+clean:
+       rm -f *.aux *.dvi *.idx *.ind *.log *.toc *.bak *.blg *.bbl 
+       rm -f *.ps main.pdf
+distclean: clean
+       rm -f *~
+viewps: doc
+       gv main.ps
+viewpdf: doc
+       xpdf main.pdf
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: GNUnet-docs/papers/ecrs/modified_inode_split.eps
===================================================================
--- GNUnet-docs/papers/ecrs/modified_inode_split.eps    2005-05-31 19:10:35 UTC 
(rev 832)
+++ GNUnet-docs/papers/ecrs/modified_inode_split.eps    2005-05-31 19:27:19 UTC 
(rev 833)
@@ -0,0 +1,266 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: modified_inode_split.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: Sun Nov 30 00:02:10 2003
+%%For: address@hidden (Krista Bennett)
+%%BoundingBox: 0 0 373 199
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 199 moveto 0 0 lineto 373 0 lineto 373 199 lineto closepath clip 
newpath
+-172.0 320.2 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/reencdict 12 dict def /ReEncode { reencdict begin
+/newcodesandnames exch def /newfontname exch def /basefontname exch def
+/basefontdict basefontname findfont def /newfont basefontdict maxlength dict 
def
+basefontdict { exch dup /FID ne { dup /Encoding eq
+{ exch dup length array copy newfont 3 1 roll put }
+{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall
+newfont /FontName newfontname put newcodesandnames aload pop
+128 1 255 { newfont /Encoding get exch /.notdef put } for
+newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat
+newfontname newfont definefont pop end } def
+/isovec [
+8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde
+8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis
+8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron
+8#220 /dotlessi 8#230 /oe 8#231 /OE
+8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling
+8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis
+8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot
+8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus
+8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph
+8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine
+8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf
+8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute
+8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring
+8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute
+8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute
+8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve
+8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply
+8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex
+8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave
+8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring
+8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute
+8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute
+8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve
+8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide
+8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex
+8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def
+/Times-Italic /Times-Italic-iso isovec ReEncode
+/Times-Roman /Times-Roman-iso isovec ReEncode
+/NewCenturySchlbk-Italic /NewCenturySchlbk-Italic-iso isovec ReEncode
+/Times-Italic /Times-Italic-iso isovec ReEncode
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+7.500 slw
+n 3300 5175 m
+ 3300 5325 l gs col0 s gr 
+% Polyline
+n 4200 5175 m
+ 4200 5325 l gs col0 s gr 
+% Polyline
+n 3300 5250 m 4200 5250 l
+ 4200 5325 l gs col0 s gr 
+/Times-Roman-iso ff 150.00 scf sf
+3450 5175 m
+gs 1 -1 sc (1024 bytes) col0 sh gr
+% Polyline
+n 3300 4425 m 8175 4425 l 8175 4950 l 3300 4950 l
+ cp gs col0 s gr 
+% Polyline
+n 4200 4425 m
+ 4200 4950 l gs col0 s gr 
+% Polyline
+n 5100 4425 m
+ 5100 4950 l gs col0 s gr 
+% Polyline
+n 7200 4425 m
+ 7200 4950 l gs col0 s gr 
+/NewCenturySchlbk-Italic-iso ff 150.00 scf sf
+3743 4812 m
+gs 1 -1 sc (1) col0 sh gr
+/NewCenturySchlbk-Italic-iso ff 180.00 scf sf
+3609 4737 m
+gs 1 -1 sc (B) col0 sh gr
+/NewCenturySchlbk-Italic-iso ff 150.00 scf sf
+4634 4812 m
+gs 1 -1 sc (2) col0 sh gr
+/NewCenturySchlbk-Italic-iso ff 180.00 scf sf
+4515 4722 m
+gs 1 -1 sc (B) col0 sh gr
+/NewCenturySchlbk-Italic-iso ff 180.00 scf sf
+7530 4738 m
+gs 1 -1 sc (B) col0 sh gr
+/NewCenturySchlbk-Italic-iso ff 150.00 scf sf
+7648 4812 m
+gs 1 -1 sc (25) col0 sh gr
+% Polyline
+n 5921 2817 m
+ 5921 3342 l gs col0 s gr 
+% Polyline
+n 4946 2817 m 6071 2817 l 6071 3342 l 4946 3342 l
+ cp gs col0 s gr 
+% Polyline
+n 5246 2817 m
+ 5246 3342 l gs col0 s gr 
+% Polyline
+n 5396 2817 m
+ 5396 3342 l gs col0 s gr 
+% Polyline
+n 5545 2817 m
+ 5545 3342 l gs col0 s gr 
+/Times-Roman-iso ff 195.00 scf sf
+5171 3267 m
+gs 1 -1 sc  90.0 rot (CRC) col0 sh gr
+/Times-Roman-iso ff 255.00 scf sf
+5725 3192 m
+gs 1 -1 sc (...) dup sw pop 2 div neg 0 rm  col0 sh gr
+% Arc
+gs  clippath
+5671 2809 m 5726 2784 l 5663 2646 l 5686 2768 l 5608 2671 l cp
+eoclip
+ [15 45] 45 sd
+n 4595.0 3210.2 1178.2 -21.3 -141.9 arcn
+gs col0 s gr
+ gr
+ [] 0 sd
+% arrowhead
+n 5608 2671 m 5686 2768 l 5663 2646 l 5608 2671 l  cp gs 0.00 setgray ef gr  
col0 s
+% Polyline
+gs  clippath
+6128 2978 m 6128 3038 l 6280 3038 l 6160 3008 l 6280 2978 l cp
+eoclip
+n 6143 3008 m
+ 6518 3008 l gs col0 s gr gr
+
+% arrowhead
+n 6280 2978 m 6160 3008 l 6280 3038 l  col0 s
+/Times-Roman-iso ff 180.00 scf sf
+2866 3407 m
+gs 1 -1 sc (CRC) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+2866 3167 m
+gs 1 -1 sc (hash codes and a 4-byte) col0 sh gr
+/Times-Roman-iso ff 180.00 scf sf
+2866 2927 m
+gs 1 -1 sc (Space for 25   40-byte) col0 sh gr
+/Times-Italic-iso ff 150.00 scf sf
+7710 3105 m
+gs 1 -1 sc (2) col0 sh gr
+/Times-Italic-iso ff 210.00 scf sf
+7335 3030 m
+gs 1 -1 sc (H\(B  \), ... , ) col0 sh gr
+/Times-Italic-iso ff 150.00 scf sf
+7035 3105 m
+gs 1 -1 sc (1) col0 sh gr
+/Times-Italic-iso ff 210.00 scf sf
+6660 3030 m
+gs 1 -1 sc (H\(B  \), ) col0 sh gr
+/Times-Italic-iso ff 210.00 scf sf
+8385 3030 m
+gs 1 -1 sc (H\(B    \)) col0 sh gr
+/Times-Italic-iso ff 150.00 scf sf
+8775 3105 m
+gs 1 -1 sc (25) col0 sh gr
+% Polyline
+ [15 45] 45 sd
+n 3743 4441 m
+ 5317 3342 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 4663 4426 m
+ 5465 3342 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 7693 4441 m
+ 6000 3342 l gs col0 s gr  [] 0 sd
+/Times-Italic-iso ff 210.00 scf sf
+5735 3654 m
+gs 1 -1 sc (IBlock) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Italic-iso ff 210.00 scf sf
+5794 5311 m
+gs 1 -1 sc (DBlocks) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman-iso ff 450.00 scf sf
+6150 4800 m
+gs 1 -1 sc (...) dup sw pop 2 div neg 0 rm  col0 sh gr
+$F2psEnd
+rs

Added: GNUnet-docs/papers/ecrs/modified_inode_split.fig
===================================================================
--- GNUnet-docs/papers/ecrs/modified_inode_split.fig    2005-05-31 19:10:35 UTC 
(rev 832)
+++ GNUnet-docs/papers/ecrs/modified_inode_split.fig    2005-05-31 19:27:19 UTC 
(rev 833)
@@ -0,0 +1,101 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 3285 5040 4230 5355
+6 3285 5175 4230 5355
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        3300 5175 3300 5325
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        4200 5175 4200 5325
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 3
+        3300 5250 4200 5250 4200 5325
+-6
+4 0 0 50 0 0 10 0.0000 4 150 660 3450 5175 1024 bytes\001
+-6
+6 3285 4410 8190 4950
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        3300 4425 8175 4425 8175 4950 3300 4950 3300 4425
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        4200 4425 4200 4950
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        5100 4425 5100 4950
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        7200 4425 7200 4950
+-6
+6 3600 4590 3870 4815
+4 0 0 50 0 25 10 0.0000 4 120 90 3743 4812 1\001
+4 0 0 50 0 25 12 0.0000 4 135 135 3609 4737 B\001
+-6
+6 4500 4545 4725 4815
+6 4590 4680 4725 4815
+4 0 0 50 0 25 10 0.0000 4 105 90 4634 4812 2\001
+-6
+4 0 0 50 0 25 12 0.0000 4 135 135 4515 4722 B\001
+-6
+6 7515 4590 7830 4815
+4 0 0 50 0 25 12 0.0000 4 135 135 7530 4738 B\001
+4 0 0 50 0 25 10 0.0000 4 105 180 7648 4812 25\001
+-6
+6 2850 2025 6525 3450
+6 4905 2790 6075 3375
+6 4905 2790 6075 3375
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        5921 2817 5921 3342
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        4946 2817 6071 2817 6071 3342 4946 3342 4946 2817
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        5246 2817 5246 3342
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        5396 2817 5396 3342
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        5545 2817 5545 3342
+-6
+4 0 0 50 0 0 13 1.5708 4 135 405 5171 3267 CRC\001
+4 1 0 50 0 0 17 0.0000 4 30 180 5725 3192 ...\001
+-6
+6 2850 2025 6525 3450
+6 3645 2025 6525 3060
+5 1 2 1 0 7 50 0 -1 3.000 0 1 0 1 4594.986 3210.220 5693 2783 4643 2033 3668 
2483
+       1 1 1.00 60.00 120.00
+2 1 0 1 0 7 50 0 -1 3.000 0 0 -1 0 1 2
+       0 0 1.00 60.00 120.00
+        6143 3008 6518 3008
+-6
+6 2850 2775 4575 3450
+4 0 0 50 0 0 12 0.0000 4 120 360 2866 3407 CRC\001
+4 0 0 50 0 0 12 0.0000 4 165 1695 2866 3167 hash codes and a 4-byte\001
+4 0 0 50 0 0 12 0.0000 4 180 1575 2866 2927 Space for 25   40-byte\001
+-6
+-6
+-6
+6 6660 2895 9060 3105
+6 7335 2895 8370 3105
+4 0 0 50 0 3 10 0.0000 0 105 75 7710 3105 2\001
+4 0 0 50 0 3 14 0.0000 0 180 1035 7335 3030 H(B  ), ... , \001
+-6
+6 6660 2895 9060 3105
+6 6660 2895 7335 3105
+4 0 0 50 0 3 10 0.0000 0 120 75 7035 3105 1\001
+4 0 0 50 0 3 14 0.0000 0 180 675 6660 3030 H(B  ), \001
+-6
+6 8385 2895 9060 3105
+4 0 0 50 0 3 14 0.0000 0 180 675 8385 3030 H(B    )\001
+4 0 0 50 0 3 10 0.0000 0 105 150 8775 3105 25\001
+-6
+-6
+-6
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
+        3743 4441 5317 3342
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
+        4663 4426 5465 3342
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
+        7693 4441 6000 3342
+4 1 0 50 0 1 14 0.0000 4 150 555 5735 3654 IBlock\001
+4 1 0 50 0 1 14 0.0000 4 150 705 5794 5311 DBlocks\001
+4 1 0 50 0 0 30 0.0000 4 60 360 6150 4800 ...\001

Added: GNUnet-docs/papers/ecrs/ref.bib
===================================================================
--- GNUnet-docs/papers/ecrs/ref.bib     2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet-docs/papers/ecrs/ref.bib     2005-05-31 19:27:19 UTC (rev 833)
@@ -0,0 +1,513 @@
address@hidden = "Lecture Notes in Computer Science"}
address@hidden   = "Springer-Verlag Inc."}
+
address@hidden shamir,
+    author = "A. Shamir",
+    title = "{How to share a secret}",
+    booktitle = "{Communications of the ACM}",
+    publisher = "{ACM}",
+    volume = "22",
+    pages = "612-613",
+    year = "1979",
+}
address@hidden esed,
+    author = "Krista Bennett and Christian Grothoff and Tzvetan Horozov and 
Ioana Patrascu",
+    title = "{Efficient Sharing of Encrypted Data}",
+    booktitle = "{ASCIP}",
+    publisher = pub-SV,
+    series = ser-LNCS,
+    volume = "2384",
+    pages = "107--120",
+    url = "{http://www.ovmj.org/GNUnet/download/esed.ps}";,
+    year = "2002"
+}
address@hidden mazieres02building,
+  author = "David {Mazi\`eres} and Dennis Shasha",
+  title = "Building secure file systems out of Byzantine storage",
+  BookTitle = {Proceedings of the Twenty-First ACM Symposium on Principles of 
Distributed
+    Computing (PODC 2002)},
+  year = "2002",
+  url = {citeseer.nj.nec.com/mazieres02building.html} }
+
address@hidden muthitacharoen02ivy,
+  author = "Athicha Muthitacharoen and Robert Morris and Thomer M. Gil and 
Benjie Chen",
+  title = "Ivy: A Read/Write Peer-to-Peer File System",
+  booktitle = "Proceedings of 5th Symposium on Operating Systems Design and 
Implementation",
+   year = 2002,
+  url = "citeseer.nj.nec.com/muthitacharoen02ivy.html" }
+
address@hidden kallahalla03plutus,
+  author = "M. Kallahalla and E. Riedel and R. Swaminathan and Q. Wang and K. 
Fu",
+  title = "Plutus --- scalable secure file sharing on untrusted storage",
+  booktitle = "{Proceedings of the Second USENIX Conference on File and 
Storage Technologies (FAST).}",
+  publisher = "{USENIX}",
+  month = "March",
+  year = "2003",
+  url = "citeseer.nj.nec.com/kallahalla03plutus.html" 
+}
+
address@hidden sterling95beowulf,
+    author = "T. Sterling and D. Savarese and D. J. Becker and J. E. Dorband 
and U. A. Ranawake and C. V. Packer",
+    title = "{BEOWULF}: {A} Parallel Workstation for Scientific Computation",
+    booktitle = "Proceedings of the 24th International Conference on Parallel 
Processing",
+    address = "Oconomowoc, WI",
+    pages = "I:11--14",
+    year = "1995"
+}
+
address@hidden dingledine02mixminion,
+  author = "George Danezis and Roger Dingledine and Nick Mathewson",
+  title = "{Mixminion: Design of a Type III Anonymous Remailer Protocol}",
+  booktitle = "{IEEE} Symposium on Security and Privacy",
+  year = "2003",
+}
+
address@hidden syverson97anonymous,
+    author = "Paul Syverson and David Goldschlag and Michael Reed",
+    title = "{Anonymous Connections and Onion Routing}",
+    booktitle = "{IEEE} Symposium on Security and Privacy",
+    month = "4--7",
+    address = "Oakland, California",
+    isbn = "0-8186-7828-3",
+    pages = "44--54",
+    year = "1997",
+    url = "citeseer.nj.nec.com/syverson97anonymous.html" 
+}
+
address@hidden,
+  title = {The Free Haven Project: Distributed Anonymous Storage Service}, 
+  author = {Roger Dingledine and Michael J. Freedman and David Molnar}, 
+  booktitle = {Proceedings of Designing Privacy Enhancing Technologies: 
Workshop on Design
+        Issues in Anonymity and Unobservability}, 
+  year = {2000}, 
+  month = {July}, 
+  editor = {Hannes Federrath}, 
+  publisher = {Springer-Verlag, LNCS 2009}, 
+  www_important = {1}, 
+  www_ps_url = {http://freehaven.net/doc/berk/freehaven-berk.ps}, 
+  www_section = {Anonymous publication}, 
+}
+
address@hidden rowstron01storage,
+    author = "Antony I. T. Rowstron and Peter Druschel",
+    title = "Storage Management and Caching in {PAST}, A Large-scale, 
Persistent Peer-to-peer Storage Utility",
+    booktitle = "Symposium on Operating Systems Principles",
+    pages = "188-201",
+    year = "2001",
+    url = "citeseer.nj.nec.com/rowstron01storage.html" 
+}
address@hidden:sosp01,
+  title = {Wide-area cooperative storage with {CFS}},
+  author = {Frank Dabek and M. Frans Kaashoek and David Karger and Robert 
Morris
+and Ion Stoica},
+  booktitle = {Proceedings of the 18th {ACM} {S}ymposium on {O}perating
+{S}ystems {P}rinciples ({SOSP} '01)},
+  year = {2001},
+  month = {October},
+  address = {Chateau Lake Louise, Banff, Canada},
+  pages = {},
+}
address@hidden maymounkov02kademlia,
+  author = "Petar Maymounkov and David {Mazi\`eres}",
+  title = "{Kademlia: A peer-to-peer information system based on the xor 
metric}",
+  booktitle = "Proceedings of IPTPS02, Cambridge",
+  month = "March",
+  year = "2002",
+  url = "http://www.cs.rice.edu/Conferences/IPTPS02/.";
+}
+
address@hidden stoica01chord,
+ author = "Ion Stoica and Robert Morris and David Karger and M. Frans Kaashoek 
and Hari Balakrishnan",
+ title = "Chord: A scalable peer-to-peer lookup service for internet 
applications",
+ booktitle = "Proceedings of the 2001 conference on applications, 
technologies, architectures, and protocols for computer communications",
+ year = "2001",
+ isbn = "1-58113-411-8",
+ pages = "149--160",
+ location = "San Diego, California, United States",
+ doi = "http://doi.acm.org/10.1145/383059.383071";,
+ publisher = "ACM Press",
+ url = "citeseer.nj.nec.com/stoica02chord.html" 
+}
+
address@hidden chen99prototype,
+    author = "Yuan Chen and Jan Edler and Andrew Goldberg and Allan Gottlieb 
and Sumeet Sobti and Peter Yianilos",
+    title = "A Prototype Implementation of Archival Intermemory",
+    booktitle = "Proceedings of the Fourth {ACM} International Conference on 
Digital Libraries",
+    year = "1999",
+    url = "citeseer.nj.nec.com/chen99prototype.html" }
+ 
+
address@hidden internetworking9191,
+  author = "Comer, D.E. and Stevens, D.L.",
+  title = "Internetworking with TCP/IP Vol.II - Design, Implementation \& 
Internals",
+  publisher = "Prentice Hall",
+  address = "Englewood Cliffs, NJ",
+  text = "Comer, D.E., Stevens, D.L., Internetworking with TCP/IP Vol.II - 
Design, Implementation \& Internals, Englewood Cliffs NJ, Prentice Hall, 1991.",
+  year = "1991" }
+
address@hidden carnivore,
+  author = "",
+  title = "Carnivore",
+  url = "",
+  text = "" }
+
address@hidden ssh,
+  author = "IETF Secure Shell (secsh) Working Group",
+  title = "Secure shell (secsh) charter.",
+  text = "IETF Secure Shell (secsh) Working Group. Secure shell (secsh) 
charter.
+    Available at http: //www.ietf.org/html.charters/secsh-charter.html, March
+    1999.",
+  year = "1999" }
+
address@hidden herlihy87how,
+    author = "Maurice Herlihy and J. D. Tygar",
+    title = "How to Make Replicated Data Secure",
+    booktitle = "{CRYPTO}",
+    pages = "379-391",
+    year = "1987",
+    url = "citeseer.nj.nec.com/herlihy87how.html" }
+ 
address@hidden fastTrack,
+  author = "{giFT-FastTrack project}",
+  title = "http://developer.berlios.de/projects/gift-fasttrack";,
+  note = "{Protocol description available at 
http://www.ovmj.org/GNUnet/papers/FAST-TRACK-PROTOCOL}";,
+  year = "2003",
+}
+
address@hidden feamster-infranet,
+  author = "Nick Feamster and Magdalena Balazinska and Greg Harfst and Hari 
Balakrishnan and David Karger",
+  title = "Infranet: Circumventing Web Censorship and Surveillance",
+  booktitle = "{11th USENIX Security Symposium}",
+  url = "citeseer.nj.nec.com/feamster02infranet.html",
+  year = "2002",
+}
+ 
+
address@hidden song00practical,
+    author = "Dawn Xiaodong Song and David Wagner and Adrian Perrig",
+    title = "Practical Techniques for Searches on Encrypted Data",
+    booktitle = "{IEEE} Symposium on Security and Privacy",
+    pages = "44-55",
+    year = "2000",
+    url = "citeseer.nj.nec.com/273160.html" }
+
address@hidden ssl,
+  author = "K. Hickman",
+  title = "The SSL protocol. Internet Draft RFC",
+  text = "K. Hickman. The SSL protocol. Internet Draft RFC, 1995.",
+  year = "1995" }
+
address@hidden criscuolo00stacheldraht,
+  author = "P. Criscuolo",
+  title = "Distributed Denial of Service - Trin00, Tribe Flood Network, Tribe 
Flood Network 2000, and Stacheldraht.",
+  number = "CIAC-2319",
+  institution = "Department of Energy - CIAC (Computer Incident Advisory 
Capability)",
+  text = "P. J. Criscuolo. Distributed Denial of Service - Trin00, Tribe Flood 
Network, Tribe Flood Network 2000, and Stacheldraht. Technical Report 
CIAC-2319, Department of Energy - CIAC (Computer Incident Advisory Capability), 
February 2000.",
+  month = "Feb.",
+  year = "2000" }
+
address@hidden waldman2001tangler,
+    author = "Marc Waldman and David {Mazi\`eres}",
+    title = "Tangler: A Censorhip-Resistant Publishing System Based On 
Document Entanglements",
+    booktitle = "{ACM Conference on Computer and Communications Security}",
+    pages = "126-135",
+    year = "2001"
+}
+
+
address@hidden gap,
+    author = "Krista Bennett and Christian Grothoff",
+    title = "{gap - Practical Anonymous Networking}",
+    booktitle = "Privacy enhancing technologies: third international workshop, 
{PET} 2003",
+    publisher = "Springer-Verlag",
+    url = "http://gnunet.org/download/aff.ps";,
+    year = "2003",
+    series = ser-LNCS,
+}
address@hidden gnunettransport,
+    author = "Ronaldo A. Ferreira and Christian Grothoff and Paul Ruth",
+    title = "{A Transport Layer Abstraction for Peer-to-Peer Networks}",
+    booktitle = "{Proceedings of GRID 2003}",
+    publisher = "{IEEE Computer Society}",
+    url = "http://gnunet.org/download/transport.ps";,
+    year = "2003"
+}
address@hidden,
+ author = "Burton Bloom",
+ title = "Space/Time Trade-Offs in Hash Coding with Allowable Errors",
+ journal = "Communications of the ACM",
+ volume = "13",
+ number = "7",
+ pages = "422--426",
+ year = "1970",
+}
+
address@hidden levien03advogato,
+  author =      {Raph Levien},
+  title =       {Attack Resistant Trust Metrics},
+  note =        {Draft available at http://www.levien.com/thesis/compact.pdf},
+  OPTkey =      {},
+  OPTmonth =    {},
+  year =        {2003},
+  OPTannote =   {}
+}
+
address@hidden { ebe2003,
+    author = "Christian Grothoff",
+    title = "{An Excess-Based Economic Model for Resource Allocation in 
Peer-to-Peer Networks}",
+    journal = "Wirtschaftsinformatik",
+    booktitle = "Wirtschaftsinformatik",
+    volume = "3-2003",
+    publisher = "Vieweg-Verlag",
+    url = "http://gnunet.org/download/ebe.ps";,    
+    month = "June",
+    year = "2003"
+}
+
address@hidden reiter98crowds,
+    author = "Michael K. Reiter and Aviel D. Rubin",
+    title = "Crowds: anonymity for {Web} transactions",
+    journal = "ACM Transactions on Information and System Security",
+    volume = "1",
+    number = "1",
+    pages = "66--92",
+    year = "1998"
+}
+
address@hidden adar00free,
+  author = "Eytan Adar and Bernardo A. Huberman",
+  title = "Free riding on gnutella",
+  institution = "Xerox Parc",
+  text = "E. Adar and B. Huberman. Free riding on gnutella. Technical report, 
Xerox PARC, August 2000.",
+  month = "Aug.",
+  year = "2000" }
+
address@hidden plonka00uwmadison,
+  author = "Dave Plonka",
+  title = "UW-Madison Napster Traffic Measurement",
+  url = "http://net.doit.wisc.edu/data/Napster";,
+  text = "D. Plonka. UW-Madison Napster Traffic Measurement. 
http://net.doit.wisc.edu/data/Napster, March 2000.",
+  month = "Mar.",
+  year = "2000" }
+
+
address@hidden clark99distributed,
+  author = "Ian Clarke and Oskar Sandberg and Brandon Wiley and Theodorew W. 
Hong",
+  title = "Freenet: A Distributed Anonymous Information Storage and Retrieval 
System",
+  editor = "Hannes Federrath",
+  booktitle =    "Designing privacy enhancing technologies: International 
Workshop on Design Issues in Anonymity and Unobservability, Berkeley, {CA}, 
{USA}, July 25--26, 2000: proceedings",
+  series = ser-LNCS,
+  volume = "2009",
+  ISBN = "3-540-41724-9 (softcover)",
+  publisher = pub-SV,
+  url = "http://freenet.sourceforge.net/Freenet.ps";,
+  year = "2001" }
+
address@hidden brin98anatomy,
+    author = "Sergey Brin and Lawrence Page",
+    title = "The anatomy of a large-scale hypertextual {Web} search engine",
+    journal = "Computer Networks and ISDN Systems",
+    volume = "30",
+    number = "1--7",
+    pages = "107--117",
+    year = "1998"
+}
address@hidden hartman99swarm,
+    author = "John H. Hartman and Ian Murdock and Tammo Spalink",
+    title = "The Swarm Scalable Storage System",
+    booktitle = "International Conference on Distributed Computing Systems",
+    pages = "74-81",
+    year = "1999",
+    url = "citeseer.nj.nec.com/hartman99swarm.html" }
+ 
address@hidden { merkle89tree,
+    author = "Ralph C. Merkle",
+    title = "A certified digital signature",
+    booktitle = "G. Brassard, editor, Advances in Cryptology---CRYPTO '89",
+    note = "volume 435 of Lecture Notes in Computer Science",
+    pages = "218--238",
+    publisher = "Springer-Verlag",
+    year =  "1990",
+}
+ 
address@hidden,
+    author = "Michael O. Rabin",
+    title = "Efficient Dispersal of Information for Security, Load Balancing, 
and Fault Tolerance",
+    journal = "Journal of the ACM",
+    volume = "36",
+    number = "2",
+    pages = "335--348",
+    year = "1989"
+}
+
address@hidden mazires00sfs,
+  author = "David {Mazi\`eres}",
+  title = "Self-certifying file system",
+  year = "2000",
+  school =      {MIT},
+}
+
address@hidden mckusick84fast,
+    author = "Marshall K. McKusick and William N. Joy and Samuel J. Leffler 
and Robert S. Fabry",
+    title = "A Fast File System for {UNIX}",
+    journal = "Computer Systems",
+    volume = "2",
+    number = "3",
+    pages = "181-197",
+    year = "1984",
+    url = "citeseer.nj.nec.com/mckusick84fast.html" }
+
address@hidden dingledine00free,
+  author = "Roger Dingledine",
+  title = "{The Free Haven Project}.",
+  school = "Massachusetts Institute of Technology",
+  text = "Roger Dingledine. The Free Haven Project. Master's thesis, MIT, 
2000.",
+  year = "2000" }
+
address@hidden lewis00citing,
+  author = "Mark Lewis",
+  title = "Metallica sues Napster, universities, citing copyright infringement 
and RICO violations",
+  url =  
"http://www.livedaily.com/archive/2000/2k04/wk2/MetallicaSuesNapster,Univ.html";,
+  text = "Mark Lewis. Metallica sues Napster, universities, citing copyright 
infringement and RICO violations. 
http://www.livedaily.com/archive/2000/2k04/wk2/MetallicaSuesNapster,Univ.html.";,
+  year = "2000" }
+
address@hidden gnutella,
+  howpublished = "http://gtk-gnutella.sourceforge.net/";,
+}
+
address@hidden le2005,
+    author = "Christian Grothoff",
+    title = "{Reading File Metadata with extract and libextractor}",
+    journal = "LinuxJournal",
+    booktitle = "Linux Journal",
+    volume = "6-2005", 
+    publisher = "SCC",
+    url = "http://www.linuxjournal.com/article/7552";,
+    month = "June",
+    year = "2005"
+}
+
address@hidden dss-gnutella,
+  author = "Clip2 DSS",
+  title = "Gnutella Protocol Specification v0.4",
+  url = "http://www.clip2.com/GnutellaProtocol04.pdf";,
+  text = "Clip2 DSS, Gnutella Protocol Specification v0.4, 
http://www.clip2.com/GnutellaProtocol04.pdf"; }
+
address@hidden vixie97rfc,
+  author = "Paul Vixie and S. Thomson and Y. Rekhter and J. Bound",
+  title = "RFC 2136: Dynamic Updates in the Domain Name System",
+  text = "P. Vixie, S. Thomson, Y. Rekhter, and J. Bound. RFC 2136: Dynamic 
Updates in the Domain Name System (DNS UPDATE), Apr. 1997. 9",
+  year = "1997" }
+
address@hidden pub00,
+  author =       {Marc Waldman and Aviel D. Rubin and Lorrie Faith Cranor},
+  title =        {Publius: A robust, tamper-evident, censorship-resistant,
+                 web publishing system },
+  booktitle =    {Proc. 9th USENIX Security Symposium},
+  pages =        {59--72},
+  year =         2000,
+  month =        {August},
+  url = {citeseer.nj.nec.com/waldman00publius.html} }
+
address@hidden clarke00freenet,
+  author = "I. Clarke and O. Sandberg and B. Wiley and T. Hong",
+  title = "Freenet: A Distributed Anonymous Information Storage and Retrieval 
System",
+  booktitle = "Proc. of the ICSI Workshop on Design Issues in Anonymity and 
Unobservability", 
+  organization = "International Computer Science Institute",
+  location = "Berkeley, CA",
+  year = "2000",
+  text = "Ian Clarke, Oskar Sandberg, Brandon Wiley, and Theodore W. Hong. 
Freenet:
+    A Distributed Anonymous Information Storage and Retrieval System. In Proc.
+    of the ICSI Workshop on Design Issues in Anonymity and Unobservability,
+    Berkeley, CA, 2000. International Computer Science Institute.",
+  url = "citeseer.nj.nec.com/article/clarke00freenet.html" }
+
address@hidden gnunetwhite,
+    author = "K. Bennett and C. Grothoff and T. Horozov and I. Patrascu and T. 
Stef",
+    title = "Gnet Whitepaper",
+    institution = "Purdue University",
+    year = "2001"
+}
+
address@hidden bellovin89security,
+    author = "Steven M. Bellovin",
+    title = "Security Problems in the {TCP}/{IP} Protocol Suite",
+    journal = "Computer Communication Review",
+    volume = "19",
+    number = "2",
+    publisher = "ACM SIGCOMM",
+    pages = "32--48",
+    year = "1989"
+}
+
+
+
address@hidden bellovin00security,
+  author = "Steven M. Bellovin",
+  title = "Security Aspects of Napster and Gnutella",
+  url = "http://www.research.att.com/smb/talks/";,
+  text = "S. Bellovin, Security Aspects of Napster and Gnutella, 
http://www.research.att.com/smb/talks/
+    NapsterGnutella/index.htm, June 2000.",
+  year = "2000" }
+
address@hidden anderson96eternity,
+  author = "Ross Anderson",
+  title = "{The Eternity Service}",
+  booktitle = "Proceedings of Pragocrypt 1996",
+  year = "1996",
+  url = "citeseer.nj.nec.com/anderson96eternity.html" 
+}
+ 
+
+
address@hidden prabhakar0101,
+  author = "Gopal Pandurangan and Prabhakar Raghavan and Eli Upfal",
+  title = "Building low-diameter p2p networks",
+  booktitle = "Proc. of the 33rd Annual Symposium on Theory of Computing (STOC 
2001)",
+  location = "Crete, Greece",
+  text = "Gopal Pandurangan, Prabhakar Raghavan, and Eli Upfal. Building 
low-diameter p2p networks. In STOC 2001, Crete, Greece, 2001.",
+  year = "2001" }
+
+
+
address@hidden stratton_oakmont,
+  author = "{Stratton Oakmont vs Prodigy Services Company}",
+  year = "1995 N.Y. Misc. Lexis 229, (N.Y. Sup. Ct. Nassau Co., 1995).",
+  url = 
"http://www.eff.org/Legal/Cases/Stratton_Oakmont_Porush_v_Prodigy/stratton-oakmont_porush_v_prodigy_et-al.decision";
+}
+
+
address@hidden napsterfaq,
+  author = "Napster",
+  title = "Frequently Asked Questions.",
+  url = "http://www.napster.com/help/win/faq/"; }
+
+
address@hidden libfreenet,
+  author = "Steven Hazel",
+  title  = "Libfreenet, a case study in horrors incomprehensible to the mind 
of man, and other secure protocol design mistakes.",
+  url    = "http://thalassocracy.org/libfreenet/"; ,
+  month  = "Feb.",
+  year   = "2002"
+}
+
address@hidden mojotech,
+  author = "Bryce Wilcox-O'Hearn",
+  title = "{Experiences Deploying a Large-Scale Emergent Network}",
+  booktitle = "{Peer-to-Peer Systems: First International Workshop, ITPTS 
2002}",
+  editors = "{Peter Druschel and F. Kaashoek and Antony Rowstron}",
+  publisher = "Springer-Verlag Heidelberg",
+  month = "January",
+  year = "2002",
+  pages = "104-110",
+}
+
+
address@hidden cohen02replication,
+  author = "Edith Cohen and Scott Shenker",
+  title = "Replication strategies in unstructured peer-to-peer networks",
+  booktitle = "{The ACM SIGCOMM'02 Conference}",
+  month = "{August}",
+  year = "2002",
+  url = "citeseer.nj.nec.com/cohen02replication.html" 
+}

Added: GNUnet-docs/papers/ecrs/sblock.eps
===================================================================
--- GNUnet-docs/papers/ecrs/sblock.eps  2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet-docs/papers/ecrs/sblock.eps  2005-05-31 19:27:19 UTC (rev 833)
@@ -0,0 +1,198 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: sblock.fig
+%%Creator: fig2dev Version 3.2 Patchlevel 4
+%%CreationDate: Sat Aug 30 20:32:35 2003
+%%For: address@hidden (naggy,,,)
+%%BoundingBox: 0 0 339 155
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 155 moveto 0 0 lineto 339 0 lineto 339 155 lineto closepath clip 
newpath
+9.3 156.7 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/reencdict 12 dict def /ReEncode { reencdict begin
+/newcodesandnames exch def /newfontname exch def /basefontname exch def
+/basefontdict basefontname findfont def /newfont basefontdict maxlength dict 
def
+basefontdict { exch dup /FID ne { dup /Encoding eq
+{ exch dup length array copy newfont 3 1 roll put }
+{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall
+newfont /FontName newfontname put newcodesandnames aload pop
+128 1 255 { newfont /Encoding get exch /.notdef put } for
+newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat
+newfontname newfont definefont pop end } def
+/isovec [
+8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde
+8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis
+8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron
+8#220 /dotlessi 8#230 /oe 8#231 /OE
+8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling
+8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis
+8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot
+8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus
+8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph
+8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine
+8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf
+8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute
+8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring
+8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute
+8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute
+8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve
+8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply
+8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex
+8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave
+8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring
+8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute
+8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute
+8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve
+8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide
+8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex
+8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def
+/Helvetica /Helvetica-iso isovec ReEncode
+/Times-Roman /Times-Roman-iso isovec ReEncode
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+0 slj 0 slc
+ 0.06299 0.06299 sc
+%
+% Fig objects follow
+%
+% 
+% here starts figure with depth 50
+% Polyline
+7.500 slw
+n 360 220 m 4860 220 l 4860 1620 l 360 1620 l
+ cp gs col0 s gr 
+% Polyline
+n 360 1260 m
+ 4860 1260 l gs col0 s gr 
+% Polyline
+n 360 901 m
+ 4860 901 l gs col0 s gr 
+% Polyline
+n 360 540 m
+ 4860 540 l gs col0 s gr 
+% Polyline
+n 2700 224 m
+ 2700 1620 l gs col0 s gr 
+% Polyline
+n -135 45 m 5220 45 l 5220 2475 l -135 2475 l
+ cp gs col0 s gr 
+% Polyline
+n 135 135 m 5040 135 l 5040 2025 l 135 2025 l
+ cp gs col0 s gr 
+/Helvetica-iso ff 240.00 scf sf
+1395 1530 m
+gs 1 -1 sc (N) col0 sh gr
+/Helvetica-iso ff 240.00 scf sf
+945 1170 m
+gs 1 -1 sc (Mime Type) col0 sh gr
+/Helvetica-iso ff 150.00 scf sf
+315 1530 m
+gs 1 -1 sc  90.0 rot (encrypted with N-I) col0 sh gr
+/Helvetica-iso ff 240.00 scf sf
+3465 1170 m
+gs 1 -1 sc (Interval) col0 sh gr
+/Helvetica-iso ff 240.00 scf sf
+3240 810 m
+gs 1 -1 sc (Timestamp) col0 sh gr
+/Helvetica-iso ff 240.00 scf sf
+3825 1530 m
+gs 1 -1 sc (I) col0 sh gr
+/Helvetica-iso ff 240.00 scf sf
+855 810 m
+gs 1 -1 sc (File Identifier) col0 sh gr
+/Helvetica-iso ff 240.00 scf sf
+945 450 m
+gs 1 -1 sc (Block Type) col0 sh gr
+/Helvetica-iso ff 240.00 scf sf
+3240 450 m
+gs 1 -1 sc (Description) col0 sh gr
+/Helvetica-iso ff 240.00 scf sf
+1890 1890 m
+gs 1 -1 sc (R := S xor H\(N-I\)) col0 sh gr
+/Helvetica-iso ff 240.00 scf sf
+990 2340 m
+gs 1 -1 sc (Signature) col0 sh gr
+/Helvetica-iso ff 240.00 scf sf
+3330 2340 m
+gs 1 -1 sc (Public Key) col0 sh gr
+/Times-Roman-iso ff 150.00 scf sf
+45 1440 m
+gs 1 -1 sc  90.0 rot (RSA-signed) col0 sh gr
+% here ends figure;
+$F2psEnd
+rs
+showpage

Added: GNUnet-docs/papers/ecrs/sblock.fig
===================================================================
--- GNUnet-docs/papers/ecrs/sblock.fig  2005-05-31 19:10:35 UTC (rev 832)
+++ GNUnet-docs/papers/ecrs/sblock.fig  2005-05-31 19:27:19 UTC (rev 833)
@@ -0,0 +1,40 @@
+#FIG 3.2
+Landscape
+Center
+Metric
+A4      
+100.00
+Single
+-2
+1200 2
+6 360 180 4860 1620
+6 360 180 4860 1620
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        360 220 4860 220 4860 1620 360 1620 360 220
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        360 1260 4860 1260
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        360 901 4860 901
+-6
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        360 540 4860 540
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        2700 224 2700 1620
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        -135 45 5220 45 5220 2475 -135 2475 -135 45
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        135 135 5040 135 5040 2025 135 2025 135 135
+4 0 0 50 -1 4 16 0.0000 0 180 180 1395 1530 N\001
+4 0 0 50 -1 4 16 0.0000 0 240 1185 945 1170 Mime Type\001
+4 0 0 50 -1 4 10 1.5708 0 150 1245 315 1530 encrypted with N-I\001
+4 0 0 50 -1 4 16 0.0000 0 180 780 3465 1170 Interval\001
+4 0 0 50 -1 4 16 0.0000 0 240 1185 3240 810 Timestamp\001
+4 0 0 50 -1 4 16 0.0000 0 180 60 3825 1530 I\001
+4 0 0 50 -1 4 16 0.0000 0 180 1380 855 810 File Identifier\001
+4 0 0 50 -1 4 16 0.0000 0 240 1200 945 450 Block Type\001
+4 0 0 50 -1 4 16 0.0000 0 240 1215 3240 450 Description\001
+4 0 0 50 -1 4 16 0.0000 0 225 1755 1890 1890 R := S xor H(N-I)\001
+4 0 0 50 -1 4 16 0.0000 0 225 1035 990 2340 Signature\001
+4 0 0 50 -1 4 16 0.0000 0 225 1155 3330 2340 Public Key\001
+4 0 0 50 -1 0 10 1.5708 4 135 735 45 1440 RSA-signed\001

Added: GNUnet-docs/papers/ecrs/sblock.pdf
===================================================================
(Binary files differ)


Property changes on: GNUnet-docs/papers/ecrs/sblock.pdf
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: GNUnet-docs/papers/ecrs/sblock_simple.eps
===================================================================
--- GNUnet-docs/papers/ecrs/sblock_simple.eps   2005-05-31 19:10:35 UTC (rev 
832)
+++ GNUnet-docs/papers/ecrs/sblock_simple.eps   2005-05-31 19:27:19 UTC (rev 
833)
@@ -0,0 +1,166 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: sblock_simple.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: Sun Nov 30 01:34:27 2003
+%%For: address@hidden (Krista Bennett)
+%%BoundingBox: 0 0 312 277
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 277 moveto 0 0 lineto 312 0 lineto 312 277 lineto closepath clip 
newpath
+-1.4 335.1 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+ 0.06299 0.06299 sc
+%
+% Fig objects follow
+%
+% Polyline
+7.500 slw
+n 3285 945 m 4950 945 l 4950 4410 l 3285 4410 l
+ cp gs col0 s gr 
+% Polyline
+n 4500 945 m
+ 4500 4410 l gs col0 s gr 
+% Polyline
+n 3780 945 m
+ 3780 4410 l gs col0 s gr 
+% Polyline
+n 2835 945 m
+ 2835 4410 l gs col0 s gr 
+% Polyline
+n 2385 945 m
+ 2385 4410 l gs col0 s gr 
+% Polyline
+n 1935 945 m
+ 1935 4410 l gs col0 s gr 
+% Polyline
+n 1485 945 m
+ 1485 4410 l gs col0 s gr 
+% Polyline
+n 1035 945 m
+ 1035 4410 l gs col0 s gr 
+% Polyline
+n 585 945 m
+ 585 4410 l gs col0 s gr 
+% Polyline
+15.000 slw
+n 3285 945 m 45 945 l 45 4410 l 3285 4410 l
+ cp gs col0 s gr 
+% Polyline
+7.500 slw
+ [60] 0 sd
+n 135 4635 m 135 4995 l 3285 4995 l
+ 3285 4635 l gs col0 s gr  [] 0 sd
+/Times-Italic ff 180.00 scf sf
+675 5265 m
+gs 1 -1 sc (Encrypted with SBlock ID T) col0 sh gr
+/Helvetica-Bold ff 210.00 scf sf
+2700 4230 m
+gs 1 -1 sc  90.0 rot (Current SBlock ID \(T\)) col0 sh gr
+/Helvetica-Bold ff 210.00 scf sf
+900 4230 m
+gs 1 -1 sc  90.0 rot (File ID) col0 sh gr
+/Helvetica-Bold ff 210.00 scf sf
+450 4230 m
+gs 1 -1 sc  90.0 rot (Block Type ID) col0 sh gr
+/Helvetica-Bold ff 210.00 scf sf
+1350 4230 m
+gs 1 -1 sc  90.0 rot (File Metadata) col0 sh gr
+/Helvetica-Bold ff 210.00 scf sf
+1800 4230 m
+gs 1 -1 sc  90.0 rot (Block Creation Time) col0 sh gr
+/Helvetica-Bold ff 210.00 scf sf
+2250 4230 m
+gs 1 -1 sc  90.0 rot (Update Interval \(p\)) col0 sh gr
+/Helvetica-Bold ff 210.00 scf sf
+3150 4230 m
+gs 1 -1 sc  90.0 rot (Distance to Next SBlock ID \(I\)) col0 sh gr
+/Helvetica-BoldOblique ff 210.00 scf sf
+4815 4230 m
+gs 1 -1 sc  90.0 rot (Public Key) col0 sh gr
+/Helvetica-BoldOblique ff 210.00 scf sf
+3600 4230 m
+gs 1 -1 sc  90.0 rot (Routing Key \(R\)) col0 sh gr
+/Helvetica-BoldOblique ff 210.00 scf sf
+4335 4230 m
+gs 1 -1 sc  90.0 rot (\(for encrypted portion and R\)) col0 sh gr
+/Helvetica-BoldOblique ff 210.00 scf sf
+4050 4230 m
+gs 1 -1 sc  90.0 rot (Signature \(S\)) col0 sh gr
+$F2psEnd
+rs

Added: GNUnet-docs/papers/ecrs/sblock_simple.fig
===================================================================
--- GNUnet-docs/papers/ecrs/sblock_simple.fig   2005-05-31 19:10:35 UTC (rev 
832)
+++ GNUnet-docs/papers/ecrs/sblock_simple.fig   2005-05-31 19:27:19 UTC (rev 
833)
@@ -0,0 +1,49 @@
+#FIG 3.2
+Landscape
+Center
+Metric
+A4      
+100.00
+Single
+-2
+1200 2
+6 0 900 4950 4455
+6 585 945 4950 4410
+2 2 0 1 0 7 50 0 -1 4.000 0 0 -1 0 0 5
+        3285 945 4950 945 4950 4410 3285 4410 3285 945
+2 1 0 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2
+        4500 945 4500 4410
+2 1 0 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2
+        3780 945 3780 4410
+2 1 0 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2
+        2835 945 2835 4410
+2 1 0 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2
+        2385 945 2385 4410
+2 1 0 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2
+        1935 945 1935 4410
+2 1 0 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2
+        1485 945 1485 4410
+2 1 0 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2
+        1035 945 1035 4410
+2 1 0 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2
+        585 945 585 4410
+-6
+2 2 0 2 0 7 50 0 -1 6.000 0 0 -1 0 0 5
+        3285 945 45 945 45 4410 3285 4410 3285 945
+-6
+6 135 4635 3285 5310
+2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 4
+        135 4635 135 4995 3285 4995 3285 4635
+4 0 0 50 0 1 12 0.0000 4 180 1980 675 5265 Encrypted with SBlock ID T\001
+-6
+4 0 0 50 0 18 14 1.5708 4 195 1695 2700 4230 Current SBlock ID (T)\001
+4 0 0 50 0 18 14 1.5708 4 165 495 900 4230 File ID\001
+4 0 0 50 0 18 14 1.5708 4 195 1095 450 4230 Block Type ID\001
+4 0 0 50 0 18 14 1.5708 4 165 1065 1350 4230 File Metadata\001
+4 0 0 50 0 18 14 1.5708 4 165 1605 1800 4230 Block Creation Time\001
+4 0 0 50 0 18 14 1.5708 4 195 1470 2250 4230 Update Interval (p)\001
+4 0 0 50 0 18 14 1.5708 4 195 2340 3150 4230 Distance to Next SBlock ID (I)\001
+4 0 0 50 0 19 14 1.5708 4 195 855 4815 4230 Public Key\001
+4 0 0 50 0 19 14 1.5708 4 195 1275 3600 4230 Routing Key (R)\001
+4 0 0 50 0 19 14 1.5708 4 195 2325 4335 4230 (for encrypted portion and R)\001
+4 0 0 50 0 19 14 1.5708 4 195 1065 4050 4230 Signature (S)\001

Added: GNUnet-docs/papers/ecrs/sblock_simple.pdf
===================================================================
(Binary files differ)


Property changes on: GNUnet-docs/papers/ecrs/sblock_simple.pdf
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: GNUnet-docs/papers/ecrs/sigproc-sp.tex
===================================================================
--- GNUnet-docs/papers/ecrs/sigproc-sp.tex      2005-05-31 19:10:35 UTC (rev 
832)
+++ GNUnet-docs/papers/ecrs/sigproc-sp.tex      2005-05-31 19:27:19 UTC (rev 
833)
@@ -0,0 +1,544 @@
+% This is sigproc-sp.tex -FILE FOR V2.0SP OF ACM_PROC_ARTICLE-SP.CLS
+%  JUNE 2000
+%
+% It is an example file showing how to use the 'acm_proc_article-sp.cls' V2.0SP
+% LaTeX2e document class file for Conference Proceedings submissions.
+% 
----------------------------------------------------------------------------------------------------------------
+% This .tex file (and associated .cls V2.0SP) *DOES NOT* produce:
+%       1) The Permission Statement
+%       2) The Conference (location) Info information
+%       3) The Copyright Line with ACM data
+%       4) Page numbering
+%
+%  However, both the CopyrightYear (default to 1999) and the ACM Copyright Data
+% (default to 0-89791-88-6/97/05) can still be over-ridden by whatever the 
author
+% inserts into the source .tex file.
+% e.g.
+% \CopyrightYear{2001} will cause 2001 to appear in the copyright line.
+% \crdata{0-12345-67-8/90/12} will cause 0-12345-67-8/90/12 to appear in the 
copyright line.
+%
+% 
---------------------------------------------------------------------------------------------------------------
+% It is an example which *does* use the .bib file (from which the .bbl file
+% is produced).
+% REMEMBER HOWEVER: After having produced the .bbl file,
+% and prior to final submission,
+% you need to 'insert'  your .bbl file into your source .tex file so as to 
provide
+% ONE 'self-contained' source file.
+%
+% Questions regarding SIGS should be sent to
+% Adrienne Griscti ---> address@hidden
+%
+% Questions/suggestions regarding the guidelines, .tex and .cls files, etc. to
+% Gerald Murray ---> address@hidden
+%
+% For tracking purposes - this is V2.1SP - APRIL 2001
+
+\documentclass{acm_proc_article-sp}
+
+\begin{document}
+%
+% --- Author Metadata here ---
+%\conferenceinfo{WOODSTOCK}{'97 El Paso, Texas USA}
+%\setpagenumber{50}
+%\CopyrightYear{2001} % Allows default copyright year (1999) to be over-ridden 
- IF NEED BE.
+%\crdata{0-12345-67-8/90/01}  % Allows default copyright data 
(0-89791-88-6/97/05) to be over-ridden - IF NEED BE.
+% --- End of Author Metadata ---
+
+\title{A Sample {\ttlit ACM} SIG Proceedings Paper in LaTeX
+Format\titlenote{(Produces the permission block, copyright information and 
page numbering). For use with ACM\_PROC\_ARTICLE-SP.CLS V2.0. Supported by 
ACM.}}
+\subtitle{[Extended Abstract]
+\titlenote{A full version of this paper is available as
+\textit{Author's Guide to Preparing ACM SIG Proceedings Using
+\LaTeX$2_\epsilon$\ and BibTeX} at
+\texttt{www.acm.org/eaddress.htm}}}
+%
+% You need the command \numberofauthors to handle the "boxing"
+% and alignment of the authors under the title, and to add
+% a section for authors number 4 through n.
+%
+% Up to the first three authors are aligned under the title;
+% use the \alignauthor commands below to handle those names
+% and affiliations. Add names, affiliations, addresses for
+% additional authors as the argument to \additionalauthors;
+% these will be set for you without further effort on your
+% part as the last section in the body of your article BEFORE
+% References or any Appendices.
+
+\numberofauthors{5}
+%
+% You can go ahead and credit authors number 4+ here;
+% their names will appear in a section called
+% "Additional Authors" just before the Appendices
+% (if there are any) or Bibliography (if there
+% aren't)
+
+% Put no more than the first THREE authors in the \author command
+\author{
+%
+% The command \alignauthor (no curly braces needed) should
+% precede each author name, affiliation/snail-mail address and
+% e-mail address. Additionally, tag each line of
+% affiliation/address with \affaddr, and tag the
+%% e-mail address with \email.
+\alignauthor Ben Trovato\titlenote{Dr.~Trovato insisted his name
+be first.}\\
+       \affaddr{Institute for Clarity in Documentation}\\
+       \affaddr{1932 Wallamaloo Lane}\\
+       \affaddr{Wallamaloo, New Zealand}\\
+       address@hidden
+\alignauthor G.K.M. Tobin\titlenote{The secretary disavows
+any knowledge of this author's actions.}\\
+       \affaddr{Institute for Clarity in Documentation}\\
+       \affaddr{P.O. Box 1212}\\
+       \affaddr{Dublin, Ohio 43017-6221}\\
+       address@hidden
+\alignauthor Lars Th{\Large{\sf{\o}}}rv{$\ddot{\mbox{a}}$}ld\titlenote{This 
author is the
+one who did all the really hard work.}\\
+       \affaddr{The Th{\large{\sf{\o}}}rv{$\ddot{\mbox{a}}$}ld Group}\\
+       \affaddr{1 Th{\large{\sf{\o}}}rv{$\ddot{\mbox{a}}$}ld Circle}\\
+       \affaddr{Hekla, Iceland}\\
+       address@hidden
+}
+\additionalauthors{Additional authors: John Smith (The Th{\o}rv\"{a}ld Group,
+email: address@hidden) and Julius P.~Kumquat
+(The Kumquat Consortium, email: address@hidden).}
+\date{30 July 1999}
+\maketitle
+\begin{abstract}
+This paper provides a sample of a LaTeX document which conforms to
+the formatting guidelines for ACM SIG Proceedings.
+It complements the document \textit{Author's Guide to Preparing
+ACM SIG Proceedings Using \LaTeX$2_\epsilon$\ and Bib\TeX}. This
+source file has been written with the intention of being
+compiled under \LaTeX$2_\epsilon$\ and BibTeX.
+
+The developers have tried to include every imaginable sort
+of ``bells and whistles", such as a subtitle, footnotes on
+title, subtitle and authors, as well as in the text, and
+every optional component (e.g. Acknowledgments, Additional
+Authors, Appendices), not to mention examples of
+equations, theorems, tables and figures.
+
+To make best use of this sample document, run it through \LaTeX\
+and BibTeX, and compare this source code with the printed
+output produced by the dvi file.
+\end{abstract}
+
+% A category with only the three required fields
+\category{H.4.m}{Information Systems}{Miscellaneous}
+\category{D.2}{Software}{Software Engineering}
+%A category including the fourth, optional field follows...
+\category{D.2.8}{Software Engineering}{Metrics}[complexity measures,
+performance measures]
+
+\terms{Delphi theory}
+
+\keywords{ACM proceedings, \LaTeX, text tagging} % NOT required for Proceedings
+
+\section{Introduction}
+The \textit{proceedings} are the records of a conference.
+ACM seeks to give these conference by-products a uniform,
+high-quality appearance.  To do this, ACM has some rigid
+requirements for the format of the proceedings documents: there
+is a specified format (balanced  double columns), a specified
+set of fonts (Arial or Helvetica and Times Roman) in
+certain specified sizes (for instance, 9 point for body copy),
+a specified live area (18 $\times$ 23.5 cm [7" $\times$ 9.25"]) centered on
+the page, specified size of margins (2.54cm [1"] top and
+bottom and 1.9cm [.75"] left and right; specified column width
+(8.45cm [3.33"]) and gutter size (.083cm [.33"]).
+
+The good news is, with only a handful of manual
+settings\footnote{Two of these, the {\texttt{\char'134 numberofauthors}}
+and {\texttt{\char'134 alignauthor}} commands, you have
+already used; another, {\texttt{\char'134 balancecolumns}}, will
+be used in your very last run of \LaTeX\ to ensure
+balanced column heights on the last page.}, the \LaTeX\ document
+class file handles all of this for you.
+
+The remainder of this document is concerned with showing, in
+the context of an ``actual'' document, the \LaTeX\ commands
+specifically available for denoting the structure of a
+proceedings paper, rather than with giving rigorous descriptions
+or explanations of such commands.
+
+\section{The {\secit Body} of The Paper}
+Typically, the body of a paper is organized
+into a hierarchical structure, with numbered or unnumbered
+headings for sections, subsections, sub-subsections, and even
+smaller sections.  The command \texttt{{\char'134}section} that
+precedes this paragraph is part of such a
+hierarchy.\footnote{This is the second footnote.  It
+starts a series of three footnotes that add nothing
+informational, but just give an idea of how footnotes work
+and look. It is a wordy one, just so you see
+how a longish one plays out.} \LaTeX\ handles the numbering
+and placement of these headings for you, when you use
+the appropriate heading commands around the titles
+of the headings.  If you want a sub-subsection or
+smaller part to be unnumbered in your output, simply append an
+asterisk to the command name.  Examples of both
+numbered and unnumbered headings will appear throughout the
+balance of this sample document.
+
+Because the entire article is contained in
+the \textbf{document} environment, you can indicate the
+start of a new paragraph with a blank line in your
+input file; that is why this sentence forms a separate paragraph.
+
+\subsection{Type Changes and {\subsecit Special} Characters}
+We have already seen several typeface changes in this sample.  You
+can indicate italicized words or phrases in your text with
+the command \texttt{{\char'134}textit}; emboldening with the
+command \texttt{{\char'134}textbf}
+and typewriter-style (for instance, for computer code) with
+\texttt{{\char'134}texttt}.  But remember, you do not
+have to indicate typestyle changes when such changes are
+part of the \textit{structural} elements of your
+article; for instance, the heading of this subsection will
+be in a sans serif\footnote{A third footnote, here.
+Let's make this a rather short one to
+see how it looks.} typeface, but that is handled by the
+document class file. Take care with the use
+of\footnote{A fourth, and last, footnote.}
+the curly braces in typeface changes; they mark
+the beginning and end of
+the text that is to be in the different typeface.
+
+You can use whatever symbols, accented characters, or
+non-English characters you need anywhere in your document;
+you can find a complete list of what is
+available in the \textit{\LaTeX\
+User's Guide}\cite{Lamport:LaTeX}.
+
+\subsection{Math Equations}
+You may want to display math equations in three distinct styles:
+inline, numbered or non-numbered display.  Each of
+the three are discussed in the next sections.
+
+\subsubsection{Inline (In-text) Equations}
+A formula that appears in the running text is called an
+inline or in-text formula.  It is produced by the
+\textbf{math} environment, which can be
+invoked with the usual \texttt{{\char'134}begin. . .{\char'134}end}
+construction or with the short form \texttt{\$. . .\$}. You
+can use any of the symbols and structures,
+from $\alpha$ to $\omega$, available in
+\LaTeX\cite{Lamport:LaTeX}; this section will simply show a
+few examples of in-text equations in context. Notice how
+this equation: \begin{math}\lim_{n\rightarrow \infty}x=0\end{math},
+set here in in-line math style, looks slightly different when
+set in display style.  (See next section).
+
+\subsubsection{Display Equations}
+A numbered display equation -- one set off by vertical space
+from the text and centered horizontally -- is produced
+by the \textbf{equation} environment. An unnumbered display
+equation is produced by the \textbf{displaymath} environment.
+
+Again, in either environment, you can use any of the symbols
+and structures available in \LaTeX; this section will just
+give a couple of examples of display equations in context.
+First, consider the equation, shown as an inline equation above:
+\begin{equation}\lim_{n\rightarrow \infty}x=0\end{equation}
+Notice how it is formatted somewhat differently in
+the \textbf{displaymath}
+environment.  Now, we'll enter an unnumbered equation:
+\begin{displaymath}\sum_{i=0}^{\infty} x + 1\end{displaymath}
+and follow it with another numbered equation:
+\begin{equation}\sum_{i=0}^{\infty}x_i=\int_{0}^{\pi+2} f\end{equation}
+just to demonstrate \LaTeX's able handling of numbering.
+
+\subsection{Citations}
+Citations to articles \cite{bowman:reasoning, clark:pct, braams:babel, 
herlihy:methodology},
+conference
+proceedings \cite{clark:pct} or books \cite{salas:calculus, Lamport:LaTeX} 
listed
+in the Bibliography section of your
+article will occur throughout the text of your article.
+You should use BibTeX to automatically produce this bibliography;
+you simply need to insert one of several citation commands with
+a key of the item cited in the proper location in
+the \texttt{.tex} file \cite{Lamport:LaTeX}.
+The key is a short reference you invent to uniquely
+identify each work; in this sample document, the key is
+the first author's surname and a
+word from the title.  This identifying key is included
+with each item in the \texttt{.bib} file for your article.
+
+The details of the construction of the \texttt{.bib} file
+are beyond the scope of this sample document, but more
+information can be found in the \textit{Author's Guide},
+and exhaustive details in the \textit{\LaTeX\ User's
+Guide}\cite{Lamport:LaTeX}.
+
+This article shows only the plainest form
+of the citation command, using \texttt{{\char'134}cite}.
+This is what is stipulated in the SIGS style specifications.
+No other citation format is endorsed.
+
+\subsection{Tables}
+Because tables cannot be split across pages, the best
+placement for them is typically the top of the page
+nearest their initial cite.  To
+ensure this proper ``floating'' placement of tables, use the
+environment \textbf{table} to enclose the table's contents and
+the table caption.  The contents of the table itself must go
+in the \textbf{tabular} environment, to
+be aligned properly in rows and columns, with the desired
+horizontal and vertical rules.  Again, detailed instructions
+on \textbf{tabular} material
+is found in the \textit{\LaTeX\ User's Guide}.
+
+Immediately following this sentence is the point at which
+Table 1 is included in the input file; compare the
+placement of the table here with the table in the printed
+dvi output of this document.
+
+\begin{table}
+\centering
+\caption{Frequency of Special Characters}
+\begin{tabular}{|c|c|l|} \hline
+Non-English or Math&Frequency&Comments\\ \hline
+\O & 1 in 1,000& For Swedish names\\ \hline
+$\pi$ & 1 in 5& Common in math\\ \hline
+\$ & 4 in 5 & Used in business\\ \hline
+$\Psi^2_1$ & 1 in 40,000& Unexplained usage\\
+\hline\end{tabular}
+\end{table}
+
+To set a wider table, which takes up the whole width of
+the page's live area, use the environment
+\textbf{table*} to enclose the table's contents and
+the table caption.  As with a single-column table, this wide
+table will ``float" to a location deemed more desirable.
+Immediately following this sentence is the point at which
+Table 2 is included in the input file; again, it is
+instructive to compare the placement of the
+table here with the table in the printed dvi
+output of this document.
+
+
+\begin{table*}
+\centering
+\caption{Some Typical Commands}
+\begin{tabular}{|c|c|l|} \hline
+Command&A Number&Comments\\ \hline
+\texttt{{\char'134}alignauthor} & 100& Author alignment\\ \hline
+\texttt{{\char'134}numberofauthors}& 200& Author enumeration\\ \hline
+\texttt{{\char'134}table}& 300 & For tables\\ \hline
+\texttt{{\char'134}table*}& 400& For wider tables\\ \hline\end{tabular}
+\end{table*}
+% end the environment with {table*}, NOTE not {table}!
+
+\subsection{Figures}
+Like tables, figures cannot be split across pages; the
+best placement for them
+is typically the top or the bottom of the page nearest
+their initial cite.  To ensure this proper ``floating'' placement
+of figures, use the environment
+\textbf{figure} to enclose the figure and its caption.
+
+This sample document contains examples of \textbf{.eps}
+and \textbf{.ps} files to be displayable with \LaTeX.  More
+details on each of these is found in the \textit{Author's Guide}.
+
+\begin{figure}
+\centering
+\epsfig{file=fly.eps}
+\caption{A sample black and white graphic (.eps format).}
+\end{figure}
+
+\begin{figure}
+\centering
+\epsfig{file=fly.eps, height=1in, width=1in}
+\caption{A sample black and white graphic (.eps format)
+that has been resized with the \texttt{epsfig} command.}
+\end{figure}
+
+
+As was the case with tables, you may want a figure
+that spans two columns.  To do this, and still to
+ensure proper ``floating'' placement of tables, use the environment
+\textbf{figure*} to enclose the figure and its caption.
+\begin{figure*}
+\centering
+\epsfig{file=flies.eps}
+\caption{A sample black and white graphic (.eps format)
+that needs to span two columns of text.}
+\end{figure*}
+and don't forget to end the environment with
+{figure*}, not {figure}!
+
+Note that either {\textbf{.ps}} or {\textbf{.eps}} formats are
+used; use
+the \texttt{{\char'134}epsfig} or \texttt{{\char'134}psfig}
+commands as appropriate for the different file types.
+
+\begin{figure}
+\centering
+\psfig{file=rosette.ps, height=1in, width=1in,}
+\caption{A sample black and white graphic (.ps format) that has
+been resized with the \texttt{psfig} command.}
+\end{figure}
+
+\subsection{Theorem-like Constructs}
+Other common constructs that may occur in your article are
+the forms for logical constructs like theorems, axioms,
+corollaries and proofs.  There are
+two forms, one produced by the
+command \texttt{{\char'134}newtheorem} and the
+other by the command \texttt{{\char'134}newdef}; perhaps
+the clearest and easiest way to distinguish them is
+to compare the two in the output of this sample document:
+
+This uses the \textbf{theorem} environment, created by
+the \texttt{{\char'134}newtheorem} command:
+\newtheorem{theorem}{Theorem}
+\begin{theorem}
+Let $f$ be continuous on $[a,b]$.  If $G$ is
+an antiderivative for $f$ on $[a,b]$, then
+\begin{displaymath}\int^b_af(t)dt = G(b) - G(a).\end{displaymath}
+\end{theorem}
+
+The other uses the \textbf{definition} environment, created
+by the \texttt{{\char'134}newdef} command:
+\newdef{definition}{Definition}
+\begin{definition}
+If $z$ is irrational, then by $e^z$ we mean the
+unique number which has
+logarithm $z$: \begin{displaymath}{\log e^z = z}\end{displaymath}
+\end{definition}
+
+Two lists of constructs that use one of these
+forms is given in the
+\textit{Author's  Guidelines}.
+ 
+There is one other similar construct environment, which is
+already set up
+for you; i.e. you must \textit{not} use
+a \texttt{{\char'134}newdef} command to
+create it: the \textbf{proof} environment.  Here
+is a example of its use:
+\begin{proof}
+Suppose on the contrary there exists a real number $L$ such that
+\begin{displaymath}
+\lim_{x\rightarrow\infty} \frac{f(x)}{g(x)} = L.
+\end{displaymath}
+Then
+\begin{displaymath}
+l=\lim_{x\rightarrow c} f(x)
+= \lim_{x\rightarrow c}
+\left[ g{x} \cdot \frac{f(x)}{g(x)} \right ]
+= \lim_{x\rightarrow c} g(x) \cdot \lim_{x\rightarrow c}
+\frac{f(x)}{g(x)} = 0\cdot L = 0,
+\end{displaymath}
+which contradicts our assumption that $l\neq 0$.
+\end{proof}
+
+Complete rules about using these environments and using the
+two different creation commands are in the
+\textit{Author's Guide}; please consult it for more
+detailed instructions.  If you need to use another construct,
+not listed therein, which you want to have the same
+formatting as the Theorem
+or the Definition\cite{salas:calculus} shown above,
+use the \texttt{{\char'134}newtheorem} or the
+\texttt{{\char'134}newdef} command,
+respectively, to create it.
+
+\subsection*{A {\secit Caveat} for the \TeX\ Expert}
+Because you have just been given permission to
+use the \texttt{{\char'134}newdef} command to create a
+new form, you might think you can
+use \TeX's \texttt{{\char'134}def} to create a
+new command: \textit{Please refrain from doing this!}
+Remember that your \LaTeX\ source code is primarily intended
+to create camera-ready copy, but may be converted
+to other forms -- e.g. HTML. If you inadvertently omit
+some or all of the \texttt{{\char'134}def}s recompilation will
+be, to say the least, problematic.
+
+\section{Conclusions}
+This paragraph will end the body of this sample document.
+Remember that you might still have Acknowledgments or
+Appendices; brief samples of these
+follow.  There is still the Bibliography to deal with; and
+we will make a disclaimer about that here: with the exception
+of the reference to the \LaTeX\ book, the citations in
+this paper are to articles which have nothing to
+do with the present subject and are used as
+examples only.
+%\end{document}  % This is where a 'short' article might terminate
+
+%ACKNOWLEDGMENTS are optional
+\section{Acknowledgments}
+This section is optional; it is a location for you
+to acknowledge grants, funding, editing assistance and
+what have you.  In the present case, for example, the
+authors would like to thank Gerald Murray of ACM for
+his help in codifying this \textit{Author's Guide}
+and the \textbf{.cls} and \textbf{.tex} files that it describes.
+
+%
+% The following two commands are all you need in the
+% initial runs of your .tex file to
+% produce the bibliography for the citations in your paper.
+\bibliographystyle{abbrv}
+\bibliography{sigproc}  % sigproc.bib is the name of the Bibliography in this 
case
+% You must have a proper ".bib" file
+%  and remember to run:
+% latex bibtex latex latex
+% to resolve all references
+%
+% ACM needs 'a single self-contained file'!
+%
+%APPENDICES are optional
+\balancecolumns
+\appendix
+%Appendix A
+\section{Headings in Appendices}
+The rules about hierarchical headings discussed above for
+the body of the article are different in the appendices.
+In the \textbf{appendix} environment, the command
+\textbf{section} is used to
+indicate the start of each Appendix, with alphabetic order
+designation (i.e. the first is A, the second B, etc.) and
+a title (if you include one).  So, if you need
+hierarchical structure
+\textit{within} an Appendix, start with \textbf{subsection} as the
+highest level. Here is an outline of the body of this
+document in Appendix-appropriate form:
+\subsection{Introduction}
+\subsection{The Body of the Paper}
+\subsubsection{Type Changes and  Special Characters}
+\subsubsection{Math Equations}
+\paragraph{Inline (In-text) Equations}
+\paragraph{Display Equations}
+\subsubsection{Citations}
+\subsubsection{Tables}
+\subsubsection{Figures}
+\subsubsection{Theorem-like Constructs}
+\subsubsection*{A Caveat for the \TeX\ Expert}
+\subsection{Conclusions}
+\subsection{Acknowledgments}
+\subsection{Additional Authors}
+This section is inserted by \LaTeX; you do not insert it.
+You just add the names and information in the
+\texttt{{\char'134}additionalauthors} command at the start
+of the document.
+\subsection{References}
+Generated by bibtex from your ~.bib file.  Run latex,
+then bibtex, then latex twice (to resolve references)
+to create the ~.bbl file.  Insert that ~.bbl file into
+the .tex source file and comment out
+the command \texttt{{\char'134}thebibliography}.
+% This next section command marks the start of
+% Appendix B, and does not continue the present hierarchy
+\section{More Help for the Hardy}
+The acm\_proc\_article-sp document class file itself is chock-full of succinct
+and helpful comments.  If you consider yourself a moderately
+experienced to expert user of \LaTeX, you may find reading
+it useful but please remember not to change it.
+
+% That's all folks!
+\end{document}

Added: GNUnet-docs/papers/ecrs/simple_gblock.eps
===================================================================
--- GNUnet-docs/papers/ecrs/simple_gblock.eps   2005-05-31 19:10:35 UTC (rev 
832)
+++ GNUnet-docs/papers/ecrs/simple_gblock.eps   2005-05-31 19:27:19 UTC (rev 
833)
@@ -0,0 +1,296 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: simple_gblock.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: Sat Nov 29 22:15:29 2003
+%%For: address@hidden (Krista Bennett)
+%%BoundingBox: 0 0 450 288
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 288 moveto 0 0 lineto 450 0 lineto 450 288 lineto closepath clip 
newpath
+-21.9 315.4 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+ 0.06299 0.06299 sc
+%
+% Fig objects follow
+%
+% Polyline
+7.500 slw
+n 3240 450 m 4500 450 l 4500 990 l 3240 990 l
+ cp gs col0 s gr 
+/Times-Roman ff 360.00 scf sf
+3330 810 m
+gs 1 -1 sc (RBlock) col0 sh gr
+% Polyline
+n 360 3690 m 1620 3690 l 1620 4230 l 360 4230 l
+ cp gs col0 s gr 
+% Polyline
+n 2160 3690 m 3420 3690 l 3420 4230 l 2160 4230 l
+ cp gs col0 s gr 
+% Polyline
+n 4410 3690 m 5670 3690 l 5670 4230 l 4410 4230 l
+ cp gs col0 s gr 
+% Polyline
+n 6210 3690 m 7470 3690 l 7470 4230 l 6210 4230 l
+ cp gs col0 s gr 
+% Polyline
+n 4410 2340 m 5670 2340 l 5670 2880 l 4410 2880 l
+ cp gs col0 s gr 
+% Polyline
+n 2160 2340 m 3420 2340 l 3420 2880 l 2160 2880 l
+ cp gs col0 s gr 
+% Polyline
+n 3240 1440 m 4500 1440 l 4500 1980 l 3240 1980 l
+ cp gs col0 s gr 
+% Polyline
+n 990 3690 m
+ 2790 2880 l gs col0 s gr 
+% Polyline
+n 2790 2880 m
+ 2790 3690 l gs col0 s gr 
+% Polyline
+n 5040 3690 m
+ 5040 2880 l gs col0 s gr 
+% Polyline
+n 5040 2880 m
+ 6840 3690 l gs col0 s gr 
+% Polyline
+n 3870 1980 m
+ 2790 2340 l gs col0 s gr 
+% Polyline
+n 3870 1980 m
+ 5040 2340 l gs col0 s gr 
+% Polyline
+n 990 4230 m
+ 990 4500 l gs col0 s gr 
+% Polyline
+n 2790 4230 m
+ 2790 4500 l gs col0 s gr 
+% Polyline
+n 5040 4230 m
+ 5040 4500 l gs col0 s gr 
+% Polyline
+n 6840 4230 m
+ 6840 4500 l gs col0 s gr 
+% Polyline
+ [15 45] 45 sd
+n 2790 2880 m
+ 1710 3690 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 2790 2880 m
+ 1800 3690 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 2790 2880 m
+ 1890 3690 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 2790 2880 m
+ 1980 3690 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 5040 2880 m
+ 5760 3690 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 5040 2880 m
+ 5850 3690 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 5040 2880 m
+ 5940 3690 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 5040 2880 m
+ 6030 3690 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 5040 2880 m
+ 6120 3690 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 2790 2880 m
+ 2070 3690 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 3870 1980 m
+ 3600 2340 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 3870 1980 m
+ 3690 2340 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 3870 1980 m
+ 3870 2340 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 3780 2340 m
+ 3870 1980 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 3870 1980 m
+ 3960 2340 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 4050 2340 m
+ 3870 1980 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 3870 1980 m
+ 4140 2340 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 3870 1980 m
+ 3510 2340 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 3870 1980 m
+ 4230 2340 l gs col0 s gr  [] 0 sd
+% Polyline
+n 360 4500 m 7470 4500 l 7470 4995 l 360 4995 l
+ cp gs col0 s gr 
+% Polyline
+n 3870 990 m
+ 3870 1440 l gs col0 s gr 
+/Times-Roman ff 360.00 scf sf
+450 4050 m
+gs 1 -1 sc (DBlock) col0 sh gr
+/Times-Roman ff 360.00 scf sf
+2250 4050 m
+gs 1 -1 sc (DBlock) col0 sh gr
+/Times-Roman ff 360.00 scf sf
+4500 4050 m
+gs 1 -1 sc (DBlock) col0 sh gr
+/Times-Roman ff 360.00 scf sf
+6300 4050 m
+gs 1 -1 sc (DBlock) col0 sh gr
+/Times-Roman ff 360.00 scf sf
+3375 1800 m
+gs 1 -1 sc (IBlock) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+1800 3960 m
+gs 1 -1 sc (...) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+5850 3960 m
+gs 1 -1 sc (...) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+1620 3330 m
+gs 1 -1 sc (1) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+2520 3420 m
+gs 1 -1 sc (25) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+4500 2160 m
+gs 1 -1 sc (25) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+3060 2160 m
+gs 1 -1 sc (1) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+4860 3420 m
+gs 1 -1 sc (1) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+6120 3330 m
+gs 1 -1 sc (25) col0 sh gr
+/Times-Roman ff 360.00 scf sf
+2295 2700 m
+gs 1 -1 sc (IBlock) col0 sh gr
+/Times-Roman ff 360.00 scf sf
+4545 2745 m
+gs 1 -1 sc (IBlock) col0 sh gr
+/Times-Roman ff 360.00 scf sf
+2925 4860 m
+gs 1 -1 sc (Original Data) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+1035 4410 m
+gs 1 -1 sc (1k) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+2835 4410 m
+gs 1 -1 sc (1k) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+5085 4410 m
+gs 1 -1 sc (1k) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+6885 4410 m
+gs 1 -1 sc (1k) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+3825 2655 m
+gs 1 -1 sc (...) col0 sh gr
+$F2psEnd
+rs

Added: GNUnet-docs/papers/ecrs/simple_gblock.fig
===================================================================
--- GNUnet-docs/papers/ecrs/simple_gblock.fig   2005-05-31 19:10:35 UTC (rev 
832)
+++ GNUnet-docs/papers/ecrs/simple_gblock.fig   2005-05-31 19:27:19 UTC (rev 
833)
@@ -0,0 +1,111 @@
+#FIG 3.2
+Landscape
+Center
+Metric
+A4      
+100.00
+Single
+-2
+1200 2
+6 3240 450 4500 990
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        3240 450 4500 450 4500 990 3240 990 3240 450
+4 0 0 50 -1 0 24 0.0000 4 255 1110 3330 810 RBlock\001
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        360 3690 1620 3690 1620 4230 360 4230 360 3690
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        2160 3690 3420 3690 3420 4230 2160 4230 2160 3690
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        4410 3690 5670 3690 5670 4230 4410 4230 4410 3690
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        6210 3690 7470 3690 7470 4230 6210 4230 6210 3690
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        4410 2340 5670 2340 5670 2880 4410 2880 4410 2340
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        2160 2340 3420 2340 3420 2880 2160 2880 2160 2340
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        3240 1440 4500 1440 4500 1980 3240 1980 3240 1440
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        990 3690 2790 2880
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        2790 2880 2790 3690
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        5040 3690 5040 2880
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        5040 2880 6840 3690
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        3870 1980 2790 2340
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        3870 1980 5040 2340
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        990 4230 990 4500
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        2790 4230 2790 4500
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        5040 4230 5040 4500
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+        6840 4230 6840 4500
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        2790 2880 1710 3690
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        2790 2880 1800 3690
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        2790 2880 1890 3690
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        2790 2880 1980 3690
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        5040 2880 5760 3690
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        5040 2880 5850 3690
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        5040 2880 5940 3690
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        5040 2880 6030 3690
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        5040 2880 6120 3690
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        2790 2880 2070 3690
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        3870 1980 3600 2340
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        3870 1980 3690 2340
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        3870 1980 3870 2340
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        3780 2340 3870 1980
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        3870 1980 3960 2340
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        4050 2340 3870 1980
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        3870 1980 4140 2340
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        3870 1980 3510 2340
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
+        3870 1980 4230 2340
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+        360 4500 7470 4500 7470 4995 360 4995 360 4500
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        3870 990 3870 1440
+4 0 0 50 -1 0 24 0.0000 4 255 1125 450 4050 DBlock\001
+4 0 0 50 -1 0 24 0.0000 4 255 1125 2250 4050 DBlock\001
+4 0 0 50 -1 0 24 0.0000 4 255 1125 4500 4050 DBlock\001
+4 0 0 50 -1 0 24 0.0000 4 255 1125 6300 4050 DBlock\001
+4 0 0 50 -1 0 24 0.0000 4 255 990 3375 1800 IBlock\001
+4 0 0 50 -1 0 16 0.0000 4 30 180 1800 3960 ...\001
+4 0 0 50 -1 0 16 0.0000 4 30 180 5850 3960 ...\001
+4 0 0 50 -1 0 16 0.0000 4 165 120 1620 3330 1\001
+4 0 0 50 -1 0 16 0.0000 4 180 240 2520 3420 25\001
+4 0 0 50 -1 0 16 0.0000 4 180 240 4500 2160 25\001
+4 0 0 50 -1 0 16 0.0000 4 165 120 3060 2160 1\001
+4 0 0 50 -1 0 16 0.0000 4 165 120 4860 3420 1\001
+4 0 0 50 -1 0 16 0.0000 4 180 240 6120 3330 25\001
+4 0 0 50 -1 0 24 0.0000 4 255 990 2295 2700 IBlock\001
+4 0 0 50 -1 0 24 0.0000 4 255 990 4545 2745 IBlock\001
+4 0 0 50 -1 0 24 0.0000 4 345 1995 2925 4860 Original Data\001
+4 0 0 50 -1 0 12 0.0000 4 120 180 1035 4410 1k\001
+4 0 0 50 -1 0 12 0.0000 4 120 180 2835 4410 1k\001
+4 0 0 50 -1 0 12 0.0000 4 120 180 5085 4410 1k\001
+4 0 0 50 -1 0 12 0.0000 4 120 180 6885 4410 1k\001
+4 0 0 50 -1 0 16 0.0000 4 30 180 3825 2655 ...\001

Added: GNUnet-docs/papers/ecrs/simple_gblock.pdf
===================================================================
(Binary files differ)


Property changes on: GNUnet-docs/papers/ecrs/simple_gblock.pdf
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: GNUnet-docs/papers/ecrs/single_inode_split.eps
===================================================================
--- GNUnet-docs/papers/ecrs/single_inode_split.eps      2005-05-31 19:10:35 UTC 
(rev 832)
+++ GNUnet-docs/papers/ecrs/single_inode_split.eps      2005-05-31 19:27:19 UTC 
(rev 833)
@@ -0,0 +1,294 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: single_inode_split.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3c
+%%CreationDate: Thu Nov 15 19:18:55 2001
+%%For: address@hidden (Krista Bennett,,,)
+%%BoundingBox: 0 0 353 192
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 192 moveto 0 0 lineto 353 0 lineto 353 192 lineto closepath clip 
newpath
+-197.0 321.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/reencdict 12 dict def /ReEncode { reencdict begin
+/newcodesandnames exch def /newfontname exch def /basefontname exch def
+/basefontdict basefontname findfont def /newfont basefontdict maxlength dict 
def
+basefontdict { exch dup /FID ne { dup /Encoding eq
+{ exch dup length array copy newfont 3 1 roll put }
+{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall
+newfont /FontName newfontname put newcodesandnames aload pop
+128 1 255 { newfont /Encoding get exch /.notdef put } for
+newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat
+newfontname newfont definefont pop end } def
+/isovec [
+8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde
+8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis
+8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron
+8#220 /dotlessi 8#230 /oe 8#231 /OE
+8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling
+8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis
+8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot
+8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus
+8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph
+8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine
+8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf
+8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute
+8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring
+8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute
+8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute
+8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve
+8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply
+8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex
+8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave
+8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring
+8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute
+8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute
+8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve
+8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide
+8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex
+8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def
+/Times-Italic /Times-Italic-iso isovec ReEncode
+/Times-Roman /Times-Roman-iso isovec ReEncode
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+%%Page: 1 1
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+/Times-Italic-iso ff 195.00 scf sf
+3675 4800 m
+gs 1 -1 sc (f) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman-iso ff 150.00 scf sf
+3750 4875 m
+gs 1 -1 sc (1) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Italic-iso ff 195.00 scf sf
+4575 4800 m
+gs 1 -1 sc (f) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Italic-iso ff 195.00 scf sf
+7575 4800 m
+gs 1 -1 sc (f) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman-iso ff 150.00 scf sf
+7650 4875 m
+gs 1 -1 sc (50) col0 sh gr
+% Polyline
+7.500 slw
+n 3300 4425 m 8175 4425 l 8175 4950 l 3300 4950 l
+ cp gs col0 s gr 
+% Polyline
+n 4200 4425 m
+ 4200 4950 l gs col0 s gr 
+% Polyline
+n 5100 4425 m
+ 5100 4950 l gs col0 s gr 
+% Polyline
+n 7200 4425 m
+ 7200 4950 l gs col0 s gr 
+% Polyline
+ [15 45] 45 sd
+n 9150 4425 m
+ 8175 4950 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 8175 4425 m 9150 4425 l 9150 4950 l
+ 8175 4950 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 8175 4425 m
+ 9150 4950 l gs col0 s gr  [] 0 sd
+/Times-Roman-iso ff 450.00 scf sf
+6150 4800 m
+gs 1 -1 sc (...) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman-iso ff 150.00 scf sf
+4650 4875 m
+gs 1 -1 sc (2) dup sw pop 2 div neg 0 rm  col0 sh gr
+% Polyline
+n 5550 2925 m 6675 2925 l 6675 3450 l 5550 3450 l
+ cp gs col0 s gr 
+% Polyline
+n 5850 2925 m
+ 5850 3450 l gs col0 s gr 
+% Polyline
+n 6000 2925 m
+ 6000 3450 l gs col0 s gr 
+% Polyline
+n 6375 2925 m
+ 6375 3450 l gs col0 s gr 
+% Polyline
+ [15 45] 45 sd
+n 6675 2925 m
+ 6525 3450 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 6525 2925 m
+ 6675 3450 l gs col0 s gr  [] 0 sd
+% Polyline
+n 6525 2925 m
+ 6525 3450 l gs col0 s gr 
+% Polyline
+n 3300 5175 m
+ 3300 5325 l gs col0 s gr 
+% Polyline
+n 4200 5175 m
+ 4200 5325 l gs col0 s gr 
+% Polyline
+n 3300 5250 m 4200 5250 l
+ 4200 5325 l gs col0 s gr 
+/Times-Italic-iso ff 210.00 scf sf
+7875 3225 m
+gs 1 -1 sc (H\(f  \), ..., H\(f    \)) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman-iso ff 135.00 scf sf
+8400 3300 m
+gs 1 -1 sc (50) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman-iso ff 135.00 scf sf
+7425 3300 m
+gs 1 -1 sc (1) col0 sh gr
+/Times-Roman-iso ff 165.00 scf sf
+4125 3165 m
+gs 1 -1 sc (hashcodes, + 4-byte CRC) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman-iso ff 165.00 scf sf
+4125 2925 m
+gs 1 -1 sc (Space for 51  20-byte) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman-iso ff 165.00 scf sf
+4125 3375 m
+gs 1 -1 sc (\(= 1024 bytes\)) dup sw pop 2 div neg 0 rm  col0 sh gr
+% Arc
+gs  clippath
+6203 2951 m 6258 2926 l 6195 2788 l 6218 2910 l 6140 2813 l cp
+eoclip
+ [15 45] 45 sd
+n 5127.0 3352.2 1178.2 -21.3 -141.9 arcn
+gs col0 s gr
+ gr
+ [] 0 sd
+% arrowhead
+n 6140 2813 m 6218 2910 l 6195 2788 l 6140 2813 l  cp gs 0.00 setgray ef gr  
col0 s
+% Polyline
+ [60 24 15 18 15 18 15 24 ] 0 sd
+gs  clippath
+3724 4403 m 3748 4458 l 3886 4396 l 3765 4418 l 3862 4341 l cp
+eoclip
+n 5925 3450 m
+ 3750 4425 l gs col0 s gr gr
+ [] 0 sd
+% arrowhead
+n 3862 4341 m 3765 4418 l 3886 4396 l  col0 s
+% Polyline
+ [60 24 15 18 15 18 15 24 ] 0 sd
+gs  clippath
+4620 4408 m 4654 4458 l 4779 4372 l 4664 4416 l 4746 4323 l cp
+eoclip
+n 6075 3450 m
+ 4650 4425 l gs col0 s gr gr
+ [] 0 sd
+% arrowhead
+n 4746 4323 m 4664 4416 l 4779 4372 l  col0 s
+% Polyline
+ [60 24 15 18 15 18 15 24 ] 0 sd
+gs  clippath
+7642 4457 m 7680 4411 l 7562 4316 l 7637 4415 l 7524 4362 l cp
+eoclip
+n 6450 3450 m
+ 7650 4425 l gs col0 s gr gr
+ [] 0 sd
+% arrowhead
+n 7524 4362 m 7637 4415 l 7562 4316 l  col0 s
+% Polyline
+gs  clippath
+6660 3120 m 6660 3180 l 6812 3180 l 6692 3150 l 6812 3120 l cp
+eoclip
+n 6675 3150 m
+ 7050 3150 l gs col0 s gr gr
+
+% arrowhead
+n 6812 3120 m 6692 3150 l 6812 3180 l  col0 s
+/Times-Italic-iso ff 210.00 scf sf
+6225 3825 m
+gs 1 -1 sc (IBlock) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman-iso ff 255.00 scf sf
+6225 3300 m
+gs 1 -1 sc (...) dup sw pop 2 div neg 0 rm  col0 sh gr
+/Times-Roman-iso ff 150.00 scf sf
+3450 5175 m
+gs 1 -1 sc (1024 bytes) col0 sh gr
+/Times-Roman-iso ff 195.00 scf sf
+5775 3375 m
+gs 1 -1 sc  90.0 rot (CRC) col0 sh gr
+/Times-Italic-iso ff 210.00 scf sf
+6225 5325 m
+gs 1 -1 sc (DBlocks) dup sw pop 2 div neg 0 rm  col0 sh gr
+$F2psEnd
+rs

Added: GNUnet-docs/papers/ecrs/single_inode_split.fig
===================================================================
--- GNUnet-docs/papers/ecrs/single_inode_split.fig      2005-05-31 19:10:35 UTC 
(rev 832)
+++ GNUnet-docs/papers/ecrs/single_inode_split.fig      2005-05-31 19:27:19 UTC 
(rev 833)
@@ -0,0 +1,103 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+5 1 2 1 0 7 50 0 -1 3.000 0 1 0 1 5126.986 3352.220 6225 2925 5175 2175 4200 
2625
+       1 1 1.00 60.00 120.00
+6 3300 4425 9150 4950
+6 3300 4425 9150 4950
+6 3600 4650 3825 4875
+4 1 0 50 0 1 13 0.0000 4 195 75 3675 4800 f\001
+4 1 0 50 0 0 10 0.0000 4 105 75 3750 4875 1\001
+-6
+6 4500 4650 4650 4875
+4 1 0 50 0 1 13 0.0000 4 195 75 4575 4800 f\001
+-6
+6 7500 4650 7800 4875
+4 1 0 50 0 1 13 0.0000 4 195 75 7575 4800 f\001
+4 0 0 50 0 0 10 0.0000 4 105 150 7650 4875 50\001
+-6
+6 3300 4425 9150 4950
+6 3300 4425 9150 4950
+6 3300 4425 9150 4950
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        3300 4425 8175 4425 8175 4950 3300 4950 3300 4425
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        4200 4425 4200 4950
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        5100 4425 5100 4950
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        7200 4425 7200 4950
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
+        9150 4425 8175 4950
+-6
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 4
+        8175 4425 9150 4425 9150 4950 8175 4950
+-6
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
+        8175 4425 9150 4950
+-6
+4 1 0 50 0 0 30 0.0000 4 30 315 6150 4800 ...\001
+-6
+6 4575 4725 4725 4875
+4 1 0 50 0 0 10 0.0000 4 105 75 4650 4875 2\001
+-6
+-6
+6 5550 2925 6675 3450
+6 5550 2925 6675 3450
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        5550 2925 6675 2925 6675 3450 5550 3450 5550 2925
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        5850 2925 5850 3450
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        6000 2925 6000 3450
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        6375 2925 6375 3450
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
+        6675 2925 6525 3450
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
+        6525 2925 6675 3450
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        6525 2925 6525 3450
+-6
+6 3300 5175 4200 5325
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        3300 5175 3300 5325
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        4200 5175 4200 5325
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 3
+        3300 5250 4200 5250 4200 5325
+-6
+6 7125 3075 8625 3300
+4 1 0 50 0 1 14 0.0000 4 195 1365 7875 3225 H(f  ), ..., H(f    )\001
+4 1 0 50 0 0 9 0.0000 4 75 120 8400 3300 50\001
+4 0 0 50 0 0 9 0.0000 4 75 60 7425 3300 1\001
+-6
+6 3300 2775 4950 3450
+4 1 0 50 0 0 11 0.0000 4 135 1590 4125 3165 hashcodes, + 4-byte CRC\001
+4 1 0 50 0 0 11 0.0000 4 150 1320 4125 2925 Space for 51  20-byte\001
+4 1 0 50 0 0 11 0.0000 4 135 900 4125 3375 (= 1024 bytes)\001
+-6
+2 1 5 1 0 7 50 0 -1 4.000 0 0 -1 1 0 2
+       0 0 1.00 60.00 120.00
+        5925 3450 3750 4425
+2 1 5 1 0 7 50 0 -1 4.000 0 0 -1 1 0 2
+       0 0 1.00 60.00 120.00
+        6075 3450 4650 4425
+2 1 5 1 0 7 50 0 -1 4.000 0 0 -1 1 0 2
+       0 0 1.00 60.00 120.00
+        6450 3450 7650 4425
+2 1 0 1 0 7 50 0 -1 3.000 0 0 -1 0 1 2
+       0 0 1.00 60.00 120.00
+        6675 3150 7050 3150
+4 1 0 50 0 1 14 0.0000 4 150 555 6225 3825 IBlock\001
+4 1 0 50 0 0 17 0.0000 4 30 180 6225 3300 ...\001
+4 0 0 50 0 0 10 0.0000 4 135 660 3450 5175 1024 bytes\001
+4 0 0 50 0 0 13 1.5708 4 150 435 5775 3375 CRC\001
+4 1 0 50 0 1 14 0.0000 4 150 720 6225 5325 DBlocks\001

Modified: gnunet-gtk/AUTHORS
===================================================================
--- gnunet-gtk/AUTHORS  2005-05-31 19:10:35 UTC (rev 832)
+++ gnunet-gtk/AUTHORS  2005-05-31 19:27:19 UTC (rev 833)
@@ -1,2 +1,10 @@
+Primary developer:
 Christian Grothoff <address@hidden>
 
+Code contributions also came from:
+Igor Wronsky <address@hidden>'
+Nils Durner <address@hidden>
+
+
+If you have contributed and are not listed here, please
+notify one of the maintainers in order to be added.

Modified: gnunet-gtk/Makefile.am
===================================================================
--- gnunet-gtk/Makefile.am      2005-05-31 19:10:35 UTC (rev 832)
+++ gnunet-gtk/Makefile.am      2005-05-31 19:27:19 UTC (rev 833)
@@ -1,6 +1,6 @@
 ## Process this file with automake to produce Makefile.in
 
-SUBDIRS = po src
+SUBDIRS = doc po src
 
 EXTRA_DIST = \
        bootstrap \
@@ -22,7 +22,7 @@
          mkdir $(distdir)/pixmaps; \
          for pixmap in pixmaps/*; do \
            if test -f $$pixmap; then \
-             cp -p $$pixmap $(distdir); \
+             cp -p $$pixmap $(distdir)/pixmaps; \
            fi \
          done \
        fi

Modified: gnunet-gtk/README
===================================================================
--- gnunet-gtk/README   2005-05-31 19:10:35 UTC (rev 832)
+++ gnunet-gtk/README   2005-05-31 19:27:19 UTC (rev 833)
@@ -1,9 +1,15 @@
-This is the GNUnet GTK user interface.  In order
-to compile or run this code, you need to first 
-install the main GNUnet codebase.
+This is the GNUnet GTK user interface.  In order to compile or run
+this code, you need to first install the main GNUnet codebase.  
 
-GNUnet GTK requires GTK 2.4 or higher.
+Then you may need to tell configure where the GNUnet installation
+is located:
 
+$ ./configure --prefix=$HOME --with-gnunet=$GNUNET_PREFIX
+
+gnunet-gtk requires GTK 2.6 or higher and libglade 2.5.1 or higher.
+glade-2.10 is used to edit the UI.  Debian users please note that
+these versions are currently only available in experimental (!).
+ 
 This software is currently alpha quality: 
 * we're using glade for the first time
 * we're shipping gnunet-gtk seperately from GNUnet
@@ -11,8 +17,8 @@
 * the UI code was largely rewritten
 * the GNUnet core was largely rewritten
 
-So, please don't expect everything to just work
-and report bugs (or better, send patches :-)).
+So, please don't expect everything to just work and report bugs (or
+better, send patches :-)).
 
 
 Stay tuned

Copied: gnunet-gtk/TODO (from rev 828, gnunet-gtk/todo)
===================================================================
--- gnunet-gtk/todo     2005-05-29 10:47:47 UTC (rev 828)
+++ gnunet-gtk/TODO     2005-05-31 19:27:19 UTC (rev 833)
@@ -0,0 +1,63 @@
+High priority (for 0.7.0pre3):
+* basic FS integration:
+  - download (Tuesday/Wednesday)
+    + find selection, start FSUI download
+    + add download to download view:   
+      - construct view
+      - maintain view
+    + process progress events
+      - update download view
+      - show contents of directory in associated search view!
+  - insert (Thursday/Friday?)
+    + launch file selection window
+    + launch meta-data edit window
+    + launch insertion process
+    + add insertion to insertion view
+    + process insertion progress events
+
+Important (for 0.7.0):
+* make use of anonymity level specification widgets (easy):
+  - search
+  - download
+  - upload
+* implement advanced FS operations (namespace, collection)
+* search:
+  + update namespace list combo box
+  + support namespace URIs
+* insertion:
+  + support nice progress view for recursive insertions
+* stats integration
+* available apps
+
+Later (0.7.1):
+* more help-texts
+* pop-up dialogs
+* chat
+* look into I18N
+
+
+gnunet-gtk wishlist (from pre-0.7.0 days):
+- #770? (use freedback (LOG) in gnunet-gtk via show-messages)
+  (is this not working nicely already?)
+- while (!) downloading directory, display already received results
+  for download (now supported by libecrs!)
+- add option to list all indexed files and perhaps delete from them
+  (ECRS now supports listing of indexed files!)
+- for potentially long clists, add option to specify a string
+  pattern that must be matched for the lines to be displayed
+  (to further prune search results, for example)
+- implement search bookmarking (e.g. user could add/edit/delete
+  favourite namespace/key etc combinations)
+- in Assemble Directory's Files Available/Selected
+    Add sortability
+    Add multiselection
+    Print filenames as well
+- add right button popup menu operations for
+    Select by pattern
+  in the search result list.
+- a completely new interactive namespace/directory building
+  module that would allow importing files/directories from
+  disk and edit various parameters, file descriptions and
+  the dir tree structure before the insertion.
+- give user opportunity to change namespace rating after
+  namespace download succeeded

Modified: gnunet-gtk/configure.ac
===================================================================
--- gnunet-gtk/configure.ac     2005-05-31 19:10:35 UTC (rev 832)
+++ gnunet-gtk/configure.ac     2005-05-31 19:27:19 UTC (rev 833)
@@ -180,6 +180,33 @@
 AC_SUBST(GNUNETGTK_CFLAGS)
 AC_SUBST(GNUNETGTK_LIBS)
 
+
+# test for libextractor
+extractor=0
+AC_MSG_CHECKING(for libextractor)
+AC_ARG_WITH(extractor,
+   [  --with-extractor=PFX    Base of libextractor installation],
+   [AC_MSG_RESULT([$with_extractor])
+    case $with_extractor in
+      no)
+        ;;
+      yes)
+        AC_CHECK_HEADERS(extractor.h,extractor=1)
+        ;;
+      *)
+        CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
+        AC_CHECK_HEADERS(extractor.h,extractor=1)
+        ;;
+    esac
+   ],
+   [AC_MSG_RESULT([--with-extractor not specified])
+    AC_CHECK_HEADERS(extractor.h,extractor=1)])
+if test "$extractor" != 1
+then
+ AC_MSG_ERROR([gnunet-gtk requires libextractor headers])
+fi
+
+
 # Set PACKAGE_LOCALE_DIR in config.h.
 if test "x${prefix}" = "xNONE"; then
   AC_DEFINE_UNQUOTED(PACKAGE_LOCALE_DIR, 
"${ac_default_prefix}/${DATADIRNAME}/locale", [locale dir])
@@ -205,6 +232,7 @@
 
 AC_OUTPUT([
 Makefile
+doc/Makefile
 src/Makefile
 po/Makefile.in
 po/Makefile

Copied: gnunet-gtk/doc/gnunet-gtk.1 (from rev 827, GNUnet/doc/man/gnunet-gtk.1)

Modified: gnunet-gtk/gnunet-gtk.glade
===================================================================
--- gnunet-gtk/gnunet-gtk.glade 2005-05-31 19:10:35 UTC (rev 832)
+++ gnunet-gtk/gnunet-gtk.glade 2005-05-31 19:27:19 UTC (rev 833)
@@ -286,7 +286,7 @@
                                                  <child>
                                                    <widget class="GtkLabel" 
id="startButton">
                                                      <property 
name="visible">True</property>
-                                                     <property name="label" 
translatable="yes">start gnunetd</property>
+                                                     <property name="label" 
translatable="yes">start gnunet_d</property>
                                                      <property 
name="use_underline">True</property>
                                                      <property 
name="use_markup">False</property>
                                                      <property 
name="justify">GTK_JUSTIFY_RIGHT</property>
@@ -366,7 +366,7 @@
                                                  <child>
                                                    <widget class="GtkLabel" 
id="label64">
                                                      <property 
name="visible">True</property>
-                                                     <property name="label" 
translatable="yes">stop gnunetd</property>
+                                                     <property name="label" 
translatable="yes">sto_p gnunetd</property>
                                                      <property 
name="use_underline">True</property>
                                                      <property 
name="use_markup">False</property>
                                                      <property 
name="justify">GTK_JUSTIFY_LEFT</property>
@@ -866,8 +866,8 @@
                      <child>
                        <widget class="GtkLabel" id="searchkeywordlabel">
                          <property name="visible">True</property>
-                         <property name="label" 
translatable="yes">Keyword:</property>
-                         <property name="use_underline">False</property>
+                         <property name="label" 
translatable="yes">_Keyword:</property>
+                         <property name="use_underline">True</property>
                          <property name="use_markup">False</property>
                          <property name="justify">GTK_JUSTIFY_LEFT</property>
                          <property name="wrap">False</property>
@@ -876,6 +876,7 @@
                          <property name="yalign">0.5</property>
                          <property name="xpad">5</property>
                          <property name="ypad">0</property>
+                         <property 
name="mnemonic_widget">fssearchKeywordComboBoxEntry</property>
                          <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
                          <property name="width_chars">-1</property>
                          <property name="single_line_mode">False</property>
@@ -955,7 +956,7 @@
                                  <child>
                                    <widget class="GtkLabel" id="label71">
                                      <property name="visible">True</property>
-                                     <property name="label" 
translatable="yes">_Search</property>
+                                     <property name="label" 
translatable="yes">Sea_rch</property>
                                      <property 
name="use_underline">True</property>
                                      <property 
name="use_markup">False</property>
                                      <property 
name="justify">GTK_JUSTIFY_LEFT</property>
@@ -991,8 +992,8 @@
                      <child>
                        <widget class="GtkLabel" id="label40">
                          <property name="visible">True</property>
-                         <property name="label" translatable="yes">in 
namespace</property>
-                         <property name="use_underline">False</property>
+                         <property name="label" translatable="yes">in 
_namespace</property>
+                         <property name="use_underline">True</property>
                          <property name="use_markup">False</property>
                          <property name="justify">GTK_JUSTIFY_CENTER</property>
                          <property name="wrap">False</property>
@@ -1027,6 +1028,52 @@
                          <property name="fill">True</property>
                        </packing>
                      </child>
+
+                     <child>
+                       <widget class="GtkLabel" id="searchAnonymityLabel">
+                         <property name="visible">True</property>
+                         <property name="label" 
translatable="yes">_Anonymity:</property>
+                         <property name="use_underline">True</property>
+                         <property name="use_markup">False</property>
+                         <property name="justify">GTK_JUSTIFY_LEFT</property>
+                         <property name="wrap">False</property>
+                         <property name="selectable">False</property>
+                         <property name="xalign">0.5</property>
+                         <property name="yalign">0.5</property>
+                         <property name="xpad">5</property>
+                         <property name="ypad">0</property>
+                         <property 
name="mnemonic_widget">searchAnonymitySelectionSpinButton</property>
+                         <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                         <property name="width_chars">-1</property>
+                         <property name="single_line_mode">False</property>
+                         <property name="angle">0</property>
+                       </widget>
+                       <packing>
+                         <property name="padding">0</property>
+                         <property name="expand">False</property>
+                         <property name="fill">False</property>
+                       </packing>
+                     </child>
+
+                     <child>
+                       <widget class="GtkSpinButton" 
id="searchAnonymitySelectionSpinButton">
+                         <property agent="glademm" 
name="cxx_visibility">public</property>
+                         <property name="visible">True</property>
+                         <property name="can_focus">True</property>
+                         <property name="climb_rate">1</property>
+                         <property name="digits">0</property>
+                         <property name="numeric">True</property>
+                         <property 
name="update_policy">GTK_UPDATE_ALWAYS</property>
+                         <property name="snap_to_ticks">False</property>
+                         <property name="wrap">False</property>
+                         <property name="adjustment">1 0 100000 1 10 
10</property>
+                       </widget>
+                       <packing>
+                         <property name="padding">0</property>
+                         <property name="expand">False</property>
+                         <property name="fill">True</property>
+                       </packing>
+                     </child>
                    </widget>
                    <packing>
                      <property name="padding">0</property>
@@ -1169,7 +1216,7 @@
                          <property agent="glademm" 
name="cxx_visibility">public</property>
                          <property name="visible">True</property>
                          <property name="can_focus">True</property>
-                         <property name="label" 
translatable="yes">index</property>
+                         <property name="label" 
translatable="yes">inde_x</property>
                          <property name="use_underline">True</property>
                          <property name="relief">GTK_RELIEF_NORMAL</property>
                          <property name="focus_on_click">True</property>
@@ -1189,7 +1236,7 @@
                          <property agent="glademm" 
name="cxx_visibility">public</property>
                          <property name="visible">True</property>
                          <property name="can_focus">True</property>
-                         <property name="label" 
translatable="yes">insert</property>
+                         <property name="label" 
translatable="yes">i_nsert</property>
                          <property name="use_underline">True</property>
                          <property name="relief">GTK_RELIEF_NORMAL</property>
                          <property name="focus_on_click">True</property>
@@ -1221,7 +1268,7 @@
                      <child>
                        <widget class="GtkLabel" id="scopeLabel">
                          <property name="visible">True</property>
-                         <property name="label" 
translatable="yes">_Scope:</property>
+                         <property name="label" 
translatable="yes">Sco_pe:</property>
                          <property name="use_underline">True</property>
                          <property name="use_markup">False</property>
                          <property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -1249,7 +1296,7 @@
                          <property agent="glademm" 
name="cxx_visibility">public</property>
                          <property name="visible">True</property>
                          <property name="can_focus">True</property>
-                         <property name="label" translatable="yes">file 
only</property>
+                         <property name="label" translatable="yes">file 
onl_y</property>
                          <property name="use_underline">True</property>
                          <property name="relief">GTK_RELIEF_NORMAL</property>
                          <property name="focus_on_click">True</property>
@@ -1269,7 +1316,7 @@
                          <property agent="glademm" 
name="cxx_visibility">public</property>
                          <property name="visible">True</property>
                          <property name="can_focus">True</property>
-                         <property name="label" translatable="yes">recursive 
(for entire directories)</property>
+                         <property name="label" translatable="yes">_recursive 
(for entire directories)</property>
                          <property name="use_underline">True</property>
                          <property name="relief">GTK_RELIEF_NORMAL</property>
                          <property name="focus_on_click">True</property>
@@ -1293,6 +1340,65 @@
                  </child>
 
                  <child>
+                   <widget class="GtkHBox" id="hbox25">
+                     <property name="visible">True</property>
+                     <property name="homogeneous">False</property>
+                     <property name="spacing">0</property>
+
+                     <child>
+                       <widget class="GtkLabel" id="anonymityUploadLabel">
+                         <property name="visible">True</property>
+                         <property name="label" 
translatable="yes">_Anonymity:</property>
+                         <property name="use_underline">True</property>
+                         <property name="use_markup">False</property>
+                         <property name="justify">GTK_JUSTIFY_LEFT</property>
+                         <property name="wrap">False</property>
+                         <property name="selectable">False</property>
+                         <property name="xalign">0.5</property>
+                         <property name="yalign">0.5</property>
+                         <property name="xpad">5</property>
+                         <property name="ypad">0</property>
+                         <property 
name="mnemonic_widget">uploadAnonymityLevelSpinButton</property>
+                         <property 
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                         <property name="width_chars">-1</property>
+                         <property name="single_line_mode">False</property>
+                         <property name="angle">0</property>
+                       </widget>
+                       <packing>
+                         <property name="padding">0</property>
+                         <property name="expand">False</property>
+                         <property name="fill">False</property>
+                       </packing>
+                     </child>
+
+                     <child>
+                       <widget class="GtkSpinButton" 
id="uploadAnonymityLevelSpinButton">
+                         <property agent="glademm" 
name="cxx_visibility">public</property>
+                         <property name="visible">True</property>
+                         <property name="can_focus">True</property>
+                         <property name="climb_rate">1</property>
+                         <property name="digits">0</property>
+                         <property name="numeric">True</property>
+                         <property 
name="update_policy">GTK_UPDATE_ALWAYS</property>
+                         <property name="snap_to_ticks">False</property>
+                         <property name="wrap">False</property>
+                         <property name="adjustment">1 0 10000 1 10 
10</property>
+                       </widget>
+                       <packing>
+                         <property name="padding">0</property>
+                         <property name="expand">False</property>
+                         <property name="fill">False</property>
+                       </packing>
+                     </child>
+                   </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">False</property>
+                     <property name="fill">False</property>
+                   </packing>
+                 </child>
+
+                 <child>
                    <widget class="GtkHBox" id="hbox10">
                      <property name="visible">True</property>
                      <property name="homogeneous">False</property>
@@ -1550,11 +1656,11 @@
                      <child>
                        <widget class="GtkImageMenuItem" id="createNamespace">
                          <property name="visible">True</property>
-                         <property name="label" 
translatable="yes">_create</property>
+                         <property name="label" 
translatable="yes">c_reate</property>
                          <property name="use_underline">True</property>
 
                          <child internal-child="image">
-                           <widget class="GtkImage" id="image12">
+                           <widget class="GtkImage" id="image14">
                              <property name="visible">True</property>
                              <property name="stock">gtk-new</property>
                              <property name="icon_size">1</property>
@@ -1611,11 +1717,11 @@
                      <child>
                        <widget class="GtkImageMenuItem" id="delete1">
                          <property name="visible">True</property>
-                         <property name="label" 
translatable="yes">_delete</property>
+                         <property name="label" 
translatable="yes">d_elete</property>
                          <property name="use_underline">True</property>
 
                          <child internal-child="image">
-                           <widget class="GtkImage" id="image13">
+                           <widget class="GtkImage" id="image15">
                              <property name="visible">True</property>
                              <property name="stock">gtk-delete</property>
                              <property name="icon_size">1</property>
@@ -1810,7 +1916,7 @@
              <child>
                <widget class="GtkLabel" id="advancedfstab">
                  <property name="visible">True</property>
-                 <property name="label" translatable="yes">_Advanced</property>
+                 <property name="label" translatable="yes">Ad_vanced</property>
                  <property name="use_underline">True</property>
                  <property name="use_markup">False</property>
                  <property name="justify">GTK_JUSTIFY_CENTER</property>
@@ -1839,7 +1945,7 @@
          <child>
            <widget class="GtkLabel" id="fstab">
              <property name="visible">True</property>
-             <property name="label" translatable="yes">_File sharing</property>
+             <property name="label" translatable="yes">File s_haring</property>
              <property name="use_underline">True</property>
              <property name="use_markup">False</property>
              <property name="justify">GTK_JUSTIFY_CENTER</property>
@@ -2762,6 +2868,63 @@
                  <property name="spacing">0</property>
 
                  <child>
+                   <widget class="GtkLabel" id="downloadAnonymityLabel">
+                     <property name="visible">True</property>
+                     <property name="label" 
translatable="yes">_Anonymity:</property>
+                     <property name="use_underline">True</property>
+                     <property name="use_markup">False</property>
+                     <property name="justify">GTK_JUSTIFY_LEFT</property>
+                     <property name="wrap">False</property>
+                     <property name="selectable">False</property>
+                     <property name="xalign">0.5</property>
+                     <property name="yalign">0.5</property>
+                     <property name="xpad">5</property>
+                     <property name="ypad">0</property>
+                     <property 
name="mnemonic_widget">downloadAnonymitySpinButton</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
+                   </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">False</property>
+                     <property name="fill">False</property>
+                   </packing>
+                 </child>
+
+                 <child>
+                   <widget class="GtkSpinButton" 
id="downloadAnonymitySpinButton">
+                     <property agent="glademm" 
name="cxx_visibility">public</property>
+                     <property name="visible">True</property>
+                     <property name="can_focus">True</property>
+                     <property name="climb_rate">1</property>
+                     <property name="digits">0</property>
+                     <property name="numeric">True</property>
+                     <property 
name="update_policy">GTK_UPDATE_ALWAYS</property>
+                     <property name="snap_to_ticks">False</property>
+                     <property name="wrap">False</property>
+                     <property name="adjustment">1 0 100000 1 10 10</property>
+                   </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">False</property>
+                     <property name="fill">False</property>
+                   </packing>
+                 </child>
+
+                 <child>
+                   <widget class="GtkVSeparator" id="vseparator1">
+                     <property name="visible">True</property>
+                   </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">True</property>
+                     <property name="fill">True</property>
+                   </packing>
+                 </child>
+
+                 <child>
                    <widget class="GtkButton" id="downloadButton">
                      <property name="visible">True</property>
                      <property name="tooltip" translatable="yes">Download 
selected files.</property>

Modified: gnunet-gtk/po/POTFILES
===================================================================
--- gnunet-gtk/po/POTFILES      2005-05-31 19:10:35 UTC (rev 832)
+++ gnunet-gtk/po/POTFILES      2005-05-31 19:27:19 UTC (rev 833)
@@ -1,13 +1,6 @@
-     .././src/gnunet-gtk.cc \
-     .././src/mainWindow_glade.cc \
-     .././src/mainWindow.cc \
-     .././src/metaDataDialog_glade.cc \
-     .././src/metaDataDialog.cc \
-     .././src/metaDisplayDialog_glade.cc \
-     .././src/metaDisplayDialog.cc \
-     .././src/searchResultsFrame_glade.cc \
-     .././src/searchResultsFrame.cc \
-     .././src/namespaceContentFrame_glade.cc \
-     .././src/namespaceContentFrame.cc \
-     .././src/chatFrame_glade.cc \
-     .././src/chatFrame.cc
+     ../src/helper.c \
+     ../src/main.c \
+     ../src/fs.c \
+     ../src/daemon.c \
+     ../src/search.c \
+     ../src/about.c

Modified: gnunet-gtk/po/POTFILES.in
===================================================================
--- gnunet-gtk/po/POTFILES.in   2005-05-31 19:10:35 UTC (rev 832)
+++ gnunet-gtk/po/POTFILES.in   2005-05-31 19:27:19 UTC (rev 833)
@@ -1,14 +1,6 @@
-# List of source files containing translatable strings.
-./src/gnunet-gtk.cc
-./src/mainWindow_glade.cc
-./src/mainWindow.cc
-./src/metaDataDialog_glade.cc
-./src/metaDataDialog.cc
-./src/metaDisplayDialog_glade.cc
-./src/metaDisplayDialog.cc
-./src/searchResultsFrame_glade.cc
-./src/searchResultsFrame.cc
-./src/namespaceContentFrame_glade.cc
-./src/namespaceContentFrame.cc
-./src/chatFrame_glade.cc
-./src/chatFrame.cc
+src/helper.c
+src/main.c
+src/fs.c
+src/daemon.c
+src/search.c
+src/about.c

Modified: gnunet-gtk/po/gnunet-gtk.pot
===================================================================
--- gnunet-gtk/po/gnunet-gtk.pot        2005-05-31 19:10:35 UTC (rev 832)
+++ gnunet-gtk/po/gnunet-gtk.pot        2005-05-31 19:27:19 UTC (rev 833)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: address@hidden"
-"POT-Creation-Date: 2005-05-23 13:03-0500\n"
+"POT-Creation-Date: 2005-05-30 16:41-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <address@hidden>\n"
 "Language-Team: LANGUAGE <address@hidden>\n"
@@ -16,311 +16,93 @@
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: src/interface.c:168
-msgid "gnunet-gtk"
+#: src/helper.c:201
+msgid "Notification"
 msgstr ""
 
-#: src/interface.c:186
-msgid "_Quit"
+#: src/helper.c:219
+msgid "Ok"
 msgstr ""
 
-#: src/interface.c:191
-msgid "_Help"
+#: src/helper.c:275
+msgid "Messages"
 msgstr ""
 
-#: src/interface.c:200
-msgid "_About"
+#: src/helper.c:308
+msgid "Close"
 msgstr ""
 
-#: src/interface.c:214
-msgid "Welcome to GNUnet\n"
+#: src/main.c:50
+msgid "GNUnet GTK user interface."
 msgstr ""
 
-#: src/interface.c:221
-msgid "_Welcome"
+#: src/main.c:90
+msgid "Use --help to get a list of options.\n"
 msgstr ""
 
-#: src/interface.c:285
-msgid "_start gnunetd"
+#: src/daemon.c:61
+msgid "gnunetd is NOT running.\n"
 msgstr ""
 
-#: src/interface.c:295
-msgid "disconnect from GNUnet"
+#: src/daemon.c:127
+#, c-format
+msgid "Attempted path to '%s' was '%s'.\n"
 msgstr ""
 
-#: src/interface.c:312
-msgid "s_top gnunetd"
+#: src/daemon.c:145
+#, c-format
+msgid "Starting gnunetd failed, error code: %d"
 msgstr ""
 
-#: src/interface.c:322
-msgid "gnunetd control"
+#: src/daemon.c:151
+msgid "Starting gnunetd failed (core dumped)."
 msgstr ""
 
-#: src/interface.c:332
-msgid "Unavailable.\n"
+#: src/daemon.c:157
+msgid "Starting gnunetd failed (aborted by signal)."
 msgstr ""
 
-#: src/interface.c:338
-msgid "Statistics"
+#: src/daemon.c:200
+msgid "Launching gnunetd..."
 msgstr ""
 
-#: src/interface.c:361
-msgid "Available Applications"
+#: src/daemon.c:227
+msgid "Error sending shutdown request to gnunetd."
 msgstr ""
 
-#: src/interface.c:366
-msgid "_General"
+#: src/daemon.c:234
+msgid "Error reading shutdown confirmation from gnunetd."
 msgstr ""
 
-#: src/interface.c:400 src/interface.c:1390
-msgid "Search Results"
+#: src/daemon.c:245
+msgid "Terminating gnunetd..."
 msgstr ""
 
-#: src/interface.c:423
-msgid "Downloads"
+#: src/daemon.c:247
+#, c-format
+msgid "gnunetd refused to shut down (error code '%d')."
 msgstr ""
 
-#: src/interface.c:446
-msgid "Uploads"
+#: src/search.c:137 src/search.c:302
+msgid "globally"
 msgstr ""
 
-#: src/interface.c:451
-msgid "S_tatus"
+#: src/search.c:202
+msgid "Name"
 msgstr ""
 
-#: src/interface.c:467
-msgid "label61"
+#: src/search.c:209
+msgid "Size"
 msgstr ""
 
-#: src/interface.c:472
-msgid "label36"
+#: src/search.c:216
+msgid "Mime-type"
 msgstr ""
 
-#: src/interface.c:523
-msgid "_Search"
-msgstr ""
-
-#: src/interface.c:528
-msgid "in namespace"
-msgstr ""
-
-#: src/interface.c:543
-msgid "global (everywhere)"
-msgstr ""
-
-#: src/interface.c:550 src/interface.c:1442
-msgid "_Download"
-msgstr ""
-
-#: src/interface.c:566
-msgid "index"
-msgstr ""
-
-#: src/interface.c:574
-msgid "insert"
-msgstr ""
-
-#: src/interface.c:586
-msgid "file only"
-msgstr ""
-
-#: src/interface.c:594
-msgid "recursive (for entire directories)"
-msgstr ""
-
-#: src/interface.c:606
-msgid "_Filename"
-msgstr ""
-
-#: src/interface.c:647
-msgid "_Browse"
-msgstr ""
-
-#: src/interface.c:652 src/interface.c:1529
-msgid "_Insert"
-msgstr ""
-
-#: src/interface.c:668
-msgid "_create"
-msgstr ""
-
-#: src/interface.c:677 src/interface.c:706
-msgid "_Namespace"
-msgstr ""
-
-#: src/interface.c:682
-msgid "_Directory"
-msgstr ""
-
-#: src/interface.c:687 src/interface.c:712
-msgid "_Collection"
-msgstr ""
-
-#: src/interface.c:692
-msgid "_Advertisement"
-msgstr ""
-
-#: src/interface.c:697
-msgid "_delete"
-msgstr ""
-
-#: src/interface.c:710
-msgid ""
-"Will prevent future insertions into the namespace (will not delete content "
-"in the namespace)"
-msgstr ""
-
-#: src/interface.c:716
-msgid "end collection (will not delete content already in the collection)"
-msgstr ""
-
-#: src/interface.c:723
-msgid "label62"
-msgstr ""
-
-#: src/interface.c:728
-msgid "label39"
-msgstr ""
-
-#: src/interface.c:764
-msgid "Content"
-msgstr ""
-
-#: src/interface.c:769
-msgid "_Advanced"
-msgstr ""
-
-#: src/interface.c:775
-msgid "_File sharing"
-msgstr ""
-
-#: src/interface.c:786
-msgid "label68"
-msgstr ""
-
-#: src/interface.c:791
-msgid "_Statistics"
-msgstr ""
-
-#: src/interface.c:807
-msgid "label72"
-msgstr ""
-
-#: src/interface.c:812
-msgid "label38"
-msgstr ""
-
-#: src/interface.c:825 src/interface.c:1645
-msgid "/join #gnunet"
-msgstr ""
-
-#: src/interface.c:837
-msgid "_Chat"
-msgstr ""
-
-#: src/interface.c:888
-msgid "Splash Screen"
-msgstr ""
-
-#: src/interface.c:891
-msgid "status"
-msgstr ""
-
-#: src/interface.c:892
-msgid "gnunetd status"
-msgstr ""
-
-#: src/interface.c:895
-msgid "Enter the keywords to search for in this line."
-msgstr ""
-
-#: src/interface.c:1065 src/interface.c:1310
-msgid "File Information"
-msgstr ""
-
-#: src/interface.c:1078
-msgid "Please provide meta-data and keywords for the content."
-msgstr ""
-
-#: src/interface.c:1090
-msgid "_Type:"
-msgstr ""
-
-#: src/interface.c:1104
-msgid "unknown"
-msgstr ""
-
-#: src/interface.c:1111
-msgid "_Value:"
-msgstr ""
-
-#: src/interface.c:1145 src/interface.c:1342
+#: src/search.c:223
 msgid "Meta-data"
 msgstr ""
 
-#: src/interface.c:1155
-msgid "_Keyword:"
+#: src/search.c:230
+msgid "Preview"
 msgstr ""
-
-#: src/interface.c:1187
-msgid "Select entries and use Delete button in order to delete keywords."
-msgstr ""
-
-#: src/interface.c:1191
-msgid "Keywords"
-msgstr ""
-
-#: src/interface.c:1207
-msgid "Use this button to delete meta-data or keywords."
-msgstr ""
-
-#: src/interface.c:1245
-msgid "This dialog is used to edit information about shared files."
-msgstr ""
-
-#: src/interface.c:1248
-msgid "Value Entry"
-msgstr ""
-
-#: src/interface.c:1249
-msgid ""
-"Enter the value for the meta-data of the specified type here.\n"
-"Press ENTER to add the data."
-msgstr ""
-
-#: src/interface.c:1252
-msgid "Lists all of the keywords that will be used."
-msgstr ""
-
-#: src/interface.c:1255
-msgid "Delete button"
-msgstr ""
-
-#: src/interface.c:1258
-msgid "metaDataDialogCancelButton"
-msgstr ""
-
-#: src/interface.c:1259
-msgid "Abort the upload operation."
-msgstr ""
-
-#: src/interface.c:1486
-msgid "Namespace Contents"
-msgstr ""
-
-#: src/interface.c:1557
-msgid "_Update"
-msgstr ""
-
-#: src/interface.c:1612
-msgid "Chat"
-msgstr ""
-
-#: src/interface.c:1670
-msgid "Senden"
-msgstr ""
-
-#: src/support.c:90 src/support.c:114
-#, c-format
-msgid "Couldn't find pixmap file: %s"
-msgstr ""

Modified: gnunet-gtk/src/Makefile.am
===================================================================
--- gnunet-gtk/src/Makefile.am  2005-05-31 19:10:35 UTC (rev 832)
+++ gnunet-gtk/src/Makefile.am  2005-05-31 19:27:19 UTC (rev 833)
@@ -11,6 +11,7 @@
 gnunet_gtk_SOURCES = \
   about.c \
   daemon.c daemon.h \
+  download.c download.h \
   fs.c fs.h \
   gettext.h \
   helper.c helper.h \

Modified: gnunet-gtk/src/daemon.c
===================================================================
--- gnunet-gtk/src/daemon.c     2005-05-31 19:10:35 UTC (rev 832)
+++ gnunet-gtk/src/daemon.c     2005-05-31 19:27:19 UTC (rev 833)
@@ -25,6 +25,7 @@
  */
 
 #include "platform.h"
+
 #include "daemon.h"
 #include "main.h"
 #include "helper.h"

Added: gnunet-gtk/src/download.c
===================================================================
--- gnunet-gtk/src/download.c   2005-05-31 19:10:35 UTC (rev 832)
+++ gnunet-gtk/src/download.c   2005-05-31 19:27:19 UTC (rev 833)
@@ -0,0 +1,183 @@
+/*
+     This file is part of GNUnet.
+     (C) 2005 Christian Grothoff (and other contributing authors)
+
+     GNUnet is free software; you can redistribute it and/or modify
+     it under the terms of the GNU General Public License as published
+     by the Free Software Foundation; either version 2, or (at your
+     option) any later version.
+
+     GNUnet is distributed in the hope that it will be useful, but
+     WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+     General Public License for more details.
+
+     You should have received a copy of the GNU General Public License
+     along with GNUnet; see the file COPYING.  If not, write to the
+     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+     Boston, MA 02111-1307, USA.
+*/
+
+/**
+ * @file src/download.c
+ * @brief code for downloading with gnunet-gtk
+ * @author Christian Grothoff
+ */
+
+#include "platform.h"
+#include "search.h"
+#include "helper.h"
+#include <extractor.h>
+
+typedef struct DL {
+  struct DL * next;
+  struct ECRS_URI * uri;
+  char * filename;
+  GtkTreeRowReference * rr;
+} DownloadList;
+
+static DownloadList * head;
+
+static void initiateDownload(GtkTreeModel *model,
+                            GtkTreePath * path,
+                            GtkTreeIter * iter,
+                            GtkTreeStore * tree) {
+  struct ECRS_URI * uri;
+  struct ECRS_MetaData * meta;
+  char * filename;
+  char * pfx;
+  char * fn;
+  DownloadList * list;
+
+  uri = NULL;
+  meta = NULL;
+  gtk_tree_model_get(model,
+                    iter,
+                    5, &uri,
+                    6, &meta,
+                    -1);
+  if (uri == NULL) {
+    BREAK();
+    return;
+  }
+  filename = ECRS_uriToString(uri);  
+  if ( (filename == NULL) ||
+       (strlen(filename) < 
+       strlen(ECRS_URI_PREFIX) +
+       strlen(ECRS_FILE_INFIX)) ) {
+    BREAK();
+    FREENONNULL(filename);
+    return;
+  }
+  list = MALLOC(sizeof(DownloadList));
+  list->next = head;
+  list->rr = gtk_tree_row_reference_new(model, path);
+  list->uri = ECRS_dupUri(uri);
+  fn = getFileName("FS",
+                  "DOWNLOADDIR",
+                  _("You must specify a directory in the configuration in 
section '%s' under '%s'."));
+  pfx = MALLOC(strlen(fn) + 2 +
+              strlen(filename));
+  strcpy(pfx, fn);
+  FREE(fn);
+  strcat(pfx, 
+        DIR_SEPARATOR_STR);
+  strcat(pfx,
+        &filename[strlen(ECRS_URI_PREFIX) +
+                  strlen(ECRS_FILE_INFIX)]);
+  list->filename = pfx;
+  head = list;
+  /* FIXME:
+     update download model! */
+
+  FSUI_startDownload(ctx,
+                    getConfigurationString("GNUNET-GTK",
+                                           "ANONYMITY"), /* FIXME: get value 
from UI! */
+                    uri,
+                    pfx);
+}
+
+void on_downloadButton_clicked(GtkWidget * treeview,
+                              GtkWidget * downloadButton) {
+  GtkTreeSelection * selection;
+
+  selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
+  gtk_tree_selection_selected_foreach(selection,
+                                     (GtkTreeSelectionForeachFunc) 
&initiateDownload,
+                                     NULL);
+}
+
+/**
+ */
+void displayDownloadUpdate(...) {
+  /* fixme: update download model */
+}
+
+/**
+ */
+void displayDownloadComplete(...) {
+  /* fixme: update download model */
+}
+
+void fs_download_start() {
+  GtkWidget * downloadList;
+  GtkCellRenderer * renderer;
+  GtkTreeStore * tree;
+ 
+  downloadList = glade_xml_get_widget(xml,
+                                     "activeDownloadsList");
+  tree =
+    gtk_tree_store_new(8,
+                      G_TYPE_STRING, /* name */
+                      G_TYPE_UINT64,  /* size */
+                      G_TYPE_STRING, /* mime-type */                        
+                      G_TYPE_STRING, /* meta-data (some) */                    
     
+                      GDK_TYPE_PIXBUF, /* preview */                        
+                      G_TYPE_POINTER,  /* url */
+                      G_TYPE_POINTER,  /* meta */
+                      G_TYPE_POINTER); /* internal: download info/NULL */
+  gtk_tree_view_set_model(GTK_TREE_VIEW(downloadList),
+                         GTK_TREE_MODEL(tree));
+  renderer = gtk_cell_renderer_text_new();
+  gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(downloadList),
+                                             -1,
+                                             _("Name"),
+                                             renderer,
+                                             "text", 0, 
+                                             NULL);
+  renderer = gtk_cell_renderer_text_new();
+  gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(downloadList),
+                                             -1,
+                                             _("Size"),
+                                             renderer,
+                                             "text", 1,
+                                             NULL);
+  renderer = gtk_cell_renderer_text_new();
+  gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(downloadList),
+                                             -1,
+                                             _("Mime-type"),
+                                             renderer,
+                                             "text", 2,
+                                             NULL);
+  renderer = gtk_cell_renderer_text_new();
+  gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(downloadList),
+                                             -1,
+                                             _("Meta-data"),
+                                             renderer,
+                                             "text", 3,
+                                             NULL);
+  renderer = gtk_cell_renderer_pixbuf_new();
+  gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(downloadList),
+                                             -1,
+                                             _("Preview"),
+                                             renderer,
+                                             "pixbuf", 4,
+                                             NULL);
+}
+
+void fs_download_stop() {
+  /* FIXME: destroy download model */
+}
+
+
+/* end of download.c */

Modified: gnunet-gtk/src/fs.c
===================================================================
--- gnunet-gtk/src/fs.c 2005-05-31 19:10:35 UTC (rev 832)
+++ gnunet-gtk/src/fs.c 2005-05-31 19:27:19 UTC (rev 833)
@@ -25,16 +25,76 @@
  */
 
 #include "fs.h"
+#include "helper.h"
+#include "download.h"
 #include "search.h"
+#include <GNUnet/gnunet_fsui_lib.h>
 
 struct FSUI_Context * ctx;
 
+static gint saveEventProcessor(SaveCall * call) {
+  const FSUI_Event * event;
+
+  event = (const FSUI_Event *) call->args;
+  switch (event->type) {
+  case search_result:
+    displaySearchResult(&event->data.SearchResult.fi,
+                       event->data.SearchResult.searchURI,
+                       NULL);
+    break;
+  case search_error:
+    LOG(LOG_ERROR,
+       _("Error while searching: %s\n"),
+       event->data.message);
+    break;
+  case download_progress:
+    BREAK();
+    break;
+  case download_complete:
+    BREAK();
+    break;
+  case download_error:
+    LOG(LOG_ERROR,
+       _("Error while downloading: %s\n"),
+       event->data.message);
+    break;
+  case upload_progress:
+    BREAK();
+    break;
+  case upload_complete:
+    BREAK();
+    break;
+  case upload_error:
+    LOG(LOG_ERROR,
+       _("Error while uploading: %s\n"),
+       event->data.message);
+    break;
+  case gnunetd_connected:
+    LOG(LOG_MESSAGE,
+       _("Connected to gnunetd.\n"));
+    break;
+  case gnunetd_disconnected:
+    LOG(LOG_MESSAGE,
+       _("Disconnected from gnunetd.\n"));
+    break;
+  default:
+    LOG(LOG_ERROR,
+       _("Unhandled (unknown) FSUI event: %u.\n"),
+       event->type);
+    break;
+  }
+
+  gtkSaveCallDone(call->sem);
+  return FALSE;
+}
+
 /**
  * FSUI event handler.
  */
 static void eventProcessor(void * cls,
                           const FSUI_Event * event) {
-  printf("FSUI event received!\n");
+  gtkSaveCall((GtkFunction) &saveEventProcessor,
+             (void*) event);
 }
 
 void gtk_fs_init() {
@@ -44,9 +104,11 @@
                   &eventProcessor,
                   NULL);
   fs_search_start();
+  fs_download_start();
 }
 
 void gtk_fs_done() {
+  fs_download_stop();
   fs_search_stop();
   FSUI_stop(ctx);
 }

Modified: gnunet-gtk/src/fs.h
===================================================================
--- gnunet-gtk/src/fs.h 2005-05-31 19:10:35 UTC (rev 832)
+++ gnunet-gtk/src/fs.h 2005-05-31 19:27:19 UTC (rev 833)
@@ -27,6 +27,7 @@
 #ifndef GTK_FS_H
 #define GTK_FS_H
 
+#include <GNUnet/gnunet_util.h>
 #include <GNUnet/gnunet_ecrs_lib.h>
 #include <GNUnet/gnunet_fsui_lib.h>
 

Modified: gnunet-gtk/src/helper.c
===================================================================
--- gnunet-gtk/src/helper.c     2005-05-31 19:10:35 UTC (rev 832)
+++ gnunet-gtk/src/helper.c     2005-05-31 19:27:19 UTC (rev 833)
@@ -359,13 +359,7 @@
   g_free(info.note);
 }
 
-/** 
- * Appends a log entry to the info window
- *
- * @param txt the log entry
- *
- */
-void addLogEntry(const char *txt) {
+static gint saveAddLogEntry(SaveCall * call) {
   static GtkWidget * s = NULL;
   static int once = 1;
   static guint id;
@@ -381,8 +375,21 @@
                      id);
   gtk_statusbar_push(GTK_STATUSBAR(s),
                     id,
-                    txt);
+                    (const char*) call->args);
+  gtkSaveCallDone(call->sem);
+  return FALSE;
+}
+
+/** 
+ * Appends a log entry to the info window
+ *
+ * @param txt the log entry
+ *
+ */
+void addLogEntry(const char *txt) {
   infoMessage(NO, txt);
+  gtkSaveCall((GtkFunction)saveAddLogEntry,
+             (void*) txt);
 }
 
 GtkNotebook * notebook = NULL;

Modified: gnunet-gtk/src/main.c
===================================================================
--- gnunet-gtk/src/main.c       2005-05-31 19:10:35 UTC (rev 832)
+++ gnunet-gtk/src/main.c       2005-05-31 19:27:19 UTC (rev 833)
@@ -132,7 +132,7 @@
             15 * cronSECONDS,
             NULL);
   gtk_fs_done();
-  g_object_unref(mainXML);
+  UNREF(mainXML);
   doneUtil();
   
   return 0;

Modified: gnunet-gtk/src/platform.h
===================================================================
--- gnunet-gtk/src/platform.h   2005-05-31 19:10:35 UTC (rev 832)
+++ gnunet-gtk/src/platform.h   2005-05-31 19:27:19 UTC (rev 833)
@@ -35,6 +35,10 @@
 
 #include "gettext.h"
 
+#define _(a) gettext(a)
+
+#define UNREF(a) LOG(LOG_DEBUG, "unref %s:%u\n", __FILE__, __LINE__); 
g_object_unref(a)
+
 #include "plibc.h"
 
 /**

Deleted: gnunet-gtk/todo
===================================================================
--- gnunet-gtk/todo     2005-05-31 19:10:35 UTC (rev 832)
+++ gnunet-gtk/todo     2005-05-31 19:27:19 UTC (rev 833)
@@ -1,49 +0,0 @@
-High priority:
-* figure out how list views work
-* basic FS integration:
-  - search:
-    + process search result events
-    + process search frame close event (memory leak)
-    + support namespace URIs
-    + update namespace list combo box
-  - insert 
-  - download
-
-Important:
-* advanced FS operations (namespace, collection)
-* stats integration
-* available apps
-
-Later:
-* add widgets to allow anonymity level specification
-* more help-texts
-* pop-up dialogs
-* chat
-
-
-
-gnunet-gtk wishlist (from pre-0.7.0 days):
-- #770? (use freedback (LOG) in gnunet-gtk via show-messages)
-  (is this not working nicely already?)
-- while (!) downloading directory, display already received results
-  for download (now supported by libecrs!)
-- add option to list all indexed files and perhaps delete from them
-  (ECRS now supports listing of indexed files!)
-- for potentially long clists, add option to specify a string
-  pattern that must be matched for the lines to be displayed
-  (to further prune search results, for example)
-- implement search bookmarking (e.g. user could add/edit/delete
-  favourite namespace/key etc combinations)
-- in Assemble Directory's Files Available/Selected
-    Add sortability
-    Add multiselection
-    Print filenames as well
-- add right button popup menu operations for
-    Select by pattern
-  in the search result list.
-- a completely new interactive namespace/directory building
-  module that would allow importing files/directories from
-  disk and edit various parameters, file descriptions and
-  the dir tree structure before the insertion.
-- give user opportunity to change namespace rating after
-  namespace download succeeded





reply via email to

[Prev in Thread] Current Thread [Next in Thread]