diff -Nru ocaml-http-0.1.5/cookie_lexer.ml ocaml-http-0.1.6/cookie_lexer.ml --- ocaml-http-0.1.5/cookie_lexer.ml 2010-12-31 02:18:36.000000000 +0000 +++ ocaml-http-0.1.6/cookie_lexer.ml 1970-01-01 00:00:00.000000000 +0000 @@ -1,259 +0,0 @@ -# 22 "cookie_lexer.mll" - - let quoted_RE = Pcre.regexp "\\\\\"" - type cookie_token = - [ `SEP (* cookie separator (i.e. ";") *) - | `ASSIGNMENT of string * string (* assignment x=y *) - | `EOF (* end of file *) - ] - -# 11 "cookie_lexer.ml" -let __ocaml_lex_tables = { - Lexing.lex_base = - "\000\000\252\255\253\255\062\000\255\255\128\000"; - Lexing.lex_backtrk = - "\255\255\255\255\255\255\255\255\255\255\001\000"; - Lexing.lex_default = - "\003\000\000\000\000\000\003\000\000\000\005\000"; - Lexing.lex_trans = - "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\004\000\004\000\255\255\255\255\004\000\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \004\000\000\000\000\000\000\000\000\000\000\000\000\000\255\255\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\002\000\000\000\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\000\000\ - \000\000\000\000\000\000\000\000\000\000\255\255\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\255\255\000\000\005\000\000\000\000\000\000\000\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\255\255\000\000\255\255\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\255\ - \001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\255\255\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \255\255"; - Lexing.lex_check = - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\255\255\255\255\255\255\255\255\255\255\255\255\000\000\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\000\000\255\255\000\000\003\000\003\000\ - \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\ - \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\ - \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\ - \003\000\003\000\003\000\003\000\003\000\003\000\003\000\255\255\ - \255\255\255\255\255\255\255\255\255\255\003\000\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\003\000\255\255\003\000\255\255\255\255\255\255\000\000\ - \005\000\005\000\005\000\005\000\005\000\005\000\005\000\005\000\ - \005\000\005\000\005\000\005\000\005\000\005\000\005\000\005\000\ - \005\000\005\000\005\000\005\000\005\000\005\000\005\000\005\000\ - \005\000\005\000\005\000\005\000\005\000\005\000\005\000\005\000\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\005\000\255\255\003\000\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\005\000\ - \000\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\003\000\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \005\000"; - Lexing.lex_base_code = - "\000\000\000\000\000\000\062\000\000\000\000\000"; - Lexing.lex_backtrk_code = - "\000\000\000\000\000\000\000\000\000\000\004\000"; - Lexing.lex_default_code = - "\001\000\000\000\000\000\001\000\000\000\000\000"; - Lexing.lex_trans_code = - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000"; - Lexing.lex_check_code = - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ - \000\000\255\255\255\255\255\255\255\255\255\255\255\255\000\000\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\000\000\255\255\000\000\003\000\003\000\ - \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\ - \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\ - \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\ - \003\000\003\000\003\000\003\000\003\000\003\000\003\000\255\255\ - \255\255\255\255\255\255\255\255\255\255\003\000\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\003\000\255\255\003\000\255\255\255\255\255\255\000\000\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\003\000\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \000\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ - \255\255\255\255\255\255\255\255\255\255\255\255\003\000"; - Lexing.lex_code = - "\255\001\255\255\000\001\255"; -} - -let rec token lexbuf = - lexbuf.Lexing.lex_mem <- Array.create 2 (-1) ; __ocaml_lex_token_rec lexbuf 0 -and __ocaml_lex_token_rec lexbuf __ocaml_lex_state = - match Lexing.new_engine __ocaml_lex_tables __ocaml_lex_state lexbuf with - | 0 -> -# 32 "cookie_lexer.mll" - ( token lexbuf ) -# 218 "cookie_lexer.ml" - - | 1 -> -let -# 33 "cookie_lexer.mll" - name -# 224 "cookie_lexer.ml" -= Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_mem.(0) -and -# 34 "cookie_lexer.mll" - value -# 229 "cookie_lexer.ml" -= Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_mem.(0) + 1) lexbuf.Lexing.lex_curr_pos in -# 35 "cookie_lexer.mll" - ( - let val_len = String.length value - in - let value = - if val_len>2 && (value.[0]='"' && value.[val_len-1]='"') then - let without_quotes = String.sub value 1 (val_len - 2) - in - Pcre.replace ~rex:quoted_RE ~templ:"\"" without_quotes - else - value - in - `ASSIGNMENT (name,value) - ) -# 245 "cookie_lexer.ml" - - | 2 -> -# 48 "cookie_lexer.mll" - ( `SEP ) -# 250 "cookie_lexer.ml" - - | 3 -> -# 49 "cookie_lexer.mll" - ( `EOF ) -# 255 "cookie_lexer.ml" - - | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_token_rec lexbuf __ocaml_lex_state - -;; - diff -Nru ocaml-http-0.1.5/debian/changelog ocaml-http-0.1.6/debian/changelog --- ocaml-http-0.1.5/debian/changelog 2020-02-21 07:30:19.000000000 +0000 +++ ocaml-http-0.1.6/debian/changelog 2020-08-23 18:14:09.000000000 +0000 @@ -1,8 +1,13 @@ -ocaml-http (0.1.5-2build1) focal; urgency=medium +ocaml-http (0.1.6-1) unstable; urgency=medium - * No-change rebuild against ocaml-nox-4.08.1 + * Team upload + * New upstream release + * Update Homepage and debian/watch + * Bump debhelper compat level to 13 and stop using cdbs + * Bump Standards-Version to 4.5.0 + * Add Rules-Requires-Root: no - -- Steve Langasek Fri, 21 Feb 2020 07:30:19 +0000 + -- Stéphane Glondu Sun, 23 Aug 2020 20:14:09 +0200 ocaml-http (0.1.5-2) unstable; urgency=medium diff -Nru ocaml-http-0.1.5/debian/compat ocaml-http-0.1.6/debian/compat --- ocaml-http-0.1.5/debian/compat 2019-09-05 11:54:20.000000000 +0000 +++ ocaml-http-0.1.6/debian/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -8 diff -Nru ocaml-http-0.1.5/debian/control ocaml-http-0.1.6/debian/control --- ocaml-http-0.1.5/debian/control 2020-02-21 07:30:19.000000000 +0000 +++ ocaml-http-0.1.6/debian/control 2020-08-23 18:14:09.000000000 +0000 @@ -1,21 +1,20 @@ Source: ocaml-http Section: ocaml Priority: optional -Maintainer: Ubuntu Developers -XSBC-Original-Maintainer: Debian OCaml Maintainers +Maintainer: Debian OCaml Maintainers Build-Depends: - debhelper (>= 8), - cdbs, - dh-ocaml (>= 0.9.6~), - ocaml-nox (>= 3.11.1-3~), + debhelper-compat (= 13), + dh-ocaml, + ocaml-nox, camlp4, ocaml-findlib, libpcre-ocaml-dev, - libocamlnet-ocaml-dev (>= 2.2.9-6) -Standards-Version: 3.9.2 + libocamlnet-ocaml-dev +Standards-Version: 4.5.0 +Rules-Requires-Root: no Vcs-Git: https://salsa.debian.org/ocaml-team/ocaml-http.git Vcs-Browser: https://salsa.debian.org/ocaml-team/ocaml-http -Homepage: http://ocaml-http.forge.ocamlcore.org/ +Homepage: https://github.com/sacerdot/ocaml-http Package: libhttp-ocaml-dev Architecture: any diff -Nru ocaml-http-0.1.5/debian/patches/0001-Fix-compilation-with-OCaml-4.08.0.patch ocaml-http-0.1.6/debian/patches/0001-Fix-compilation-with-OCaml-4.08.0.patch --- ocaml-http-0.1.5/debian/patches/0001-Fix-compilation-with-OCaml-4.08.0.patch 2019-09-05 11:54:20.000000000 +0000 +++ ocaml-http-0.1.6/debian/patches/0001-Fix-compilation-with-OCaml-4.08.0.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,85 +0,0 @@ -From: Stephane Glondu -Date: Thu, 5 Sep 2019 13:52:20 +0200 -Subject: Fix compilation with OCaml 4.08.0 - ---- - http_daemon.ml | 2 +- - http_misc.ml | 6 +++--- - http_user_agent.ml | 4 ++-- - http_user_agent.mli | 2 +- - 4 files changed, 7 insertions(+), 7 deletions(-) - -diff --git a/http_daemon.ml b/http_daemon.ml -index 0eb4ba5..6a4bfed 100644 ---- a/http_daemon.ml -+++ b/http_daemon.ml -@@ -142,7 +142,7 @@ let respond_unauthorized ?version ?(realm = server_string) outchan = - - let send_file ~src outchan = - let buflen = 1024 in -- let buf = String.make buflen ' ' in -+ let buf = Bytes.make buflen ' ' in - - let (file, cleanup) = - match src with -diff --git a/http_misc.ml b/http_misc.ml -index daa81f3..91c4139 100644 ---- a/http_misc.ml -+++ b/http_misc.ml -@@ -119,19 +119,19 @@ let sockname_of_in_channel inchan = - - let buf_of_inchan ?limit ic = - let buf = Buffer.create 10240 in -- let tmp = String.make 1024 '\000' in -+ let tmp = Bytes.make 1024 '\000' in - let rec buf_of_inchan' limit = - (match limit with - | None -> - let bytes = input ic tmp 0 1024 in - if bytes > 0 then begin -- Buffer.add_substring buf tmp 0 bytes; -+ Buffer.add_subbytes buf tmp 0 bytes; - buf_of_inchan' None - end - | Some lim -> (* TODO what about using a single really_input call? *) - let bytes = input ic tmp 0 (min lim 1024) in - if bytes > 0 then begin -- Buffer.add_substring buf tmp 0 bytes; -+ Buffer.add_subbytes buf tmp 0 bytes; - buf_of_inchan' (Some (lim - bytes)) - end) - in -diff --git a/http_user_agent.ml b/http_user_agent.ml -index f5317d6..e59730d 100644 ---- a/http_user_agent.ml -+++ b/http_user_agent.ml -@@ -87,7 +87,7 @@ let get_iter ?(head_callback = fun _ _ -> ()) callback url = - | bytes when bytes = tcp_bufsiz -> (* buffer full, no need to slice it *) - callback buf - | bytes when bytes < tcp_bufsiz -> (* buffer not full, slice it *) -- callback (String.sub buf 0 bytes) -+ callback (Bytes.sub buf 0 bytes) - | _ -> (* ( bytes < 0 ) || ( bytes > tcp_bufsiz ) *) - assert false - done -@@ -96,6 +96,6 @@ let get_iter ?(head_callback = fun _ _ -> ()) callback url = - - let get ?head_callback url = - let buf = Buffer.create 10240 in -- get_iter ?head_callback (Buffer.add_string buf) url; -+ get_iter ?head_callback (Buffer.add_bytes buf) url; - Buffer.contents buf - -diff --git a/http_user_agent.mli b/http_user_agent.mli -index 79f2d69..09e6d8a 100644 ---- a/http_user_agent.mli -+++ b/http_user_agent.mli -@@ -43,7 +43,7 @@ val get: - * returning it as a string *) - val get_iter: - ?head_callback:(status -> (string * string) list -> unit) -> -- (string -> unit) -> string -> -+ (bytes -> unit) -> string -> - unit - - (** @param url an HTTP url diff -Nru ocaml-http-0.1.5/debian/patches/series ocaml-http-0.1.6/debian/patches/series --- ocaml-http-0.1.5/debian/patches/series 2019-09-05 11:54:20.000000000 +0000 +++ ocaml-http-0.1.6/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -0001-Fix-compilation-with-OCaml-4.08.0.patch diff -Nru ocaml-http-0.1.5/debian/rules ocaml-http-0.1.6/debian/rules --- ocaml-http-0.1.5/debian/rules 2019-09-05 11:54:20.000000000 +0000 +++ ocaml-http-0.1.6/debian/rules 2020-08-23 18:14:09.000000000 +0000 @@ -1,12 +1,18 @@ #!/usr/bin/make -f -include /usr/share/cdbs/1/class/makefile.mk -include /usr/share/cdbs/1/rules/debhelper.mk -include /usr/share/cdbs/1/rules/ocaml.mk + +include /usr/share/ocaml/ocamlvars.mk PKGNAME = libhttp-ocaml-dev -OCAML_OCAMLDOC_PACKAGES = $(OCAML_LIBDEV_PACKAGES) DEB_MAKE_BUILD_TARGET = all ifeq ($(OCAML_HAVE_OCAMLOPT),yes) DEB_MAKE_BUILD_TARGET += opt endif -DEB_MAKE_INSTALL_TARGET = install DESTDIR=$(CURDIR)/debian/$(PKGNAME)$(OCAML_STDLIB_DIR) + +%: + dh $@ --with ocaml + +override_dh_auto_build: + $(MAKE) $(DEB_MAKE_BUILD_TARGET) + +override_dh_auto_install: + $(MAKE) install DESTDIR=$(CURDIR)/debian/$(PKGNAME)$(OCAML_STDLIB_DIR) diff -Nru ocaml-http-0.1.5/debian/watch ocaml-http-0.1.6/debian/watch --- ocaml-http-0.1.5/debian/watch 2019-09-05 11:54:20.000000000 +0000 +++ ocaml-http-0.1.6/debian/watch 2020-08-23 18:14:09.000000000 +0000 @@ -1,5 +1,2 @@ version=3 -http://forge.ocamlcore.org/frs/?group_id=90 .*/ocaml-http-(.*)\.tar\.gz -# Upstream git repository: -# http://forge.ocamlcore.org/anonscm/git/ocaml-http/ocaml-http.git -# http://forge.ocamlcore.org/plugins/scmgit/cgi-bin/gitweb.cgi?p=ocaml-http/ocaml-http.git +https://github.com/sacerdot/ocaml-http/releases .*/archive/v?([0-9.]+)\.tar\.gz diff -Nru ocaml-http-0.1.5/doc/dot/ocaml-http.dot ocaml-http-0.1.6/doc/dot/ocaml-http.dot --- ocaml-http-0.1.5/doc/dot/ocaml-http.dot 2010-12-31 02:33:01.000000000 +0000 +++ ocaml-http-0.1.6/doc/dot/ocaml-http.dot 1970-01-01 00:00:00.000000000 +0000 @@ -1,62 +0,0 @@ -digraph G { - size="10,7.5"; - ratio="fill"; - rotate=90; - fontsize="12pt"; - rankdir = TB ; -"Cookie_lexer" [style=filled, color=darkturquoise]; -"Http_common" [style=filled, color=darkturquoise]; -"Http_common" -> "Http_constants"; -"Http_common" -> "Http_types"; -"Http_constants" [style=filled, color=darkturquoise]; -"Http_constants" -> "Http_types"; -"Http_daemon" [style=filled, color=darkturquoise]; -"Http_daemon" -> "Http_common"; -"Http_daemon" -> "Http_constants"; -"Http_daemon" -> "Http_misc"; -"Http_daemon" -> "Http_parser"; -"Http_daemon" -> "Http_parser_sanity"; -"Http_daemon" -> "Http_request"; -"Http_daemon" -> "Http_tcp_server"; -"Http_daemon" -> "Http_types"; -"Http_message" [style=filled, color=darkturquoise]; -"Http_message" -> "Http_common"; -"Http_message" -> "Http_constants"; -"Http_message" -> "Http_misc"; -"Http_message" -> "Http_parser_sanity"; -"Http_message" -> "Http_types"; -"Http_misc" [style=filled, color=darkturquoise]; -"Http_misc" -> "Http_types"; -"Http_parser" [style=filled, color=darkturquoise]; -"Http_parser" -> "Cookie_lexer"; -"Http_parser" -> "Http_common"; -"Http_parser" -> "Http_constants"; -"Http_parser" -> "Http_parser_sanity"; -"Http_parser" -> "Http_types"; -"Http_parser_sanity" [style=filled, color=darkturquoise]; -"Http_parser_sanity" -> "Http_constants"; -"Http_parser_sanity" -> "Http_types"; -"Http_request" [style=filled, color=darkturquoise]; -"Http_request" -> "Http_common"; -"Http_request" -> "Http_message"; -"Http_request" -> "Http_misc"; -"Http_request" -> "Http_parser"; -"Http_request" -> "Http_types"; -"Http_response" [style=filled, color=darkturquoise]; -"Http_response" -> "Http_common"; -"Http_response" -> "Http_constants"; -"Http_response" -> "Http_daemon"; -"Http_response" -> "Http_message"; -"Http_response" -> "Http_misc"; -"Http_response" -> "Http_types"; -"Http_tcp_server" [style=filled, color=darkturquoise]; -"Http_tcp_server" -> "Http_threaded_tcp_server"; -"Http_tcp_server" -> "Http_types"; -"Http_types" [style=filled, color=darkturquoise]; -"Http_user_agent" [style=filled, color=darkturquoise]; -"Http_user_agent" -> "Http_common"; -"Http_user_agent" -> "Http_misc"; -"Http_user_agent" -> "Http_parser"; -"Http_user_agent" -> "Http_types"; -"Http_threaded_tcp_server" [style=filled, color=darkturquoise]; -} diff -Nru ocaml-http-0.1.5/doc/dot/ocaml-http.ps ocaml-http-0.1.6/doc/dot/ocaml-http.ps --- ocaml-http-0.1.5/doc/dot/ocaml-http.ps 2010-12-31 02:33:01.000000000 +0000 +++ ocaml-http-0.1.6/doc/dot/ocaml-http.ps 1970-01-01 00:00:00.000000000 +0000 @@ -1,1218 +0,0 @@ -%!PS-Adobe-3.0 -%%Creator: graphviz version 2.26.3 (20100126.1600) -%%Title: G -%%Pages: (atend) -%%BoundingBox: (atend) -%%EndComments -save -%%BeginProlog -/DotDict 200 dict def -DotDict begin - -/setupLatin1 { -mark -/EncodingVector 256 array def - EncodingVector 0 - -ISOLatin1Encoding 0 255 getinterval putinterval -EncodingVector 45 /hyphen put - -% Set up ISO Latin 1 character encoding -/starnetISO { - dup dup findfont dup length dict begin - { 1 index /FID ne { def }{ pop pop } ifelse - } forall - /Encoding EncodingVector def - currentdict end definefont -} def -/Times-Roman starnetISO def -/Times-Italic starnetISO def -/Times-Bold starnetISO def -/Times-BoldItalic starnetISO def -/Helvetica starnetISO def -/Helvetica-Oblique starnetISO def -/Helvetica-Bold starnetISO def -/Helvetica-BoldOblique starnetISO def -/Courier starnetISO def -/Courier-Oblique starnetISO def -/Courier-Bold starnetISO def -/Courier-BoldOblique starnetISO def -cleartomark -} bind def - -%%BeginResource: procset graphviz 0 0 -/coord-font-family /Times-Roman def -/default-font-family /Times-Roman def -/coordfont coord-font-family findfont 8 scalefont def - -/InvScaleFactor 1.0 def -/set_scale { - dup 1 exch div /InvScaleFactor exch def - scale -} bind def - -% styles -/solid { [] 0 setdash } bind def -/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def -/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def -/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def -/bold { 2 setlinewidth } bind def -/filled { } bind def -/unfilled { } bind def -/rounded { } bind def -/diagonals { } bind def - -% hooks for setting color -/nodecolor { sethsbcolor } bind def -/edgecolor { sethsbcolor } bind def -/graphcolor { sethsbcolor } bind def -/nopcolor {pop pop pop} bind def - -/beginpage { % i j npages - /npages exch def - /j exch def - /i exch def - /str 10 string def - npages 1 gt { - gsave - coordfont setfont - 0 0 moveto - (\() show i str cvs show (,) show j str cvs show (\)) show - grestore - } if -} bind def - -/set_font { - findfont exch - scalefont setfont -} def - -% draw text fitted to its expected width -/alignedtext { % width text - /text exch def - /width exch def - gsave - width 0 gt { - [] 0 setdash - text stringwidth pop width exch sub text length div 0 text ashow - } if - grestore -} def - -/boxprim { % xcorner ycorner xsize ysize - 4 2 roll - moveto - 2 copy - exch 0 rlineto - 0 exch rlineto - pop neg 0 rlineto - closepath -} bind def - -/ellipse_path { - /ry exch def - /rx exch def - /y exch def - /x exch def - matrix currentmatrix - newpath - x y translate - rx ry scale - 0 0 1 0 360 arc - setmatrix -} bind def - -/endpage { showpage } bind def -/showpage { } def - -/layercolorseq - [ % layer color sequence - darkest to lightest - [0 0 0] - [.2 .8 .8] - [.4 .8 .8] - [.6 .8 .8] - [.8 .8 .8] - ] -def - -/layerlen layercolorseq length def - -/setlayer {/maxlayer exch def /curlayer exch def - layercolorseq curlayer 1 sub layerlen mod get - aload pop sethsbcolor - /nodecolor {nopcolor} def - /edgecolor {nopcolor} def - /graphcolor {nopcolor} def -} bind def - -/onlayer { curlayer ne {invis} if } def - -/onlayers { - /myupper exch def - /mylower exch def - curlayer mylower lt - curlayer myupper gt - or - {invis} if -} def - -/curlayer 0 def - -%%EndResource -%%EndProlog -%%BeginSetup -14 default-font-family set_font -1 setmiterlimit -% /arrowlength 10 def -% /arrowwidth 5 def - -% make sure pdfmark is harmless for PS-interpreters other than Distiller -/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse -% make '<<' and '>>' safe on PS Level 1 devices -/languagelevel where {pop languagelevel}{1} ifelse -2 lt { - userdict (<<) cvn ([) cvn load put - userdict (>>) cvn ([) cvn load put -} if - -%%EndSetup -setupLatin1 -%%Page: 1 1 -%%PageBoundingBox: 36 36 500 756 -%%PageOrientation: Landscape -0 0 1 beginpage -gsave -36 36 464 720 boxprim clip newpath -0.550502 0.550502 set_scale 90 rotate 69.3948 -904.895 translate -% Cookie_lexer -gsave -0.50196 1 0.81961 nodecolor -810.9 289 73.04 18.38 ellipse_path fill -1 setlinewidth -filled -0.50196 1 0.81961 nodecolor -810.9 289 73.04 18.38 ellipse_path stroke -0 0 0 nodecolor -14 /Times-Roman set_font -766.9 285.4 moveto 88 (Cookie_lexer) alignedtext -grestore -% Http_common -gsave -0.50196 1 0.81961 nodecolor -375.9 289 79.9 18.38 ellipse_path fill -1 setlinewidth -filled -0.50196 1 0.81961 nodecolor -375.9 289 79.9 18.38 ellipse_path stroke -0 0 0 nodecolor -14 /Times-Roman set_font -327.4 285.4 moveto 97 (Http_common) alignedtext -grestore -% Http_constants -gsave -0.50196 1 0.81961 nodecolor -634.9 161 85.77 18.38 ellipse_path fill -1 setlinewidth -filled -0.50196 1 0.81961 nodecolor -634.9 161 85.77 18.38 ellipse_path stroke -0 0 0 nodecolor -14 /Times-Roman set_font -581.9 157.4 moveto 106 (Http_constants) alignedtext -grestore -% Http_common->Http_constants -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 410.02 272.13 moveto -456.58 249.13 540.03 207.89 591.13 182.63 curveto -stroke -0 0 0 edgecolor -newpath 592.87 185.68 moveto -600.28 178.11 lineto -589.77 179.4 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 592.87 185.68 moveto -600.28 178.11 lineto -589.77 179.4 lineto -closepath stroke -grestore -% Http_types -gsave -0.50196 1 0.81961 nodecolor -520.9 33 65.05 18.38 ellipse_path fill -1 setlinewidth -filled -0.50196 1 0.81961 nodecolor -520.9 33 65.05 18.38 ellipse_path stroke -0 0 0 nodecolor -14 /Times-Roman set_font -482.9 29.4 moveto 76 (Http_types) alignedtext -grestore -% Http_common->Http_types -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 386.32 270.59 moveto -411.5 226.14 475.72 112.76 505.41 60.34 curveto -stroke -0 0 0 edgecolor -newpath 508.48 62.01 moveto -510.37 51.59 lineto -502.39 58.56 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 508.48 62.01 moveto -510.37 51.59 lineto -502.39 58.56 lineto -closepath stroke -grestore -% Http_constants->Http_types -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 618.56 142.66 moveto -599.01 120.7 566.13 83.79 543.98 58.92 curveto -stroke -0 0 0 edgecolor -newpath 546.46 56.45 moveto -537.2 51.31 lineto -541.24 61.1 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 546.46 56.45 moveto -537.2 51.31 lineto -541.24 61.1 lineto -closepath stroke -grestore -% Http_daemon -gsave -0.50196 1 0.81961 nodecolor -574.9 674 77.78 18.38 ellipse_path fill -1 setlinewidth -filled -0.50196 1 0.81961 nodecolor -574.9 674 77.78 18.38 ellipse_path stroke -0 0 0 nodecolor -14 /Times-Roman set_font -527.9 670.4 moveto 94 (Http_daemon) alignedtext -grestore -% Http_daemon->Http_common -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 557.17 655.9 moveto -538.11 635.45 508.22 600.41 490.9 565 curveto -457.4 496.54 478.73 468.7 447.9 399 curveto -434.36 368.41 412.73 336.8 396.71 315.35 curveto -stroke -0 0 0 edgecolor -newpath 399.49 313.23 moveto -390.65 307.38 lineto -393.91 317.46 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 399.49 313.23 moveto -390.65 307.38 lineto -393.91 317.46 lineto -closepath stroke -grestore -% Http_daemon->Http_constants -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 600.15 656.35 moveto -665.15 609.11 837 472.14 892.9 308 curveto -920.51 226.91 803.57 189.15 718.1 172.64 curveto -stroke -0 0 0 edgecolor -newpath 718.58 169.17 moveto -708.11 170.78 lineto -717.3 176.05 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 718.58 169.17 moveto -708.11 170.78 lineto -717.3 176.05 lineto -closepath stroke -grestore -% Http_daemon->Http_types -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 500.26 668.4 moveto -375.28 657.36 132 628.13 77.9 565 curveto --45.36 421.17 -17.72 260.69 129.9 142 curveto -180.09 101.65 357.93 63.35 455.56 44.75 curveto -stroke -0 0 0 edgecolor -newpath 456.43 48.14 moveto -465.61 42.85 lineto -455.13 41.26 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 456.43 48.14 moveto -465.61 42.85 lineto -455.13 41.26 lineto -closepath stroke -grestore -% Http_misc -gsave -0.50196 1 0.81961 nodecolor -141.9 289 60.1 18.38 ellipse_path fill -1 setlinewidth -filled -0.50196 1 0.81961 nodecolor -141.9 289 60.1 18.38 ellipse_path stroke -0 0 0 nodecolor -14 /Times-Roman set_font -107.4 285.4 moveto 69 (Http_misc) alignedtext -grestore -% Http_daemon->Http_misc -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 500.87 667.97 moveto -380.32 656.46 150.07 626.77 100.9 565 curveto -42.12 491.17 96.54 369.89 125.91 316.12 curveto -stroke -0 0 0 edgecolor -newpath 129.08 317.63 moveto -130.9 307.19 lineto -122.97 314.21 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 129.08 317.63 moveto -130.9 307.19 lineto -122.97 314.21 lineto -closepath stroke -grestore -% Http_parser -gsave -0.50196 1 0.81961 nodecolor -615.9 418 68.8 18.38 ellipse_path fill -1 setlinewidth -filled -0.50196 1 0.81961 nodecolor -615.9 418 68.8 18.38 ellipse_path stroke -0 0 0 nodecolor -14 /Times-Roman set_font -574.9 414.4 moveto 82 (Http_parser) alignedtext -grestore -% Http_daemon->Http_parser -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 595.13 655.89 moveto -615.72 635.97 646.34 601.86 658.9 565 curveto -673.04 523.48 651.11 474.44 633.72 444.81 curveto -stroke -0 0 0 edgecolor -newpath 636.7 442.98 moveto -628.51 436.26 lineto -630.72 446.63 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 636.7 442.98 moveto -628.51 436.26 lineto -630.72 446.63 lineto -closepath stroke -grestore -% Http_parser_sanity -gsave -0.50196 1 0.81961 nodecolor -577.9 289 104.15 18.38 ellipse_path fill -1 setlinewidth -filled -0.50196 1 0.81961 nodecolor -577.9 289 104.15 18.38 ellipse_path stroke -0 0 0 nodecolor -14 /Times-Roman set_font -511.9 285.4 moveto 132 (Http_parser_sanity) alignedtext -grestore -% Http_daemon->Http_parser_sanity -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 597.77 656.26 moveto -621.27 636.64 656.88 602.79 674.9 565 curveto -699.65 513.09 689.66 494.36 693.9 437 curveto -695.14 420.16 700.57 414.52 693.9 399 curveto -678.12 362.3 643.42 332.1 616.06 312.69 curveto -stroke -0 0 0 edgecolor -newpath 617.69 309.56 moveto -607.47 306.77 lineto -613.72 315.33 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 617.69 309.56 moveto -607.47 306.77 lineto -613.72 315.33 lineto -closepath stroke -grestore -% Http_request -gsave -0.50196 1 0.81961 nodecolor -574.9 546 75.16 18.38 ellipse_path fill -1 setlinewidth -filled -0.50196 1 0.81961 nodecolor -574.9 546 75.16 18.38 ellipse_path stroke -0 0 0 nodecolor -14 /Times-Roman set_font -529.4 542.4 moveto 91 (Http_request) alignedtext -grestore -% Http_daemon->Http_request -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 574.9 655.39 moveto -574.9 634.25 574.9 599.5 574.9 574.84 curveto -stroke -0 0 0 edgecolor -newpath 578.4 574.63 moveto -574.9 564.63 lineto -571.4 574.63 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 578.4 574.63 moveto -574.9 564.63 lineto -571.4 574.63 lineto -closepath stroke -grestore -% Http_tcp_server -gsave -0.50196 1 0.81961 nodecolor -1056.9 546 89.8 18.38 ellipse_path fill -1 setlinewidth -filled -0.50196 1 0.81961 nodecolor -1056.9 546 89.8 18.38 ellipse_path stroke -0 0 0 nodecolor -14 /Times-Roman set_font -1001.4 542.4 moveto 111 (Http_tcp_server) alignedtext -grestore -% Http_daemon->Http_tcp_server -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 626.94 660.18 moveto -715.45 636.67 895.11 588.96 991.8 563.29 curveto -stroke -0 0 0 edgecolor -newpath 992.98 566.59 moveto -1001.75 560.64 lineto -991.19 559.83 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 992.98 566.59 moveto -1001.75 560.64 lineto -991.19 559.83 lineto -closepath stroke -grestore -% Http_misc->Http_types -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 146.4 270.43 moveto -154.83 239.51 175.86 177.38 215.9 142 curveto -282.92 82.76 384.43 55.05 451.67 42.57 curveto -stroke -0 0 0 edgecolor -newpath 452.52 45.97 moveto -461.75 40.76 lineto -451.29 39.08 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 452.52 45.97 moveto -461.75 40.76 lineto -451.29 39.08 lineto -closepath stroke -grestore -% Http_parser->Cookie_lexer -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 642.19 400.6 moveto -676.75 377.75 737.53 337.54 775.93 312.13 curveto -stroke -0 0 0 edgecolor -newpath 778.29 314.76 moveto -784.7 306.33 lineto -774.43 308.93 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 778.29 314.76 moveto -784.7 306.33 lineto -774.43 308.93 lineto -closepath stroke -grestore -% Http_parser->Http_common -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 585.01 401.4 moveto -542.08 378.32 464.27 336.5 416.63 310.89 curveto -stroke -0 0 0 edgecolor -newpath 418.27 307.8 moveto -407.81 306.15 lineto -414.96 313.97 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 418.27 307.8 moveto -407.81 306.15 lineto -414.96 313.97 lineto -closepath stroke -grestore -% Http_parser->Http_constants -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 633.33 400 moveto -651.75 379.61 679.65 344.44 690.9 308 curveto -704.16 265.01 677.16 216.47 656.23 187.33 curveto -stroke -0 0 0 edgecolor -newpath 659.03 185.23 moveto -650.25 179.3 lineto -653.41 189.41 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 659.03 185.23 moveto -650.25 179.3 lineto -653.41 189.41 lineto -closepath stroke -grestore -% Http_parser->Http_types -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 679.71 410.87 moveto -774.47 397.21 936.76 360.23 892.9 270 curveto -831.33 143.38 666.32 76.39 578.21 48.69 curveto -stroke -0 0 0 edgecolor -newpath 579.22 45.34 moveto -568.63 45.74 lineto -577.16 52.03 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 579.22 45.34 moveto -568.63 45.74 lineto -577.16 52.03 lineto -closepath stroke -grestore -% Http_parser->Http_parser_sanity -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 610.45 399.52 moveto -604.14 378.09 593.66 342.51 586.3 317.53 curveto -stroke -0 0 0 edgecolor -newpath 589.64 316.47 moveto -583.45 307.87 lineto -582.92 318.45 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 589.64 316.47 moveto -583.45 307.87 lineto -582.92 318.45 lineto -closepath stroke -grestore -% Http_parser_sanity->Http_constants -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 586.18 270.39 moveto -595.72 248.96 611.49 213.56 622.49 188.85 curveto -stroke -0 0 0 edgecolor -newpath 625.73 190.19 moveto -626.6 179.63 lineto -619.33 187.35 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 625.73 190.19 moveto -626.6 179.63 lineto -619.33 187.35 lineto -closepath stroke -grestore -% Http_parser_sanity->Http_types -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 570.1 270.45 moveto -561.42 249.03 547.59 212.57 539.9 180 curveto -530.36 139.63 525.3 91.81 522.86 61.94 curveto -stroke -0 0 0 edgecolor -newpath 526.34 61.49 moveto -522.08 51.79 lineto -519.36 62.03 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 526.34 61.49 moveto -522.08 51.79 lineto -519.36 62.03 lineto -closepath stroke -grestore -% Http_request->Http_common -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 565.53 527.44 moveto -550.59 498.62 519.58 441.97 485.9 399 curveto -461.04 367.3 427.82 335.2 404.4 313.93 curveto -stroke -0 0 0 edgecolor -newpath 406.64 311.23 moveto -396.87 307.15 lineto -401.96 316.44 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 406.64 311.23 moveto -396.87 307.15 lineto -401.96 316.44 lineto -closepath stroke -grestore -% Http_request->Http_types -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 624.72 532.1 moveto -729 499.96 956.9 412.2 909.9 270 curveto -887.66 202.73 871.56 184.52 814.9 142 curveto -745.35 89.82 648.16 60.33 584.88 45.52 curveto -stroke -0 0 0 edgecolor -newpath 585.55 42.08 moveto -575.02 43.27 lineto -583.99 48.91 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 585.55 42.08 moveto -575.02 43.27 lineto -583.99 48.91 lineto -closepath stroke -grestore -% Http_request->Http_misc -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 507.36 537.94 moveto -434.27 526.32 317.39 498.96 236.9 437 curveto -195.79 405.35 167.4 350.51 152.95 317.21 curveto -stroke -0 0 0 edgecolor -newpath 156.02 315.48 moveto -148.92 307.62 lineto -149.57 318.19 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 156.02 315.48 moveto -148.92 307.62 lineto -149.57 318.19 lineto -closepath stroke -grestore -% Http_request->Http_parser -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 580.86 527.39 moveto -587.69 506.06 598.96 470.87 606.87 446.18 curveto -stroke -0 0 0 edgecolor -newpath 610.21 447.23 moveto -609.93 436.63 lineto -603.54 445.09 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 610.21 447.23 moveto -609.93 436.63 lineto -603.54 445.09 lineto -closepath stroke -grestore -% Http_message -gsave -0.50196 1 0.81961 nodecolor -325.9 418 80.11 18.38 ellipse_path fill -1 setlinewidth -filled -0.50196 1 0.81961 nodecolor -325.9 418 80.11 18.38 ellipse_path stroke -0 0 0 nodecolor -14 /Times-Roman set_font -276.9 414.4 moveto 98 (Http_message) alignedtext -grestore -% Http_request->Http_message -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 542.34 529.27 moveto -497.64 506.28 417.19 464.93 367.96 439.62 curveto -stroke -0 0 0 edgecolor -newpath 369.35 436.4 moveto -358.85 434.94 lineto -366.15 442.63 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 369.35 436.4 moveto -358.85 434.94 lineto -366.15 442.63 lineto -closepath stroke -grestore -% Http_tcp_server->Http_types -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 1097.9 529.37 moveto -1151.18 505.07 1234.17 456.43 1204.9 399 curveto -1082.89 159.66 735.77 71.1 588.39 43.65 curveto -stroke -0 0 0 edgecolor -newpath 588.6 40.13 moveto -578.13 41.78 lineto -587.34 47.01 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 588.6 40.13 moveto -578.13 41.78 lineto -587.34 47.01 lineto -closepath stroke -grestore -% Http_threaded_tcp_server -gsave -0.50196 1 0.81961 nodecolor -1056.9 418 138.8 18.38 ellipse_path fill -1 setlinewidth -filled -0.50196 1 0.81961 nodecolor -1056.9 418 138.8 18.38 ellipse_path stroke -0 0 0 nodecolor -14 /Times-Roman set_font -966.4 414.4 moveto 181 (Http_threaded_tcp_server) alignedtext -grestore -% Http_tcp_server->Http_threaded_tcp_server -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 1056.9 527.39 moveto -1056.9 506.25 1056.9 471.5 1056.9 446.84 curveto -stroke -0 0 0 edgecolor -newpath 1060.4 446.63 moveto -1056.9 436.63 lineto -1053.4 446.63 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 1060.4 446.63 moveto -1056.9 436.63 lineto -1053.4 446.63 lineto -closepath stroke -grestore -% Http_message->Http_common -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 333.06 399.52 moveto -341.41 377.96 355.31 342.11 365 317.1 curveto -stroke -0 0 0 edgecolor -newpath 368.4 318.04 moveto -368.75 307.45 lineto -361.87 315.51 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 368.4 318.04 moveto -368.75 307.45 lineto -361.87 315.51 lineto -closepath stroke -grestore -% Http_message->Http_constants -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 311.84 399.3 moveto -291.12 369.26 257.79 309.62 286.9 270 curveto -319.13 226.13 465.12 192.01 557.47 174.34 curveto -stroke -0 0 0 edgecolor -newpath 558.16 177.77 moveto -567.34 172.47 lineto -556.86 170.89 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 558.16 177.77 moveto -567.34 172.47 lineto -556.86 170.89 lineto -closepath stroke -grestore -% Http_message->Http_types -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 310.05 399.52 moveto -287.85 371.25 252.28 315.75 271.9 270 curveto -315.07 169.31 424.37 91.16 482.75 55 curveto -stroke -0 0 0 edgecolor -newpath 484.61 57.96 moveto -491.32 49.76 lineto -480.97 51.98 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 484.61 57.96 moveto -491.32 49.76 lineto -480.97 51.98 lineto -closepath stroke -grestore -% Http_message->Http_misc -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 300.7 400.33 moveto -267.89 377.34 210.51 337.1 174.44 311.82 curveto -stroke -0 0 0 edgecolor -newpath 176.4 308.92 moveto -166.21 306.04 lineto -172.38 314.65 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 176.4 308.92 moveto -166.21 306.04 lineto -172.38 314.65 lineto -closepath stroke -grestore -% Http_message->Http_parser_sanity -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 358.84 401.14 moveto -403.93 378.05 484.94 336.59 534.8 311.06 curveto -stroke -0 0 0 edgecolor -newpath 536.43 314.16 moveto -543.73 306.49 lineto -533.24 307.93 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 536.43 314.16 moveto -543.73 306.49 lineto -533.24 307.93 lineto -closepath stroke -grestore -% Http_response -gsave -0.50196 1 0.81961 nodecolor -503.9 803 82.02 18.38 ellipse_path fill -1 setlinewidth -filled -0.50196 1 0.81961 nodecolor -503.9 803 82.02 18.38 ellipse_path stroke -0 0 0 nodecolor -14 /Times-Roman set_font -453.9 799.4 moveto 100 (Http_response) alignedtext -grestore -% Http_response->Http_common -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 500.63 784.27 moveto -490.33 726.38 456.79 545.38 414.9 399 curveto -406.77 370.62 395.26 338.92 386.86 316.86 curveto -stroke -0 0 0 edgecolor -newpath 390.09 315.53 moveto -383.23 307.46 lineto -383.56 318.05 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 390.09 315.53 moveto -383.23 307.46 lineto -383.56 318.05 lineto -closepath stroke -grestore -% Http_response->Http_constants -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 579.29 795.69 moveto -712.99 778.85 992.85 725.52 1155.9 565 curveto -1199.3 522.26 1193.82 496.9 1204.9 437 curveto -1232.35 288.47 1048.33 328.1 908.9 270 curveto -831.77 237.86 741.63 202.4 686.4 180.92 curveto -stroke -0 0 0 edgecolor -newpath 687.43 177.56 moveto -676.84 177.2 lineto -684.9 184.09 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 687.43 177.56 moveto -676.84 177.2 lineto -684.9 184.09 lineto -closepath stroke -grestore -% Http_response->Http_types -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 578.42 795.09 moveto -776.3 772.02 1299.9 696.76 1299.9 546 curveto -1299.9 546 1299.9 546 1299.9 289 curveto -1299.9 140.66 783.67 64.19 591.69 40.88 curveto -stroke -0 0 0 edgecolor -newpath 592.04 37.39 moveto -581.7 39.68 lineto -591.21 44.34 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 592.04 37.39 moveto -581.7 39.68 lineto -591.21 44.34 lineto -closepath stroke -grestore -% Http_response->Http_daemon -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 514.07 784.52 moveto -526.04 762.77 546.02 726.47 559.8 701.44 curveto -stroke -0 0 0 edgecolor -newpath 562.99 702.9 moveto -564.74 692.45 lineto -556.85 699.52 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 562.99 702.9 moveto -564.74 692.45 lineto -556.85 699.52 lineto -closepath stroke -grestore -% Http_response->Http_misc -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 445.05 789.99 moveto -348.49 765.14 159.03 700.82 77.9 565 curveto -40.06 501.66 56.2 470.11 75.9 399 curveto -84.57 367.69 104.79 336.34 120.59 315.16 curveto -stroke -0 0 0 edgecolor -newpath 123.52 317.09 moveto -126.82 307.02 lineto -117.96 312.83 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 123.52 317.09 moveto -126.82 307.02 lineto -117.96 312.83 lineto -closepath stroke -grestore -% Http_response->Http_message -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 487.02 784.82 moveto -468.43 763.99 438.7 728.18 419.9 693 curveto -374.72 608.46 344.82 497.94 332.41 446.56 curveto -stroke -0 0 0 edgecolor -newpath 335.74 445.45 moveto -330.03 436.53 lineto -328.93 447.07 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 335.74 445.45 moveto -330.03 436.53 lineto -328.93 447.07 lineto -closepath stroke -grestore -% Http_user_agent -gsave -0.50196 1 0.81961 nodecolor -202.9 546 92.84 18.38 ellipse_path fill -1 setlinewidth -filled -0.50196 1 0.81961 nodecolor -202.9 546 92.84 18.38 ellipse_path stroke -0 0 0 nodecolor -14 /Times-Roman set_font -144.9 542.4 moveto 116 (Http_user_agent) alignedtext -grestore -% Http_user_agent->Http_common -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 203.33 527.32 moveto -204.83 497.85 211.12 439.73 236.9 399 curveto -260.94 361.02 302.8 330.56 334.32 311.42 curveto -stroke -0 0 0 edgecolor -newpath 336.51 314.19 moveto -343.33 306.08 lineto -332.94 308.17 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 336.51 314.19 moveto -343.33 306.08 lineto -332.94 308.17 lineto -closepath stroke -grestore -% Http_user_agent->Http_types -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 183.08 527.75 moveto -138.34 484.24 36.17 370.49 72.9 270 curveto -128.99 116.53 339.44 61 450.79 42.08 curveto -stroke -0 0 0 edgecolor -newpath 451.63 45.49 moveto -460.93 40.41 lineto -450.49 38.58 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 451.63 45.49 moveto -460.93 40.41 lineto -450.49 38.58 lineto -closepath stroke -grestore -% Http_user_agent->Http_misc -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 195.51 527.38 moveto -187.25 505.9 173.96 469.38 165.9 437 curveto -155.76 396.28 148.87 348.16 145.16 318.1 curveto -stroke -0 0 0 edgecolor -newpath 148.6 317.41 moveto -143.94 307.89 lineto -141.65 318.24 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 148.6 317.41 moveto -143.94 307.89 lineto -141.65 318.24 lineto -closepath stroke -grestore -% Http_user_agent->Http_parser -gsave -1 setlinewidth -0 0 0 edgecolor -newpath 253.54 530.3 moveto -331.41 506.17 479.99 460.12 560.58 435.14 curveto -stroke -0 0 0 edgecolor -newpath 562.03 438.36 moveto -570.54 432.06 lineto -559.95 431.67 lineto -closepath fill -1 setlinewidth -solid -0 0 0 edgecolor -newpath 562.03 438.36 moveto -570.54 432.06 lineto -559.95 431.67 lineto -closepath stroke -grestore -endpage -showpage -grestore -%%PageTrailer -%%EndPage: 1 -%%Trailer -%%Pages: 1 -%%BoundingBox: 36 36 500 756 -end -restore -%%EOF diff -Nru ocaml-http-0.1.5/doc/html/Cookie_lexer.html ocaml-http-0.1.6/doc/html/Cookie_lexer.html --- ocaml-http-0.1.5/doc/html/Cookie_lexer.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/Cookie_lexer.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Cookie_lexer - - - -

Module Cookie_lexer

-
-
module Cookie_lexer: sig .. end

-
type cookie_token = [ `ASSIGNMENT of string * string | `EOF | `SEP ] 
- -
val token : Lexing.lexbuf -> cookie_token
\ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/Http_common.html ocaml-http-0.1.6/doc/html/Http_common.html --- ocaml-http-0.1.5/doc/html/Http_common.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/Http_common.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Http_common - - - -

Module Http_common

-
-
module Http_common: sig .. end
Common functionalities shared by other OCaml HTTP modules
-
-
val debug : bool Pervasives.ref
-whether debugging messages are enabled or not, can be changed at runtime
-
-
val debug_print : string -> unit
-print a string on stderr only if debugging is enabled
-
-
val http_version : Http_types.version
-
val server_string : string
-
val string_of_version : Http_types.version -> string
-pretty print an HTTP version
-
-
val version_of_string : string -> Http_types.version
-parse an HTTP version from a string
-Raises Invalid_HTTP_version if given string doesn't represent a supported HTTP - version
-
-
val string_of_method : Http_types.meth -> string
-pretty print an HTTP method
-
-
val method_of_string : string -> Http_types.meth
-parse an HTTP method from a string
-Raises Invalid_HTTP_method if given string doesn't represent a supported - method
-
-
val status_of_code : int -> Http_types.status
-converts an integer HTTP status to the corresponding status value
-Raises Invalid_code if given integer isn't a valid HTTP status code
-
-
val code_of_status : [< Http_types.status ] -> int
-converts an HTTP status to the corresponding integer value
-
-
val is_informational : int -> bool
-Returns true on "informational" status codes, false elsewhere
-
-
val is_success : int -> bool
-Returns true on "success" status codes, false elsewhere
-
-
val is_redirection : int -> bool
-Returns true on "redirection" status codes, false elsewhere
-
-
val is_client_error : int -> bool
-Returns true on "client error" status codes, false elsewhere
-
-
val is_server_error : int -> bool
-Returns true on "server error" status codes, false elsewhere
-
-
val is_error : int -> bool
-Returns true on "client error" and "server error" status code, false - elsewhere
-
- \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/Http_constants.html ocaml-http-0.1.6/doc/html/Http_constants.html --- ocaml-http-0.1.5/doc/html/Http_constants.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/Http_constants.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Http_constants - - - -

Module Http_constants

-
-
module Http_constants: sig .. end
Constants
-
-
val version : Http_types.version
-default HTTP version
-
-
val server_string : string
-string returned as value of "Server:" response header
-
-
val crlf : string
-"\r\n" string
-
-
- -

daemon default values


-
val default_addr : string
val default_auth : (string * Http_types.auth_info) option
val default_auto_close : bool
val default_callback : Http_types.request -> Pervasives.out_channel -> unit
val default_mode : Http_types.daemon_mode
val default_port : int
val default_root_dir : string option
val default_exn_handler : (exn -> Pervasives.out_channel -> unit) option
val default_timeout : int option
\ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/Http_daemon.daemon.html ocaml-http-0.1.6/doc/html/Http_daemon.daemon.html --- ocaml-http-0.1.5/doc/html/Http_daemon.daemon.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/Http_daemon.daemon.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - -Http_daemon.daemon - - - -

Class Http_daemon.daemon

-
-
class daemon : ?addr:string -> ?port:int -> unit -> Http_types.daemon
Object oriented interface to HTTP daemons. -
-
addr : address on which daemon will listen for connections
-
port : port which daemon will bind - see Http_types.daemon
-
- \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/Http_daemon.html ocaml-http-0.1.6/doc/html/Http_daemon.html --- ocaml-http-0.1.5/doc/html/Http_daemon.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/Http_daemon.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,135 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Http_daemon - - - -

Module Http_daemon

-
-
module Http_daemon: sig .. end
Main OCaml HTTP module. - Here you can find two set of functions:
    -
  • functions which let you start an HTTP Daemon (start* functions)
  • -
  • facility functions which let you sent responses back to clients
  • -
-
-
-
val send_CRLF : Pervasives.out_channel -> unit
-send a CRLF sequence on the given output channel, this is mandatory after - the last header was sent and before start sending the response body
-
-
val send_status_line : ?version:Http_types.version ->
code:Http_types.status_code -> Pervasives.out_channel -> unit
-send response status line, version is the http version used in response, - either code or status must be given (not both, not none) which represent the - HTTP response code, outchan is the output channel to which send status line
-
-
val get_basic_headers : unit -> (string * string) list
-returns the basic headers "Date", "Server" and "Connection" used in - send_basic_headers
-
-
val send_basic_headers : ?version:Http_types.version ->
code:Http_types.status_code -> Pervasives.out_channel -> unit
-like send_status_line but additionally will also send "Date", "Server" - and "Connection" standard headers
-
-
val send_header : header:string -> value:string -> Pervasives.out_channel -> unit
-send an HTTP header on outchan
-
-
val send_headers : headers:(string * string) list -> Pervasives.out_channel -> unit
-as send_header, but for a list of pairs <header, value>
-
-
val send_file : src:Http_types.file_source -> Pervasives.out_channel -> unit
-send a file through an out_channel
-
-
val respond : ?body:string ->
?headers:(string * string) list ->
?version:Http_types.version ->
?code:Http_types.status_code -> Pervasives.out_channel -> unit
-high level response function, respond on outchan sending: basic headers - (including Content-Length computed using 'body' argument), headers probided - via 'headers' argument, body given via 'body' argument. Default response - status is 200, default response HTTP version is Http_common.http_version
-
-
val respond_not_found : url:string -> ?version:Http_types.version -> Pervasives.out_channel -> unit
-send a 404 (not found) HTTP response
-
-
val respond_forbidden : url:string -> ?version:Http_types.version -> Pervasives.out_channel -> unit
-send a 403 (forbidden) HTTP response
-
-
val respond_redirect : location:string ->
?body:string ->
?version:Http_types.version ->
?code:Http_types.status_code -> Pervasives.out_channel -> unit
-send a "redirection" class response, optional body argument contains data - that will be displayed in the body of the response, default response status is - 301 (moved permanently), only redirection status are accepted by this - function, other values will raise Failure
-
-
val respond_unauthorized : ?version:Http_types.version ->
?realm:string -> Pervasives.out_channel -> unit
-respond with a 401 (Unauthorized) response asking for authentication - against given realm (default is the server name)
-
-
val respond_error : ?body:string ->
?version:Http_types.version ->
?code:Http_types.status_code -> Pervasives.out_channel -> unit
-send an "error" response (i.e. 400 <= status < 600), optional body - argument as per send_redirect, default response status is 400 (bad request), - only error status are accepted by this function, other values will - raise Failure
-
-
val respond_file : fname:string -> ?version:Http_types.version -> Pervasives.out_channel -> unit
-tipical static pages http daemon behaviour, if requested url is a file, - return it, it it is a directory return a directory listing of it
-
-
val respond_with : Http_types.response -> Pervasives.out_channel -> unit
-respond using a prebuilt Http_types.response object
-
-
val main : Http_types.daemon_spec -> unit
-start an HTTP daemon -
-
-
val default_spec : Http_types.daemon_spec
-default daemon specification:
    -
  • listen on 0.0.0.0, port 80
  • -
  • "always ok" callback (return an empty response, response code 200)
  • -
  • fork a child for each request
  • -
  • do not change to a root directory (i.e. keep cwd)
  • -
  • 300 seconds timeout
  • -
  • ignores exceptions
  • -
  • no authentication required
  • -
  • do not automatically close client connections after callback
  • -
-
-
-
val daemon_spec : ?address:string ->
?auth:(string * Http_types.auth_info) option ->
?auto_close:bool ->
?callback:(Http_types.request -> Pervasives.out_channel -> unit) ->
?mode:Http_types.daemon_mode ->
?port:int ->
?root_dir:string option ->
?exn_handler:(exn -> Pervasives.out_channel -> unit) option ->
?timeout:int option -> unit -> Http_types.daemon_spec
-currified daemon_spec constructor. Each parameter of this function - corresponds to one field of Http_types.daemon_spec and defaults to the - corresponding field of Http_daemon.default_spec
-
-
class daemon : ?addr:string -> ?port:int -> unit -> Http_types.daemon
-Object oriented interface to HTTP daemons. -
-
module Trivial: sig .. end
-Trivial static pages HTTP daemon. -
- \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/Http_daemon.Trivial.html ocaml-http-0.1.6/doc/html/Http_daemon.Trivial.html --- ocaml-http-0.1.5/doc/html/Http_daemon.Trivial.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/Http_daemon.Trivial.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - -Http_daemon.Trivial - - - -

Module Http_daemon.Trivial

-
-
module Trivial: sig .. end
Trivial static pages HTTP daemon. - Daemons created using this module will serve directory indexes and files - found starting from the working directory
-
-
val callback : Http_types.request -> Pervasives.out_channel -> unit
-callback function, exposed if you like to use it as a basis to define - a more powerful daemon
-
-
val main : Http_types.daemon_spec -> unit
-start the "trivial" HTTP daemon -
-
- \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/Http_message.html ocaml-http-0.1.6/doc/html/Http_message.html --- ocaml-http-0.1.5/doc/html/Http_message.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/Http_message.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Http_message - - - -

Module Http_message

-
-
module Http_message: sig .. end
Object Oriented representation of HTTP messages
-
-
class virtual message : body:string -> headers:(string * string) list -> version:Http_types.version option -> clisockaddr:Unix.sockaddr -> srvsockaddr:Unix.sockaddr -> object .. end
-OO representation of an HTTP message -
- \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/Http_message.message.html ocaml-http-0.1.6/doc/html/Http_message.message.html --- ocaml-http-0.1.5/doc/html/Http_message.message.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/Http_message.message.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,128 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - -Http_message.message - - - -

Class virtual Http_message.message

-
-
class virtual message : body:string -> headers:(string * string) list -> version:Http_types.version option -> clisockaddr:Unix.sockaddr -> srvsockaddr:Unix.sockaddr -> object .. end
OO representation of an HTTP message
-
headers : message headers shipped with the message
-
-
method version : Http_types.version option
-Returns message HTTP version, it can be None because older version - of the HTTP protocol don't require HTTP version to be told between - message source and destination
-
-
method setVersion : Http_types.version -> unit
-set message HTTP version
-
-
method body : string
-Returns message body
-
-
method setBody : string -> unit
-set message body
-
-
method bodyBuf : Buffer.t
-Returns a Buffer.t connected to message body (Warning: changing this - buffer will change message body too)
-
-
method setBodyBuf : Buffer.t -> unit
-set a new Buffer.t used to keep message body
-
-
method addBody : string -> unit
-append a string to message body
-
-
method addBodyBuf : Buffer.t -> unit
-append a whole buffer to message body
-
-header name comparison are performed in a case-insensitive manner - as required by RFC2616, actually the implementation works converting all - header names in lowercase
method addHeader : name:string -> value:string -> unit
-add an HTTP header
-
-
name : header's name
-
value : header's value
-
method addHeaders : (string * string) list -> unit
-add a list of HTTP headers
-
-
method replaceHeader : name:string -> value:string -> unit
-like addHeader but replace previous definition of the same header
-
-
method replaceHeaders : (string * string) list -> unit
-like addHeaders but replace previous definition of headers that were - already defined
-
-
method removeHeader : name:string -> unit
-remove _all_ occurences of an HTTP header from the message
-
-
name : name of the header to be removed
-
method hasHeader : name:string -> bool
-Returns true if given header exists in message, false otherwise
-
-
method header : name:string -> string
-Raises Header_not_found if given header wasn't defined in message
-Returns value associated to a given header
-
-
name : name of the header to lookup
-
method headers : (string * string) list
-Returns the full set of headers defined for this message, the value - returned is an association list from headers name to headers value, an - header may occurs more that once in the list
-
-
method clientSockaddr : Unix.sockaddr
-Returns client Unix.sockaddr
-
-
method clientAddr : string
-Returns client address pretty printed
-
-
method clientPort : int
-Returns client port
-
-
method serverSockaddr : Unix.sockaddr
-Returns server Unix.sockaddr
-
-
method serverAddr : string
-Returns server address pretty printed
-
-
method serverPort : int
-Returns server port
-
-
method private virtual fstLineToString : string
-Returns for requests first request line, for responses first - response line. - User by derived requests and responses to implement toString method
-
-
method toString : string
-Returns a string representation of the message
-
-
method serialize : Pervasives.out_channel -> unit
-serialize the message over an output channel
-
- \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/Http_misc.html ocaml-http-0.1.6/doc/html/Http_misc.html --- ocaml-http-0.1.5/doc/html/Http_misc.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/Http_misc.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,112 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Http_misc - - - -

Module Http_misc

-
-
module Http_misc: sig .. end
Helpers and other not better classified functions which should not be -exposed in the final API
-
-
val date_822 : unit -> string
-Returns the current date compliant to RFC 1123, which updates RFC 822 - zone info are retrieved from UTC
-
-
val is_directory : string -> bool
-Returns true if 'name' is a directory on the file system, false otherwise
-
-
val filesize : string -> int
-Returns the filesize of fname
-
-
val strip_trailing_slash : string -> string
-strip trailing '/', if any, from a string and
-Returns the new string
-
-
val strip_heading_slash : string -> string
-strip heading '/', if any, from a string and
-Returns the new string
-
-
val ls : Unix.dir_handle -> string list
-given a dir handle
-Returns a list of entries contained
-
-
val string_explode : string -> char list
-explode a string in a char list
-
-
val string_implode : char list -> string
-implode a char list in a string
-
-
val reason_phrase_of_code : int -> string
-given an HTTP response code return the corresponding reason phrase
-
-
val build_sockaddr : string * int -> Unix.sockaddr
-build a Unix.sockaddr inet address from a string representation of an IP - address and a port number
-
-
val explode_sockaddr : Unix.sockaddr -> string * int
-explode an _inet_ Unix.sockaddr address in a string representation of an - IP address and a port number
-
-
val peername_of_out_channel : Pervasives.out_channel -> Unix.sockaddr
-given an out_channel build on top of a socket, return peername related to - that socket
-
-
val peername_of_in_channel : Pervasives.in_channel -> Unix.sockaddr
-as above but works on in_channels
-
-
val sockname_of_out_channel : Pervasives.out_channel -> Unix.sockaddr
-given an out_channel build on top of a socket, return sockname related to - that socket
-
-
val sockname_of_in_channel : Pervasives.in_channel -> Unix.sockaddr
-as above but works on in_channels
-
-
val buf_of_inchan : ?limit:int -> Pervasives.in_channel -> Buffer.t
-reads from an input channel till it End_of_file and returns what has been - read; if limit is given returned buffer will contains at most first 'limit' - bytes read from input channel
-
-
val list_assoc_all : 'a -> ('a * 'b) list -> 'b list
-like List.assoc but return all bindings of a given key instead of the - leftmost one only
-
-
val warn : string -> unit
-print a warning msg to stderr. Adds trailing \n
-
-
val error : string -> unit
-print an error msg to stderr. Adds trailing \n
-
-
val finally : (unit -> unit) -> ('a -> 'b) -> 'a -> 'b
-
- \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/Http_parser.html ocaml-http-0.1.6/doc/html/Http_parser.html --- ocaml-http-0.1.5/doc/html/Http_parser.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/Http_parser.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Http_parser - - - -

Module Http_parser

-
-
module Http_parser: sig .. end
HTTP messages parsing
-
-
val split_query_params : string -> (string * string) list
-given an HTTP like query string (e.g. "name1=value1&name2=value2&...")
-Raises
  • Malformed_query if the string isn't a valid query string
  • -
  • Malformed_query_part if some piece of the query isn't valid
  • -
-Returns a list of pairs ("name1", "value1"); ("name2", "value2")
-
-
val parse_request_fst_line : Pervasives.in_channel ->
Http_types.meth * Neturl.url * Http_types.version option
-parse 1st line of an HTTP request
-Raises
  • Malformed_request if request 1st linst isn't well formed
  • -
  • Malformed_request_URI if requested URI isn't well formed
  • -
-Returns a triple meth * url * version, meth is the HTTP method invoked, url is - the requested url, version is the HTTP version specified or None if no version - was specified
-
-
val parse_response_fst_line : Pervasives.in_channel -> Http_types.version * Http_types.status
-parse 1st line of an HTTP response -
-Raises Malformed_response if first line isn't well formed
-
-
val parse_query_get_params : Neturl.url -> (string * string) list
-parse HTTP GET parameters from an URL; paramater which were passed with no - value (like 'x' in "/foo.cgi?a=10&x=&c=9") are returned associated with the - empty ("") string.
-Returns a list of pairs param_name * param_value
-
-
val parse_path : Neturl.url -> string
-parse the base path (removing query string, fragment, ....) from an URL
-
-
val parse_headers : Pervasives.in_channel -> (string * string) list
-parse HTTP headers. Consumes also trailing CRLF at the end of header list
-Raises Invalid_header if a not well formed header is encountered
-Returns a list of pairs header_name * header_value
-
-
val parse_cookies : string -> (string * string) list
-parse a Cookie header, extracting an associative list <attribute name, - attribute value>. See RFC 2965 -
-Raises Malformed_cookies if raw_cookies does not conform to RFC 2965
-Returns a list of pairs cookie_name * cookie_value
-
-
val parse_request : Pervasives.in_channel -> string * (string * string) list
-given an input channel, reads from it a GET HTTP request and
-Returns a pair <path, query_params> where path is a string representing the - requested path and query_params is a list of pairs <name, value> (the GET - parameters)
-
- \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/Http_parser_sanity.html ocaml-http-0.1.6/doc/html/Http_parser_sanity.html --- ocaml-http-0.1.5/doc/html/Http_parser_sanity.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/Http_parser_sanity.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Http_parser_sanity - - - -

Module Http_parser_sanity

-
-
module Http_parser_sanity: sig .. end
Sanity test functions related to HTTP message parsing
-
-
val heal_header_name : string -> unit
-Raises Invalid_header_name if name isn't a valid HTTP header name
-
-
val heal_header_value : string -> unit
-Raises Invalid_header_value if value isn't a valid HTTP header value
-
-
val heal_header : string * string -> unit
-Raises
  • Invalid_header_name if name isn't a valid HTTP header name
  • -
  • Invalid_header_value if value isn't a valid HTTP header value
  • -
-
-
val normalize_header_value : string -> string
-remove heading and/or trailing LWS sequences as per RFC2616
-
-
val url_of_string : string -> Neturl.url
-parse an URL from a string.
-Raises Malformed_URL if an invalid URL is encountered
-
-
val string_of_url : Neturl.url -> string
-pretty print an URL
-
- \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/Http_request.html ocaml-http-0.1.6/doc/html/Http_request.html --- ocaml-http-0.1.5/doc/html/Http_request.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/Http_request.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Http_request - - - -

Module Http_request

-
-
module Http_request: sig .. end
Object Oriented representation of HTTP requests
-
-
class request : Pervasives.in_channel -> Http_types.request
-OO representation of an HTTP request -
- \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/Http_request.request.html ocaml-http-0.1.6/doc/html/Http_request.request.html --- ocaml-http-0.1.5/doc/html/Http_request.request.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/Http_request.request.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - -Http_request.request - - - -

Class Http_request.request

-
-
class request : Pervasives.in_channel -> Http_types.request
OO representation of an HTTP request
-
- \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/Http_response.html ocaml-http-0.1.6/doc/html/Http_response.html --- ocaml-http-0.1.5/doc/html/Http_response.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/Http_response.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Http_response - - - -

Module Http_response

-
-
module Http_response: sig .. end
Object Oriented representation of HTTP responses
-
-
class response : ?body:string -> ?headers:(string * string) list -> ?version:Http_types.version -> ?clisockaddr:Unix.sockaddr -> ?srvsockaddr:Unix.sockaddr -> ?code:int -> ?status:Http_types.status -> unit -> Http_types.response
-OO representation of an HTTP response. -
- \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/Http_response.response.html ocaml-http-0.1.6/doc/html/Http_response.response.html --- ocaml-http-0.1.5/doc/html/Http_response.response.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/Http_response.response.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - -Http_response.response - - - -

Class Http_response.response

-
-
class response : ?body:string -> ?headers:(string * string) list -> ?version:Http_types.version -> ?clisockaddr:Unix.sockaddr -> ?srvsockaddr:Unix.sockaddr -> ?code:int -> ?status:Http_types.status -> unit -> Http_types.response
OO representation of an HTTP response.
-
- \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/Http_tcp_server.html ocaml-http-0.1.6/doc/html/Http_tcp_server.html --- ocaml-http-0.1.5/doc/html/Http_tcp_server.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/Http_tcp_server.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Http_tcp_server - - - -

Module Http_tcp_server

-
-
module Http_tcp_server: sig .. end
TCP servers used as low-levels for HTTP daemons
-
-
- -

servers


-
val simple : Http_types.tcp_server
-single process server
-
-
val thread : Http_types.tcp_server
-multi threaded server
-
-
val fork : Http_types.tcp_server
-multi process server
-
-
- -

low level functions


-
val init_socket : Unix.sockaddr -> Unix.file_descr
-initialize a passive socket listening on given Unix.sockaddr
-
- \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/Http_threaded_tcp_server.html ocaml-http-0.1.6/doc/html/Http_threaded_tcp_server.html --- ocaml-http-0.1.5/doc/html/Http_threaded_tcp_server.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/Http_threaded_tcp_server.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Http_threaded_tcp_server - - - -

Module Http_threaded_tcp_server

-
-
module Http_threaded_tcp_server: sig .. end
Multithreaded part of Http_tcp_server
-
-
val serve : ('a -> 'b) -> 'a -> unit
-serve an HTTP request for a multi threaded TCP server
-
- \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/Http_types.connection.html ocaml-http-0.1.6/doc/html/Http_types.connection.html --- ocaml-http-0.1.5/doc/html/Http_types.connection.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/Http_types.connection.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Http_types.connection - - - -

Class type Http_types.connection

-
-
class type connection = object .. end
an HTTP connection from a client to a server
-
-
method getRequest : request option
-Returns next request object, may block if client hasn't submitted any - request yet, may be None if client request was ill-formed
-
-
method respond_with : response -> unit
-respond to client sending it a response
-
-
method close : unit
-close connection to client. Warning: this object can't be used any - longer after this method has been called
-
- \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/Http_types.daemon.html ocaml-http-0.1.6/doc/html/Http_types.daemon.html --- ocaml-http-0.1.5/doc/html/Http_types.daemon.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/Http_types.daemon.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Http_types.daemon - - - -

Class type Http_types.daemon

-
-
class type daemon = object .. end
an HTTP daemon
-
-
method accept : connection
-Returns a connection to a client, may block if no client has connected - yet
-
-
method getRequest : request * connection
-shortcut method, blocks until a client has submit a request and - return a pair request * connection
-
- \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/Http_types.html ocaml-http-0.1.6/doc/html/Http_types.html --- ocaml-http-0.1.5/doc/html/Http_types.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/Http_types.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,346 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Http_types - - - -

Module Http_types

-
-
module Http_types: sig .. end
Type definitions
-
-
type version = [ `HTTP_1_0 | `HTTP_1_1 ] 
-
-HTTP version, actually only 1.0 and 1.1 are supported. Note that - 'supported' here means only 'accepted inside a HTTP request line', no - different behaviours are actually implemented depending on HTTP version
-
- -
type meth = [ `GET | `POST ] 
-
-HTTP method, actually only GET and POST methods are supported
-
- -
type daemon_mode = [ `Fork | `Single | `Thread ] 
-
-Daemon behaviour wrt request handling. `Single mode use a single process - to handle all requests, no request is served until a previous one has been - fully served. `Fork mode fork a new process for each request, the new process - will execute the callback function and then exit. `Thread mode create a new - thread for each request, the new thread will execute the callback function and - then exit, threads can communicate using standard OCaml Thread library.
-
- -
type tcp_server = sockaddr:Unix.sockaddr ->
timeout:int option ->
(Pervasives.in_channel -> Pervasives.out_channel -> unit) -> unit
-
-A TCP server is a function taking an address on which bind and listen for - connections, an optional timeout after which abort client connections and a - callback function which in turn takes an input and an output channel as - arguments. After receiving this argument a TCP server sits and waits for - connection, on each connection it apply the callback function to channels - connected to client.
-
- -
type auth_info = [ `Basic of string * string ] 
-
-authentication information
-
- -
type informational_substatus = [ `Continue | `Switching_protocols ] 
-
-See also RFC2616 informational HTTP status
-
- -
type success_substatus = [ `Accepted
| `Created
| `No_content
| `Non_authoritative_information
| `OK
| `Partial_content
| `Reset_content ]
-
-See also RFC2616 success HTTP status
-
- -
type redirection_substatus = [ `Found
| `Moved_permanently
| `Multiple_choices
| `Not_modified
| `See_other
| `Temporary_redirect
| `Use_proxy ]
-
-See also RFC2616 redirection HTTP status
-
- -
type client_error_substatus = [ `Bad_request
| `Conflict
| `Expectation_failed
| `Forbidden
| `Gone
| `Length_required
| `Method_not_allowed
| `Not_acceptable
| `Not_found
| `Payment_required
| `Precondition_failed
| `Proxy_authentication_required
| `Request_URI_too_large
| `Request_entity_too_large
| `Request_time_out
| `Requested_range_not_satisfiable
| `Unauthorized
| `Unsupported_media_type ]
-
-See also RFC2616 client error HTTP status
-
- -
type server_error_substatus = [ `Bad_gateway
| `Gateway_time_out
| `HTTP_version_not_supported
| `Internal_server_error
| `Not_implemented
| `Service_unavailable ]
-
-See also RFC2616 server error HTTP status
-
- -
type informational_status = [ `Informational of informational_substatus ] 
- -
type success_status = [ `Success of success_substatus ] 
- -
type redirection_status = [ `Redirection of redirection_substatus ] 
- -
type client_error_status = [ `Client_error of client_error_substatus ] 
- -
type server_error_status = [ `Server_error of server_error_substatus ] 
- -
type error_status = [ `Client_error of client_error_substatus
| `Server_error of server_error_substatus ]
- -
type status = [ `Client_error of client_error_substatus
| `Informational of informational_substatus
| `Redirection of redirection_substatus
| `Server_error of server_error_substatus
| `Success of success_substatus ]
-
-HTTP status
-
- -
type status_code = [ `Code of int | `Status of status ] 
- -
type file_source = - - - - - - - - - -
-| -FileSrc of string(*filename*)
-| -InChanSrc of Pervasives.in_channel(*input channel*)
- -
-File sources
-
- -
- -

Exceptions


-
exception Invalid_header of string
-
-invalid header encountered
-
-
exception Invalid_header_name of string
-
-invalid header name encountered
-
-
exception Invalid_header_value of string
-
-invalid header value encountered
-
-
exception Invalid_HTTP_version of string
-
-unsupported or invalid HTTP version encountered
-
-
exception Invalid_HTTP_method of string
-
-unsupported or invalid HTTP method encountered
-
-
exception Invalid_code of int
-
-invalid HTTP status code integer representation encountered
-
-
exception Malformed_URL of string
-
-invalid URL encountered
-
-
exception Malformed_query of string
-
-invalid query string encountered
-
-
exception Malformed_query_part of string * string
-
-invalid query string part encountered, arguments are parameter name and - parameter value
-
-
exception Malformed_request_URI of string
-
-invalid request URI encountered
-
-
exception Malformed_cookies of string
-
-malformed cookies
-
-
exception Malformed_request of string
-
-malformed request received
-
-
exception Malformed_response of string
-
-malformed response received, argument is response's first line
-
-
exception Param_not_found of string
-
-a parameter you were looking for was not found
-
-
exception Invalid_status_line of string
-
-invalid HTTP status line encountered
-
-
exception Header_not_found of string
-
-an header you were looking for was not found
-
-
exception Quit
-
-raisable by callbacks to make main daemon quit, this is the only - 'clean' way to make start functions return
-
-
exception Unauthorized of string
-
-raisable by callbacks to force a 401 (unauthorized) HTTP answer. - This exception should be raised _before_ sending any data over given out - channel. -
-
-
- -

OO representation of HTTP messages


-
class type message = object .. end
-HTTP generic messages. -
-
class type request = object .. end
-HTTP requests -
-
class type response = object .. end
-HTTP responses -
-
- -

Daemon specification


-
type daemon_spec = { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-   -address : string;
-   -auth : (string * auth_info) option;(*authentication requirements (currently only basic authentication is - supported). If set to None no authentication is required. If set to Some - ("realm", `Basic ("foo", "bar")), only clients authenticated with baisc - authentication, for realm "realm", providing username "foo" and password - "bar" are accepted; others are rejected with a 401 response code*)
-   -callback : request -> Pervasives.out_channel -> unit;(*function which will be called each time a correct HTTP request will be - received. 1st callback argument is an Http_types.request object - corresponding to the request received; 2nd argument is an output channel - corresponding to the socket connected to the client*)
-   -mode : daemon_mode;(*requests handling mode, it can have three different values:
    -
  • `Single -> all requests will be handled by the same process,
  • -
  • `Fork -> each request will be handled by a child process,
  • -
  • `Thread -> each request will be handled by a (new) thread
  • -
-
*)
-   -port : int;(*TCP port on which the daemon will be listening*)
-   -root_dir : string option;(*directory to which ocaml http will chdir before starting handling - requests; if None, no chdir will be performed (i.e. stay in the current - working directory)*)
-   -exn_handler : (exn -> Pervasives.out_channel -> unit) option;(*what to do when executing callback raises an exception. If None, the - exception will be re-raised: in `Fork/`Thread mode the current - process/thread will be terminated. in `Single mode the exception is - ignored and the client socket closed. If Some callback, the callback will - be executed before acting as per None; the callback is meant to perform - some clean up actions, like releasing global mutexes in `Thread mode*)
-   -timeout : int option;(*timeout in seconds after which an incoming HTTP request will be - terminated closing the corresponding TCP connection; None disable the - timeout*)
-   -auto_close : bool;(*whether ocaml-http will automatically close the connection with the - client after callback has completed its execution. If set to true, close - will be attempted no matter if the callback raises an exception or not*)
-} - -
-daemon specification, describe the behaviour of an HTTP daemon. -

- - The default daemon specification is Http_daemon.default_spec
-

- -
- -

OO representation of other HTTP entities


-
class type connection = object .. end
-an HTTP connection from a client to a server -
-
class type daemon = object .. end
-an HTTP daemon -
- \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/Http_types.message.html ocaml-http-0.1.6/doc/html/Http_types.message.html --- ocaml-http-0.1.5/doc/html/Http_types.message.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/Http_types.message.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Http_types.message - - - -

Class type Http_types.message

-
-
class type message = object .. end
HTTP generic messages. See Http_message.message
-
-
method version : version option
method setVersion : version -> unit
method body : string
method setBody : string -> unit
method bodyBuf : Buffer.t
method setBodyBuf : Buffer.t -> unit
method addBody : string -> unit
method addBodyBuf : Buffer.t -> unit
method addHeader : name:string -> value:string -> unit
method addHeaders : (string * string) list -> unit
method replaceHeader : name:string -> value:string -> unit
method replaceHeaders : (string * string) list -> unit
method removeHeader : name:string -> unit
method hasHeader : name:string -> bool
method header : name:string -> string
method headers : (string * string) list
method clientSockaddr : Unix.sockaddr
method clientAddr : string
method clientPort : int
method serverSockaddr : Unix.sockaddr
method serverAddr : string
method serverPort : int
method toString : string
method serialize : Pervasives.out_channel -> unit
\ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/Http_types.request.html ocaml-http-0.1.6/doc/html/Http_types.request.html --- ocaml-http-0.1.5/doc/html/Http_types.request.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/Http_types.request.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,83 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Http_types.request - - - -

Class type Http_types.request

-
-
class type request = object .. end
HTTP requests
-Inherits -
-
method meth : meth
-Returns request method
-
-
method uri : string
-Returns requested URI (including query string, fragment, ...)
-
-
method path : string
-Returns requested path
-
-
method param : ?meth:meth -> ?default:string -> string -> string
-lookup a given parameter
-Raises Param_not_found if parameter name was not found
-Returns value associated to parameter name
-
-
meth : if given restrict the lookup area (e.g. if meth = POST than - only parameters received via POST are searched), if not given both GET - and POST parameter are searched in an unspecified order (actually the - implementation prefers POST parameters but this is not granted, you've - been warned)
-
default : if provided, this value will be returned in case no - parameter of that name is available instead of raising Param_not_found
-
method paramAll : ?meth:meth -> string -> string list
-like param above but return a list of values associated to given - parameter (a parameter could be defined indeed more than once: passed more - than once in a query string or passed both insider the url (the GET way) - and inside message body (the POST way))
-
-
method params : (string * string) list
-Returns the list of all received parameters
-
-
method params_GET : (string * string) list
-Returns the list of all parameters received via GET
-
-
method params_POST : (string * string) list
-Returns the list of all parameter received via POST
-
-
method cookies : (string * string) list option
method authorization : auth_info option
-Returns authorization information, if given by the client
-
- \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/Http_types.response.html ocaml-http-0.1.6/doc/html/Http_types.response.html --- ocaml-http-0.1.5/doc/html/Http_types.response.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/Http_types.response.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,127 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Http_types.response - - - -

Class type Http_types.response

-
-
class type response = object .. end
HTTP responses
-Inherits -
-
method code : int
-Returns response code
-
-
method setCode : int -> unit
-set response code
-
-
method status : status
-Returns response status
-
-
method setStatus : status -> unit
-set response status
-
-
method reason : string
-Returns reason string
-
-
method setReason : string -> unit
-set reason string
-
-
method statusLine : string
-Returns status line
-
-
method setStatusLine : string -> unit
-set status line
-Raises Invalid_status_line if an invalid HTTP status line was passed
-
-
method isInformational : bool
-response is an informational one
-
-
method isSuccess : bool
-response is a success one
-
-
method isRedirection : bool
-response is a redirection one
-
-
method isClientError : bool
-response is a client error one
-
-
method isServerError : bool
-response is a server error one
-
-
method isError : bool
-response is either a client error or a server error response
-
-
method addBasicHeaders : unit
-add basic headers to response, see Http_daemon.send_basic_headers
-
- -

facilities to access some frequently used headers

method contentType : string
-Returns Content-Type header value
-
-
method setContentType : string -> unit
-set Content-Type header value
-
-
method contentEncoding : string
-Returns Content-Encoding header value
-
-
method setContentEncoding : string -> unit
-set Content-Encoding header value
-
-
method date : string
-Returns Date header value
-
-
method setDate : string -> unit
-set Date header value
-
-
method expires : string
-Returns Expires header value
-
-
method setExpires : string -> unit
-set Expires header value
-
-
method server : string
-Returns Server header value
-
-
method setServer : string -> unit
-set Server header value
-
-
method connection : string
-Returns Connection header value
-
-
method setConnection : string -> unit
-set Connection header value
-
- \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/Http_user_agent.html ocaml-http-0.1.6/doc/html/Http_user_agent.html --- ocaml-http-0.1.5/doc/html/Http_user_agent.html 2010-12-31 02:33:00.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/Http_user_agent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Http_user_agent - - - -

Module Http_user_agent

-
-
module Http_user_agent: sig .. end
Minimal implementation of an HTTP 1.0/1.1 client. Interface is similar to - Gerd Stoplmann's Http_client module. Implementation is simpler and doesn't - handle HTTP redirection, proxies, ecc. The only reason for the existence of - this module is for performances and incremental elaboration of response's - bodies
-
-
exception Http_error of (int * string)
-
val get : ?head_callback:(Http_types.status -> (string * string) list -> unit) ->
string -> string
-Raises Http_error when response code <> 200
-Returns HTTP response's body
-
-
head_callback : optional calllback invoked on response's status and - headers. If not provided no callback will be invoked
-
val get_iter : ?head_callback:(Http_types.status -> (string * string) list -> unit) ->
(string -> unit) -> string -> unit
-as above but iter callback function on HTTP response's body instead of - returning it as a string
-
-
val head : string -> string
-Raises Http_error when response code <> 200
-Returns HTTP HEAD raw response
-
- \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/index_attributes.html ocaml-http-0.1.6/doc/html/index_attributes.html --- ocaml-http-0.1.5/doc/html/index_attributes.html 2010-12-31 02:33:00.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/index_attributes.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - -Index of class attributes - - -

Index of class attributes

- -

- - \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/index_classes.html ocaml-http-0.1.6/doc/html/index_classes.html --- ocaml-http-0.1.5/doc/html/index_classes.html 2010-12-31 02:33:00.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/index_classes.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - -Index of classes - - -

Index of classes

- - - - - - - - - - - - -

D
daemon [Http_daemon]
-Object oriented interface to HTTP daemons. -
-

M
message [Http_message]
-OO representation of an HTTP message -
-

R
request [Http_request]
-OO representation of an HTTP request -
-
response [Http_response]
-OO representation of an HTTP response. -
-

- - \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/index_class_types.html ocaml-http-0.1.6/doc/html/index_class_types.html --- ocaml-http-0.1.5/doc/html/index_class_types.html 2010-12-31 02:33:00.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/index_class_types.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - -Index of class types - - -

Index of class types

- - - - - - - - - - - - - - - -

C
connection [Http_types]
-an HTTP connection from a client to a server -
-

D
daemon [Http_types]
-an HTTP daemon -
-

M
message [Http_types]
-HTTP generic messages. -
-

R
request [Http_types]
-HTTP requests -
-
response [Http_types]
-HTTP responses -
-

- - \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/index_exceptions.html ocaml-http-0.1.6/doc/html/index_exceptions.html --- ocaml-http-0.1.5/doc/html/index_exceptions.html 2010-12-31 02:33:00.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/index_exceptions.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,133 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - -Index of exceptions - - -

Index of exceptions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

H
Header_not_found [Http_types]
-an header you were looking for was not found -
-
Http_error [Http_user_agent]

I
Invalid_HTTP_method [Http_types]
-unsupported or invalid HTTP method encountered -
-
Invalid_HTTP_version [Http_types]
-unsupported or invalid HTTP version encountered -
-
Invalid_code [Http_types]
-invalid HTTP status code integer representation encountered -
-
Invalid_header [Http_types]
-invalid header encountered -
-
Invalid_header_name [Http_types]
-invalid header name encountered -
-
Invalid_header_value [Http_types]
-invalid header value encountered -
-
Invalid_status_line [Http_types]
-invalid HTTP status line encountered -
-

M
Malformed_URL [Http_types]
-invalid URL encountered -
-
Malformed_cookies [Http_types]
-malformed cookies -
-
Malformed_query [Http_types]
-invalid query string encountered -
-
Malformed_query_part [Http_types]
-invalid query string part encountered, arguments are parameter name and - parameter value -
-
Malformed_request [Http_types]
-malformed request received -
-
Malformed_request_URI [Http_types]
-invalid request URI encountered -
-
Malformed_response [Http_types]
-malformed response received, argument is response's first line -
-

P
Param_not_found [Http_types]
-a parameter you were looking for was not found -
-

Q
Quit [Http_types]
-raisable by callbacks to make main daemon quit, this is the only - 'clean' way to make start functions return -
-

U
Unauthorized [Http_types]
-raisable by callbacks to force a 401 (unauthorized) HTTP answer. -
-

- - \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/index.html ocaml-http-0.1.6/doc/html/index.html --- ocaml-http-0.1.5/doc/html/index.html 2010-12-31 02:33:00.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/index.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,96 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Index of types
-Index of exceptions
-Index of values
-Index of class methods
-Index of classes
-Index of class types
-Index of modules
-

- - - - - - - - - - - - - - - -
Cookie_lexer
Http_common
-Common functionalities shared by other OCaml HTTP modules -
-
Http_constants
-Constants -
-
Http_daemon
-Main OCaml HTTP module. -
-
Http_message
-Object Oriented representation of HTTP messages -
-
Http_misc
-Helpers and other not better classified functions which should not be -exposed in the final API -
-
Http_parser
-HTTP messages parsing -
-
Http_parser_sanity
-Sanity test functions related to HTTP message parsing -
-
Http_request
-Object Oriented representation of HTTP requests -
-
Http_response
-Object Oriented representation of HTTP responses -
-
Http_tcp_server
-TCP servers used as low-levels for HTTP daemons -
-
Http_threaded_tcp_server
-Multithreaded part of Http_tcp_server -
-
Http_types
-Type definitions -
-
Http_user_agent
-Minimal implementation of an HTTP 1.0/1.1 client. -
-
- - \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/index_methods.html ocaml-http-0.1.6/doc/html/index_methods.html --- ocaml-http-0.1.5/doc/html/index_methods.html 2010-12-31 02:33:00.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/index_methods.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,401 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - -Index of class methods - - -

Index of class methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

A
accept [Http_types.daemon]
-
-
addBasicHeaders [Http_types.response]
-add basic headers to response, see Http_daemon.send_basic_headers -
-
addBody [Http_types.message]
addBody [Http_message.message]
-append a string to message body -
-
addBodyBuf [Http_types.message]
addBodyBuf [Http_message.message]
-append a whole buffer to message body -
-
addHeader [Http_types.message]
addHeader [Http_message.message]
-add an HTTP header -
-
addHeaders [Http_types.message]
addHeaders [Http_message.message]
-add a list of HTTP headers -
-
authorization [Http_types.request]
-
-

B
body [Http_types.message]
body [Http_message.message]
-
-
bodyBuf [Http_types.message]
bodyBuf [Http_message.message]
-
-

C
clientAddr [Http_types.message]
clientAddr [Http_message.message]
-
-
clientPort [Http_types.message]
clientPort [Http_message.message]
-
-
clientSockaddr [Http_types.message]
clientSockaddr [Http_message.message]
-
-
close [Http_types.connection]
-close connection to client. -
-
code [Http_types.response]
-
-
connection [Http_types.response]
-
-
contentEncoding [Http_types.response]
-
-
contentType [Http_types.response]
-
-
cookies [Http_types.request]

D
date [Http_types.response]
-
-

E
expires [Http_types.response]
-
-

F
fstLineToString [Http_message.message]
-
-

G
getRequest [Http_types.connection]
-
-
getRequest [Http_types.daemon]
-shortcut method, blocks until a client has submit a request and - return a pair request * connection -
-

H
hasHeader [Http_types.message]
hasHeader [Http_message.message]
-
-
header [Http_types.message]
header [Http_message.message]
-
-
headers [Http_types.message]
headers [Http_message.message]
-
-

I
isClientError [Http_types.response]
-response is a client error one -
-
isError [Http_types.response]
-response is either a client error or a server error response -
-
isInformational [Http_types.response]
-response is an informational one -
-
isRedirection [Http_types.response]
-response is a redirection one -
-
isServerError [Http_types.response]
-response is a server error one -
-
isSuccess [Http_types.response]
-response is a success one -
-

M
meth [Http_types.request]
-
-

P
param [Http_types.request]
-lookup a given parameter -
-
paramAll [Http_types.request]
-like param above but return a list of values associated to given - parameter (a parameter could be defined indeed more than once: passed more - than once in a query string or passed both insider the url (the GET way) - and inside message body (the POST way)) -
-
params [Http_types.request]
-
-
params_GET [Http_types.request]
-
-
params_POST [Http_types.request]
-
-
path [Http_types.request]
-
-

R
reason [Http_types.response]
-
-
removeHeader [Http_types.message]
removeHeader [Http_message.message]
-remove _all_ occurences of an HTTP header from the message -
-
replaceHeader [Http_types.message]
replaceHeader [Http_message.message]
-like addHeader but replace previous definition of the same header -
-
replaceHeaders [Http_types.message]
replaceHeaders [Http_message.message]
-like addHeaders but replace previous definition of headers that were - already defined -
-
respond_with [Http_types.connection]
-respond to client sending it a response -
-

S
serialize [Http_types.message]
serialize [Http_message.message]
-serialize the message over an output channel -
-
server [Http_types.response]
-
-
serverAddr [Http_types.message]
serverAddr [Http_message.message]
-
-
serverPort [Http_types.message]
serverPort [Http_message.message]
-
-
serverSockaddr [Http_types.message]
serverSockaddr [Http_message.message]
-
-
setBody [Http_types.message]
setBody [Http_message.message]
-set message body -
-
setBodyBuf [Http_types.message]
setBodyBuf [Http_message.message]
-set a new Buffer.t used to keep message body -
-
setCode [Http_types.response]
-set response code -
-
setConnection [Http_types.response]
-set Connection header value -
-
setContentEncoding [Http_types.response]
-set Content-Encoding header value -
-
setContentType [Http_types.response]
-set Content-Type header value -
-
setDate [Http_types.response]
-set Date header value -
-
setExpires [Http_types.response]
-set Expires header value -
-
setReason [Http_types.response]
-set reason string -
-
setServer [Http_types.response]
-set Server header value -
-
setStatus [Http_types.response]
-set response status -
-
setStatusLine [Http_types.response]
-set status line -
-
setVersion [Http_types.message]
setVersion [Http_message.message]
-set message HTTP version -
-
status [Http_types.response]
-
-
statusLine [Http_types.response]
-
-

T
toString [Http_types.message]
toString [Http_message.message]
-
-

U
uri [Http_types.request]
-
-

V
version [Http_types.message]
version [Http_message.message]
-
-

- - \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/index_modules.html ocaml-http-0.1.6/doc/html/index_modules.html --- ocaml-http-0.1.5/doc/html/index_modules.html 2010-12-31 02:33:00.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/index_modules.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,109 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - -Index of modules - - -

Index of modules

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

C
Cookie_lexer

H
Http_common
-Common functionalities shared by other OCaml HTTP modules -
-
Http_constants
-Constants -
-
Http_daemon
-Main OCaml HTTP module. -
-
Http_message
-Object Oriented representation of HTTP messages -
-
Http_misc
-Helpers and other not better classified functions which should not be -exposed in the final API -
-
Http_parser
-HTTP messages parsing -
-
Http_parser_sanity
-Sanity test functions related to HTTP message parsing -
-
Http_request
-Object Oriented representation of HTTP requests -
-
Http_response
-Object Oriented representation of HTTP responses -
-
Http_tcp_server
-TCP servers used as low-levels for HTTP daemons -
-
Http_threaded_tcp_server
-Multithreaded part of Http_tcp_server -
-
Http_types
-Type definitions -
-
Http_user_agent
-Minimal implementation of an HTTP 1.0/1.1 client. -
-

T
Trivial [Http_daemon]
-Trivial static pages HTTP daemon. -
-

- - \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/index_module_types.html ocaml-http-0.1.6/doc/html/index_module_types.html --- ocaml-http-0.1.5/doc/html/index_module_types.html 2010-12-31 02:33:00.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/index_module_types.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - -Index of module types - - -

Index of module types

- -

- - \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/index_types.html ocaml-http-0.1.6/doc/html/index_types.html --- ocaml-http-0.1.5/doc/html/index_types.html 2010-12-31 02:33:00.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/index_types.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - -Index of types - - -

Index of types

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

A
auth_info [Http_types]
-authentication information -
-

C
client_error_status [Http_types]
client_error_substatus [Http_types]
-
-
cookie_token [Cookie_lexer]

D
daemon_mode [Http_types]
-Daemon behaviour wrt request handling. -
-
daemon_spec [Http_types]
-daemon specification, describe the behaviour of an HTTP daemon. -
-

E
error_status [Http_types]

F
file_source [Http_types]
-File sources -
-

I
informational_status [Http_types]
informational_substatus [Http_types]
-
-

M
meth [Http_types]
-HTTP method, actually only GET and POST methods are supported -
-

R
redirection_status [Http_types]
redirection_substatus [Http_types]
-
-

S
server_error_status [Http_types]
server_error_substatus [Http_types]
-
-
status [Http_types]
-HTTP status -
-
status_code [Http_types]
success_status [Http_types]
success_substatus [Http_types]
-
-

T
tcp_server [Http_types]
-A TCP server is a function taking an address on which bind and listen for - connections, an optional timeout after which abort client connections and a - callback function which in turn takes an input and an output channel as - arguments. -
-

V
version [Http_types]
-HTTP version, actually only 1.0 and 1.1 are supported. -
-

- - \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/index_values.html ocaml-http-0.1.6/doc/html/index_values.html --- ocaml-http-0.1.5/doc/html/index_values.html 2010-12-31 02:33:00.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/index_values.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,488 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - -Index of values - - -

Index of values

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

B
buf_of_inchan [Http_misc]
-reads from an input channel till it End_of_file and returns what has been - read; if limit is given returned buffer will contains at most first 'limit' - bytes read from input channel -
-
build_sockaddr [Http_misc]
-build a Unix.sockaddr inet address from a string representation of an IP - address and a port number -
-

C
callback [Http_daemon.Trivial]
-callback function, exposed if you like to use it as a basis to define - a more powerful daemon -
-
code_of_status [Http_common]
-converts an HTTP status to the corresponding integer value -
-
crlf [Http_constants]
-"\r\n" string -
-

D
daemon_spec [Http_daemon]
-currified daemon_spec constructor. -
-
date_822 [Http_misc]
-
-
debug [Http_common]
-whether debugging messages are enabled or not, can be changed at runtime -
-
debug_print [Http_common]
-print a string on stderr only if debugging is enabled -
-
default_addr [Http_constants]
default_auth [Http_constants]
default_auto_close [Http_constants]
default_callback [Http_constants]
default_exn_handler [Http_constants]
default_mode [Http_constants]
default_port [Http_constants]
default_root_dir [Http_constants]
default_spec [Http_daemon]
-default daemon specification: listen on 0.0.0.0, port 80, "always ok" callback (return an empty response, response code 200), fork a child for each request, do not change to a root directory (i.e. keep cwd), 300 seconds timeout, ignores exceptions, no authentication required, do not automatically close client connections after callback -
-
default_timeout [Http_constants]

E
error [Http_misc]
-print an error msg to stderr. -
-
explode_sockaddr [Http_misc]
-explode an _inet_ Unix.sockaddr address in a string representation of an - IP address and a port number -
-

F
filesize [Http_misc]
-
-
finally [Http_misc]
-
-
fork [Http_tcp_server]
-multi process server -
-

G
get [Http_user_agent]
-
-
get_basic_headers [Http_daemon]
-returns the basic headers "Date", "Server" and "Connection" used in - send_basic_headers -
-
get_iter [Http_user_agent]
-as above but iter callback function on HTTP response's body instead of - returning it as a string -
-

H
head [Http_user_agent]
-
-
heal_header [Http_parser_sanity]
-
-
heal_header_name [Http_parser_sanity]
-
-
heal_header_value [Http_parser_sanity]
-
-
http_version [Http_common] -

I
init_socket [Http_tcp_server]
-initialize a passive socket listening on given Unix.sockaddr -
-
is_client_error [Http_common]
-
-
is_directory [Http_misc]
-
-
is_error [Http_common]
-
-
is_informational [Http_common]
-
-
is_redirection [Http_common]
-
-
is_server_error [Http_common]
-
-
is_success [Http_common]
-
-

L
list_assoc_all [Http_misc]
-like List.assoc but return all bindings of a given key instead of the - leftmost one only -
-
ls [Http_misc]
-given a dir handle -
-

M
main [Http_daemon.Trivial]
-start the "trivial" HTTP daemon - -
-
main [Http_daemon]
-start an HTTP daemon - -
-
method_of_string [Http_common]
-parse an HTTP method from a string -
-

N
normalize_header_value [Http_parser_sanity]
-remove heading and/or trailing LWS sequences as per RFC2616 -
-

P
parse_cookies [Http_parser]
-parse a Cookie header, extracting an associative list <attribute name, - attribute value>. -
-
parse_headers [Http_parser]
-parse HTTP headers. -
-
parse_path [Http_parser]
-parse the base path (removing query string, fragment, ....) from an URL -
-
parse_query_get_params [Http_parser]
-parse HTTP GET parameters from an URL; paramater which were passed with no - value (like 'x' in "/foo.cgi?a=10&x=&c=9") are returned associated with the - empty ("") string. -
-
parse_request [Http_parser]
-given an input channel, reads from it a GET HTTP request and -
-
parse_request_fst_line [Http_parser]
-parse 1st line of an HTTP request -
-
parse_response_fst_line [Http_parser]
-parse 1st line of an HTTP response - -
-
peername_of_in_channel [Http_misc]
-as above but works on in_channels -
-
peername_of_out_channel [Http_misc]
-given an out_channel build on top of a socket, return peername related to - that socket -
-

R
reason_phrase_of_code [Http_misc]
-given an HTTP response code return the corresponding reason phrase -
-
respond [Http_daemon]
-high level response function, respond on outchan sending: basic headers - (including Content-Length computed using 'body' argument), headers probided - via 'headers' argument, body given via 'body' argument. -
-
respond_error [Http_daemon]
-send an "error" response (i.e. -
-
respond_file [Http_daemon]
-tipical static pages http daemon behaviour, if requested url is a file, - return it, it it is a directory return a directory listing of it -
-
respond_forbidden [Http_daemon]
-send a 403 (forbidden) HTTP response -
-
respond_not_found [Http_daemon]
-send a 404 (not found) HTTP response -
-
respond_redirect [Http_daemon]
-send a "redirection" class response, optional body argument contains data - that will be displayed in the body of the response, default response status is - 301 (moved permanently), only redirection status are accepted by this - function, other values will raise Failure -
-
respond_unauthorized [Http_daemon]
-respond with a 401 (Unauthorized) response asking for authentication - against given realm (default is the server name) -
-
respond_with [Http_daemon]
-respond using a prebuilt Http_types.response object -
-

S
send_CRLF [Http_daemon]
-send a CRLF sequence on the given output channel, this is mandatory after - the last header was sent and before start sending the response body -
-
send_basic_headers [Http_daemon]
-like send_status_line but additionally will also send "Date", "Server" - and "Connection" standard headers -
-
send_file [Http_daemon]
-send a file through an out_channel -
-
send_header [Http_daemon]
-send an HTTP header on outchan -
-
send_headers [Http_daemon]
-as send_header, but for a list of pairs <header, value> -
-
send_status_line [Http_daemon]
-send response status line, version is the http version used in response, - either code or status must be given (not both, not none) which represent the - HTTP response code, outchan is the output channel to which send status line -
-
serve [Http_threaded_tcp_server]
-serve an HTTP request for a multi threaded TCP server -
-
server_string [Http_constants]
-string returned as value of "Server:" response header -
-
server_string [Http_common] -
simple [Http_tcp_server]
-single process server -
-
sockname_of_in_channel [Http_misc]
-as above but works on in_channels -
-
sockname_of_out_channel [Http_misc]
-given an out_channel build on top of a socket, return sockname related to - that socket -
-
split_query_params [Http_parser]
-given an HTTP like query string (e.g. -
-
status_of_code [Http_common]
-converts an integer HTTP status to the corresponding status value -
-
string_explode [Http_misc]
-explode a string in a char list -
-
string_implode [Http_misc]
-implode a char list in a string -
-
string_of_method [Http_common]
-pretty print an HTTP method -
-
string_of_url [Http_parser_sanity]
-pretty print an URL -
-
string_of_version [Http_common]
-pretty print an HTTP version -
-
strip_heading_slash [Http_misc]
-strip heading '/', if any, from a string and -
-
strip_trailing_slash [Http_misc]
-strip trailing '/', if any, from a string and -
-

T
thread [Http_tcp_server]
-multi threaded server -
-
token [Cookie_lexer]

U
url_of_string [Http_parser_sanity]
-parse an URL from a string. -
-

V
version [Http_constants]
-default HTTP version -
-
version_of_string [Http_common]
-parse an HTTP version from a string -
-

W
warn [Http_misc]
-print a warning msg to stderr. -
-

- - \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/style.css ocaml-http-0.1.6/doc/html/style.css --- ocaml-http-0.1.5/doc/html/style.css 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/style.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -a:visited {color : #416DFF; text-decoration : none; } -a:link {color : #416DFF; text-decoration : none;} -a:hover {color : Red; text-decoration : none; background-color: #5FFF88} -a:active {color : Red; text-decoration : underline; } -.keyword { font-weight : bold ; color : Red } -.keywordsign { color : #C04600 } -.superscript { font-size : 4 } -.subscript { font-size : 4 } -.comment { color : Green } -.constructor { color : Blue } -.type { color : #5C6585 } -.string { color : Maroon } -.warning { color : Red ; font-weight : bold } -.info { margin-left : 3em; margin-right : 3em } -.param_info { margin-top: 4px; margin-left : 3em; margin-right : 3em } -.code { color : #465F91 ; } -h1 { font-size : 20pt ; text-align: center; } -h2 { font-size : 20pt ; border: 1px solid #000000; margin-top: 5px; margin-bottom: 2px;text-align: center; background-color: #90BDFF ;padding: 2px; } -h3 { font-size : 20pt ; border: 1px solid #000000; margin-top: 5px; margin-bottom: 2px;text-align: center; background-color: #90DDFF ;padding: 2px; } -h4 { font-size : 20pt ; border: 1px solid #000000; margin-top: 5px; margin-bottom: 2px;text-align: center; background-color: #90EDFF ;padding: 2px; } -h5 { font-size : 20pt ; border: 1px solid #000000; margin-top: 5px; margin-bottom: 2px;text-align: center; background-color: #90FDFF ;padding: 2px; } -h6 { font-size : 20pt ; border: 1px solid #000000; margin-top: 5px; margin-bottom: 2px;text-align: center; background-color: #C0FFFF ; padding: 2px; } -div.h7 { font-size : 20pt ; border: 1px solid #000000; margin-top: 5px; margin-bottom: 2px;text-align: center; background-color: #E0FFFF ; padding: 2px; } -div.h8 { font-size : 20pt ; border: 1px solid #000000; margin-top: 5px; margin-bottom: 2px;text-align: center; background-color: #F0FFFF ; padding: 2px; } -div.h9 { font-size : 20pt ; border: 1px solid #000000; margin-top: 5px; margin-bottom: 2px;text-align: center; background-color: #FFFFFF ; padding: 2px; } -.typetable { border-style : hidden } -.indextable { border-style : hidden } -.paramstable { border-style : hidden ; padding: 5pt 5pt} -body { background-color : White } -tr { background-color : White } -td.typefieldcomment { background-color : #FFFFFF ; font-size: smaller ;} -pre { margin-bottom: 4px } -div.sig_block {margin-left: 2em} \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/type_Cookie_lexer.html ocaml-http-0.1.6/doc/html/type_Cookie_lexer.html --- ocaml-http-0.1.5/doc/html/type_Cookie_lexer.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/type_Cookie_lexer.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -Cookie_lexer - - -sig
-  type cookie_token = [ `ASSIGNMENT of string * string | `EOF | `SEP ]
-  val token : Lexing.lexbuf -> Cookie_lexer.cookie_token
-end
\ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/type_Http_common.html ocaml-http-0.1.6/doc/html/type_Http_common.html --- ocaml-http-0.1.5/doc/html/type_Http_common.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/type_Http_common.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -Http_common - - -sig
-  val debug : bool Pervasives.ref
-  val debug_print : string -> unit
-  val http_version : Http_types.version
-  val server_string : string
-  val string_of_version : Http_types.version -> string
-  val version_of_string : string -> Http_types.version
-  val string_of_method : Http_types.meth -> string
-  val method_of_string : string -> Http_types.meth
-  val status_of_code : int -> Http_types.status
-  val code_of_status : [< Http_types.status ] -> int
-  val is_informational : int -> bool
-  val is_success : int -> bool
-  val is_redirection : int -> bool
-  val is_client_error : int -> bool
-  val is_server_error : int -> bool
-  val is_error : int -> bool
-end
\ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/type_Http_constants.html ocaml-http-0.1.6/doc/html/type_Http_constants.html --- ocaml-http-0.1.5/doc/html/type_Http_constants.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/type_Http_constants.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -Http_constants - - -sig
-  val version : Http_types.version
-  val server_string : string
-  val crlf : string
-  val default_addr : string
-  val default_auth : (string * Http_types.auth_info) option
-  val default_auto_close : bool
-  val default_callback : Http_types.request -> Pervasives.out_channel -> unit
-  val default_mode : Http_types.daemon_mode
-  val default_port : int
-  val default_root_dir : string option
-  val default_exn_handler : (exn -> Pervasives.out_channel -> unit) option
-  val default_timeout : int option
-end
\ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/type_Http_daemon.daemon.html ocaml-http-0.1.6/doc/html/type_Http_daemon.daemon.html --- ocaml-http-0.1.5/doc/html/type_Http_daemon.daemon.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/type_Http_daemon.daemon.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -Http_daemon.daemon - - -?addr:string -> ?port:int -> unit -> Http_types.daemon \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/type_Http_daemon.html ocaml-http-0.1.6/doc/html/type_Http_daemon.html --- ocaml-http-0.1.5/doc/html/type_Http_daemon.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/type_Http_daemon.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,88 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -Http_daemon - - -sig
-  val send_CRLF : Pervasives.out_channel -> unit
-  val send_status_line :
-    ?version:Http_types.version ->
-    code:Http_types.status_code -> Pervasives.out_channel -> unit
-  val get_basic_headers : unit -> (string * string) list
-  val send_basic_headers :
-    ?version:Http_types.version ->
-    code:Http_types.status_code -> Pervasives.out_channel -> unit
-  val send_header :
-    header:string -> value:string -> Pervasives.out_channel -> unit
-  val send_headers :
-    headers:(string * string) list -> Pervasives.out_channel -> unit
-  val send_file :
-    src:Http_types.file_source -> Pervasives.out_channel -> unit
-  val respond :
-    ?body:string ->
-    ?headers:(string * string) list ->
-    ?version:Http_types.version ->
-    ?code:Http_types.status_code -> Pervasives.out_channel -> unit
-  val respond_not_found :
-    url:string ->
-    ?version:Http_types.version -> Pervasives.out_channel -> unit
-  val respond_forbidden :
-    url:string ->
-    ?version:Http_types.version -> Pervasives.out_channel -> unit
-  val respond_redirect :
-    location:string ->
-    ?body:string ->
-    ?version:Http_types.version ->
-    ?code:Http_types.status_code -> Pervasives.out_channel -> unit
-  val respond_unauthorized :
-    ?version:Http_types.version ->
-    ?realm:string -> Pervasives.out_channel -> unit
-  val respond_error :
-    ?body:string ->
-    ?version:Http_types.version ->
-    ?code:Http_types.status_code -> Pervasives.out_channel -> unit
-  val respond_file :
-    fname:string ->
-    ?version:Http_types.version -> Pervasives.out_channel -> unit
-  val respond_with : Http_types.response -> Pervasives.out_channel -> unit
-  val main : Http_types.daemon_spec -> unit
-  val default_spec : Http_types.daemon_spec
-  val daemon_spec :
-    ?address:string ->
-    ?auth:(string * Http_types.auth_info) option ->
-    ?auto_close:bool ->
-    ?callback:(Http_types.request -> Pervasives.out_channel -> unit) ->
-    ?mode:Http_types.daemon_mode ->
-    ?port:int ->
-    ?root_dir:string option ->
-    ?exn_handler:(exn -> Pervasives.out_channel -> unit) option ->
-    ?timeout:int option -> unit -> Http_types.daemon_spec
-  class daemon : ?addr:string -> ?port:int -> unit -> Http_types.daemon
-  module Trivial :
-    sig
-      val callback : Http_types.request -> Pervasives.out_channel -> unit
-      val main : Http_types.daemon_spec -> unit
-    end
-end
\ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/type_Http_daemon.Trivial.html ocaml-http-0.1.6/doc/html/type_Http_daemon.Trivial.html --- ocaml-http-0.1.5/doc/html/type_Http_daemon.Trivial.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/type_Http_daemon.Trivial.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -Http_daemon.Trivial - - -sig
-  val callback : Http_types.request -> Pervasives.out_channel -> unit
-  val main : Http_types.daemon_spec -> unit
-end
\ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/type_Http_message.html ocaml-http-0.1.6/doc/html/type_Http_message.html --- ocaml-http-0.1.5/doc/html/type_Http_message.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/type_Http_message.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -Http_message - - -sig
-  class virtual message :
-    body:string ->
-    headers:(string * string) list ->
-    version:Http_types.version option ->
-    clisockaddr:Unix.sockaddr ->
-    srvsockaddr:Unix.sockaddr ->
-    object
-      method addBody : string -> unit
-      method addBodyBuf : Buffer.t -> unit
-      method addHeader : name:string -> value:string -> unit
-      method addHeaders : (string * string) list -> unit
-      method body : string
-      method bodyBuf : Buffer.t
-      method clientAddr : string
-      method clientPort : int
-      method clientSockaddr : Unix.sockaddr
-      method private virtual fstLineToString : string
-      method hasHeader : name:string -> bool
-      method header : name:string -> string
-      method headers : (string * string) list
-      method removeHeader : name:string -> unit
-      method replaceHeader : name:string -> value:string -> unit
-      method replaceHeaders : (string * string) list -> unit
-      method serialize : Pervasives.out_channel -> unit
-      method serverAddr : string
-      method serverPort : int
-      method serverSockaddr : Unix.sockaddr
-      method setBody : string -> unit
-      method setBodyBuf : Buffer.t -> unit
-      method setVersion : Http_types.version -> unit
-      method toString : string
-      method version : Http_types.version option
-    end
-end
\ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/type_Http_message.message.html ocaml-http-0.1.6/doc/html/type_Http_message.message.html --- ocaml-http-0.1.5/doc/html/type_Http_message.message.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/type_Http_message.message.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -Http_message.message - - -body:string ->
-headers:(string * string) list ->
-version:Http_types.version option ->
-clisockaddr:Unix.sockaddr ->
-srvsockaddr:Unix.sockaddr ->
-object
-  method addBody : string -> unit
-  method addBodyBuf : Buffer.t -> unit
-  method addHeader : name:string -> value:string -> unit
-  method addHeaders : (string * string) list -> unit
-  method body : string
-  method bodyBuf : Buffer.t
-  method clientAddr : string
-  method clientPort : int
-  method clientSockaddr : Unix.sockaddr
-  method private virtual fstLineToString : string
-  method hasHeader : name:string -> bool
-  method header : name:string -> string
-  method headers : (string * string) list
-  method removeHeader : name:string -> unit
-  method replaceHeader : name:string -> value:string -> unit
-  method replaceHeaders : (string * string) list -> unit
-  method serialize : Pervasives.out_channel -> unit
-  method serverAddr : string
-  method serverPort : int
-  method serverSockaddr : Unix.sockaddr
-  method setBody : string -> unit
-  method setBodyBuf : Buffer.t -> unit
-  method setVersion : Http_types.version -> unit
-  method toString : string
-  method version : Http_types.version option
-end
\ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/type_Http_misc.html ocaml-http-0.1.6/doc/html/type_Http_misc.html --- ocaml-http-0.1.5/doc/html/type_Http_misc.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/type_Http_misc.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -Http_misc - - -sig
-  val date_822 : unit -> string
-  val is_directory : string -> bool
-  val filesize : string -> int
-  val strip_trailing_slash : string -> string
-  val strip_heading_slash : string -> string
-  val ls : Unix.dir_handle -> string list
-  val string_explode : string -> char list
-  val string_implode : char list -> string
-  val reason_phrase_of_code : int -> string
-  val build_sockaddr : string * int -> Unix.sockaddr
-  val explode_sockaddr : Unix.sockaddr -> string * int
-  val peername_of_out_channel : Pervasives.out_channel -> Unix.sockaddr
-  val peername_of_in_channel : Pervasives.in_channel -> Unix.sockaddr
-  val sockname_of_out_channel : Pervasives.out_channel -> Unix.sockaddr
-  val sockname_of_in_channel : Pervasives.in_channel -> Unix.sockaddr
-  val buf_of_inchan : ?limit:int -> Pervasives.in_channel -> Buffer.t
-  val list_assoc_all : '-> ('a * 'b) list -> 'b list
-  val warn : string -> unit
-  val error : string -> unit
-  val finally : (unit -> unit) -> ('-> 'b) -> '-> 'b
-end
\ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/type_Http_parser.html ocaml-http-0.1.6/doc/html/type_Http_parser.html --- ocaml-http-0.1.5/doc/html/type_Http_parser.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/type_Http_parser.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -Http_parser - - -sig
-  val split_query_params : string -> (string * string) list
-  val parse_request_fst_line :
-    Pervasives.in_channel ->
-    Http_types.meth * Neturl.url * Http_types.version option
-  val parse_response_fst_line :
-    Pervasives.in_channel -> Http_types.version * Http_types.status
-  val parse_query_get_params : Neturl.url -> (string * string) list
-  val parse_path : Neturl.url -> string
-  val parse_headers : Pervasives.in_channel -> (string * string) list
-  val parse_cookies : string -> (string * string) list
-  val parse_request :
-    Pervasives.in_channel -> string * (string * string) list
-end
\ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/type_Http_parser_sanity.html ocaml-http-0.1.6/doc/html/type_Http_parser_sanity.html --- ocaml-http-0.1.5/doc/html/type_Http_parser_sanity.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/type_Http_parser_sanity.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -Http_parser_sanity - - -sig
-  val heal_header_name : string -> unit
-  val heal_header_value : string -> unit
-  val heal_header : string * string -> unit
-  val normalize_header_value : string -> string
-  val url_of_string : string -> Neturl.url
-  val string_of_url : Neturl.url -> string
-end
\ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/type_Http_request.html ocaml-http-0.1.6/doc/html/type_Http_request.html --- ocaml-http-0.1.5/doc/html/type_Http_request.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/type_Http_request.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -Http_request - - -sig class request : Pervasives.in_channel -> Http_types.request end \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/type_Http_request.request.html ocaml-http-0.1.6/doc/html/type_Http_request.request.html --- ocaml-http-0.1.5/doc/html/type_Http_request.request.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/type_Http_request.request.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -Http_request.request - - -Pervasives.in_channel -> Http_types.request \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/type_Http_response.html ocaml-http-0.1.6/doc/html/type_Http_response.html --- ocaml-http-0.1.5/doc/html/type_Http_response.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/type_Http_response.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -Http_response - - -sig
-  class response :
-    ?body:string ->
-    ?headers:(string * string) list ->
-    ?version:Http_types.version ->
-    ?clisockaddr:Unix.sockaddr ->
-    ?srvsockaddr:Unix.sockaddr ->
-    ?code:int -> ?status:Http_types.status -> unit -> Http_types.response
-end
\ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/type_Http_response.response.html ocaml-http-0.1.6/doc/html/type_Http_response.response.html --- ocaml-http-0.1.5/doc/html/type_Http_response.response.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/type_Http_response.response.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -Http_response.response - - -?body:string ->
-?headers:(string * string) list ->
-?version:Http_types.version ->
-?clisockaddr:Unix.sockaddr ->
-?srvsockaddr:Unix.sockaddr ->
-?code:int -> ?status:Http_types.status -> unit -> Http_types.response
\ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/type_Http_tcp_server.html ocaml-http-0.1.6/doc/html/type_Http_tcp_server.html --- ocaml-http-0.1.5/doc/html/type_Http_tcp_server.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/type_Http_tcp_server.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -Http_tcp_server - - -sig
-  val simple : Http_types.tcp_server
-  val thread : Http_types.tcp_server
-  val fork : Http_types.tcp_server
-  val init_socket : Unix.sockaddr -> Unix.file_descr
-end
\ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/type_Http_threaded_tcp_server.html ocaml-http-0.1.6/doc/html/type_Http_threaded_tcp_server.html --- ocaml-http-0.1.5/doc/html/type_Http_threaded_tcp_server.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/type_Http_threaded_tcp_server.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -Http_threaded_tcp_server - - -sig val serve : ('-> 'b) -> '-> unit end \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/type_Http_types.connection.html ocaml-http-0.1.6/doc/html/type_Http_types.connection.html --- ocaml-http-0.1.5/doc/html/type_Http_types.connection.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/type_Http_types.connection.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -Http_types.connection - - -object
-  method close : unit
-  method getRequest : Http_types.request option
-  method respond_with : Http_types.response -> unit
-end
\ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/type_Http_types.daemon.html ocaml-http-0.1.6/doc/html/type_Http_types.daemon.html --- ocaml-http-0.1.5/doc/html/type_Http_types.daemon.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/type_Http_types.daemon.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -Http_types.daemon - - -object
-  method accept : Http_types.connection
-  method getRequest : Http_types.request * Http_types.connection
-end
\ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/type_Http_types.html ocaml-http-0.1.6/doc/html/type_Http_types.html --- ocaml-http-0.1.5/doc/html/type_Http_types.html 2010-12-31 02:33:00.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/type_Http_types.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,259 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -Http_types - - -sig
-  type version = [ `HTTP_1_0 | `HTTP_1_1 ]
-  type meth = [ `GET | `POST ]
-  type daemon_mode = [ `Fork | `Single | `Thread ]
-  type tcp_server =
-      sockaddr:Unix.sockaddr ->
-      timeout:int option ->
-      (Pervasives.in_channel -> Pervasives.out_channel -> unit) -> unit
-  type auth_info = [ `Basic of string * string ]
-  type informational_substatus = [ `Continue | `Switching_protocols ]
-  type success_substatus =
-      [ `Accepted
-      | `Created
-      | `No_content
-      | `Non_authoritative_information
-      | `OK
-      | `Partial_content
-      | `Reset_content ]
-  type redirection_substatus =
-      [ `Found
-      | `Moved_permanently
-      | `Multiple_choices
-      | `Not_modified
-      | `See_other
-      | `Temporary_redirect
-      | `Use_proxy ]
-  type client_error_substatus =
-      [ `Bad_request
-      | `Conflict
-      | `Expectation_failed
-      | `Forbidden
-      | `Gone
-      | `Length_required
-      | `Method_not_allowed
-      | `Not_acceptable
-      | `Not_found
-      | `Payment_required
-      | `Precondition_failed
-      | `Proxy_authentication_required
-      | `Request_URI_too_large
-      | `Request_entity_too_large
-      | `Request_time_out
-      | `Requested_range_not_satisfiable
-      | `Unauthorized
-      | `Unsupported_media_type ]
-  type server_error_substatus =
-      [ `Bad_gateway
-      | `Gateway_time_out
-      | `HTTP_version_not_supported
-      | `Internal_server_error
-      | `Not_implemented
-      | `Service_unavailable ]
-  type informational_status =
-      [ `Informational of Http_types.informational_substatus ]
-  type success_status = [ `Success of Http_types.success_substatus ]
-  type redirection_status =
-      [ `Redirection of Http_types.redirection_substatus ]
-  type client_error_status =
-      [ `Client_error of Http_types.client_error_substatus ]
-  type server_error_status =
-      [ `Server_error of Http_types.server_error_substatus ]
-  type error_status =
-      [ `Client_error of Http_types.client_error_substatus
-      | `Server_error of Http_types.server_error_substatus ]
-  type status =
-      [ `Client_error of Http_types.client_error_substatus
-      | `Informational of Http_types.informational_substatus
-      | `Redirection of Http_types.redirection_substatus
-      | `Server_error of Http_types.server_error_substatus
-      | `Success of Http_types.success_substatus ]
-  type status_code = [ `Code of int | `Status of Http_types.status ]
-  type file_source = FileSrc of string | InChanSrc of Pervasives.in_channel
-  exception Invalid_header of string
-  exception Invalid_header_name of string
-  exception Invalid_header_value of string
-  exception Invalid_HTTP_version of string
-  exception Invalid_HTTP_method of string
-  exception Invalid_code of int
-  exception Malformed_URL of string
-  exception Malformed_query of string
-  exception Malformed_query_part of string * string
-  exception Malformed_request_URI of string
-  exception Malformed_cookies of string
-  exception Malformed_request of string
-  exception Malformed_response of string
-  exception Param_not_found of string
-  exception Invalid_status_line of string
-  exception Header_not_found of string
-  exception Quit
-  exception Unauthorized of string
-  class type message =
-    object
-      method addBody : string -> unit
-      method addBodyBuf : Buffer.t -> unit
-      method addHeader : name:string -> value:string -> unit
-      method addHeaders : (string * string) list -> unit
-      method body : string
-      method bodyBuf : Buffer.t
-      method clientAddr : string
-      method clientPort : int
-      method clientSockaddr : Unix.sockaddr
-      method hasHeader : name:string -> bool
-      method header : name:string -> string
-      method headers : (string * string) list
-      method removeHeader : name:string -> unit
-      method replaceHeader : name:string -> value:string -> unit
-      method replaceHeaders : (string * string) list -> unit
-      method serialize : Pervasives.out_channel -> unit
-      method serverAddr : string
-      method serverPort : int
-      method serverSockaddr : Unix.sockaddr
-      method setBody : string -> unit
-      method setBodyBuf : Buffer.t -> unit
-      method setVersion : Http_types.version -> unit
-      method toString : string
-      method version : Http_types.version option
-    end
-  class type request =
-    object
-      method addBody : string -> unit
-      method addBodyBuf : Buffer.t -> unit
-      method addHeader : name:string -> value:string -> unit
-      method addHeaders : (string * string) list -> unit
-      method authorization : Http_types.auth_info option
-      method body : string
-      method bodyBuf : Buffer.t
-      method clientAddr : string
-      method clientPort : int
-      method clientSockaddr : Unix.sockaddr
-      method cookies : (string * string) list option
-      method hasHeader : name:string -> bool
-      method header : name:string -> string
-      method headers : (string * string) list
-      method meth : Http_types.meth
-      method param :
-        ?meth:Http_types.meth -> ?default:string -> string -> string
-      method paramAll : ?meth:Http_types.meth -> string -> string list
-      method params : (string * string) list
-      method params_GET : (string * string) list
-      method params_POST : (string * string) list
-      method path : string
-      method removeHeader : name:string -> unit
-      method replaceHeader : name:string -> value:string -> unit
-      method replaceHeaders : (string * string) list -> unit
-      method serialize : out_channel -> unit
-      method serverAddr : string
-      method serverPort : int
-      method serverSockaddr : Unix.sockaddr
-      method setBody : string -> unit
-      method setBodyBuf : Buffer.t -> unit
-      method setVersion : version -> unit
-      method toString : string
-      method uri : string
-      method version : version option
-    end
-  class type response =
-    object
-      method addBasicHeaders : unit
-      method addBody : string -> unit
-      method addBodyBuf : Buffer.t -> unit
-      method addHeader : name:string -> value:string -> unit
-      method addHeaders : (string * string) list -> unit
-      method body : string
-      method bodyBuf : Buffer.t
-      method clientAddr : string
-      method clientPort : int
-      method clientSockaddr : Unix.sockaddr
-      method code : int
-      method connection : string
-      method contentEncoding : string
-      method contentType : string
-      method date : string
-      method expires : string
-      method hasHeader : name:string -> bool
-      method header : name:string -> string
-      method headers : (string * string) list
-      method isClientError : bool
-      method isError : bool
-      method isInformational : bool
-      method isRedirection : bool
-      method isServerError : bool
-      method isSuccess : bool
-      method reason : string
-      method removeHeader : name:string -> unit
-      method replaceHeader : name:string -> value:string -> unit
-      method replaceHeaders : (string * string) list -> unit
-      method serialize : out_channel -> unit
-      method server : string
-      method serverAddr : string
-      method serverPort : int
-      method serverSockaddr : Unix.sockaddr
-      method setBody : string -> unit
-      method setBodyBuf : Buffer.t -> unit
-      method setCode : int -> unit
-      method setConnection : string -> unit
-      method setContentEncoding : string -> unit
-      method setContentType : string -> unit
-      method setDate : string -> unit
-      method setExpires : string -> unit
-      method setReason : string -> unit
-      method setServer : string -> unit
-      method setStatus : Http_types.status -> unit
-      method setStatusLine : string -> unit
-      method setVersion : version -> unit
-      method status : Http_types.status
-      method statusLine : string
-      method toString : string
-      method version : version option
-    end
-  type daemon_spec = {
-    address : string;
-    auth : (string * Http_types.auth_info) option;
-    callback : Http_types.request -> Pervasives.out_channel -> unit;
-    mode : Http_types.daemon_mode;
-    port : int;
-    root_dir : string option;
-    exn_handler : (exn -> Pervasives.out_channel -> unit) option;
-    timeout : int option;
-    auto_close : bool;
-  }
-  class type connection =
-    object
-      method close : unit
-      method getRequest : Http_types.request option
-      method respond_with : Http_types.response -> unit
-    end
-  class type daemon =
-    object
-      method accept : Http_types.connection
-      method getRequest : Http_types.request * Http_types.connection
-    end
-end
\ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/type_Http_types.message.html ocaml-http-0.1.6/doc/html/type_Http_types.message.html --- ocaml-http-0.1.5/doc/html/type_Http_types.message.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/type_Http_types.message.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -Http_types.message - - -object
-  method addBody : string -> unit
-  method addBodyBuf : Buffer.t -> unit
-  method addHeader : name:string -> value:string -> unit
-  method addHeaders : (string * string) list -> unit
-  method body : string
-  method bodyBuf : Buffer.t
-  method clientAddr : string
-  method clientPort : int
-  method clientSockaddr : Unix.sockaddr
-  method hasHeader : name:string -> bool
-  method header : name:string -> string
-  method headers : (string * string) list
-  method removeHeader : name:string -> unit
-  method replaceHeader : name:string -> value:string -> unit
-  method replaceHeaders : (string * string) list -> unit
-  method serialize : Pervasives.out_channel -> unit
-  method serverAddr : string
-  method serverPort : int
-  method serverSockaddr : Unix.sockaddr
-  method setBody : string -> unit
-  method setBodyBuf : Buffer.t -> unit
-  method setVersion : Http_types.version -> unit
-  method toString : string
-  method version : Http_types.version option
-end
\ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/type_Http_types.request.html ocaml-http-0.1.6/doc/html/type_Http_types.request.html --- ocaml-http-0.1.5/doc/html/type_Http_types.request.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/type_Http_types.request.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -Http_types.request - - -object
-  method addBody : string -> unit
-  method addBodyBuf : Buffer.t -> unit
-  method addHeader : name:string -> value:string -> unit
-  method addHeaders : (string * string) list -> unit
-  method authorization : Http_types.auth_info option
-  method body : string
-  method bodyBuf : Buffer.t
-  method clientAddr : string
-  method clientPort : int
-  method clientSockaddr : Unix.sockaddr
-  method cookies : (string * string) list option
-  method hasHeader : name:string -> bool
-  method header : name:string -> string
-  method headers : (string * string) list
-  method meth : Http_types.meth
-  method param : ?meth:Http_types.meth -> ?default:string -> string -> string
-  method paramAll : ?meth:Http_types.meth -> string -> string list
-  method params : (string * string) list
-  method params_GET : (string * string) list
-  method params_POST : (string * string) list
-  method path : string
-  method removeHeader : name:string -> unit
-  method replaceHeader : name:string -> value:string -> unit
-  method replaceHeaders : (string * string) list -> unit
-  method serialize : out_channel -> unit
-  method serverAddr : string
-  method serverPort : int
-  method serverSockaddr : Unix.sockaddr
-  method setBody : string -> unit
-  method setBodyBuf : Buffer.t -> unit
-  method setVersion : version -> unit
-  method toString : string
-  method uri : string
-  method version : version option
-end
\ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/type_Http_types.response.html ocaml-http-0.1.6/doc/html/type_Http_types.response.html --- ocaml-http-0.1.5/doc/html/type_Http_types.response.html 2010-12-31 02:32:59.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/type_Http_types.response.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -Http_types.response - - -object
-  method addBasicHeaders : unit
-  method addBody : string -> unit
-  method addBodyBuf : Buffer.t -> unit
-  method addHeader : name:string -> value:string -> unit
-  method addHeaders : (string * string) list -> unit
-  method body : string
-  method bodyBuf : Buffer.t
-  method clientAddr : string
-  method clientPort : int
-  method clientSockaddr : Unix.sockaddr
-  method code : int
-  method connection : string
-  method contentEncoding : string
-  method contentType : string
-  method date : string
-  method expires : string
-  method hasHeader : name:string -> bool
-  method header : name:string -> string
-  method headers : (string * string) list
-  method isClientError : bool
-  method isError : bool
-  method isInformational : bool
-  method isRedirection : bool
-  method isServerError : bool
-  method isSuccess : bool
-  method reason : string
-  method removeHeader : name:string -> unit
-  method replaceHeader : name:string -> value:string -> unit
-  method replaceHeaders : (string * string) list -> unit
-  method serialize : out_channel -> unit
-  method server : string
-  method serverAddr : string
-  method serverPort : int
-  method serverSockaddr : Unix.sockaddr
-  method setBody : string -> unit
-  method setBodyBuf : Buffer.t -> unit
-  method setCode : int -> unit
-  method setConnection : string -> unit
-  method setContentEncoding : string -> unit
-  method setContentType : string -> unit
-  method setDate : string -> unit
-  method setExpires : string -> unit
-  method setReason : string -> unit
-  method setServer : string -> unit
-  method setStatus : Http_types.status -> unit
-  method setStatusLine : string -> unit
-  method setVersion : version -> unit
-  method status : Http_types.status
-  method statusLine : string
-  method toString : string
-  method version : version option
-end
\ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/html/type_Http_user_agent.html ocaml-http-0.1.6/doc/html/type_Http_user_agent.html --- ocaml-http-0.1.5/doc/html/type_Http_user_agent.html 2010-12-31 02:33:00.000000000 +0000 +++ ocaml-http-0.1.6/doc/html/type_Http_user_agent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -Http_user_agent - - -sig
-  exception Http_error of (int * string)
-  val get :
-    ?head_callback:(Http_types.status -> (string * string) list -> unit) ->
-    string -> string
-  val get_iter :
-    ?head_callback:(Http_types.status -> (string * string) list -> unit) ->
-    (string -> unit) -> string -> unit
-  val head : string -> string
-end
\ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/latex/ocamldoc.sty ocaml-http-0.1.6/doc/latex/ocamldoc.sty --- ocaml-http-0.1.5/doc/latex/ocamldoc.sty 2010-12-31 02:33:01.000000000 +0000 +++ ocaml-http-0.1.6/doc/latex/ocamldoc.sty 1970-01-01 00:00:00.000000000 +0000 @@ -1,75 +0,0 @@ - -%% Support macros for LaTeX documentation generated by ocamldoc. -%% This file is in the public domain; do what you want with it. - -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{ocamldoc} - [2001/12/04 v1.0 ocamldoc support] - -\newenvironment{ocamldoccode}{% - \bgroup - \leftskip\@totalleftmargin - \rightskip\z@skip - \parindent\z@ - \parfillskip\@flushglue - \parskip\z@skip - %\noindent - \@@par\smallskip - \@tempswafalse - \def\par{% - \if@tempswa - \leavevmode\null\@@par\penalty\interlinepenalty - \else - \@tempswatrue - \ifhmode\@@par\penalty\interlinepenalty\fi - \fi} - \obeylines - \verbatim@font - \let\org@prime~% - \@noligs - \let\org@dospecials\dospecials - \g@remfrom@specials{\\} - \g@remfrom@specials{\{} - \g@remfrom@specials{\}} - \let\do\@makeother - \dospecials - \let\dospecials\org@dospecials - \frenchspacing\@vobeyspaces - \everypar \expandafter{\the\everypar \unpenalty}} -{\egroup\par} - -\def\g@remfrom@specials#1{% - \def\@new@specials{} - \def\@remove##1{% - \ifx##1#1\else - \g@addto@macro\@new@specials{\do ##1}\fi} - \let\do\@remove\dospecials - \let\dospecials\@new@specials - } - -\newenvironment{ocamldocdescription} -{\list{}{\rightmargin0pt \topsep0pt}\raggedright\item\noindent\relax\ignorespaces} -{\endlist\medskip} - -\newenvironment{ocamldoccomment} -{\list{}{\leftmargin 2\leftmargini \rightmargin0pt \topsep0pt}\raggedright\item\noindent\relax} -{\endlist} - -\let \ocamldocparagraph \paragraph -\def \paragraph #1{\ocamldocparagraph {#1}\noindent} -\let \ocamldocsubparagraph \subparagraph -\def \subparagraph #1{\ocamldocsubparagraph {#1}\noindent} - -\let\ocamldocvspace\vspace - -\newenvironment{ocamldocindent}{\list{}{}\item\relax}{\endlist} -\newenvironment{ocamldocsigend} - {\noindent\quad\texttt{sig}\ocamldocindent} - {\endocamldocindent\vskip -\lastskip - \noindent\quad\texttt{end}\medskip} -\newenvironment{ocamldocobjectend} - {\noindent\quad\texttt{object}\ocamldocindent} - {\endocamldocindent\vskip -\lastskip - \noindent\quad\texttt{end}\medskip} - -\endinput diff -Nru ocaml-http-0.1.5/doc/latex/ocaml-http.aux ocaml-http-0.1.6/doc/latex/ocaml-http.aux --- ocaml-http-0.1.5/doc/latex/ocaml-http.aux 2010-12-31 02:33:02.000000000 +0000 +++ ocaml-http-0.1.6/doc/latex/ocaml-http.aux 1970-01-01 00:00:00.000000000 +0000 @@ -1,270 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {1}Module {\tt {Cookie\_lexer}}}{1}} -\newlabel{module:Cookie-underscorelexer}{{1}{1}} -\newlabel{type:Cookie-underscorelexer.cookie-underscoretoken}{{1}{1}} -\newlabel{val:Cookie-underscorelexer.token}{{1}{1}} -\@writefile{toc}{\contentsline {section}{\numberline {2}Module {\tt {Http\_common}} : Common functionalities shared by other OCaml HTTP modules}{2}} -\newlabel{module:Http-underscorecommon}{{2}{2}} -\newlabel{val:Http-underscorecommon.debug}{{2}{2}} -\newlabel{val:Http-underscorecommon.debug-underscoreprint}{{2}{2}} -\newlabel{val:Http-underscorecommon.http-underscoreversion}{{2}{2}} -\newlabel{val:Http-underscorecommon.server-underscorestring}{{2}{2}} -\newlabel{val:Http-underscorecommon.string-underscoreof-underscoreversion}{{2}{2}} -\newlabel{val:Http-underscorecommon.version-underscoreof-underscorestring}{{2}{2}} -\newlabel{val:Http-underscorecommon.string-underscoreof-underscoremethod}{{2}{2}} -\newlabel{val:Http-underscorecommon.method-underscoreof-underscorestring}{{2}{2}} -\newlabel{val:Http-underscorecommon.status-underscoreof-underscorecode}{{2}{2}} -\newlabel{val:Http-underscorecommon.code-underscoreof-underscorestatus}{{2}{2}} -\newlabel{val:Http-underscorecommon.is-underscoreinformational}{{2}{2}} -\newlabel{val:Http-underscorecommon.is-underscoresuccess}{{2}{2}} -\newlabel{val:Http-underscorecommon.is-underscoreredirection}{{2}{3}} -\newlabel{val:Http-underscorecommon.is-underscoreclient-underscoreerror}{{2}{3}} -\newlabel{val:Http-underscorecommon.is-underscoreserver-underscoreerror}{{2}{3}} -\newlabel{val:Http-underscorecommon.is-underscoreerror}{{2}{3}} -\@writefile{toc}{\contentsline {section}{\numberline {3}Module {\tt {Http\_constants}} : Constants}{3}} -\newlabel{module:Http-underscoreconstants}{{3}{3}} -\newlabel{val:Http-underscoreconstants.version}{{3}{3}} -\newlabel{val:Http-underscoreconstants.server-underscorestring}{{3}{3}} -\newlabel{val:Http-underscoreconstants.crlf}{{3}{3}} -\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}daemon default values}{3}} -\newlabel{val:Http-underscoreconstants.default-underscoreaddr}{{3.1}{3}} -\newlabel{val:Http-underscoreconstants.default-underscoreauth}{{3.1}{3}} -\newlabel{val:Http-underscoreconstants.default-underscoreauto-underscoreclose}{{3.1}{3}} -\newlabel{val:Http-underscoreconstants.default-underscorecallback}{{3.1}{3}} -\newlabel{val:Http-underscoreconstants.default-underscoremode}{{3.1}{3}} -\newlabel{val:Http-underscoreconstants.default-underscoreport}{{3.1}{3}} -\newlabel{val:Http-underscoreconstants.default-underscoreroot-underscoredir}{{3.1}{3}} -\newlabel{val:Http-underscoreconstants.default-underscoreexn-underscorehandler}{{3.1}{3}} -\newlabel{val:Http-underscoreconstants.default-underscoretimeout}{{3.1}{3}} -\@writefile{toc}{\contentsline {section}{\numberline {4}Module {\tt {Http\_daemon}} : Main OCaml HTTP module.}{4}} -\newlabel{module:Http-underscoredaemon}{{4}{4}} -\newlabel{val:Http-underscoredaemon.send-underscoreCRLF}{{4}{4}} -\newlabel{val:Http-underscoredaemon.send-underscorestatus-underscoreline}{{4}{4}} -\newlabel{val:Http-underscoredaemon.get-underscorebasic-underscoreheaders}{{4}{4}} -\newlabel{val:Http-underscoredaemon.send-underscorebasic-underscoreheaders}{{4}{4}} -\newlabel{val:Http-underscoredaemon.send-underscoreheader}{{4}{4}} -\newlabel{val:Http-underscoredaemon.send-underscoreheaders}{{4}{4}} -\newlabel{val:Http-underscoredaemon.send-underscorefile}{{4}{4}} -\newlabel{val:Http-underscoredaemon.respond}{{4}{4}} -\newlabel{val:Http-underscoredaemon.respond-underscorenot-underscorefound}{{4}{5}} -\newlabel{val:Http-underscoredaemon.respond-underscoreforbidden}{{4}{5}} -\newlabel{val:Http-underscoredaemon.respond-underscoreredirect}{{4}{5}} -\newlabel{val:Http-underscoredaemon.respond-underscoreunauthorized}{{4}{5}} -\newlabel{val:Http-underscoredaemon.respond-underscoreerror}{{4}{5}} -\newlabel{val:Http-underscoredaemon.respond-underscorefile}{{4}{5}} -\newlabel{val:Http-underscoredaemon.respond-underscorewith}{{4}{5}} -\newlabel{val:Http-underscoredaemon.main}{{4}{5}} -\newlabel{val:Http-underscoredaemon.default-underscorespec}{{4}{6}} -\newlabel{val:Http-underscoredaemon.daemon-underscorespec}{{4}{6}} -\newlabel{class:Http-underscoredaemon.daemon}{{4}{6}} -\newlabel{module:Http-underscoredaemon.Trivial}{{4}{6}} -\newlabel{val:Http-underscoredaemon.Trivial.callback}{{4}{6}} -\newlabel{val:Http-underscoredaemon.Trivial.main}{{4}{6}} -\@writefile{toc}{\contentsline {section}{\numberline {5}Module {\tt {Http\_message}} : Object Oriented representation of HTTP messages}{7}} -\newlabel{module:Http-underscoremessage}{{5}{7}} -\newlabel{class:Http-underscoremessage.message}{{5}{7}} -\newlabel{method:Http-underscoremessage.message.version}{{5}{7}} -\newlabel{method:Http-underscoremessage.message.setVersion}{{5}{7}} -\newlabel{method:Http-underscoremessage.message.body}{{5}{7}} -\newlabel{method:Http-underscoremessage.message.setBody}{{5}{7}} -\newlabel{method:Http-underscoremessage.message.bodyBuf}{{5}{7}} -\newlabel{method:Http-underscoremessage.message.setBodyBuf}{{5}{7}} -\newlabel{method:Http-underscoremessage.message.addBody}{{5}{7}} -\newlabel{method:Http-underscoremessage.message.addBodyBuf}{{5}{7}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.0.1}{\it header name comparison are performed in a case-insensitive manner as required by RFC2616, actually the implementation works converting all header names in lowercase}}{7}} -\newlabel{method:Http-underscoremessage.message.addHeader}{{5.0.1}{7}} -\newlabel{method:Http-underscoremessage.message.addHeaders}{{5.0.1}{7}} -\newlabel{method:Http-underscoremessage.message.replaceHeader}{{5.0.1}{8}} -\newlabel{method:Http-underscoremessage.message.replaceHeaders}{{5.0.1}{8}} -\newlabel{method:Http-underscoremessage.message.removeHeader}{{5.0.1}{8}} -\newlabel{method:Http-underscoremessage.message.hasHeader}{{5.0.1}{8}} -\newlabel{method:Http-underscoremessage.message.header}{{5.0.1}{8}} -\newlabel{method:Http-underscoremessage.message.headers}{{5.0.1}{8}} -\newlabel{method:Http-underscoremessage.message.clientSockaddr}{{5.0.1}{8}} -\newlabel{method:Http-underscoremessage.message.clientAddr}{{5.0.1}{8}} -\newlabel{method:Http-underscoremessage.message.clientPort}{{5.0.1}{8}} -\newlabel{method:Http-underscoremessage.message.serverSockaddr}{{5.0.1}{8}} -\newlabel{method:Http-underscoremessage.message.serverAddr}{{5.0.1}{8}} -\newlabel{method:Http-underscoremessage.message.serverPort}{{5.0.1}{8}} -\newlabel{method:Http-underscoremessage.message.fstLineToString}{{5.0.1}{8}} -\newlabel{method:Http-underscoremessage.message.toString}{{5.0.1}{9}} -\newlabel{method:Http-underscoremessage.message.serialize}{{5.0.1}{9}} -\@writefile{toc}{\contentsline {section}{\numberline {6}Module {\tt {Http\_misc}} : Helpers and other not better classified functions which should not be exposed in the final API}{9}} -\newlabel{module:Http-underscoremisc}{{6}{9}} -\newlabel{val:Http-underscoremisc.date-underscore822}{{6}{9}} -\newlabel{val:Http-underscoremisc.is-underscoredirectory}{{6}{9}} -\newlabel{val:Http-underscoremisc.filesize}{{6}{9}} -\newlabel{val:Http-underscoremisc.strip-underscoretrailing-underscoreslash}{{6}{9}} -\newlabel{val:Http-underscoremisc.strip-underscoreheading-underscoreslash}{{6}{9}} -\newlabel{val:Http-underscoremisc.ls}{{6}{9}} -\newlabel{val:Http-underscoremisc.string-underscoreexplode}{{6}{9}} -\newlabel{val:Http-underscoremisc.string-underscoreimplode}{{6}{10}} -\newlabel{val:Http-underscoremisc.reason-underscorephrase-underscoreof-underscorecode}{{6}{10}} -\newlabel{val:Http-underscoremisc.build-underscoresockaddr}{{6}{10}} -\newlabel{val:Http-underscoremisc.explode-underscoresockaddr}{{6}{10}} -\newlabel{val:Http-underscoremisc.peername-underscoreof-underscoreout-underscorechannel}{{6}{10}} -\newlabel{val:Http-underscoremisc.peername-underscoreof-underscorein-underscorechannel}{{6}{10}} -\newlabel{val:Http-underscoremisc.sockname-underscoreof-underscoreout-underscorechannel}{{6}{10}} -\newlabel{val:Http-underscoremisc.sockname-underscoreof-underscorein-underscorechannel}{{6}{10}} -\newlabel{val:Http-underscoremisc.buf-underscoreof-underscoreinchan}{{6}{10}} -\newlabel{val:Http-underscoremisc.list-underscoreassoc-underscoreall}{{6}{10}} -\newlabel{val:Http-underscoremisc.warn}{{6}{10}} -\newlabel{val:Http-underscoremisc.error}{{6}{10}} -\newlabel{val:Http-underscoremisc.finally}{{6}{10}} -\@writefile{toc}{\contentsline {section}{\numberline {7}Module {\tt {Http\_parser}} : HTTP messages parsing}{11}} -\newlabel{module:Http-underscoreparser}{{7}{11}} -\newlabel{val:Http-underscoreparser.split-underscorequery-underscoreparams}{{7}{11}} -\newlabel{val:Http-underscoreparser.parse-underscorerequest-underscorefst-underscoreline}{{7}{11}} -\newlabel{val:Http-underscoreparser.parse-underscoreresponse-underscorefst-underscoreline}{{7}{11}} -\newlabel{val:Http-underscoreparser.parse-underscorequery-underscoreget-underscoreparams}{{7}{11}} -\newlabel{val:Http-underscoreparser.parse-underscorepath}{{7}{11}} -\newlabel{val:Http-underscoreparser.parse-underscoreheaders}{{7}{11}} -\newlabel{val:Http-underscoreparser.parse-underscorecookies}{{7}{11}} -\newlabel{val:Http-underscoreparser.parse-underscorerequest}{{7}{12}} -\@writefile{toc}{\contentsline {section}{\numberline {8}Module {\tt {Http\_parser\_sanity}} : Sanity test functions related to HTTP message parsing}{12}} -\newlabel{module:Http-underscoreparser-underscoresanity}{{8}{12}} -\newlabel{val:Http-underscoreparser-underscoresanity.heal-underscoreheader-underscorename}{{8}{12}} -\newlabel{val:Http-underscoreparser-underscoresanity.heal-underscoreheader-underscorevalue}{{8}{12}} -\newlabel{val:Http-underscoreparser-underscoresanity.heal-underscoreheader}{{8}{12}} -\newlabel{val:Http-underscoreparser-underscoresanity.normalize-underscoreheader-underscorevalue}{{8}{12}} -\newlabel{val:Http-underscoreparser-underscoresanity.url-underscoreof-underscorestring}{{8}{12}} -\newlabel{val:Http-underscoreparser-underscoresanity.string-underscoreof-underscoreurl}{{8}{12}} -\@writefile{toc}{\contentsline {section}{\numberline {9}Module {\tt {Http\_request}} : Object Oriented representation of HTTP requests}{12}} -\newlabel{module:Http-underscorerequest}{{9}{12}} -\newlabel{class:Http-underscorerequest.request}{{9}{12}} -\@writefile{toc}{\contentsline {section}{\numberline {10}Module {\tt {Http\_response}} : Object Oriented representation of HTTP responses}{13}} -\newlabel{module:Http-underscoreresponse}{{10}{13}} -\newlabel{class:Http-underscoreresponse.response}{{10}{13}} -\@writefile{toc}{\contentsline {section}{\numberline {11}Module {\tt {Http\_tcp\_server}} : TCP servers used as low-levels for HTTP daemons}{13}} -\newlabel{module:Http-underscoretcp-underscoreserver}{{11}{13}} -\@writefile{toc}{\contentsline {subsection}{\numberline {11.1}servers}{13}} -\newlabel{val:Http-underscoretcp-underscoreserver.simple}{{11.1}{13}} -\newlabel{val:Http-underscoretcp-underscoreserver.thread}{{11.1}{13}} -\newlabel{val:Http-underscoretcp-underscoreserver.fork}{{11.1}{13}} -\@writefile{toc}{\contentsline {subsection}{\numberline {11.2}low level functions}{13}} -\newlabel{val:Http-underscoretcp-underscoreserver.init-underscoresocket}{{11.2}{13}} -\@writefile{toc}{\contentsline {section}{\numberline {12}Module {\tt {Http\_threaded\_tcp\_server}} : Multithreaded part of Http\_tcp\_server}{13}} -\newlabel{module:Http-underscorethreaded-underscoretcp-underscoreserver}{{12}{13}} -\newlabel{val:Http-underscorethreaded-underscoretcp-underscoreserver.serve}{{12}{13}} -\@writefile{toc}{\contentsline {section}{\numberline {13}Module {\tt {Http\_types}} : Type definitions}{13}} -\newlabel{module:Http-underscoretypes}{{13}{13}} -\newlabel{type:Http-underscoretypes.version}{{13}{13}} -\newlabel{type:Http-underscoretypes.meth}{{13}{14}} -\newlabel{type:Http-underscoretypes.daemon-underscoremode}{{13}{14}} -\newlabel{type:Http-underscoretypes.tcp-underscoreserver}{{13}{14}} -\newlabel{type:Http-underscoretypes.auth-underscoreinfo}{{13}{14}} -\newlabel{type:Http-underscoretypes.informational-underscoresubstatus}{{13}{14}} -\newlabel{type:Http-underscoretypes.success-underscoresubstatus}{{13}{14}} -\newlabel{type:Http-underscoretypes.redirection-underscoresubstatus}{{13}{14}} -\newlabel{type:Http-underscoretypes.client-underscoreerror-underscoresubstatus}{{13}{15}} -\newlabel{type:Http-underscoretypes.server-underscoreerror-underscoresubstatus}{{13}{15}} -\newlabel{type:Http-underscoretypes.informational-underscorestatus}{{13}{15}} -\newlabel{type:Http-underscoretypes.success-underscorestatus}{{13}{15}} -\newlabel{type:Http-underscoretypes.redirection-underscorestatus}{{13}{15}} -\newlabel{type:Http-underscoretypes.client-underscoreerror-underscorestatus}{{13}{15}} -\newlabel{type:Http-underscoretypes.server-underscoreerror-underscorestatus}{{13}{15}} -\newlabel{type:Http-underscoretypes.error-underscorestatus}{{13}{15}} -\newlabel{type:Http-underscoretypes.status}{{13}{15}} -\newlabel{type:Http-underscoretypes.status-underscorecode}{{13}{15}} -\newlabel{type:Http-underscoretypes.file-underscoresource}{{13}{15}} -\@writefile{toc}{\contentsline {subsection}{\numberline {13.1}Exceptions}{16}} -\newlabel{exception:Http-underscoretypes.Invalid-underscoreheader}{{13.1}{16}} -\newlabel{exception:Http-underscoretypes.Invalid-underscoreheader-underscorename}{{13.1}{16}} -\newlabel{exception:Http-underscoretypes.Invalid-underscoreheader-underscorevalue}{{13.1}{16}} -\newlabel{exception:Http-underscoretypes.Invalid-underscoreHTTP-underscoreversion}{{13.1}{16}} -\newlabel{exception:Http-underscoretypes.Invalid-underscoreHTTP-underscoremethod}{{13.1}{16}} -\newlabel{exception:Http-underscoretypes.Invalid-underscorecode}{{13.1}{16}} -\newlabel{exception:Http-underscoretypes.Malformed-underscoreURL}{{13.1}{16}} -\newlabel{exception:Http-underscoretypes.Malformed-underscorequery}{{13.1}{16}} -\newlabel{exception:Http-underscoretypes.Malformed-underscorequery-underscorepart}{{13.1}{16}} -\newlabel{exception:Http-underscoretypes.Malformed-underscorerequest-underscoreURI}{{13.1}{16}} -\newlabel{exception:Http-underscoretypes.Malformed-underscorecookies}{{13.1}{16}} -\newlabel{exception:Http-underscoretypes.Malformed-underscorerequest}{{13.1}{16}} -\newlabel{exception:Http-underscoretypes.Malformed-underscoreresponse}{{13.1}{16}} -\newlabel{exception:Http-underscoretypes.Param-underscorenot-underscorefound}{{13.1}{17}} -\newlabel{exception:Http-underscoretypes.Invalid-underscorestatus-underscoreline}{{13.1}{17}} -\newlabel{exception:Http-underscoretypes.Header-underscorenot-underscorefound}{{13.1}{17}} -\newlabel{exception:Http-underscoretypes.Quit}{{13.1}{17}} -\newlabel{exception:Http-underscoretypes.Unauthorized}{{13.1}{17}} -\@writefile{toc}{\contentsline {subsection}{\numberline {13.2}OO representation of HTTP messages}{17}} -\newlabel{classtype:Http-underscoretypes.message}{{13.2}{17}} -\newlabel{method:Http-underscoretypes.message.version}{{13.2}{17}} -\newlabel{method:Http-underscoretypes.message.setVersion}{{13.2}{17}} -\newlabel{method:Http-underscoretypes.message.body}{{13.2}{17}} -\newlabel{method:Http-underscoretypes.message.setBody}{{13.2}{17}} -\newlabel{method:Http-underscoretypes.message.bodyBuf}{{13.2}{17}} -\newlabel{method:Http-underscoretypes.message.setBodyBuf}{{13.2}{17}} -\newlabel{method:Http-underscoretypes.message.addBody}{{13.2}{17}} -\newlabel{method:Http-underscoretypes.message.addBodyBuf}{{13.2}{17}} -\newlabel{method:Http-underscoretypes.message.addHeader}{{13.2}{17}} -\newlabel{method:Http-underscoretypes.message.addHeaders}{{13.2}{17}} -\newlabel{method:Http-underscoretypes.message.replaceHeader}{{13.2}{17}} -\newlabel{method:Http-underscoretypes.message.replaceHeaders}{{13.2}{17}} -\newlabel{method:Http-underscoretypes.message.removeHeader}{{13.2}{17}} -\newlabel{method:Http-underscoretypes.message.hasHeader}{{13.2}{17}} -\newlabel{method:Http-underscoretypes.message.header}{{13.2}{17}} -\newlabel{method:Http-underscoretypes.message.headers}{{13.2}{17}} -\newlabel{method:Http-underscoretypes.message.clientSockaddr}{{13.2}{17}} -\newlabel{method:Http-underscoretypes.message.clientAddr}{{13.2}{17}} -\newlabel{method:Http-underscoretypes.message.clientPort}{{13.2}{17}} -\newlabel{method:Http-underscoretypes.message.serverSockaddr}{{13.2}{18}} -\newlabel{method:Http-underscoretypes.message.serverAddr}{{13.2}{18}} -\newlabel{method:Http-underscoretypes.message.serverPort}{{13.2}{18}} -\newlabel{method:Http-underscoretypes.message.toString}{{13.2}{18}} -\newlabel{method:Http-underscoretypes.message.serialize}{{13.2}{18}} -\newlabel{classtype:Http-underscoretypes.request}{{13.2}{18}} -\newlabel{method:Http-underscoretypes.request.meth}{{13.2}{18}} -\newlabel{method:Http-underscoretypes.request.uri}{{13.2}{18}} -\newlabel{method:Http-underscoretypes.request.path}{{13.2}{18}} -\newlabel{method:Http-underscoretypes.request.param}{{13.2}{18}} -\newlabel{method:Http-underscoretypes.request.paramAll}{{13.2}{18}} -\newlabel{method:Http-underscoretypes.request.params}{{13.2}{18}} -\newlabel{method:Http-underscoretypes.request.params-underscoreGET}{{13.2}{18}} -\newlabel{method:Http-underscoretypes.request.params-underscorePOST}{{13.2}{18}} -\newlabel{method:Http-underscoretypes.request.cookies}{{13.2}{19}} -\newlabel{method:Http-underscoretypes.request.authorization}{{13.2}{19}} -\newlabel{classtype:Http-underscoretypes.response}{{13.2}{19}} -\newlabel{method:Http-underscoretypes.response.code}{{13.2}{19}} -\newlabel{method:Http-underscoretypes.response.setCode}{{13.2}{19}} -\newlabel{method:Http-underscoretypes.response.status}{{13.2}{19}} -\newlabel{method:Http-underscoretypes.response.setStatus}{{13.2}{19}} -\newlabel{method:Http-underscoretypes.response.reason}{{13.2}{19}} -\newlabel{method:Http-underscoretypes.response.setReason}{{13.2}{19}} -\newlabel{method:Http-underscoretypes.response.statusLine}{{13.2}{19}} -\newlabel{method:Http-underscoretypes.response.setStatusLine}{{13.2}{19}} -\newlabel{method:Http-underscoretypes.response.isInformational}{{13.2}{19}} -\newlabel{method:Http-underscoretypes.response.isSuccess}{{13.2}{20}} -\newlabel{method:Http-underscoretypes.response.isRedirection}{{13.2}{20}} -\newlabel{method:Http-underscoretypes.response.isClientError}{{13.2}{20}} -\newlabel{method:Http-underscoretypes.response.isServerError}{{13.2}{20}} -\newlabel{method:Http-underscoretypes.response.isError}{{13.2}{20}} -\newlabel{method:Http-underscoretypes.response.addBasicHeaders}{{13.2}{20}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {13.2.1}facilities to access some frequently used headers}{20}} -\newlabel{method:Http-underscoretypes.response.contentType}{{13.2.1}{20}} -\newlabel{method:Http-underscoretypes.response.setContentType}{{13.2.1}{20}} -\newlabel{method:Http-underscoretypes.response.contentEncoding}{{13.2.1}{20}} -\newlabel{method:Http-underscoretypes.response.setContentEncoding}{{13.2.1}{20}} -\newlabel{method:Http-underscoretypes.response.date}{{13.2.1}{20}} -\newlabel{method:Http-underscoretypes.response.setDate}{{13.2.1}{20}} -\newlabel{method:Http-underscoretypes.response.expires}{{13.2.1}{20}} -\newlabel{method:Http-underscoretypes.response.setExpires}{{13.2.1}{21}} -\newlabel{method:Http-underscoretypes.response.server}{{13.2.1}{21}} -\newlabel{method:Http-underscoretypes.response.setServer}{{13.2.1}{21}} -\newlabel{method:Http-underscoretypes.response.connection}{{13.2.1}{21}} -\newlabel{method:Http-underscoretypes.response.setConnection}{{13.2.1}{21}} -\@writefile{toc}{\contentsline {subsection}{\numberline {13.3}Daemon specification}{21}} -\newlabel{type:Http-underscoretypes.daemon-underscorespec}{{13.3}{21}} -\@writefile{toc}{\contentsline {subsection}{\numberline {13.4}OO representation of other HTTP entities}{22}} -\newlabel{classtype:Http-underscoretypes.connection}{{13.4}{22}} -\newlabel{method:Http-underscoretypes.connection.getRequest}{{13.4}{22}} -\newlabel{method:Http-underscoretypes.connection.respond-underscorewith}{{13.4}{22}} -\newlabel{method:Http-underscoretypes.connection.close}{{13.4}{22}} -\newlabel{classtype:Http-underscoretypes.daemon}{{13.4}{23}} -\newlabel{method:Http-underscoretypes.daemon.accept}{{13.4}{23}} -\newlabel{method:Http-underscoretypes.daemon.getRequest}{{13.4}{23}} -\@writefile{toc}{\contentsline {section}{\numberline {14}Module {\tt {Http\_user\_agent}} : Minimal implementation of an HTTP 1.0/1.1 client.}{23}} -\newlabel{module:Http-underscoreuser-underscoreagent}{{14}{23}} -\newlabel{exception:Http-underscoreuser-underscoreagent.Http-underscoreerror}{{14}{23}} -\newlabel{val:Http-underscoreuser-underscoreagent.get}{{14}{23}} -\newlabel{val:Http-underscoreuser-underscoreagent.get-underscoreiter}{{14}{23}} -\newlabel{val:Http-underscoreuser-underscoreagent.head}{{14}{23}} Binary files /tmp/tmpxyqlb3/WlZgYXZ_UI/ocaml-http-0.1.5/doc/latex/ocaml-http.dvi and /tmp/tmpxyqlb3/m939VZP2AN/ocaml-http-0.1.6/doc/latex/ocaml-http.dvi differ diff -Nru ocaml-http-0.1.5/doc/latex/ocaml-http.log ocaml-http-0.1.6/doc/latex/ocaml-http.log --- ocaml-http-0.1.5/doc/latex/ocaml-http.log 2010-12-31 02:33:02.000000000 +0000 +++ ocaml-http-0.1.6/doc/latex/ocaml-http.log 1970-01-01 00:00:00.000000000 +0000 @@ -1,135 +0,0 @@ -This is pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009/Debian) (format=latex 2010.12.31) 31 DEC 2010 13:33 -entering extended mode - restricted \write18 enabled. - %&-line parsing enabled. -**ocaml-http -(./ocaml-http.tex -LaTeX2e <2009/09/24> -Babel and hyphenation patterns for english, usenglishmax, dumylang, noh -yphenation, loaded. -(/usr/share/texmf-texlive/tex/latex/base/article.cls -Document Class: article 2007/10/19 v1.4h Standard LaTeX document class -(/usr/share/texmf-texlive/tex/latex/base/size11.clo -File: size11.clo 2007/10/19 v1.4h Standard LaTeX file (size option) -) -\c@part=\count79 -\c@section=\count80 -\c@subsection=\count81 -\c@subsubsection=\count82 -\c@paragraph=\count83 -\c@subparagraph=\count84 -\c@figure=\count85 -\c@table=\count86 -\abovecaptionskip=\skip41 -\belowcaptionskip=\skip42 -\bibindent=\dimen102 -) -(/usr/share/texmf-texlive/tex/latex/base/inputenc.sty -Package: inputenc 2008/03/30 v1.1d Input encoding file -\inpenc@prehook=\toks14 -\inpenc@posthook=\toks15 - -(/usr/share/texmf-texlive/tex/latex/base/latin1.def -File: latin1.def 2008/03/30 v1.1d Input encoding file -)) -(/usr/share/texmf-texlive/tex/latex/base/fontenc.sty -Package: fontenc 2005/09/27 v1.99g Standard LaTeX package - -(/usr/share/texmf-texlive/tex/latex/base/t1enc.def -File: t1enc.def 2005/09/27 v1.99g Standard LaTeX file -LaTeX Font Info: Redeclaring font encoding T1 on input line 43. -)) -(/usr/share/texmf-texlive/tex/latex/preprint/fullpage.sty -Package: fullpage 1999/02/23 1.1 (PWD) -\FP@margin=\skip43 -) -(/usr/share/texmf-texlive/tex/latex/ltxmisc/url.sty -\Urlmuskip=\muskip10 -Package: url 2006/04/12 ver 3.3 Verb mode for urls, etc. -) (./ocamldoc.sty -Package: ocamldoc 2001/12/04 v1.0 ocamldoc support -) -(./ocaml-http.aux) -\openout1 = `ocaml-http.aux'. - -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 7. -LaTeX Font Info: ... okay on input line 7. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 7. -LaTeX Font Info: ... okay on input line 7. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 7. -LaTeX Font Info: ... okay on input line 7. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 7. -LaTeX Font Info: ... okay on input line 7. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 7. -LaTeX Font Info: ... okay on input line 7. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 7. -LaTeX Font Info: ... okay on input line 7. - (./ocaml-http.toc -LaTeX Font Info: Try loading font information for T1+cmtt on input line 1. - -(/usr/share/texmf-texlive/tex/latex/base/t1cmtt.fd -File: t1cmtt.fd 1999/05/25 v2.5h Standard LaTeX font definitions -) -LaTeX Font Info: External font `cmex10' loaded for size -(Font) <10.95> on input line 4. -LaTeX Font Info: External font `cmex10' loaded for size -(Font) <8> on input line 4. -LaTeX Font Info: External font `cmex10' loaded for size -(Font) <6> on input line 4. -) -\tf@toc=\write3 -\openout3 = `ocaml-http.toc'. - - [1 - -] [2] -LaTeX Font Info: Try loading font information for OMS+cmr on input line 384. - - -(/usr/share/texmf-texlive/tex/latex/base/omscmr.fd -File: omscmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions -) -LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <10.95> not available -(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 384. - [3] [4] [5] -Overfull \hbox (475.19293pt too wide) in paragraph at lines 757--757 -\T1/cmtt/m/n/10.95 class virtual message : body:string -> headers:(string * str -ing) list -> version:Http_types.version option -> clisockaddr:Unix.sockaddr -> -srvsockaddr:Unix.sockaddr -> - [] - -[6] [7] [8] [9] [10] [11] -Overfull \hbox (5.5967pt too wide) in paragraph at lines 1611--1611 -[]\T1/cmr/bx/n/14.4 Module \T1/cmtt/m/n/14.4 Http_response \T1/cmr/bx/n/14.4 : -Ob-ject Ori-ented rep-re-sen-ta-tion of HTTP - [] - - -Overfull \hbox (820.35356pt too wide) in paragraph at lines 1622--1622 -\T1/cmtt/m/n/10.95 class response : ?body:string -> ?headers:(string * string) -list -> ?version:Http_types.version -> ?clisockaddr:Unix.sockaddr -> ?srvsockad -dr:Unix.sockaddr -> ?code:int -> ?status:Http_types.status -> unit -> Http_type -s.response - [] - -[12] -Overfull \hbox (81.72089pt too wide) in paragraph at lines 1704--1704 -[]\T1/cmr/bx/n/14.4 Module \T1/cmtt/m/n/14.4 Http_threaded_tcp_server \T1/cmr/b -x/n/14.4 : Mul-ti-threaded part of Http_tcp_server - [] - -[13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] (./ocaml-http.aux) - -LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right. - - ) -Here is how much of TeX's memory you used: - 892 strings out of 495062 - 20099 string characters out of 1182643 - 56293 words of memory out of 3000000 - 4109 multiletter control sequences out of 15000+50000 - 12330 words of font info for 32 fonts, out of 3000000 for 9000 - 28 hyphenation exceptions out of 8191 - 22i,5n,20p,301b,312s stack positions out of 5000i,500n,10000p,200000b,50000s - -Output written on ocaml-http.dvi (23 pages, 47284 bytes). diff -Nru ocaml-http-0.1.5/doc/latex/ocaml-http.ps ocaml-http-0.1.6/doc/latex/ocaml-http.ps --- ocaml-http-0.1.5/doc/latex/ocaml-http.ps 2010-12-31 02:33:02.000000000 +0000 +++ ocaml-http-0.1.6/doc/latex/ocaml-http.ps 1970-01-01 00:00:00.000000000 +0000 @@ -1,5127 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: dvips(k) 5.98 Copyright 2009 Radical Eye Software -%%Title: ocaml-http.dvi -%%CreationDate: Fri Dec 31 13:33:02 2010 -%%Pages: 23 -%%PageOrder: Ascend -%%BoundingBox: 0 0 596 842 -%%DocumentFonts: CMSY10 CMMI10 CMR10 -%%DocumentPaperSizes: a4 -%%EndComments -%DVIPSWebPage: (www.radicaleye.com) -%DVIPSCommandLine: dvips ocaml-http -%DVIPSParameters: dpi=600 -%DVIPSSource: TeX output 2010.12.31:1333 -%%BeginProcSet: tex.pro 0 0 -%! -/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/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]{Ci}imagemask -restore}B/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: texps.pro 0 0 -%! -TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 -index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll -exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]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 -%%BeginFont: CMR10 -%!PS-AdobeFont-1.0: CMR10 003.002 -%%Title: CMR10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMR10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup -/UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMR10 def -/FontBBox {-40 -250 1009 750 }readonly def -/UniqueID 5000793 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR10.) readonly def -/FullName (CMR10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 61 /equal put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA -0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 -51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 -7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 -E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 -0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 -C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9B8591E5F01442D8 -569672CF86B91C3F79C5DDC97C190EE0082814A5B5A2A5E77C790F087E729079 -24A5AC880DDED58334DD5E8DC6A0B2BD4F04B17334A74BF8FF5D88B7B678A04A -2255C050CB39A389106B0C672A1912AFA86A49EFD02E61E6509E50EE35E67944 -8FC63D91C3D2794B49A0C2993832BC4CDC8F7BD7575AD61BCDF42E2E421AA93E -3FF9E4FAD980256D8B377043A07FC75D6169338028692CCA8CD1FE92FD60AD26 -D57B7519B80A8F8DCE9CEE5CDF720AF268D3C14099498A843D76E3B6C0328F24 -D36EFE7F5C4E5B5C612786200C8DE3A41EE5F1FFAF4097653CFCDC8F4FD32E0B -03EDB3E413283B9EFB0AC33B055617005BC9B0057FD68C52D1B0E67F0C571685 -767F2AA85ADE4E0104A1C777733D5E318A22A9944336E5B98D965E50D31F357A -8B6EA5A0EA98E1B027CE68C2EDB149EDDD04ED74A1B3D206D471A0C11C11449B -DE190BBFEBC08C9E1B7513B43DA3134D6B11A2516E6E86B67F68C970A320D05E -94FEC57FB347606DF89989C33482BD09D011C55AA920319E7B26A205D3D0F004 -22466F09C0482A164CFB27EF6ED2B040ECCC3DCAF345B5A73676F193D43123B7 -72FD6CFC5E37930E61EBD5A6307E4DE70194E6384EC0D79DB6AD86D3B319A31C -8B0589D0FE28241D8ACE280D0530EE99C80723E560BB72AE9D53F4713181F491 -344B06D3027BA4E9E94D4305BE1D817197C54C8FF56CD6964165F6448ECC8A8A -64B48B4F0FD69299A137589E2491A283509B21A3A5772F75B7602A9F60AE559B -07A58436D04222C73EAEA72DE9A5A441F88D27C11F4F91255EFE280E91A4ACAC -1E98A4E5E6C57B9AE86FD218C3CD8F24A4104156A80F13821384E529783C52C8 -78B94AB3A0096090867ED32E8A30980E737922037F75F062BD83BF4F5929BC51 -CC22AEE2DBBAAA001CFFBFF41D258424FAD888FFF1BEAB796A44E3126159E120 -7E4025C676CF94888A1971AEF8B6764B3AF4A92D36FAF6FC56FD049710EE3782 -BC2CD84FE2473F133BE03C1346B875463F126DCAB15C7A9BCC9A727D23611462 -4E8D2BFD2466600285D79518712B8681ABCD69608E6AA9578F7BD771EC36E01A -5A17BC17E375020ECA59B43790ABEB9DF5F4FBBEF807E5699EFEAC563E1ACC5D -EFA336E75DE6D8248E9381BB110884FDC89C2F9A41EBBC9A8A1F98E6A41F68BE -EE30E25CA148C1EFF42DFF8C214A6537AB11F260B8C329A4947B5FC8DC9C5622 -4DF7BF4FBFB00380D47BABB03BC30627AA74103E553F55278F538EDD8C1E64CE -0F1398CA0AB5A86630139B4A7E8FC02804CAFF3830114640AE50D2FDA3B561B5 -C63AD7EE3347804CBB40FB1E77A6C89735DD870351C3A1811591AB493251B904 -314F65791963C0412377C1D02362C5E9655F1C3D4803CD379A8EF24C48218C2E -DF1165840462BF37DDE1B8D5FF09FA2C3B261E2F1A65ECFBE5D4EAD43B52C029 -EEB3948CB8A252CBAF545C8FA1C31E920E23A12DD7222CEF2D2A513BD758EA13 -DA33BF5FBF1D734653EB83DA2D374A5B9A0CE316F24EE375D6DF6BDA49954C2E -DB25A88821193636119D469BA66E5DAA9C92520FD4F84426A4E54273FA469084 -7517817A6EE3E21176D333825E88046F50B3CF6938AF9BA79A2F51398239EB91 -1A2D07F7FCD948427FF62F40FF95E39FE1A1AA8451411563FD5388472251C155 -69BDE9283B41900B21EB1190D06E6B13B7794FED020D2C1BDD205AE77B084BCE -EF628249398B496DE85B406FC2E1939EF00DFC84C07E26CF72EC401BAAE756E5 -7F6673216E7560D1C2A723CB405EE5CA474A07F61B81F8836482F73DC9516D67 -CE0CB770EAD755B6B356198B4B97EBB29C63456953270CCC8D5650C1D006E69D -38DE2DFEAB27DAD50A817F0D645D30AF5B75A7B53CBD3D2B8D87BD0A7E525AF3 -22F7ADDFCE31716914C2318260C2E2B4664893921B68C5A93334A361D94A759C -0D7B146D6FD94F0442D672BDA0F6432E18F3C5DFA37ADA378D95B75F413C9ED1 -BB5C606A3EC7DFB3F796F59B0478C13FD1900381EFE0BB5242D5B5D34D03AF1D -4BDC93EAF8020E26CA23C8B0E7DDEBBC6762A557067A4CE05A524188A8F02E2F -3625DA38DFCF381727887F5646A3995A8A38A5FB1E5D5EBB395FDD0B7C8E71AD -B48EEDB62AB2CE99D121435EFBBFCEEA69AE9ED8238B60CC7288DE33C766CDFE -15B767B4AE2E6CE0965E77272AC9F86023DA620548CFAC85BC751C44218A29C9 -849F1C2DCBDFAD895B54E51A569952ED50F82DC8A19F367E7E44643854EFD6B3 -FCAEB04E55E4661C82D31E2932611748480EF61FB2FBFB0CFB940BEA81AFCD84 -4C6A6332D7A600170E38A8EAFCD4F93DC153C43175434C86BC747348FAC61B76 -1FEC9027C1A193E55C80F1F20B5317AA0A05AAA36AE235F6E49F06E570FEE798 -84857D7552EA92EF3EFAD52DE39C2F8F43C59E3A957B7B926FC95FC4B60186DF -7F3523EE2AB74E294C8C4BCD8B4975E84849E0FBDA6C0B0F24A636DFA578B122 -CF97BC5089E21E9F5298D1C9F30CB8BAFF6A3A11BB4D9A0A5CF2B18D055C44CA -4FD4D8FE1AF3630907DE7E585AA811F9CD11FB2C8FC791851D651009FA5DF20B -3C33FD2FF848A9E3F5652BD294965A332DD3F246C91B0ADA34017FF2451D1394 -F9C3C95AAC6EC8062BE98E8914D51DA6A164AD13938693D446044859D03A949D -F9AC5DF4A000CDA98BB516D762CB9F6D44B5268FD0C26E88BC4A760C0F75A140 -DEBDECA4F511128B7D2805872160C55236F0A0FA7637FF0D4E94AC079CD3C8A7 -D03A5A56F26B0438B577C46011A10532FEBCAD14FBD6032E224F45691A726886 -56F305231EB2FCDF59C8BBFCB5DBD2D093A0E84D62AC93A2312CA69295E937C4 -8DBA1802B85F54B5E7E6D6216A918F911FF705D3B5CF055F1D873B96283A0B53 -59344D910CD396D883F6F7836BA65FAB4393A773A8F6BC298069E5BA38210EED -49C9D920F718E3FCE692527DC7CCE6963BF744F2C91BC5952564196D60574E86 -87A0FAB21F2DB2BD5A51D7FBD8FC19946D24E5A228462C4772F978E650ADCE3B -8D66B9C21279C531CA1C3A8ECE3420BB65837287A7222CC3673A2A5F8BBFDB60 -C719CD073EF9A23675198462C7C87B24CC92D6AEE5C25AC63855CC3281494342 -D28F3D2FDE0C183486769A4FD5B0143193D31FCB2C2A14E487BBD96D0BADBB64 -D1B56021C363A795BF10E2DB448261C363A54A4AC1182B470C457AA82DF3F5D1 -F4B329806141EBD53CAE309319B94133D7EBDC2D0453A905ADD207364371E178 -0A95C2686E3B34C4A978BFC0EE968C39ABA00889BC5149162C2B54483D44FD3B -5CFF41F611C7E03B94945F414560E874D7CF27FFD0630890D7D7EA66CBD15448 -229059E1C436BB33D69552B5367AB5D53591C4678D0C704DD3EA23F5D9E8A7AC -17D003C19E333E726FFFA2961F33C70F429085F7BFE3E2510F59B78F58B19CB4 -01B48E184BAD9020FECCE3AF52048A056981DAEA02AE78197E65855DDB170616 -F54278395D9EA50DC83761AE759F9CDEF9E1948E7002414FC05286ED793E6662 -3347F2A9AF8917493D7305B92CF93E8E9185F70015F5594084298A6C2F9FD3C0 -689F262AC9FEDC9B89577ECDE92F08D3142209FBCE7B5C0A840CC767BCA56C20 -4E4E545E2BE4D21C53855CEE4CD0AB35D1A604C0FFFF77DBAE4289752276559F -A05FEE65F45ECAF44E95E23FAB6052195C7948AF0B1126482D4E02D72BF8AB03 -DE0F1A632F7672AD9DDE70EDC82AA993678A82BEAD0BC2649C4707FD8509810D -364B5C6FE0E10772E95288C622C2F06C634F4DF8C7FD1432BC9310D5F24FEE3F -7AB324863D6DABAA1576E70643CA79EF4D7DF4105093D66CEE0F3B87D2164A7F -26EA05F5C4645B22D3E1BFD2219657712C168FD90DE801FB0F32759E80DEC1E1 -43CEEB19FED12D757205043FC98FEC62D6A8D8B97BC083B4A0E985AF7850D6FD -8716B9957C1C35A0675BC53DF672C425C79F43FDABAEE7D63F092CF271C9A9D7 -C41F40C4189510987887942E60A412B3EEC84C9A6E1AC7D54D528F5604B72C08 -94B7882621A5BF1F325B92FF96B80878CC550D1AE4D8196E41CB1251856609A5 -C4D3BD05A922D0D45E039D9450DEF8490A3E924E41434194910BF60BA1B08BE1 -B41824345627745541A4F1703E956328F6227D11C74946B38CFB096139979E56 -4E723B889B44C6D78673868C89912F8B4F0B4B485F1587A637B630F92E6072D5 -7F3B44EA6FD96BBD4FC28A6C1D90805E3BE3E42A7BC9C880762966C55BC04E01 -204D083AE976FAE6F37C94F27E68F8C0F28D52B17F6C0FD7C9150701FD78F8CE -B8E8DC9260E3974005EB5CA728171F482D765016C94D4ADFE4A42EF42212BC56 -7E4EEEE8B0D2A7856CD4E44F55C0BAB762F92CB8D64C17022D4BF3A47C12F5E6 -279FC23101FEE93753653CE8CEDC3B75C9CCB29BF1D4554C6120DE8EE750FCBB -E38B5D915206974962E320362E59B3F21B3AB1875703191043D03284D4467346 -CFF2F98CEB4845B73ED8E003E0DC94251B73E13A9B51A3F1430BCF6A21EB9B7A -65E17FA411F53BE6432F1506232B8159E008FA257F884A4A01AC53BE91754D78 -BF14A5B0FBFB9C31BF4908355F8A762052968DF526D118708CCB0B7CB5BEE285 -6DAB6CD2E3934178E60BECB11AAB5478623CF6C50C92F8BB5D1A583609028FA7 -B8A53B791BDC9EF76A124F3F7641857E4BEA0837CB36176EC9A522EA7F41B8D3 -63C37D1145367BD300F17B54522A834BBB74DE12BF9EB26ACE6F24A046D58F89 -4D4B7DF74875F1A0C1C9D97BE0849593D7B398EB4B00BEBC8C8D1497B6EF831A -A35380FFB7F1AFA4D888AA52C9482E8B1755CC209905F98F40D95B44D4DCBCB6 -67423D1BC2F3560FF0A8B4F0CAC352A4EE2C1D946E45AAEC8A6AD40303F3382C -DF0756BFA3B1ED64C169E56ED1C760F2FF0E24DC5C9F41306EF8D2628153D30A -5DCB0791126BEFD4947D7EF08301FE015F2B0008DFFCBF9F2D4D859FD43EC7D9 -C5BE237E9BF6665B7B1BEBB362F0C0C3A8D86010B9C97FA741C97C2E0513386C -9C26C235B14DD2A58BFDAC7B5F63DB4DA6D5D37D0098175A9071590E1DF66A3D -B8173A047C29D7D35557F06132CC920B5460B8AFC11D23D09A4E45D089F5EB51 -963FA1A6256E359D485107FD143B2BF21FDE9DA5744BC2615E86C31C89470CF0 -D06C6397D9FCCB316EA9989430240759D2C4945D941F159FC02327F34B042BAB -B5C3A47C78E8C1A6FBCD396B1A51CC4B020B8AD401841EDABACECDB482D6EC5B -72D2BFEB4556720FADD49D07307C8B22ACB7E310CA4151A85C71EEF70E8D15DE -B3B00F26E0E166C14647A65ADA228A3D1C89025BE059306565DB1B1EFC37D358 -8C1EB024254AFD049BA977BD4C2C605050E17940A89D0D4C5D963E792320F5DB -3706682E03D25D9E02487247819551465092CC22B6B56E93F3AB528038FEC3F0 -668F866707A19B0463BE706EC729D2EE1653AAC7E29BD25BFB3241D4792F5152 -ED415B4E7FA92C2EE5A22E27E8B75542C492E56D811C192E95542A6FE0BFE5A5 -69273C2ABED4300D491B92D2AECDD278404CB84B1BB1BD7AFEC858215837D118 -C0E928BE7E07CFEEB51A6D21375B772B8248C994564014015232A0DA4BEA1754 -3274F407FED0837A236371F1A32056240F2015B1E7F4B2CA72C6B58610A66F13 -407CFFBA5E0A2893C1F572D50F51286E9133B5A84239C9493B0574E77D281D01 -11D00683354A000C9700EAFBC1FD104EA19DFCB87470190E7E2CE26E3A6FD0FF -2620B87B82AC8686B6206B530F17E9348BC7D04B948348802CE53A312443DB87 -4DBBA5313A6A2A8DAB8A1CC9A594FF8C299281C0A261C8CB2226B732FBEEDE40 -2C6ACC74A1A61379E2E1CD5548CD908268A32FA83D8504C442EA0E183ADBF7FF -9FD09C037AB03516ECCA93FF048235BD11A25DB07F164512A079C5392AC7F889 -CE96AE5C8D9580BCAFCC087C35E76EED1A671E87C12E3045E15A687134736DF8 -DA984772AFD189D68571A2ED7256F1E204230E41D3D9DD876F938951714A3973 -0CA9310489F8E807C1C7A4E51AEA5BC030610A5D7263FF7E0F9FDE3E5E37A362 -5B919000BD94D978583B942EB79CF2BEAC33FEBC9A67272EB10865BA8FB75FD7 -9D280AB59F91B96C16C982DE848D76D8FA8620DFD7C80B7DEAE7264350D6FB3A -EF04794DA3305844A7CF718F6D1A4A3AFF6826173A076A1372ABFC54ED3AC6C2 -09C9287FC830556CA694E21CA5342ECA7B10C90AFC4783D841D7B1E34FA3DB7A -2B706F3E21B0FBAB23E7257962FC3BC309CEA2C7239A9D6B44CC96825115ABD2 -AF9A2566D2F3382C01569FBDB94C8D664A5DA0F7DC3DD140CA77C743D7BC1420 -324ECF9E4780280EB119885E96A6C619CE3C0C8E1E264E2DEB137E5DC8149786 -486D65667ECF47B1A1E20E9E6E4FC8323E0BC8E61BDD3BCDFC6575C69C03E31A -EFFC290472CBBD049DE3F840AEE37A2486034240F80E75D8A79E0762377DF660 -52B12EAA16D678990B11A9BFBC03C1D4FCDA9FD4FFBB3E88352438102F10B7C5 -9F04C013B6575B5E948FAB58EA691984A0E54E6B9F3F505FFFEF74D06FA1CDF3 -4B8A95904C8A2763AA8AF5B71D00F5DE09DC1CDF87A08B6D181453063E14C12D -B7BB3775A6E2A901636273D9EEB833EA8CF20FD83AE899E28DADE10EEEC20BD7 -BD93085A4B1AC80AC1AE8280C14767F1A487BD066007A0D050317BD081131A14 -6EA0898ED59E46DA7B6254BDCCBC660686E2EDA0E77A705A653733BB5C5497D0 -B130359F866CF293FB6EF0C2AC5BAA2DB0DED045E2DED3A2612D078333260359 -16CF0CCB272D34767EA069E0F0B0D42327A18529D72E890EDA6195C2688438ED -E9ACDBEED41E81CA8EB5E43C2B09CE266EFCA03F2D7FF57F12B06F9E54FCC6A6 -546676F6FFC5B8B7D3F0982B6FF0D21D949309F0C0B175CC1D0976F8C55C6AED -6E821C39041E22D91AB30922F2B2EC2746BC7DAB484991542FBC82D87B487507 -559AB466F73EE23C2D3194DC5CE4C9AE66D3164613AC5CBB3DB501B64DA7C91B -C7ED2EE9027FC0906820B35D4F2CF66C4F9CE4A884B7C07155BCA884ECA5EB3A -ABB83F84DB1F5639599DC7D3F51241AB5D95C3BCB7AB1EC90B4BC989F74FB354 -04B2D7366A34D335A47B8C00C05CB423482BF6C7970A95545424A08AFF9A035B -7F83F52B65A9799CE76E303B85664B624C65E9CA58184C7BE2BB9D9C86A4DE5A -8165EE3DA2E652B5022EE7893896BABD88931DE1D538F615787645DF5ACBBA0B -A8E5B899A37321AA7D4B283AC9234978C2DD81813A1EE5DB6EC170DAC1B6EF02 -94892635B498765C07A38D2E9DB0B7581B11056C28278F89B0E60998379C07EB -C0EAEDC32AA69B8B836F92A61AFD35688315B2C3F860632FC13E4BDFB63214BC -41CC6859EAB3AC3034449213CAB99FA1D216563419CD6D6CE4E1B56F33E6C654 -7AA9DCB5B05FC068DF02AC32408C8010AD004F6CCA9887830927F8CBCD49CDB5 -18CAC1EAFF815FF2F6F527F936948201565003022C6C7390B4E3C2B219FB4F76 -9F12BD25CA7B3B61D1A2F8DFEE795D04D5428B42FB66E0C254AF7B7A10CEF7FD -E0B5622DF6FC4BF52147208D9A91EB49B03BB40DE7F8FBFB566F251942C8FFB1 -1DFA50465919400C21CE4724D12E4EB47AA5F392BA927329DBCA28A78FC1DF2E -6FF27F4E4E3F8971D7BCB5F3FBF8F30C214A26E5E32E0E8CBC71BF20AE573BBB -163DD66E89F2C4E2B1A1532AE81C060146F755A1ABA3F1365FEA30B403DE7B22 -76F43EDDF7CB0C5D3E3F2B9043D33654BDE23221D16CABE4D559575AC8D01281 -379FC2AD33242EDDECAABC38D94B5261F13375D63207B3EEBFE27697FF9C6A98 -08A260CE1264FC647AA4F80E0A2EC2EEF124A38C35F829B03305C61CF9F26DAA -1BC0457D1C7FA65DF52C453AA851A791E6993CB4BC0C0A449D6F0C01D2217330 -5336C0A329988AA21A0EAC50B8762A97226A8570C956800D2BDA5431EA9CA3FB -64186466DA95E5EB4B417A2E43A627BF3874A2E20F381285D1D430D5C2711222 -7387EA17E909D6BE064690A19C443A90C245E50B144E2C2143F4D5B3AA1A20E4 -FAFC09B269E6CB0B -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMMI10 -%!PS-AdobeFont-1.0: CMMI10 003.002 -%%Title: CMMI10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMMI10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMMI10 known{/CMMI10 findfont dup/UniqueID known{dup -/UniqueID get 5087385 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMMI10 def -/FontBBox {-32 -250 1048 750 }readonly def -/UniqueID 5087385 def -/PaintType 0 def -/FontInfo 10 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI10.) readonly def -/FullName (CMMI10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -/ascent 750 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 58 /period put -dup 60 /less put -dup 62 /greater put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 -45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 -7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 -72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E -BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 -974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 -11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBC7878DFBD546AC2 -1EF6CC527FEEA044B7C8E686367E920F575AD585387358FFF41BCB212922791C -7B0BD3BED7C6D8F3D9D52D0F181CD4D164E75851D04F64309D810A0DEA1E257B -0D7633CEFE93FEF9D2FB7901453A46F8ACA007358D904E0189AE7B7221545085 -EDD3D5A3CEACD6023861F13C8A345A68115425E94B8FDCCEC1255454EC3E7A37 -404F6C00A3BCCF851B929D4FE66B6D8FD1C0C80130541609759F18EF07BCD133 -78CBC4A0D8A796A2574260C6A952CA73D9EB5C28356F5C90D1A59DC788762BFF -A1B6F0614958D09751C0DB2309406F6B4489125B31C5DD365B2F140CB5E42CEE -88BE11C7176E6BBC90D24E40956279FBDC9D89A6C4A1F4D27EC57F496602FBC4 -C854143903A53EF1188D117C49F8B6F2498B4698C25F2C5E8D8BD833206F88FC -BD5B495EB993A26B6055BD0BBA2B3DDFD462C39E022D4A1760C845EA448DED88 -98C44BAAB85CD0423E00154C4741240EB3A2290B67144A4C80C88BE3D59AD760 -E553DAC4E8BA00B06398B1D0DFE96FB89449D4AE18CE8B27AFE75D2B84EFDB44 -143FD887F8FB364D000651912E40B0BAEDDA5AD57A3BC0E411E1AD908C77DCE3 -981985F98E258A9BB3A1B845FC4A21BCC54559E51BC0E6C22F0C38540F8C9490 -88A0E23EA504FA79F8960CC9D58611C519D3ACDC63FB2FBCAE6674357D7F2285 -4BCC9F54D3DA421D744D3A341DA3B494BB526C0734E1A8FC71501745399F7683 -FD17EC3044419A88C3979FD2ABA5B0130907B145A8462AAF0A9B511D2C8A7C7F -347FF6AC057E6512902BFD2918E2CD31DE615F5D643764E900B60287670AE18F -FDE15545D8BC69591A8CBBB275AFFC9B14BD68DF0AAB32268FB84844D4DBC7BB -C591C1AC5102C50A9C7BAAA848DA88B0519F0F5F0813BF055CF0E3C86F633A04 -B779D2E8E656DB1E09A66A85FE21CA8BA5523F472A229E83F2C4E91ABA46C733 -F3C7B5775B06C97782BC225C46385BEBDC61572458EFC5CF4190AB7A9C1C92DA -29F84BAACF552089195966E3AD9E57CC914D20B6962BE80429A16D4DF1ECAA66 -36C4343FADF0B2B48F12E2EB8443C4AA29D00949255F3968617F98B8ABD4CC12 -048B838EE243A21AC808BD295195E4AE9027005F52258BFCA915C8D9AED9A2C0 -80814F79CF943FBE3594C530A22A92E11BE80FCEC1684C4F56712D5846B0749C -9B54A979B315222F209DEE72583B03093EC38F7C5B9F9BCB21DBE8EDDAE9BE8B -75ACE6B12A31083AC8348EC84D1D29D2297A266284B7E9734E207DAF59A25F4E -4AA38509E993C5394FED76E6A2F25462685C4C86C6E8CFC9863338EC1428BDFC -74616BB1BC8948B0ED4C87C15B4405F3A7796F9DB3798FFFE8BD0A94E834817B -D5E9812E308D0CC920470A6F2CD088FCB80462BF7CB3F039A7DF3DAF5B2B5355 -E083A385CD2EAF0FC181E40E96DD7E9AB9EF5C7E6866A13B8A54718E950FE097 -EF0951A357114F18CE9933D28B3A77AA71E3CE884661F13284BCED5D5FD1A86D -543E588FF473DC2CF9A4DC312500135F29C2D0174B32018C8DBD40EF9A232883 -710A1F2AB2CD11312300ACDF789A9B7B93D2035D81D1C84984D92D78A53A00C6 -EDA94B24BBAC1AD17774A4E07E6F74ABD90415965616AD540C8ECD8C3A44EE4F -7F4F6BB6238C5062D63FA59B7BF08BE93FAEA70A2AB08FBEAAF7DBF56B95FD93 -03CA406543BA6C9527D0DF01F5108D31A51778A5EB1C93F27B72B46146A353A2 -01CACBC829603B9989A87CF64528682CCBA0562A8165B185C58A5C6BB72F5E89 -500ACCAAB8ECEFBB2640E99EAEEC4EA979AA793D013D61D8ACF8784FF8D9398F -F6A252A709324FB39509F0B3A4E725E82F53543383C6765BE556CC897C758208 -AA3AD37B0406E4A79F8F0A6C1983FC73E71CD858C0DB66ED66D5D992978614EE -1EA91EBE191E082EBA1FC040AF19A2202575C2EBEB8058833E3520FA03D2F915 -85C1ED337E457B9FEEB0C6EF2735EFDA6E0D05FA641BCF698AC6B97751E8306C -4DF00A39B8581FF53DB8F8525FDB196D85950906CCB59B8EF171349AA3B567B1 -6A00819947A995FB383C3C1709C9A2C113B2E40BB832B7D4A0FBA0B16A2C455F -55809CC425C403E9668DC66BE45B71A81C332FD4DB279D22A2959962304A8F18 -085893DAC61317D24A8F198FDAB95F3B86F0AFD35047B868A9A17037A2829A02 -BAB042F75F349E197A7EED41984C2859754CAFD0251439921C248B463B516951 -2E1322C80D73F9CBCAA63A585450275AC2492E4D3FB78E800F788254DB5E610D -CF788DF5C70FF99892BCDF16133E34B24B77C8F097F546B87C603DDB8998B66E -BACB68BA27462AF54AA405682EC96D701F0D474DECD5F95CA2102DF639EB169E -D518162C2BAE45FF698B6DE15FC6E7DE48C336C40A670FD26952A6BAB09115E1 -991F0073419F2CC2A1C08BE91096936AA0C37E4ED3CCCEE235476074B8FF1125 -6BDE3701F85532D8BB64CCC927CC335281C95EA689706F0AC717DC2CF680C754 -E5EFD7FA4BB8880B2B727A964C876D4A223069D4E6001771F0E23EAD2A4BBC80 -E76675297B2EF05F52BF4E71B3EE2BE3048CF088C79540113C66AE98B2FD3CB1 -B0741A215FD070882C52765009D7D711DAA2508F19AE7DDA15229A856AC49BC3 -4DDF40814FF96500E4B9B02D412E94623C5FDCC76C0FB8E42DF56A904FE49D65 -1DA7C53901B2EA71AB658A464D3ABDE27D9DB8D9E0B48F64E61A2495AD5D8DAB -B5E72424AD017DF37964AF911BD7FA21A5EB4775DC8E95EF0C0EB856B00D89D7 -8172A1DE8530767D317B8256103E53CFB877E10686A04F5A08F8DC58D843DEBA -FD5F40597588663D103689F6EB3EB14D06E18C8078F2538B43E712DF491FC5C6 -AF639256C8C6134B64D560D8476DEA6329D995E46CC4BC78841C59E73648B47E -BFA7DE0846422F738454AE77E822A083405289247BD7C478BE4974F742CD6051 -E99FBB1D1B3FBABFEE855174734EE45E87D0AADF32B1283B911162A9955847FD -38944D70584FAA6B1A7191C5C134B73F98EB632B69E2F0C0F94156787C34C8A3 -7622A029D58F9626B74F8A8A1F3803E0BC20E0EADEB1E99B70F1BD9F980FB751 -2A842843DE42EB142A84D5D3138629AE9EAF6F3479C423E8829C8816FA6EFA27 -DCE5580E65AA9854B1C64163DC318420CD993C15BFD76A8BA1182860A6B03D6D -22B8CF43CFE6C8AB27C64842E239CAE707D3086BADDE1D7C94E3BC96319470D6 -8D26915C575CFDD03271D6BB9DE86A0EB6EEA6E768B224A626C62A9AB48A6EDB -44F70BB5AF991CDF9736D65933E81CC57A78F623F33EC9AF535F2F25FA4EEC90 -D50DB7E87F31E971A75A33A301CA6013EEC5A4E179D695B33DADF2C98364434A -42926776000B610E17524162253F6FA638D6581C18F99EA0BD1D2E24D2424ADF -C05010D08192485153DD03930C7BF45237593E484F9851E6D464FA10FECA5D9E -0C8CCC97DE029030900CDBB491C5CF226DBF903CFE7735D939C3FDF3A20B70CE -66579B28B99313FEE914E295388C7BC8E055A2E54EA3A8206D3C8F4F7C0BA5E6 -E519419FD8CE215F7B8E9BEC604A9E3FE272A0328A24E31997C8A91E0946BCF1 -6943A97CBED2AB9FC636B49828BBB8B89E0BBC2653796431224895ABA5DAC41E -1854BD9764E86147FD7624F736F40DE3B7582EDDFD15C2BDE3F22B5A54D7DF10 -B87A1301CE85CFC061689A890A321412A13314AE96DCD3EDA75035FDD8F4AB9B -897A2C68263A68457032C469987970648BA2D88B1C5375DFEAA35A917B8A952E -EE670427942AEDB3CB599C5746180E392837D371E15D860620ABDB6AA7772C40 -A5E346661673ACA530BE3D8E3FFB895E5DA3DC23B1B43C080C77F7E47847F0F3 -F3AA5CA9E4BF75FC5EBD18D19F21A7DAA3B11CABC6E4070A15F7DBC8B05EB6AA -A02EF1B078EB66D61D6AFE41DA9B36FE7EC9EF94D1EA26282A9871E2CACB3126 -2AD49C2D9B50A6E47D8F2CCAD50992D1B430979A45FD9E76182A19964BB2A1F6 -51779A2B258DC1DF4C2F3074621286831F3848AC152DDD2BA561E6586ADA88D3 -598A2CE2CD048F027CE0008B828BD915887D7785341E8305DF2346ADB76BE99F -87B02173BDC334E9221C8DF54114A6B24C1C5340299512FA6C8C51AB4C8778CE -178CEF531C6D1B5FF0A1BE8EFF767F959BD4C345C52699A29A17B2A230842BF6 -4B011217D6D24EDAC3F6D53482786F1CA33169B90ECD499407D37CE9B70DDF78 -7B7547B32952535BA9ACD1E244447AE3FCED3AF28717083CF9590A09780984D6 -AF0743C82AE4FB3E2BB2856A4153A3967A023FFC35382D6C22D84A924900B6A6 -3DDD400E6D2418DA6C27F2FA34C075C902B89EBAE658B3C9A18EEE449DA5A379 -337DE95CB7AB3F0970CF1A5D8FAD8090E495570FDFB2FBBA79244780D8035547 -C5A55BB21A2270F724BF5D442CDC5BB9F09BE0CAE59B1C2270F0BDACE698F2C5 -DE8F66BFB9634904B161F5BA2B1950048300D69BABD312D58D89C4ED527AF7BA -7DA2478EDC2CDEE3473DD8A8ED9D891CD1FC21F23013228BB3281B71FCE959BD -6F8E9059D682A7FCC5265A0620992D4FA8D78377EB34CE3ECA070EE3707239BC -98907DB0120CE42ABA32CF97127E28382BDDFD685674279F588D4F951216C355 -821361790F64C2CC720DE97E8ECB57326C43EE47367628E05769E106868B54F4 -C33C9951908DF6FC4F5ED2C7787BD8FA591BBB3E9C6C1DA94CC5E38D9B20C886 -7D237572FF46DD896A4D6163408EA6CEFAC398EE041EAE29D577E75326CA17A6 -B072D47A7B13EC441CE6DAA042ECD02134CBFA6809A435050413817193DAEB16 -A5882C8AEA44BCF36E74E9ECCDFE7E19FF5A5DD7A94E5AB4F8702C3DA7F42325 -23C808670A0490F5B373DADE40814FF9650241D3D69C91FBC5ECE728F827D9BF -C928602E05477903449E079164CA39859C4BCA60C579F490AA455F82B5050BB3 -969AFB478E0D4A257B3356EA3CD62051FCE6C6B1929CFF85BFDF166BEF658E10 -3A55E007F38EBBB248B3F0B8ED1925106B499B762E45113AE1AC9DE09644C84B -9C08034B297314EE69BC32DB6E7D7FB9913CE5AC17E7335979E9DCCE2BAB3725 -1976155551F9706A576FE0E3ADCCF72C87683291528ECB749CB0ED291966E239 -B5E3630676BD409E08F85BC1AEC9A2D4135376284A96EA24431243BD6FE8B966 -95F11A4BB53F392E0AEFEA623064FF8A7002367B0A515635CB2D2DDFB9B4A8D7 -FE721754E81BBA548848A235B91AD4E4F7DB19CCE2F61D277FC00AB956EB93BE -44AB4970CA56BF59506C94ED160FB1E25D3DF2988A532BDB787BFB8539D22986 -FDC378AC31444E63C4727FEE121A43751043849E6DCAC5B59D0FC703AAFBBFD4 -E8B7C268F21615AD02CE9DABEFA27B5FE6A6441B619539CAB1F810F1263447AA -633F5DAF483752EF1A0421740E3A811D2D2898CBF53E7F686C9223FD7235F02D -6F90D2D48CC20AB87778DE3C6FB335E0F0EC20B5DC5B65223FE117526DE2C72F -FE839DF93CB2A7D66CD900CB325F891E311BEC932F703FB4FEFA29DB8B9C88DD -375EC71B3D58C7BC59ADA91971A3BDA1ADEA629CE6CC92BD542CDDFAA7706FB2 -6CDDE2DF07E56D6741916AE8E8744339816F3E6C38062747AA9FDA2A2678A6B7 -EFEA870AA3A4D71B25EE3013EAB1DBA34401B867C7A41AE51E0421D41D3BB83C -E120C8FEABA6E5DEC53A689C21426D4BBCB68CB37568761C360E6D4E3596FB7D -F4DEC7918E58C0293D12D6DDA7E9DCDAAD7C939F55CD1BC4A228B31E9A904156 -DA6B40B08E6ACE674618B768DD681C772A3E55FE096CF949CF3B0460ABDCD891 -D17B37B355B29AB5137899C036F31DA026244FA25FB798FBE5105BDA29F46538 -D3D3AC1001A7BCECE64DE94FFE6C354166A0F97256137BDFA07F6E22A3D1D2F4 -9588DBAE95E895BC5E64DDCBBAA8D0A22C229B42CB717FC711E7E9DF793DF80B -9F14754585A3C7E17F37B32924B9F9870DA8635E3E18BD1DCD81EDF01834D9C6 -B33F23C956C2FCBFA47D84422F583459D827D1E120B97694D12F1F54D02379C0 -D288F7104F3FFCF4F76E3494F4ACBD1BE3A15543CC680924C78A473F8E311ADF -8FE00A04C6C393DE61AD3EDA5BC031E2353076A2489391B52632387CA28A7B93 -FBB065A6EF3658AE80B1ADA47E9B2539E73A71FA75645F85ED8ECC257FB4CF26 -B6C912DE9D0F9899E70BECCB934AD32CF49A093371A9F73DE6255EBC39DE1E7F -00D0CBDABD4D0383977E694890E71FBE5C376BE5F3A80C28987417504F515C50 -909F3D31178BB9B1D085BE514F71B910A9085BD6122DDC72A150BFE266920E49 -5661BCB4BAB51D6DEFE32B616963DBD989FCDD1637B294CE4E288655FBEFA1BF -7F25BBF8CF17C2D5FD161A7C2CC9CC7490D9BF15A1D35B3BFA43ADE256E88BDA -BD490D92907C57BAC408A575EC84D6AEE070148C7C9A91C03B09FDBD792E8FF0 -C0B886AAD2EDD86541E5E579359D40E3AC312ACD3D8FD49F71BD533DDF8859B1 -BAF17F1884E331DD07CEEF93B71D492AEBAADF7A263450A7A72210CE630A0D37 -BF024BDC09ACC882816B8C22C62AE38A3A8D0F6EBC2B1B2C0B8161A8B076DD5D -4B779C0788546BB4CF57332230D237856B00D79C28A7C01D11F44B7304F69075 -94B97A745DA43D1BE561372CE611C345A843834E46AD9DDB16CABCD3FA33D6F1 -F6B5C0497F5EE5400B305CDC16A7EC286AA4D45D0EEBB9DA06AC9C5294D68EC9 -E4DC3CA2B92CE8FC0526184A86EDC7AB34D67E60AC12D9CA8FD300235EC968BA -92C6FBDA47572BC5600F25249F60AD287CBDAE980E747FCBE7EE5CD323E733F0 -63553B494D3DDEB9CC1480B5C3BB79A28E419AA65B18CB297AB383419E890E2A -CE6F98C9900CCB4675280A10CF060B8D220DDA1BE55DFA65715EABCC1AFAA271 -B1F8732341613E17B231231A0D24D4D7FC198AE04D89A99C4536217769C6FBD9 -5EE24A6302F97438F7C0E311C878F674B4477A5ADA3952CDE4055AC408B8174E -86F8FB797646DFFFE0ECA25D1BAB9A9F71F3926D3D85AA63E7A8C931D71E79E0 -AF1EAC26FADE468F4FF7F3861D14C10E3BE1F9EAFD6D3A544E8108D5DAB5B180 -3950C74818BC8AF4758A108F462EF1826647A49667F5E482038C54716856D9BC -35F29922846D2148F92F943E951D7438C73D6A60459A8003174036C64E1629CD -155D47FD04B03C023AD67CD5A70C98AB556EEAB8C48169706E5B352F6505D580 -AC945171BFE62E81F8F500438AC3B64D857BA5BC54C2C4BBB237F8FA51296255 -E66A92A61FE13FDE781D393557EB72CEBAD86511035F775FAC39A0479CCD400F -226709118F887F47CC2ECC8F79816D4A945B2845F50AFD62D8C9A9BBF4739496 -9E644BC9F7B04803B7EE75A09EAE94365F6F374B4FCEB0B506C76297564B9B6B -8B812BC3A33929AA94692572B010E6210AEAA312BDFC88BF302244AB9D587A9B -919823FD01DE12438D960944D1977800FEB49E638C32E5B188B1CA033E0C37EE -A142F746367888AA119535F0CCAF7EAA461B790EB089D2D6962E28A398439BB7 -9C9943654D7A2D765B46BC0DD1F915327F369162E1BA1BA83110B93F442905E0 -523BFF5E279508A98568CD5CFD18FABBE9D17265A9081E7BF64155A2CE3C0DF7 -88D00671AD65654709589BAD7EA65BBA811387ABA5CA0BC3F66D3D48597A0D1D -2C268375DF47CCF62166262AE4840AB03BF49BE67A05EF66328EC729F03CA5FF -AD3937FC053E223303565DC771ACF32E63DFB96D5030E787961D72D02C195C66 -B48E9AF0309DC169CFE8D16E2818DA94693A18F027DEA0D91051800EE6C54285 -AB0594D87D05EB4CB44FFC094DA0072AE7D4BF2F4F9BB812FED256B937BC2574 -8C529F97ABAE081B0702A3349EC9A6641770F5E9F75CBD40A2C2BA1DBD67A5CF -D70BE80E6FEA2DEC57585BC12DD19303032F784B5EA8A81B9F57068AE5ACB44C -9F238F165B21A92EB04D52A426EDAC9C51AA89590A9FE55EDD61D4DEA371A755 -470BA3003F4A2C090541FF7338D596C136190843524476A243575ECAF29C73F9 -77FEA4CBE6A6B2F78681D8F646CECE4A2FB1DD76480AD3B1F887422DD5ACF9FF -F0778F9CACFE4DEE5085B01A48F1568BAD834879452B01750AD448731F9C4FBA -D695860DEFE1FA3FDF7EB0E91F3970017B4AE918E58DB0CC3C002A0EB03811DF -56C850E2D9A2D0B8725FD5CC26DA65923007A0756A1F0F558E92DBDE57FB1368 -DCC00D70A3DA5D9C2620A5E366D2E48F05D6F8228EC0D101E3E2CACA9EEB4D7E -9D74FF5175802E1C15E5DBEB7A9BFC5E31ABE9F50D35E35C68E07C398C79D3DE -25E000CA48F61BB6A3EDB84BF5A44CF67AC30C5DACE75F9991F188DEA89E8F5A -EC160CEF0ED1AD45CC8FC1172F02372E312505 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMSY10 -%!PS-AdobeFont-1.0: CMSY10 003.002 -%%Title: CMSY10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMSY10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup -/UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMSY10 def -/FontBBox {-29 -960 1116 775 }readonly def -/UniqueID 5096651 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSY10.) readonly def -/FullName (CMSY10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 15 /bullet put -dup 20 /lessequal put -dup 33 /arrowright put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0 -7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81 -DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91 -511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6 -1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD -028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86 -1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A581BE543D73F1FED4 -3D08C53693138003C01E1D216B185179E1856E2A05AA6C66AABB68B7E4409021 -91AA9D8E4C5FBBDA55F1BB6BC679EABA06BE9795DB920A6343CE934B04D75DF2 -E0C30B8FD2E475FE0D66D4AA65821864C7DD6AC9939A04094EEA832EAD33DB7A -11EE8D595FB0E543D0E80D31D584B97879B3C7B4A85CC6358A41342D70AD0B97 -C14123421FE8A7D131FB0D03900B392FDA0ABAFC25E946D2251F150EC595E857 -D17AE424DB76B431366086F377B2A0EEFD3909E3FA35E51886FC318989C1EF20 -B6F5990F1D39C22127F0A47BC8461F3AFDF87D9BDA4B6C1D1CFD7513F1E3C3D3 -93BEF764AA832316343F9FE869A720E4AA87AE76FA87A833BBC5892DE05B867F -10FA225E233BCFA9BB51F46A6DF22ADCEACC01C3CD1F54C9AEFA25E92EFAC00D -7E2BA427C25483BA42A199F4D2E43DFCE79A7156F7417ACF78E41FCA91E6C9EF -B933450D851B73A6AB6AEA7EE4C710CB5C14270D1674FA334686653793FCB31B -491E870D3C2BC654D2C1DE463EC9BA29D7371AA1078800EF93D3F66263A2EBBB -F5723697BF7448BD0D2E301544BECF497FD475B85DFEF52AF4F8F8BE445CABE6 -019318806D10C5952157FF8F8286C1EE701545C8F60EFA854EAE66835A2046A6 -915D395F1E0366EFE0C0391583FE001FF16D82A2E2DA5F57754A2C6F69306E36 -356ECF8EFC3F1188AD6FCD2427E0580C97A5B69B4E0E09B85EEDE142F5ADD2F0 -5DE51D6DB72B127412A0D57106C19CA493048A4F815129ABE767D51715B1515D -9C21067CB5BC88741B7298C83EAE36A866DFA87D8981F179B1C31292F56BBB64 -3C430779468AAF07C8A8B4934E1E775FE3F35186BD1FA6EE3689C1C750678AF1 -FBF9B23195A124C5C991FE670AC0C86FD39D2B07B9A319E74EFD498B45820252 -720ECDF7294F7B0B137CEB86D33BFCEB8606985A3260FD669E461C8BE94216C5 -D434FD8854F44EE66E5A289A9F9E32BC36AF645D53F96652602BAED418C8D726 -BD04A1B4617551FE4DEF54083D414F7DCE004E6BB2DC9C2EF7CE232B254BA2C5 -7DCBD36C2072ED46FF711F121A701E2284BF1B718B3164382B8F453D68FA0377 -DFE106503B8401D4DB87F5402A3AC9A442FA060B0610A9524D530C7157C26B56 -AC970FCC1D5655FFFFA39246E6420CF97D08ADFB7B05822679BD40C638DDF0E7 -A97BFE8918B611A145AC965C203F1428812F9D340AF499B3A915B22BE798594E -0F520109FC81E452180AE45B170FF999C5FC2761C6CECD8742A5A6FC97F16743 -AD4EFCC6572A6D3F3E4E330C5CB2FF6FEA48A5B64DD3DBE943BD9918D4A18E18 -CBCF598AEFBB6AB3CD2CBC9BFD6099272F6543F3E532E0E21E614BD2880B1023 -0AC234CB705827BF016DB84E00E8C255FDEFA0101A842929540B7B4AA8A089BD -5EFF05B72356B6BC3727817823B5CDBB1B963103000D7F2A4E2A1472FC3E614B -5CBCB6D6D784023173DEFEBFA8F9ED87EC1A0A9EE98CA59CFC964CF943DC683F -E9E00DA718C4425A705A69D99988EC6F152525C790912C2E46A2381A569424AB -54DF4798BC2D7E7A361E7991641D4B756CE2A7FF4A2848927092C59C2C4B8809 -E13AB84FB6B111E680D7FB9F2FFC2C5C66B0B501E4447C2E46C10E2F6124476F -A140C404CFE2DC9E0199BF61E035CEB481D438139A9630934E541D261FFD2906 -4CAD99E20655FA746AFB81EDBB5601F5FD6B1D6832A01D585E2C55053F6A7378 -4DAACCAC7608DBDADAAE732D66B3E7F87E79756337C1A961E53A4651BE7C77F4 -038B89C87F650C54A2A90EB7F1D525BB353F33318551EE8D84A6A83C718EA5A4 -B2AC0F7306B1E095819B87015A90CA3ED739B09061782C28CDB36BA4BD5E5308 -5CBB70414E4112193DAC4A1FA30996327230D1E021F3CD8115E12D239D93FFDC -B645910EB29E40D830E7BAF2DB255FD7C4E776557BB38157917D993EAC245837 -A3B515147043574157B8342D829C7228CCEA843ABC89D1785A9672A5923FC4CD -2F3FF27E6FCACF84E2D3136CA2C0FD3EF1EE7354CD04C38B5FB874553646ED2D -CEDF7E362EADD04B18051F20A8FB0DE18E152385B9D05F98A3A7EF177824E246 -455ABE69E2F700EB78185CCFC07E3B4C6FA301112528D977367D30D0D5D59EDE -FAEB706DDC970A9E296236C725B2B55B09B9C336B8E23CBA5FB8692D56F33B03 -16294E5FC7FAA42E96395A57CE51CA8DDD77442F142E2E576B778373FB31C81C -16840BB422CA827E30A81829648BDF1CA36700EA32AD888D097C1FE0A05B2D9F -483AEE40269DF09AF0D1AD3DF80C45DDC59C2A03FBB661C79B87853737C6D352 -67626B657321B16198DBD6DB98A092F17878AE4698121E1006E53D6F9B0A3BE2 -3FB68828EF854A0CDBAA68B37ABCA6AD4A3D809AAF0BAB1697A81FE59C98C472 -1E33CD70A75A22C249DD11D76C2575ED3370A25892A16D2FD569CDA70C130770 -93F493C7D47D6F9A5424A7A542BAD726BFC3AB225DCEBBE6AC4BE006F8C7C0EA -051424B08305BF2D951AB2986AAFEA04E078CA79B399585BFF0F1ADCED02E15B -8765EB6BF6A8E4D0901EFF2C3AA104924EAD9637A35D877E0C51A3C37DA78CD4 -8643C8CE6DCDDE3F116A6C2390F948E5371BEB5AD2E87B41C5F01FB5C196C436 -6E256A88D082E3F46E4EFFBF605B2EFF1E9D9AD5EE4DDC323A137CD9451EDEE0 -06F7D82898D71FAF2362C0FCF1F726F97F820305B7CE20728CA08C63575083A7 -84BA28B7DE2B916432475510E274C12FFD1660A717F51DACFDF0A102D85224E0 -D6DB607BB72569ABB8A7BC6A10354CBBC01732EFE35B72062DF269CB25EA3DE6 -DC603B04C90C5912D2C38D7A5ACDCDD3F6F116D884F0D8C528F69D5D47BA20DB -0A9E585C7D8CC3C324FE8A1DF150279F7E8FB43BDB720E624E5E9918032C02CD -8020636AE5C38DA2484B7F4B34163E0D0A561B43B80E97746DC05C871AB620EC -C5D47101ECED4A7E25F291184BEF8B80024AA7BB456C1B83A907652B331DEA34 -754226C39C6889EBEEFDAD081E01EF8FE47751987667836FDE4C8BB8A3FD4406 -1E643B4EA37BD370734D1A2DB17C2F4B74B4ED75098B433601F75A88C9A37A05 -CCB157EF6E32023BFA33973F3E655A4D58289136996FCFA61EEABD70791B6523 -1FF5DE71AB8A17038923118A5EED8D59C4C58D246FFA9BB26472346B40C8741F -153D19CAFF20DD2A86C6DB89154A630FB1761929FC3F0448EE2F089C1C953E02 -905BA8DE75D101A982A611056C4B237596C10951DD98BAB838B742D3CF7DE718 -617DB72E5268583223E37E029D1C8FD3F1D21690151F76B76C52C725CA135CA2 -8666553E863CE188BFC9B99AF56AC2DB5BFEBEB12FB563D00244EB89E478657A -98AF2E1223C1ABC25A4500E8119B86EB3C26B8A2F3505A3E5610F89B7C34E278 -53FA0A54A7F46D84A35EFEC36AE660A9E3C37EE3864106702DE5AF6C45ABF64B -888A4A51323138CE77DB935576FE6B4824B6942DF80625098CE1B5B32B234F1D -052A9D6039697118A9D793793775D8729D8574A2E74D7109C7B7E23BC5E2E87A -CA8E019203952A4892544E1AD3D4EDD22971611358AB230E9A2ABDF00A288501 -A01B67C42B33F6B78C39562DB50F4663B922D9BE0D8A150311AE44B83C1F129F -07337323E9A23211EE58E16043E127C6F9574019179F5635648A011266677B56 -B5D0201A4E1470B952A1579B57AB2329CD4C615395023C653F784D36B5EE3672 -10D191F29EA508CE84763CA4CE7C2C5229E38E241255A5CABCD6C7CBAED901A2 -CA53B5E24111921CDDF83578D33D463D70EDACA0E470D8F592303FB6BFD68B4D -3F3BE2D7C5EC8BBF10C90111A33E205F2649B56E8443F6FAA6C721C66575AE12 -D4C40F1F46CF9E9DA675AB5D5840D938780CD9E4AD6736ECBEB6A4397613586F -849B51048AC5F9405E03E14540A5E5582F61CDCDB57EDDF95A8C6705F433EE16 -648F098C03DED8A2AD94AE3DE202D629B9422ABB031318D48F2C85F9DBFA17BE -84708AA3B6C9F81F4508F7A5CB7B6646AB8722ECF817877B77D473F577556DAA -2BA0ABACFCF5DEA7498C47328E873019A956FBB250FD9D8885D21D368FA70CBD -2709D2DA44EE7A9869963EAB48789541906DE49FAE785ECE1F18A22C7E7ED204 -9768896B78E9EB7A2BD6EEC1B26083940656ECD689D92942CC8AF05CBF82AED0 -B45A7DF4DD7AA6526FB597322560B9ED3087A65B5EEF1371C328A021411BFE3B -D9B5088B2F1AAE381FFED52D2D1E02CD0DA78683E3B06171CBE94BE9760005D7 -135893D7CC2DB097F6AC664D9594CF1C650F84DA80D2EDE04802DBA33CE3DAFE -EB7A37E8AEFA4FDA6252FF21E8673DD98E67124D5DBC7BACF361E57077B71939 -C1D1FB923E4E35C075CD1BCBE0E80DAEA1320D55B43EAB45D9B26C366B278782 -7519FDC482D98839BF0DF2E7C3A56A1C1A3FC0E57A75CA414F6536C1FE8EB7A0 -4ADFEE3BEDA0F53BE8CF5F64230784A797133E8CD46BCCB3BF38BCE38A73CCE2 -9E073ADE792F7128231DDD1F63E6156ADB2609C200837C2E8A2D93D2A7BC9171 -050C709A71E44E32B1B03C92EB5CF1D3BAB1C38E027DC4ED9AED633D98CD7486 -3F773ACF8AE332631CF2ABE6D606607593FE862ADE31803964E3F4DC3CE3A271 -C76BDD95C87CDB3B87BC26FC7A16D567EEC62E6FF0D471B4853DB8A94D4CACF8 -843824F818083F10E88D52FC4253E8203292CB40F1414AE7E51DD7347007C342 -CD70E8E9F2D2A13D71213B841DDEAAB208AD9EA644591C15DEB084165F9DF24B -B91D3BBEEC2E34E38EF16A0C3F00700A7BDCBBFED2EC0D09601AD6538288DB50 -3478B051B5E16B604A0341FE621A58718D960D699D3FAD284310DCF54EB13175 -19A75A539EE98E804AEA24689D3540F0F12951A3C01FACCE9A7BAF4D0DAFA946 -FF65A4D2A4C39969607272C6886F44E90ABE27CA3A1F12A29D9B32E60E8E34F0 -17C5FE43D0E69A99A922D98909B2BBCD145E59A5E7F5426B3988F73B09A525F6 -8BD4915663C1301323180E760BE81CB874B020FDA3AE63340E4261E4F3E4949B -CC0966BDC4426190BE9F5D77F76A72AD925662E5FE1CEF9CCAB68F0BD33DA003 -F11EB91AC4502FBD6AE48DA0F9D07C35B96B103E379B8A83A05FE728F1716194 -1F650F75BEBADB2E3810388F3E2DC7B19F1BA9E32925F2FD9F19F4E8701F3E4E -4069125D7C401144740691E7A460021A47B1E27997FC1DDABEC5BD0EE0B20194 -2D579C7D6727AA124083242BDA46D8E116E2751C5F298851A62B60AEBE82A929 -9B9F2492BA35690D1EFD16215B8EF14E7A3803B93C28FA41D971B05B6AF3B593 -E74AD1E68A5FCE12A86E63B78BFEA87D3949FD164F12277A4688BE96356791CB -8671C49365608F3EDECC109321AF92B4C29CAF073DA3A7D73E913D0D83FAC5EB -BD884D4C686056404DAAAD6F82F94F803FA1FB0DD8908D1DF08FB87A8BB83027 -04DE0CBB1C6FEB6B517FBD7CF065120079E608CE41893C2BC96A347826CCDFD5 -C69E161217F2127A59F1A6F22037641613F191F22D5B4CDCBCC2EE5615623404 -ABA7BE6C5FE475481615B2AC1A2412E54688DD21E44CC9AF5F16E634AFCA389C -4D740B7B51BB141BFAD1080E7C726C1606A28ED492E6BDE9F800EFACD1513909 -84E98CEB6A0B7A2A6F3E1D1DCC3B2552795E0932673E59ECC56DDD37A1D52BA6 -C3F0E905978AB568941A163F4CE3AAB5C5B16F86016EC47BA6F3F7AAAA77C3B6 -09C8C3ABDB6D514A76ECD37C37AA88B5860630B3406B494F7725975596F84777 -D9CF48686EC9C5DBCC1D78513F591C7C10AB9D153B3D41426B7BF668B0D04503 -56BCB686258462C1DC61095724B9F3312316262FD7C1AEC6E54DE7E5A7BD8EFF -035299B8FD8A4A7B0F51404F4A760F4D8B4C0FB7A32FA4B2383AB6E9C78FDEDB -FE6A5788D38A6701B123630C2A6D820A684166FBBC83DB17069494FBD411B333 -CB37E2491C5BD035A33867A6D3A3D420CC31ACF43AA07182CAAE67E40EC63663 -B678F71D4C6E0EC3A0AAF904CD3AA66E0DE5E3CDE049E94249B39A1C06E3CE9A -F974B2484BB2CDA14282B9511E505B3C89F9C802218AE40D1A7541335C5736DD -CD565D4B9F4CC78F3A393737EDB4FBD0DA299E21CCFEBA5478EEF013F0552A8B -0BB11FF46CCDB784E8BDCF730A16363E66572049E42C695886EAB42A9AD9094C -B635DF4B5B9BD9B9AE8455DFA3EEFC77653190F9A8B1E93B7281C2A21EA7DDA9 -33484745BDF7E3DD63C7AC66C286C9A5A698A5E4D7A91710B7FF943FB23609B6 -4B442F83CB795788FAB5E9CF3F75D5487DA26170E4561C7941C910B088C3B86D -F844B0F340CF82786A3FCF347048463EBD2006281A816627065DDA6CD4D3AC5E -2024BC96C7D896381BBB567951E7A1F29D4E95351298B000D29E5F3D0448CB5A -CFDAE1BADE9403B90371C3A07D208948AFA022A69C519434B6813086ADF518D5 -88E0B92072A44BA1B3EBB630A13B7AB90992E85B6D67361C8D96F3E0D826FF37 -17B67E4B1EB7BADFD98D7F4FD17BECE740ADF13C141EBF0A91CB105DABB32FE0 -55086D56A0D358841D15FD349E6B95512E4EDF4C430216FF85C2ABE995E4B40A -A6044CC8820AD885C07E052B3F91C2E9A1D163BFFD210F7BE95B923E2500DB50 -2075106DB541C267BD450B25B670CE80BCD068D4DBFF2D82634175B61FBD3BC3 -406131F44C7D6F18D375D1F2270829DDF29DC14DBB58A30AC193245D18DE91F8 -AB88AB548D8138605BB5A50073295534E314366E26665AE70482B890E4101D6B -60E4F3B37ABCA1346DAAE8FDB8DD9C832EFF3E73BA470E2BACE7B8515CB43388 -C27AF99FF9322175CF8D4947E6B3846AFF5163E972156847F58A66660EC8A3A6 -5FB47C9F637B4CBB4C73B6A080B0CF6FD1E9665E92032540570FFCC747C67C50 -822811AADC404BC7ECD1673E8AA6C3A2F1D82F39430B58C29145E2F1B679C46E -94EDC711883F1E4EA84117A54757E8895A40401A26E1437B39A2F65CAADD6E02 -D71FA8AF7453668DC613F326A3344F74AD7AC67569AF399385500ABDA5EDD3BA -343CC5EDD4B558467626850E752B9959FEF1454E53E7A3DCBC2255AD8F6AB4FE -894455118A61C58840CB68A925ACCAD75CEACE863D806916228F0614191A1CD5 -DC9BAE256018615AA3725834519449B0A88B4F396654E74099C007930ADB1327 -DD119BF799FE3B0B223E1EDA04FE2DA7A1C879143E1C33B6C6344F4BA033AD6F -8E88C33DEF1977796B454BAB2494C930F492A518E8198C708A75FFEF8C49C324 -A718AB59B889DED521229E741FFE53F98EBE88B0405AD523254FD3FA4BBE96DA -DA1C27C1C979A0DD4E61C3B1F4C4DE01E42F1C4435EECFC02D97994BC8AF5270 -E7CB1458D76ED0229C5FFB4A23B8716018F9050970895D51722CDE8F2EA3D947 -DFF374D84915D5C5D16463A6FFCD079D1ED416C4347BF831FF0C4ADFB61295DC -4D5785BB0852BF472CFC97EC174491CAF961AB90629F055E75DAA6D9898E8653 -5BCF379816CAE46FEA62E7BE8E9B953466E51828172C4DBD0E1BBAD1CE28B5B1 -02B3E36403BE80B49A47446A6677FCED438F01D60EB10F478C89528FA337D0D8 -88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70B1491 -307A6D9A2F2BA5099C8A07762E70BDAA74BA5E2BAB260C1352107EB8A96523D9 -4BA3082B99772D585329AB8645C3BBD11D72BA01F95CCF11C6DEBFDAAF7F5C4D -795F99DAE6A8D59462D759001BBEBB59AB0C322EFE02904D82B424649C2FA593 -0E23281DECC5AA908E54244566055D418602EEDBE78843300158908F77C0AC75 -9562065826D34C38C598D8626BFED7CB672F132E065E2C27932F709935988376 -94901EBAEAEC410E2B36575A71EBB8954C3A90EEC264E6115950FC91D0D54999 -323D8B4FF8129A8EEC3900A00CCB026E6943BE105BF5F504AB332FC17E568681 -F423D1125A596766BE58ADC658888DB39BA74F67CE0E26C392220832FB036E93 -7587E96684BFB78BD035F54AF71B2408241AAF548F996AD440155624B3EDDC79 -2102EE58E1E27EAA0675F1F13297A4CAF514CB319E58D424A820B8F489849879 -318727C1DA0210C5CB197EBFB73A079929B1165E25679B60E72E2BB02631FEC3 -CA5F25F5BCD827F23FDDAF58A888C403880E4E35037A8FFBA4B184C6783E6BA7 -94E2B49ED3C490D140901C913AB9BEEDCE223DA1161D6302D6AB6E52BDCF5361 -0B3359290AF0C6D4E507FE6C285DF15143F0E4FA26ED2BD186D3B309896AFC0F -E5B4628817E6349200578DC07365F32E28B0161B3DB97DBDED52F6A422745ED7 -137DB0FA14DA2AE2275529793C3698CC8900C2CCA6BA36E3525EF8AD5ED3278E -C53F10DC7324F1A6DE8B98AF382E678472701E8271E0539A096243E9741E4E0F -C93E81131152AECE76F5BBB7860823ED7E9D2FA6DCDD3E3DC85E8F170D89D6C4 -246A0CE21BD731B1261EC832E3D6FEC650FE113F0297D59DCE237DF6E37F8FF2 -BFDD80197A52EB6A353528EA2A9CAC645E8FB0630C32D35201C2FC7E64454D4A -083112BD65C505B677BC274388A7E6FA7A9CDE9AF3A89D599652B5606AE13DAB -31249CCCC02E0F681306BB74F4FB9C03C153D59F48E59F4203CE3AFA106093A3 -EACD0C9EB51CF11D13EC0ACE0B46E82AA8FFC9A1DD864A8E00969007F5663834 -60D2B0E3AA7377555C3721D9C293CCD687EE44D04ADA10E8C4EF26BB73 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -TeXDict begin 39158280 55380996 1000 600 600 (ocaml-http.dvi) -@start /Fa 194[71 61[{}1 90.9091 /CMR10 rf /Fb 193[71 -1[71 1[25 58[{}3 90.9091 /CMMI10 rf /Fc 222[91 12[71 -4[45 15[{}3 90.9091 /CMSY10 rf -%DVIPSBitmapFont: Fd ecbx1200 12 32 -/Fd 32 121 df<0000000FFF0000000001FFFFC00000000FFFFFF00000007FFFFFF80000 -01FFF803FC000003FFC000FE00000FFF0003FE00001FFE0007FF00003FFC000FFF00003F -F8000FFF00007FF0000FFF00007FF0001FFF8000FFF0000FFF0000FFE0000FFF0000FFE0 -000FFF0000FFE0000FFF0000FFE00007FE0000FFE00001F80000FFE00000000000FFE000 -00000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000 -000000FFE001FFFF80FFFFFFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF -80FFFFFFFFFFFF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF80 -00FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000 -FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FF -E00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE0 -0003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE000 -03FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003 -FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF807FFFFFC1FFFF -FF7FFFFFC1FFFFFF7FFFFFC1FFFFFF7FFFFFC1FFFFFF7FFFFFC1FFFFFF38467EC53E>28 -D<07C01FF03FF87FFCFFFEFFFEFFFEFFFEFFFEFFFEFFFE7FFC3FF81FF007C00F0F788E1F ->46 D<000003C000000007C00000001FC00000007FC0000003FFC000003FFFC000FFFFFF -C000FFFFFFC000FFFFFFC000FFFFFFC000FFC3FFC0000003FFC0000003FFC0000003FFC0 -000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC000 -0003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC00000 -03FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003 -FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FF -C0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0 -000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC000 -0003FFC0000003FFC0000003FFC000FFFFFFFFFCFFFFFFFFFCFFFFFFFFFCFFFFFFFFFCFF -FFFFFFFC264177C038>49 D<0000FFE00000000FFFFE0000003FFFFF800000FFFFFFE000 -03FFFFFFF80007FC03FFFE000FE0007FFF001F80003FFF803F00000FFFC07F000007FFC0 -7FC00007FFE07FF00003FFE0FFF00001FFF0FFF80001FFF0FFF80001FFF8FFF80000FFF8 -FFF80000FFF8FFF80000FFF8FFF80000FFF87FF00000FFF83FE00000FFF81FC00000FFF8 -00000000FFF800000000FFF000000001FFF000000001FFF000000001FFE000000003FFE0 -00000003FFC000000007FF800000000FFF000000000FFF000000001FFC000000003FF800 -0000003FF0000000007FE000000000FFC000000001FF0000000003FE0000000007FC0000 -00000FF0000000001FE0000000003F80000000007F0000780000FE0000780001FC000078 -0003F80000F80007E00000F0000FC00000F0001F800000F0003F000000F0007C000001F0 -00F8000003F001FFFFFFFFF003FFFFFFFFE007FFFFFFFFE00FFFFFFFFFE01FFFFFFFFFE0 -3FFFFFFFFFE07FFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC0 -FFFFFFFFFFC02D417BC038>I<0000FFF000000007FFFF0000001FFFFFC000007FFFFFF0 -0000FF007FF80003F8003FFE0007E0001FFF0007E0000FFF000FF80007FF800FFE0007FF -801FFE0007FFC01FFF0007FFC01FFF0007FFC01FFF0007FFC01FFF0007FFC01FFF0007FF -C01FFF0007FFC00FFE0007FFC007FC0007FF8003F8000FFF800000000FFF000000001FFF -000000001FFE000000003FFC000000007FF800000000FFF000000001FFE00000000FFF80 -000007FFFE00000007FFF800000007FFFF00000007FFFFC000000000FFF0000000003FFC -000000000FFE000000000FFF8000000007FF8000000003FFC000000003FFE000000003FF -E000000001FFF000000001FFF000000001FFF800000001FFF800000001FFF80FC00001FF -F83FF00001FFF87FF80001FFF87FF80001FFF8FFFC0001FFF8FFFC0001FFF8FFFC0001FF -F0FFFC0001FFF0FFFC0003FFF0FFFC0003FFE07FF80003FFE07FF00007FFC07FE00007FF -C03F80000FFF801FF0001FFF000FFE00FFFE0007FFFFFFF80001FFFFFFF000007FFFFFC0 -00001FFFFE00000001FFE000002D427BC038>I<000000003F0000000000003F00000000 -00007F000000000000FF000000000001FF000000000003FF000000000003FF0000000000 -07FF00000000000FFF00000000001FFF00000000003FFF00000000003FFF00000000007F -FF0000000000FFFF0000000001F7FF0000000003E7FF0000000007E7FF0000000007C7FF -000000000F87FF000000001F07FF000000003E07FF000000007E07FF000000007C07FF00 -000000F807FF00000001F007FF00000003E007FF00000007E007FF00000007C007FF0000 -000F8007FF0000001F0007FF0000003E0007FF0000007C0007FF0000007C0007FF000000 -F80007FF000001F00007FF000003E00007FF000007C00007FF00000FC00007FF00000F80 -0007FF00001F000007FF00003E000007FF00007C000007FF0000FC000007FF0000FFFFFF -FFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF800000000F -FF00000000000FFF00000000000FFF00000000000FFF00000000000FFF00000000000FFF -00000000000FFF00000000000FFF00000000000FFF00000000000FFF00000000000FFF00 -000000000FFF000000007FFFFFFF8000007FFFFFFF8000007FFFFFFF8000007FFFFFFF80 -00007FFFFFFF8031417DC038>I68 DI72 -D<00000007FFC0000000000000FFFFFE000000000007FFFFFFC0000000001FFFFFFFF000 -0000007FFE00FFFC00000001FFF0001FFF00000007FF800003FFC000000FFF000001FFE0 -00001FFC0000007FF000003FF80000003FF800007FF00000001FFC0000FFF00000001FFE -0001FFE00000000FFF0003FFC000000007FF8003FFC000000007FF8007FF8000000003FF -C007FF8000000003FFC00FFF0000000001FFE00FFF0000000001FFE01FFF0000000001FF -F01FFE0000000000FFF03FFE0000000000FFF83FFE0000000000FFF83FFE0000000000FF -F87FFE0000000000FFFC7FFC00000000007FFC7FFC00000000007FFC7FFC00000000007F -FC7FFC00000000007FFCFFFC00000000007FFEFFFC00000000007FFEFFFC00000000007F -FEFFFC00000000007FFEFFFC00000000007FFEFFFC00000000007FFEFFFC00000000007F -FEFFFC00000000007FFEFFFC00000000007FFEFFFC00000000007FFEFFFC00000000007F -FEFFFC00000000007FFEFFFC00000000007FFE7FFC00000000007FFC7FFE0000000000FF -FC7FFE0000000000FFFC7FFE0000000000FFFC3FFE0000000000FFF83FFE0000000000FF -F83FFF0000000001FFF81FFF0000000001FFF01FFF0000000001FFF01FFF8000000003FF -F00FFF8000000003FFE00FFF8000000003FFE007FFC000000007FFC003FFC000000007FF -8003FFE00000000FFF8001FFF00000001FFF0000FFF80000003FFE00007FFC0000007FFC -00003FFE000000FFF800001FFF000001FFF000000FFFC00007FFE0000007FFF0001FFFC0 -000001FFFE00FFFF00000000FFFFFFFFFE000000003FFFFFFFF80000000007FFFFFFC000 -00000000FFFFFE00000000000007FFC000000047467AC454>79 DI<3FFF -FFFFFFFFFFFFE03FFFFFFFFFFFFFFFE03FFFFFFFFFFFFFFFE03FFFFFFFFFFFFFFFE03FFF -FFFFFFFFFFFFE03FFE000FFF8003FFE07FE0000FFF80003FF07FC0000FFF80001FF07F00 -000FFF800007F07F00000FFF800007F07E00000FFF800003F07C00000FFF800001F07C00 -000FFF800001F07C00000FFF800001F07800000FFF800000F07800000FFF800000F07800 -000FFF800000F07800000FFF800000F0F800000FFF800000F8F000000FFF80000078F000 -000FFF80000078F000000FFF80000078F000000FFF80000078F000000FFF800000780000 -000FFF800000000000000FFF800000000000000FFF800000000000000FFF800000000000 -000FFF800000000000000FFF800000000000000FFF800000000000000FFF800000000000 -000FFF800000000000000FFF800000000000000FFF800000000000000FFF800000000000 -000FFF800000000000000FFF800000000000000FFF800000000000000FFF800000000000 -000FFF800000000000000FFF800000000000000FFF800000000000000FFF800000000000 -000FFF800000000000000FFF800000000000000FFF800000000000000FFF800000000000 -000FFF800000000000000FFF800000000000000FFF800000000000000FFF800000000000 -000FFF800000000000000FFF800000000000000FFF800000000000000FFF800000000000 -000FFF800000000000000FFF800000000000000FFF800000000000000FFF800000000000 -000FFF800000000000000FFF800000000007FFFFFFFFFF00000007FFFFFFFFFF00000007 -FFFFFFFFFF00000007FFFFFFFFFF00000007FFFFFFFFFF000045437CC24E>84 -D<0001FFE0000000001FFFFE000000007FFFFF80000001FFFFFFE0000003FE007FF80000 -07FC001FFC000007FE000FFE00000FFF0007FF00000FFF0007FF00000FFF0003FF80000F -FF0003FF80000FFF0003FF80000FFF0001FFC00007FE0001FFC00003FC0001FFC00000F0 -0001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000000003 -FFFFC0000000FFFFFFC0000007FFFFFFC000003FFFF1FFC00000FFFC01FFC00003FFE001 -FFC00007FF8001FFC0001FFE0001FFC0003FFC0001FFC0003FF80001FFC0007FF80001FF -C0007FF00001FFC000FFF00001FFC000FFE00001FFC000FFE00001FFC000FFE00001FFC0 -00FFE00003FFC000FFE00003FFC000FFF00007FFC0007FF8000FFFC0007FF8001FFFF000 -3FFE003EFFFFC01FFF80FC7FFFC007FFFFF87FFFC003FFFFE01FFFC0007FFF8007FFC000 -0FFC00000000322F7DAD36>97 D<00003FFC00000001FFFFC000000FFFFFF000003FFFFF -FC00007FF003FE0000FFC001FF0003FF8003FF0007FF0007FF8007FE0007FF800FFE0007 -FF801FFC0007FF801FFC0007FF803FF80007FF803FF80003FF007FF80001FE007FF80000 -78007FF0000000007FF000000000FFF000000000FFF000000000FFF000000000FFF00000 -0000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF00000 -0000FFF000000000FFF0000000007FF8000000007FF8000000007FF8000000003FF80000 -00003FFC000003C03FFC000003C01FFE000007C00FFE000007800FFF00000F8007FF8000 -1F0003FFC0003E0001FFF0007C00007FFC03F800003FFFFFF000000FFFFFC0000003FFFF -000000003FF800002A2F7CAD32>99 D<0000000003FE0000000007FFFE0000000007FFFE -0000000007FFFE0000000007FFFE0000000007FFFE00000000001FFE00000000000FFE00 -000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE0000 -0000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE000000 -00000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000 -000FFE0000003FE00FFE000003FFFC0FFE00000FFFFF8FFE00003FFFFFCFFE0000FFF807 -FFFE0001FFC001FFFE0003FF80007FFE0007FF00003FFE000FFE00001FFE000FFC00000F -FE001FFC00000FFE003FF800000FFE003FF800000FFE003FF800000FFE007FF800000FFE -007FF000000FFE007FF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00 -FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FF -F000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE007FF000000FFE007FF0 -00000FFE007FF000000FFE007FF800000FFE003FF800000FFE003FF800000FFE001FFC00 -001FFE001FFC00001FFE000FFE00003FFE0007FE00007FFE0003FF0000FFFF0001FFC003 -FFFFFC00FFF01FEFFFFC007FFFFF8FFFFC001FFFFE0FFFFC0007FFF80FFFFC00007FC00F -F80036467CC43E>I<00003FF800000003FFFF8000000FFFFFE000003FFFFFF000007FF8 -3FF80000FFC007FC0001FF8003FE0003FF0001FF0007FE0000FF800FFC0000FF801FFC00 -007FC01FF800007FC03FF800003FE03FF800003FE07FF800003FE07FF000003FE07FF000 -003FF07FF000001FF0FFF000001FF0FFF000001FF0FFFFFFFFFFF0FFFFFFFFFFF0FFFFFF -FFFFF0FFFFFFFFFFF0FFF000000000FFF000000000FFF000000000FFF000000000FFF000 -0000007FF0000000007FF0000000007FF8000000007FF8000000003FF8000000003FF800 -0000F01FFC000000F01FFC000001F00FFE000001E007FF000003E003FF800007C001FFC0 -000F8000FFF0003F00007FFE01FE00001FFFFFFC000007FFFFF0000001FFFFC00000001F -FE00002C2F7DAD33>I<000000FF8000000FFFE000007FFFF00001FFFFF80003FF8FFC00 -0FFE0FFE001FFC1FFE001FF81FFE003FF81FFE007FF01FFE007FF01FFE007FF00FFC00FF -E00FFC00FFE003F000FFE000C000FFE0000000FFE0000000FFE0000000FFE0000000FFE0 -000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE00000FFFFFFF8 -00FFFFFFF800FFFFFFF800FFFFFFF800FFFFFFF80000FFE0000000FFE0000000FFE00000 -00FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000 -FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FF -E0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0 -000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000 -0000FFE0000000FFE000007FFFFFE0007FFFFFE0007FFFFFE0007FFFFFE0007FFFFFE000 -27467DC522>I<0000FFE0007E00000FFFFE03FF80003FFFFF8FFF8000FFFFFFFFFFC001 -FFC07FFF3FC003FF001FF83FC007FE000FFC3FC00FFC0007FE1F801FFC0007FF0F001FF8 -0003FF00001FF80003FF00003FF80003FF80003FF80003FF80003FF80003FF80003FF800 -03FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80001FF80003 -FF00001FF80003FF00001FFC0007FF00000FFC0007FE000007FE000FFC000003FF001FF8 -000001FFC07FF0000003FFFFFFE0000003FFFFFF800000078FFFFE0000000780FFE00000 -000F8000000000000F8000000000000F8000000000000F8000000000000FC00000000000 -0FE000000000000FF000000000000FFFFFFFC000000FFFFFFFFC000007FFFFFFFF800007 -FFFFFFFFE00003FFFFFFFFF00001FFFFFFFFFC0000FFFFFFFFFC0003FFFFFFFFFE000FFF -FFFFFFFF001FF000007FFF003FC0000007FF007F80000001FF807F80000000FF80FF0000 -0000FF80FF000000007F80FF000000007F80FF000000007F80FF000000007F80FF800000 -00FF807F80000000FF007FC0000001FF003FE0000003FE001FF0000007FC000FFE00003F -F80007FFC001FFF00001FFFFFFFFC000007FFFFFFF0000000FFFFFF8000000007FFF0000 -0032427DAC38>I<007FC000000000FFFFC000000000FFFFC000000000FFFFC000000000 -FFFFC000000000FFFFC00000000003FFC00000000001FFC00000000001FFC00000000001 -FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF -C00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0 -0000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC007 -FE000001FFC03FFF800001FFC0FFFFE00001FFC1FFFFF80001FFC7F03FFC0001FFCF801F -FC0001FFDF000FFE0001FFDE000FFE0001FFFC000FFE0001FFF80007FF0001FFF00007FF -0001FFF00007FF0001FFE00007FF0001FFE00007FF0001FFE00007FF0001FFC00007FF00 -01FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001 -FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FF -C00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC0 -0007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC000 -07FF0001FFC00007FF0001FFC00007FF0001FFC00007FF00FFFFFF83FFFFFEFFFFFF83FF -FFFEFFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFFFE37457CC43E>I<007C0001FF00 -03FF8007FFC007FFC00FFFE00FFFE00FFFE00FFFE00FFFE007FFC007FFC003FF8001FF00 -007C00000000000000000000000000000000000000000000000000000000000000007FC0 -7FFFC07FFFC07FFFC07FFFC07FFFC003FFC001FFC001FFC001FFC001FFC001FFC001FFC0 -01FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0 -01FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0 -01FFC001FFC001FFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18467CC520>I<007FC000FF -FFC000FFFFC000FFFFC000FFFFC000FFFFC00003FFC00001FFC00001FFC00001FFC00001 -FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001 -FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001 -FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001 -FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001 -FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001 -FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000FF -FFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF8019457CC420>108 -D<007F8007FE00000FFC0000FFFF803FFFC0007FFF8000FFFF80FFFFF001FFFFE000FFFF -81FFFFF803FFFFF000FFFF87F01FFC0FE03FF800FFFF8FC00FFE1F801FFC0003FF9F000F -FF3E001FFE0001FF9E0007FF3C000FFE0001FFBC0007FF78000FFE0001FFF80003FFF000 -07FF0001FFF80003FFF00007FF0001FFF00003FFE00007FF0001FFE00003FFC00007FF00 -01FFE00003FFC00007FF0001FFE00003FFC00007FF0001FFC00003FF800007FF0001FFC0 -0003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF -800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007 -FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001 -FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC000 -03FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF80 -0007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF -0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FF -C00003FF800007FF00FFFFFF81FFFFFF03FFFFFEFFFFFF81FFFFFF03FFFFFEFFFFFF81FF -FFFF03FFFFFEFFFFFF81FFFFFF03FFFFFEFFFFFF81FFFFFF03FFFFFE572D7CAC5E>I<00 -7F8007FE0000FFFF803FFF8000FFFF80FFFFE000FFFF81FFFFF800FFFF87F03FFC00FFFF -8F801FFC0003FF9F000FFE0001FF9E000FFE0001FFBC000FFE0001FFF80007FF0001FFF0 -0007FF0001FFF00007FF0001FFE00007FF0001FFE00007FF0001FFE00007FF0001FFC000 -07FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007 -FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF -0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF00 -01FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001 -FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF00FFFFFF83FFFFFEFFFF -FF83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFFFE372D7CAC3E>I<00001F -FC0000000001FFFFC000000007FFFFF00000001FFFFFFC0000007FF80FFF000000FFC001 -FF800001FF8000FFC00003FE00003FE00007FE00003FF0000FFC00001FF8000FF800000F -F8001FF800000FFC001FF800000FFC003FF800000FFE003FF0000007FE007FF0000007FF -007FF0000007FF007FF0000007FF007FF0000007FF00FFF0000007FF80FFF0000007FF80 -FFF0000007FF80FFF0000007FF80FFF0000007FF80FFF0000007FF80FFF0000007FF80FF -F0000007FF80FFF0000007FF80FFF0000007FF807FF0000007FF007FF0000007FF007FF0 -000007FF007FF0000007FF003FF800000FFE003FF800000FFE001FF800000FFC001FFC00 -001FFC000FFC00001FF80007FE00003FF00007FE00003FF00003FF8000FFE00001FFC001 -FFC000007FF80FFF0000003FFFFFFE0000000FFFFFF800000001FFFFC0000000001FFC00 -0000312F7DAD38>I<007FC00FF80000FFFFC0FFFF8000FFFFC3FFFFE000FFFFCFFFFFF8 -00FFFFDFC03FFC00FFFFFF001FFE0003FFFC0007FF0001FFF80003FF8001FFF00003FFC0 -01FFE00001FFE001FFC00001FFE001FFC00000FFF001FFC00000FFF001FFC000007FF801 -FFC000007FF801FFC000007FF801FFC000007FF801FFC000003FFC01FFC000003FFC01FF -C000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC0 -00003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000 -007FF801FFC000007FF801FFC000007FF801FFC000007FF001FFC00000FFF001FFC00000 -FFF001FFC00001FFE001FFE00001FFC001FFF00003FFC001FFF80007FF8001FFFC000FFF -0001FFFE001FFE0001FFDFC07FFC0001FFCFFFFFF00001FFC3FFFFC00001FFC0FFFF0000 -01FFC01FF0000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001 -FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF -C00000000001FFC00000000001FFC00000000001FFC000000000FFFFFF80000000FFFFFF -80000000FFFFFF80000000FFFFFF80000000FFFFFF8000000036407DAC3E>I<007F807F -00FFFF81FFE0FFFF83FFF0FFFF8FFFF8FFFF8F8FFCFFFF9F1FFE03FFBE1FFE01FFBC1FFE -01FFF81FFE01FFF81FFE01FFF01FFE01FFF00FFC01FFE007F801FFE001E001FFE0000001 -FFE0000001FFE0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FF -C0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0 -000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC000 -0001FFC0000001FFC0000001FFC00000FFFFFFE000FFFFFFE000FFFFFFE000FFFFFFE000 -FFFFFFE000272D7DAC2E>114 D<001FFC038000FFFF878003FFFFFF800FFFFFFF801FF0 -03FF803FC000FF803F80003F807F00001F807E00001F80FE00000F80FE00000F80FE0000 -0780FF00000780FF00000780FF80000780FFE0000000FFFE0000007FFFF000007FFFFF00 -003FFFFFC0003FFFFFF0001FFFFFFC000FFFFFFE0003FFFFFF0001FFFFFF80007FFFFF80 -000FFFFFC000003FFFC0000003FFE0000000FFE0F000003FE0F000003FE0F800001FE0F8 -00000FE0F800000FE0FC00000FE0FC00000FE0FE00000FC0FF00001FC0FF00001FC0FF80 -003F80FFE0007F00FFF803FE00FFFFFFFC00FCFFFFF800F03FFFE000E007FE0000232F7C -AD2C>I<0001E000000001E000000001E000000001E000000001E000000003E000000003 -E000000003E000000003E000000007E000000007E00000000FE00000000FE00000001FE0 -0000001FE00000003FE00000007FE0000000FFE0000003FFE000000FFFFFFF80FFFFFFFF -80FFFFFFFF80FFFFFFFF80FFFFFFFF8000FFE0000000FFE0000000FFE0000000FFE00000 -00FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000 -FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FF -E0000000FFE0000000FFE0000000FFE001E000FFE001E000FFE001E000FFE001E000FFE0 -01E000FFE001E000FFE001E000FFE001E000FFE001E000FFE003E000FFF003C0007FF003 -C0007FF007C0003FF80F80001FFC1F00000FFFFF000007FFFC000001FFF80000003FE000 -23407EBE2C>I<007FC00001FF00FFFFC003FFFF00FFFFC003FFFF00FFFFC003FFFF00FF -FFC003FFFF00FFFFC003FFFF0003FFC0000FFF0001FFC00007FF0001FFC00007FF0001FF -C00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC0 -0007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC000 -07FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007 -FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF -0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC0000FFF0001FFC0000FFF00 -01FFC0001FFF0001FFC0001FFF0001FFC0003FFF0000FFC0003FFF0000FFE0007FFF8000 -7FE001F7FFFE007FF807E7FFFE003FFFFFC7FFFE000FFFFF07FFFE0003FFFE07FFFE0000 -7FF007FC00372E7CAC3E>IIII E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fe ectt1440 14.4 24 -/Fe 24 122 df<000001FF00078000000FFFE007C000007FFFF80FC00000FFFFFE0FC000 -03FFFFFF1FC00007FFFFFF9FC0000FFFFFFFDFC0001FFF80FFFFC0003FFC001FFFC0007F -F0000FFFC000FFE00007FFC000FFC00003FFC001FF000001FFC003FE000000FFC003FE00 -0000FFC007FC0000007FC007F80000007FC00FF00000003FC00FF00000003FC01FE00000 -003FC01FE00000003FC01FC00000001FC03FC00000001FC03F800000001FC03F80000000 -1FC07F800000000F807F0000000000007F0000000000007F0000000000007F0000000000 -00FF000000000000FE000000000000FE000000000000FE000000000000FE000000000000 -FE000000000000FE000000000000FE000000000000FE000000000000FE000000000000FE -000000000000FE000000000000FE000000000000FE000000000000FF0000000000007F00 -00000000007F0000000000007F0000000000007F0000000000007F8000000000003F8000 -00000F803F800000001FC03FC00000001FC01FC00000001FC01FE00000001FC01FE00000 -001FC00FF00000003FC00FF00000003F8007F80000003F8007FC0000003F8003FE000000 -7F8003FE000000FF0001FF000000FF0000FFC00001FE0000FFE00003FC00007FF00007FC -00003FFC001FF800001FFF80FFF000000FFFFFFFE0000007FFFFFFC0000003FFFFFF8000 -0000FFFFFE000000007FFFFC000000000FFFE00000000001FF000000324B7BC93D>67 -D<7FFFF0003FFFF8FFFFF8007FFFFCFFFFF8007FFFFCFFFFF8007FFFFCFFFFF8007FFFFC -FFFFF8007FFFFC7FFFF0003FFFF801FC000000FE0001FC000000FE0001FC000000FE0001 -FC000000FE0001FC000000FE0001FC000000FE0001FC000000FE0001FC000000FE0001FC -000000FE0001FC000000FE0001FC000000FE0001FC000000FE0001FC000000FE0001FC00 -0000FE0001FC000000FE0001FC000000FE0001FC000000FE0001FC000000FE0001FC0000 -00FE0001FC000000FE0001FC000000FE0001FC000000FE0001FC000000FE0001FC000000 -FE0001FC000000FE0001FFFFFFFFFE0001FFFFFFFFFE0001FFFFFFFFFE0001FFFFFFFFFE -0001FFFFFFFFFE0001FFFFFFFFFE0001FFFFFFFFFE0001FC000000FE0001FC000000FE00 -01FC000000FE0001FC000000FE0001FC000000FE0001FC000000FE0001FC000000FE0001 -FC000000FE0001FC000000FE0001FC000000FE0001FC000000FE0001FC000000FE0001FC -000000FE0001FC000000FE0001FC000000FE0001FC000000FE0001FC000000FE0001FC00 -0000FE0001FC000000FE0001FC000000FE0001FC000000FE0001FC000000FE0001FC0000 -00FE0001FC000000FE0001FC000000FE0001FC000000FE0001FC000000FE007FFFF0003F -FFF8FFFFF8007FFFFCFFFFF8007FFFFCFFFFF8007FFFFCFFFFF8007FFFFCFFFFF8007FFF -FC7FFFF0003FFFF836497DC83D>72 D<3FFFFFFFFFFC7FFFFFFFFFFEFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFE3FFFFFFFFFFC30087A7C3D>95 -D<000FFFC000000000FFFFF800000003FFFFFE00000007FFFFFF8000000FFFFFFFC00000 -0FFFFFFFE000001FFFFFFFF000001FF800FFF800001FF0001FFC00001FF00007FC00001F -F00003FE00000FE00001FE000007C00000FF0000000000007F0000000000007F80000000 -00003F8000000000003F8000000000003F8000000000003F8000000000003F8000000000 -003F80000000007FFF800000001FFFFF80000001FFFFFF8000000FFFFFFF8000003FFFFF -FF800000FFFFFFFF800003FFFFFC3F800007FFFC003F80000FFFC0003F80001FFE00003F -80003FF000003F80003FE000003F80007F8000003F80007F0000003F8000FF0000003F80 -00FE0000003F8000FE0000003F8000FE0000003F8000FE0000003F8000FE0000003F8000 -FF0000007F80007F0000007F80007F800000FF80007FC00003FF80003FF0000FFFE0003F -FE00FFFFFFF01FFFFFFFFFFFF80FFFFFFFFFFFF807FFFFFFCFFFF803FFFFFF07FFF801FF -FFFC03FFF8007FFFE0007FF0000FFE00000000353679B43D>97 D<00000FFFC0000000FF -FFFC000003FFFFFF000007FFFFFF80001FFFFFFFC0003FFFFFFFC0007FFFFFFFE000FFF8 -007FE001FFC0003FE003FF00003FE007FE00003FE007FC00001FC00FF800000F801FF000 -0000001FE0000000003FC0000000003FC0000000003F80000000007F80000000007F0000 -0000007F00000000007F0000000000FF0000000000FE0000000000FE0000000000FE0000 -000000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE0000 -000000FF00000000007F00000000007F00000000007F80000000007F80000000003FC000 -0000003FE0000001F01FE0000003F81FF0000003F80FF8000007F80FFC000007F007FF00 -000FF003FF80001FE003FFF0007FE001FFFE01FFC000FFFFFFFF80003FFFFFFF00001FFF -FFFE00000FFFFFFC000003FFFFF0000000FFFFC00000001FFC00002D3677B43D>99 -D<0000000FFFC0000000001FFFE0000000001FFFE0000000001FFFE0000000001FFFE000 -0000001FFFE0000000000FFFE000000000000FE000000000000FE000000000000FE00000 -0000000FE000000000000FE000000000000FE000000000000FE000000000000FE0000000 -00000FE000000000000FE000000000000FE000000000000FE000000000000FE000000000 -000FE00000007FC00FE0000003FFF80FE000000FFFFE0FE000001FFFFF8FE000007FFFFF -CFE00000FFFFFFEFE00001FFFFFFFFE00003FFF01FFFE00003FF8007FFE00007FE0001FF -E0000FFC0000FFE0000FF800007FE0001FF000007FE0001FE000003FE0003FC000001FE0 -003FC000001FE0003F8000000FE0007F8000000FE0007F0000000FE0007F0000000FE000 -FF0000000FE000FF0000000FE000FE0000000FE000FE0000000FE000FE0000000FE000FE -0000000FE000FE0000000FE000FE0000000FE000FE0000000FE000FE0000000FE000FE00 -00000FE000FF0000000FE000FF0000000FE0007F0000000FE0007F0000001FE0007F8000 -001FE0007F8000001FE0003FC000003FE0003FC000003FE0001FE000007FE0001FF00000 -FFE0000FF00001FFE0000FF80001FFE00007FE0007FFE00007FF000FFFE00003FFE07FFF -FFE001FFFFFFEFFFF000FFFFFFCFFFF0007FFFFF8FFFF0003FFFFF0FFFF0000FFFFC0FFF -F00003FFF007FFE00000FF80000000344A7BC83D>I<00001FF800000000FFFF80000003 -FFFFE000000FFFFFF800001FFFFFFC00003FFFFFFE00007FFFFFFF0000FFF80FFF8001FF -C001FFC003FF00007FE007FC00001FE00FF800000FF00FF000000FF01FE0000007F81FE0 -000003F83FC0000003F83F80000003FC3F80000001FC7F80000001FC7F00000001FC7F00 -000001FEFF00000000FEFE00000000FEFFFFFFFFFFFEFFFFFFFFFFFEFFFFFFFFFFFEFFFF -FFFFFFFEFFFFFFFFFFFEFFFFFFFFFFFEFFFFFFFFFFFCFE0000000000FF00000000007F00 -000000007F00000000007F00000000007F80000000003F80000000003FC0000000001FE0 -0000007C1FE0000000FE0FF0000000FE0FF8000000FE07FC000001FE03FF000003FC03FF -800007FC01FFF0001FF800FFFE00FFF0007FFFFFFFE0003FFFFFFFC0000FFFFFFF800007 -FFFFFF000001FFFFFC0000007FFFE000000007FF00002F3679B43D>I<00001FF0003FE0 -0000FFFE01FFF80003FFFF87FFFC0007FFFFDFFFFE000FFFFFFFFFFE001FFFFFFFFFFE00 -3FFFFFFFFFFE007FF01FFFE0FC00FFC007FE007800FF0001FE000001FE0000FF000001FE -0000FF000003FC00007F800003F800003F800007F800003FC00007F800003FC00007F000 -001FC00007F000001FC00007F000001FC00007F000001FC00007F000001FC00007F00000 -1FC00007F800003FC00007F800003FC00003F800003F800003FC00007F800001FE0000FF -000001FE0000FF000000FF0001FE000000FFC007FE0000007FF01FFC000000FFFFFFF800 -0001FFFFFFF0000001FFFFFFE0000001FFFFFFC0000003FBFFFF80000003F0FFFE000000 -03F01FF000000003F0000000000003F0000000000003F0000000000003F8000000000001 -F8000000000001FC000000000000FE400000000000FFFFFFF80000007FFFFFFF800000FF -FFFFFFF00001FFFFFFFFFC0003FFFFFFFFFF0007FFFFFFFFFF800FFC00000FFFC01FF000 -0000FFE03FC00000001FE03F800000000FF07F0000000007F07F0000000003F87E000000 -0001F8FE0000000001FCFC0000000001FCFC0000000000FCFC0000000000FCFC00000000 -00FCFC0000000000FCFC0000000000FCFE0000000001FC7E0000000001F87F0000000003 -F87F8000000007F83FC00000000FF01FF00000003FE01FFC000000FFE00FFF800007FFC0 -07FFF8007FFF8003FFFFFFFFFF0000FFFFFFFFFC00007FFFFFFFF800001FFFFFFFE00000 -07FFFFFF80000000FFFFFC000000000FFFC0000037517DB33D>103 -D<7FFE0000000000FFFF0000000000FFFF0000000000FFFF0000000000FFFF0000000000 -FFFF00000000007FFF0000000000007F0000000000007F0000000000007F000000000000 -7F0000000000007F0000000000007F0000000000007F0000000000007F0000000000007F -0000000000007F0000000000007F0000000000007F0000000000007F0000000000007F00 -00000000007F003FE00000007F01FFFC0000007F07FFFE0000007F1FFFFF8000007F3FFF -FF8000007F7FFFFFC000007FFFFFFFE000007FFFC07FE000007FFE001FF000007FFC000F -F000007FF80007F000007FF00007F800007FE00007F800007FC00003F800007FC00003F8 -00007F800003F800007F800003F800007F800003F800007F000003F800007F000003F800 -007F000003F800007F000003F800007F000003F800007F000003F800007F000003F80000 -7F000003F800007F000003F800007F000003F800007F000003F800007F000003F800007F -000003F800007F000003F800007F000003F800007F000003F800007F000003F800007F00 -0003F800007F000003F800007F000003F800007F000003F800007F000003F800007F0000 -03F800007F000003F800007F000003F800007F000003F800007F000003F8007FFFFF01FF -FFF8FFFFFF83FFFFFCFFFFFF87FFFFFCFFFFFF87FFFFFCFFFFFF87FFFFFCFFFFFF83FFFF -FC7FFFFF01FFFFF836497DC83D>I<00003C00000000007E0000000000FF0000000001FF -8000000001FF8000000001FF8000000001FF8000000000FF00000000007E00000000003C -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000001FFFFF0000003FFFFF8000007FFFFF8000007FFFFF8000007FFFFF -8000003FFFFF8000001FFFFF80000000003F80000000003F80000000003F80000000003F -80000000003F80000000003F80000000003F80000000003F80000000003F80000000003F -80000000003F80000000003F80000000003F80000000003F80000000003F80000000003F -80000000003F80000000003F80000000003F80000000003F80000000003F80000000003F -80000000003F80000000003F80000000003F80000000003F80000000003F80000000003F -80000000003F80000000003F80000000003F80000000003F80000000003F80000000003F -80000000003F80000000003F80000000003F8000003FFFFFFFFE007FFFFFFFFF00FFFFFF -FFFF80FFFFFFFFFF80FFFFFFFFFF807FFFFFFFFF003FFFFFFFFE00294A76C93D>I<3FFE -00000000007FFF0000000000FFFF0000000000FFFF0000000000FFFF00000000007FFF00 -000000003FFF0000000000003F0000000000003F0000000000003F0000000000003F0000 -000000003F0000000000003F0000000000003F0000000000003F0000000000003F000000 -0000003F0000000000003F0000000000003F0000000000003F0000000000003F00000000 -00003F0000000000003F0007FFFFE0003F000FFFFFF0003F001FFFFFF8003F001FFFFFF8 -003F001FFFFFF8003F000FFFFFF0003F0007FFFFE0003F00001FE000003F00003FC00000 -3F00007F8000003F0000FF0000003F0001FE0000003F0003FC0000003F0007F80000003F -000FF00000003F001FE00000003F003FC00000003F007F800000003F00FF000000003F01 -FE000000003F03FC000000003F0FFC000000003F1FFE000000003F3FFF000000003F7FFF -000000003FFFBF800000003FFE1FC00000003FFC1FE00000003FF80FE00000003FF007F0 -0000003FE003F80000003FC003FC0000003F8001FC0000003F0000FE0000003F0000FF00 -00003F00007F0000003F00003F8000003F00001FC000003F00001FE000003F00000FE000 -003F000007F000003F000003F800003F000003FC00003F000001FC003FFFFF001FFFF87F -FFFF803FFFFCFFFFFFC07FFFFEFFFFFFC07FFFFEFFFFFFC07FFFFE7FFFFF803FFFFC3FFF -FF001FFFF837497DC83D>107 D<3FFFFF8000007FFFFFC00000FFFFFFC00000FFFFFFC0 -0000FFFFFFC000007FFFFFC000003FFFFFC0000000001FC0000000001FC0000000001FC0 -000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0 -000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0 -000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0 -000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0 -000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0 -000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0 -000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0 -000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0 -000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0 -000000001FC0000000001FC000003FFFFFFFFFE07FFFFFFFFFF0FFFFFFFFFFF8FFFFFFFF -FFF8FFFFFFFFFFF87FFFFFFFFFF03FFFFFFFFFE02D4978C83D>I<00001FC000FE00007F -E0FFF007FF8000FFF1FFF80FFFC000FFF7FFFC3FFFE000FFFFFFFC7FFFE000FFFFFFFEFF -FFF000FFFFFFFEFFFFF0007FFFE0FFFF07F80003FF807FFC03F80003FF003FF801F80003 -FE003FF001FC0003FC003FE001FC0003FC001FE000FC0003FC001FE000FC0003F8001FC0 -00FC0003F8001FC000FC0003F8001FC000FC0003F0001F8000FC0003F0001F8000FC0003 -F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F0001F80 -00FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003 -F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F0001F80 -00FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003 -F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F0001F80 -00FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC007FFF81FFFC0FFFE0FF -FFC3FFFE1FFFF0FFFFC7FFFE3FFFF0FFFFC7FFFE3FFFF0FFFFC7FFFE3FFFF0FFFFC3FFFE -1FFFF07FFF81FFFC0FFFE03C3480B33D>I<0000003FE000007FFE01FFFC0000FFFF07FF -FE0000FFFF1FFFFF8000FFFF3FFFFF8000FFFF7FFFFFC000FFFFFFFFFFE0007FFFFFC07F -E000007FFE001FF000007FFC000FF000007FF80007F000007FF00007F800007FE00007F8 -00007FC00003F800007FC00003F800007F800003F800007F800003F800007F800003F800 -007F000003F800007F000003F800007F000003F800007F000003F800007F000003F80000 -7F000003F800007F000003F800007F000003F800007F000003F800007F000003F800007F -000003F800007F000003F800007F000003F800007F000003F800007F000003F800007F00 -0003F800007F000003F800007F000003F800007F000003F800007F000003F800007F0000 -03F800007F000003F800007F000003F800007F000003F800007F000003F800007F000003 -F800007F000003F8007FFFFF01FFFFF8FFFFFF83FFFFFCFFFFFF87FFFFFCFFFFFF87FFFF -FCFFFFFF87FFFFFCFFFFFF83FFFFFC7FFFFF01FFFFF836347DB33D>I<00001FE0000000 -00FFFC00000007FFFF8000000FFFFFC000003FFFFFF000007FFFFFF80000FFFFFFFC0001 -FFE01FFE0003FF8007FF0003FE0001FF0007FC0000FF800FF800007FC00FF000003FC01F -E000001FE01FC000000FE03FC000000FF03F80000007F03F80000007F07F00000003F87F -00000003F87F00000003F87F00000003F8FE00000001FCFE00000001FCFE00000001FCFE -00000001FCFE00000001FCFE00000001FCFE00000001FCFE00000001FCFE00000001FCFE -00000001FCFF00000003FC7F00000003F87F00000003F87F80000007F87F80000007F83F -80000007F03FC000000FF03FE000001FF01FE000001FE01FF000003FE00FF800007FC007 -FC0000FF8007FE0001FF8003FF8007FF0001FFF03FFE0000FFFFFFFC00007FFFFFF80000 -3FFFFFF000000FFFFFC0000007FFFF80000001FFFE000000001FE000002E3679B43D>I< -0000001FF000007FFE00FFFC0000FFFF03FFFF0000FFFF0FFFFFC000FFFF3FFFFFE000FF -FF7FFFFFF000FFFFFFFFFFF8007FFFFFC07FFC00007FFF000FFE00007FFC0007FE00007F -F80001FF00007FF00000FF00007FE00000FF80007FC000007F80007F8000003FC0007F80 -00003FC0007F8000001FE0007F0000001FE0007F0000000FE0007F0000000FE0007F0000 -000FF0007F0000000FF0007F00000007F0007F00000007F0007F00000007F0007F000000 -07F0007F00000007F0007F00000007F0007F00000007F0007F00000007F0007F00000007 -F0007F0000000FF0007F0000000FF0007F0000000FE0007F8000000FE0007F8000001FE0 -007F8000001FC0007FC000003FC0007FC000003FC0007FE000007F80007FE00000FF8000 -7FF00001FF00007FF80003FF00007FFC0007FE00007FFE001FFC00007FFFC0FFF800007F -FFFFFFF800007F7FFFFFE000007F3FFFFFC000007F0FFFFF8000007F07FFFE0000007F01 -FFF80000007F003FE00000007F0000000000007F0000000000007F0000000000007F0000 -000000007F0000000000007F0000000000007F0000000000007F0000000000007F000000 -0000007F0000000000007F0000000000007F0000000000007F0000000000007F00000000 -00007F0000000000007F0000000000007F0000000000007F0000000000007F0000000000 -7FFFFF00000000FFFFFF80000000FFFFFF80000000FFFFFF80000000FFFFFF80000000FF -FFFF800000007FFFFF00000000344F7DB33D>I<00003FF000F8000001FFFE01FC000007 -FFFF81FC00000FFFFFC1FC00003FFFFFF1FC00007FFFFFF9FC0000FFFFFFFDFC0001FFF8 -0FFFFC0003FFC001FFFC0007FF0000FFFC0007FE00007FFC000FF800003FFC001FF00000 -1FFC001FE000000FFC003FE000000FFC003FC0000007FC003F80000007FC007F80000003 -FC007F80000003FC007F00000003FC007F00000001FC00FF00000001FC00FE00000001FC -00FE00000001FC00FE00000001FC00FE00000001FC00FE00000001FC00FE00000001FC00 -FE00000001FC00FE00000001FC00FE00000001FC00FF00000001FC00FF00000001FC007F -00000003FC007F00000003FC007F80000003FC003F80000007FC003FC0000007FC003FC0 -00000FFC001FE000001FFC001FF000001FFC000FF800003FFC000FFC00007FFC0007FE00 -01FFFC0003FF8003FFFC0001FFF01FFDFC0001FFFFFFF9FC0000FFFFFFF1FC00003FFFFF -E1FC00001FFFFFC1FC000007FFFF01FC000001FFFC01FC0000007FE001FC000000000001 -FC000000000001FC000000000001FC000000000001FC000000000001FC000000000001FC -000000000001FC000000000001FC000000000001FC000000000001FC000000000001FC00 -0000000001FC000000000001FC000000000001FC000000000001FC000000000001FC0000 -00000001FC000000000001FC000000000001FC0000000001FFFFFC00000003FFFFFE0000 -0007FFFFFF00000007FFFFFF00000007FFFFFF00000003FFFFFE00000001FFFFFC384F7B -B33D>I<000000001FF8007FFFE000FFFF00FFFFF007FFFF80FFFFF01FFFFFC0FFFFF03F -FFFFC0FFFFF07FFFFFE0FFFFF1FFFFFFE07FFFF3FFF03FE00007F7FF803FE00007F7FE00 -1FC00007FFF8000F800007FFF00000000007FFE00000000007FFC00000000007FF800000 -000007FF000000000007FE000000000007FE000000000007FC000000000007FC00000000 -0007F8000000000007F8000000000007F8000000000007F8000000000007F00000000000 -07F0000000000007F0000000000007F0000000000007F0000000000007F0000000000007 -F0000000000007F0000000000007F0000000000007F0000000000007F0000000000007F0 -000000000007F0000000000007F0000000000007F0000000000007F0000000000007F000 -0000000007F0000000000007F0000000000007F0000000000007F0000000007FFFFFFFE0 -0000FFFFFFFFF00000FFFFFFFFF80000FFFFFFFFF80000FFFFFFFFF80000FFFFFFFFF000 -007FFFFFFFE0000033347BB33D>I<0001FFF00F00001FFFFE0F8000FFFFFF9F8003FFFF -FFFF8007FFFFFFFF800FFFFFFFFF801FFFFFFFFF803FFF001FFF807FF00007FF807FC000 -01FF807F800000FF80FF0000007F80FE0000007F80FE0000003F80FE0000003F80FE0000 -003F80FF0000003F807F0000003F807F8000001F007FE0000000003FFC000000001FFFE0 -0000000FFFFF00000007FFFFFC000001FFFFFF8000007FFFFFE000000FFFFFF8000000FF -FFFE00000007FFFF000000001FFF8000000001FFC0000000007FE07C0000001FE0FE0000 -000FF0FE00000007F0FE00000007F8FF00000003F8FF00000003F8FF00000003F8FF8000 -0003F8FFC0000003F8FFC0000007F8FFE000000FF0FFF000000FF0FFF800003FF0FFFE00 -00FFE0FFFFC007FFC0FFFFFFFFFFC0FFFFFFFFFF80FCFFFFFFFF00FC3FFFFFFC00FC0FFF -FFF000F803FFFFC00078007FFC00002D3678B43D>I<0000780000000000FC0000000001 -FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001 -FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001 -FC0000003FFFFFFFFFF87FFFFFFFFFFCFFFFFFFFFFFCFFFFFFFFFFFCFFFFFFFFFFFCFFFF -FFFFFFFC7FFFFFFFFFF80001FC0000000001FC0000000001FC0000000001FC0000000001 -FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001 -FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001 -FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001 -FC0000000001FC0000000001FC00003E0001FC00007F0001FC00007F0001FC00007F0001 -FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FE0000FF0001 -FE0001FE0000FF0003FE0000FF8007FC00007FF01FFC00007FFFFFF800003FFFFFF00000 -3FFFFFE000001FFFFF80000007FFFF00000003FFFC000000007FC00030437DC13D>I<7F -FE0003FFF000FFFF0007FFF800FFFF0007FFF800FFFF0007FFF800FFFF0007FFF800FFFF -0007FFF8007FFF0003FFF800007F000003F800007F000003F800007F000003F800007F00 -0003F800007F000003F800007F000003F800007F000003F800007F000003F800007F0000 -03F800007F000003F800007F000003F800007F000003F800007F000003F800007F000003 -F800007F000003F800007F000003F800007F000003F800007F000003F800007F000003F8 -00007F000003F800007F000003F800007F000003F800007F000003F800007F000003F800 -007F000003F800007F000003F800007F000003F800007F000003F800007F000003F80000 -7F000003F800007F000007F800007F000007F800007F00000FF800007F00001FF800007F -80003FF800007F80007FF800003FC000FFF800003FF807FFFFF8001FFFFFFFFFFC001FFF -FFFFFFFC000FFFFFFBFFFC0007FFFFE3FFFC0003FFFFC3FFFC0000FFFF01FFF800003FF0 -00000036347DB23D>I<7FFFE0001FFFF8FFFFF0003FFFFCFFFFF8007FFFFCFFFFF8007F -FFFCFFFFF8007FFFFCFFFFF0003FFFFC7FFFE0001FFFF800FC000000FC0000FC000000FC -0000FE000001FC00007E000001F800007E000001F800007F000003F800003F000003F000 -003F000003F000003F800007F000001F800007E000001F800007E000001FC0000FE00000 -0FC0000FC000000FC0000FC000000FE0001FC0000007E0001F80000007E0001F80000007 -F0003F80000003F0003F00000003F0003F00000003F8007F00000001F8007E00000001F8 -007E00000001FC00FE00000000FC00FC00000000FC00FC00000000FE01FC000000007E01 -F8000000007E01F8000000007F03F8000000003F03F0000000003F03F0000000003F87F0 -000000001F87E0000000001F87E0000000001FCFE0000000000FCFC0000000000FCFC000 -0000000FFFC00000000007FF800000000007FF800000000007FF800000000003FF000000 -000003FF000000000000FC00000036347DB23D>I<3FFFF000FFFFE07FFFF801FFFFF07F -FFFC01FFFFF07FFFFC01FFFFF07FFFFC01FFFFF07FFFF801FFFFF03FFFF000FFFFE0003F -80000FE000001FC0001FC000000FE0003F8000000FF0007F80000007F0007F00000003F8 -00FE00000001FC01FC00000000FE01FC00000000FF03F8000000007F07F0000000003F8F -E0000000001FCFC0000000000FFFC0000000000FFF800000000007FF000000000003FE00 -0000000001FE000000000000FC000000000001FC000000000003FE000000000003FF0000 -00000007FF80000000000FDF80000000001F8FC0000000001F87E0000000003F07F00000 -00007E03F800000000FE01F800000001FC00FC00000001F800FE00000003F8007F000000 -07F0003F8000000FE0001F8000000FC0001FC000001FC0000FE000003F800007F000007F -000007F0007FFFF0003FFFF0FFFFF8007FFFF8FFFFF8007FFFFCFFFFF8007FFFFCFFFFF8 -007FFFFCFFFFF8007FFFF87FFFF0003FFFF036337DB23D>120 D<7FFFF0003FFFF8FFFF -F8007FFFFCFFFFF8007FFFFCFFFFF8007FFFFCFFFFF8007FFFFCFFFFF8007FFFFC7FFFF0 -003FFFF800FC000000FC0000FE000000FC00007E000001FC00007F000001F800003F0000 -01F800003F000003F800003F800003F000001F800003F000001FC00007F000001FC00007 -E000000FC00007E000000FE0000FE0000007E0000FC0000007E0000FC0000007F0001FC0 -000003F0001F80000003F8001F80000001F8003F80000001F8003F00000001FC003F0000 -0000FC007E00000000FE007E000000007E007E000000007E00FC000000007F00FC000000 -003F00FC000000003F01F8000000001F81F8000000001F81F8000000001F83F000000000 -0FC3F0000000000FC3F00000000007C7E00000000007E7E00000000007E7E00000000003 -E7C00000000003F7C00000000003FFC00000000001FF800000000001FF800000000000FF -800000000000FF000000000000FF0000000000007F0000000000007E0000000000007E00 -0000000000FE000000000000FC000000000001FC000000000001F8000000000001F80000 -00000003F8000000000003F0000000000003F0000000000007F0000000000007E0000000 -000007E000000000000FE00000000F800FC00000001FC01FC00000003FE01F800000003F -E03F800000003FE07F000000003FE0FF000000003FE3FE000000003FFFFC000000001FFF -FC000000001FFFF8000000000FFFF00000000007FFE00000000003FF800000000000FE00 -00000000364F7DB23D>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Ff ecti1095 10.95 31 -/Ff 31 122 df<01E003F807F80FF80FFC0FFC0FF80FF803D80018003800300030007000 -6000E000C001C00380030007000E001C0038007000E000C0000E1B7A881C>44 -D<7FFFFC7FFFFC7FFFFCFFFFFCFFFFFC1605799520>I<000000060000000E0000001E00 -00001E0000003C0000007C000000FC000001FC000007F800000FF800003FF80001FFF800 -0FF3F0001FC3F0000E07F0000007F0000007E0000007E000000FE000000FE000000FC000 -000FC000001FC000001FC000001F8000001F8000003F8000003F8000003F0000003F0000 -007F0000007F0000007E0000007E000000FE000000FE000000FC000000FC000001FC0000 -01FC000001F8000001F8000003F8000003F8000003F0000003F0000007F0000007F00000 -07E0000007E000000FE000000FE000000FC000000FC000001FC000001FC000001F800000 -7FC000FFFFFFE0FFFFFFE0FFFFFFC01F3D76BC2E>49 D<000000FE0000000003FFC00000 -000F01F00000003C00F800000078007C000000F0003E000001E0003F000003C0001F0000 -0380001F80000700001F80000F00001F80000E0C001F80001E0C001FC0001C0E001FC000 -3C06001FC0003806001FC0007806001FC0007006001FC000700E003FC000F00C003F8000 -E00C003F8000E01C003F8000E018007F8001E018007F0001C038007F0001C07000FE0001 -C06001FE0001C0E001FC0000E3C003F80000FF0007F000003C000FE0000000001FC00000 -00001F80000000007F0000000000FC0000000001F80000000003F0000000000FC0000000 -001F00000000007E0000000000F80000000003E00000000007C0000000001F0000000000 -3E00000000007C0000180000F000003C0001E00000380003C00000380003C00000780007 -80000078000F000000F0000E000000F0001E000001E0003FE00003E0003FFF0007C0007C -3FF01FC000780FFFFF80007003FFFF0000F001FFFE0000E0007FFC0000E0003FF80000E0 -0007C000002A3F79BC2E>I<0000000FE00000007FF8000001FFFE000007F01F00001F80 -0F00003F000700007E003F0000F8007F0001F0007F0003E0007F0007E0007F000FC0007E -001F800000003F000000003F000000007E00000000FE00000000FC00000001FC00000001 -F800000003F800000003F800000007F01FC00007F0FFF0000FE1E07C000FE7803E000FEE -001E001FFC001F001FD8000F801FF8000F801FF0000FC03FE0000FC03FE0000FC03FC000 -0FC03FC0000FE07F80000FE07F80000FE07F00000FE07F00001FC07F00001FC0FE00001F -C0FE00001FC0FE00003FC0FE00003F80FE00003F80FC00003F80FC00007F80FC00007F00 -FC00007F00FC0000FE00FC0000FE00FC0001FC00FC0001F8007C0003F8007C0003F0007C -0007E0003E000FC0003E001F80001F007E00000F81FC000007FFF8000003FFE00000007F -000000283F76BC2E>54 D<00000000FF8001C00000000FFFE001C00000003FFFF8038000 -0000FF807C0780000003FC001E0F8000000FF0000F1F8000003FC000079F0000007F0000 -03FF000000FE000001FF000001FC000001FF000003F8000000FE000007F0000000FE0000 -0FE0000000FE00001FC00000007E00003F800000007C00007F800000007C0000FF000000 -007C0000FE000000007C0001FE00000000780003FC00000000780003F800000000780007 -F800000000780007F80000000070000FF00000000070000FF00000000070001FE0000000 -0070001FE00000000000003FE00000000000003FC00000000000003FC00000000000007F -C00000000000007F800000000000007F800000000000007F80000000000000FF80000000 -000000FF00000000000000FF00000000000000FF00000000000000FF00000000000000FF -00000000000000FE00000000000000FE000000000F0000FE000000000F0000FE00000000 -0E0000FE000000000E0000FE000000001E0000FE000000001C0000FE000000003C0000FE -00000000380000FE000000007800007F000000007000007F00000000F000007F00000001 -E000003F00000001C000003F80000003C000001F800000078000001FC000000F0000000F -E000001E00000007E000003C00000007F00000F800000003FC0001E000000000FE0007C0 -000000007FC03F00000000001FFFFE000000000007FFF0000000000000FF80000000003A -4272BF41>67 D<0001FFFFFFFFFFF00001FFFFFFFFFFF00001FFFFFFFFFFF0000003FC00 -003FF0000003FC00000FF0000003F8000007F0000003F8000003F0000003F8000001E000 -0007F8000001E0000007F0000001E0000007F0000001E0000007F0000001E000000FF000 -0001E000000FE0000001E000000FE0000001C000000FE0000001C000001FE0000001C000 -001FC0000001C000001FC0007001C000001FC000F003C000003FC000E0038000003F8000 -E0000000003F8000E0000000003F8001E0000000007F8001C0000000007F0003C0000000 -007F0003C0000000007F0007C000000000FF001F8000000000FFFFFF8000000000FFFFFF -8000000000FFFFFF8000000001FE003F0000000001FC001F0000000001FC000F00000000 -01FC000F0000000003FC000E0000000003F8000E0000000003F8000E0000000003F8001E -0000000007F8001C0000000007F0001C0000000007F0001C0000000007F0000000000000 -0FF00000000000000FE00000000000000FE00000000000000FE00000000000001FE00000 -000000001FC00000000000001FC00000000000001FC00000000000003FC0000000000000 -3F800000000000003F800000000000007F800000000000007F800000000000007F000000 -00000000FF8000000000007FFFFF8000000000FFFFFF8000000000FFFFFF80000000003C -3E7BBD3B>70 D<0001FFFFFFFC00000001FFFFFFFF80000001FFFFFFFFF000000003FC00 -0FF800000003FC0001FE00000003F80000FF00000003F800007F00000003F800003F8000 -0007F800001FC0000007F000001FC0000007F000001FC0000007F000001FE000000FF000 -001FE000000FE000001FE000000FE000001FE000000FE000001FE000001FE000003FC000 -001FC000003FC000001FC000003FC000001FC000007F8000003FC000007F8000003F8000 -007F0000003F800000FE0000003F800001FC0000007F800001F80000007F000003F00000 -007F00000FE00000007F00001F80000000FF00007E00000000FE0007F800000000FFFFFF -E000000000FFFFFF8000000001FE000FE000000001FC0003F000000001FC0001F8000000 -01FC0000FC00000003FC0000FE00000003F800007E00000003F800007F00000003F80000 -7F00000007F800007F00000007F000007F00000007F000007F00000007F00000FF000000 -0FF00000FF0000000FE00000FF0000000FE00000FE0000000FE00001FE0000001FE00001 -FE0000001FC00001FE0000001FC00001FE0000001FC00001FE0000003FC00003FE004000 -3F800003FE00E0003F800003FC00E0007F800003FC01E0007F800003FC01C0007F000001 -FC03C000FF800001FC0380FFFFFF0001FC0780FFFFFF0000FE0F00FFFFFE00007E1E0000 -000000001FFC00000000000007F0003B407BBD42>82 D<00007E00000001FF80000007C1 -C380001F80EFC0003F00FFC0007E007FC000FC007F8001F8003F8003F0003F8003F0003F -8007E0003F000FE0003F000FC0003F001FC0007F001FC0007E003F80007E003F80007E00 -3F8000FE007F8000FC007F0000FC007F0000FC007F0001FC00FF0001F800FE0001F800FE -0001F800FE0003F800FE0003F038FC0003F038FC0003F038FC0007F038FC0007E078FC00 -0FE0707C000FE0707C001FE0F07E003FE0E03E007FE0E03E00F3E1E01F01E3E1C00F8781 -E38003FF00FF0000FC003E00252977A72E>97 D<001FC0000FFFC0000FFF80000FFF8000 -003F8000003F8000003F0000003F0000007F0000007F0000007E0000007E000000FE0000 -00FE000000FC000000FC000001FC000001FC000001F8000001F8000003F8000003F80000 -03F0000003F07C0007F1FF0007F787C007EE03E007FC01F00FF801F00FF001F80FF000F8 -0FE000F81FC000F81FC000FC1F8000FC1F8001FC3F8001FC3F8001FC3F0001FC3F0001FC -7F0003FC7F0003F87E0003F87E0003F87E0007F8FE0007F0FC0007F0FC0007F0FC000FE0 -FC000FE0FC000FE0F8001FC0F8001F80F8003F80F8003F00F8007E0078007E007C00FC00 -7C01F8003C03F0001E07E0000F0F800007FE000001F800001E4076BE29>I<00001FC000 -00FFF00003F07C000FC01E001F000E003E000F007C001F00FC007F01F8007F03F0007F07 -F0007E07E0007E0FE000381FC000001FC000003F8000003F8000003F8000007F8000007F -0000007F0000007F000000FF000000FE000000FE000000FE000000FE000000FE000000FC -000000FC000006FC00000E7E00001E7E00003C7E0000783E0000F03F0001E01F0007C00F -800F0007C07E0001FFF000007F8000202977A729>I<000000003F800000001FFF800000 -001FFF000000001FFF00000000007F00000000007F00000000007E00000000007E000000 -0000FE0000000000FE0000000000FC0000000000FC0000000001FC0000000001FC000000 -0001F80000000001F80000000003F80000000003F80000000003F00000000003F0000000 -0007F00000000007F00000000007E00000007E07E0000001FF8FE0000007C1CFE000001F -80EFC000003F00FFC000007E007FC00000FC007FC00001F8003F800003F0003F800003F0 -003F800007E0003F80000FE0003F00000FC0003F00001FC0007F00001FC0007F00003F80 -007E00003F80007E00003F8000FE00007F8000FE00007F0000FC00007F0000FC00007F00 -01FC0000FF0001FC0000FE0001F80000FE0001F80000FE0003F80000FE0003F83800FC00 -03F03800FC0003F03800FC0007F03800FC0007F07800FC000FE070007C000FE070007C00 -1FE0F0007E003FE0E0003E007FE0E0003E00F3E1E0001F01E3E1C0000F8781E3800003FF -00FF000000FC003E0000294077BE2E>I<00003F000001FFE00007C0F0001F0078007E00 -7800FC003C01F8003C03F0003C07F0003C0FE0007C0FC000781FC000783F8000F83F8001 -F07F8007E07F001FC07F01FF007FFFF800FFFF8000FE000000FE000000FE000000FE0000 -00FC000000FC000000FC000000FC000000FC000000FC000000FC00000CFC00001CFC0000 -3C7C0000787C0000F07E0001E03E0003C01F000F800F001E000780FC0003FFE00000FF00 -001E2976A729>I<000000007C0000000001FF0000000007C7800000000F83C00000001F -83C00000001F0FC00000003F1FC00000003F1FC00000007E1FC00000007E1F800000007E -0F000000007E0000000000FC0000000000FC0000000000FC0000000000FC0000000001FC -0000000001F80000000001F80000000001F80000000001F80000000003F80000000003F0 -0000000003F00000000003F000000003FFFFF8000003FFFFF8000003FFFFF800000007E0 -0000000007E00000000007E0000000000FE0000000000FC0000000000FC0000000000FC0 -000000000FC0000000000FC0000000001FC0000000001F80000000001F80000000001F80 -000000001F80000000003F80000000003F00000000003F00000000003F00000000003F00 -000000007F00000000007E00000000007E00000000007E00000000007E0000000000FE00 -00000000FC0000000000FC0000000000FC0000000000FC0000000001FC0000000001F800 -00000001F80000000001F80000000001F80000000003F00000000003F00000000003F000 -00000003F00000000007E00000000007E00000000007E00000000007E0000000000FC000 -0000000FC00000001C0FC00000007E0F80000000FE0F80000000FE1F00000000FE1F0000 -0000FC1E00000000F83C00000000F03C000000007878000000003FE0000000000F800000 -00002A5383BF1C>I<000003E00000001FF80000003E1E380000F80EFC0001F007FC0003 -E007FC0007E003FC000FC003F8001F8003F8003F8003F8003F0003F8007F0003F0007E00 -03F000FE0007F000FE0007F001FC0007E001FC0007E001FC000FE003FC000FE003F8000F -C003F8000FC003F8001FC007F8001FC007F0001F8007F0001F8007F0003F8007F0003F80 -07E0003F0007E0003F0007E0007F0007E0007F0003E000FE0003E001FE0003F001FE0001 -F003FE0001F007FC0000F80EFC00007C3DFC00001FF1FC000007C1F800000001F8000000 -03F800000003F800000003F000000003F000000007F000000007F000000007E00000000F -E0003C000FC0007E000FC000FE001F8000FE003F0000FE007E0000FC00FC0000F001F800 -007C03E000003FFF80000007FE000000263B7CA729>I<0001FC000000FFFC000000FFF8 -000000FFF800000003F800000003F800000003F000000003F000000007F000000007F000 -000007E000000007E00000000FE00000000FE00000000FC00000000FC00000001FC00000 -001FC00000001F800000001F800000003F800000003F800000003F000000003F03F80000 -7F0FFE00007F3E0F80007E780FC0007EE007C000FFC007E000FF8007E000FF0007E000FF -0007E001FE0007E001FC0007E001FC0007E001F80007E003F8000FE003F8000FC003F000 -0FC003F0000FC007F0001FC007F0001F8007E0001F8007E0001F800FE0003F800FE0003F -000FC0003F000FC0007F001FC0007E001FC000FE071F8000FC071F8000FC073F8001FC0F -3F8001F80E3F0001F80E3F0001F81E7F0001F01C7F0001F01C7E0001F0387E0001F038FE -0001F070FE0000F0E0FC00007FC03800001F0028407ABE2E>I<0000700001FC0001FC00 -01FC0001F80001F80000E000000000000000000000000000000000000000000000000000 -0000000000000000000000000000007C0001FF00038F800707800E07C01E07C01C07C03C -0FC0380FC0380FC0781FC0701F80701F80F03F80F03F00003F00007F00007E0000FE0000 -FC0000FC0001FC0001F80001F80003F80003F00003F03807F03807E0380FE0780FC0700F -C0700FC0F00F80E00F80E00F81C00F83C00F838007870003FE0000F800163D79BB1C>I< -0001FC000000FFFC000000FFF8000000FFF800000003F800000003F800000003F0000000 -03F000000007F000000007F000000007E000000007E00000000FE00000000FE00000000F -C00000000FC00000001FC00000001FC00000001F800000001F800000003F800000003F80 -0000003F000000003F0007C0007F001FF0007F007838007E00E078007E01C1FC00FE0381 -FC00FE0703F800FC0E03F800FC0C03F801FC1C00E001FC38000001F870000001F8E00000 -03F9C0000003FB80000003F700000003FE00000007FC00000007FFC0000007EFF0000007 -E1FC00000FE0FE00000FE07F00000FC03F00000FC01F80001FC01F80001FC01F80E01F80 -1F80E01F801F80E03F801F81E03F803F81C03F003F01C03F003F01C07F003F03C07F003F -03807E001F07807E001F0700FE001F0F00FE000F1E00FC0007FC00380001F00026407ABE -29>107 D<0007F003FFF003FFE003FFE0000FE0000FE0000FC0000FC0001FC0001FC000 -1F80001F80003F80003F80003F00003F00007F00007F00007E00007E0000FE0000FE0000 -FC0000FC0001FC0001FC0001F80001F80003F80003F80003F00003F00007F00007F00007 -E00007E0000FE0000FE0000FC0000FC0001FC0001FC0001F80001F80003F80003F80003F -00003F00007F00007F07007E07007E0700FE0F00FE0E00FC0E00FC0E00FC1E00FC1C00FC -1C007C38007C78003C70001FE000078000144079BE17>I<01F0003F80007F000007FC01 -FFE003FFC0000F3E07C1F80F83F0000E1F0F00FC1E01F8001E1F1C007C3800F8001C1F38 -007E7000FC003C1FF0007EE000FC00381FF0007FE000FC00381FE0007FC000FC00783FC0 -007F8000FC00703FC0007F8000FC00703F80007F0000FC00703F00007E0000FC00F03F00 -00FE0001FC00F07F0000FC0001F800007E0000FC0001F800007E0000FC0001F800007E00 -01FC0003F80000FE0001FC0003F00000FC0001F80003F00000FC0001F80003F00000FC00 -03F80007F00001FC0003F80007E00001F80003F00007E00001F80003F0000FE00001F800 -07F0000FC00003F80007F0001FC0E003F00007E0001F80E003F00007E0001F80E003F000 -0FE0003F81E007F0000FE0003F01C007E0000FC0003F01C007E0000FC0003F01C007E000 -1FC0003E03800FE0001FC0003E03800FC0001F80003E07000FC0001F80003E07000FC000 -3F80003E0E001FC0003F80001E1C001F80003F00000FF8000700000E000003E000432979 -A74A>I<01F0003F800007FC01FFE0000F3E07C1F8000E1F0F00FC001E1F1C007C001C1F -38007E003C1FF0007E00381FF0007E00381FE0007E00783FC0007E00703FC0007E00703F -80007E00703F00007E00F03F0000FE00F07F0000FC00007E0000FC00007E0000FC00007E -0001FC0000FE0001F80000FC0001F80000FC0001F80000FC0003F80001FC0003F00001F8 -0003F00001F80007F00001F80007E00003F8000FE07003F0000FC07003F0000FC07003F0 -001FC0F007F0001F80E007E0001F80E007E0001F81E007E0001F01C00FE0001F01C00FC0 -001F03800FC0001F03800FC0001F07001FC0000F0E001F800007FC0007000001F0002C29 -79A733>I<00001FC0000000FFF8000003F07C00000FC01F00001F801F00003F000F8000 -7E000FC000FC0007C001F80007E003F00007E007F00007E007E00007E00FE00007F01FC0 -0007F01FC00007F03F800007F03F800007F03F80000FE07F80000FE07F00000FE07F0000 -0FE07F00001FE0FF00001FC0FE00001FC0FE00001FC0FE00003F80FE00003F80FE00007F -00FE00007F00FC00007E007C0000FC007E0001FC007E0001F8007E0003F0003E0007E000 -1F000FC0001F001F80000F803E000007C0FC000001FFF00000003F800000242977A72E> -I<0003E001F800000FF807FE00001E7C1E0F80001C3E3C07C0003C3E7807C000383EE003 -E000783FE003E000703FC003F000703F8001F000F07F0001F000E07F0001F800E07E0001 -F800E07E0003F801E0FE0003F801E0FE0003F80000FC0003F80000FC0003F80001FC0007 -F80001FC0007F00001F80007F00001F80007F00003F8000FF00003F8000FE00003F0000F -E00003F0000FE00007F0001FC00007F0001FC00007E0001F800007E0003F80000FE0003F -00000FE0007F00000FE0007E00000FE000FC00001FE000FC00001FE001F800001FF003F0 -00001FF007E000003FB80F8000003F9C1F0000003F0FFC0000003F03E00000007F000000 -00007F00000000007E00000000007E0000000000FE0000000000FE0000000000FC000000 -0000FC0000000001FC0000000001FC0000000001F80000000001F80000000003F8000000 -0003F8000000007FFFE0000000FFFFE0000000FFFFE00000002D3A80A72E>I<00007C00 -C00001FF03C00007C387C0001F01CF80003E00EF80007C00FF8000FC007F8001F8007F00 -03F0007F0003F0007F0007E0007F000FE0007E000FC0007E001FC0007E001FC000FE003F -8000FC003F8000FC003F8000FC007F8001FC007F0001F8007F0001F8007F0001F800FF00 -03F800FE0003F000FE0003F000FE0003F000FE0007F000FC0007E000FC0007E000FC0007 -E000FC000FE000FC000FC0007C001FC0007C003FC0007C007FC0003E00FF80003E01FF80 -001F03DF80000F07BF800007FE3F000001F83F000000003F000000007F000000007E0000 -00007E000000007E00000000FE00000000FC00000000FC00000000FC00000001FC000000 -01F800000001F800000003F800000007F8000001FFFFE00001FFFFE00001FFFFE000223A -77A729>I<01F000FE0007FC03FF800F3E0F03E00E1F1C01E01E1F3807E01C1F7007F03C -1FF00FE0381FE00FE0381FC00FE0783FC00380703F800000703F800000703F000000F03F -000000F07F000000007E000000007E000000007E00000000FE00000000FC00000000FC00 -000000FC00000001FC00000001F800000001F800000001F800000003F800000003F00000 -0003F000000003F000000007F000000007E000000007E000000007E00000000FE0000000 -0FC00000000FC00000000FC00000001FC00000001F800000000700000000242979A726> -I<00007F800001FFE00007C0F8001E003C003C001C003C001E0078000E00F0003E00F000 -7E00F0007E01F0007C01F0007C01F0001001F8000001FC000001FF800001FFF80000FFFF -0000FFFF80007FFFC0001FFFE00007FFE000007FF000000FF0000003F0000003F0000001 -F03E0001F07E0000F07F0001F0FE0001E0FE0001E0FC0001E0F80003C0F0000780700007 -8078000F003C003C001F00F80007FFE00000FF00001F297AA725>I<0001C0000003F000 -0007F0000007F0000007E0000007E000000FE000000FE000000FC000000FC000001FC000 -001FC000001F8000001F8000003F8000003F8000003F0000003F00007FFFFF80FFFFFF80 -FFFFFF00007E000000FE000000FE000000FC000000FC000001FC000001FC000001F80000 -01F8000003F8000003F8000003F0000003F0000007F0000007F0000007E0000007E00000 -0FE000000FE000000FC000000FC000001FC000001FC01C001F801C001F801C003F803C00 -3F8038003F0078003F0070003F00F0003F00E0003F01C0001F03C0001F0780000F0F0000 -07FC000001F00000193A78B81E>I<007C0000000001FF00003800038F8000FC00070780 -00FC000E07C000FC001E07C001FC001C07C001FC003C0FC001F800380FC001F800380FC0 -03F800781FC003F800701F8003F000701F8003F000F03F8007F000F03F0007F000003F00 -07E000007F0007E000007E000FE000007E000FE00000FE000FC00000FC000FC00000FC00 -1FC00001FC001FC00001F8001F800001F8001F800001F8003F800003F8003F838003F000 -3F038003F0003F038003F0007F038003F0007F078003F0007E070003F0007E070003F000 -FE0F0003F000FE0E0001F001FE0E0001F803BE1C0000F8073E1C00007C1E1E3800003FF8 -0FF0000007E003E000292979A730>I<007C00038001FF0007E0038F800FE00707800FE0 -0E07C00FF01E07C00FF01C07C007F03C0FC007F0380FC003F0380FC003E0781FC001E070 -1F8001E0701F8001E0F03F8001E0F03F0001C0003F0001C0007F0001C0007E0003C0007E -00038000FE00038000FC00038000FC00078001FC00070001F800070001F800070001F800 -0E0003F8000E0003F0000E0003F0001C0003F0001C0003F000380003F000380003F00070 -0003F000700001F000E00001F001C00001F803C00000F8078000007E0F0000001FFC0000 -0007F00000242979A729>I<007C000000007001FF00007001FC038F8001F801FC070780 -01F801FC0E07C001F801FE1E07C003F801FE1C07C003F000FE3C0FC003F000FE380FC003 -F0007C380FC007F0007C781FC007E0003C701F8007E0003C701F8007E0003CF03F800FE0 -003CF03F000FC00038003F000FC00038007F000FC00038007E001FC00078007E001F8000 -7000FE001F80007000FC001F80007000FC003F8000F001FC003F0000E001F8003F0000E0 -01F8003F0000E001F8003F0001E003F8007F0001C003F0007E0001C003F0007E0003C003 -F0007E00038003F0007E00038003F0007E00070003F000FE00070003F000FE000E0001F0 -01FE001E0001F801FF001C0000F8039F00380000FC079F807000003E0F07C1E000001FFC -03FFC0000003F0007F0000372979A73C>I<007C00000001FF000038038F8000FC070780 -00FC0E07C000FC1E07C001FC1C07C001F83C0FC001F8380FC001F8380FC003F8781FC003 -F0701F8003F0701F8003F0F03F8007F0F03F0007E0003F0007E0007F0007E0007E000FE0 -007E000FC000FE000FC000FC000FC000FC001FC001FC001FC001F8001F8001F8001F8001 -F8003F8003F8003F0003F0003F0003F0003F0003F0007F0003F0007E0003F0007E0003F0 -007E0003F000FE0003F000FC0001F001FC0001F803FC0000F807FC00007C1FF800003FF9 -F8000007E1F800000003F800000003F000000003F000000007F000000007E0001F0007E0 -003F800FC0003F800FC0003F801F80007F001F00007E003E000038007E00003800FC0000 -3801F000001C03E000001E0FC0000007FF00000001F8000000263B79A72C>121 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fg ecrm1095 10.95 75 -/Fg 75 123 df<000003FF000FE000001FFFC07FF80000FE00F1F81C0001F8003BE07E00 -07E0007FC0FF000FC001FFC0FF001F8001FF80FF003F0001FF00FF007F0001FF00FF007E -0001FF007E00FE0000FE000000FC00007E000000FC00007E000000FC00007E000000FC00 -007E000000FC00007E000000FC00007E000000FC00007E000000FC00007E000000FC0000 -7E000000FC00007E000000FC00007E000000FC00007E000000FC00007E000000FC00007E -0000FFFFFFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF8000FC00007E000000FC00007E00 -0000FC00007E000000FC00007E000000FC00007E000000FC00007E000000FC00007E0000 -00FC00007E000000FC00007E000000FC00007E000000FC00007E000000FC00007E000000 -FC00007E000000FC00007E000000FC00007E000000FC00007E000000FC00007E000000FC -00007E000000FC00007E000000FC00007E000000FC00007E000000FC00007E000000FC00 -007E000000FC00007E000000FC00007E000000FC00007E000000FC00007E000000FC0000 -7E000000FC00007E000000FC00007E000000FC00007E000000FC00007E000001FE0000FF -00007FFFF83FFFFF007FFFF83FFFFF007FFFF83FFFFF0038407FBF35>27 -D<000003FE000000001FFFC0000000FE01E0000001F80078000007E0001C00000FC0007C -00001F8000FE00003F0001FE00007F0001FE00007E0001FE0000FE0001FE0000FC0000FC -0000FC0000780000FC0000000000FC0000000000FC0000000000FC0000000000FC000000 -0000FC0000000000FC0000000000FC0000000000FC0000000000FC0000000000FC000000 -0000FC00007E00FFFFFFFFFE00FFFFFFFFFE00FFFFFFFFFE0000FC0001FE0000FC0000FE -0000FC00007E0000FC00007E0000FC00007E0000FC00007E0000FC00007E0000FC00007E -0000FC00007E0000FC00007E0000FC00007E0000FC00007E0000FC00007E0000FC00007E -0000FC00007E0000FC00007E0000FC00007E0000FC00007E0000FC00007E0000FC00007E -0000FC00007E0000FC00007E0000FC00007E0000FC00007E0000FC00007E0000FC00007E -0000FC00007E0000FC00007E0000FC00007E0000FC00007E0000FC00007E0000FC00007E -0001FE0000FF007FFFF83FFFFC7FFFF83FFFFC7FFFF83FFFFC2E407FBF32>I<000003FF -000000001FFFEE000000FE00FE000001F800FE000007E001FE00000FC001FE00001F8001 -FE00003F0001FE00007F0001FE00007E0000FE0000FE00007E0000FC00007E0000FC0000 -7E0000FC00007E0000FC00007E0000FC00007E0000FC00007E0000FC00007E0000FC0000 -7E0000FC00007E0000FC00007E0000FC00007E0000FC00007E0000FC00007E0000FC0000 -7E00FFFFFFFFFE00FFFFFFFFFE00FFFFFFFFFE0000FC00007E0000FC00007E0000FC0000 -7E0000FC00007E0000FC00007E0000FC00007E0000FC00007E0000FC00007E0000FC0000 -7E0000FC00007E0000FC00007E0000FC00007E0000FC00007E0000FC00007E0000FC0000 -7E0000FC00007E0000FC00007E0000FC00007E0000FC00007E0000FC00007E0000FC0000 -7E0000FC00007E0000FC00007E0000FC00007E0000FC00007E0000FC00007E0000FC0000 -7E0000FC00007E0000FC00007E0000FC00007E0000FC00007E0000FC00007E0001FE0000 -FF007FFFF83FFFFC7FFFF83FFFFC7FFFF83FFFFC2E407FBF32>I<3E001F007F003F807F -003F80FF807FC07F003F807F003F807F003F807F003F807F003F807F003F807F003F807F -003F807F003F807E001F803E001F003E001F003E001F003E001F003E001F003E001F003E -001F003E001F003E001F001C000E001C000E001C000E001C000E001C000E001C000E001C -000E001C000E001C000E00180006001A2177BF2D>34 D<00000F800000000000003FE000 -0000000000F870000000000001E030000000000003E038000000000007C0180000000000 -07C01800000000000F801C00000000000F800C00000000000F800C00000000001F800C00 -000000001F000C00000000001F000C00000000001F800C00000000001F800C0000000000 -1F801C00000000001F801800000000001F803800000000001F803000000000001F807000 -000000001F80E000000000001F80C000000000000FC1C000000000000FC3800000000000 -0FC70000000000000FC60000000000000FEE00003FFFF80007FC00003FFFF80007F80000 -3FFFF80007F0000007FF800003F0000001FC000003F0000000F8000003F8000000F00000 -03F8000000E0000007FC000001C000000FFC0000018000001CFE00000380000038FE0000 -03000000707F000007000000E07F00000E000001C03F80000C000003803FC0001C000007 -801FC0001800000F000FE0003800001F000FF0007000001F0007F0006000003E0007F800 -E000007E0003FC00C000007E0001FC01C00000FE0001FE03800000FE0000FF07000000FE -00007F07000000FE00003F8E000000FE00003FDC000000FE00001FF8000030FF00000FF0 -000030FF000007F00000307F000003F80000707F800003FC0000603F800007FE0000E03F -C0000F7F0000C01FE0003C3F8001C00FF000F81FE0078007F807E007F81F0001FFFFC003 -FFFE00007FFE0000FFF800000FF000001FE0003D437CC046>38 D<1C007F00FF80FF80FF -C0FFC0FFC07FC01CC000C000C000C000C000C001C00180018003800300070006000E000C -001C003800700060000A1B78BE19>I<0000300000700000E00001C0000380000700000F -00001E00003C00003C0000780000F00000F00001E00001E00003C00003C00007C0000780 -000F80000F80000F00001F00001F00001E00003E00003E00003E00003C00007C00007C00 -007C00007C00007C00007C0000780000F80000F80000F80000F80000F80000F80000F800 -00F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800007800 -007C00007C00007C00007C00007C00007C00003C00003E00003E00003E00001E00001F00 -001F00000F00000F80000F800007800007C00003C00003C00001E00001E00000F00000F0 -00007800003C00003C00001E00000F000007000003800001C00000E0000070000030145A -77C323>II<0003C0000003 -C0000003E0000003C0000003C0000003C0000003C0000003C0000003C000F003C00FFC03 -C03FFE03C07FFF03C0FF3FC3C3FC0FE187F003F18FC000FDBF00003FFC00000FF0000003 -C000000FF000003FFC0000FDBF0003F18FC00FE187F03FC3C3FCFF03C0FFFE03C07FFC03 -C03FF003C00F0003C0000003C0000003C0000003C0000003C0000003C0000003E0000003 -C0000003C00020277AC32D>I<1C007F00FF80FF80FFC0FFC0FFC07FC01CC000C000C000 -C000C000C001C00180018003800300070006000E000C001C003800700060000A1B788819 ->44 DI<1C007F00FF80FF80FF80FF -80FF807F001C000909788819>I<00000000C000000000C000000001C000000001800000 -000180000000038000000003000000000700000000060000000006000000000E00000000 -0C000000000C000000001C00000000180000000018000000003800000000300000000030 -0000000070000000006000000000E000000000C000000000C000000001C0000000018000 -00000180000000038000000003000000000300000000070000000006000000000E000000 -000C000000000C000000001C000000001800000000180000000038000000003000000000 -3000000000700000000060000000006000000000E000000000C000000001C00000000180 -000000018000000003800000000300000000030000000007000000000600000000060000 -00000E000000000C000000000C000000001C000000001800000000380000000030000000 -003000000000700000000060000000006000000000E000000000C000000000C000000001 -C00000000180000000038000000003000000000300000000070000000006000000000600 -0000000E000000000C000000000C000000001C0000000018000000001800000000380000 -00003000000000700000000060000000006000000000E000000000C000000000C0000000 -00225B7BC32D>I<0003FC0000001FFF8000003E07C00000F801F00001F000F80003E000 -7C0003C0003C0007C0003E000F80001F000F80001F001F00000F801F00000F803F00000F -C03F00000FC03F00000FC03F00000FC07E000007E07E000007E07E000007E07E000007E0 -7E000007E0FE000007F0FE000007F0FE000007F0FE000007F0FE000007F0FE000007F0FE -000007F0FE000007F0FE000007F0FE000007F0FE000007F0FE000007F0FE000007F0FE00 -0007F0FE000007F0FE000007F0FE000007F0FE000007F0FE000007F0FE000007F0FE0000 -07F07E000007E07E000007E07E000007E07E000007E07F00000FE03F00000FC03F00000F -C03F00000FC03F00000FC01F00000F801F80001F800F80001F000F80001F0007C0003E00 -07C0003E0003E0007C0001F000F80000F801F000003E07C000001FFF80000003FC000024 -3F7CBC2D>I<0000C0000003C0000007C000001FC000007FC00007FFC000FFFFC000FF9F -C000F81FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001F -C000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001F -C000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001F -C000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001F -C000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001F -C000001FC000001FC000001FC000001FC000007FF000FFFFFFF8FFFFFFF8FFFFFFF81D3D -78BC2D>I<0007FC0000003FFF800000FFFFE00001F00FF800078003FC000F0001FE000E -0000FF001C00007F803800003FC03000003FC07000001FE06000001FE06000001FE0FE00 -000FF0FF00000FF0FF80000FF0FF80000FF0FF80000FF0FF80000FF0FF80000FF07F0000 -0FF01C00000FF00000000FE00000001FE00000001FE00000001FC00000003FC00000003F -800000007F800000007F00000000FE00000001FC00000001FC00000003F800000007F000 -00000FE00000000FC00000001F800000003E000000007C00000000F800000001F0000000 -03E000000003C000000007800000000F000030001E000030003C000030007800003000F0 -00006001E000006003C0000060078000006007000000E00FFFFFFFE01FFFFFFFE03FFFFF -FFE07FFFFFFFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC0243D7CBC2D>I<0007FC0000003F -FF800000FFFFE00001F807F80007C003FC000F0001FE000E0000FF001C00007F801F8000 -7F803FC0003FC03FE0003FC03FE0003FC03FE0003FC03FE0003FC03FE0003FC01FC0003F -C00700003FC00000003F800000007F800000007F800000007F00000000FF00000000FE00 -000001FC00000003F800000003F00000000FC00000003F0000001FFC0000001FFF800000 -000FE000000003F800000001FC00000000FE000000007F000000007F800000003FC00000 -003FC00000003FE00000003FE00000001FE00000001FF00000001FF00C00001FF03F0000 -1FF07F80001FF0FFC0001FF0FFC0001FF0FFC0001FF0FFC0001FF0FFC0003FE0FF80003F -E07F00003FC07000003FC07000007F803800007F801C0000FF000F0001FE0007C003FC00 -03F80FF00000FFFFE000003FFF80000007FC0000243F7CBC2D>I<0000000E000000000E -000000001E000000003E000000003E000000007E00000000FE00000000FE00000001FE00 -000003FE00000003FE00000006FE0000000EFE0000000CFE00000018FE00000038FE0000 -0030FE00000060FE000000E0FE000000C0FE00000180FE00000380FE00000300FE000006 -00FE00000E00FE00000C00FE00001800FE00003800FE00003000FE00006000FE0000E000 -FE0000C000FE00018000FE00038000FE00030000FE00060000FE000E0000FE000C0000FE -00180000FE00380000FE00300000FE00600000FE00E00000FE00FFFFFFFFFFFFFFFFFFFF -FFFFFFFFFF000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000 -0000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000001FF000001 -FFFFFF0001FFFFFF0001FFFFFF283E7EBD2D>I<060000030007C0000F0007F800FE0007 -FFFFFC0007FFFFFC0007FFFFF00007FFFFE00007FFFFC00007FFFF0000063FF800000600 -000000060000000006000000000600000000060000000006000000000600000000060000 -0000060000000006000000000600000000060000000006000000000601FE0000060FFF80 -00063E03E000067001F80006E000FC0007C0007E000780003F000700003F800600001F80 -0000001FC00000001FC00000001FE00000000FE00000000FE00000000FE00000000FF000 -00000FF00000000FF00000000FF03E00000FF07F00000FF0FF80000FF0FF80000FF0FF80 -000FF0FF80000FF0FF00000FE0FE00001FE0E000001FE06000001FC07000001FC0300000 -3F803800003F801C00007F001E0000FE000F0001FC0007C003F80003F00FE00000FFFFC0 -00003FFF00000007F80000243F7CBC2D>I<00001FE0000000FFF8000003FFFE00000FF0 -1F00001F800780003F000380007E000FC000FC001FC001F8003FC003F0003FC003F0003F -C007E0003FC00FE0001F800FC0000F001FC00000001FC00000001F800000003F80000000 -3F800000003F800000007F800000007F000000007F01FE00007F07FF8000FF0E03E000FF -1C01F000FF3800FC00FF70007E00FF60003E00FFE0003F00FFC0001F80FFC0001FC0FF80 -001FC0FF80001FE0FF80000FE0FF80000FE0FF00000FF0FF00000FF0FF00000FF0FF0000 -0FF0FF00000FF0FF00000FF07F00000FF07F00000FF07F00000FF07F00000FF07F00000F -F03F80000FF03F80000FE03F80000FE01F80000FE01F80001FC01FC0001FC00FC0001F80 -0FC0003F8007E0003F0003F0007E0001F800FC0000FC01F800007E07F000003FFFE00000 -0FFF80000003FC0000243F7CBC2D>I<300000000038000000003E000000003FFFFFFFFC -3FFFFFFFFC3FFFFFFFFC3FFFFFFFF87FFFFFFFF87FFFFFFFF07FFFFFFFE070000000E060 -000001C0600000038060000003006000000700C000000E00C000000C00C000001C00C000 -00380000000030000000007000000000E000000001C00000000180000000038000000007 -0000000007000000000E000000000E000000001C000000001C000000003C000000003800 -00000078000000007800000000F800000000F000000001F000000001F000000001F00000 -0003F000000003F000000003F000000007F000000007E000000007E000000007E0000000 -0FE00000000FE00000000FE00000000FE00000000FE00000001FE00000001FE00000001F -E00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE0 -0000000FC00000000780000026407BBD2D>I<0003FC0000001FFF8000007FFFE00000FC -03F80001E000FC0003C0003E000780001F000F00000F000E00000F801E000007801C0000 -07C03C000003C03C000003C03C000003C03E000003C03E000003C03F000003C03F000007 -C03F800007801FE0000F801FF0000F001FFC001E000FFE003C000FFF80780007FFC0F000 -03FFF1E00001FFFF800000FFFF0000003FFF0000001FFFC000000FFFE000001FFFF80000 -78FFFC0001F07FFE0003C01FFF0007800FFF800F0003FFC01F0001FFC01E00007FE03C00 -003FE07C00000FE078000007F078000003F0F8000003F0F0000001F0F0000001F0F00000 -00F0F0000000F0F0000000F0F0000000F0F8000000E078000001E078000001E07C000001 -C03E000003C01E000007801F00000F000FC0001E0007E0007C0001FC03F80000FFFFE000 -001FFF80000003FC0000243F7CBC2D>I<0003FC0000001FFF0000003FFFC00000FE07F0 -0001F801F80003F000FC0007E0007C000FE0007E001FC0003F001F80003F003F80001F80 -3F80001F807F80001F807F00001FC07F00001FC0FF00001FC0FF00000FE0FF00000FE0FF -00000FE0FF00000FE0FF00000FE0FF00000FF0FF00000FF0FF00000FF0FF00000FF0FF00 -000FF0FF00000FF07F00001FF07F00001FF07F80001FF03F80001FF03F80003FF01F8000 -3FF00FC0007FF007C0006FF007E000EFF003F001CFF000F8038FF0007C070FF0001FFE0F -E00007F80FE00000000FE00000001FE00000001FE00000001FC00000001FC00000001FC0 -0000003F800000003F800F00003F001F80007F003FC0007E003FC0007E003FC000FC003F -C001F8003F8001F8003F0003F0001C0007E0001E001FC0000FC07F000003FFFE000001FF -F80000003FC00000243F7CBC2D>I<1C007F00FF80FF80FF80FF80FF807F001C00000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -0000001C007F00FF80FF80FF80FF80FF807F001C00092778A619>I<1C007F00FF80FF80 -FF80FF80FF807F001C000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000001C007F00FF80FF80FFC0FFC0FFC07FC01CC000C0 -00C000C000C000C001C00180018003800300070006000E000C001C003800700060000A39 -78A619>I<003FF80000FFFF0003C01FC00F0007F01C0001F8380001FC700000FE600000 -FE7C00007FFE00007FFF00007FFF00007FFF00007FFF00007F7E00007F3C0000FF000000 -FE000000FE000001FC000003F8000007F000000FE000000F8000001F0000003E0000003C -00000078000000F8000000F0000000E0000001E0000001C0000001800000038000000380 -000003000000030000000300000003000000030000000300000003000000030000000300 -000003000000030000000000000000000000000000000000000000000000000000000000 -00000000000000000000070000001FC000003FE000003FE000003FE000003FE000003FE0 -00001FC0000007000020407BBF2B>63 D<00000007000000000000000700000000000000 -07000000000000000F800000000000000F800000000000001FC00000000000001FC00000 -000000001FC00000000000003FE00000000000003FE00000000000003FE0000000000000 -7FF00000000000006FF00000000000006FF0000000000000CFF8000000000000C7F80000 -00000000C7F800000000000187FC00000000000183FC00000000000183FC000000000003 -01FE00000000000301FE00000000000301FE00000000000600FF00000000000600FF0000 -0000000E00FF80000000000C007F80000000000C007F80000000001C007FC00000000018 -003FC00000000018003FC00000000030003FE00000000030001FE00000000030001FE000 -00000060001FF00000000060000FF00000000060000FF000000000C00007F800000000C0 -0007F800000000C00007F800000001800003FC00000001FFFFFFFC00000003FFFFFFFE00 -000003FFFFFFFE00000003000001FE00000007000001FF00000006000000FF0000000600 -0000FF0000000C000000FF8000000C0000007F8000000C0000007F800000180000007FC0 -0000180000003FC00000180000003FC00000300000001FE00000300000001FE000007000 -00001FE00000700000000FF00000F00000000FF00001F00000000FF80003F80000000FF8 -000FFE0000003FFE00FFFFC00007FFFFF8FFFFC00007FFFFF8FFFFC00007FFFFF83D417D -C044>65 DI<0000003FF0000C000003FFFE001C00001FFFFF801C00 -007FE00FC03C0000FF0001F07C0003FC0000787C0007F000003CFC001FE000000FFC003F -C0000007FC007F80000003FC00FF00000003FC01FE00000001FC01FC00000000FC03FC00 -000000FC07F8000000007C07F8000000007C0FF0000000003C0FF0000000003C1FE00000 -00001C1FE0000000001C3FE0000000001C3FC0000000001C3FC0000000000C7FC0000000 -000C7FC0000000000C7FC0000000000C7F800000000000FF800000000000FF8000000000 -00FF800000000000FF800000000000FF800000000000FF800000000000FF800000000000 -FF800000000000FF800000000000FF800000000000FF800000000000FF8000000000007F -8000000000007FC000000000007FC0000000000C7FC0000000000C3FC0000000000C3FC0 -000000000C3FE0000000000C1FE0000000001C1FE000000000180FF000000000180FF000 -0000001807F8000000003807F8000000003003FC000000007001FC000000006001FE0000 -0000E000FF00000001C0007F8000000380003FC000000780001FE000000F000007F00000 -1E000003FC00003C000000FF0000F00000007FE007E00000001FFFFF8000000003FFFE00 -000000003FF0000036427BBF41>IIII<0000003F -F0000C00000003FFFE001C0000001FFFFF801C0000007FE00FC03C000000FF0001F07C00 -0003FC0000787C000007F000003CFC00001FE000000FFC00003FC0000007FC00007F8000 -0003FC0000FF00000003FC0001FE00000001FC0001FC00000000FC0003FC00000000FC00 -07F8000000007C0007F8000000007C000FF0000000003C000FF0000000003C001FE00000 -00001C001FE0000000001C003FE0000000001C003FC0000000001C003FC0000000000C00 -7FC0000000000C007FC0000000000C007FC0000000000C007F80000000000000FF800000 -00000000FF80000000000000FF80000000000000FF80000000000000FF80000000000000 -FF80000000000000FF80000000000000FF80000000000000FF80000000000000FF800000 -00000000FF80000000000000FF8000001FFFFFF07F8000001FFFFFF07FC000001FFFFFF0 -7FC00000000FFE007FC000000003FC003FC000000003FC003FC000000003FC003FE00000 -0003FC001FE000000003FC001FE000000003FC000FF000000003FC000FF000000003FC00 -07F800000003FC0007F800000003FC0003FC00000003FC0001FE00000003FC0001FE0000 -0003FC0000FF00000003FC00007F80000007FC00003FC0000007FC00001FE000000FFC00 -0007F800001CFC000003FC0000387C000000FF0000F03C0000007FF007E01C0000001FFF -FF800C00000003FFFE0000000000003FF00000003C427BBF47>III76 D78 D<000000FFE0000000000007FFFC00000000003FC07F8000 -000000FE000FE000000001F80003F000000007E00000FC0000000FC000007E0000001F80 -00003F0000003F0000001F8000007E0000000FC00000FE0000000FE00001FC00000007F0 -0003F800000003F80003F800000003F80007F000000001FC0007F000000001FC000FE000 -000000FE001FE000000000FF001FE000000000FF001FC0000000007F003FC0000000007F -803FC0000000007F803FC0000000007F807FC0000000007FC07F80000000003FC07F8000 -0000003FC07F80000000003FC0FF80000000003FE0FF80000000003FE0FF80000000003F -E0FF80000000003FE0FF80000000003FE0FF80000000003FE0FF80000000003FE0FF8000 -0000003FE0FF80000000003FE0FF80000000003FE0FF80000000003FE0FF80000000003F -E07F80000000003FC07FC0000000007FC07FC0000000007FC07FC0000000007FC07FC000 -0000007FC03FC0000000007F803FE000000000FF801FE000000000FF001FE000000000FF -001FE000000000FF000FF000000001FE000FF000000001FE0007F800000003FC0003F800 -000003F80003FC00000007F80001FC00000007F00000FE0000000FE000007F0000001FC0 -00003F8000003F8000001F8000003F0000000FE00000FE00000007F00001FC00000001F8 -0003F000000000FE000FE0000000003FC07F800000000007FFFC000000000000FFE00000 -003B427BBF46>II82 -D<0007FC0018003FFF803800FFFFE03801FC03F87803F0007C7807C0001EF80F80000FF8 -1F000007F83F000003F83E000001F87E000000F87E000000F87C00000078FC00000078FC -00000078FC00000038FC00000038FC00000038FE00000018FE00000018FF00000018FF00 -0000187F800000007FC00000007FE00000003FF80000003FFF0000001FFFF000000FFFFF -00000FFFFFF00007FFFFFC0001FFFFFE0000FFFFFF80003FFFFFC00007FFFFE000007FFF -E0000007FFF00000007FF80000001FF80000000FFC00000007FC00000003FC00000001FE -00000001FEC0000000FEC0000000FEC0000000FEC00000007EC00000007EE00000007EE0 -0000007EE00000007EE00000007CF00000007CF0000000FCF8000000F8FC000001F8FE00 -0001F0FF000003F0FF800007E0FBE0000FC0F1F8001F80F07F007F00E01FFFFC00E007FF -F000C0007FC00027427BBF32>I<3FFFFFFFFFFFFF003FFFFFFFFFFFFF003FFFFFFFFFFF -FF003FE000FFC001FF003F00007F80003F007E00007F80001F807C00007F80000F807800 -007F800007807000007F800003807000007F800003807000007F800003806000007F8000 -01806000007F800001806000007F800001806000007F800001806000007F80000180C000 -007F800000C0C000007F800000C0C000007F800000C0C000007F800000C0C000007F8000 -00C00000007F800000000000007F800000000000007F800000000000007F800000000000 -007F800000000000007F800000000000007F800000000000007F800000000000007F8000 -00000000007F800000000000007F800000000000007F800000000000007F800000000000 -007F800000000000007F800000000000007F800000000000007F800000000000007F8000 -00000000007F800000000000007F800000000000007F800000000000007F800000000000 -007F800000000000007F800000000000007F800000000000007F800000000000007F8000 -00000000007F800000000000007F800000000000007F800000000000007F800000000000 -007F800000000000007F800000000000007F800000000000007F800000000000007F8000 -0000000000FFC0000000000001FFE00000000007FFFFFFF800000007FFFFFFF800000007 -FFFFFFF800003A3E7DBD41>II87 D91 -DII<7FFFFFFFFFFFFCFFFFFFFFFFFFFEFFFFFFFFFFFFFE7FFFFFFFFFFFFC3704796E -46>95 D<0180038007000E000C001C00180038003000700060006000E000C000C000C000 -C000C000CE00FF80FFC0FFC0FFC07FC07FC03F800E000A1B79BE19>I<001FF0000000FF -FC000003E03F00000F000FC0001C0007E0001F0003F0003F8001F8003FC000FC003FC000 -FC003FC000FC003FC0007E001F80007E000F00007E000000007E000000007E000000007E -000000007E0000001FFE000003FFFE00001FF87E00007F807E0001FC007E0007F0007E00 -0FE0007E001FC0007E003F80007E007F80007E007F00007E007F00007E03FE00007E03FE -00007E03FE00007E03FE0000FE03FE0000FE03FE0001FE037F0001BE037F0003BE033F80 -071F061FC00E1F8E0FF03C0FFC03FFF007F8003FC003E0282A7CA82D>I<01F800000000 -FFF800000000FFF800000000FFF80000000007F80000000003F80000000001F800000000 -01F80000000001F80000000001F80000000001F80000000001F80000000001F800000000 -01F80000000001F80000000001F80000000001F80000000001F80000000001F800000000 -01F80000000001F80000000001F80000000001F80000000001F807F8000001F81FFF0000 -01F8780FC00001F9E003F00001FB8001F80001FF0000FC0001FE00007E0001FC00003F00 -01FC00001F8001F800001F8001F800001FC001F800000FC001F800000FE001F800000FE0 -01F8000007E001F8000007F001F8000007F001F8000007F001F8000007F001F8000007F0 -01F8000007F001F8000007F001F8000007F001F8000007F001F8000007F001F8000007E0 -01F800000FE001F800000FE001F800000FE001F800000FC001F800001FC001F800001F80 -01FC00003F0001FE00003F0001F600007E0001F70000FC0001E38001F80001C1C003E000 -01C0F81F800001803FFE0000000007F000002C407EBE32>I<0001FF0000000FFFE00000 -3F00F800007C001E0001F800070003F0001F0007E0003F800FC0007F800FC0007F801F80 -007F801F80007F803F00003F003F00001E007F000000007F000000007E00000000FE0000 -0000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000000 -00FE00000000FE00000000FE000000007F000000007F000000007F000000003F000000C0 -3F800000C01F800001C01FC00001800FC000038007E000070003F000060001F8001E0000 -FC003800003F01F000000FFFC0000001FE0000222A7DA828>I<00000001F800000000FF -F800000000FFF800000000FFF80000000007F80000000003F80000000001F80000000001 -F80000000001F80000000001F80000000001F80000000001F80000000001F80000000001 -F80000000001F80000000001F80000000001F80000000001F80000000001F80000000001 -F80000000001F80000000001F80000000001F8000000FF01F8000007FFC1F800001F80F1 -F800007C0039F80001F8001DF80003F0000FF80007E00007F8000FC00003F8000FC00003 -F8001F800001F8003F800001F8003F000001F8007F000001F8007F000001F8007F000001 -F8007E000001F800FE000001F800FE000001F800FE000001F800FE000001F800FE000001 -F800FE000001F800FE000001F800FE000001F800FE000001F800FE000001F8007E000001 -F8007F000001F8007F000001F8003F000001F8003F800001F8001F800003F8001F800003 -F8000FC00007F80007E0000FF80003F0000DFC0001F8003DFE0000FC0071FFF0003F01E1 -FFF0000FFF81FFF00001FE01F8002C407DBE32>I<0003FC0000001FFF8000007E07E000 -00F801F00001F000F80003E0007C0007C0003E000FC0003F001F80001F001F80001F803F -00001F803F00000F807F00000F807F00000FC07E00000FC07E00000FC0FE00000FC0FE00 -000FC0FFFFFFFFC0FFFFFFFFC0FE00000000FE00000000FE00000000FE00000000FE0000 -0000FE000000007E000000007F000000007F000000007F000000003F000000C03F800000 -C01F800001C00FC00001800FC000038007E000070003F0000E0001F8001C0000FC003800 -003F01F000000FFFC0000001FE0000222A7DA828>I<00001FC00000FFF00003F0380007 -C0FC000F81FE001F81FE003F01FE003E01FE007E01FE007E00FC00FC000000FC000000FC -000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC -000000FC000000FC000000FC0000FFFFFF00FFFFFF00FFFFFF0000FC000000FC000000FC -000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC -000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC -000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC -000000FC000000FC000001FE00007FFFFE007FFFFE007FFFFE001F407FBF1C>I<000000 -007E000003FC01FF00000FFF078780003E07CE0F8000FC03FC0F8001F801F80F8003F000 -FC070003E0007C000007E0007E000007E0007E00000FC0003F00000FC0003F00000FC000 -3F00000FC0003F00000FC0003F00000FC0003F00000FC0003F00000FC0003F000007E000 -7E000007E0007E000003E0007C000003F000FC000001F801F8000001FC03F0000001BE07 -C00000038FFF0000000303FC000000070000000000070000000000070000000000070000 -00000007800000000007800000000007C00000000003E00000000003FFFFF0000001FFFF -FE000001FFFFFF8000007FFFFFE00001FFFFFFF80007C0001FF8001F800003FC003F0000 -00FE003E0000007E007C0000003E007C0000003F00F80000001F00F80000001F00F80000 -001F00F80000001F00F80000001F00FC0000003F007C0000003E007E0000007E003F0000 -00FC001F800001F8000FC00003F00003F0000FC00000FE007F0000003FFFFC00000003FF -C00000293D7EA82D>I<01F800000000FFF800000000FFF800000000FFF80000000007F8 -0000000003F80000000001F80000000001F80000000001F80000000001F80000000001F8 -0000000001F80000000001F80000000001F80000000001F80000000001F80000000001F8 -0000000001F80000000001F80000000001F80000000001F80000000001F80000000001F8 -0000000001F803FC000001F80FFF800001F83C0FC00001F8F003E00001F9C003F00001FB -8001F80001FB0001F80001FF0000FC0001FE0000FC0001FE0000FC0001FC0000FC0001FC -0000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F8 -0000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F8 -0000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F8 -0000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F8 -0000FC0003FC0001FE00FFFFF07FFFF8FFFFF07FFFF8FFFFF07FFFF82D3F7EBE32>I<01 -C00007F0000FF8000FF8000FF8000FF8000FF80007F00001C00000000000000000000000 -000000000000000000000000000000000000000000000000000001F8007FF8007FF8007F -F80007F80003F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001 -F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001 -F80001F80001F80001F80001F80001F80001F80001F80001F80003FC00FFFFE0FFFFE0FF -FFE0133D7EBC19>I<0000700001FC0003FE0003FE0003FE0003FE0003FE0001FC000070 -000000000000000000000000000000000000000000000000000000000000000000000000 -0000FE003FFE003FFE003FFE0001FE0000FE00007E00007E00007E00007E00007E00007E -00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E -00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E -00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E -3C007E7E007CFF00FCFF00FCFF00F8FF01F8FE01F07803E03E07C00FFF0001FC00175084 -BC1C>I<01F800000000FFF800000000FFF800000000FFF80000000007F80000000003F8 -0000000001F80000000001F80000000001F80000000001F80000000001F80000000001F8 -0000000001F80000000001F80000000001F80000000001F80000000001F80000000001F8 -0000000001F80000000001F80000000001F80000000001F80000000001F80000000001F8 -0000000001F8007FFF8001F8007FFF8001F8007FFF8001F8001FFC0001F8000FE00001F8 -000F800001F8001F000001F8001C000001F80038000001F80070000001F800E0000001F8 -03C0000001F80700000001F80E00000001F81E00000001F83E00000001F87F00000001F9 -FF80000001FB9FC0000001FF0FC0000001FE07E0000001FC07F0000001F803F0000001F8 -01F8000001F801FC000001F800FE000001F8007E000001F8003F000001F8003F800001F8 -001F800001F8000FC00001F8000FE00001F80007F00001F80007F00001F80007F80003FC -0007FE00FFFFF03FFFE0FFFFF03FFFE0FFFFF03FFFE02B3F7EBE30>I<01F800FFF800FF -F800FFF80007F80003F80001F80001F80001F80001F80001F80001F80001F80001F80001 -F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001 -F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001 -F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001 -F80001F80001F80001F80001F80001F80001F80001F80001F80003FC00FFFFF0FFFFF0FF -FFF0143F7EBE19>I<01F803FC0001FE0000FFF80FFF8007FFC000FFF83C0FC01E07E000 -FFF8F003E07801F00007F9C003F0E001F80003FB8001F9C000FC0001FB0001F98000FC00 -01FF0000FF80007E0001FE0000FF00007E0001FE0000FF00007E0001FC0000FE00007E00 -01FC0000FE00007E0001F80000FC00007E0001F80000FC00007E0001F80000FC00007E00 -01F80000FC00007E0001F80000FC00007E0001F80000FC00007E0001F80000FC00007E00 -01F80000FC00007E0001F80000FC00007E0001F80000FC00007E0001F80000FC00007E00 -01F80000FC00007E0001F80000FC00007E0001F80000FC00007E0001F80000FC00007E00 -01F80000FC00007E0001F80000FC00007E0001F80000FC00007E0001F80000FC00007E00 -01F80000FC00007E0001F80000FC00007E0001F80000FC00007E0001F80000FC00007E00 -01F80000FC00007E0003FC0001FE0000FF00FFFFF07FFFF83FFFFCFFFFF07FFFF83FFFFC -FFFFF07FFFF83FFFFC46287EA74B>I<01F803FC0000FFF80FFF8000FFF83C0FC000FFF8 -F003E00007F9C003F00003FB8001F80001FB0001F80001FF0000FC0001FE0000FC0001FE -0000FC0001FC0000FC0001FC0000FC0001F80000FC0001F80000FC0001F80000FC0001F8 -0000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F8 -0000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F8 -0000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F8 -0000FC0001F80000FC0001F80000FC0003FC0001FE00FFFFF07FFFF8FFFFF07FFFF8FFFF -F07FFFF82D287EA732>I<0001FE0000000FFFC000003F03F000007C00F80001F0003E00 -03E0001F0007C0000F8007C0000F800F800007C01F800007E01F000003E03F000003F03F -000003F07E000001F87E000001F87E000001F87E000001F8FE000001FCFE000001FCFE00 -0001FCFE000001FCFE000001FCFE000001FCFE000001FCFE000001FCFE000001FC7E0000 -01F87E000001F87E000001F87F000003F83F000003F03F000003F01F800007E00F800007 -C00FC0000FC007C0000F8003E0001F0001F0003E0000FC00FC00003F03F000000FFFC000 -0001FE0000262A7DA82D>I<01F807F80000FFF81FFF0000FFF8780FC000FFF9E003F000 -03FB8001F80001FF0000FC0001FE00007E0001FC00007F0001FC00003F8001F800001F80 -01F800001FC001F800001FC001F800000FE001F800000FE001F800000FE001F800000FF0 -01F8000007F001F8000007F001F8000007F001F8000007F001F8000007F001F8000007F0 -01F8000007F001F8000007F001F8000007F001F800000FE001F800000FE001F800000FE0 -01F800000FE001F800001FC001F800001FC001F800003F8001FC00003F0001FE00007F00 -01FE0000FE0001FF0001FC0001FB8003F80001F9C007E00001F8F81F800001F83FFE0000 -01F807F0000001F80000000001F80000000001F80000000001F80000000001F800000000 -01F80000000001F80000000001F80000000001F80000000001F80000000001F800000000 -01F80000000001F80000000003FC00000000FFFFF0000000FFFFF0000000FFFFF0000000 -2C3A7EA732>I<0000FF000C000007FFC01C00001F80F01C00007E00381C0000FC001C3C -0003F8000E3C0007F000077C0007E000037C000FC00003FC001FC00001FC003F800001FC -003F800000FC007F000000FC007F000000FC007F000000FC007F000000FC00FE000000FC -00FE000000FC00FE000000FC00FE000000FC00FE000000FC00FE000000FC00FE000000FC -00FE000000FC00FE000000FC00FF000000FC007F000000FC007F000000FC007F000000FC -003F800000FC003F800001FC001FC00001FC000FC00003FC000FE00003FC0007E00007FC -0003F0000EFC0001F8001CFC00007E0078FC00003F01E0FC00000FFFC0FC000001FE00FC -0000000000FC0000000000FC0000000000FC0000000000FC0000000000FC0000000000FC -0000000000FC0000000000FC0000000000FC0000000000FC0000000000FC0000000000FC -0000000000FC0000000001FE000000007FFFF80000007FFFF80000007FFFF82D3A7DA730 ->I<03F00FC0FFF03FF0FFF0F0F8FFF1C3FC07F183FC03F383FC01F703FC01F603FC01F6 -01F801FE006001FC000001FC000001FC000001FC000001F8000001F8000001F8000001F8 -000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8 -000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8 -000003FC0000FFFFF800FFFFF800FFFFF8001E287EA723>I<007FC06003FFF8E007C03D -E01E000FE03C0003E0780001E0780001E0700000E0F00000E0F0000060F0000060F80000 -60F8000060FC000060FF0000007FC000007FFE00003FFFE0001FFFFC0007FFFE0003FFFF -80007FFFC00007FFE000003FE000000FF0C00003F0C00001F8C00000F8E00000F8E00000 -78E0000078F0000078F0000078F8000078F80000F0FC0000F0FC0001E0FE0001C0F78007 -80F1E01F00E0FFFC00C01FE0001D2A7DA824>I<00180000001800000018000000180000 -001800000018000000380000003800000038000000380000007800000078000000F80000 -00F8000001F8000003F8000007F800001FFFFFC0FFFFFFC0FFFFFFC001F8000001F80000 -01F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80000 -01F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80000 -01F8006001F8006001F8006001F8006001F8006001F8006001F8006001F8006001F80060 -00FC00E000FC00C000FC00C0007E01C0003F0380001F87000007FE000001F8001B397EB7 -23>I<01F80000FC00FFF8007FFC00FFF8007FFC00FFF8007FFC0007F80003FC0003F800 -01FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F800 -00FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F800 -00FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F800 -00FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F80000FC0001F800 -01FC0001F80001FC0001F80001FC0001F80003FC0000F80003FC0000FC0007FC0000FC00 -0EFE00007C001CFF00003E0038FFF8001F80F0FFF80007FFE0FFF80000FF00FC002D297E -A732>III<7FFFC00FFFE07FFFC00FFFE07FFFC00FFFE003FF0007FE0000FF0003F800007F0003 -E000003F0003C000003F80038000001FC0070000000FC00E00000007E00C00000007F018 -00000003F83800000001F87000000000FCE000000000FEC0000000007F80000000003F80 -000000001F80000000000FC0000000000FE0000000001FE0000000003BF00000000071F8 -00000000E1FC00000000C0FE00000001807E00000003803F00000007003F8000000E001F -C000000C000FC000001C0007E00000380007F00000F80003F80001F80003FC000FFC0007 -FE00FFFF001FFFF8FFFF001FFFF8FFFF001FFFF82D277FA630>II<1FFFFFFF801FFFFFFF801FE0007F -801F00007F001E0000FE001C0001FC001C0003FC00180003F800380007F00038000FE000 -30001FE00030001FC00030003F800030007F000030007F00000000FE00000001FC000000 -03FC00000003F800000007F00000000FE00000001FE00000001FC00180003F800180007F -000180007F00018000FE00018001FC00018003FC00038003F800038007F00003000FE000 -03001FE00007001FC0000F003F80000F007F00003F00FF0001FF00FFFFFFFF00FFFFFFFF -0021277EA628>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fh ectt1095 10.95 72 -/Fh 72 126 df<3C000F007E001F80FF003FC0FF003FC0FF003FC0FF003FC0FF003FC0FF -003FC0FF003FC0FF003FC0FF003FC07F003F807F003F807F003F807F003F807F003F807F -003F807F003F807E001F807E001F807E001F807E001F807E001F807E001F807E001F807E -001F803C000F001A1B76B82F>34 D<07C00FF01FF83FFC3FFC3FFE3FFE3FFF1FFF0FFF07 -FF003F003F003F003F007F007E007E00FE00FC01FC03F803F80FF01FF03FE0FFC0FF80FF -007C003800101F70B72F>39 D<00003C00007E0001FE0003FE0007FC000FF8001FE0003F -C0007F8000FF0000FE0001FC0003F80003F80007F00007E0000FE0000FC0001FC0001F80 -001F80003F80003F00003F00007F00007E00007E00007E0000FE0000FC0000FC0000FC00 -00FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FE00007E00 -007E00007E00007F00003F00003F00003F80001F80001F80001FC0000FC0000FE00007E0 -0007F00003F80003F80001FC0000FE0000FF00007F80003FC0001FE0000FF80007FC0003 -FE0001FE00007E00003C174771BE2F>I<780000FC0000FF0000FF80007FC0003FE0000F -F00007F80003FC0001FE0000FE00007F00003F80003F80001FC0000FC0000FE00007E000 -07F00003F00003F00003F80001F80001F80001FC0000FC0000FC0000FC0000FE00007E00 -007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00007E00 -00FE0000FC0000FC0000FC0001FC0001F80001F80003F80003F00003F00007F00007E000 -0FE0000FC0001FC0003F80003F80007F0000FE0001FE0003FC0007F8000FF0003FE0007F -C000FF8000FF0000FC0000780000174778BE2F>I<0001E000000003F000000003F00000 -0003F000000003F000000003F000000003F000000003F000003003F003007C03F00F80FE -03F01FC0FF83F07FC0FFE3F1FFC07FF3F3FF801FFFFFFE000FFFFFFC0003FFFFF00000FF -FFC000003FFF0000000FFC0000003FFF000000FFFFC00003FFFFF0000FFFFFFC001FFFFF -FE007FF3F3FF80FFE3F1FFC0FF83F07FC0FE03F01FC07C03F00F803003F003000003F000 -000003F000000003F000000003F000000003F000000003F000000003F000000001E00000 -22277AAE2F>I<07C00FF01FF83FF83FFC3FFC3FFE3FFE1FFE0FFE07FE007E00FE00FC01 -FC01FC03F80FF03FF0FFE0FFC0FF807E0038000F18708A2F>44 D<7FFFFFF8FFFFFFFCFF -FFFFFCFFFFFFFCFFFFFFFC7FFFFFF81E0678962F>I<1F003F807FC0FFE0FFE0FFE0FFE0 -FFE07FC03F801F000B0B6E8A2F>I<0001FE00000007FF8000001FFFE000003FFFF00000 -7FFFF80000FFFFFC0001FF03FE0003FC00FF0003F8007F0007F0003F800FE0001FC00FC0 -000FC01FC0000FE01F800007E01F800007E03F000003F03F000003F03F000003F07E0000 -01F87E000001F87E000001F87E000001F8FC000000FCFC000000FCFC000000FCFC000000 -FCFC000000FCFC000000FCFC000000FCFC000000FCFC000000FCFC000000FCFC000000FC -FC000000FCFC000000FCFE000001FC7E000001F87E000001F87E000001F87F000003F83F -000003F03F000003F03F800007F01F800007E01FC0000FE01FC0000FE00FE0001FC00FE0 -001FC007F0003F8003F8007F0003FC00FF0001FF03FE0000FFFFFC00007FFFF800003FFF -F000001FFFE0000007FF80000001FE0000263A7CB82F>48 D<000380000007C0000007C0 -00000FC000000FC000001FC000003FC000003FC000007FC00001FFC00003FFC0007FFFC0 -00FFFFC000FFFFC000FFCFC000FF8FC0007E0FC000000FC000000FC000000FC000000FC0 -00000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC0 -00000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC0 -00000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC0 -00000FC000000FC000000FC0003FFFFFF87FFFFFF87FFFFFFC7FFFFFFC7FFFFFF87FFFFF -F81E3977B82F>I<000FFC0000003FFF800000FFFFE00003FFFFF80007FFFFFC000FFFFF -FE001FF80FFF003FE001FF803F80007F807F00003FC07E00001FC07E00000FE0FE000007 -E0FE000007F0FF000007F0FF000003F0FF000003F0FF000003F07E000003F018000003F0 -00000003F000000003F000000007F000000007E00000000FE00000000FC00000001FC000 -00001FC00000003F800000007F00000000FF00000001FE00000003FC00000007F8000000 -0FF00000001FE00000003FC00000007F80000000FF00000001FE00000007FC0000000FF8 -0000001FF00000003FE00000007F80000000FF00000001FE00000003FC0001E00FF80003 -F01FF00003F03FE00003F07FFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0 -7FFFFFFFE024397BB82F>I<0003FF0000001FFFE000007FFFF80001FFFFFE0003FFFFFF -0007FFFFFF800FFE01FFC01FF0003FE01FE0001FE03F800007F03F800007F07F000003F8 -7E000001F87E000001F87E000001F87E000001F87E000001F87F000003F83F000003F03F -800007F01FC0000FE00FE0001FC00FF8007FC003FF03FF0001FFFFFE00007FFFF800001F -FFE000003FFFF00000FFFFFC0003FFFFFF0007FC00FF800FF0003FC01FC0000FE03F8000 -07F03F000003F07F000003F87E000001F8FE000001FCFC000000FCFC000000FCFC000000 -FCFC000000FCFC000000FCFC000000FCFE000001FC7E000001F87F000003F87F800007F8 -3FC0000FF01FE0001FE01FF0003FE00FFE01FFC007FFFFFF8003FFFFFF0001FFFFFE0000 -7FFFF800001FFFE0000003FF0000263A7CB82F>56 D<1F003F807FC0FFE0FFE0FFE0FFE0 -FFE07FC03F801F0000000000000000000000000000000000000000000000000000000000 -0000000000001F003F807FC0FFE0FFE0FFE0FFE0FFE07FC03F801F000B276EA62F>58 -D<07C00FE01FF03FF83FF83FF83FF83FF81FF00FE007C000000000000000000000000000 -00000000000000000000000000000000000000000007C00FF01FF83FF83FFC3FFC3FFE3F -FE1FFE0FFE07FE007E00FE00FC01FC01FC03F80FF03FF0FFE0FFC0FF807E0038000F3470 -A62F>I<000000004000000001E000000007F00000000FF00000003FF00000007FE00000 -01FFC0000003FF0000000FFE0000001FF80000007FF0000000FFC0000003FF80000007FE -0000001FFC0000003FF0000000FFE0000001FF80000007FF0000000FFC0000003FF80000 -007FE0000000FFC0000000FF00000000FFC00000007FE00000003FF80000000FFC000000 -07FF00000001FF80000000FFE00000003FF00000001FFC00000007FE00000003FF800000 -00FFC00000007FF00000001FF80000000FFE00000003FF00000001FFC00000007FE00000 -003FF00000000FF000000007F000000001E00000000040242F7BB22F>I<3FFFFFFFFC7F -FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFE000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000007FFFFF -FFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFE3FFFFFFFFC28157DA52F>I<3000 -0000007800000000FE00000000FF00000000FFC00000007FE00000003FF80000000FFC00 -000007FF00000001FF80000000FFE00000003FF00000001FFC00000007FE00000003FF80 -000000FFC00000007FF00000001FF80000000FFE00000003FF00000001FFC00000007FE0 -0000003FF00000000FF00000003FF00000007FE0000001FFC0000003FF0000000FFE0000 -001FF80000007FF0000000FFC0000003FF80000007FE0000001FFC0000003FF0000000FF -E0000001FF80000007FF0000000FFC0000003FF80000007FE0000000FFC0000000FF0000 -0000FE0000000078000000003000000000242F7BB22F>I<001FFF000000FFFFF00003FF -FFFC000FFFFFFF001FFFFFFF803FFFFFFFC07FF001FFC07F80003FE0FE00000FE0FE0000 -07F0FF000003F0FF000003F0FF000003F07E000007F07E00000FE00000001FE00000007F -C0000001FFC0000003FF8000000FFF0000001FFC0000003FF00000007FE00000007F8000 -0000FF00000001FE00000001FE00000003FC00000003F800000003F800000007F8000000 -07F000000007F000000007F000000007F000000007F000000007F000000007F000000003 -F00000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000001C000000007F000000007F00000000FF80000000FF800 -00000FF800000007F000000007F000000001C0000024397BB82F>I<00003F0000000000 -7F80000000007F8000000000FFC000000000FFC000000000FFC000000000FFC000000001 -F3E000000001F3E000000001F3E000000001F3E000000001F3E000000003F3F000000003 -F3F000000003F3F000000003E1F000000007E1F800000007E1F800000007E1F800000007 -E1F800000007C0F80000000FC0FC0000000FC0FC0000000FC0FC0000000FC0FC0000001F -807E0000001F807E0000001F807E0000001F807E0000003F807F0000003F003F0000003F -003F0000003F003F0000003F003F0000007E001F8000007E001F8000007FFFFF8000007F -FFFF800000FFFFFFC00000FFFFFFC00000FFFFFFC00000FFFFFFC00000FC000FC00001F8 -0007E00001F80007E00001F80007E00001F80007E00003F80007F00003F00003F00003F0 -0003F00003F00003F0007FFF003FFF807FFF003FFF80FFFF807FFFC0FFFF807FFFC07FFF -003FFF807FFF003FFF802A397EB82F>65 D<7FFFFFE000FFFFFFFC00FFFFFFFF00FFFFFF -FF80FFFFFFFFC07FFFFFFFE003F0001FF003F0000FF003F00003F803F00003F803F00001 -F803F00001FC03F00000FC03F00000FC03F00000FC03F00000FC03F00000FC03F00001FC -03F00001F803F00003F803F00003F003F00007F003F0001FE003F0007FC003FFFFFF8003 -FFFFFF0003FFFFFC0003FFFFFF0003FFFFFFC003FFFFFFE003F0000FF003F00003F803F0 -0001FC03F00000FC03F00000FE03F000007E03F000007E03F000003F03F000003F03F000 -003F03F000003F03F000003F03F000003F03F000007F03F000007E03F00000FE03F00000 -FE03F00001FC03F00007FC03F0001FF87FFFFFFFF8FFFFFFFFF0FFFFFFFFE0FFFFFFFF80 -FFFFFFFF007FFFFFF80028387EB72F>I<00007F80380003FFE07C000FFFF8FC001FFFFC -FC003FFFFFFC007FFFFFFC00FFC0FFFC01FF003FFC03FE000FFC07F8000FFC07F00007FC -0FE00003FC0FE00003FC1FC00001FC1F800001FC3F800001FC3F000000FC3F000000FC7F -000000FC7E000000FC7E000000787E00000000FE00000000FC00000000FC00000000FC00 -000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC0000 -0000FC00000000FC00000000FE000000007E000000007E000000007E000000787F000000 -FC3F000000FC3F000000FC3F800000FC1F800000FC1FC00001FC0FE00001F80FF00003F8 -07F00003F807F80007F003FE000FF001FF001FE000FFC07FC0007FFFFF80003FFFFF0000 -1FFFFE00000FFFFC000003FFF00000007F8000263A7CB82F>I<7FFFFF800000FFFFFFF0 -0000FFFFFFFC0000FFFFFFFE0000FFFFFFFF00007FFFFFFF800007E001FFC00007E0003F -E00007E0001FE00007E0000FF00007E00007F80007E00003F80007E00001FC0007E00001 -FC0007E00000FE0007E00000FE0007E000007E0007E000007F0007E000003F0007E00000 -3F0007E000003F0007E000003F0007E000003F8007E000001F8007E000001F8007E00000 -1F8007E000001F8007E000001F8007E000001F8007E000001F8007E000001F8007E00000 -1F8007E000001F8007E000001F8007E000003F8007E000003F0007E000003F0007E00000 -3F0007E000007F0007E000007E0007E000007E0007E00000FE0007E00001FC0007E00001 -FC0007E00003F80007E00007F80007E0000FF00007E0001FF00007E0003FE00007E001FF -C0007FFFFFFF8000FFFFFFFF0000FFFFFFFE0000FFFFFFFC0000FFFFFFF000007FFFFF80 -000029387EB72F>I<7FFFFFFFFC00FFFFFFFFFE00FFFFFFFFFE00FFFFFFFFFE00FFFFFF -FFFE007FFFFFFFFE0003F000007E0003F000007E0003F000007E0003F000007E0003F000 -007E0003F000007E0003F000007E0003F000003C0003F00000000003F00000000003F000 -00000003F00000000003F00000000003F000F0000003F001F8000003F001F8000003F001 -F8000003F001F8000003FFFFF8000003FFFFF8000003FFFFF8000003FFFFF8000003FFFF -F8000003FFFFF8000003F001F8000003F001F8000003F001F8000003F001F8000003F000 -F0000003F00000000003F00000000003F00000000003F00000000003F00000000003F000 -000F0003F000001F8003F000001F8003F000001F8003F000001F8003F000001F8003F000 -001F8003F000001F8003F000001F8003F000001F807FFFFFFFFF80FFFFFFFFFF80FFFFFF -FFFF80FFFFFFFFFF80FFFFFFFFFF807FFFFFFFFF0029387DB72F>I<7FFFFFFFFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFF03F000003F03F000003F03F00000 -3F03F000003F03F000003F03F000003F03F000003F03F000001E03F000000003F0000000 -03F000000003F000000003F000000003F000000003F000780003F000FC0003F000FC0003 -F000FC0003F000FC0003FFFFFC0003FFFFFC0003FFFFFC0003FFFFFC0003FFFFFC0003FF -FFFC0003F000FC0003F000FC0003F000FC0003F000FC0003F000780003F000000003F000 -000003F000000003F000000003F000000003F000000003F000000003F000000003F00000 -0003F000000003F000000003F000000003F000000003F00000007FFFE00000FFFFF00000 -FFFFF00000FFFFF00000FFFFF000007FFFE0000028387DB72F>I<0000FE00E00007FFC1 -F0000FFFF3F0003FFFFBF0007FFFFFF000FFFFFFF001FF81FFF003FE007FF003FC003FF0 -07F8001FF00FF0001FF00FE0000FF01FC0000FF01FC00007F01F800007F03F800007F03F -000003F07F000003F07F000003F07E000003F07E000001E07E00000000FE00000000FC00 -000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC0000 -0000FC00000000FC0000FFFEFC0001FFFFFC0001FFFFFE0001FFFF7E0001FFFF7E0000FF -FE7E000003F07F000003F07F000007F03F000007F03F800007F01F800007F01FC0000FF0 -1FC0000FF00FE0000FF00FF0001FF007F8003FF003FC003FF003FE007FF001FF81FFF000 -FFFFFFF0007FFFFFF0003FFFFBF0000FFFE3F00007FFC1E00000FE0000283A7DB82F>I< -7FFF807FFF807FFF807FFF80FFFFC0FFFFC0FFFFC0FFFFC07FFF807FFF807FFF807FFF80 -03F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F000 -03F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F000 -03F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F000 -03FFFFFFF00003FFFFFFF00003FFFFFFF00003FFFFFFF00003FFFFFFF00003FFFFFFF000 -03F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F000 -03F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F000 -03F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F000 -03F00003F00003F00003F0007FFF807FFF807FFF807FFF80FFFFC0FFFFC0FFFFC0FFFFC0 -7FFF807FFF807FFF807FFF802A387EB72F>I<7FFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF7FFFFFFE0007E0000007E0000007E0000007E0000007E0000007E0000007E00000 -07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E00000 -07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E00000 -07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E00000 -07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E00000 -07E0007FFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFE203879B72F>I<7FFC -007FFCFFFE007FFEFFFE00FFFEFFFE00FFFEFFFE007FFE7FFC007FFC07C0001FC007C000 -1F8007C0003F0007C0007E0007C000FE0007C000FC0007C001F80007C003F00007C007F0 -0007C007E00007C00FC00007C01F800007C03F800007C03F000007C07E000007C0FC0000 -07C1FC000007C1F8000007C3FC000007C7FC000007CFFE000007CFFF000007DFBF000007 -FF1F800007FF0F800007FE0FC00007FC07C00007F807E00007F803E00007F003F00007E0 -01F00007C001F80007C000F80007C000FC0007C0007C0007C0007E0007C0003E0007C000 -3F0007C0001F8007C0001F8007C0000FC007C00007C007C00007E007C00003E07FFC000F -FEFFFE001FFFFFFE001FFFFFFE001FFFFFFE001FFF7FFC000FFE28387DB72F>75 -D<7FFFF000007FFFF80000FFFFF80000FFFFF800007FFFF800007FFFF0000001F8000000 -01F800000001F800000001F800000001F800000001F800000001F800000001F800000001 -F800000001F800000001F800000001F800000001F800000001F800000001F800000001F8 -00000001F800000001F800000001F800000001F800000001F800000001F800000001F800 -000001F800000001F800000001F800000001F800000001F800000001F800000001F80000 -0001F800000001F800000001F800000001F800000001F800001E01F800003F01F800003F -01F800003F01F800003F01F800003F01F800003F01F800003F01F800003F01F800003F7F -FFFFFFFF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFF7FFFFFFFFE28387DB72F>I< -7FF00000FFE07FF80001FFE0FFF80001FFF0FFFC0003FFF07FFC0003FFE07FFC0003FFE0 -07DE0007BE0007DE0007BE0007DE0007BE0007DF000FBE0007CF000F3E0007CF000F3E00 -07CF801F3E0007CF801F3E0007C7801E3E0007C7801E3E0007C7C03E3E0007C7C03E3E00 -07C3C03C3E0007C3E07C3E0007C3E07C3E0007C1E0783E0007C1F0F83E0007C1F0F83E00 -07C1F0F83E0007C0F0F03E0007C0F9F03E0007C0F9F03E0007C079E03E0007C079E03E00 -07C079E03E0007C03FC03E0007C03FC03E0007C03FC03E0007C01F803E0007C01F803E00 -07C00F003E0007C000003E0007C000003E0007C000003E0007C000003E0007C000003E00 -07C000003E0007C000003E0007C000003E0007C000003E0007C000003E0007C000003E00 -07C000003E0007C000003E007FFC0003FFE07FFC0003FFE0FFFE0007FFF0FFFE0007FFF0 -7FFC0003FFE07FFC0003FFE02C387FB72F>I<7FF8003FFF807FFC003FFF80FFFC007FFF -C0FFFE007FFFC07FFE003FFF807FFE003FFF8003EF0001F00003EF0001F00003EF8001F0 -0003E78001F00003E78001F00003E7C001F00003E3C001F00003E3C001F00003E3E001F0 -0003E3E001F00003E1E001F00003E1F001F00003E1F001F00003E0F001F00003E0F801F0 -0003E0F801F00003E07801F00003E07C01F00003E07C01F00003E03E01F00003E03E01F0 -0003E03E01F00003E01F01F00003E01F01F00003E01F01F00003E00F81F00003E00F81F0 -0003E00781F00003E007C1F00003E007C1F00003E003C1F00003E003E1F00003E003E1F0 -0003E001E1F00003E001F1F00003E001F1F00003E000F1F00003E000F1F00003E000F9F0 -0003E00079F00003E00079F00003E0007DF00003E0003DF00003E0003DF0007FFF001FF0 -007FFF001FF000FFFF801FF000FFFF800FF0007FFF000FF0007FFF0007E0002A387EB72F ->I<003FFFC00003FFFFFC0007FFFFFE000FFFFFFF001FFFFFFF803FFFFFFFC03FF000FF -C03FC0003FC07F80001FE07F00000FE07E000007E07E000007E07E000007E07E000007E0 -FE000007F0FC000003F0FC000003F0FC000003F0FC000003F0FC000003F0FC000003F0FC -000003F0FC000003F0FC000003F0FC000003F0FC000003F0FC000003F0FC000003F0FC00 -0003F0FC000003F0FC000003F0FC000003F0FC000003F0FC000003F0FC000003F0FC0000 -03F0FC000003F0FC000003F0FC000003F0FC000003F0FC000003F0FC000003F0FE000007 -F0FE000007F07E000007E07E000007E07E000007E07F00000FE07F00000FE07F80001FE0 -3FC0003FC03FF801FFC03FFFFFFFC01FFFFFFF800FFFFFFF0007FFFFFE0003FFFFFC0000 -3FFFC000243A7BB82F>I<7FFFFFE000FFFFFFF800FFFFFFFE00FFFFFFFF80FFFFFFFFC0 -7FFFFFFFE003F0007FF003F0001FF003F00007F803F00003F803F00001FC03F00001FC03 -F00000FC03F00000FE03F000007E03F000007E03F000007E03F000007E03F000007E03F0 -00007E03F00000FE03F00000FC03F00001FC03F00001FC03F00003F803F00007F803F000 -1FF003F0007FF003FFFFFFE003FFFFFFC003FFFFFF8003FFFFFE0003FFFFF80003FFFFE0 -0003F000000003F000000003F000000003F000000003F000000003F000000003F0000000 -03F000000003F000000003F000000003F000000003F000000003F000000003F000000003 -F000000003F00000007FFF800000FFFFC00000FFFFC00000FFFFC00000FFFFC000007FFF -80000027387DB72F>I<003FFFC00003FFFFFC0007FFFFFE000FFFFFFF001FFFFFFF803F -FFFFFFC03FF000FFC03FC0003FC07F80001FE07F00000FE07F00000FE07E000007E07E00 -0007E07E000007E0FE000007F0FC000003F0FC000003F0FC000003F0FC000003F0FC0000 -03F0FC000003F0FC000003F0FC000003F0FC000003F0FC000003F0FC000003F0FC000003 -F0FC000003F0FC000003F0FC000003F0FC000003F0FC000003F0FC000003F0FC000003F0 -FC000003F0FC000003F0FC000003F0FC000003F0FC000003F0FC000003F0FC000003F0FC -00FC03F0FC01FC03F0FE00FE07F07E00FE07E07E007F07E07E007F07E07F003F8FE07F00 -3F8FE07F801FDFE03FC01FFFC03FF00FFFC03FFFFFFFC01FFFFFFF800FFFFFFF0007FFFF -FE0003FFFFFC00003FFFFC00000001FC00000000FE00000000FE000000007F000000007F -000000003F800000003F800000001FC00000001FC00000000FE00000000FE000000007C0 -24467BB82F>I<7FFFFE0000007FFFFFC00000FFFFFFF00000FFFFFFFC00007FFFFFFE00 -007FFFFFFF000003F003FF800003F0007FC00003F0003FC00003F0001FE00003F0000FE0 -0003F00007E00003F00007F00003F00003F00003F00003F00003F00003F00003F00003F0 -0003F00003F00003F00007F00003F00007E00003F0000FE00003F0001FE00003F0003FC0 -0003F0007FC00003F003FF800003FFFFFF000003FFFFFE000003FFFFFC000003FFFFF800 -0003FFFFFC000003FFFFFE000003F003FF000003F0007F800003F0003F800003F0001F80 -0003F0001FC00003F0000FC00003F0000FC00003F0000FC00003F0000FC00003F0000FC0 -0003F0000FC00003F0000FC00003F0000FC00003F0000FC00003F0000FC1E003F0000FC3 -F003F0000FC3F003F0000FC3F003F0000FE3F07FFF8007E7F07FFF8007FFE0FFFFC007FF -E0FFFFC003FFC07FFF8001FFC07FFF8000FF80000000003E002C397EB72F>I<001FF803 -80007FFF07C001FFFFC7C003FFFFEFC007FFFFFFC00FFFFFFFC01FF80FFFC03FC003FFC0 -3F8000FFC07F00007FC07E00003FC0FE00003FC0FC00001FC0FC00001FC0FC00000FC0FC -00000FC0FC00000FC0FC00000FC0FE000007807E000000007F000000003F800000003FC0 -0000001FF80000000FFF80000007FFF8000003FFFF800001FFFFE000007FFFF800000FFF -FC000000FFFE0000000FFF00000000FF800000003FC00000001FC00000000FE000000007 -E000000007E000000007F078000003F0FC000003F0FC000003F0FC000003F0FC000003F0 -FC000003F0FE000007F0FE000007E0FF00000FE0FF80000FE0FFC0001FC0FFF0007FC0FF -FE01FF80FFFFFFFF00FFFFFFFE00FDFFFFFC00F87FFFF800F81FFFE0007003FF0000243A -7BB82F>I<7FFFFFFFFF80FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC0FF -FFFFFFFFC0FC003F000FC0FC003F000FC0FC003F000FC0FC003F000FC0FC003F000FC0FC -003F000FC0FC003F000FC078003F00078000003F00000000003F00000000003F00000000 -003F00000000003F00000000003F00000000003F00000000003F00000000003F00000000 -003F00000000003F00000000003F00000000003F00000000003F00000000003F00000000 -003F00000000003F00000000003F00000000003F00000000003F00000000003F00000000 -003F00000000003F00000000003F00000000003F00000000003F00000000003F00000000 -003F00000000003F00000000003F00000000003F00000000003F00000000003F00000000 -003F00000000003F00000000003F000000001FFFFE0000003FFFFF0000003FFFFF000000 -3FFFFF0000003FFFFF0000001FFFFE00002A387EB72F>I<7FFF801FFFE0FFFFC03FFFF0 -FFFFC03FFFF0FFFFC03FFFF0FFFFC03FFFF07FFF801FFFE003F00000FC0003F00000FC00 -03F00000FC0003F00000FC0003F00000FC0003F00000FC0003F00000FC0003F00000FC00 -03F00000FC0003F00000FC0003F00000FC0003F00000FC0003F00000FC0003F00000FC00 -03F00000FC0003F00000FC0003F00000FC0003F00000FC0003F00000FC0003F00000FC00 -03F00000FC0003F00000FC0003F00000FC0003F00000FC0003F00000FC0003F00000FC00 -03F00000FC0003F00000FC0003F00000FC0003F00000FC0003F00000FC0003F00000FC00 -03F00000FC0003F00000FC0003F00000FC0003F80001FC0003F80001FC0001F80001F800 -01F80001F80001FC0003F80000FE0007F00000FE0007F000007F000FE000007F801FE000 -003FE07FC000001FFFFF8000000FFFFF00000007FFFE00000003FFFC00000000FFF00000 -00003FC000002C397FB72F>I<7FFE001FFF80FFFE001FFFC0FFFF003FFFC0FFFF003FFF -C0FFFE001FFFC07FFE001FFF8007E00001F80007E00001F80007E00001F80007F00003F8 -0003F00003F00003F00003F00003F00003F00003F80007F00001F80007E00001F80007E0 -0001F80007E00001FC000FE00000FC000FC00000FC000FC00000FC000FC00000FE001FC0 -00007E001F8000007E001F8000007E001F8000007E001F8000003F003F0000003F003F00 -00003F003F0000003F003F0000001F807E0000001F807E0000001F807E0000001F807E00 -00000FC0FC0000000FC0FC0000000FC0FC0000000FC0FC00000007C0F800000007E1F800 -000007E1F800000007E1F800000003E1F000000003F3F000000003F3F000000003F3F000 -000001F3E000000001F3E000000001F3E000000001F3E000000000FFC000000000FFC000 -000000FFC000000000FFC000000000FFC0000000007F80000000003F0000002A397EB72F ->I<7FFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFC0000FC0000FC0000FC0000FC0000FC -0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC -0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC -0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC -0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC -0000FC0000FC0000FC0000FC0000FC0000FFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7FFFFE18 -476DBE2F>91 D<7FFFFEFFFFFFFFFFFFFFFFFFFFFFFF7FFFFF00003F00003F00003F0000 -3F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0000 -3F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0000 -3F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0000 -3F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0000 -3F00003F00003F00003F00003F00003F00003F00003F7FFFFFFFFFFFFFFFFFFFFFFFFFFF -FF7FFFFE18477DBE2F>93 D<7FFFFFFFE07FFFFFFFE0FFFFFFFFF0FFFFFFFFF0FFFFFFFF -F07FFFFFFFE07FFFFFFFE024077B7D2F>95 D<001C003E00FF01FF03FF07FC0FF80FF01F -C01FC03F803F007F007E007E00FE00FC00FC00FC00FC00FFE0FFF0FFF8FFFC7FFC7FFC3F -FC3FFC1FF80FF003E0101F71BE2F>I<007FF000000003FFFE00000007FFFF8000000FFF -FFC000001FFFFFE000003FFFFFF000003FC01FF800003FC003FC00003FC001FC00003FC0 -00FE00001F80007E00000F00007F00000000003F00000000003F00000000003F00000000 -003F000000007FFF00000007FFFF0000003FFFFF000001FFFFFF000007FFFFFF00000FFF -F83F00001FFE003F00003FF0003F00007FC0003F00007F00003F0000FE00003F0000FC00 -003F0000FC00003F0000FC00003F0000FC00003F0000FC00007F0000FE00007F00007F00 -00FF00007F8003FF80003FE01FFFFF003FFFFFFFFF801FFFFFFFFF800FFFFFDFFF8007FF -FF0FFF8001FFFC01FF00007FE0000000292A7BA82F>I<7FF000000000FFF800000000FF -F800000000FFF800000000FFF8000000007FF80000000001F80000000001F80000000001 -F80000000001F80000000001F80000000001F80000000001F80000000001F80000000001 -F80000000001F80000000001F80FF0000001F83FFC000001F8FFFF000001FBFFFFC00001 -FFFFFFE00001FFFFFFF00001FFF03FF00001FFC00FF80001FF8003FC0001FF0001FC0001 -FE0000FE0001FC0000FE0001FC00007F0001F800003F0001F800003F0001F800003F8001 -F800001F8001F800001F8001F800001F8001F800001F8001F800001F8001F800001F8001 -F800001F8001F800001F8001F800003F8001F800003F8001FC00003F0001FC00007F0001 -FC00007F0001FE0000FE0001FE0000FE0001FF0001FC0001FF8007FC0001FFC00FF80001 -FFF03FF00001FFFFFFE00001FFFFFFC00001FBFFFF800001F9FFFF000000F07FFC000000 -001FE0000029397EB72F>I<0003FFC000000FFFF800003FFFFC0000FFFFFE0001FFFFFF -0003FFFFFF8007FF007F800FF8007F800FF0007F801FE0007F801FC0003F003F80001E00 -3F000000007F000000007E000000007E00000000FE00000000FC00000000FC00000000FC -00000000FC00000000FC00000000FC00000000FC00000000FC00000000FE000000007E00 -0000007E000000007F000000007F000007803F80000FC03FC0000FC01FE0001FC01FF000 -1F800FFC007F8007FF81FF0003FFFFFF0001FFFFFE0000FFFFFC00003FFFF000000FFFC0 -000003FE0000222A79A82F>I<000003FF8000000007FFC000000007FFC000000007FFC0 -00000007FFC000000003FFC0000000000FC0000000000FC0000000000FC0000000000FC0 -000000000FC0000000000FC0000000000FC0000000000FC0000000000FC0000000000FC0 -000003FC0FC000001FFF0FC000007FFFCFC00000FFFFEFC00001FFFFFFC00003FFFFFFC0 -0007FE07FFC0000FF801FFC0001FF0007FC0001FC0003FC0003F80003FC0003F80001FC0 -007F00001FC0007F00000FC0007E00000FC000FE00000FC000FE00000FC000FC00000FC0 -00FC00000FC000FC00000FC000FC00000FC000FC00000FC000FC00000FC000FC00000FC0 -00FC00000FC000FE00000FC0007E00001FC0007E00001FC0007F00001FC0003F80003FC0 -003F80007FC0001FC0007FC0001FE000FFC0000FF801FFC00007FE07FFFF0007FFFFFFFF -8003FFFFEFFF8001FFFFCFFF80007FFF8FFF80001FFE07FF000007F800000029397DB72F ->I<0003FE0000000FFF8000003FFFE00000FFFFF00001FFFFF80003FFFFFC0007FE07FE -000FF800FF000FF0007F001FC0003F803FC0001F803F80001FC03F00000FC07F00000FC0 -7E00000FC07E00000FE0FE000007E0FC000007E0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FF -FFFFFFE0FFFFFFFFE0FFFFFFFFC0FC00000000FE000000007E000000007E000000007F00 -0000003F800003C03F800007E01FC00007E01FE0000FE00FF8001FC007FE003FC007FF80 -FF8003FFFFFF8001FFFFFF00007FFFFC00003FFFF800000FFFE0000001FF0000232A7BA8 -2F>I<000001FF00000007FFC000001FFFE000007FFFE00000FFFFF00000FFFFF00001FF -0FF00003FC0FF00003F807E00007F001800007E000000007E000000007E000000007E000 -000007E000000007E000000007E000000007E000007FFFFFFF80FFFFFFFFC0FFFFFFFFC0 -FFFFFFFFC0FFFFFFFFC07FFFFFFF800007E000000007E000000007E000000007E0000000 -07E000000007E000000007E000000007E000000007E000000007E000000007E000000007 -E000000007E000000007E000000007E000000007E000000007E000000007E000000007E0 -00000007E000000007E000000007E000000007E000000007E000000007E000000007E000 -000007E000003FFFFFFC007FFFFFFE007FFFFFFE007FFFFFFE007FFFFFFE003FFFFFFC00 -24397DB82F>I<0003F801FE00001FFF07FF80007FFFDFFF8000FFFFFFFFC001FFFFFFFF -C003FFFFFFFFC003FE0FFF0F8007F803FC07000FF001FE00000FE000FE00000FC0007E00 -001FC0007F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00 -001F80003F00001FC0007F00000FC0007E00000FE000FE00000FF001FE000007F803FC00 -0003FE0FF8000003FFFFF8000007FFFFF0000007FFFFE000000FFFFFC000000F9FFF0000 -000F83F80000000F80000000000F80000000000F80000000000FC00000000007E4000000 -0007FFFFF0000003FFFFFF000007FFFFFFC0000FFFFFFFE0001FFFFFFFF0003FC0001FF8 -003F000001FC007E000000FE007C0000007E00FC0000003E00F80000003F00F80000001F -00F80000001F00F80000001F00F80000001F00FC0000003F007C0000003E007F000000FE -003F800001FC003FE00007FC001FFE007FF8000FFFFFFFF00007FFFFFFE00001FFFFFF80 -0000FFFFFF0000001FFFF800000003FFC000002A3E7DA72F>I<7FF000000000FFF80000 -0000FFF800000000FFF800000000FFF8000000007FF80000000001F80000000001F80000 -000001F80000000001F80000000001F80000000001F80000000001F80000000001F80000 -000001F80000000001F80000000001F80FF0000001F83FFC000001F8FFFE000001FBFFFF -000001FFFFFF800001FFFFFF800001FFF03FC00001FFC01FC00001FF800FE00001FF000F -E00001FE0007E00001FC0007E00001FC0007E00001FC0007E00001F80007E00001F80007 -E00001F80007E00001F80007E00001F80007E00001F80007E00001F80007E00001F80007 -E00001F80007E00001F80007E00001F80007E00001F80007E00001F80007E00001F80007 -E00001F80007E00001F80007E00001F80007E00001F80007E00001F80007E00001F80007 -E0007FFFE07FFF80FFFFF0FFFFC0FFFFF0FFFFC0FFFFF0FFFFC0FFFFF0FFFFC07FFFE07F -FF802A387EB72F>I<0003800000000FE00000000FE00000001FF00000001FF00000001F -F00000000FE00000000FE000000003800000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000003FFFE000007FFFF000 -007FFFF000007FFFF000007FFFF000003FFFF000000003F000000003F000000003F00000 -0003F000000003F000000003F000000003F000000003F000000003F000000003F0000000 -03F000000003F000000003F000000003F000000003F000000003F000000003F000000003 -F000000003F000000003F000000003F000000003F000000003F000000003F000000003F0 -00000003F000000003F000007FFFFFFF00FFFFFFFF00FFFFFFFF80FFFFFFFF80FFFFFFFF -007FFFFFFF00213979B82F>I<0000038000000FE000000FE000001FF000001FF000001F -F000000FE000000FE0000003800000000000000000000000000000000000000000000000 -0000000000000000000000000000FFFFE000FFFFF001FFFFF001FFFFF000FFFFF000FFFF -F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003 -F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003 -F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003 -F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003 -F0000003F0000003F0000003F0000003F0000003F0000007F0000007E07E000FE07E000F -C0FF001FC0FF003F80FF00FF80FFFFFF007FFFFE007FFFFC003FFFF8000FFFE00001FF80 -001C4E7CB82F>I<7FF000000000FFF800000000FFF800000000FFF800000000FFF80000 -00007FF80000000000F80000000000F80000000000F80000000000F80000000000F80000 -000000F80000000000F80000000000F80000000000F80000000000F80000000000F80000 -000000F807FFFF0000F80FFFFF0000F80FFFFF8000F80FFFFF8000F80FFFFF0000F807FF -FF0000F8003F800000F8007F000000F800FE000000F801FC000000F803F8000000F807F0 -000000F80FE0000000F81FC0000000F83F80000000F87F00000000F8FF00000000F9FF80 -000000FBFF80000000FFFFC0000000FFE7E0000000FFC7F0000000FF83F0000000FF01F8 -000000FE00FC000000FC00FE000000F8007E000000F8003F000000F8001F800000F8001F -800000F8000FC00000F80007E00000F80007F0007FFFF03FFFC0FFFFF87FFFC0FFFFF87F -FFE0FFFFF87FFFE0FFFFF87FFFC07FFFF03FFFC02B387EB72F>I<7FFFF000007FFFF800 -00FFFFF80000FFFFF800007FFFF800007FFFF800000001F800000001F800000001F80000 -0001F800000001F800000001F800000001F800000001F800000001F800000001F8000000 -01F800000001F800000001F800000001F800000001F800000001F800000001F800000001 -F800000001F800000001F800000001F800000001F800000001F800000001F800000001F8 -00000001F800000001F800000001F800000001F800000001F800000001F800000001F800 -000001F800000001F800000001F800000001F800000001F800000001F800000001F80000 -0001F800000001F800000001F800000001F800000001F800007FFFFFFFE07FFFFFFFE0FF -FFFFFFF0FFFFFFFFF07FFFFFFFE07FFFFFFFE024387BB72F>I<0001F801F8007F8FFC0F -FC00FFDFFE1FFE00FFFFFF3FFF00FFFFFFFFFF80FFFFFFFFFF807FFE1FFE1F8007FC0FFC -0FC007F80FF80FC007F007F007C007E007E007C007E007E007C007E007E007C007C007C0 -07C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C0 -07C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C0 -07C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C0 -07C007C007C007C007C007C007C07FFC3FFC3FFCFFFE3FFE3FFEFFFE7FFE7FFEFFFE7FFE -7FFEFFFE3FFE3FFE7FFC3FFC3FFC2F2880A72F>I<00000FF000007FF03FFC0000FFF8FF -FE0000FFFBFFFF0000FFFFFFFF8000FFFFFFFF80007FFFF03FC00001FFC01FC00001FF80 -0FE00001FF000FE00001FE0007E00001FC0007E00001FC0007E00001FC0007E00001F800 -07E00001F80007E00001F80007E00001F80007E00001F80007E00001F80007E00001F800 -07E00001F80007E00001F80007E00001F80007E00001F80007E00001F80007E00001F800 -07E00001F80007E00001F80007E00001F80007E00001F80007E00001F80007E00001F800 -07E00001F80007E0007FFFE07FFF80FFFFF0FFFFC0FFFFF0FFFFC0FFFFF0FFFFC0FFFFF0 -FFFFC07FFFE07FFF802A287EA72F>I<0003FC0000001FFF8000003FFFC00000FFFFF000 -01FFFFF80003FFFFFC0007FE07FE000FF801FF000FE0007F001FC0003F801F80001F803F -80001FC03F00000FC07F00000FE07E000007E07E000007E0FC000003F0FC000003F0FC00 -0003F0FC000003F0FC000003F0FC000003F0FC000003F0FC000003F0FC000003F0FE0000 -07F07E000007E07E000007E07F00000FE07F00000FE03F80001FC03F80001FC01FC0003F -801FE0007F800FF801FF0007FE07FE0003FFFFFC0001FFFFF80000FFFFF000007FFFE000 -001FFF80000003FC0000242A7BA82F>I<00000FF000007FF03FFC0000FFF8FFFF0000FF -FBFFFFC000FFFFFFFFE000FFFFFFFFF0007FFFF03FF00001FFC00FF80001FF8003FC0001 -FF0001FC0001FE0000FE0001FC0000FE0001FC00007F0001F800003F0001F800003F0001 -F800003F8001F800001F8001F800001F8001F800001F8001F800001F8001F800001F8001 -F800001F8001F800001F8001F800001F8001F800003F8001F800003F8001FC00003F0001 -FC00007F0001FC00007F0001FE0000FE0001FE0000FE0001FF0001FC0001FF8007FC0001 -FFC00FF80001FFF03FF00001FFFFFFE00001FFFFFFC00001FBFFFF800001F9FFFF000001 -F87FFC000001F81FE0000001F80000000001F80000000001F80000000001F80000000001 -F80000000001F80000000001F80000000001F80000000001F80000000001F80000000001 -F80000000001F80000000001F8000000007FFFE0000000FFFFF0000000FFFFF0000000FF -FFF0000000FFFFF00000007FFFE0000000293C7EA72F>I<0003FE01E000000FFF83F000 -003FFFE3F00000FFFFF3F00001FFFFFBF00003FFFFFFF00007FF03FFF0000FFC00FFF000 -0FF0003FF0001FE0001FF0003FC0001FF0003F80000FF0007F000007F0007F000007F000 -7E000007F0007E000003F000FE000003F000FC000003F000FC000003F000FC000003F000 -FC000003F000FC000003F000FC000003F000FC000003F000FE000003F000FE000007F000 -7E000007F0007F000007F0007F00000FF0003F80000FF0003F80001FF0001FC0003FF000 -1FF0007FF0000FF800FFF00007FE03FFF00003FFFFFFF00001FFFFFBF00000FFFFF3F000 -007FFFC3F000001FFF03F0000003FC03F00000000003F00000000003F00000000003F000 -00000003F00000000003F00000000003F00000000003F00000000003F00000000003F000 -00000003F00000000003F00000000003F00000000003F000000001FFFFE0000001FFFFE0 -000003FFFFF0000003FFFFF0000001FFFFE0000001FFFFE02C3C7DA72F>I<0000000FF0 -007FFF007FFE007FFF81FFFF00FFFF87FFFF00FFFF8FFFFF807FFF9FFFFF807FFFBFF87F -80001FFFC07F80001FFF003F00001FFE001E00001FFC000000001FF8000000001FF00000 -00001FF0000000001FE0000000001FC0000000001FC0000000001FC0000000001FC00000 -00001F80000000001F80000000001F80000000001F80000000001F80000000001F800000 -00001F80000000001F80000000001F80000000001F80000000001F80000000001F800000 -00001F80000000001F80000000001F800000007FFFFFF800007FFFFFFC0000FFFFFFFC00 -00FFFFFFFC00007FFFFFFC00007FFFFFF8000029287EA72F>I<001FFC0E0001FFFF9F00 -07FFFFFF000FFFFFFF001FFFFFFF003FFFFFFF007FF007FF007F8000FF00FE00007F00FE -00007F00FC00003F00FC00003F00FC00003F00FE00003F007F00001E007FC00000003FFC -0000001FFFF000000FFFFF800003FFFFE00000FFFFF800001FFFFE0000007FFF00000001 -FF800000007F807800001FC0FC00000FC0FC000007E0FC000007E0FE000007E0FE000007 -E0FF000007E0FF80000FE0FFC0001FC0FFE0003FC0FFFC01FF80FFFFFFFF80FFFFFFFF00 -FFFFFFFE00F8FFFFF800F83FFFE0007007FF0000232A7AA82F>I<000F000000001F8000 -00001F800000001F800000001F800000001F800000001F800000001F800000001F800000 -001F800000001F8000007FFFFFFFC0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE07F -FFFFFFC0001F800000001F800000001F800000001F800000001F800000001F800000001F -800000001F800000001F800000001F800000001F800000001F800000001F800000001F80 -0000001F800000001F800000001F800000001F800000001F8000F0001F8001F8001F8001 -F8001F8001F8001F8001F8001F8001F8001FC003F8001FC007F0000FE00FF0000FF81FE0 -0007FFFFC00007FFFFC00003FFFF800001FFFE0000007FF80000001FE00025337EB12F> -I<7FF001FFC000FFF803FFE000FFF803FFE000FFF803FFE000FFF803FFE0007FF801FFE0 -0001F80007E00001F80007E00001F80007E00001F80007E00001F80007E00001F80007E0 -0001F80007E00001F80007E00001F80007E00001F80007E00001F80007E00001F80007E0 -0001F80007E00001F80007E00001F80007E00001F80007E00001F80007E00001F80007E0 -0001F80007E00001F80007E00001F80007E00001F80007E00001F8000FE00001F8000FE0 -0001F8001FE00001F8003FE00001FC007FE00000FF01FFFF8000FFFFFFFFC0007FFFFFFF -C0007FFFFFFFC0003FFFE7FFC0000FFF83FF800003FE0000002A287EA62F>I<7FFF003F -FF80FFFF807FFFC0FFFF807FFFC0FFFF807FFFC0FFFF807FFFC07FFF003FFF8001F00003 -E00001F00003E00001F80007E00000F80007C00000F80007C00000FC000FC000007C000F -8000007C000F8000007C000F8000003E001F0000003E001F0000003E001F0000001F003E -0000001F003E0000001F003E0000000F807C0000000F807C0000000F807C00000007C0F8 -00000007C0F800000007C0F800000003E1F000000003E1F000000003E1F000000001F3E0 -00000001F3E000000001F3E000000000FFC000000000FFC000000000FFC0000000007F80 -000000007F80000000003F0000002A277EA62F>I<7FFF801FFFE07FFFC03FFFE0FFFFC0 -3FFFF0FFFFC03FFFF07FFFC03FFFE07FFF801FFFE007C000003E0007C000003E0007C000 -003E0007E000007E0003E000007C0003E000007C0003E000007C0003E000007C0003E000 -007C0001F00000F80001F00F80F80001F01FC0F80001F03FE0F80001F03FE0F80001F03F -E0F80000F87FF0F00000F87DF1F00000F87DF1F00000F8FDF1F00000F8FDF9F00000F8F9 -F9F0000078F8F9E0000079F8F9E000007DF8F9E000007DF8F9E000007DF079E000007DF0 -7BE000003FF07FC000003FE07FC000003FE03FC000003FE03FC000003FC01FC000001F80 -0F80002C277FA62F>I<3FFF80FFFE007FFFC1FFFF007FFFC1FFFF007FFFC1FFFF007FFF -C1FFFF003FFF80FFFE00007E001F0000003F003F0000003F007E0000001F80FC0000000F -C0FC00000007C1F800000007E3F000000003F3E000000001FFE000000000FFC000000000 -FF80000000007F00000000003F00000000003F00000000007F0000000000FF8000000000 -FFC000000001F3E000000003E3F000000007E1F000000007C0F80000000F80FC0000001F -807E0000003F003E0000003E001F0000007E001F800000FC000FC0007FFF807FFF807FFF -C0FFFF80FFFFC0FFFFC0FFFFC0FFFFC07FFFC0FFFF807FFF807FFF802A277EA62F>I<7F -FF803FFF80FFFF807FFFC0FFFFC07FFFC0FFFFC07FFFC0FFFF807FFFC07FFF803FFF8001 -F00003E00001F80003E00000F80003E00000F80007C00000FC0007C000007C0007C00000 -7E000F8000003E000F8000003E000F8000003F001F0000001F001F0000001F001F000000 -0F803E0000000F803E0000000FC03E00000007C07C00000007C07C00000007E07C000000 -03E0F800000003E0F800000001F0F800000001F0F000000001F1F000000000F9F0000000 -00F9E000000000F9E0000000007BE0000000007FC0000000003FC0000000003FC0000000 -003F80000000001F80000000001F80000000001F00000000001F00000000001F00000000 -003E00000000003E00000000003E00000000007C00000000007C0000000000FC0000000F -00F80000001F81F80000003FC1F80000003FC3F00000003F07E00000003F1FE00000003F -FFC00000001FFF800000001FFF800000000FFE0000000007FC0000000003F0000000002A -3C7EA62F>I<3FFFFFFFF87FFFFFFFFC7FFFFFFFFC7FFFFFFFFC7FFFFFFFFC7FFFFFFFF8 -7E00000FF07E00001FE07E00003FC07E00007F807E0000FF003C0001FE00000003FC0000 -0007F80000000FF00000001FE00000003FC00000007F80000000FF00000001FE00000003 -FC00000007F80000000FF00000001FE00000003FC00000007F80000000FF00003C01FE00 -007E03FC00007E07F800007E0FF000007E1FE000007E3FC000007E7FFFFFFFFEFFFFFFFF -FEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFE7FFFFFFFFC27277DA62F>I<0000003FE0000003 -FFF000000FFFF000001FFFF000007FFFF000007FFFE00000FFE0000000FE00000001FC00 -000001F800000001F800000001F800000001F800000001F800000001F800000001F80000 -0001F800000001F800000001F800000001F800000001F800000001F800000001F8000000 -01F800000001F800000001F800000001F800000001F800000001F800000003F800000007 -F00000003FF000003FFFE00000FFFFC00000FFFF800000FFFE000000FFFF800000FFFFC0 -00003FFFE00000003FF000000007F000000003F800000001F800000001F800000001F800 -000001F800000001F800000001F800000001F800000001F800000001F800000001F80000 -0001F800000001F800000001F800000001F800000001F800000001F800000001F8000000 -01F800000001F800000001F800000001FC00000000FE00000000FFE00000007FFFE00000 -7FFFF000001FFFF000000FFFF0000003FFF00000003FE024477BBE2F>I<7C7CFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE -FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE7C7C07476CBE2F>I< -7FC0000000FFFC000000FFFF000000FFFF800000FFFFE000007FFFE00000007FF0000000 -07F000000003F800000001F800000001F800000001F800000001F800000001F800000001 -F800000001F800000001F800000001F800000001F800000001F800000001F800000001F8 -00000001F800000001F800000001F800000001F800000001F800000001F800000001F800 -000001FC00000000FE00000000FFC00000007FFFC000003FFFF000001FFFF0000007FFF0 -00001FFFF000003FFFF000007FFFC00000FFC0000000FE00000001FC00000001F8000000 -01F800000001F800000001F800000001F800000001F800000001F800000001F800000001 -F800000001F800000001F800000001F800000001F800000001F800000001F800000001F8 -00000001F800000001F800000001F800000001F800000003F800000007F00000007FF000 -007FFFE00000FFFFE00000FFFF800000FFFF000000FFFC0000007FC000000024477BBE2F ->I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fi ecbx1095 10.95 50 -/Fi 50 122 df<0000007FF8000000000FFFFE000000007FFFFF80000001FFC01FC00000 -07FE0003E000001FFC0007F000003FF0001FF800007FE0003FF800007FE0003FF80000FF -C0003FF80000FFC0007FFC0001FF80003FF80001FF80003FF80001FF80003FF80001FF80 -001FF00001FF80000FE00001FF800003800001FF800000000001FF800000000001FF8000 -00000001FF800000000001FF800000000001FF800000000001FF8003FFFC00FFFFFFFFFF -FC00FFFFFFFFFFFC00FFFFFFFFFFFC00FFFFFFFFFFFC0001FF80000FFC0001FF80000FFC -0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC00 -01FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001 -FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF -80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80 -000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF8000 -0FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC007FFFFE03FF -FFF07FFFFE03FFFFF07FFFFE03FFFFF07FFFFE03FFFFF034407EBF3A>28 -D45 D<07801FE03FF07FF8FFFCFFFCFFFCFFFCFFFCFFFC7FF83FF01FE007800E0E79 -8D1D>I<0000000006000000000E000000001E000000001C000000001C000000003C0000 -00003800000000780000000070000000007000000000F000000000E000000001E0000000 -01C000000003C000000003800000000380000000078000000007000000000F000000000E -000000000E000000001E000000001C000000003C00000000380000000038000000007800 -0000007000000000F000000000E000000000E000000001E000000001C000000003C00000 -0003800000000780000000070000000007000000000F000000000E000000001E00000000 -1C000000001C000000003C000000003800000000780000000070000000007000000000F0 -00000000E000000001E000000001C000000001C000000003C00000000380000000078000 -000007000000000F000000000E000000000E000000001E000000001C000000003C000000 -003800000000380000000078000000007000000000F000000000E000000000E000000001 -E000000001C000000003C000000003800000000380000000078000000007000000000F00 -0000000E000000001E000000001C000000001C000000003C000000003800000000780000 -000070000000007000000000F000000000E000000000E000000000275B7AC334>I<0000 -FFE000000007FFFC0000001FFFFF0000007FE0FFC00000FF803FE00001FE000FF00003FE -000FF80007FC0007FC0007F80003FC000FF80003FE001FF80003FF001FF80003FF001FF8 -0003FF003FF00001FF803FF00001FF803FF00001FF807FF00001FFC07FF00001FFC07FF0 -0001FFC07FF00001FFC07FF00001FFC0FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF0 -0001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF0 -0001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF0 -0001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE07FF00001FFC07FF0 -0001FFC07FF00001FFC07FF00001FFC07FF00001FFC03FF00001FF803FF00001FF803FF8 -0003FF801FF80003FF001FF80003FF000FF80003FE000FFC0007FE0007FC0007FC0003FE -000FF80001FF001FF00000FF803FE000007FE0FFC000001FFFFF00000007FFFC00000000 -FFE000002B3D7CBB34>I<00000F000000001F000000007F00000001FF0000000FFF0000 -01FFFF0000FFFFFF0000FFFFFF0000FFF7FF0000FE07FF00000007FF00000007FF000000 -07FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007 -FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF -00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00 -000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF0000 -0007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF000000 -07FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007 -FF00003FFFFFFFF83FFFFFFFF83FFFFFFFF83FFFFFFFF8253C79BB34>I<0003FF800000 -003FFFF8000000FFFFFE000003FFFFFF800007F80FFFC0000FC001FFF0001F8000FFF800 -3F00007FFC007FC0003FFE007FE0003FFE00FFF0001FFF00FFF8001FFF00FFF8001FFF00 -FFF8000FFF80FFF8000FFF80FFF8000FFF80FFF8000FFF807FF0000FFF807FF0000FFF80 -1FC0000FFF800700000FFF800000000FFF000000001FFF000000001FFF000000001FFE00 -0000003FFE000000003FFC000000007FF8000000007FF000000000FFE000000001FFC000 -000001FF8000000003FF0000000007FE000000000FF8000000001FF0000000001FE00000 -00003F80000000007F0000000000FE0000000001F80007800003F00007800007E0000780 -000FC0000F00001F80000F00003E00000F00007C00000F0000F800001F0001F000001F00 -01FFFFFFFF0003FFFFFFFE0007FFFFFFFE000FFFFFFFFE001FFFFFFFFE003FFFFFFFFE00 -7FFFFFFFFE00FFFFFFFFFE00FFFFFFFFFC00FFFFFFFFFC00FFFFFFFFFC00293C7BBB34> -I<0000FFE00000000FFFFC0000003FFFFF800000FF01FFE00001F8007FF00003E0003FF8 -0007C0003FFC000FF0001FFE000FFC001FFE001FFE001FFF001FFE001FFF001FFE001FFF -001FFE001FFF001FFF001FFF001FFE001FFF001FFE001FFF000FFE001FFF0007FC001FFE -0003F0003FFE000000003FFC000000003FFC000000007FF8000000007FF000000000FFE0 -00000001FFC000000003FF000000000FFC00000007FFF000000007FFE000000007FFFE00 -00000001FF80000000007FE0000000003FF8000000001FFC000000001FFE000000000FFF -000000000FFF8000000007FFC000000007FFC000000007FFC007800007FFE01FE00007FF -E07FF80007FFE07FF80007FFE0FFFC0007FFE0FFFC0007FFE0FFFC0007FFE0FFFC0007FF -E0FFFC0007FFC0FFFC0007FFC0FFF8000FFFC07FF8000FFF807FF0000FFF003FC0001FFF -001FC0003FFE000FF0007FFC0007FE01FFF00003FFFFFFE00000FFFFFF8000001FFFFC00 -000001FFC000002B3D7CBB34>I<00000001F00000000001F00000000003F00000000007 -F0000000000FF0000000001FF0000000001FF0000000003FF0000000007FF000000000FF -F000000000FFF000000001FFF000000003FFF000000007FFF00000000FBFF00000000F3F -F00000001E3FF00000003C3FF00000007C3FF0000000783FF0000000F03FF0000001E03F -F0000003E03FF0000003C03FF0000007803FF000000F003FF000001F003FF000003E003F -F000003C003FF0000078003FF00000F0003FF00001F0003FF00001E0003FF00003C0003F -F0000780003FF0000F80003FF0001F00003FF0001E00003FF0003C00003FF0007800003F -F000F800003FF000FFFFFFFFFFF8FFFFFFFFFFF8FFFFFFFFFFF8FFFFFFFFFFF80000007F -F0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007F -F0000000007FF0000000007FF0000000007FF0000000007FF0000001FFFFFFF80001FFFF -FFF80001FFFFFFF80001FFFFFFF82D3C7DBB34>I<0E00000018000FC00000F8000FFC00 -1FF8000FFFFFFFF0000FFFFFFFF0000FFFFFFFE0000FFFFFFFC0000FFFFFFF80000FFFFF -FF00000FFFFFFC00000FFFFFF800000FFFFFE000000FFFFF0000000FFFF80000000F8000 -0000000F80000000000F80000000000F80000000000F80000000000F80000000000F8000 -0000000F80000000000F80000000000F81FFC000000F8FFFF800000FBFFFFE00000FFF01 -FF80000FF8007FE0000FE0003FF0000FC0003FF8000F80001FFC000700001FFC00000000 -1FFE000000000FFE000000000FFF000000000FFF000000000FFF000000000FFF80000000 -0FFF800F00000FFF803FC0000FFF807FE0000FFF80FFF0000FFF80FFF0000FFF80FFF000 -0FFF80FFF0000FFF80FFF0000FFF00FFF0000FFF00FFE0000FFF007FC0001FFE007F8000 -1FFE007C00001FFC003E00003FFC003F00003FF8001F80007FF0000FE000FFE00007FC07 -FFC00001FFFFFF000000FFFFFC0000003FFFF000000007FF000000293D7BBB34>I<0000 -03FE000000003FFFC0000000FFFFF0000003FE01F800000FF8007C00003FE0003E00007F -C001FE0000FF8003FF0001FF8007FF0003FF0007FF0003FE0007FF0007FE0007FF000FFE -0007FF000FFC0007FF001FFC0003FE001FFC0001FC003FFC000000003FFC000000003FF8 -000000007FF8000000007FF8000000007FF8000000007FF83FFC0000FFF87FFF8000FFF9 -FFFFC000FFFBC03FF000FFFB800FF800FFFF000FFC00FFFF0007FE00FFFE0007FF00FFFE -0003FF80FFFC0003FF80FFFC0003FFC0FFFC0003FFC0FFFC0003FFC0FFF80003FFE0FFF8 -0003FFE0FFF80003FFE0FFF80003FFE0FFF80003FFE07FF80003FFE07FF80003FFE07FF8 -0003FFE07FF80003FFE07FF80003FFE03FF80003FFE03FF80003FFE03FF80003FFC01FF8 -0003FFC01FFC0003FFC00FFC0003FF800FFC0007FF8007FE0007FF0003FE0007FE0003FF -000FFC0001FF801FF80000FFE07FF000003FFFFFE000000FFFFF80000003FFFE00000000 -7FE000002B3D7CBB34>I<1E00000000001F00000000001FF0000000001FFFFFFFFFF01F -FFFFFFFFF01FFFFFFFFFF03FFFFFFFFFF03FFFFFFFFFE03FFFFFFFFFC03FFFFFFFFF803F -FFFFFFFF003FFFFFFFFE003FFFFFFFFE007FFFFFFFFC007C000001F8007C000003F00078 -000007E00078000007C0007800000FC0007800001F8000F000003F0000F000007E0000F0 -0000FC0000000000F80000000001F80000000003F00000000007E00000000007E0000000 -000FC0000000001FC0000000001F80000000003F80000000003F80000000007F00000000 -007F0000000000FF0000000000FF0000000001FE0000000001FE0000000003FE00000000 -03FE0000000003FE0000000007FE0000000007FC0000000007FC000000000FFC00000000 -0FFC000000000FFC000000000FFC000000000FFC000000001FFC000000001FFC00000000 -1FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC00000000 -1FFC000000001FFC000000000FF80000000007F00000000003E00000002C3F7ABD34>I< -0000FFE000000007FFFE0000001FFFFF8000007F803FE00000FC000FF00001F00007F800 -03E00003FC0007E00001FE0007C00000FE000FC00000FF000FC000007F000FC000007F00 -1FE000007F001FE000007F001FF000007F001FF800007F001FFC00007F001FFF0000FE00 -1FFFC000FE001FFFE001FE000FFFF803FC000FFFFE03F8000FFFFF87F00007FFFFDFE000 -07FFFFFF800003FFFFFE000001FFFFFF000000FFFFFF8000007FFFFFE000001FFFFFF000 -001FFFFFFC00007FFFFFFE0001FEFFFFFE0003F83FFFFF0007F00FFFFF800FE007FFFF80 -1FC001FFFFC03FC0007FFFC07F80001FFFE07F00000FFFE07F000003FFE0FF000000FFE0 -FE0000007FE0FE0000003FE0FE0000001FE0FE0000001FE0FE0000000FE0FE0000000FE0 -FE0000000FC0FF0000000FC07F0000000FC07F8000001F803FC000001F003FC000003F00 -1FF000007E000FF80001FC0007FF801FF80001FFFFFFE000007FFFFF8000001FFFFE0000 -0001FFE000002B3D7CBB34>I<0000FFE00000000FFFFC0000003FFFFF0000007FC07FC0 -0001FF003FE00003FE001FF00007FE000FF8000FFC000FFC001FFC0007FC003FFC0007FE -003FF80007FF007FF80003FF007FF80003FF007FF80003FF80FFF80003FF80FFF80003FF -80FFF80003FFC0FFF80003FFC0FFF80003FFC0FFF80003FFC0FFF80003FFC0FFF80003FF -E0FFF80003FFE0FFF80003FFE0FFF80003FFE0FFF80003FFE07FF80007FFE07FF80007FF -E07FF80007FFE03FF80007FFE03FF8000FFFE01FFC000FFFE00FFC001FFFE007FE001FFF -E003FE003BFFE001FF807BFFE0007FFFF3FFE0001FFFC3FFE00007FF83FFC000000003FF -C000000003FFC000000003FFC000000003FF8000000007FF8000000007FF8007F00007FF -000FF80007FF001FFC0007FE001FFC000FFE001FFC000FFC001FFC000FFC001FFC001FF8 -001FFC003FF0001FF8007FE0000FF000FFC0000FC001FF800007F807FF000003FFFFFC00 -0001FFFFF00000007FFFC00000000FFC0000002B3D7CBB34>I<07801FE03FF07FF8FFFC -FFFCFFFCFFFCFFFCFFFC7FF83FF01FE00780000000000000000000000000000000000000 -00000000000007801FE03FF07FF8FFFCFFFCFFFCFFFCFFFCFFFC7FF83FF01FE007800E28 -79A71D>I<00000000F80000000000000001FC0000000000000001FC0000000000000003 -FE0000000000000003FE0000000000000003FE0000000000000007FF0000000000000007 -FF000000000000000FFF800000000000000FFF800000000000000FFF800000000000001F -FFC00000000000001FFFC00000000000003FFFE00000000000003FFFE00000000000003F -FFE00000000000007FFFF00000000000007DFFF0000000000000FDFFF8000000000000F8 -FFF8000000000000F8FFF8000000000001F8FFFC000000000001F07FFC000000000003F0 -7FFE000000000003E03FFE000000000003E03FFE000000000007C03FFF000000000007C0 -1FFF00000000000FC01FFF80000000000F800FFF80000000001F800FFFC0000000001F00 -0FFFC0000000001F0007FFC0000000003F0007FFE0000000003E0003FFE0000000007E00 -03FFF0000000007C0003FFF0000000007C0001FFF000000000FC0001FFF800000000F800 -00FFF800000001F80000FFFC00000001F00000FFFC00000001FFFFFFFFFC00000003FFFF -FFFFFE00000003FFFFFFFFFE00000007FFFFFFFFFF00000007C000003FFF00000007C000 -001FFF0000000FC000001FFF8000000F8000000FFF8000001F8000000FFFC000001F0000 -000FFFC000001F00000007FFC000003F00000007FFE000003E00000003FFE000007E0000 -0003FFF000007C00000003FFF000007C00000001FFF00001FE00000001FFF800FFFFFC00 -01FFFFFFF8FFFFFC0001FFFFFFF8FFFFFC0001FFFFFFF8FFFFFC0001FFFFFFF8453F7CBE -4E>65 D<00000007FF80001C000000FFFFF8003C000007FFFFFE007C00003FFFFFFF80FC -0000FFFF003FE1FC0003FFF00007F7FC0007FFC00001FFFC001FFF000000FFFC003FFC00 -00003FFC007FF80000001FFC00FFF00000001FFC01FFE00000000FFC03FFE000000007FC -07FFC000000003FC07FF8000000003FC0FFF8000000001FC0FFF0000000001FC1FFF0000 -000000FC1FFF0000000000FC3FFE0000000000FC3FFE0000000000FC3FFE00000000007C -7FFE00000000007C7FFE00000000007C7FFC0000000000007FFC000000000000FFFC0000 -00000000FFFC000000000000FFFC000000000000FFFC000000000000FFFC000000000000 -FFFC000000000000FFFC000000000000FFFC000000000000FFFC000000000000FFFC0000 -00000000FFFC000000000000FFFC0000000000007FFC0000000000007FFC000000000000 -7FFE0000000000007FFE00000000003C3FFE00000000003C3FFE00000000003C3FFE0000 -0000003C1FFF00000000003C1FFF00000000007C0FFF0000000000780FFF800000000078 -07FF8000000000F807FFC000000000F003FFE000000001F001FFE000000003E000FFF000 -000007C0007FF80000000FC0003FFE0000001F80001FFF0000003F000007FFC00000FE00 -0003FFF00003F8000000FFFF001FF00000003FFFFFFFC000000007FFFFFF0000000000FF -FFF8000000000007FF8000003E407ABE4B>67 D72 DI77 -D<0000003FFE00000000000003FFFFE000000000001FFFFFFC0000000000FFF007FF8000 -000001FF8000FFC000000007FF00007FF00000000FFC00001FF80000003FF800000FFE00 -00007FF0000007FF000000FFE0000003FF800001FFC0000001FFC00001FFC0000001FFC0 -0003FF80000000FFE00007FF80000000FFF0000FFF000000007FF8000FFF000000007FF8 -001FFF000000007FFC001FFE000000003FFC001FFE000000003FFC003FFE000000003FFE -003FFE000000003FFE003FFE000000003FFE007FFC000000001FFF007FFC000000001FFF -007FFC000000001FFF007FFC000000001FFF00FFFC000000001FFF80FFFC000000001FFF -80FFFC000000001FFF80FFFC000000001FFF80FFFC000000001FFF80FFFC000000001FFF -80FFFC000000001FFF80FFFC000000001FFF80FFFC000000001FFF80FFFC000000001FFF -80FFFC000000001FFF80FFFC000000001FFF80FFFC000000001FFF807FFC000000001FFF -007FFC000000001FFF007FFE000000003FFF007FFE000000003FFF003FFE000000003FFE -003FFE000000003FFE003FFE000000003FFE001FFF000000007FFC001FFF000000007FFC -000FFF000000007FF8000FFF80000000FFF80007FF80000000FFF00003FFC0000001FFE0 -0003FFE0000003FFE00001FFE0000003FFC00000FFF0000007FF8000007FF800000FFF00 -00003FFC00001FFE0000001FFF00007FFC00000007FFC001FFF000000003FFF007FFE000 -000000FFFFFFFF80000000001FFFFFFC000000000007FFFFF00000000000003FFE000000 -0041407ABE4E>79 DI82 -D<0001FF8001C0001FFFF803C0007FFFFE07C001FFFFFF8FC003FF007FDFC007F8000FFF -C00FF00003FFC01FE00001FFC03FC000007FC03FC000003FC07FC000003FC07F8000001F -C07F8000000FC0FF8000000FC0FF80000007C0FF80000007C0FFC0000007C0FFC0000007 -C0FFE0000003C0FFE0000003C0FFF0000003C0FFFC00000000FFFF000000007FFFF80000 -007FFFFF8000007FFFFFFC00003FFFFFFF80001FFFFFFFE0001FFFFFFFF8000FFFFFFFFC -0007FFFFFFFE0003FFFFFFFF0001FFFFFFFF80007FFFFFFFC0001FFFFFFFC00007FFFFFF -E000007FFFFFE0000003FFFFF00000001FFFF000000003FFF000000000FFF8000000007F -F8000000003FF8F00000003FF8F00000001FF8F00000001FF8F00000000FF8F00000000F -F8F80000000FF8F80000000FF8F80000000FF0FC0000000FF0FE0000000FF0FE0000001F -E0FF0000001FE0FF8000003FC0FFE000003FC0FFF000007F80FFFE0001FF00FEFFE007FE -00FC3FFFFFF800F80FFFFFF000F003FFFF8000E0001FFC00002D407ABE3A>I<3FFFFFFF -FFFFFFF83FFFFFFFFFFFFFF83FFFFFFFFFFFFFF83FFFFFFFFFFFFFF83FFC007FFC007FF8 -3FE0007FFC000FF87F80007FFC0003FC7F00007FFC0001FC7E00007FFC0000FC7E00007F -FC0000FC7C00007FFC00007C7C00007FFC00007C7800007FFC00003C7800007FFC00003C -7800007FFC00003C7800007FFC00003C7800007FFC00003CF000007FFC00001EF000007F -FC00001EF000007FFC00001EF000007FFC00001EF000007FFC00001E0000007FFC000000 -0000007FFC0000000000007FFC0000000000007FFC0000000000007FFC0000000000007F -FC0000000000007FFC0000000000007FFC0000000000007FFC0000000000007FFC000000 -0000007FFC0000000000007FFC0000000000007FFC0000000000007FFC0000000000007F -FC0000000000007FFC0000000000007FFC0000000000007FFC0000000000007FFC000000 -0000007FFC0000000000007FFC0000000000007FFC0000000000007FFC0000000000007F -FC0000000000007FFC0000000000007FFC0000000000007FFC0000000000007FFC000000 -0000007FFC0000000000007FFC0000000000007FFC0000000000007FFC0000000000007F -FC0000000000007FFC0000000000007FFC000000001FFFFFFFFFF000001FFFFFFFFFF000 -001FFFFFFFFFF000001FFFFFFFFFF0003F3D7CBC48>I<7FFFFFFFFFFFFFF8FFFFFFFFFF -FFFFFCFFFFFFFFFFFFFFFCFFFFFFFFFFFFFFFCFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFF83E -06776851>95 D<0007FF800000003FFFF0000001FFFFFC000003FC03FF000007E000FFC0 -000FF8007FE0001FF8003FF0001FFC003FF0001FFC001FF8001FFC001FF8001FFC000FFC -001FFC000FFC000FF8000FFC0007F0000FFC0001C0000FFC000000000FFC000000000FFC -000000000FFC00000003FFFC000001FFFFFC00000FFFFFFC00007FFF8FFC0001FFF00FFC -0007FF800FFC000FFF000FFC001FFC000FFC003FF8000FFC007FF8000FFC007FF0000FFC -00FFF0000FFC00FFE0000FFC00FFE0000FFC00FFE0000FFC00FFE0001FFC00FFE0001FFC -00FFF0003FFC007FF0003FFC007FF8007FFF003FFC01F7FFFC1FFE07E3FFFC07FFFF81FF -FC01FFFE007FFC001FF80000002E2B7DA932>97 D<00FF0000000000FFFF0000000000FF -FF0000000000FFFF0000000000FFFF000000000007FF000000000003FF000000000003FF -000000000003FF000000000003FF000000000003FF000000000003FF000000000003FF00 -0000000003FF000000000003FF000000000003FF000000000003FF000000000003FF0000 -00000003FF000000000003FF000000000003FF000000000003FF000000000003FF007FE0 -000003FF07FFFC000003FF1FFFFF000003FF7F00FFC00003FFF8003FF00003FFF0001FF8 -0003FFE0000FFC0003FF800007FE0003FF800007FF0003FF000003FF0003FF000003FF80 -03FF000003FF8003FF000003FFC003FF000001FFC003FF000001FFC003FF000001FFC003 -FF000001FFE003FF000001FFE003FF000001FFE003FF000001FFE003FF000001FFE003FF -000001FFE003FF000001FFE003FF000001FFE003FF000001FFE003FF000001FFE003FF00 -0001FFC003FF000001FFC003FF000001FFC003FF000003FFC003FF000003FF8003FF0000 -03FF8003FF000007FF0003FF800007FE0003FFC0000FFE0003FFE0000FFC0003FDF0001F -F80003F8F8007FE00003F07F01FFC00003E01FFFFF000003C007FFF80000000000FFC000 -0033407DBE3A>I<00007FF0000003FFFF00001FFFFFC0007FE01FE000FF8003F001FF00 -0FF803FE000FFC07FE001FFC0FFC001FFC1FFC001FFC1FF8001FFC3FF8001FFC3FF8000F -F87FF80007F07FF00001C07FF0000000FFF0000000FFF0000000FFF0000000FFF0000000 -FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF00000007F -F00000007FF00000007FF80000007FF80000003FF800001E3FFC00001E1FFC00003E0FFC -00003C0FFE00007C07FF0000F803FF8001F000FFC003E0007FF00FC0001FFFFF000007FF -FC0000007FE000272B7DA92E>I<0000000007F80000000007FFF80000000007FFF80000 -000007FFF80000000007FFF800000000003FF800000000001FF800000000001FF8000000 -00001FF800000000001FF800000000001FF800000000001FF800000000001FF800000000 -001FF800000000001FF800000000001FF800000000001FF800000000001FF80000000000 -1FF800000000001FF800000000001FF800000000001FF80000007FE01FF8000003FFFC1F -F800001FFFFF1FF800007FF00FDFF80000FFC003FFF80003FF0000FFF80007FE00007FF8 -000FFE00003FF8000FFC00001FF8001FFC00001FF8003FF800001FF8003FF800001FF800 -7FF800001FF8007FF000001FF8007FF000001FF8007FF000001FF800FFF000001FF800FF -F000001FF800FFF000001FF800FFF000001FF800FFF000001FF800FFF000001FF800FFF0 -00001FF800FFF000001FF800FFF000001FF800FFF000001FF8007FF000001FF8007FF000 -001FF8007FF000001FF8007FF800001FF8003FF800001FF8003FF800001FF8001FF80000 -1FF8001FFC00003FF8000FFC00007FF80007FE0000FFF80003FF0001FFFC0001FF8007FF -FFE0007FE01F9FFFE0001FFFFE1FFFE00007FFF81FFFE000007FC01FE00033407DBE3A> -I<0000FFE0000007FFFC00003FFFFF00007FE0FF8001FF803FC003FF001FE007FE000FF0 -0FFC000FF80FFC0007FC1FF80007FC3FF80003FE3FF80003FE3FF80003FE7FF00003FE7F -F00003FF7FF00003FFFFF00001FFFFF00001FFFFF00001FFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFF0000000FFF0000000FFF0000000FFF0000000FFF00000007FF00000007FF000 -00007FF00000003FF80000003FF800000F1FF800000F1FFC00001F0FFC00001E07FE0000 -3E03FE00007C01FF0000F800FFC003F0007FF01FE0001FFFFFC00007FFFE0000007FF000 -282B7DA92F>I<000007FC0000007FFF000001FFFFC00007FE1FE0001FF83FE0003FF07F -F0007FE07FF0007FE07FF000FFC07FF000FFC07FF001FF807FF001FF803FE001FF800F80 -01FF80000001FF80000001FF80000001FF80000001FF80000001FF80000001FF80000001 -FF80000001FF80000001FF80000001FF800000FFFFFFE000FFFFFFE000FFFFFFE000FFFF -FFE00001FF80000001FF80000001FF80000001FF80000001FF80000001FF80000001FF80 -000001FF80000001FF80000001FF80000001FF80000001FF80000001FF80000001FF8000 -0001FF80000001FF80000001FF80000001FF80000001FF80000001FF80000001FF800000 -01FF80000001FF80000001FF80000001FF80000001FF80000001FF80000001FF80000001 -FF80000001FF80000001FF80000001FF8000007FFFFF80007FFFFF80007FFFFF80007FFF -FF800024407DBF20>I<0003FF8003F0003FFFF81FFC00FFFFFE7FFE03FF01FFFCFE07FC -007FE1FE0FFC007FE0FE1FF8003FF0FE3FF8003FF87C3FF0001FF8003FF0001FF8007FF0 -001FFC007FF0001FFC007FF0001FFC007FF0001FFC007FF0001FFC007FF0001FFC007FF0 -001FFC003FF0001FF8003FF0001FF8003FF8003FF8001FF8003FF0000FFC007FE00007FC -007FC00007FF01FF800007FFFFFE00000F3FFFF800000F03FF8000001E00000000001E00 -000000001F00000000001F00000000001F00000000001F80000000001FC0000000001FFF -FFFF00000FFFFFFFF0000FFFFFFFFC0007FFFFFFFF0007FFFFFFFF8003FFFFFFFFC003FF -FFFFFFE00FFFFFFFFFE01FC00001FFF03F8000001FF07F0000000FF87F00000007F8FE00 -000007F8FE00000003F8FE00000003F8FE00000003F8FE00000003F8FF00000007F87F00 -000007F07F8000000FF03FC000001FE01FE000003FC00FF80000FF8003FF800FFE0000FF -FFFFF800001FFFFFC0000001FFFC00002F3D7DA834>I<00FF0000000000FFFF00000000 -00FFFF0000000000FFFF0000000000FFFF000000000007FF000000000003FF0000000000 -03FF000000000003FF000000000003FF000000000003FF000000000003FF000000000003 -FF000000000003FF000000000003FF000000000003FF000000000003FF000000000003FF -000000000003FF000000000003FF000000000003FF000000000003FF000000000003FF00 -3FF0000003FF00FFFE000003FF03FFFF800003FF0FC0FFC00003FF1E007FE00003FF3C00 -3FF00003FF78003FF00003FFF0003FF00003FFE0001FF80003FFC0001FF80003FFC0001F -F80003FF80001FF80003FF80001FF80003FF80001FF80003FF00001FF80003FF00001FF8 -0003FF00001FF80003FF00001FF80003FF00001FF80003FF00001FF80003FF00001FF800 -03FF00001FF80003FF00001FF80003FF00001FF80003FF00001FF80003FF00001FF80003 -FF00001FF80003FF00001FF80003FF00001FF80003FF00001FF80003FF00001FF80003FF -00001FF80003FF00001FF80003FF00001FF80003FF00001FF80003FF00001FF80003FF00 -001FF800FFFFFC07FFFFE0FFFFFC07FFFFE0FFFFFC07FFFFE0FFFFFC07FFFFE0333F7CBE -3A>I<01F80003FC0007FE000FFF001FFF801FFF801FFF801FFF801FFF801FFF800FFF00 -07FE0003FC0001F800000000000000000000000000000000000000000000000000000000 -00FF00FFFF00FFFF00FFFF00FFFF0007FF0003FF0003FF0003FF0003FF0003FF0003FF00 -03FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00 -03FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00 -03FF00FFFFF8FFFFF8FFFFF8FFFFF815407CBF1D>I<00001F8000003FC000007FE00000 -FFF00001FFF80001FFF80001FFF80001FFF80001FFF80001FFF80000FFF000007FE00000 -3FC000001F80000000000000000000000000000000000000000000000000000000000000 -000000000000000007F8000FFFF8000FFFF8000FFFF8000FFFF800003FF800001FF80000 -1FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF80000 -1FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF80000 -1FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF80000 -1FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF80000 -1FF800001FF800001FF81F001FF83F801FF87FC01FF8FFE01FF0FFE03FF0FFE03FF0FFE0 -3FE0FFE07FC07FC07F807F80FF003F81FE001FFFFC0007FFF00000FF80001D5385BF20> -I<00FF00FFFF00FFFF00FFFF00FFFF0007FF0003FF0003FF0003FF0003FF0003FF0003FF -0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF -0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF -0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF -0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00FFFF -FCFFFFFCFFFFFCFFFFFC163F7CBE1D>108 D<01FE003FF00001FF8000FFFE00FFFE0007 -FFF000FFFE03FFFF801FFFFC00FFFE0FC0FFC07E07FE00FFFE1E007FE0F003FF0007FE3C -003FF1E001FF8003FE78003FF3C001FF8003FEF0003FF78001FF8003FFE0001FFF0000FF -C003FFC0001FFE0000FFC003FFC0001FFE0000FFC003FF80001FFC0000FFC003FF80001F -FC0000FFC003FF80001FFC0000FFC003FF00001FF80000FFC003FF00001FF80000FFC003 -FF00001FF80000FFC003FF00001FF80000FFC003FF00001FF80000FFC003FF00001FF800 -00FFC003FF00001FF80000FFC003FF00001FF80000FFC003FF00001FF80000FFC003FF00 -001FF80000FFC003FF00001FF80000FFC003FF00001FF80000FFC003FF00001FF80000FF -C003FF00001FF80000FFC003FF00001FF80000FFC003FF00001FF80000FFC003FF00001F -F80000FFC003FF00001FF80000FFC003FF00001FF80000FFC003FF00001FF80000FFC003 -FF00001FF80000FFC003FF00001FF80000FFC003FF00001FF80000FFC0FFFFFC07FFFFE0 -3FFFFFFFFFFC07FFFFE03FFFFFFFFFFC07FFFFE03FFFFFFFFFFC07FFFFE03FFFFF50297C -A857>I<01FE003FF00000FFFE00FFFE0000FFFE03FFFF8000FFFE0FC0FFC000FFFE1E00 -7FE00007FE3C003FF00003FE78003FF00003FEF0003FF00003FFE0001FF80003FFC0001F -F80003FFC0001FF80003FF80001FF80003FF80001FF80003FF80001FF80003FF00001FF8 -0003FF00001FF80003FF00001FF80003FF00001FF80003FF00001FF80003FF00001FF800 -03FF00001FF80003FF00001FF80003FF00001FF80003FF00001FF80003FF00001FF80003 -FF00001FF80003FF00001FF80003FF00001FF80003FF00001FF80003FF00001FF80003FF -00001FF80003FF00001FF80003FF00001FF80003FF00001FF80003FF00001FF80003FF00 -001FF80003FF00001FF800FFFFFC07FFFFE0FFFFFC07FFFFE0FFFFFC07FFFFE0FFFFFC07 -FFFFE033297CA83A>I<00007FF000000003FFFE0000001FFFFFC000007FE03FF00000FF -800FF80001FF0007FC0003FE0003FE0007FC0001FF000FF80000FF801FF80000FFC01FF8 -0000FFC03FF80000FFE03FF000007FE07FF000007FF07FF000007FF07FF000007FF07FF0 -00007FF0FFF000007FF8FFF000007FF8FFF000007FF8FFF000007FF8FFF000007FF8FFF0 -00007FF8FFF000007FF8FFF000007FF8FFF000007FF8FFF000007FF87FF000007FF07FF0 -00007FF07FF000007FF07FF000007FF03FF80000FFE03FF80000FFE01FF80000FFC00FF8 -0000FF800FFC0001FF8007FE0003FF0003FF0007FE0001FF800FFC00007FE03FF000001F -FFFFC0000007FFFF000000007FF000002D2B7DA934>I<00FF007FE00000FFFF07FFFC00 -00FFFF1FFFFF0000FFFF7F01FFC000FFFFF8007FF00007FFF0003FF80003FFE0001FFC00 -03FF80000FFE0003FF80000FFF0003FF000007FF0003FF000007FF8003FF000003FF8003 -FF000003FFC003FF000003FFC003FF000003FFC003FF000001FFC003FF000001FFE003FF -000001FFE003FF000001FFE003FF000001FFE003FF000001FFE003FF000001FFE003FF00 -0001FFE003FF000001FFE003FF000001FFE003FF000001FFE003FF000001FFC003FF0000 -03FFC003FF000003FFC003FF000003FFC003FF000007FF8003FF000007FF8003FF000007 -FF0003FF80000FFE0003FFC0001FFE0003FFE0001FFC0003FFF0003FF80003FFF800FFE0 -0003FF7F03FFC00003FF1FFFFF000003FF07FFF8000003FF00FFC0000003FF0000000000 -03FF000000000003FF000000000003FF000000000003FF000000000003FF000000000003 -FF000000000003FF000000000003FF000000000003FF000000000003FF000000000003FF -000000000003FF0000000000FFFFFC00000000FFFFFC00000000FFFFFC00000000FFFFFC -00000000333B7DA83A>I<00007FE00078000003FFFC00F800001FFFFE01F800007FF81F -81F80000FFE007C3F80001FF8001E3F80007FF0000F7F80007FF0000FFF8000FFE00007F -F8001FFC00003FF8003FFC00003FF8003FFC00001FF8003FF800001FF8007FF800001FF8 -007FF800001FF8007FF000001FF800FFF000001FF800FFF000001FF800FFF000001FF800 -FFF000001FF800FFF000001FF800FFF000001FF800FFF000001FF800FFF000001FF800FF -F000001FF800FFF000001FF8007FF000001FF8007FF800001FF8007FF800001FF8007FF8 -00001FF8003FF800001FF8003FFC00001FF8001FFC00003FF8000FFE00007FF8000FFE00 -00FFF80007FF0000FFF80003FF8003FFF80001FFC007DFF800007FF03F9FF800001FFFFE -1FF8000007FFF81FF80000007FC01FF800000000001FF800000000001FF800000000001F -F800000000001FF800000000001FF800000000001FF800000000001FF800000000001FF8 -00000000001FF800000000001FF800000000001FF800000000001FF800000000001FF800 -00000007FFFFE000000007FFFFE000000007FFFFE000000007FFFFE0333B7DA837>I<01 -FE01FC00FFFE07FF80FFFE0FFFE0FFFE3F1FF0FFFE3C1FF007FE783FF803FEF03FF803FE -E03FF803FFE03FF803FFC03FF803FFC01FF003FF800FE003FF80038003FF80000003FF80 -000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF0000 -0003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF000000 -03FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003 -FF000000FFFFFF0000FFFFFF0000FFFFFF0000FFFFFF000025297DA82B>I<001FF80E00 -01FFFF3E0007FFFFFE000FE007FE001F8001FE003F0000FE007E00007E007C00003E00FC -00003E00FC00001E00FC00001E00FE00001E00FF00001E00FF80000000FFE0000000FFFF -0000007FFFFC00007FFFFF80003FFFFFE0001FFFFFF8000FFFFFFC0003FFFFFE0000FFFF -FF00003FFFFF000003FFFF8000000FFF80000001FFC0F000007FC0F000003FC0F800001F -C0F800001FC0F800000FC0FC00000FC0FC00000FC0FE00000F80FE00001F80FF00001F00 -FF80003F00FFE0007E00FFF803FC00FCFFFFF000F03FFFC000E007FE0000222B7DA929> -I<0007800000078000000780000007800000078000000F8000000F8000000F8000000F80 -00001F8000001F8000001F8000003F8000007F8000007F800000FF800001FF800007FF80 -001FFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC01FF800001FF800001FF800001FF800001FF80 -0001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF80 -0001FF800001FF800001FF800001FF800001FF800001FF800001FF801E01FF801E01FF80 -1E01FF801E01FF801E01FF801E01FF801E01FF801E01FF801E00FF803C00FFC03C00FFC0 -3C007FE078003FF0F0001FFFE00007FFC00000FF001F3B7EB928>I<00FF000007F800FF -FF0007FFF800FFFF0007FFF800FFFF0007FFF800FFFF0007FFF80007FF00003FF80003FF -00001FF80003FF00001FF80003FF00001FF80003FF00001FF80003FF00001FF80003FF00 -001FF80003FF00001FF80003FF00001FF80003FF00001FF80003FF00001FF80003FF0000 -1FF80003FF00001FF80003FF00001FF80003FF00001FF80003FF00001FF80003FF00001F -F80003FF00001FF80003FF00001FF80003FF00001FF80003FF00001FF80003FF00001FF8 -0003FF00001FF80003FF00001FF80003FF00001FF80003FF00003FF80003FF00003FF800 -03FF00003FF80003FF00007FF80001FF0000FFF80001FF0000FFF80001FF8001FFFC0000 -FF8007DFFFE0007FE01F9FFFE0001FFFFE1FFFE00007FFF81FFFE00000FFE01FE000332A -7CA83A>IIIII -E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fj ecbx1440 14.4 49 -/Fj 49 122 df<000000007FFC0000000000001FFFFF800000000001FFFFFFE000000000 -07FFFFFFF8000000003FFFC00FFC00000000FFFC0001FE00000001FFF000007F00000007 -FFC00003FF0000000FFF800007FF8000001FFF00000FFF8000003FFF00000FFF8000003F -FE00000FFF8000007FFC00000FFF8000007FFC00001FFFC00000FFFC00000FFF800000FF -F800000FFF800000FFF800000FFF800000FFF8000007FF000000FFF8000003FE000000FF -F8000000F8000000FFF800000000000000FFF800000000000000FFF800000000000000FF -F800000000000000FFF800000000000000FFF800000000000000FFF800000000000000FF -F800000000000000FFF800000000000000FFF800000000000000FFF80007FFFFC000FFFF -FFFFFFFFFFC000FFFFFFFFFFFFFFC000FFFFFFFFFFFFFFC000FFFFFFFFFFFFFFC000FFFF -FFFFFFFFFFC00000FFF800000FFFC00000FFF8000007FFC00000FFF8000007FFC00000FF -F8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FF -F8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FF -F8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FF -F8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FF -F8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FF -F8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FF -F8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FF -F8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FF -F8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FF -F8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC000FFFF -FFF807FFFFFFC0FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC0FFFF -FFF807FFFFFFC042547DD349>28 D45 D<07E01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF8 -07E01010768F25>I<000000000000C0000000000001E0000000000003E0000000000003 -E0000000000003C0000000000007C0000000000007C000000000000F8000000000000F80 -00000000000F0000000000001F0000000000001F0000000000003E0000000000003E0000 -000000003C0000000000007C0000000000007C000000000000F8000000000000F8000000 -000000F0000000000001F0000000000001F0000000000003E0000000000003E000000000 -0007C0000000000007C00000000000078000000000000F8000000000000F800000000000 -1F0000000000001F0000000000001E0000000000003E0000000000003E0000000000007C -0000000000007C00000000000078000000000000F8000000000000F8000000000001F000 -0000000001F0000000000001E0000000000003E0000000000003E0000000000007C00000 -00000007C00000000000078000000000000F8000000000000F8000000000001F00000000 -00001F0000000000001E0000000000003E0000000000003E0000000000007C0000000000 -007C00000000000078000000000000F8000000000000F8000000000001F0000000000001 -F0000000000003E0000000000003E0000000000003C0000000000007C0000000000007C0 -00000000000F8000000000000F8000000000000F0000000000001F0000000000001F0000 -000000003E0000000000003E0000000000003C0000000000007C0000000000007C000000 -000000F8000000000000F8000000000000F0000000000001F0000000000001F000000000 -0003E0000000000003E0000000000003C0000000000007C0000000000007C00000000000 -0F8000000000000F8000000000000F0000000000001F0000000000001F0000000000003E -0000000000003E0000000000003C0000000000007C0000000000007C000000000000F800 -0000000000F8000000000001F0000000000001F0000000000001E0000000000003E00000 -00000003E0000000000007C0000000000007C00000000000078000000000000F80000000 -00000F8000000000001F0000000000001F0000000000001E0000000000003E0000000000 -003E0000000000007C0000000000007C00000000000078000000000000F8000000000000 -F8000000000000F000000000000060000000000000337879D942>I<000003FF80000000 -003FFFF800000001FFFFFF00000007FFFFFFC000000FFF01FFE000003FFC007FF800007F -F0001FFC0000FFE0000FFE0001FFC00007FF0001FF800003FF0003FF800003FF8007FF00 -0001FFC007FF000001FFC00FFE000000FFE00FFE000000FFE01FFE000000FFF01FFE0000 -00FFF01FFE000000FFF03FFE000000FFF83FFE000000FFF83FFC0000007FF83FFC000000 -7FF87FFC0000007FFC7FFC0000007FFC7FFC0000007FFC7FFC0000007FFC7FFC0000007F -FC7FFC0000007FFCFFFC0000007FFEFFFC0000007FFEFFFC0000007FFEFFFC0000007FFE -FFFC0000007FFEFFFC0000007FFEFFFC0000007FFEFFFC0000007FFEFFFC0000007FFEFF -FC0000007FFEFFFC0000007FFEFFFC0000007FFEFFFC0000007FFEFFFC0000007FFEFFFC -0000007FFEFFFC0000007FFEFFFC0000007FFEFFFC0000007FFEFFFC0000007FFEFFFC00 -00007FFEFFFC0000007FFEFFFC0000007FFEFFFC0000007FFE7FFC0000007FFC7FFC0000 -007FFC7FFC0000007FFC7FFC0000007FFC7FFC0000007FFC7FFC0000007FFC3FFC000000 -7FF83FFE000000FFF83FFE000000FFF83FFE000000FFF81FFE000000FFF01FFE000000FF -F01FFE000000FFF00FFE000000FFE00FFF000001FFE007FF000001FFC007FF000001FFC0 -03FF800003FF8001FF800003FF0001FFC00007FF0000FFE0000FFE00007FF0001FFC0000 -3FFC007FF800000FFF01FFE0000007FFFFFFC0000001FFFFFF000000003FFFF800000000 -03FF800000374F7BCD42>I<0000001E00000000003E0000000000FE0000000003FE0000 -00000FFE000000007FFE00000007FFFE000003FFFFFE0000FFFFFFFE0000FFFFFFFE0000 -FFFFFFFE0000FFF87FFE0000FC007FFE000000007FFE000000007FFE000000007FFE0000 -00007FFE000000007FFE000000007FFE000000007FFE000000007FFE000000007FFE0000 -00007FFE000000007FFE000000007FFE000000007FFE000000007FFE000000007FFE0000 -00007FFE000000007FFE000000007FFE000000007FFE000000007FFE000000007FFE0000 -00007FFE000000007FFE000000007FFE000000007FFE000000007FFE000000007FFE0000 -00007FFE000000007FFE000000007FFE000000007FFE000000007FFE000000007FFE0000 -00007FFE000000007FFE000000007FFE000000007FFE000000007FFE000000007FFE0000 -00007FFE000000007FFE000000007FFE000000007FFE000000007FFE000000007FFE0000 -00007FFE000000007FFE000000007FFE000000007FFE000000007FFE000000007FFE0000 -00007FFE000000007FFE000000007FFE000000007FFE000000007FFE000000007FFE0000 -00007FFE000000007FFE000000007FFE00007FFFFFFFFFFC7FFFFFFFFFFC7FFFFFFFFFFC -7FFFFFFFFFFC7FFFFFFFFFFC2E4E76CD42>I<00001FFE0000000001FFFFF00000000FFF -FFFC0000003FFFFFFF8000007FFFFFFFE00001FF803FFFF00003FC0007FFFC0007F00001 -FFFE000FE00000FFFF001F8000007FFF803F0000003FFF803F0000001FFFC07FE000001F -FFE07FF800000FFFE07FFC00000FFFF0FFFC000007FFF0FFFE000007FFF0FFFE000003FF -F8FFFE000003FFF8FFFE000003FFF8FFFE000003FFF8FFFE000003FFF87FFC000003FFF8 -7FFC000003FFF83FF8000003FFF81FF0000003FFF80380000003FFF80000000003FFF000 -00000007FFF00000000007FFF00000000007FFE0000000000FFFE0000000000FFFC00000 -00001FFFC0000000001FFF80000000003FFF00000000003FFE00000000007FFC00000000 -00FFF80000000000FFF00000000001FFE00000000003FFC00000000007FF800000000007 -FF00000000000FFC00000000001FF800000000003FF000000000007FC00000000000FF80 -0000000001FF000000000003FC000000000007F800000000000FF00000F800001FE00000 -F800003FC00000F800007F000000F80000FE000001F00001FC000001F00003F8000001F0 -0007F0000001F00007E0000001F0000F80000003F0001F00000003F0003E00000007F000 -7FFFFFFFFFF000FFFFFFFFFFE001FFFFFFFFFFE003FFFFFFFFFFE007FFFFFFFFFFE00FFF -FFFFFFFFE01FFFFFFFFFFFE03FFFFFFFFFFFE07FFFFFFFFFFFE0FFFFFFFFFFFFE0FFFFFF -FFFFFFC0FFFFFFFFFFFFC0FFFFFFFFFFFFC0FFFFFFFFFFFFC0354E7ACD42>I<000007FF -C0000000007FFFFC00000003FFFFFF8000000FFFFFFFE000001FF803FFF800007FC000FF -FC0000FE00003FFE0001FC00003FFF0003F800001FFF8003FE00001FFF8007FF80000FFF -C007FFC0000FFFC00FFFC0000FFFE00FFFE0000FFFE00FFFE0000FFFE00FFFE0000FFFE0 -0FFFE0000FFFE00FFFE0000FFFE00FFFE0000FFFE007FFC0000FFFE007FFC0000FFFC003 -FF80000FFFC001FF00001FFFC0003800001FFF80000000001FFF80000000003FFF000000 -00003FFF00000000007FFE00000000007FFC0000000000FFF80000000001FFF000000000 -03FFC0000000000FFF80000000007FFE000000007FFFF8000000007FFFC0000000007FFF -FC000000007FFFFF800000000003FFE000000000007FF800000000003FFE00000000001F -FF00000000000FFF80000000000FFFC00000000007FFE00000000007FFF00000000003FF -F80000000003FFF80000000003FFFC0000000001FFFC0000000001FFFC0000000001FFFE -0000000001FFFE0000000001FFFE03C0000001FFFE0FF0000001FFFE3FFC000001FFFE7F -FE000001FFFE7FFE000001FFFEFFFF000001FFFEFFFF000001FFFEFFFF000001FFFCFFFF -000001FFFCFFFF000003FFFCFFFF000003FFF8FFFF000003FFF87FFE000003FFF07FFC00 -0007FFF07FF8000007FFE03FE000000FFFC01FC000001FFFC00FF000003FFF8007FE0000 -7FFE0003FFE003FFFC0001FFFFFFFFF800007FFFFFFFE000000FFFFFFF00000001FFFFFC -000000001FFF800000374F7BCD42>I<0000000000FC00000000000001FC000000000000 -01FC00000000000003FC00000000000007FC0000000000000FFC0000000000000FFC0000 -000000001FFC0000000000003FFC0000000000007FFC0000000000007FFC000000000000 -FFFC000000000001FFFC000000000003FFFC000000000003FFFC000000000007FFFC0000 -0000000FFFFC00000000001FFFFC00000000001F7FFC00000000003E7FFC00000000007E -7FFC0000000000FC7FFC0000000000F87FFC0000000001F07FFC0000000003F07FFC0000 -000007E07FFC0000000007C07FFC000000000F807FFC000000001F807FFC000000003F00 -7FFC000000003E007FFC000000007C007FFC00000000FC007FFC00000001F8007FFC0000 -0001F0007FFC00000003E0007FFC00000007E0007FFC0000000FC0007FFC0000000F8000 -7FFC0000001F00007FFC0000003F00007FFC0000007E00007FFC0000007C00007FFC0000 -00F800007FFC000001F800007FFC000003F000007FFC000003E000007FFC000007C00000 -7FFC00000FC000007FFC00001F8000007FFC00001F0000007FFC00003E0000007FFC0000 -7E0000007FFC0000FC0000007FFC0000FFFFFFFFFFFFFF80FFFFFFFFFFFFFF80FFFFFFFF -FFFFFF80FFFFFFFFFFFFFF80FFFFFFFFFFFFFF8000000000FFFC000000000000FFFC0000 -00000000FFFC000000000000FFFC000000000000FFFC000000000000FFFC000000000000 -FFFC000000000000FFFC000000000000FFFC000000000000FFFC000000000000FFFC0000 -00000000FFFC000000000000FFFC000000000000FFFC000000000000FFFC000000001FFF -FFFFFF8000001FFFFFFFFF8000001FFFFFFFFF8000001FFFFFFFFF8000001FFFFFFFFF80 -394F7CCE42>I<0180000000060001F00000003E0001FE000001FE0001FFF0003FFE0001 -FFFFFFFFFC0001FFFFFFFFF80001FFFFFFFFF00001FFFFFFFFE00001FFFFFFFFC00001FF -FFFFFF800001FFFFFFFF000001FFFFFFFC000001FFFFFFF8000001FFFFFFE0000001FFFF -FF00000001FFFFFC00000001F0FF8000000001F0000000000001F0000000000001F00000 -00000001F0000000000001F0000000000001F0000000000001F0000000000001F0000000 -000001F0000000000001F0000000000001F0000000000001F0000000000001F007FF8000 -0001F03FFFF8000001F0FFFFFE000001F3FFFFFF800001FFFC01FFE00001FFE0007FF800 -01FF00003FFC0001FE00001FFE0001F800000FFF0001F000000FFF0001F0000007FF8001 -E0000007FFC00000000007FFC00000000007FFE00000000003FFE00000000003FFF00000 -000003FFF00000000003FFF00000000003FFF00000000003FFF80000000003FFF8000000 -0003FFF80300000003FFF80FE0000003FFF83FF8000003FFF87FFC000003FFF87FFC0000 -03FFF8FFFC000003FFF8FFFE000003FFF8FFFE000003FFF8FFFE000003FFF0FFFE000003 -FFF0FFFC000003FFF0FFFC000007FFF07FF8000007FFE07FF0000007FFE07FC0000007FF -C03F0000000FFFC03F0000000FFF801F8000001FFF001FC000001FFF000FF000003FFE00 -07F80000FFFC0003FE0001FFF00001FFE00FFFE000007FFFFFFF8000003FFFFFFF000000 -0FFFFFF800000001FFFFC0000000003FFC000000354F7ACD42>I<00000007FE00000000 -00FFFFC000000003FFFFF00000001FFFFFFC0000007FFC01FE000000FFE0007F000003FF -80003F800007FF00001F80000FFE00007FC0001FFC0000FFC0003FF80003FFE0007FF000 -03FFE000FFE00007FFE001FFE00007FFE003FFC00007FFE003FFC00007FFE007FF800007 -FFE007FF800007FFE00FFF800003FFC00FFF000003FFC01FFF000000FF001FFF0000007E -001FFF00000000003FFF00000000003FFF00000000003FFE00000000007FFE0000000000 -7FFE00000000007FFE003FF000007FFE01FFFF00007FFE07FFFFC000FFFE0FFFFFF000FF -FE1F807FF800FFFE3E001FFE00FFFE78000FFF00FFFEF00007FF80FFFEF00003FFC0FFFF -E00003FFC0FFFFC00001FFE0FFFFC00001FFF0FFFF800001FFF0FFFF800000FFF8FFFF80 -0000FFF8FFFF000000FFFCFFFF000000FFFCFFFF000000FFFCFFFF000000FFFCFFFE0000 -00FFFEFFFE000000FFFEFFFE000000FFFE7FFE000000FFFE7FFE000000FFFE7FFE000000 -FFFE7FFE000000FFFE7FFE000000FFFE7FFE000000FFFE3FFE000000FFFE3FFE000000FF -FE3FFE000000FFFE3FFF000000FFFE1FFF000000FFFC1FFF000000FFFC1FFF000000FFFC -0FFF000000FFF80FFF000001FFF807FF000001FFF807FF800001FFF003FF800001FFE001 -FFC00003FFE001FFE00003FFC000FFE00007FF80007FF0000FFF00003FFC001FFE00001F -FF00FFFC000007FFFFFFF0000003FFFFFFE0000000FFFFFF800000001FFFFC0000000003 -FFC00000374F7BCD42>I<1F0000000000001F8000000000001FC000000000001FFF8000 -0000001FFFFFFFFFFFFF1FFFFFFFFFFFFF1FFFFFFFFFFFFF1FFFFFFFFFFFFF3FFFFFFFFF -FFFF3FFFFFFFFFFFFE3FFFFFFFFFFFFC3FFFFFFFFFFFF83FFFFFFFFFFFF03FFFFFFFFFFF -F03FFFFFFFFFFFE03FFFFFFFFFFFC03FFFFFFFFFFF807FFFFFFFFFFF007F800000003E00 -7E000000007E007E00000000FC007C00000001F8007C00000003F0007C00000003E0007C -00000007E0007C0000000FC000F80000001F8000F80000003F0000F80000007E0000F800 -00007C000000000000FC000000000001F8000000000003F0000000000003F00000000000 -07E000000000000FE000000000001FC000000000001FC000000000003F8000000000003F -8000000000007F000000000000FF000000000000FF000000000001FF000000000001FE00 -0000000003FE000000000003FE000000000007FE000000000007FC00000000000FFC0000 -0000000FFC00000000000FFC00000000001FFC00000000001FFC00000000003FFC000000 -00003FFC00000000003FFC00000000007FF800000000007FF800000000007FF800000000 -007FF80000000000FFF80000000000FFF80000000000FFF80000000000FFF80000000000 -FFF80000000000FFF80000000001FFF80000000001FFF80000000001FFF80000000001FF -F80000000001FFF80000000001FFF80000000001FFF80000000001FFF80000000001FFF8 -0000000001FFF80000000001FFF80000000000FFF000000000007FE000000000003FC000 -000000001F80000000385279D042>I<000003FFC0000000003FFFFC00000001FFFFFF80 -000007FFFFFFE000000FFC00FFF800003FE0001FFC00007F800007FE0000FF000003FF00 -00FE000001FF8001FC000000FF8003FC000000FFC003F80000007FC007F80000007FC007 -F80000007FE007F80000003FE00FF80000003FE00FF80000003FE00FFC0000003FE00FFC -0000003FE00FFE0000003FE00FFF0000003FE00FFF8000007FE00FFFE000007FC00FFFF0 -00007FC00FFFFC0000FFC007FFFF0000FF8007FFFF8001FF0007FFFFE003FF0003FFFFF8 -07FE0003FFFFFC0FFC0001FFFFFF1FF00000FFFFFFFFE00000FFFFFFFF8000007FFFFFFE -0000003FFFFFFE0000000FFFFFFF80000007FFFFFFC0000001FFFFFFF0000000FFFFFFF8 -000003FFFFFFFE00000FFFFFFFFF00003FF7FFFFFF80007FC1FFFFFFC001FF807FFFFFE0 -03FF001FFFFFE007FE000FFFFFF00FFC0003FFFFF81FF80000FFFFF81FF000007FFFFC3F -F000001FFFFC3FE0000007FFFC7FE0000003FFFE7FC0000000FFFE7FC00000007FFEFFC0 -0000003FFEFF800000001FFEFF800000000FFEFF8000000007FEFF8000000007FEFF8000 -000003FEFF8000000003FEFF8000000003FCFF8000000003FCFFC000000003FC7FC00000 -0003FC7FE000000007F87FE000000007F83FF00000000FF03FF80000000FF01FFC000000 -1FE00FFE0000003FC007FF000000FF8003FFC00003FF0001FFFC003FFE00007FFFFFFFF8 -00001FFFFFFFE0000007FFFFFF80000000FFFFFC000000000FFFC00000374F7BCD42>I< -000007FF80000000007FFFF800000001FFFFFE00000007FFFFFF8000001FFE01FFE00000 -7FF8003FF00000FFF0001FF80001FFE0000FFC0003FFC00007FE0007FF800007FF000FFF -800003FF800FFF000003FF801FFF000001FFC03FFF000001FFC03FFF000001FFE07FFE00 -0001FFE07FFE000001FFF07FFE000001FFF07FFE000000FFF8FFFE000000FFF8FFFE0000 -00FFF8FFFE000000FFF8FFFE000000FFFCFFFE000000FFFCFFFE000000FFFCFFFE000000 -FFFCFFFE000000FFFCFFFE000000FFFCFFFE000000FFFEFFFE000000FFFEFFFE000000FF -FEFFFE000001FFFE7FFE000001FFFE7FFE000001FFFE7FFE000001FFFE7FFE000001FFFE -3FFE000003FFFE3FFE000003FFFE1FFF000003FFFE1FFF000007FFFE0FFF000007FFFE07 -FF80000FFFFE07FF80001EFFFE03FFC0001EFFFE01FFE0003CFFFE007FF000F8FFFE003F -FC03F0FFFE001FFFFFE0FFFE0007FFFFC0FFFC0000FFFF00FFFC00001FF800FFFC000000 -0000FFFC0000000000FFFC0000000000FFF80000000001FFF80000000001FFF800000000 -01FFF800FC000001FFF001FE000001FFF007FF800001FFE007FF800003FFE00FFFC00003 -FFC00FFFC00003FFC00FFFC00007FF800FFFC00007FF800FFFC0000FFF000FFFC0000FFE -000FFF80001FFE0007FF80003FFC0007FE00007FF80007FC0000FFF00003F80001FFE000 -03FC0007FFC00001FF803FFF000000FFFFFFFC0000003FFFFFF80000001FFFFFC0000000 -07FFFF00000000007FF0000000374F7BCD42>I<07E01FF83FFC7FFE7FFEFFFFFFFFFFFF -FFFFFFFFFFFF7FFE7FFE3FFC1FF807E00000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000007E01FF83FFC7FFE7FFEFFFFFFFF -FFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF807E0103576B425>I<00000000003F0000000000 -0000000000003F00000000000000000000007F80000000000000000000007F8000000000 -0000000000007F8000000000000000000000FFC000000000000000000000FFC000000000 -000000000001FFE000000000000000000001FFE000000000000000000001FFE000000000 -000000000003FFF000000000000000000003FFF000000000000000000007FFF800000000 -000000000007FFF800000000000000000007FFF80000000000000000000FFFFC00000000 -00000000000FFFFC0000000000000000001FFFFE0000000000000000001FFFFE00000000 -00000000001FFFFE0000000000000000003FFFFF0000000000000000003EFFFF00000000 -00000000003E7FFF0000000000000000007E7FFF8000000000000000007C3FFF80000000 -0000000000FC3FFFC00000000000000000F83FFFC00000000000000000F81FFFC0000000 -0000000001F81FFFE00000000000000001F00FFFE00000000000000003F00FFFF0000000 -0000000003E00FFFF00000000000000003E007FFF00000000000000007E007FFF8000000 -0000000007C003FFF8000000000000000FC003FFFC000000000000000F8003FFFC000000 -000000000F8001FFFC000000000000001F8001FFFE000000000000001F0001FFFE000000 -000000001F0000FFFE000000000000003F0000FFFF000000000000003E00007FFF000000 -000000007E00007FFF800000000000007C00007FFF800000000000007C00003FFF800000 -00000000FC00003FFFC0000000000000F800001FFFC0000000000001F800001FFFE00000 -00000001F000001FFFE0000000000001F000000FFFE0000000000003F000000FFFF00000 -00000003E0000007FFF0000000000007E0000007FFF8000000000007C0000007FFF80000 -00000007FFFFFFFFFFF800000000000FFFFFFFFFFFFC00000000000FFFFFFFFFFFFC0000 -0000000FFFFFFFFFFFFC00000000001FFFFFFFFFFFFE00000000001F00000000FFFE0000 -0000003F00000000FFFF00000000003E00000000FFFF00000000003E000000007FFF0000 -0000007E000000007FFF80000000007C000000003FFF8000000000FC000000003FFFC000 -000000F8000000003FFFC000000000F8000000001FFFC000000001F8000000001FFFE000 -000001F0000000000FFFE000000003F0000000000FFFF000000003E0000000000FFFF000 -000003E00000000007FFF000000007E00000000007FFF800000007C00000000003FFF800 -000007C00000000003FFF80000000F800000000003FFFC0000003FF00000000001FFFC00 -00FFFFFFF000000FFFFFFFFFC0FFFFFFF000000FFFFFFFFFC0FFFFFFF000000FFFFFFFFF -C0FFFFFFF000000FFFFFFFFFC0FFFFFFF000000FFFFFFFFFC05A547CD363>65 -D<0000000003FFF0000007000000007FFFFF00000F00000007FFFFFFE0001F0000003FFF -FFFFF8003F000000FFFFFFFFFE007F000003FFFFC003FF00FF00000FFFF800003FC1FF00 -003FFFC000000FE3FF0000FFFF00000003FFFF0001FFFC00000001FFFF0003FFF8000000 -00FFFF0007FFE0000000007FFF001FFFC0000000003FFF003FFF80000000001FFF003FFF -00000000000FFF007FFE000000000007FF00FFFC000000000003FF01FFFC000000000003 -FF01FFF8000000000001FF03FFF0000000000001FF07FFF0000000000000FF07FFF00000 -00000000FF0FFFE00000000000007F0FFFE00000000000007F1FFFC00000000000007F1F -FFC00000000000003F1FFFC00000000000003F3FFF800000000000003F3FFF8000000000 -00001F3FFF800000000000001F7FFF800000000000001F7FFF800000000000001F7FFF80 -000000000000007FFF00000000000000007FFF0000000000000000FFFF00000000000000 -00FFFF0000000000000000FFFF0000000000000000FFFF0000000000000000FFFF000000 -0000000000FFFF0000000000000000FFFF0000000000000000FFFF0000000000000000FF -FF0000000000000000FFFF0000000000000000FFFF0000000000000000FFFF0000000000 -000000FFFF0000000000000000FFFF00000000000000007FFF00000000000000007FFF00 -000000000000007FFF80000000000000007FFF80000000000000007FFF80000000000000 -003FFF800000000000001F3FFF800000000000001F3FFF800000000000001F1FFFC00000 -000000001F1FFFC00000000000001F1FFFC00000000000003F0FFFE00000000000003F0F -FFE00000000000003E07FFF00000000000003E07FFF00000000000007E03FFF800000000 -00007C01FFF8000000000000FC01FFFC000000000000F800FFFC000000000001F8007FFE -000000000003F0003FFF000000000003F0003FFF800000000007E0001FFFC0000000000F -C00007FFE0000000001F800003FFF8000000003F000001FFFC00000000FE000000FFFF00 -000001FC0000003FFFC0000007F80000000FFFFC00003FF000000003FFFFC001FFC00000 -0000FFFFFFFFFF00000000003FFFFFFFFC000000000007FFFFFFF00000000000007FFFFF -8000000000000003FFF0000000505479D25F>67 D72 DI< -FFFFFFF000000000000001FFFFFFF0FFFFFFF800000000000003FFFFFFF0FFFFFFFC0000 -0000000007FFFFFFF0FFFFFFFC00000000000007FFFFFFF0FFFFFFFC00000000000007FF -FFFFF00007FFFE0000000000000FFFFE00000007FFFE0000000000000FFFFE00000007DF -FF0000000000001F7FFE00000007DFFF0000000000001F7FFE00000007CFFF8000000000 -003E7FFE00000007CFFF8000000000003E7FFE00000007CFFF8000000000003E7FFE0000 -0007C7FFC000000000007C7FFE00000007C7FFC000000000007C7FFE00000007C3FFE000 -00000000F87FFE00000007C3FFE00000000000F87FFE00000007C1FFF00000000001F07F -FE00000007C1FFF00000000001F07FFE00000007C0FFF80000000003E07FFE00000007C0 -FFF80000000003E07FFE00000007C0FFF80000000003E07FFE00000007C07FFC00000000 -07C07FFE00000007C07FFC0000000007C07FFE00000007C03FFE000000000F807FFE0000 -0007C03FFE000000000F807FFE00000007C01FFF000000001F007FFE00000007C01FFF00 -0000001F007FFE00000007C01FFF000000001F007FFE00000007C00FFF800000003E007F -FE00000007C00FFF800000003E007FFE00000007C007FFC00000007C007FFE00000007C0 -07FFC00000007C007FFE00000007C003FFE0000000F8007FFE00000007C003FFE0000000 -F8007FFE00000007C003FFE0000000F8007FFE00000007C001FFF0000001F0007FFE0000 -0007C001FFF0000001F0007FFE00000007C000FFF8000003E0007FFE00000007C000FFF8 -000003E0007FFE00000007C0007FFC000007C0007FFE00000007C0007FFC000007C0007F -FE00000007C0007FFC000007C0007FFE00000007C0003FFE00000F80007FFE00000007C0 -003FFE00000F80007FFE00000007C0001FFF00001F00007FFE00000007C0001FFF00001F -00007FFE00000007C0000FFF80003E00007FFE00000007C0000FFF80003E00007FFE0000 -0007C0000FFF80003E00007FFE00000007C00007FFC0007C00007FFE00000007C00007FF -C0007C00007FFE00000007C00003FFE000F800007FFE00000007C00003FFE000F800007F -FE00000007C00001FFF001F000007FFE00000007C00001FFF001F000007FFE00000007C0 -0000FFF803E000007FFE00000007C00000FFF803E000007FFE00000007C00000FFF803E0 -00007FFE00000007C000007FFC07C000007FFE00000007C000007FFC07C000007FFE0000 -0007C000003FFE0F8000007FFE00000007C000003FFE0F8000007FFE00000007C000001F -FF1F0000007FFE00000007C000001FFF1F0000007FFE00000007C000001FFF1F0000007F -FE00000007C000000FFFBE0000007FFE00000007C000000FFFBE0000007FFE00000007C0 -000007FFFC0000007FFE00000007C0000007FFFC0000007FFE00000007C0000003FFF800 -00007FFE00000007C0000003FFF80000007FFE00000007C0000003FFF80000007FFE0000 -0007C0000001FFF00000007FFE00000007C0000001FFF00000007FFE00000007C0000000 -FFE00000007FFE00000007C0000000FFE00000007FFE0000001FF00000007FC00000007F -FE0000FFFFFFFE00007FC0000FFFFFFFFFF0FFFFFFFE00007FC0000FFFFFFFFFF0FFFFFF -FE00003F80000FFFFFFFFFF0FFFFFFFE00003F80000FFFFFFFFFF0FFFFFFFE00001F0000 -0FFFFFFFFFF074527CD17D>77 D<000000001FFF800000000000000003FFFFFC00000000 -0000003FFFFFFFC0000000000000FFFFFFFFF0000000000007FFF801FFFE00000000001F -FF80001FFF80000000003FFE000007FFC000000000FFF8000001FFF000000001FFF00000 -00FFF800000003FFC00000003FFC00000007FF800000001FFE0000000FFF000000000FFF -0000001FFE0000000007FF8000003FFE0000000007FFC000007FFC0000000003FFE00000 -FFF80000000001FFF00001FFF80000000001FFF80001FFF00000000000FFF80003FFF000 -00000000FFFC0003FFE000000000007FFC0007FFE000000000007FFE000FFFC000000000 -003FFF000FFFC000000000003FFF000FFFC000000000003FFF001FFFC000000000003FFF -801FFF8000000000001FFF803FFF8000000000001FFFC03FFF8000000000001FFFC03FFF -8000000000001FFFC03FFF8000000000001FFFC07FFF0000000000000FFFE07FFF000000 -0000000FFFE07FFF0000000000000FFFE07FFF0000000000000FFFE07FFF000000000000 -0FFFE0FFFF0000000000000FFFF0FFFF0000000000000FFFF0FFFF0000000000000FFFF0 -FFFF0000000000000FFFF0FFFF0000000000000FFFF0FFFF0000000000000FFFF0FFFF00 -00000000000FFFF0FFFF0000000000000FFFF0FFFF0000000000000FFFF0FFFF00000000 -00000FFFF0FFFF0000000000000FFFF0FFFF0000000000000FFFF0FFFF0000000000000F -FFF0FFFF0000000000000FFFF0FFFF0000000000000FFFF07FFF0000000000000FFFE07F -FF8000000000001FFFE07FFF8000000000001FFFE07FFF8000000000001FFFE07FFF8000 -000000001FFFE03FFF8000000000001FFFC03FFF8000000000001FFFC03FFFC000000000 -003FFFC01FFFC000000000003FFF801FFFC000000000003FFF801FFFC000000000003FFF -800FFFE000000000007FFF000FFFE000000000007FFF0007FFF00000000000FFFE0007FF -F00000000000FFFE0003FFF00000000000FFFC0001FFF80000000001FFF80001FFFC0000 -000003FFF80000FFFC0000000003FFF000007FFE0000000007FFE000007FFF000000000F -FFE000003FFF800000001FFFC000001FFFC00000003FFF8000000FFFE00000007FFF0000 -0007FFF0000000FFFE00000001FFF8000001FFF800000000FFFE000007FFF0000000003F -FFC0003FFFC0000000001FFFF801FFFF800000000007FFFFFFFFFE000000000001FFFFFF -FFF80000000000003FFFFFFFC000000000000007FFFFFE00000000000000001FFF800000 -0000545479D263>79 DI<00000FFE00001C000000FFFFF0003C000007FFFFFC007C00001FFF -FFFF00FC00007FFFFFFFC1FC0000FFF001FFE1FC0001FF80001FFBFC0003FF000007FFFC -0007FC000001FFFC000FF8000000FFFC001FF00000003FFC001FF00000001FFC003FE000 -00000FFC003FE00000000FFC007FE000000007FC007FC000000003FC007FC000000003FC -007FC000000001FC00FFC000000001FC00FFC000000001FC00FFC000000000FC00FFE000 -000000FC00FFE000000000FC00FFF0000000007C00FFF0000000007C00FFF8000000007C -00FFFC000000007C00FFFE0000000000007FFF0000000000007FFFC000000000007FFFF8 -00000000007FFFFF80000000003FFFFFF8000000003FFFFFFFC00000001FFFFFFFFC0000 -000FFFFFFFFF8000000FFFFFFFFFF0000007FFFFFFFFFC000003FFFFFFFFFE000001FFFF -FFFFFF800000FFFFFFFFFFC000007FFFFFFFFFE000001FFFFFFFFFF0000007FFFFFFFFF8 -000001FFFFFFFFF80000007FFFFFFFFC00000007FFFFFFFE000000007FFFFFFE00000000 -03FFFFFF00000000003FFFFF000000000003FFFF800000000000FFFF8000000000003FFF -8000000000001FFF8000000000000FFFC0000000000007FFC0000000000003FFC0F80000 -000003FFC0F80000000001FFC0F80000000001FFC0F80000000001FFC0F80000000000FF -C0FC0000000000FFC0FC0000000000FFC0FC0000000000FFC0FC0000000000FF80FE0000 -000000FF80FE0000000000FF80FF0000000001FF80FF0000000001FF00FF8000000001FF -00FFC000000003FE00FFE000000003FE00FFF000000007FC00FFFC0000000FF800FFFE00 -00001FF800FFFFC000003FF000FF7FF80000FFE000FE1FFF8007FFC000FE07FFFFFFFF00 -00FC01FFFFFFFC0000F8007FFFFFF00000F0000FFFFFC00000E000007FFC0000003A5479 -D249>83 D<3FFFFFFFFFFFFFFFFFFC3FFFFFFFFFFFFFFFFFFC3FFFFFFFFFFFFFFFFFFC3F -FFFFFFFFFFFFFFFFFC3FFFFFFFFFFFFFFFFFFC3FFFC0007FFF0003FFFC3FFC00007FFF00 -003FFC7FF000007FFF00000FFE7FE000007FFF000007FE7FC000007FFF000003FE7F8000 -007FFF000001FE7F0000007FFF000000FE7F0000007FFF000000FE7E0000007FFF000000 -7E7E0000007FFF0000007E7E0000007FFF0000007E7C0000007FFF0000003E7C0000007F -FF0000003E7C0000007FFF0000003E7C0000007FFF0000003E7C0000007FFF0000003EFC -0000007FFF0000003FF80000007FFF0000001FF80000007FFF0000001FF80000007FFF00 -00001FF80000007FFF0000001FF80000007FFF0000001FF80000007FFF0000001F000000 -007FFF00000000000000007FFF00000000000000007FFF00000000000000007FFF000000 -00000000007FFF00000000000000007FFF00000000000000007FFF00000000000000007F -FF00000000000000007FFF00000000000000007FFF00000000000000007FFF0000000000 -0000007FFF00000000000000007FFF00000000000000007FFF00000000000000007FFF00 -000000000000007FFF00000000000000007FFF00000000000000007FFF00000000000000 -007FFF00000000000000007FFF00000000000000007FFF00000000000000007FFF000000 -00000000007FFF00000000000000007FFF00000000000000007FFF00000000000000007F -FF00000000000000007FFF00000000000000007FFF00000000000000007FFF0000000000 -0000007FFF00000000000000007FFF00000000000000007FFF00000000000000007FFF00 -000000000000007FFF00000000000000007FFF00000000000000007FFF00000000000000 -007FFF00000000000000007FFF00000000000000007FFF00000000000000007FFF000000 -00000000007FFF00000000000000007FFF00000000000000007FFF00000000000000007F -FF00000000000000007FFF00000000000000007FFF00000000000000007FFF0000000000 -0000007FFF000000000001FFFFFFFFFFFFC0000001FFFFFFFFFFFFC0000001FFFFFFFFFF -FFC0000001FFFFFFFFFFFFC0000001FFFFFFFFFFFFC00050517BD05B>I<7FFFFFFFFFFF -FFFFFFFC7FFFFFFFFFFFFFFFFFFCFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFEFFFF -FFFFFFFFFFFFFFFE7FFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFC4F07756366>95 -D<00003FFE000000000007FFFFE0000000001FFFFFFC000000007FFFFFFF00000001FFC0 -0FFFC0000003FE0003FFE0000007FF0000FFF0000007FF80007FF800000FFFC0007FFC00 -000FFFC0003FFE00000FFFC0003FFE00000FFFC0001FFF00000FFFC0001FFF00000FFFC0 -001FFF00000FFFC0000FFF800007FF80000FFF800003FF00000FFF800001FE00000FFF80 -00000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000000 -000FFF8000000000000FFF800000000007FFFF8000000003FFFFFF800000007FFFFFFF80 -000003FFFFFFFF8000001FFFF00FFF8000007FFF000FFF800000FFFC000FFF800003FFF0 -000FFF800007FFC0000FFF80000FFF80000FFF80001FFF00000FFF80003FFF00000FFF80 -003FFE00000FFF80007FFC00000FFF80007FFC00000FFF81F0FFFC00000FFF81F0FFF800 -000FFF81F0FFF800000FFF81F0FFF800000FFF81F0FFF800001FFF81F0FFF800001FFF81 -F0FFFC00003FFF81F07FFC00003FFF81F07FFE00007FFF81F03FFE0000F7FFC3F03FFF00 -01E3FFC3E01FFFC007E3FFFFE007FFF01F81FFFFC003FFFFFF00FFFF8000FFFFFC007FFF -00001FFFF0003FFC000001FF800007F0003C387CB642>97 D<003FF8000000000000FFFF -F8000000000000FFFFF8000000000000FFFFF8000000000000FFFFF8000000000000FFFF -F800000000000003FFF800000000000000FFF800000000000000FFF800000000000000FF -F800000000000000FFF800000000000000FFF800000000000000FFF800000000000000FF -F800000000000000FFF800000000000000FFF800000000000000FFF800000000000000FF -F800000000000000FFF800000000000000FFF800000000000000FFF800000000000000FF -F800000000000000FFF800000000000000FFF800000000000000FFF800000000000000FF -F800000000000000FFF800000000000000FFF800000000000000FFF800000000000000FF -F8007FF000000000FFF807FFFF00000000FFF81FFFFFC0000000FFF87FFFFFF0000000FF -F9FF007FFC000000FFFFF8001FFF000000FFFFE00007FF800000FFFF800003FFC00000FF -FF000001FFE00000FFFE000000FFF00000FFFC000000FFF00000FFF80000007FF80000FF -F80000007FFC0000FFF80000003FFC0000FFF80000003FFE0000FFF80000003FFE0000FF -F80000003FFE0000FFF80000003FFF0000FFF80000001FFF0000FFF80000001FFF0000FF -F80000001FFF0000FFF80000001FFF8000FFF80000001FFF8000FFF80000001FFF8000FF -F80000001FFF8000FFF80000001FFF8000FFF80000001FFF8000FFF80000001FFF8000FF -F80000001FFF8000FFF80000001FFF8000FFF80000001FFF8000FFF80000001FFF8000FF -F80000001FFF8000FFF80000001FFF8000FFF80000001FFF0000FFF80000001FFF0000FF -F80000001FFF0000FFF80000003FFF0000FFF80000003FFE0000FFF80000003FFE0000FF -F80000003FFC0000FFF80000007FFC0000FFF80000007FF80000FFFC000000FFF80000FF -FC000000FFF00000FFFE000001FFE00000FFFF000003FFC00000FFFF800007FF800000FF -CFE0000FFF000000FF87F0003FFE000000FF01FE01FFF8000000FE00FFFFFFF0000000FC -003FFFFFC0000000F80007FFFE00000000000000FFE000000041547DD249>I<000003FF -E0000000003FFFFE00000000FFFFFF80000003FFFFFFE000000FFF003FF800003FFC0007 -FC00007FF8000FFE0000FFF0001FFE0001FFE0003FFF0003FFC0003FFF0007FF80003FFF -0007FF80003FFF000FFF00003FFF001FFF00003FFF001FFE00003FFF003FFE00001FFE00 -3FFE00000FFC003FFE000007F8007FFE00000000007FFC00000000007FFC00000000007F -FC0000000000FFFC0000000000FFFC0000000000FFFC0000000000FFFC0000000000FFFC -0000000000FFFC0000000000FFFC0000000000FFFC0000000000FFFC0000000000FFFC00 -00000000FFFC0000000000FFFC0000000000FFFC00000000007FFC00000000007FFE0000 -0000007FFE00000000007FFE00000000003FFE00000000003FFF00000000001FFF000000 -0F801FFF0000000F800FFF8000001F800FFF8000001F0007FFC000003F0003FFE000003E -0001FFF000007E0000FFF80000FC00007FFC0001F800003FFF0007F000000FFFC01FE000 -0007FFFFFF80000001FFFFFE000000003FFFF80000000003FF80000031387CB63A>I<00 -0000000003FF8000000000000FFFFF8000000000000FFFFF8000000000000FFFFF800000 -0000000FFFFF8000000000000FFFFF800000000000003FFF800000000000000FFF800000 -000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF800000 -000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF800000 -000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF800000 -000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF800000 -000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF800000 -000000000FFF8000000003FF800FFF800000003FFFF80FFF80000001FFFFFE0FFF800000 -07FFFFFF8FFF8000001FFFC03FEFFF8000003FFE0007FFFF8000007FF80001FFFF800000 -FFF00000FFFF800001FFE000007FFF800003FFC000003FFF800007FF8000001FFF80000F -FF8000000FFF80000FFF0000000FFF80001FFF0000000FFF80001FFE0000000FFF80003F -FE0000000FFF80003FFE0000000FFF80007FFE0000000FFF80007FFC0000000FFF80007F -FC0000000FFF80007FFC0000000FFF8000FFFC0000000FFF8000FFFC0000000FFF8000FF -FC0000000FFF8000FFFC0000000FFF8000FFFC0000000FFF8000FFFC0000000FFF8000FF -FC0000000FFF8000FFFC0000000FFF8000FFFC0000000FFF8000FFFC0000000FFF8000FF -FC0000000FFF8000FFFC0000000FFF8000FFFC0000000FFF80007FFC0000000FFF80007F -FC0000000FFF80007FFC0000000FFF80007FFE0000000FFF80003FFE0000000FFF80003F -FE0000000FFF80003FFE0000000FFF80001FFE0000000FFF80001FFF0000000FFF80000F -FF0000001FFF800007FF8000003FFF800007FF8000007FFF800003FFC00000FFFF800001 -FFE00001FFFF800000FFF00003FFFFE000007FFC000FEFFFFF80001FFF007F8FFFFF8000 -07FFFFFF0FFFFF800001FFFFFC0FFFFF8000007FFFE00FFFFF80000007FF000FFE000041 -547CD249>I<000007FF80000000007FFFF800000001FFFFFE00000007FFFFFF8000001F -FF03FFE000003FFC007FF000007FF0003FF80000FFE0001FFC0001FFC0000FFC0003FF80 -0007FE0007FF800007FF000FFF000003FF000FFF000003FF801FFE000003FF801FFE0000 -01FF803FFE000001FFC03FFE000001FFC03FFE000001FFC07FFC000001FFC07FFC000001 -FFE07FFC000000FFE07FFC000000FFE0FFFC000000FFE0FFFC000000FFE0FFFFFFFFFFFF -E0FFFFFFFFFFFFE0FFFFFFFFFFFFE0FFFFFFFFFFFFE0FFFC0000000000FFFC0000000000 -FFFC0000000000FFFC0000000000FFFC0000000000FFFC00000000007FFC00000000007F -FC00000000007FFC00000000007FFE00000000003FFE00000000003FFE00000000003FFE -00000003E01FFF00000003E01FFF00000007E00FFF00000007C007FF8000000FC007FF80 -00000F8003FFC000001F8001FFE000003F0000FFF000007E00007FFC0001FC00001FFF00 -07F800000FFFE03FF0000003FFFFFFC0000000FFFFFF800000003FFFFC0000000001FFE0 -000033387CB63C>I<0000001FF800000003FFFE0000000FFFFF8000003FFFFFC00000FF -F83FE00003FFE0FFF00007FF80FFF0000FFF01FFF8001FFF01FFF8003FFE01FFF8003FFE -01FFF8007FFC01FFF8007FFC01FFF8007FFC00FFF000FFF800FFF000FFF8007FE000FFF8 -001F8000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF8 -00000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF8 -00000000FFF800000000FFF8000000FFFFFFFFC000FFFFFFFFC000FFFFFFFFC000FFFFFF -FFC000FFFFFFFFC00000FFF800000000FFF800000000FFF800000000FFF800000000FFF8 -00000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF8 -00000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF8 -00000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF8 -00000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF8 -00000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF8 -00000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF8 -00000000FFF800000000FFF8000000FFFFFFFE0000FFFFFFFE0000FFFFFFFE0000FFFFFF -FE0000FFFFFFFE00002D547CD328>I<00001FFE0000FE000001FFFFE007FF80000FFFFF -FC1FFFC0003FFFFFFF7FFFE0007FF807FFFF07E001FFE001FFF07FE003FFC000FFF07FE0 -07FF80007FF83FE007FF00003FF83FC00FFF00003FFC1FC01FFF00003FFE07001FFE0000 -1FFE00001FFE00001FFE00003FFE00001FFF00003FFE00001FFF00003FFE00001FFF0000 -3FFE00001FFF00003FFE00001FFF00003FFE00001FFF00003FFE00001FFF00003FFE0000 -1FFF00003FFE00001FFF00001FFE00001FFE00001FFE00001FFE00001FFF00003FFE0000 -0FFF00003FFC000007FF00003FF8000007FF80007FF8000003FFC000FFF0000001FFE001 -FFE0000000FFF807FF80000001FFFFFFFF00000003EFFFFFFC00000003C1FFFFE0000000 -07C01FFE00000000078000000000000007800000000000000FC00000000000000FC00000 -000000000FC00000000000000FE00000000000000FE00000000000000FF0000000000000 -0FFC0000000000000FFFFFFFFE00000007FFFFFFFFF0000007FFFFFFFFFC000007FFFFFF -FFFF800003FFFFFFFFFFC00003FFFFFFFFFFF00001FFFFFFFFFFF80000FFFFFFFFFFFC00 -007FFFFFFFFFFC0001FFFFFFFFFFFE0007FFFFFFFFFFFE000FFC000003FFFF001FF80000 -003FFF003FF00000000FFF007FE000000007FF807FE000000003FF80FFC000000003FF80 -FFC000000001FF80FFC000000001FF80FFC000000001FF80FFC000000001FF80FFC00000 -0001FF80FFE000000003FF807FE000000003FF007FF000000007FF003FF000000007FE00 -1FF80000000FFC001FFE0000003FFC0007FF0000007FF00003FFC00001FFE00000FFFC00 -1FFF8000003FFFFFFFFE0000000FFFFFFFF800000001FFFFFFC0000000000FFFF8000000 -3B4F7CB542>I<003FF8000000000000FFFFF8000000000000FFFFF8000000000000FFFF -F8000000000000FFFFF8000000000000FFFFF800000000000003FFF800000000000000FF -F800000000000000FFF800000000000000FFF800000000000000FFF800000000000000FF -F800000000000000FFF800000000000000FFF800000000000000FFF800000000000000FF -F800000000000000FFF800000000000000FFF800000000000000FFF800000000000000FF -F800000000000000FFF800000000000000FFF800000000000000FFF800000000000000FF -F800000000000000FFF800000000000000FFF800000000000000FFF800000000000000FF -F800000000000000FFF800000000000000FFF8001FFC00000000FFF800FFFF80000000FF -F803FFFFE0000000FFF80FFFFFF8000000FFF81FC07FFC000000FFF87E003FFE000000FF -F8F8001FFF000000FFF9F0001FFF000000FFF9E0000FFF800000FFFBC0000FFF800000FF -FF80000FFF800000FFFF000007FFC00000FFFF000007FFC00000FFFE000007FFC00000FF -FE000007FFC00000FFFC000007FFC00000FFFC000007FFC00000FFFC000007FFC00000FF -FC000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FF -F8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FF -F8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FF -F8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FF -F8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FF -F8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FF -F8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FF -F8000007FFC00000FFF8000007FFC00000FFF8000007FFC000FFFFFFF807FFFFFFC0FFFF -FFF807FFFFFFC0FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC04253 -7CD249>I<003F000000FFC00001FFE00003FFF00003FFF00007FFF80007FFF80007FFF8 -0007FFF80007FFF80007FFF80003FFF00003FFF00001FFE00000FFC000003F0000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000001FF800FFFFF800FFFFF800FFFFF800FFFFF8 -00FFFFF80001FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF8 -0000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF8 -0000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF8 -0000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF8 -0000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF800FFFFFF -F0FFFFFFF0FFFFFFF0FFFFFFF0FFFFFFF01C547CD324>I<0000003F00000000FFC00000 -01FFE0000003FFF0000003FFF0000007FFF8000007FFF8000007FFF8000007FFF8000007 -FFF8000007FFF8000003FFF0000003FFF0000001FFE0000000FFC00000003F0000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000003FF800 -01FFFFF80001FFFFF80001FFFFF80001FFFFF80001FFFFF8000003FFF8000000FFF80000 -00FFF8000000FFF8000000FFF8000000FFF8000000FFF8000000FFF8000000FFF8000000 -FFF8000000FFF8000000FFF8000000FFF8000000FFF8000000FFF8000000FFF8000000FF -F8000000FFF8000000FFF8000000FFF8000000FFF8000000FFF8000000FFF8000000FFF8 -000000FFF8000000FFF8000000FFF8000000FFF8000000FFF8000000FFF8000000FFF800 -0000FFF8000000FFF8000000FFF8000000FFF8000000FFF8000000FFF8000000FFF80000 -00FFF8000000FFF8000000FFF8000000FFF8000000FFF8000000FFF8000000FFF8000000 -FFF8000000FFF8000000FFF8000000FFF8000000FFF8000000FFF8000000FFF8000000FF -F8000000FFF8078000FFF81FE000FFF83FF000FFF87FF800FFF8FFFC00FFF0FFFC01FFF0 -FFFC01FFF0FFFC01FFE0FFFC01FFE0FFFC03FFC07FF803FF807FF807FF003FF00FFE001F -F03FFC000FFFFFF00007FFFFE00001FFFF0000003FF80000256C87D328>I<003FF800FF -FFF800FFFFF800FFFFF800FFFFF800FFFFF80003FFF80000FFF80000FFF80000FFF80000 -FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000 -FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000 -FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000 -FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000 -FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000 -FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000 -FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000FFF80000 -FFF80000FFF80000FFF80000FFF80000FFF800FFFFFFF8FFFFFFF8FFFFFFF8FFFFFFF8FF -FFFFF81D537CD224>108 D<003FF0001FF8000001FF800000FFFFF000FFFF80000FFFF8 -0000FFFFF003FFFFE0003FFFFE0000FFFFF00FFFFFF000FFFFFF0000FFFFF03F80FFF803 -F80FFF8000FFFFF07E007FFC07E007FFC00003FFF0F8003FFE0F8003FFE00000FFF1F000 -1FFE1F0001FFE00000FFF3E0001FFF3E0001FFF00000FFF3C0001FFF3C0001FFF00000FF -F780001FFF780001FFF00000FFF700000FFFF00000FFF80000FFFF00000FFFF00000FFF8 -0000FFFE00000FFFE00000FFF80000FFFE00000FFFE00000FFF80000FFFC00000FFFC000 -00FFF80000FFFC00000FFFC00000FFF80000FFFC00000FFFC00000FFF80000FFF800000F -FF800000FFF80000FFF800000FFF800000FFF80000FFF800000FFF800000FFF80000FFF8 -00000FFF800000FFF80000FFF800000FFF800000FFF80000FFF800000FFF800000FFF800 -00FFF800000FFF800000FFF80000FFF800000FFF800000FFF80000FFF800000FFF800000 -FFF80000FFF800000FFF800000FFF80000FFF800000FFF800000FFF80000FFF800000FFF -800000FFF80000FFF800000FFF800000FFF80000FFF800000FFF800000FFF80000FFF800 -000FFF800000FFF80000FFF800000FFF800000FFF80000FFF800000FFF800000FFF80000 -FFF800000FFF800000FFF80000FFF800000FFF800000FFF80000FFF800000FFF800000FF -F80000FFF800000FFF800000FFF80000FFF800000FFF800000FFF80000FFF800000FFF80 -0000FFF80000FFF800000FFF800000FFF80000FFF800000FFF800000FFF80000FFF80000 -0FFF800000FFF80000FFF800000FFF800000FFF80000FFF800000FFF800000FFF80000FF -F800000FFF800000FFF80000FFF800000FFF800000FFF80000FFF800000FFF800000FFF8 -00FFFFFFF80FFFFFFF80FFFFFFF8FFFFFFF80FFFFFFF80FFFFFFF8FFFFFFF80FFFFFFF80 -FFFFFFF8FFFFFFF80FFFFFFF80FFFFFFF8FFFFFFF80FFFFFFF80FFFFFFF865367BB56E> -I<003FF0001FFC000000FFFFF000FFFF800000FFFFF003FFFFE00000FFFFF00FFFFFF800 -00FFFFF01FC07FFC0000FFFFF07E003FFE000003FFF0F8001FFF000000FFF1F0001FFF00 -0000FFF1E0000FFF800000FFF3C0000FFF800000FFF780000FFF800000FFF7000007FFC0 -0000FFFF000007FFC00000FFFE000007FFC00000FFFE000007FFC00000FFFC000007FFC0 -0000FFFC000007FFC00000FFFC000007FFC00000FFFC000007FFC00000FFF8000007FFC0 -0000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC0 -0000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC0 -0000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC0 -0000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC0 -0000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC0 -0000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC0 -0000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC0 -0000FFF8000007FFC000FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC0FFFFFFF807FFFFFF -C0FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC042367CB549>I<000001FFC00000000000 -3FFFFE0000000000FFFFFF8000000003FFFFFFE00000000FFF80FFF80000003FFC001FFE -0000007FF00007FF000000FFE00003FF800001FFC00001FFC00003FF800000FFE00003FF -0000007FE00007FF0000007FF0000FFF0000007FF8000FFE0000003FF8001FFE0000003F -FC001FFE0000003FFC003FFE0000003FFE003FFC0000001FFE003FFC0000001FFE007FFC -0000001FFF007FFC0000001FFF007FFC0000001FFF007FFC0000001FFF00FFFC0000001F -FF80FFFC0000001FFF80FFFC0000001FFF80FFFC0000001FFF80FFFC0000001FFF80FFFC -0000001FFF80FFFC0000001FFF80FFFC0000001FFF80FFFC0000001FFF80FFFC0000001F -FF80FFFC0000001FFF80FFFC0000001FFF807FFC0000001FFF007FFC0000001FFF007FFC -0000001FFF003FFC0000001FFE003FFE0000003FFE003FFE0000003FFE001FFE0000003F -FC001FFE0000003FFC000FFF0000007FF8000FFF0000007FF80007FF800000FFF00003FF -800000FFE00001FFC00001FFC00000FFE00003FF8000007FF00007FF0000003FFC001FFE -0000001FFF80FFFC00000007FFFFFFF000000001FFFFFFC0000000003FFFFE0000000000 -03FFE000000039387CB642>I<003FF8007FF0000000FFFFF807FFFF000000FFFFF81FFF -FFC00000FFFFF87FFFFFF00000FFFFF9FF00FFFC0000FFFFFFF8003FFF000003FFFFE000 -0FFF800000FFFF800007FFC00000FFFF000003FFE00000FFFE000003FFF00000FFFC0000 -01FFF00000FFF8000000FFF80000FFF8000000FFFC0000FFF80000007FFC0000FFF80000 -007FFE0000FFF80000007FFE0000FFF80000003FFE0000FFF80000003FFF0000FFF80000 -003FFF0000FFF80000003FFF0000FFF80000003FFF0000FFF80000001FFF8000FFF80000 -001FFF8000FFF80000001FFF8000FFF80000001FFF8000FFF80000001FFF8000FFF80000 -001FFF8000FFF80000001FFF8000FFF80000001FFF8000FFF80000001FFF8000FFF80000 -001FFF8000FFF80000001FFF8000FFF80000001FFF8000FFF80000001FFF8000FFF80000 -003FFF0000FFF80000003FFF0000FFF80000003FFF0000FFF80000003FFF0000FFF80000 -007FFE0000FFF80000007FFE0000FFF80000007FFC0000FFF8000000FFFC0000FFF80000 -00FFF80000FFFC000001FFF80000FFFC000001FFF00000FFFE000003FFE00000FFFF0000 -07FFC00000FFFF80000FFF800000FFFFE0001FFF000000FFFFF0007FFE000000FFF9FE01 -FFF8000000FFF8FFFFFFF0000000FFF83FFFFFC0000000FFF807FFFE00000000FFF800FF -E000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF80000 -0000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF80000 -0000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF80000 -0000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF80000 -0000000000FFF8000000000000FFFFFFF80000000000FFFFFFF80000000000FFFFFFF800 -00000000FFFFFFF80000000000FFFFFFF80000000000414D7DB549>I<000003FF80000F -800000003FFFF0001F80000000FFFFFC003F80000007FFFFFF003F8000000FFFC03F807F -8000003FFF000FC07F8000007FFC0003E0FF800000FFF80001F1FF800001FFF00000F9FF -800003FFE000007FFF800007FFC000007FFF80000FFFC000003FFF80000FFF8000001FFF -80001FFF8000001FFF80001FFF0000000FFF80003FFF0000000FFF80003FFF0000000FFF -80007FFE0000000FFF80007FFE0000000FFF80007FFE0000000FFF80007FFE0000000FFF -8000FFFC0000000FFF8000FFFC0000000FFF8000FFFC0000000FFF8000FFFC0000000FFF -8000FFFC0000000FFF8000FFFC0000000FFF8000FFFC0000000FFF8000FFFC0000000FFF -8000FFFC0000000FFF8000FFFC0000000FFF8000FFFC0000000FFF8000FFFC0000000FFF -8000FFFC0000000FFF80007FFE0000000FFF80007FFE0000000FFF80007FFE0000000FFF -80007FFE0000000FFF80003FFE0000000FFF80003FFF0000000FFF80003FFF0000000FFF -80001FFF0000000FFF80001FFF8000001FFF80000FFF8000003FFF800007FFC000003FFF -800007FFE000007FFF800003FFE00000FFFF800001FFF00001FFFF800000FFF80007EFFF -8000003FFE000FCFFF8000001FFF807F8FFF80000007FFFFFE0FFF80000001FFFFF80FFF -800000007FFFE00FFF8000000007FF000FFF800000000000000FFF800000000000000FFF -800000000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF -800000000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF -800000000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF -800000000000000FFF800000000000000FFF800000000000000FFF8000000000000FFFFF -FF80000000000FFFFFFF80000000000FFFFFFF80000000000FFFFFFF80000000000FFFFF -FF80414D7CB545>I<003FF001FC00FFFFF00FFF80FFFFF01FFFE0FFFFF07FFFF0FFFFF0 -FE1FF8FFFFF1F83FF801FFF1F07FFC00FFF3E07FFC00FFF3C07FFC00FFF7807FFC00FFF7 -807FFC00FFFF007FFC00FFFF003FF800FFFE001FF000FFFE000FE000FFFE00000000FFFC -00000000FFFC00000000FFFC00000000FFFC00000000FFF800000000FFF800000000FFF8 -00000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF8 -00000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF8 -00000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF8 -00000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF8 -00000000FFF800000000FFF8000000FFFFFFFE0000FFFFFFFE0000FFFFFFFE0000FFFFFF -FE0000FFFFFFFE00002E367DB535>I<0003FFC00E00001FFFFC1E0000FFFFFF7E0003FF -FFFFFE0007FE003FFE000FF0000FFE001FE00003FE003FC00001FE003F800000FE007F80 -0000FE007F0000007E007F0000007E00FF0000003E00FF0000003E00FF8000003E00FF80 -00003E00FFC000003E00FFF000000000FFFC00000000FFFF800000007FFFFE0000007FFF -FFF000003FFFFFFE00003FFFFFFF80001FFFFFFFE0000FFFFFFFF00007FFFFFFFC0003FF -FFFFFE0000FFFFFFFF00003FFFFFFF00000FFFFFFF800001FFFFFF8000000FFFFFC00000 -003FFFC000000007FFE000000001FFE0F8000000FFE0F80000007FE0FC0000003FE0FC00 -00003FE0FC0000001FE0FE0000001FE0FE0000001FE0FE0000001FC0FF0000001FC0FF80 -00003FC0FF8000003F80FFC000003F80FFE000007F00FFF80000FF00FFFC0003FE00FFFF -801FFC00FE7FFFFFF000F81FFFFFC000F007FFFF0000E0007FF000002B387CB634>I<00 -007C00000000007C00000000007C00000000007C00000000007C00000000007C00000000 -00FC0000000000FC0000000000FC0000000000FC0000000001FC0000000001FC00000000 -01FC0000000003FC0000000003FC0000000007FC0000000007FC000000000FFC00000000 -1FFC000000003FFC000000007FFC00000000FFFC00000003FFFC0000000FFFFFFFFE00FF -FFFFFFFE00FFFFFFFFFE00FFFFFFFFFE00FFFFFFFFFE00007FFC000000007FFC00000000 -7FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00000000 -7FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00000000 -7FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00000000 -7FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00000000 -7FFC000000007FFC000F80007FFC000F80007FFC000F80007FFC000F80007FFC000F8000 -7FFC000F80007FFC000F80007FFC000F80007FFC000F80007FFC000F80007FFC000F8000 -7FFC001F00003FFE001F00003FFE001F00001FFE003E00001FFF003E00000FFF807C0000 -07FFC1F8000003FFFFF0000000FFFFE00000003FFF8000000003FE0000294D7ECB33>I< -003FF8000001FFC000FFFFF80007FFFFC000FFFFF80007FFFFC000FFFFF80007FFFFC000 -FFFFF80007FFFFC000FFFFF80007FFFFC00003FFF800001FFFC00000FFF8000007FFC000 -00FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC000 -00FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC000 -00FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC000 -00FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC000 -00FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC000 -00FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC000 -00FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC000 -00FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800000FFFC000 -00FFF800000FFFC00000FFF800000FFFC00000FFF800001FFFC00000FFF800001FFFC000 -00FFF800003FFFC000007FF800003FFFC000007FF800007FFFC000003FFC0000F7FFC000 -003FFC0001E7FFF000001FFE0007C7FFFFC0000FFF801F87FFFFC00007FFFFFF07FFFFC0 -0001FFFFFC07FFFFC000007FFFF007FFFFC0000007FFC007FF000042377CB549>IIIII E -%EndDVIPSBitmapFont -end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 600dpi -TeXDict begin -%%BeginPaperSize: a4 -/setpagedevice where -{ pop << /PageSize [595 842] >> setpagedevice } -{ /a4 where { pop a4 } if } -ifelse -%%EndPaperSize - end -%%EndSetup -%%Page: 1 1 -TeXDict begin 1 0 bop 0 91 a Fj(Con)l(ten)l(ts)0 295 -y Fi(1)84 b(Mo)s(dule)34 b Fh(Cookie_lexer)2769 b Fi(1)0 -498 y(2)84 b(Mo)s(dule)44 b Fh(Http_common)h Fi(:)66 -b(Common)43 b(functionalities)i(shared)g(b)m(y)f(other)h(OCaml)f(HTTP) -136 611 y(mo)s(dules)3337 b(1)0 814 y(3)84 b(Mo)s(dule)34 -b Fh(Http_constants)h Fi(:)46 b(Constan)m(ts)2113 b(2)136 -927 y Fg(3.1)92 b(daemon)32 b(default)f(v)-5 b(alues)70 -b(.)46 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) -h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h -(.)137 b(2)0 1130 y Fi(4)84 b(Mo)s(dule)34 b Fh(Http_daemon)h -Fi(:)46 b(Main)35 b(OCaml)f(HTTP)h(mo)s(dule.)1389 b(3)0 -1334 y(5)84 b(Mo)s(dule)34 b Fh(Http_message)h Fi(:)46 -b(Ob)6 b(ject)34 b(Orien)m(ted)h(represen)m(tation)h(of)e(HTTP)h -(messages)345 b(6)343 1447 y Fg(5.0.1)105 b Ff(he)-5 -b(ader)41 b(name)e(c)-5 b(omp)g(arison)40 b(ar)-5 b(e)41 -b(p)-5 b(erforme)g(d)41 b(in)e(a)g(c)-5 b(ase-insensitive)41 -b(manner)e(as)g(r)-5 b(e-)633 1559 y(quir)g(e)g(d)36 -b(by)e(RF)n(C2616,)g(actual)5 b(ly)34 b(the)h(implementation)f(works)g -(c)-5 b(onverting)36 b(al)5 b(l)34 b(he)-5 b(ader)633 -1672 y(names)32 b(in)g(lower)-5 b(c)g(ase)46 b Fg(.)g(.)f(.)h(.)g(.)f -(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) -g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)137 b(6)0 1876 -y Fi(6)84 b(Mo)s(dule)23 b Fh(Http_misc)g Fi(:)40 b(Help)s(ers)24 -b(and)f(other)h(not)f(b)s(etter)h(classi\034ed)g(functions)e(whic)m(h)h -(should)136 1989 y(not)34 b(b)s(e)h(exp)s(osed)f(in)h(the)g(\034nal)f -(API)2271 b(8)0 2192 y(7)84 b(Mo)s(dule)34 b Fh(Http_parser)h -Fi(:)46 b(HTTP)35 b(messages)g(parsing)1551 b(10)0 2395 -y(8)84 b(Mo)s(dule)48 b Fh(Http_parser_sanity)h Fi(:)75 -b(Sanit)m(y)48 b(test)j(functions)d(related)h(to)h(HTTP)f(message)136 -2508 y(parsing)3329 b(11)0 2711 y(9)84 b(Mo)s(dule)34 -b Fh(Http_request)h Fi(:)46 b(Ob)6 b(ject)34 b(Orien)m(ted)h(represen)m -(tation)h(of)e(HTTP)h(requests)327 b(11)0 2915 y(10)32 -b(Mo)s(dule)i Fh(Http_response)h Fi(:)46 b(Ob)6 b(ject)34 -b(Orien)m(ted)h(represen)m(tation)h(of)e(HTTP)h(resp)s(onses)221 -b(12)0 3118 y(11)32 b(Mo)s(dule)i Fh(Http_tcp_server)h -Fi(:)46 b(TCP)34 b(serv)m(ers)h(used)f(as)h(lo)m(w-lev)m(els)g(for)f -(HTTP)h(daemons)148 b(12)136 3231 y Fg(11.1)47 b(serv)m(ers)h(.)d(.)h -(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) -f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f -(.)h(.)f(.)h(.)g(.)f(.)h(.)92 b(12)136 3344 y(11.2)47 -b(lo)m(w)32 b(lev)m(el)f(functions)80 b(.)46 b(.)f(.)h(.)f(.)h(.)f(.)h -(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) -f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)92 b(12)0 -3547 y Fi(12)32 b(Mo)s(dule)i Fh(Http_threaded_tcp_server)g -Fi(:)46 b(Multithreaded)36 b(part)e(of)h(Http_tcp_serv)m(er)211 -b(12)0 3750 y(13)32 b(Mo)s(dule)i Fh(Http_types)h Fi(:)46 -b(T)m(yp)s(e)34 b(de\034nitions)1965 b(12)136 3863 y -Fg(13.1)47 b(Exceptions)26 b(.)46 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h -(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) -f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)92 -b(15)136 3976 y(13.2)47 b(OO)31 b(represen)m(tation)i(of)d(HTTP)h -(messages)77 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h -(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)92 -b(16)343 4089 y(13.2.1)60 b(facilities)30 b(to)h(access)f(some)h -(frequen)m(tly)f(used)h(headers)42 b(.)k(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.) -h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)92 b(19)136 4202 y(13.3)47 -b(Daemon)32 b(sp)s(eci\034cation)40 b(.)45 b(.)h(.)f(.)h(.)f(.)h(.)g(.) -f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h -(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)92 b(20)136 -4315 y(13.4)47 b(OO)31 b(represen)m(tation)i(of)d(other)h(HTTP)g(en)m -(tities)52 b(.)46 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g -(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)92 b(21)0 4518 -y Fi(14)32 b(Mo)s(dule)i Fh(Http_user_agent)h Fi(:)46 -b(Minimal)34 b(implemen)m(tation)h(of)f(an)h(HTTP)g(1.0/1.1)f(clien)m -(t.)90 b(22)0 4805 y Fj(1)131 b(Mo)t(dule)44 b Fe(Cookie_lexer)0 -5151 y Fh(type)j(cookie_token)g(=)g([)f(`ASSIGNMENT)h(of)g(string)g(*)g -(string)g(|)g(`EOF)g(|)g(`SEP)f(])1927 5400 y Fg(1)p -eop end -%%Page: 2 2 -TeXDict begin 2 1 bop 0 91 a Fh(val)47 b(token)g(:)g(Lexing.lexbuf)f -(->)h(cookie_token)0 377 y Fj(2)131 b(Mo)t(dule)55 b -Fe(Http_common)d Fj(:)82 b(Common)54 b(functionalities)k(shared)e(b)l -(y)g(other)197 527 y(OCaml)44 b(HTTP)g(mo)t(dules)0 872 -y Fh(val)j(debug)g(:)g(bool)g(Pervasives.ref)227 1010 -y Fg(whether)32 b(debugging)g(messages)e(are)h(enabled)g(or)g(not,)f -(can)h(b)s(e)f(c)m(hanged)i(at)f(run)m(time)0 1220 y -Fh(val)47 b(debug_print)g(:)g(string)f(->)h(unit)227 -1358 y Fg(prin)m(t)32 b(a)e(string)h(on)f(stderr)h(only)f(if)g -(debugging)i(is)e(enabled)0 1568 y Fh(val)47 b(http_version)g(:)g -(Http_types.version)227 1706 y Fg(see)30 b Fh(Http_constants.version)p -Fg([3])0 1917 y Fh(val)47 b(server_string)g(:)g(string)227 -2054 y Fg(see)30 b Fh(Http_constants.server_string)p -Fg([3])0 2265 y Fh(val)47 b(string_of_version)f(:)h(Http_types.version) -g(->)g(string)227 2402 y Fg(prett)m(y)31 b(prin)m(t)h(an)f(HTTP)f(v)m -(ersion)0 2613 y Fh(val)47 b(version_of_string)f(:)h(string)g(->)g -(Http_types.version)227 2750 y Fg(parse)31 b(an)f(HTTP)h(v)m(ersion)g -(from)g(a)f(string)227 2900 y Fi(Raises)h Fh(Invalid_HTTP_version)e -Fg(if)h(giv)m(en)h(string)g(do)s(esn't)f(represen)m(t)i(a)f(supp)s -(orted)f(HTTP)h(v)m(ersion)0 3111 y Fh(val)47 b(string_of_method)g(:)f -(Http_types.meth)h(->)g(string)227 3248 y Fg(prett)m(y)31 -b(prin)m(t)h(an)f(HTTP)f(metho)s(d)0 3459 y Fh(val)47 -b(method_of_string)g(:)f(string)h(->)g(Http_types.meth)227 -3596 y Fg(parse)31 b(an)f(HTTP)h(metho)s(d)g(from)g(a)f(string)227 -3746 y Fi(Raises)h Fh(Invalid_HTTP_method)e Fg(if)h(giv)m(en)h(string)g -(do)s(esn't)f(represen)m(t)i(a)f(supp)s(orted)f(metho)s(d)0 -3957 y Fh(val)47 b(status_of_code)g(:)g(int)f(->)h(Http_types.status) -227 4094 y Fg(con)m(v)m(erts)32 b(an)e(in)m(teger)i(HTTP)f(status)f(to) -h(the)g(corresp)s(onding)g(status)f(v)-5 b(alue)227 4244 -y Fi(Raises)31 b Fh(Invalid_code)f Fg(if)g(giv)m(en)h(in)m(teger)g -(isn't)g(a)f(v)-5 b(alid)31 b(HTTP)g(status)f(co)s(de)0 -4455 y Fh(val)47 b(code_of_status)g(:)g([<)f(Http_types.status)h(])g -(->)g(int)227 4592 y Fg(con)m(v)m(erts)32 b(an)e(HTTP)h(status)g(to)f -(the)h(corresp)s(onding)g(in)m(teger)h(v)-5 b(alue)0 -4803 y Fh(val)47 b(is_informational)g(:)f(int)h(->)g(bool)227 -4940 y Fi(Returns)34 b Fg(true)d(on)g("informational")h(status)e(co)s -(des,)g(false)g(elsewhere)0 5151 y Fh(val)47 b(is_success)g(:)g(int)g -(->)f(bool)1927 5400 y Fg(2)p eop end -%%Page: 3 3 -TeXDict begin 3 2 bop 227 91 a Fi(Returns)34 b Fg(true)d(on)g -("success")f(status)g(co)s(des,)g(false)g(elsewhere)0 -304 y Fh(val)47 b(is_redirection)g(:)g(int)f(->)h(bool)227 -442 y Fi(Returns)34 b Fg(true)d(on)g("redirection")h(status)e(co)s -(des,)g(false)g(elsewhere)0 654 y Fh(val)47 b(is_client_error)g(:)f -(int)h(->)g(bool)227 792 y Fi(Returns)34 b Fg(true)d(on)g("clien)m(t)g -(error")h(status)e(co)s(des,)g(false)g(elsewhere)0 1005 -y Fh(val)47 b(is_server_error)g(:)f(int)h(->)g(bool)227 -1142 y Fi(Returns)34 b Fg(true)d(on)g("serv)m(er)g(error")g(status)f -(co)s(des,)g(false)g(elsewhere)0 1355 y Fh(val)47 b(is_error)g(:)g(int) -g(->)f(bool)227 1493 y Fi(Returns)34 b Fg(true)d(on)g("clien)m(t)g -(error")h(and)e("serv)m(er)h(error")g(status)g(co)s(de,)f(false)g -(elsewhere)0 1854 y Fj(3)131 b(Mo)t(dule)44 b Fe(Http_constants)39 -b Fj(:)58 b(Constan)l(ts)0 2200 y Fh(val)47 b(version)g(:)g -(Http_types.version)227 2338 y Fg(default)31 b(HTTP)g(v)m(ersion)0 -2550 y Fh(val)47 b(server_string)g(:)g(string)227 2688 -y Fg(string)31 b(returned)h(as)e(v)-5 b(alue)30 b(of)g("Serv)m(er:")i -(resp)s(onse)e(header)0 2900 y Fh(val)47 b(crlf)g(:)g(string)227 -3038 y Fg("\\r\\n")32 b(string)0 3356 y Fd(3.1)112 b(daemon)38 -b(default)f(v)-6 b(alues)0 3553 y Fh(val)47 b(default_addr)g(:)g -(string)0 3691 y(val)g(default_auth)g(:)g(\(string)f(*)h -(Http_types.auth_info\))g(option)0 3829 y(val)g(default_auto_close)f(:) -h(bool)0 3966 y(val)g(default_callback)g(:)f(Http_types.request)h(->)g -(Pervasives.out_channel)f(->)h(unit)0 4104 y(val)g(default_mode)g(:)g -(Http_types.daemon_mode)0 4242 y(val)g(default_port)g(:)g(int)0 -4380 y(val)g(default_root_dir)g(:)f(string)h(option)0 -4518 y(val)g(default_exn_handler)f(:)h(\(exn)g(->)g -(Pervasives.out_channel)g(->)g(unit\))f(option)0 4655 -y(val)h(default_timeout)g(:)f(int)h(option)1927 5400 -y Fg(3)p eop end -%%Page: 4 4 -TeXDict begin 4 3 bop 0 91 a Fj(4)131 b(Mo)t(dule)44 -b Fe(Http_daemon)c Fj(:)58 b(Main)44 b(OCaml)f(HTTP)h(mo)t(dule.)0 -294 y Fg(Here)30 b(y)m(ou)h(can)g(\034nd)g(t)m(w)m(o)g(set)g(of)f -(functions:)136 482 y Fc(\017)46 b Fg(functions)31 b(whic)m(h)h(let)e -(y)m(ou)h(start)f(an)h(HTTP)g(Daemon)g(\(start*)g(functions\))136 -669 y Fc(\017)46 b Fg(facilit)m(y)31 b(functions)g(whic)m(h)h(let)e(y)m -(ou)h(sen)m(t)g(resp)s(onses)e(bac)m(k)i(to)g(clien)m(ts)0 -1000 y Fh(val)47 b(send_CRLF)g(:)g(Pervasives.out_channel)f(->)h(unit) -227 1138 y Fg(send)31 b(a)f(CRLF)g(sequence)h(on)g(the)f(giv)m(en)h -(output)h(c)m(hannel,)g(this)e(is)g(mandatory)h(after)g(the)g(last)f -(header)227 1251 y(w)m(as)h(sen)m(t)g(and)g(b)s(efore)f(start)g -(sending)h(the)g(resp)s(onse)f(b)s(o)s(dy)0 1463 y Fh(val)47 -b(send_status_line)g(:)94 1576 y(?version:Http_types.version)f(->)94 -1689 y(code:Http_types.status_code)g(->)h(Pervasives.out_channel)g(->)g -(unit)227 1827 y Fg(send)31 b(resp)s(onse)f(status)g(line,)h(v)m -(ersion)g(is)f(the)g(h)m(ttp)i(v)m(ersion)f(used)f(in)h(resp)s(onse,)f -(either)h(co)s(de)f(or)h(status)227 1940 y(m)m(ust)g(b)s(e)e(giv)m(en)h -(\(not)h(b)s(oth,)f(not)g(none\))g(whic)m(h)h(represen)m(t)g(the)f -(HTTP)g(resp)s(onse)g(co)s(de,)g(outc)m(han)h(is)e(the)227 -2053 y(output)j(c)m(hannel)g(to)e(whic)m(h)i(send)e(status)g(line)0 -2265 y Fh(val)47 b(get_basic_headers)f(:)h(unit)g(->)g(\(string)g(*)g -(string\))g(list)227 2403 y Fg(returns)31 b(the)g(basic)f(headers)h -("Date",)h("Serv)m(er")f(and)g("Connection")h(used)f(in)f -(send_basic_headers)0 2616 y Fh(val)47 b(send_basic_headers)f(:)94 -2729 y(?version:Http_types.version)g(->)94 2842 y -(code:Http_types.status_code)g(->)h(Pervasives.out_channel)g(->)g(unit) -227 2979 y Fg(lik)m(e)31 b(send_status_line)h(but)e(additionally)i -(will)f(also)f(send)h("Date",)g("Serv)m(er")h(and)e("Connection")227 -3092 y(standard)h(headers)0 3305 y Fh(val)47 b(send_header)g(:)94 -3418 y(header:string)g(->)g(value:string)f(->)h(Pervasives.out_channel) -g(->)g(unit)227 3556 y Fg(send)31 b(an)f(HTTP)h(header)g(on)g(outc)m -(han)0 3768 y Fh(val)47 b(send_headers)g(:)94 3881 y(headers:\(string)g -(*)g(string\))f(list)h(->)g(Pervasives.out_channel)g(->)g(unit)227 -4019 y Fg(as)30 b(send_header,)i(but)f(for)f(a)g(list)h(of)f(pairs)g -Fb(<)p Fg(header,)h(v)-5 b(alue)p Fb(>)0 4231 y Fh(val)47 -b(send_file)g(:)g(src:Http_types.file_source)f(->)h -(Pervasives.out_channel)f(->)h(unit)227 4369 y Fg(send)31 -b(a)f(\034le)h(through)g(an)g(out_c)m(hannel)0 4582 y -Fh(val)47 b(respond)g(:)94 4695 y(?body:string)g(->)94 -4808 y(?headers:\(string)g(*)g(string\))f(list)h(->)94 -4920 y(?version:Http_types.version)f(->)94 5033 y -(?code:Http_types.status_code)g(->)h(Pervasives.out_channel)g(->)g -(unit)1927 5400 y Fg(4)p eop end -%%Page: 5 5 -TeXDict begin 5 4 bop 227 91 a Fg(high)31 b(lev)m(el)g(resp)s(onse)f -(function,)h(resp)s(ond)g(on)f(outc)m(han)i(sending:)42 -b(basic)30 b(headers)h(\(including)227 204 y(Con)m(ten)m(t-Length)j -(computed)d(using)f('b)s(o)s(dy')f(argumen)m(t\),)j(headers)e(probided) -h(via)e('headers')i(argumen)m(t,)227 317 y(b)s(o)s(dy)f(giv)m(en)h(via) -f('b)s(o)s(dy')g(argumen)m(t.)42 b(Default)31 b(resp)s(onse)f(status)g -(is)g(200,)h(default)g(resp)s(onse)f(HTTP)227 430 y(v)m(ersion)h(is)f -(Http_common.h)m(ttp_v)m(ersion)0 643 y Fh(val)47 b(respond_not_found)f -(:)94 756 y(url:string)h(->)g(?version:Http_types.version)f(->)h -(Pervasives.out_channel)f(->)h(unit)227 893 y Fg(send)31 -b(a)f(404)h(\(not)g(found\))f(HTTP)h(resp)s(onse)0 1106 -y Fh(val)47 b(respond_forbidden)f(:)94 1219 y(url:string)h(->)g -(?version:Http_types.version)f(->)h(Pervasives.out_channel)f(->)h(unit) -227 1357 y Fg(send)31 b(a)f(403)h(\(forbidden\))g(HTTP)g(resp)s(onse)0 -1569 y Fh(val)47 b(respond_redirect)g(:)94 1682 y(location:string)g(->) -94 1795 y(?body:string)g(->)94 1908 y(?version:Http_types.version)f(->) -94 2021 y(?code:Http_types.status_code)g(->)h(Pervasives.out_channel)g -(->)g(unit)227 2159 y Fg(send)31 b(a)f("redirection")i(class)e(resp)s -(onse,)h(optional)g(b)s(o)s(dy)f(argumen)m(t)i(con)m(tains)g(data)e -(that)h(will)g(b)s(e)227 2271 y(displa)m(y)m(ed)h(in)f(the)f(b)s(o)s -(dy)g(of)g(the)g(resp)s(onse,)h(default)f(resp)s(onse)h(status)f(is)g -(301)g(\(mo)m(v)m(ed)i(p)s(ermanen)m(tly\),)227 2384 -y(only)f(redirection)h(status)e(are)h(accepted)g(b)m(y)g(this)f -(function,)h(other)g(v)-5 b(alues)31 b(will)f(raise)h(F)-8 -b(ailure)0 2597 y Fh(val)47 b(respond_unauthorized)f(:)94 -2710 y(?version:Http_types.version)g(->)94 2823 y(?realm:string)h(->)g -(Pervasives.out_channel)f(->)h(unit)227 2961 y Fg(resp)s(ond)31 -b(with)g(a)f(401)h(\(Unauthorized\))h(resp)s(onse)e(asking)g(for)h -(authen)m(tication)i(against)e(giv)m(en)g(realm)227 3073 -y(\(default)g(is)f(the)h(serv)m(er)g(name\))0 3286 y -Fh(val)47 b(respond_error)g(:)94 3399 y(?body:string)g(->)94 -3512 y(?version:Http_types.version)f(->)94 3625 y -(?code:Http_types.status_code)g(->)h(Pervasives.out_channel)g(->)g -(unit)227 3763 y Fg(send)31 b(an)f("error")i(resp)s(onse)e(\(i.e.)41 -b(400)30 b Fc(\024)g Fg(status)g Fb(<)g Fg(600\),)h(optional)h(b)s(o)s -(dy)d(argumen)m(t)k(as)d(p)s(er)227 3875 y(send_redirect,)i(default)d -(resp)s(onse)g(status)h(is)f(400)g(\(bad)h(request\),)g(only)f(error)h -(status)f(are)h(accepted)h(b)m(y)227 3988 y(this)g(function,)g(other)g -(v)-5 b(alues)30 b(will)h(raise)f(F)-8 b(ailure)0 4201 -y Fh(val)47 b(respond_file)g(:)94 4314 y(fname:string)g(->)g -(?version:Http_types.version)f(->)h(Pervasives.out_channel)f(->)h(unit) -227 4452 y Fg(tipical)32 b(static)e(pages)h(h)m(ttp)g(daemon)h(b)s(eha) -m(viour,)f(if)f(requested)h(url)f(is)g(a)h(\034le,)f(return)i(it,)e(it) -h(it)f(is)g(a)227 4565 y(directory)h(return)h(a)e(directory)h(listing)g -(of)f(it)0 4777 y Fh(val)47 b(respond_with)g(:)g(Http_types.response)f -(->)h(Pervasives.out_channel)g(->)f(unit)227 4915 y Fg(resp)s(ond)31 -b(using)f(a)h(prebuilt)g(Http_t)m(yp)s(es.resp)s(onse)g(ob)5 -b(ject)0 5127 y Fh(val)47 b(main)g(:)g(Http_types.daemon_spec)f(->)h -(unit)1927 5400 y Fg(5)p eop end -%%Page: 6 6 -TeXDict begin 6 5 bop 227 91 a Fg(start)31 b(an)f(HTTP)h(daemon)0 -284 y Fh(val)47 b(default_spec)g(:)g(Http_types.daemon_spec)227 -417 y Fg(default)31 b(daemon)h(sp)s(eci\034cation:)336 -595 y Fc(\017)46 b Fg(listen)31 b(on)f(0.0.0.0,)i(p)s(ort)e(80)336 -731 y Fc(\017)46 b Fg("alw)m(a)m(ys)32 b(ok")e(callbac)m(k)i(\(return)f -(an)f(empt)m(y)i(resp)s(onse,)e(resp)s(onse)g(co)s(de)g(200\))336 -868 y Fc(\017)46 b Fg(fork)30 b(a)g(c)m(hild)i(for)e(eac)m(h)h(request) -336 1004 y Fc(\017)46 b Fg(do)31 b(not)g(c)m(hange)g(to)g(a)f(ro)s(ot)h -(directory)g(\(i.e.)41 b(k)m(eep)31 b(cwd\))336 1141 -y Fc(\017)46 b Fg(300)31 b(seconds)f(timeout)336 1277 -y Fc(\017)46 b Fg(ignores)31 b(exceptions)336 1413 y -Fc(\017)46 b Fg(no)31 b(authen)m(tication)i(required)336 -1550 y Fc(\017)46 b Fg(do)31 b(not)g(automatically)h(close)e(clien)m(t) -i(connections)f(after)g(callbac)m(k)0 1788 y Fh(val)47 -b(daemon_spec)g(:)94 1900 y(?address:string)g(->)94 2013 -y(?auth:\(string)g(*)g(Http_types.auth_info\))f(option)h(->)94 -2126 y(?auto_close:bool)g(->)94 2239 y(?callback:\(Http_types.request)f -(->)h(Pervasives.out_channel)g(->)g(unit\))f(->)94 2352 -y(?mode:Http_types.daemon_mode)g(->)94 2465 y(?port:int)h(->)94 -2578 y(?root_dir:string)g(option)f(->)94 2691 y(?exn_handler:\(exn)h -(->)f(Pervasives.out_channel)h(->)g(unit\))g(option)g(->)94 -2804 y(?timeout:int)g(option)f(->)h(unit)g(->)g(Http_types.daemon_spec) -227 2937 y Fg(curri\034ed)32 b(daemon_sp)s(ec)f(constructor.)42 -b(Eac)m(h)32 b(parameter)g(of)e(this)g(function)h(corresp)s(onds)g(to)f -(one)h(\034eld)227 3050 y(of)f(Http_t)m(yp)s(es.daemon_sp)s(ec)i(and)f -(defaults)g(to)f(the)h(corresp)s(onding)g(\034eld)g(of)227 -3162 y(Http_daemon.default_sp)s(ec)0 3355 y Fh(class)47 -b(daemon)g(:)g(?addr:string)f(->)h(?port:int)g(->)g(unit)g(->)g -(Http_types.daemon)227 3488 y Fg(Ob)5 b(ject)31 b(orien)m(ted)h(in)m -(terface)g(to)e(HTTP)h(daemons.)0 3681 y Fh(module)47 -b(Trivial)g(:)90 3794 y(sig)227 3945 y(val)g(callback)g(:)g -(Http_types.request)f(->)h(Pervasives.out_channel)g(->)g(unit)427 -4111 y Fg(callbac)m(k)32 b(function,)f(exp)s(osed)f(if)g(y)m(ou)h(lik)m -(e)f(to)h(use)f(it)h(as)f(a)g(basis)g(to)g(de\034ne)i(a)e(more)h(p)s(o) -m(w)m(erful)427 4223 y(daemon)227 4416 y Fh(val)47 b(main)g(:)g -(Http_types.daemon_spec)f(->)h(unit)427 4582 y Fg(start)31 -b(the)f("trivial")i(HTTP)f(daemon)90 4787 y Fh(end)227 -4960 y Fg(T)-8 b(rivial)32 b(static)e(pages)h(HTTP)g(daemon.)41 -b(Daemons)31 b(created)h(using)e(this)h(mo)s(dule)f(will)h(serv)m(e)g -(directory)227 5073 y(indexes)g(and)f(\034les)h(found)f(starting)h -(from)g(the)g(w)m(orking)g(directory)1927 5400 y(6)p -eop end -%%Page: 7 7 -TeXDict begin 7 6 bop 0 91 a Fj(5)131 b(Mo)t(dule)41 -b Fe(Http_message)d Fj(:)57 b(Ob)7 b(ject)42 b(Orien)l(ted)g(represen)l -(tation)g(of)g(HTTP)197 241 y(messages)0 586 y Fh(class)47 -b(virtual)g(message)f(:)h(body:string)g(->)g(headers:\(string)g(*)g -(string\))g(list)f(->)h(version:Http_types.version)g(option)g(->)f -(clisockaddr:Unix.sockaddr)h(->)g(srvsockaddr:Unix.sockaddr)f(->)90 -699 y(object)227 869 y(method)h(version)g(:)g(Http_types.version)f -(option)427 1042 y Fi(Returns)34 b Fg(message)d(HTTP)g(v)m(ersion,)g -(it)f(can)h(b)s(e)f(None)g(b)s(ecause)h(older)g(v)m(ersion)g(of)f(the)g -(HTTP)427 1155 y(proto)s(col)f(don't)g(require)g(HTTP)g(v)m(ersion)g -(to)g(b)s(e)f(told)g(b)s(et)m(w)m(een)j(message)d(source)h(and)g -(destination)227 1364 y Fh(method)47 b(setVersion)g(:)g -(Http_types.version)f(->)h(unit)427 1537 y Fg(set)30 -b(message)h(HTTP)g(v)m(ersion)227 1745 y Fh(method)47 -b(body)g(:)g(string)427 1918 y Fi(Returns)34 b Fg(message)d(b)s(o)s(dy) -227 2127 y Fh(method)47 b(setBody)g(:)g(string)g(->)g(unit)427 -2300 y Fg(set)30 b(message)h(b)s(o)s(dy)227 2509 y Fh(method)47 -b(bodyBuf)g(:)g(Buffer.t)427 2682 y Fi(Returns)34 b Fg(a)d(Bu\033er.t)f -(connected)i(to)f(message)f(b)s(o)s(dy)g(\(W)-8 b(arning:)42 -b(c)m(hanging)32 b(this)e(bu\033er)h(will)427 2795 y(c)m(hange)h -(message)f(b)s(o)s(dy)e(to)s(o\))227 3004 y Fh(method)47 -b(setBodyBuf)g(:)g(Buffer.t)g(->)g(unit)427 3177 y Fg(set)30 -b(a)h(new)g(Bu\033er.t)f(used)h(to)f(k)m(eep)h(message)g(b)s(o)s(dy)227 -3385 y Fh(method)47 b(addBody)g(:)g(string)g(->)g(unit)427 -3558 y Fg(app)s(end)31 b(a)f(string)h(to)g(message)f(b)s(o)s(dy)227 -3767 y Fh(method)47 b(addBodyBuf)g(:)g(Buffer.t)g(->)g(unit)427 -3940 y Fg(app)s(end)31 b(a)f(whole)i(bu\033er)e(to)h(message)f(b)s(o)s -(dy)227 4288 y Fi(5.0.1)104 b Ff(he)-5 b(ader)40 b(name)g(c)-5 -b(omp)g(arison)39 b(ar)-5 b(e)41 b(p)-5 b(erforme)g(d)40 -b(in)f(a)g(c)-5 b(ase-insensitive)40 b(manner)f(as)g(r)-5 -b(e)g(quir)g(e)g(d)43 b(by)227 4400 y(RF)n(C2616,)31 -b(actual)5 b(ly)33 b(the)g(implementation)f(works)h(c)-5 -b(onverting)33 b(al)5 b(l)33 b(he)-5 b(ader)34 b(names)e(in)f(lower)-5 -b(c)g(ase)227 4596 y Fh(method)47 b(addHeader)g(:)g(name:string)g(->)f -(value:string)h(->)g(unit)427 4769 y Fg(add)31 b(an)g(HTTP)g(header)227 -4978 y Fh(method)47 b(addHeaders)g(:)g(\(string)g(*)g(string\))f(list)h -(->)g(unit)427 5151 y Fg(add)31 b(a)f(list)h(of)f(HTTP)g(headers)1927 -5400 y(7)p eop end -%%Page: 8 8 -TeXDict begin 8 7 bop 227 91 a Fh(method)47 b(replaceHeader)g(:)g -(name:string)f(->)h(value:string)g(->)g(unit)427 267 -y Fg(lik)m(e)31 b(addHeader)g(but)g(replace)h(previous)e(de\034nition)i -(of)e(the)h(same)f(header)227 479 y Fh(method)47 b(replaceHeaders)g(:)g -(\(string)g(*)f(string\))h(list)g(->)g(unit)427 654 y -Fg(lik)m(e)31 b(addHeaders)g(but)g(replace)g(previous)g(de\034nition)h -(of)e(headers)h(that)f(w)m(ere)i(already)f(de\034ned)227 -867 y Fh(method)47 b(removeHeader)g(:)g(name:string)f(->)h(unit)427 -1042 y Fg(remo)m(v)m(e)32 b(_all_)f(o)s(ccurences)g(of)f(an)h(HTTP)g -(header)g(from)f(the)h(message)227 1254 y Fh(method)47 -b(hasHeader)g(:)g(name:string)g(->)f(bool)427 1430 y -Fi(Returns)34 b Fg(true)d(if)f(giv)m(en)h(header)g(exists)f(in)g -(message,)h(false)f(otherwise)227 1642 y Fh(method)47 -b(header)g(:)g(name:string)g(->)g(string)427 1817 y Fi(Raises)31 -b Fh(Header_not_found)f Fg(if)f(giv)m(en)i(header)h(w)m(asn't)f -(de\034ned)g(in)g(message)427 1947 y Fi(Returns)j Fg(v)-5 -b(alue)31 b(asso)s(ciated)f(to)h(a)f(giv)m(en)h(header)227 -2159 y Fh(method)47 b(headers)g(:)g(\(string)g(*)g(string\))f(list)427 -2335 y Fi(Returns)34 b Fg(the)d(full)f(set)g(of)g(headers)h(de\034ned)h -(for)e(this)g(message,)h(the)f(v)-5 b(alue)31 b(returned)h(is)d(an)427 -2447 y(asso)s(ciation)i(list)f(from)g(headers)h(name)g(to)g(headers)g -(v)-5 b(alue,)31 b(an)f(header)h(ma)m(y)g(o)s(ccurs)f(more)h(that)427 -2560 y(once)g(in)g(the)f(list)227 2773 y Fh(method)47 -b(clientSockaddr)g(:)g(Unix.sockaddr)427 2948 y Fi(Returns)34 -b Fg(clien)m(t)e(Unix.so)s(c)m(k)-5 b(addr)227 3161 y -Fh(method)47 b(clientAddr)g(:)g(string)427 3336 y Fi(Returns)34 -b Fg(clien)m(t)e(address)e(prett)m(y)h(prin)m(ted)227 -3548 y Fh(method)47 b(clientPort)g(:)g(int)427 3724 y -Fi(Returns)34 b Fg(clien)m(t)e(p)s(ort)227 3936 y Fh(method)47 -b(serverSockaddr)g(:)g(Unix.sockaddr)427 4111 y Fi(Returns)34 -b Fg(serv)m(er)d(Unix.so)s(c)m(k)-5 b(addr)227 4324 y -Fh(method)47 b(serverAddr)g(:)g(string)427 4499 y Fi(Returns)34 -b Fg(serv)m(er)d(address)f(prett)m(y)i(prin)m(ted)227 -4711 y Fh(method)47 b(serverPort)g(:)g(int)427 4887 y -Fi(Returns)34 b Fg(serv)m(er)d(p)s(ort)227 5099 y Fh(method)47 -b(private)g(virtual)g(fstLineToString)f(:)h(string)1927 -5400 y Fg(8)p eop end -%%Page: 9 9 -TeXDict begin 9 8 bop 427 91 a Fi(Returns)34 b Fg(for)c(requests)g -(\034rst)h(request)f(line,)h(for)f(resp)s(onses)g(\034rst)g(resp)s -(onse)g(line.)41 b(User)30 b(b)m(y)427 204 y(deriv)m(ed)i(requests)e -(and)h(resp)s(onses)e(to)i(implemen)m(t)h(toString)g(metho)s(d)227 -417 y Fh(method)47 b(toString)g(:)g(string)427 592 y -Fi(Returns)34 b Fg(a)d(string)f(represen)m(tation)j(of)d(the)h(message) -227 804 y Fh(method)47 b(serialize)g(:)g(Pervasives.out_channel)f(->)h -(unit)427 980 y Fg(serialize)31 b(the)g(message)g(o)m(v)m(er)g(an)f -(output)i(c)m(hannel)90 1205 y Fh(end)227 1392 y Fg(OO)f(represen)m -(tation)i(of)d(an)g(HTTP)h(message)0 1753 y Fj(6)131 -b(Mo)t(dule)41 b Fe(Http_misc)e Fj(:)57 b(Help)t(ers)42 -b(and)f(other)h(not)f(b)t(etter)h(classi\034ed)g(func-)197 -1903 y(tions)i(whic)l(h)h(should)g(not)e(b)t(e)h(exp)t(osed)f(in)h(the) -g(\034nal)g(API)0 2249 y Fh(val)j(date_822)g(:)g(unit)g(->)f(string)227 -2387 y Fi(Returns)34 b Fg(the)d(curren)m(t)h(date)f(complian)m(t)h(to)f -(RF)m(C)f(1123,)h(whic)m(h)h(up)s(dates)e(RF)m(C)h(822)f(zone)h(info)f -(are)227 2499 y(retriev)m(ed)i(from)e(UTC)0 2712 y Fh(val)47 -b(is_directory)g(:)g(string)f(->)h(bool)227 2850 y Fi(Returns)34 -b Fg(true)d(if)f('name')h(is)f(a)h(directory)g(on)f(the)h(\034le)g -(system,)f(false)g(otherwise)0 3062 y Fh(val)47 b(filesize)g(:)g -(string)f(->)h(int)227 3200 y Fi(Returns)34 b Fg(the)d(\034lesize)g(of) -f(fname)0 3413 y Fh(val)47 b(strip_trailing_slash)f(:)h(string)g(->)g -(string)227 3551 y Fg(strip)31 b(trailing)g('/',)g(if)f(an)m(y)-8 -b(,)31 b(from)g(a)f(string)h(and)227 3701 y Fi(Returns)j -Fg(the)d(new)g(string)0 3913 y Fh(val)47 b(strip_heading_slash)f(:)h -(string)g(->)g(string)227 4051 y Fg(strip)31 b(heading)g('/',)g(if)f -(an)m(y)-8 b(,)31 b(from)g(a)f(string)h(and)227 4201 -y Fi(Returns)j Fg(the)d(new)g(string)0 4414 y Fh(val)47 -b(ls)g(:)g(Unix.dir_handle)f(->)h(string)g(list)227 4552 -y Fg(giv)m(en)31 b(a)g(dir)f(handle)227 4702 y Fi(Returns)k -Fg(a)d(list)f(of)g(en)m(tries)h(con)m(tained)0 4915 y -Fh(val)47 b(string_explode)g(:)g(string)f(->)h(char)g(list)227 -5052 y Fg(explo)s(de)31 b(a)f(string)h(in)f(a)h(c)m(har)g(list)1927 -5400 y(9)p eop end -%%Page: 10 10 -TeXDict begin 10 9 bop 0 91 a Fh(val)47 b(string_implode)g(:)g(char)f -(list)h(->)g(string)227 229 y Fg(implo)s(de)31 b(a)g(c)m(har)g(list)f -(in)h(a)f(string)0 442 y Fh(val)47 b(reason_phrase_of_code)f(:)h(int)g -(->)g(string)227 579 y Fg(giv)m(en)31 b(an)g(HTTP)g(resp)s(onse)f(co)s -(de)g(return)i(the)e(corresp)s(onding)i(reason)f(phrase)0 -792 y Fh(val)47 b(build_sockaddr)g(:)g(string)f(*)h(int)g(->)g -(Unix.sockaddr)227 930 y Fg(build)31 b(a)g(Unix.so)s(c)m(k)-5 -b(addr)30 b(inet)h(address)f(from)h(a)f(string)h(represen)m(tation)i -(of)c(an)i(IP)f(address)h(and)g(a)f(p)s(ort)227 1043 -y(n)m(um)m(b)s(er)0 1255 y Fh(val)47 b(explode_sockaddr)g(:)f -(Unix.sockaddr)h(->)g(string)g(*)g(int)227 1393 y Fg(explo)s(de)31 -b(an)f(_inet_)i(Unix.so)s(c)m(k)-5 b(addr)30 b(address)h(in)f(a)h -(string)f(represen)m(tation)j(of)d(an)g(IP)h(address)f(and)h(a)227 -1506 y(p)s(ort)g(n)m(um)m(b)s(er)0 1719 y Fh(val)47 b -(peername_of_out_channel)f(:)h(Pervasives.out_channel)g(->)g -(Unix.sockaddr)227 1856 y Fg(giv)m(en)31 b(an)g(out_c)m(hannel)i(build) -e(on)f(top)h(of)f(a)g(so)s(c)m(k)m(et,)h(return)g(p)s(eername)h -(related)f(to)f(that)h(so)s(c)m(k)m(et)0 2069 y Fh(val)47 -b(peername_of_in_channel)f(:)h(Pervasives.in_channel)g(->)g -(Unix.sockaddr)227 2207 y Fg(as)30 b(ab)s(o)m(v)m(e)h(but)g(w)m(orks)g -(on)f(in_c)m(hannels)0 2419 y Fh(val)47 b(sockname_of_out_channel)f(:)h -(Pervasives.out_channel)g(->)g(Unix.sockaddr)227 2557 -y Fg(giv)m(en)31 b(an)g(out_c)m(hannel)i(build)e(on)f(top)h(of)f(a)g -(so)s(c)m(k)m(et,)h(return)g(so)s(c)m(kname)g(related)g(to)g(that)g(so) -s(c)m(k)m(et)0 2770 y Fh(val)47 b(sockname_of_in_channel)f(:)h -(Pervasives.in_channel)g(->)g(Unix.sockaddr)227 2907 -y Fg(as)30 b(ab)s(o)m(v)m(e)h(but)g(w)m(orks)g(on)f(in_c)m(hannels)0 -3120 y Fh(val)47 b(buf_of_inchan)g(:)g(?limit:int)f(->)h -(Pervasives.in_channel)g(->)g(Buffer.t)227 3258 y Fg(reads)31 -b(from)f(an)h(input)g(c)m(hannel)h(till)f(it)f(End_of_\034le)i(and)f -(returns)g(what)g(has)f(b)s(een)g(read;)h(if)f(limit)h(is)227 -3371 y(giv)m(en)g(returned)h(bu\033er)f(will)f(con)m(tains)i(at)e(most) -h(\034rst)f('limit')i(b)m(ytes)e(read)h(from)f(input)h(c)m(hannel)0 -3583 y Fh(val)47 b(list_assoc_all)g(:)g('a)f(->)h(\('a)g(*)g('b\))g -(list)g(->)g('b)g(list)227 3721 y Fg(lik)m(e)31 b(List.asso)s(c)f(but)h -(return)g(all)g(bindings)g(of)f(a)g(giv)m(en)h(k)m(ey)f(instead)h(of)f -(the)h(leftmost)f(one)h(only)0 3934 y Fh(val)47 b(warn)g(:)g(string)g -(->)g(unit)227 4071 y Fg(prin)m(t)32 b(a)e(w)m(arning)i(msg)e(to)h -(stderr.)41 b(A)m(dds)30 b(trailing)i(\\n)0 4284 y Fh(val)47 -b(error)g(:)g(string)g(->)f(unit)227 4422 y Fg(prin)m(t)32 -b(an)e(error)h(msg)g(to)f(stderr.)41 b(A)m(dds)30 b(trailing)i(\\n)0 -4634 y Fh(val)47 b(finally)g(:)g(\(unit)g(->)f(unit\))h(->)g(\('a)g(->) -g('b\))g(->)g('a)g(->)g('b)1905 5400 y Fg(10)p eop end -%%Page: 11 11 -TeXDict begin 11 10 bop 0 91 a Fj(7)131 b(Mo)t(dule)44 -b Fe(Http_parser)c Fj(:)58 b(HTTP)44 b(messages)e(parsing)0 -437 y Fh(val)47 b(split_query_params)f(:)h(string)g(->)g(\(string)g(*)g -(string\))g(list)227 575 y Fg(giv)m(en)31 b(an)g(HTTP)g(lik)m(e)g -(query)f(string)g(\(e.g.)41 b("name1)p Fa(=)p Fg(v)-5 -b(alue1&name2)p Fa(=)p Fg(v)g(alue2&)p Fb(:)15 b(:)g(:)5 -b Fg("\))227 725 y Fi(Raises)336 913 y Fc(\017)46 b Fh(Malformed_query) -30 b Fg(if)g(the)h(string)f(isn't)h(a)f(v)-5 b(alid)31 -b(query)f(string)336 1059 y Fc(\017)46 b Fh(Malformed_query_part)30 -b Fg(if)g(some)g(piece)h(of)f(the)h(query)f(isn't)h(v)-5 -b(alid)227 1247 y Fi(Returns)34 b Fg(a)d(list)f(of)g(pairs)g -Fh(\("name1",)47 b("value1"\);)g(\("name2",)g("value2"\))0 -1459 y(val)g(parse_request_fst_line)f(:)94 1572 y -(Pervasives.in_channel)g(->)94 1685 y(Http_types.meth)h(*)g(Neturl.url) -f(*)h(Http_types.version)g(option)227 1823 y Fg(parse)31 -b(1st)f(line)h(of)f(an)g(HTTP)h(request)227 1973 y Fi(Raises)336 -2161 y Fc(\017)46 b Fh(Malformed_request)30 b Fg(if)g(request)g(1st)g -(linst)h(isn't)f(w)m(ell)i(formed)336 2307 y Fc(\017)46 -b Fh(Malformed_request_URI)30 b Fg(if)g(requested)h(URI)e(isn't)h(w)m -(ell)h(formed)227 2495 y Fi(Returns)j Fg(a)d(triple)g(meth)g(*)f(url)h -(*)f(v)m(ersion,)h(meth)g(is)f(the)h(HTTP)g(metho)s(d)f(in)m(v)m(ok)m -(ed,)j(url)d(is)g(the)227 2607 y(requested)h(url,)g(v)m(ersion)g(is)f -(the)g(HTTP)h(v)m(ersion)g(sp)s(eci\034ed)g(or)f(None)h(if)f(no)g(v)m -(ersion)h(w)m(as)g(sp)s(eci\034ed)0 2820 y Fh(val)47 -b(parse_response_fst_line)f(:)94 2933 y(Pervasives.in_channel)g(->)h -(Http_types.version)g(*)g(Http_types.status)227 3071 -y Fg(parse)31 b(1st)f(line)h(of)f(an)g(HTTP)h(resp)s(onse)227 -3221 y Fi(Raises)g Fh(Malformed_response)e Fg(if)h(\034rst)h(line)g -(isn't)f(w)m(ell)h(formed)0 3434 y Fh(val)47 b(parse_query_get_params)f -(:)h(Neturl.url)g(->)g(\(string)g(*)g(string\))g(list)227 -3571 y Fg(parse)31 b(HTTP)g(GET)g(parameters)g(from)g(an)f(URL;)g -(paramater)i(whic)m(h)g(w)m(ere)f(passed)f(with)h(no)g(v)-5 -b(alue)227 3684 y(\(lik)m(e)31 b('x')f(in)h("/fo)s(o.cgi?a)p -Fa(=)p Fg(10&x)p Fa(=)p Fg(&c)p Fa(=)p Fg(9"\))g(are)g(returned)g(asso) -s(ciated)g(with)g(the)f(empt)m(y)h(\(""\))g(string.)227 -3835 y Fi(Returns)j Fg(a)d(list)f(of)g(pairs)g(param_name)j(*)d -(param_v)-5 b(alue)0 4047 y Fh(val)47 b(parse_path)g(:)g(Neturl.url)f -(->)h(string)227 4185 y Fg(parse)31 b(the)g(base)f(path)h(\(remo)m -(ving)h(query)e(string,)h(fragmen)m(t,)g Fb(:)15 b(:)g(:)q -Fg(.\))41 b(from)30 b(an)h(URL)0 4397 y Fh(val)47 b(parse_headers)g(:)g -(Pervasives.in_channel)f(->)h(\(string)g(*)g(string\))g(list)227 -4535 y Fg(parse)31 b(HTTP)g(headers.)41 b(Consumes)31 -b(also)f(trailing)h(CRLF)g(at)f(the)h(end)g(of)f(header)h(list)227 -4685 y Fi(Raises)g Fh(Invalid_header)f Fg(if)f(a)i(not)g(w)m(ell)g -(formed)g(header)g(is)f(encoun)m(tered)227 4836 y Fi(Returns)k -Fg(a)d(list)f(of)g(pairs)g(header_name)j(*)d(header_v)-5 -b(alue)0 5048 y Fh(val)47 b(parse_cookies)g(:)g(string)f(->)h(\(string) -g(*)g(string\))g(list)1905 5400 y Fg(11)p eop end -%%Page: 12 12 -TeXDict begin 12 11 bop 227 91 a Fg(parse)31 b(a)f(Co)s(okie)g(header,) -i(extracting)f(an)g(asso)s(ciativ)m(e)f(list)h Fb(<)p -Fg(attribute)g(name,)g(attribute)h(v)-5 b(alue)p Fb(>)p -Fg(.)40 b(See)227 204 y(RF)m(C)31 b(2965)227 348 y Fi(Raises)g -Fh(Malformed_cookies)e Fg(if)h(ra)m(w_co)s(okies)i(do)s(es)e(not)g -(conform)h(to)g(RF)m(C)f(2965)227 492 y Fi(Returns)k -Fg(a)d(list)f(of)g(pairs)g(co)s(okie_name)i(*)e(co)s(okie_v)-5 -b(alue)0 680 y Fh(val)47 b(parse_request)g(:)g(Pervasives.in_channel)f -(->)h(string)g(*)g(\(string)g(*)g(string\))f(list)227 -812 y Fg(giv)m(en)31 b(an)g(input)g(c)m(hannel,)h(reads)f(from)f(it)g -(a)h(GET)g(HTTP)g(request)f(and)227 956 y Fi(Returns)k -Fg(a)d(pair)f Fb(<)p Fg(path,)h(query_params)p Fb(>)g -Fg(where)g(path)g(is)f(a)g(string)h(represen)m(ting)h(the)f(requested) -227 1069 y(path)g(and)g(query_params)g(is)f(a)g(list)h(of)f(pairs)g -Fb(<)p Fg(name,)h(v)-5 b(alue)p Fb(>)30 b Fg(\(the)h(GET)g -(parameters\))0 1405 y Fj(8)131 b(Mo)t(dule)68 b Fe(Http_parser_sanity) -63 b Fj(:)107 b(Sanit)l(y)70 b(test)f(functions)g(related)g(to)197 -1555 y(HTTP)44 b(message)f(parsing)0 1895 y Fh(val)k(heal_header_name)g -(:)f(string)h(->)g(unit)227 2026 y Fi(Raises)31 b Fh -(Invalid_header_name)e Fg(if)h(name)h(isn't)g(a)f(v)-5 -b(alid)31 b(HTTP)g(header)g(name)0 2214 y Fh(val)47 b -(heal_header_value)f(:)h(string)g(->)g(unit)227 2346 -y Fi(Raises)31 b Fh(Invalid_header_value)e Fg(if)h(v)-5 -b(alue)31 b(isn't)f(a)h(v)-5 b(alid)30 b(HTTP)h(header)g(v)-5 -b(alue)0 2533 y Fh(val)47 b(heal_header)g(:)g(string)f(*)h(string)g(->) -g(unit)227 2665 y Fi(Raises)336 2840 y Fc(\017)f Fh -(Invalid_header_name)30 b Fg(if)g(name)h(isn't)f(a)h(v)-5 -b(alid)30 b(HTTP)h(header)g(name)336 2974 y Fc(\017)46 -b Fh(Invalid_header_value)30 b Fg(if)g(v)-5 b(alue)30 -b(isn't)h(a)f(v)-5 b(alid)31 b(HTTP)g(header)g(v)-5 b(alue)0 -3205 y Fh(val)47 b(normalize_header_value)f(:)h(string)g(->)g(string) -227 3337 y Fg(remo)m(v)m(e)32 b(heading)g(and/or)f(trailing)g(L)-10 -b(WS)31 b(sequences)f(as)g(p)s(er)h(RF)m(C2616)0 3525 -y Fh(val)47 b(url_of_string)g(:)g(string)f(->)h(Neturl.url)227 -3656 y Fg(parse)31 b(an)f(URL)g(from)h(a)f(string.)227 -3800 y Fi(Raises)h Fh(Malformed_URL)f Fg(if)f(an)i(in)m(v)-5 -b(alid)31 b(URL)f(is)g(encoun)m(tered)0 3988 y Fh(val)47 -b(string_of_url)g(:)g(Neturl.url)f(->)h(string)227 4120 -y Fg(prett)m(y)31 b(prin)m(t)h(an)f(URL)0 4456 y Fj(9)131 -b(Mo)t(dule)41 b Fe(Http_request)d Fj(:)57 b(Ob)7 b(ject)42 -b(Orien)l(ted)g(represen)l(tation)g(of)g(HTTP)197 4606 -y(requests)0 4946 y Fh(class)47 b(request)g(:)g(Pervasives.in_channel)f -(->)h(Http_types.request)227 5077 y Fg(OO)31 b(represen)m(tation)i(of)d -(an)g(HTTP)h(request)1905 5400 y(12)p eop end -%%Page: 13 13 -TeXDict begin 13 12 bop 0 91 a Fj(10)131 b(Mo)t(dule)29 -b Fe(Http_response)c Fj(:)50 b(Ob)7 b(ject)30 b(Orien)l(ted)g(represen) -l(tation)g(of)f(HTTP)263 241 y(resp)t(onses)0 586 y Fh(class)47 -b(response)g(:)g(?body:string)f(->)h(?headers:\(string)g(*)g(string\))g -(list)g(->)f(?version:Http_types.version)h(->)g -(?clisockaddr:Unix.sockaddr)f(->)h(?srvsockaddr:Unix.sockaddr)f(->)h -(?code:int)g(->)g(?status:Http_types.status)f(->)h(unit)g(->)g -(Http_types.response)227 724 y Fg(OO)31 b(represen)m(tation)i(of)d(an)g -(HTTP)h(resp)s(onse.)0 1084 y Fj(11)131 b(Mo)t(dule)58 -b Fe(Http_tcp_server)c Fj(:)88 b(TCP)59 b(serv)l(ers)g(used)g(as)f(lo)l -(w-lev)l(els)j(for)263 1233 y(HTTP)44 b(daemons)0 1557 -y Fd(11.1)112 b(serv)m(ers)0 1754 y Fh(val)47 b(simple)g(:)g -(Http_types.tcp_server)227 1891 y Fg(single)31 b(pro)s(cess)f(serv)m -(er)0 2102 y Fh(val)47 b(thread)g(:)g(Http_types.tcp_server)227 -2240 y Fg(m)m(ulti)32 b(threaded)f(serv)m(er)0 2451 y -Fh(val)47 b(fork)g(:)g(Http_types.tcp_server)227 2589 -y Fg(m)m(ulti)32 b(pro)s(cess)e(serv)m(er)0 2906 y Fd(11.2)112 -b(lo)m(w)37 b(lev)m(el)e(functions)0 3102 y Fh(val)47 -b(init_socket)g(:)g(Unix.sockaddr)f(->)h(Unix.file_descr)227 -3239 y Fg(initialize)32 b(a)e(passiv)m(e)h(so)s(c)m(k)m(et)f(listening) -i(on)e(giv)m(en)h(Unix.so)s(c)m(k)-5 b(addr)0 3599 y -Fj(12)131 b(Mo)t(dule)29 b Fe(Http_threaded_tcp_s)o(erve)o(r)23 -b Fj(:)51 b(Multithreaded)30 b(part)f(of)g(Http_tcp_serv)l(er)0 -3945 y Fh(val)47 b(serve)g(:)g(\('a)g(->)g('b\))f(->)h('a)g(->)g(unit) -227 4082 y Fg(serv)m(e)31 b(an)f(HTTP)h(request)g(for)f(a)g(m)m(ulti)i -(threaded)f(TCP)h(serv)m(er)0 4442 y Fj(13)131 b(Mo)t(dule)43 -b Fe(Http_types)e Fj(:)58 b(T)l(yp)t(e)44 b(de\034nitions)0 -4788 y Fh(type)j(version)g(=)g([)g(`HTTP_1_0)f(|)h(`HTTP_1_1)g(])227 -4925 y Fg(HTTP)31 b(v)m(ersion,)g(actually)g(only)g(1.0)f(and)h(1.1)g -(are)f(supp)s(orted.)41 b(Note)31 b(that)g('supp)s(orted')g(here)g -(means)227 5038 y(only)e('accepted)i(inside)e(a)g(HTTP)g(request)g -(line',)h(no)g(di\033eren)m(t)g(b)s(eha)m(viours)f(are)h(actually)f -(implemen)m(ted)227 5151 y(dep)s(ending)j(on)e(HTTP)h(v)m(ersion)1905 -5400 y(13)p eop end -%%Page: 14 14 -TeXDict begin 14 13 bop 0 91 a Fh(type)47 b(meth)g(=)g([)g(`GET)g(|)g -(`POST)f(])227 229 y Fg(HTTP)31 b(metho)s(d,)g(actually)g(only)g(GET)f -(and)h(POST)h(metho)s(ds)e(are)h(supp)s(orted)0 442 y -Fh(type)47 b(daemon_mode)g(=)g([)g(`Fork)f(|)h(`Single)g(|)g(`Thread)g -(])227 579 y Fg(Daemon)32 b(b)s(eha)m(viour)f(wrt)g(request)f -(handling.)42 b(`Single)31 b(mo)s(de)g(use)f(a)g(single)h(pro)s(cess)f -(to)g(handle)i(all)227 692 y(requests,)e(no)h(request)f(is)g(serv)m(ed) -h(un)m(til)h(a)e(previous)g(one)h(has)f(b)s(een)h(fully)f(serv)m(ed.)41 -b(`F)-8 b(ork)30 b(mo)s(de)h(fork)f(a)227 805 y(new)h(pro)s(cess)f(for) -g(eac)m(h)i(request,)e(the)h(new)g(pro)s(cess)e(will)i(execute)g(the)g -(callbac)m(k)g(function)g(and)g(then)227 918 y(exit.)41 -b(`Thread)31 b(mo)s(de)g(create)g(a)f(new)h(thread)g(for)g(eac)m(h)g -(request,)f(the)h(new)g(thread)g(will)g(execute)g(the)227 -1031 y(callbac)m(k)h(function)f(and)g(then)g(exit,)f(threads)h(can)g -(comm)m(unicate)i(using)d(standard)h(OCaml)h(Thread)227 -1144 y(library)-8 b(.)0 1357 y Fh(type)47 b(tcp_server)g(=)g -(sockaddr:Unix.sockaddr)f(->)94 1469 y(timeout:int)h(option)g(->)94 -1582 y(\(Pervasives.in_channel)f(->)h(Pervasives.out_channel)g(->)g -(unit\))g(->)g(unit)227 1720 y Fg(A)30 b(TCP)h(serv)m(er)g(is)f(a)g -(function)h(taking)g(an)g(address)f(on)h(whic)m(h)g(bind)g(and)g -(listen)g(for)f(connections,)h(an)227 1833 y(optional)h(timeout)f -(after)g(whic)m(h)g(ab)s(ort)g(clien)m(t)h(connections)f(and)g(a)f -(callbac)m(k)i(function)f(whic)m(h)h(in)e(turn)227 1946 -y(tak)m(es)h(an)f(input)h(and)g(an)g(output)g(c)m(hannel)h(as)e -(argumen)m(ts.)42 b(After)30 b(receiving)h(this)g(argumen)m(t)h(a)e -(TCP)227 2059 y(serv)m(er)h(sits)f(and)g(w)m(aits)i(for)e(connection,)i -(on)e(eac)m(h)i(connection)g(it)e(apply)h(the)f(callbac)m(k)i(function) -f(to)227 2172 y(c)m(hannels)h(connected)g(to)e(clien)m(t.)0 -2384 y Fh(type)47 b(auth_info)g(=)g([)g(`Basic)f(of)h(string)g(*)g -(string)g(])227 2522 y Fg(authen)m(tication)33 b(information)0 -2735 y Fh(type)47 b(informational_substatus)f(=)h([)g(`Continue)g(|)g -(`Switching_protocols)f(])227 2873 y Fi(See)36 b(also)30 -b Ff(RF)n(C2616)f Fg(informational)j(HTTP)f(status)0 -3085 y Fh(type)47 b(success_substatus)f(=)h([)g(`Accepted)94 -3198 y(|)g(`Created)94 3311 y(|)g(`No_content)94 3424 -y(|)g(`Non_authoritative_information)94 3537 y(|)g(`OK)94 -3650 y(|)g(`Partial_content)94 3763 y(|)g(`Reset_content)g(])227 -3900 y Fi(See)36 b(also)30 b Ff(RF)n(C2616)f Fg(success)h(HTTP)h -(status)0 4113 y Fh(type)47 b(redirection_substatus)f(=)h([)g(`Found)94 -4226 y(|)g(`Moved_permanently)94 4339 y(|)g(`Multiple_choices)94 -4452 y(|)g(`Not_modified)94 4565 y(|)g(`See_other)94 -4677 y(|)g(`Temporary_redirect)94 4790 y(|)g(`Use_proxy)g(])227 -4928 y Fi(See)36 b(also)30 b Ff(RF)n(C2616)f Fg(redirection)j(HTTP)f -(status)1905 5400 y(14)p eop end -%%Page: 15 15 -TeXDict begin 15 14 bop 0 91 a Fh(type)47 b(client_error_substatus)f(=) -h([)g(`Bad_request)94 204 y(|)g(`Conflict)94 317 y(|)g -(`Expectation_failed)94 430 y(|)g(`Forbidden)94 543 y(|)g(`Gone)94 -656 y(|)g(`Length_required)94 769 y(|)g(`Method_not_allowed)94 -882 y(|)g(`Not_acceptable)94 995 y(|)g(`Not_found)94 -1108 y(|)g(`Payment_required)94 1220 y(|)g(`Precondition_failed)94 -1333 y(|)g(`Proxy_authentication_required)94 1446 y(|)g -(`Request_URI_too_large)94 1559 y(|)g(`Request_entity_too_large)94 -1672 y(|)g(`Request_time_out)94 1785 y(|)g -(`Requested_range_not_satisfiable)94 1898 y(|)g(`Unauthorized)94 -2011 y(|)g(`Unsupported_media_type)f(])227 2143 y Fi(See)36 -b(also)30 b Ff(RF)n(C2616)f Fg(clien)m(t)j(error)f(HTTP)g(status)0 -2334 y Fh(type)47 b(server_error_substatus)f(=)h([)g(`Bad_gateway)94 -2447 y(|)g(`Gateway_time_out)94 2560 y(|)g(`HTTP_version_not_supported) -94 2673 y(|)g(`Internal_server_error)94 2786 y(|)g(`Not_implemented)94 -2899 y(|)g(`Service_unavailable)f(])227 3031 y Fi(See)36 -b(also)30 b Ff(RF)n(C2616)f Fg(serv)m(er)i(error)g(HTTP)g(status)0 -3223 y Fh(type)47 b(informational_status)f(=)h([)g(`Informational)g(of) -g(informational_substatus)f(])0 3355 y(type)h(success_status)g(=)f([)h -(`Success)g(of)g(success_substatus)g(])0 3488 y(type)g -(redirection_status)f(=)h([)g(`Redirection)g(of)g -(redirection_substatus)f(])0 3620 y(type)h(client_error_status)f(=)h([) -g(`Client_error)g(of)g(client_error_substatus)f(])0 3752 -y(type)h(server_error_status)f(=)h([)g(`Server_error)g(of)g -(server_error_substatus)f(])0 3885 y(type)h(error_status)g(=)g([)f -(`Client_error)h(of)g(client_error_substatus)94 3998 -y(|)g(`Server_error)g(of)g(server_error_substatus)f(])0 -4130 y(type)h(status)g(=)g([)g(`Client_error)f(of)h -(client_error_substatus)94 4243 y(|)g(`Informational)g(of)f -(informational_substatus)94 4356 y(|)h(`Redirection)g(of)g -(redirection_substatus)94 4469 y(|)g(`Server_error)g(of)g -(server_error_substatus)94 4582 y(|)g(`Success)g(of)g -(success_substatus)f(])227 4714 y Fg(HTTP)31 b(status)0 -4906 y Fh(type)47 b(status_code)g(=)g([)g(`Code)f(of)h(int)g(|)g -(`Status)g(of)g(status)g(])0 5038 y(type)g(file_source)g(=)94 -5151 y(|)g(FileSrc)g(of)g(string)1905 5400 y Fg(15)p -eop end -%%Page: 16 16 -TeXDict begin 16 15 bop 485 91 a Fg(\034lename)94 251 -y Fh(|)47 b(InChanSrc)g(of)g(Pervasives.in_channel)485 -388 y Fg(input)31 b(c)m(hannel)227 524 y(File)g(sources)0 -837 y Fd(13.1)112 b(Exceptions)0 1032 y Fh(exception)47 -b(Invalid_header)f(of)h(string)227 1168 y Fg(in)m(v)-5 -b(alid)32 b(header)f(encoun)m(tered)0 1375 y Fh(exception)47 -b(Invalid_header_name)f(of)h(string)227 1511 y Fg(in)m(v)-5 -b(alid)32 b(header)f(name)g(encoun)m(tered)0 1718 y Fh(exception)47 -b(Invalid_header_value)f(of)h(string)227 1855 y Fg(in)m(v)-5 -b(alid)32 b(header)f(v)-5 b(alue)30 b(encoun)m(tered)0 -2061 y Fh(exception)47 b(Invalid_HTTP_version)f(of)h(string)227 -2198 y Fg(unsupp)s(orted)32 b(or)e(in)m(v)-5 b(alid)31 -b(HTTP)g(v)m(ersion)g(encoun)m(tered)0 2405 y Fh(exception)47 -b(Invalid_HTTP_method)f(of)h(string)227 2541 y Fg(unsupp)s(orted)32 -b(or)e(in)m(v)-5 b(alid)31 b(HTTP)g(metho)s(d)g(encoun)m(tered)0 -2748 y Fh(exception)47 b(Invalid_code)f(of)h(int)227 -2884 y Fg(in)m(v)-5 b(alid)32 b(HTTP)f(status)f(co)s(de)g(in)m(teger)i -(represen)m(tation)h(encoun)m(tered)0 3091 y Fh(exception)47 -b(Malformed_URL)f(of)h(string)227 3228 y Fg(in)m(v)-5 -b(alid)32 b(URL)d(encoun)m(tered)0 3435 y Fh(exception)47 -b(Malformed_query)f(of)h(string)227 3571 y Fg(in)m(v)-5 -b(alid)32 b(query)e(string)g(encoun)m(tered)0 3778 y -Fh(exception)47 b(Malformed_query_part)f(of)h(string)g(*)g(string)227 -3914 y Fg(in)m(v)-5 b(alid)32 b(query)e(string)g(part)h(encoun)m -(tered,)i(argumen)m(ts)f(are)f(parameter)h(name)f(and)f(parameter)i(v) --5 b(alue)0 4121 y Fh(exception)47 b(Malformed_request_URI)f(of)h -(string)227 4258 y Fg(in)m(v)-5 b(alid)32 b(request)e(URI)f(encoun)m -(tered)0 4464 y Fh(exception)47 b(Malformed_cookies)f(of)h(string)227 -4601 y Fg(malformed)32 b(co)s(okies)0 4808 y Fh(exception)47 -b(Malformed_request)f(of)h(string)227 4944 y Fg(malformed)32 -b(request)e(receiv)m(ed)0 5151 y Fh(exception)47 b(Malformed_response)f -(of)h(string)1905 5400 y Fg(16)p eop end -%%Page: 17 17 -TeXDict begin 17 16 bop 227 91 a Fg(malformed)32 b(resp)s(onse)e -(receiv)m(ed,)i(argumen)m(t)g(is)e(resp)s(onse's)g(\034rst)g(line)0 -299 y Fh(exception)47 b(Param_not_found)f(of)h(string)227 -436 y Fg(a)31 b(parameter)h(y)m(ou)e(w)m(ere)i(lo)s(oking)e(for)g(w)m -(as)h(not)g(found)0 643 y Fh(exception)47 b(Invalid_status_line)f(of)h -(string)227 780 y Fg(in)m(v)-5 b(alid)32 b(HTTP)f(status)f(line)g -(encoun)m(tered)0 987 y Fh(exception)47 b(Header_not_found)f(of)h -(string)227 1124 y Fg(an)31 b(header)g(y)m(ou)g(w)m(ere)g(lo)s(oking)g -(for)f(w)m(as)h(not)f(found)0 1332 y Fh(exception)47 -b(Quit)227 1468 y Fg(raisable)31 b(b)m(y)g(callbac)m(ks)g(to)g(mak)m(e) -g(main)g(daemon)g(quit,)f(this)h(is)f(the)g(only)h('clean')g(w)m(a)m(y) -g(to)g(mak)m(e)g(start)227 1581 y(functions)g(return)0 -1789 y Fh(exception)47 b(Unauthorized)f(of)h(string)227 -1925 y Fg(raisable)31 b(b)m(y)g(callbac)m(ks)g(to)g(force)f(a)g(401)h -(\(unauthorized\))i(HTTP)e(answ)m(er.)41 b(This)31 b(exception)g -(should)g(b)s(e)227 2038 y(raised)g(_b)s(efore_)g(sending)g(an)m(y)f -(data)h(o)m(v)m(er)h(giv)m(en)f(out)f(c)m(hannel.)0 2352 -y Fd(13.2)112 b(OO)38 b(represen)m(tation)f(of)g(HTTP)g(messages)0 -2547 y Fh(class)47 b(type)g(message)g(=)90 2660 y(object)227 -2829 y(method)g(version)g(:)g(Http_types.version)f(option)227 -2965 y(method)h(setVersion)g(:)g(Http_types.version)f(->)h(unit)227 -3102 y(method)g(body)g(:)g(string)227 3239 y(method)g(setBody)g(:)g -(string)g(->)g(unit)227 3375 y(method)g(bodyBuf)g(:)g(Buffer.t)227 -3512 y(method)g(setBodyBuf)g(:)g(Buffer.t)g(->)g(unit)227 -3648 y(method)g(addBody)g(:)g(string)g(->)g(unit)227 -3785 y(method)g(addBodyBuf)g(:)g(Buffer.t)g(->)g(unit)227 -3922 y(method)g(addHeader)g(:)g(name:string)g(->)f(value:string)h(->)g -(unit)227 4058 y(method)g(addHeaders)g(:)g(\(string)g(*)g(string\))f -(list)h(->)g(unit)227 4195 y(method)g(replaceHeader)g(:)g(name:string)f -(->)h(value:string)g(->)g(unit)227 4331 y(method)g(replaceHeaders)g(:)g -(\(string)g(*)f(string\))h(list)g(->)g(unit)227 4468 -y(method)g(removeHeader)g(:)g(name:string)f(->)h(unit)227 -4605 y(method)g(hasHeader)g(:)g(name:string)g(->)f(bool)227 -4741 y(method)h(header)g(:)g(name:string)g(->)g(string)227 -4878 y(method)g(headers)g(:)g(\(string)g(*)g(string\))f(list)227 -5014 y(method)h(clientSockaddr)g(:)g(Unix.sockaddr)227 -5151 y(method)g(clientAddr)g(:)g(string)1905 5400 y Fg(17)p -eop end -%%Page: 18 18 -TeXDict begin 18 17 bop 227 91 a Fh(method)47 b(clientPort)g(:)g(int) -227 229 y(method)g(serverSockaddr)g(:)g(Unix.sockaddr)227 -367 y(method)g(serverAddr)g(:)g(string)227 505 y(method)g(serverPort)g -(:)g(int)227 643 y(method)g(toString)g(:)g(string)227 -780 y(method)g(serialize)g(:)g(Pervasives.out_channel)f(->)h(unit)90 -931 y(end)227 1118 y Fg(HTTP)31 b(generic)h(messages.)40 -b(See)31 b Fh(Http_message.message)p Fg([5])0 1331 y -Fh(class)47 b(type)g(request)g(=)90 1444 y(object)227 -1631 y(inherit)g(Http_types.message)30 b Fg([13.2])227 -1782 y(an)h(HTTP)g(request)f(is)g(a)g(\035a)m(v)m(our)i(of)e(HTTP)h -(message)227 1919 y Fh(method)47 b(meth)g(:)g(Http_types.meth)427 -2095 y Fi(Returns)34 b Fg(request)d(metho)s(d)227 2307 -y Fh(method)47 b(uri)g(:)g(string)427 2482 y Fi(Returns)34 -b Fg(requested)d(URI)e(\(including)j(query)e(string,)h(fragmen)m(t,)h -Fb(:)15 b(:)g(:)q Fg(\))227 2695 y Fh(method)47 b(path)g(:)g(string)427 -2870 y Fi(Returns)34 b Fg(requested)d(path)227 3083 y -Fh(method)47 b(param)g(:)g(?meth:Http_types.meth)f(->)h -(?default:string)g(->)g(string)g(->)g(string)427 3258 -y Fg(lo)s(okup)31 b(a)f(giv)m(en)h(parameter)427 3387 -y Fi(Raises)g Fh(Param_not_found)f Fg(if)f(parameter)j(name)f(w)m(as)g -(not)g(found)427 3517 y Fi(Returns)j Fg(v)-5 b(alue)31 -b(asso)s(ciated)f(to)h(parameter)h(name)227 3729 y Fh(method)47 -b(paramAll)g(:)g(?meth:Http_types.meth)f(->)h(string)g(->)g(string)g -(list)427 3905 y Fg(lik)m(e)31 b(param)g(ab)s(o)m(v)m(e)g(but)g(return) -g(a)g(list)f(of)g(v)-5 b(alues)30 b(asso)s(ciated)g(to)h(giv)m(en)g -(parameter)h(\(a)e(parameter)427 4017 y(could)h(b)s(e)f(de\034ned)i -(indeed)f(more)g(than)g(once:)41 b(passed)30 b(more)h(than)g(once)g(in) -g(a)f(query)g(string)h(or)427 4130 y(passed)g(b)s(oth)f(insider)h(the)f -(url)h(\(the)g(GET)g(w)m(a)m(y\))g(and)g(inside)g(message)f(b)s(o)s(dy) -g(\(the)h(POST)g(w)m(a)m(y\)\))227 4343 y Fh(method)47 -b(params)g(:)g(\(string)g(*)g(string\))f(list)427 4518 -y Fi(Returns)34 b Fg(the)d(list)f(of)g(all)h(receiv)m(ed)g(parameters) -227 4731 y Fh(method)47 b(params_GET)g(:)g(\(string)g(*)g(string\))f -(list)427 4906 y Fi(Returns)34 b Fg(the)d(list)f(of)g(all)h(parameters) -g(receiv)m(ed)h(via)e(GET)227 5118 y Fh(method)47 b(params_POST)g(:)g -(\(string)g(*)g(string\))f(list)1905 5400 y Fg(18)p eop -end -%%Page: 19 19 -TeXDict begin 19 18 bop 427 91 a Fi(Returns)34 b Fg(the)d(list)f(of)g -(all)h(parameter)h(receiv)m(ed)f(via)f(POST)227 304 y -Fh(method)47 b(cookies)g(:)g(\(string)g(*)g(string\))f(list)h(option) -227 442 y(method)g(authorization)g(:)g(Http_types.auth_info)f(option) -427 617 y Fi(Returns)34 b Fg(authorization)f(information,)f(if)d(giv)m -(en)i(b)m(y)g(the)g(clien)m(t)90 842 y Fh(end)227 1029 -y Fg(HTTP)g(requests)0 1242 y Fh(class)47 b(type)g(response)g(=)90 -1355 y(object)227 1543 y(inherit)g(Http_types.message)30 -b Fg([13.2])227 1680 y Fh(method)47 b(code)g(:)g(int)427 -1856 y Fi(Returns)34 b Fg(resp)s(onse)c(co)s(de)227 2068 -y Fh(method)47 b(setCode)g(:)g(int)g(->)g(unit)427 2243 -y Fg(set)30 b(resp)s(onse)h(co)s(de)227 2456 y Fh(method)47 -b(status)g(:)g(Http_types.status)427 2631 y Fi(Returns)34 -b Fg(resp)s(onse)c(status)227 2844 y Fh(method)47 b(setStatus)g(:)g -(Http_types.status)f(->)h(unit)427 3019 y Fg(set)30 b(resp)s(onse)h -(status)227 3231 y Fh(method)47 b(reason)g(:)g(string)427 -3406 y Fi(Returns)34 b Fg(reason)d(string)227 3619 y -Fh(method)47 b(setReason)g(:)g(string)g(->)g(unit)427 -3794 y Fg(set)30 b(reason)h(string)227 4007 y Fh(method)47 -b(statusLine)g(:)g(string)427 4182 y Fi(Returns)34 b -Fg(status)c(line)227 4394 y Fh(method)47 b(setStatusLine)g(:)g(string)g -(->)g(unit)427 4570 y Fg(set)30 b(status)h(line)427 4699 -y Fi(Raises)g Fh(Invalid_status_line)e Fg(if)h(an)h(in)m(v)-5 -b(alid)31 b(HTTP)g(status)f(line)h(w)m(as)g(passed)227 -4912 y Fh(method)47 b(isInformational)g(:)g(bool)427 -5087 y Fg(resp)s(onse)30 b(is)g(an)h(informational)h(one)1905 -5400 y(19)p eop end -%%Page: 20 20 -TeXDict begin 20 19 bop 227 91 a Fh(method)47 b(isSuccess)g(:)g(bool) -427 264 y Fg(resp)s(onse)30 b(is)g(a)h(success)f(one)227 -471 y Fh(method)47 b(isRedirection)g(:)g(bool)427 643 -y Fg(resp)s(onse)30 b(is)g(a)h(redirection)h(one)227 -850 y Fh(method)47 b(isClientError)g(:)g(bool)427 1023 -y Fg(resp)s(onse)30 b(is)g(a)h(clien)m(t)g(error)g(one)227 -1230 y Fh(method)47 b(isServerError)g(:)g(bool)427 1402 -y Fg(resp)s(onse)30 b(is)g(a)h(serv)m(er)f(error)h(one)227 -1609 y Fh(method)47 b(isError)g(:)g(bool)427 1782 y Fg(resp)s(onse)30 -b(is)g(either)h(a)g(clien)m(t)g(error)g(or)g(a)f(serv)m(er)h(error)g -(resp)s(onse)227 1989 y Fh(method)47 b(addBasicHeaders)g(:)g(unit)427 -2161 y Fg(add)31 b(basic)g(headers)g(to)f(resp)s(onse,)g(see)g -Fh(Http_daemon.send_basic_headers)p Fg([4])227 2507 y -Fi(13.2.1)104 b(facilities)35 b(to)g(access)h(some)e(frequen)m(tly)g -(used)h(headers)227 2702 y Fh(method)47 b(contentType)g(:)g(string)427 -2874 y Fi(Returns)34 b Fg(Con)m(ten)m(t-T)m(yp)s(e)f(header)f(v)-5 -b(alue)227 3081 y Fh(method)47 b(setContentType)g(:)g(string)g(->)f -(unit)427 3254 y Fg(set)30 b(Con)m(ten)m(t-T)m(yp)s(e)j(header)f(v)-5 -b(alue)227 3461 y Fh(method)47 b(contentEncoding)g(:)g(string)427 -3633 y Fi(Returns)34 b Fg(Con)m(ten)m(t-Enco)s(ding)g(header)e(v)-5 -b(alue)227 3840 y Fh(method)47 b(setContentEncoding)g(:)g(string)f(->)h -(unit)427 4013 y Fg(set)30 b(Con)m(ten)m(t-Enco)s(ding)k(header)e(v)-5 -b(alue)227 4220 y Fh(method)47 b(date)g(:)g(string)427 -4392 y Fi(Returns)34 b Fg(Date)d(header)g(v)-5 b(alue)227 -4599 y Fh(method)47 b(setDate)g(:)g(string)g(->)g(unit)427 -4771 y Fg(set)30 b(Date)h(header)g(v)-5 b(alue)227 4979 -y Fh(method)47 b(expires)g(:)g(string)427 5151 y Fi(Returns)34 -b Fg(Expires)d(header)g(v)-5 b(alue)1905 5400 y(20)p -eop end -%%Page: 21 21 -TeXDict begin 21 20 bop 227 91 a Fh(method)47 b(setExpires)g(:)g -(string)g(->)g(unit)427 265 y Fg(set)30 b(Expires)h(header)g(v)-5 -b(alue)227 474 y Fh(method)47 b(server)g(:)g(string)427 -648 y Fi(Returns)34 b Fg(Serv)m(er)d(header)h(v)-5 b(alue)227 -858 y Fh(method)47 b(setServer)g(:)g(string)g(->)g(unit)427 -1031 y Fg(set)30 b(Serv)m(er)i(header)f(v)-5 b(alue)227 -1241 y Fh(method)47 b(connection)g(:)g(string)427 1414 -y Fi(Returns)34 b Fg(Connection)e(header)g(v)-5 b(alue)227 -1624 y Fh(method)47 b(setConnection)g(:)g(string)g(->)g(unit)427 -1798 y Fg(set)30 b(Connection)j(header)e(v)-5 b(alue)90 -2019 y Fh(end)227 2205 y Fg(HTTP)31 b(resp)s(onses)0 -2520 y Fd(13.3)112 b(Daemon)38 b(sp)s(eci\034cation)0 -2716 y Fh(type)47 b(daemon_spec)g(=)g({)94 2829 y(address)g(:)g(string) -g(;)94 2941 y(auth)g(:)g(\(string)g(*)g(auth_info\))f(option)h(;)485 -3079 y Fg(authen)m(tication)33 b(requiremen)m(ts)f(\(curren)m(tly)g -(only)e(basic)h(authen)m(tication)i(is)d(supp)s(orted\).)41 -b(If)29 b(set)455 3191 y(to)h(None)h(no)f(authen)m(tication)j(is)d -(required.)41 b(If)30 b(set)g(to)g(Some)h(\("realm",)h(`Basic)f(\("fo)s -(o",)f("bar"\)\),)455 3304 y(only)g(clien)m(ts)h(authen)m(ticated)i -(with)e(baisc)g(authen)m(tication,)i(for)d(realm)h("realm",)h(pro)m -(viding)455 3417 y(username)f("fo)s(o")f(and)h(passw)m(ord)g("bar")g -(are)g(accepted;)g(others)g(are)g(rejected)g(with)g(a)f(401)455 -3530 y(resp)s(onse)g(co)s(de)94 3691 y Fh(callback)47 -b(:)g(request)g(->)f(Pervasives.out_channel)h(->)g(unit)g(;)485 -3828 y Fg(function)31 b(whic)m(h)g(will)g(b)s(e)f(called)h(eac)m(h)h -(time)f(a)f(correct)h(HTTP)g(request)g(will)f(b)s(e)h(receiv)m(ed.)41 -b(1st)455 3941 y(callbac)m(k)31 b(argumen)m(t)h(is)e(an)h(Http_t)m(yp)s -(es.request)g(ob)5 b(ject)31 b(corresp)s(onding)g(to)g(the)f(request) -455 4054 y(receiv)m(ed;)h(2nd)g(argumen)m(t)h(is)e(an)h(output)g(c)m -(hannel)h(corresp)s(onding)g(to)e(the)h(so)s(c)m(k)m(et)f(connected)i -(to)455 4167 y(the)e(clien)m(t)94 4328 y Fh(mode)47 b(:)g(daemon_mode)g -(;)485 4465 y Fg(requests)30 b(handling)h(mo)s(de,)g(it)f(can)h(ha)m(v) -m(e)h(three)f(di\033eren)m(t)g(v)-5 b(alues:)564 4652 -y Fc(\017)46 b Fg(`Single)31 b Fc(!)f Fg(all)g(requests)h(will)f(b)s(e) -g(handled)i(b)m(y)e(the)h(same)g(pro)s(cess,)564 4796 -y Fc(\017)46 b Fg(`F)-8 b(ork)30 b Fc(!)g Fg(eac)m(h)i(request)e(will)h -(b)s(e)f(handled)i(b)m(y)e(a)g(c)m(hild)i(pro)s(cess,)564 -4941 y Fc(\017)46 b Fg(`Thread)31 b Fc(!)f Fg(eac)m(h)h(request)g(will) -g(b)s(e)f(handled)h(b)m(y)g(a)f(\(new\))h(thread)94 5151 -y Fh(port)47 b(:)g(int)g(;)1905 5400 y Fg(21)p eop end -%%Page: 22 22 -TeXDict begin 22 21 bop 485 91 a Fg(TCP)31 b(p)s(ort)f(on)h(whic)m(h)g -(the)g(daemon)h(will)e(b)s(e)g(listening)94 254 y Fh(root_dir)47 -b(:)g(string)g(option)f(;)485 392 y Fg(directory)31 b(to)f(whic)m(h)i -(o)s(caml)f(h)m(ttp)g(will)g(c)m(hdir)g(b)s(efore)g(starting)g -(handling)g(requests;)f(if)g(None,)h(no)455 505 y(c)m(hdir)g(will)g(b)s -(e)f(p)s(erformed)h(\(i.e.)41 b(sta)m(y)30 b(in)h(the)f(curren)m(t)i(w) -m(orking)g(directory\))94 667 y Fh(exn_handler)47 b(:)g(\(exn)g(->)f -(Pervasives.out_channel)h(->)g(unit\))g(option)g(;)483 -805 y Fg(what)30 b(to)f(do)h(when)f(executing)h(callbac)m(k)g(raises)f -(an)h(exception.)41 b(If)28 b(None,)h(the)h(exception)g(will)f(b)s(e) -455 918 y(re-raised:)41 b(in)30 b(`F)-8 b(ork/`Thread)33 -b(mo)s(de)d(the)h(curren)m(t)h(pro)s(cess/thread)f(will)g(b)s(e)f -(terminated.)42 b(in)455 1031 y(`Single)31 b(mo)s(de)f(the)h(exception) -g(is)f(ignored)i(and)f(the)f(clien)m(t)i(so)s(c)m(k)m(et)f(closed.)40 -b(If)30 b(Some)h(callbac)m(k,)455 1144 y(the)f(callbac)m(k)i(will)f(b)s -(e)f(executed)h(b)s(efore)f(acting)h(as)f(p)s(er)g(None;)h(the)g -(callbac)m(k)g(is)f(mean)m(t)i(to)455 1257 y(p)s(erform)e(some)h(clean) -g(up)f(actions,)h(lik)m(e)g(releasing)g(global)g(m)m(utexes)g(in)g -(`Thread)g(mo)s(de)94 1420 y Fh(timeout)47 b(:)g(int)g(option)f(;)485 -1557 y Fg(timeout)31 b(in)g(seconds)f(after)h(whic)m(h)g(an)g(incoming) -g(HTTP)g(request)g(will)g(b)s(e)f(terminated)i(closing)455 -1670 y(the)e(corresp)s(onding)i(TCP)f(connection;)h(None)f(disable)f -(the)h(timeout)94 1833 y Fh(auto_close)47 b(:)g(bool)g(;)485 -1971 y Fg(whether)31 b(o)s(caml-h)m(ttp)h(will)f(automatically)h(close) -f(the)f(connection)i(with)f(the)g(clien)m(t)g(after)455 -2084 y(callbac)m(k)g(has)f(completed)i(its)e(execution.)42 -b(If)29 b(set)h(to)h(true,)g(close)f(will)h(b)s(e)f(attempted)i(no)f -(matter)455 2197 y(if)e(the)i(callbac)m(k)h(raises)e(an)g(exception)i -(or)e(not)0 2359 y Fh(})227 2497 y Fg(daemon)i(sp)s(eci\034cation,)f -(describ)s(e)g(the)f(b)s(eha)m(viour)i(of)e(an)g(HTTP)h(daemon.)227 -2648 y(The)g(default)g(daemon)g(sp)s(eci\034cation)h(is)e -Fh(Http_daemon.default_spec)p Fg([4])0 2966 y Fd(13.4)112 -b(OO)38 b(represen)m(tation)f(of)g(other)h(HTTP)e(en)m(tities)0 -3162 y Fh(class)47 b(type)g(connection)f(=)90 3275 y(object)227 -3450 y(method)h(getRequest)g(:)g(Http_types.request)f(option)427 -3625 y Fi(Returns)34 b Fg(next)d(request)f(ob)5 b(ject,)31 -b(ma)m(y)g(blo)s(c)m(k)f(if)g(clien)m(t)i(hasn't)f(submitted)g(an)m(y)g -(request)f(y)m(et,)427 3738 y(ma)m(y)h(b)s(e)f(None)h(if)f(clien)m(t)h -(request)g(w)m(as)f(ill-formed)227 3951 y Fh(method)47 -b(respond_with)g(:)g(Http_types.response)f(->)h(unit)427 -4126 y Fg(resp)s(ond)31 b(to)f(clien)m(t)i(sending)f(it)f(a)h(resp)s -(onse)227 4339 y Fh(method)47 b(close)g(:)g(unit)427 -4514 y Fg(close)31 b(connection)h(to)e(clien)m(t.)42 -b(W)-8 b(arning:)42 b(this)30 b(ob)5 b(ject)31 b(can't)g(b)s(e)f(used)g -(an)m(y)h(longer)g(after)g(this)427 4627 y(metho)s(d)g(has)f(b)s(een)h -(called)90 4852 y Fh(end)227 5039 y Fg(an)g(HTTP)g(connection)h(from)e -(a)h(clien)m(t)g(to)g(a)f(serv)m(er)1905 5400 y(22)p -eop end -%%Page: 23 23 -TeXDict begin 23 22 bop 0 91 a Fh(class)47 b(type)g(daemon)g(=)90 -204 y(object)227 379 y(method)g(accept)g(:)g(Http_types.connection)427 -555 y Fi(Returns)34 b Fg(a)d(connection)h(to)e(a)g(clien)m(t,)i(ma)m(y) -f(blo)s(c)m(k)g(if)e(no)i(clien)m(t)h(has)e(connected)i(y)m(et)227 -767 y Fh(method)47 b(getRequest)g(:)g(Http_types.request)f(*)h -(Http_types.connection)427 942 y Fg(shortcut)31 b(metho)s(d,)g(blo)s(c) -m(ks)g(un)m(til)g(a)f(clien)m(t)i(has)e(submit)h(a)f(request)h(and)g -(return)g(a)f(pair)h(request)f(*)427 1055 y(connection)90 -1280 y Fh(end)227 1468 y Fg(an)h(HTTP)g(daemon)0 1829 -y Fj(14)131 b(Mo)t(dule)33 b Fe(Http_user_agent)28 b -Fj(:)53 b(Minimal)34 b(implemen)l(tation)g(of)f(an)h(HTTP)263 -1978 y(1.0/1.1)42 b(clien)l(t.)0 2181 y Fg(In)m(terface)23 -b(is)f(similar)g(to)g(Gerd)h(Stoplmann's)g(Http_clien)m(t)h(mo)s(dule.) -38 b(Implemen)m(tation)25 b(is)d(simpler)g(and)h(do)s(esn't)0 -2294 y(handle)42 b(HTTP)f(redirection,)k(pro)m(xies,)f(ecc.)72 -b(The)42 b(only)e(reason)h(for)g(the)g(existence)g(of)g(this)f(mo)s -(dule)i(is)e(for)0 2407 y(p)s(erformances)31 b(and)g(incremen)m(tal)h -(elab)s(oration)g(of)e(resp)s(onse's)g(b)s(o)s(dies)0 -2663 y Fh(exception)47 b(Http_error)g(of)f(\(int)h(*)g(string\))0 -2801 y(val)g(get)g(:)94 2914 y(?head_callback:\(Http_types.status)f(->) -h(\(string)g(*)g(string\))g(list)g(->)g(unit\))f(->)94 -3027 y(string)h(->)g(string)227 3165 y Fi(Raises)31 b -Fh(Http_error)f Fg(when)h(resp)s(onse)f(co)s(de)g Fb(<>)g -Fg(200)227 3315 y Fi(Returns)k Fg(HTTP)d(resp)s(onse's)f(b)s(o)s(dy)0 -3527 y Fh(val)47 b(get_iter)g(:)94 3640 y -(?head_callback:\(Http_types.status)f(->)h(\(string)g(*)g(string\))g -(list)g(->)g(unit\))f(->)94 3753 y(\(string)h(->)g(unit\))g(->)f -(string)h(->)g(unit)227 3891 y Fg(as)30 b(ab)s(o)m(v)m(e)h(but)g(iter)g -(callbac)m(k)g(function)h(on)e(HTTP)h(resp)s(onse's)f(b)s(o)s(dy)f -(instead)i(of)f(returning)i(it)e(as)g(a)227 4004 y(string)0 -4216 y Fh(val)47 b(head)g(:)g(string)g(->)g(string)227 -4354 y Fi(Raises)31 b Fh(Http_error)f Fg(when)h(resp)s(onse)f(co)s(de)g -Fb(<>)g Fg(200)227 4504 y Fi(Returns)k Fg(HTTP)d(HEAD)f(ra)m(w)i(resp)s -(onse)1905 5400 y(23)p eop end -%%Trailer - -userdict /end-hook known{end-hook}if -%%EOF diff -Nru ocaml-http-0.1.5/doc/latex/ocaml-http.tex ocaml-http-0.1.6/doc/latex/ocaml-http.tex --- ocaml-http-0.1.5/doc/latex/ocaml-http.tex 2010-12-31 02:33:02.000000000 +0000 +++ ocaml-http-0.1.6/doc/latex/ocaml-http.tex 1970-01-01 00:00:00.000000000 +0000 @@ -1,3132 +0,0 @@ -\documentclass[11pt]{article} -\usepackage[latin1]{inputenc} -\usepackage[T1]{fontenc} -\usepackage{fullpage} -\usepackage{url} -\usepackage{ocamldoc} -\begin{document} -\tableofcontents -\section{Module {\tt{Cookie\_lexer}}} -\label{module:Cookie-underscorelexer}\index{Cookie-underscorelexer@\verb`Cookie_lexer`} - - -\ocamldocvspace{0.5cm} - - - -\label{type:Cookie-underscorelexer.cookie-underscoretoken}\begin{ocamldoccode} -type cookie_token = [ `ASSIGNMENT of string * string | `EOF | `SEP ] -\end{ocamldoccode} -\index{cookie-underscoretoken@\verb`cookie_token`} - - - - -\label{val:Cookie-underscorelexer.token}\begin{ocamldoccode} -val token : Lexing.lexbuf -> cookie_token -\end{ocamldoccode} -\index{token@\verb`token`} - - -\section{Module {\tt{Http\_common}} : Common functionalities shared by other OCaml HTTP modules} -\label{module:Http-underscorecommon}\index{Http-underscorecommon@\verb`Http_common`} - - - - -\ocamldocvspace{0.5cm} - - - -\label{val:Http-underscorecommon.debug}\begin{ocamldoccode} -val debug : bool Pervasives.ref -\end{ocamldoccode} -\index{debug@\verb`debug`} -\begin{ocamldocdescription} -whether debugging messages are enabled or not, can be changed at runtime - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscorecommon.debug-underscoreprint}\begin{ocamldoccode} -val debug_print : string -> unit -\end{ocamldoccode} -\index{debug-underscoreprint@\verb`debug_print`} -\begin{ocamldocdescription} -print a string on stderr only if debugging is enabled - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscorecommon.http-underscoreversion}\begin{ocamldoccode} -val http_version : Http_types.version -\end{ocamldoccode} -\index{http-underscoreversion@\verb`http_version`} -\begin{ocamldocdescription} -see {\tt{Http\_constants.version}}[\ref{val:Http-underscoreconstants.version}] - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscorecommon.server-underscorestring}\begin{ocamldoccode} -val server_string : string -\end{ocamldoccode} -\index{server-underscorestring@\verb`server_string`} -\begin{ocamldocdescription} -see {\tt{Http\_constants.server\_string}}[\ref{val:Http-underscoreconstants.server-underscorestring}] - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscorecommon.string-underscoreof-underscoreversion}\begin{ocamldoccode} -val string_of_version : Http_types.version -> string -\end{ocamldoccode} -\index{string-underscoreof-underscoreversion@\verb`string_of_version`} -\begin{ocamldocdescription} -pretty print an HTTP version - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscorecommon.version-underscoreof-underscorestring}\begin{ocamldoccode} -val version_of_string : string -> Http_types.version -\end{ocamldoccode} -\index{version-underscoreof-underscorestring@\verb`version_of_string`} -\begin{ocamldocdescription} -parse an HTTP version from a string - -{\bf Raises} {\tt{Invalid\_HTTP\_version}} if given string doesn't represent a supported HTTP - version - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscorecommon.string-underscoreof-underscoremethod}\begin{ocamldoccode} -val string_of_method : Http_types.meth -> string -\end{ocamldoccode} -\index{string-underscoreof-underscoremethod@\verb`string_of_method`} -\begin{ocamldocdescription} -pretty print an HTTP method - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscorecommon.method-underscoreof-underscorestring}\begin{ocamldoccode} -val method_of_string : string -> Http_types.meth -\end{ocamldoccode} -\index{method-underscoreof-underscorestring@\verb`method_of_string`} -\begin{ocamldocdescription} -parse an HTTP method from a string - -{\bf Raises} {\tt{Invalid\_HTTP\_method}} if given string doesn't represent a supported - method - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscorecommon.status-underscoreof-underscorecode}\begin{ocamldoccode} -val status_of_code : int -> Http_types.status -\end{ocamldoccode} -\index{status-underscoreof-underscorecode@\verb`status_of_code`} -\begin{ocamldocdescription} -converts an integer HTTP status to the corresponding status value - -{\bf Raises} {\tt{Invalid\_code}} if given integer isn't a valid HTTP status code - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscorecommon.code-underscoreof-underscorestatus}\begin{ocamldoccode} -val code_of_status : [< Http_types.status ] -> int -\end{ocamldoccode} -\index{code-underscoreof-underscorestatus@\verb`code_of_status`} -\begin{ocamldocdescription} -converts an HTTP status to the corresponding integer value - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscorecommon.is-underscoreinformational}\begin{ocamldoccode} -val is_informational : int -> bool -\end{ocamldoccode} -\index{is-underscoreinformational@\verb`is_informational`} -\begin{ocamldocdescription} -{\bf Returns }true on "informational" status codes, false elsewhere - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscorecommon.is-underscoresuccess}\begin{ocamldoccode} -val is_success : int -> bool -\end{ocamldoccode} -\index{is-underscoresuccess@\verb`is_success`} -\begin{ocamldocdescription} -{\bf Returns }true on "success" status codes, false elsewhere - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscorecommon.is-underscoreredirection}\begin{ocamldoccode} -val is_redirection : int -> bool -\end{ocamldoccode} -\index{is-underscoreredirection@\verb`is_redirection`} -\begin{ocamldocdescription} -{\bf Returns }true on "redirection" status codes, false elsewhere - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscorecommon.is-underscoreclient-underscoreerror}\begin{ocamldoccode} -val is_client_error : int -> bool -\end{ocamldoccode} -\index{is-underscoreclient-underscoreerror@\verb`is_client_error`} -\begin{ocamldocdescription} -{\bf Returns }true on "client error" status codes, false elsewhere - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscorecommon.is-underscoreserver-underscoreerror}\begin{ocamldoccode} -val is_server_error : int -> bool -\end{ocamldoccode} -\index{is-underscoreserver-underscoreerror@\verb`is_server_error`} -\begin{ocamldocdescription} -{\bf Returns }true on "server error" status codes, false elsewhere - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscorecommon.is-underscoreerror}\begin{ocamldoccode} -val is_error : int -> bool -\end{ocamldoccode} -\index{is-underscoreerror@\verb`is_error`} -\begin{ocamldocdescription} -{\bf Returns }true on "client error" and "server error" status code, false - elsewhere - - -\end{ocamldocdescription} - - -\section{Module {\tt{Http\_constants}} : Constants} -\label{module:Http-underscoreconstants}\index{Http-underscoreconstants@\verb`Http_constants`} - - - - -\ocamldocvspace{0.5cm} - - - -\label{val:Http-underscoreconstants.version}\begin{ocamldoccode} -val version : Http_types.version -\end{ocamldoccode} -\index{version@\verb`version`} -\begin{ocamldocdescription} -default HTTP version - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoreconstants.server-underscorestring}\begin{ocamldoccode} -val server_string : string -\end{ocamldoccode} -\index{server-underscorestring@\verb`server_string`} -\begin{ocamldocdescription} -string returned as value of "Server:" response header - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoreconstants.crlf}\begin{ocamldoccode} -val crlf : string -\end{ocamldoccode} -\index{crlf@\verb`crlf`} -\begin{ocamldocdescription} -"{\textbackslash}r{\textbackslash}n" string - - -\end{ocamldocdescription} - - - - -\subsection{daemon default values} - - - - -\label{val:Http-underscoreconstants.default-underscoreaddr}\begin{ocamldoccode} -val default_addr : string -\end{ocamldoccode} -\index{default-underscoreaddr@\verb`default_addr`} - - - - -\label{val:Http-underscoreconstants.default-underscoreauth}\begin{ocamldoccode} -val default_auth : (string * Http_types.auth_info) option -\end{ocamldoccode} -\index{default-underscoreauth@\verb`default_auth`} - - - - -\label{val:Http-underscoreconstants.default-underscoreauto-underscoreclose}\begin{ocamldoccode} -val default_auto_close : bool -\end{ocamldoccode} -\index{default-underscoreauto-underscoreclose@\verb`default_auto_close`} - - - - -\label{val:Http-underscoreconstants.default-underscorecallback}\begin{ocamldoccode} -val default_callback : Http_types.request -> Pervasives.out_channel -> unit -\end{ocamldoccode} -\index{default-underscorecallback@\verb`default_callback`} - - - - -\label{val:Http-underscoreconstants.default-underscoremode}\begin{ocamldoccode} -val default_mode : Http_types.daemon_mode -\end{ocamldoccode} -\index{default-underscoremode@\verb`default_mode`} - - - - -\label{val:Http-underscoreconstants.default-underscoreport}\begin{ocamldoccode} -val default_port : int -\end{ocamldoccode} -\index{default-underscoreport@\verb`default_port`} - - - - -\label{val:Http-underscoreconstants.default-underscoreroot-underscoredir}\begin{ocamldoccode} -val default_root_dir : string option -\end{ocamldoccode} -\index{default-underscoreroot-underscoredir@\verb`default_root_dir`} - - - - -\label{val:Http-underscoreconstants.default-underscoreexn-underscorehandler}\begin{ocamldoccode} -val default_exn_handler : (exn -> Pervasives.out_channel -> unit) option -\end{ocamldoccode} -\index{default-underscoreexn-underscorehandler@\verb`default_exn_handler`} - - - - -\label{val:Http-underscoreconstants.default-underscoretimeout}\begin{ocamldoccode} -val default_timeout : int option -\end{ocamldoccode} -\index{default-underscoretimeout@\verb`default_timeout`} - - -\section{Module {\tt{Http\_daemon}} : Main OCaml HTTP module.} -\label{module:Http-underscoredaemon}\index{Http-underscoredaemon@\verb`Http_daemon`} - - Here you can find two set of functions:\begin{itemize} -\item functions which let you start an HTTP Daemon (start* functions) -\item facility functions which let you sent responses back to clients -\end{itemize} - - - - -\ocamldocvspace{0.5cm} - - - -\label{val:Http-underscoredaemon.send-underscoreCRLF}\begin{ocamldoccode} -val send_CRLF : Pervasives.out_channel -> unit -\end{ocamldoccode} -\index{send-underscoreCRLF@\verb`send_CRLF`} -\begin{ocamldocdescription} -send a CRLF sequence on the given output channel, this is mandatory after - the last header was sent and before start sending the response body - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoredaemon.send-underscorestatus-underscoreline}\begin{ocamldoccode} -val send_status_line : - ?version:Http_types.version -> - code:Http_types.status_code -> Pervasives.out_channel -> unit -\end{ocamldoccode} -\index{send-underscorestatus-underscoreline@\verb`send_status_line`} -\begin{ocamldocdescription} -send response status line, version is the http version used in response, - either code or status must be given (not both, not none) which represent the - HTTP response code, outchan is the output channel to which send status line - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoredaemon.get-underscorebasic-underscoreheaders}\begin{ocamldoccode} -val get_basic_headers : unit -> (string * string) list -\end{ocamldoccode} -\index{get-underscorebasic-underscoreheaders@\verb`get_basic_headers`} -\begin{ocamldocdescription} -returns the basic headers "Date", "Server" and "Connection" used in - send\_basic\_headers - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoredaemon.send-underscorebasic-underscoreheaders}\begin{ocamldoccode} -val send_basic_headers : - ?version:Http_types.version -> - code:Http_types.status_code -> Pervasives.out_channel -> unit -\end{ocamldoccode} -\index{send-underscorebasic-underscoreheaders@\verb`send_basic_headers`} -\begin{ocamldocdescription} -like send\_status\_line but additionally will also send "Date", "Server" - and "Connection" standard headers - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoredaemon.send-underscoreheader}\begin{ocamldoccode} -val send_header : - header:string -> value:string -> Pervasives.out_channel -> unit -\end{ocamldoccode} -\index{send-underscoreheader@\verb`send_header`} -\begin{ocamldocdescription} -send an HTTP header on outchan - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoredaemon.send-underscoreheaders}\begin{ocamldoccode} -val send_headers : - headers:(string * string) list -> Pervasives.out_channel -> unit -\end{ocamldoccode} -\index{send-underscoreheaders@\verb`send_headers`} -\begin{ocamldocdescription} -as send\_header, but for a list of pairs $<$header, value$>$ - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoredaemon.send-underscorefile}\begin{ocamldoccode} -val send_file : src:Http_types.file_source -> Pervasives.out_channel -> unit -\end{ocamldoccode} -\index{send-underscorefile@\verb`send_file`} -\begin{ocamldocdescription} -send a file through an out\_channel - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoredaemon.respond}\begin{ocamldoccode} -val respond : - ?body:string -> - ?headers:(string * string) list -> - ?version:Http_types.version -> - ?code:Http_types.status_code -> Pervasives.out_channel -> unit -\end{ocamldoccode} -\index{respond@\verb`respond`} -\begin{ocamldocdescription} -high level response function, respond on outchan sending: basic headers - (including Content-Length computed using 'body' argument), headers probided - via 'headers' argument, body given via 'body' argument. Default response - status is 200, default response HTTP version is Http\_common.http\_version - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoredaemon.respond-underscorenot-underscorefound}\begin{ocamldoccode} -val respond_not_found : - url:string -> ?version:Http_types.version -> Pervasives.out_channel -> unit -\end{ocamldoccode} -\index{respond-underscorenot-underscorefound@\verb`respond_not_found`} -\begin{ocamldocdescription} -send a 404 (not found) HTTP response - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoredaemon.respond-underscoreforbidden}\begin{ocamldoccode} -val respond_forbidden : - url:string -> ?version:Http_types.version -> Pervasives.out_channel -> unit -\end{ocamldoccode} -\index{respond-underscoreforbidden@\verb`respond_forbidden`} -\begin{ocamldocdescription} -send a 403 (forbidden) HTTP response - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoredaemon.respond-underscoreredirect}\begin{ocamldoccode} -val respond_redirect : - location:string -> - ?body:string -> - ?version:Http_types.version -> - ?code:Http_types.status_code -> Pervasives.out_channel -> unit -\end{ocamldoccode} -\index{respond-underscoreredirect@\verb`respond_redirect`} -\begin{ocamldocdescription} -send a "redirection" class response, optional body argument contains data - that will be displayed in the body of the response, default response status is - 301 (moved permanently), only redirection status are accepted by this - function, other values will raise Failure - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoredaemon.respond-underscoreunauthorized}\begin{ocamldoccode} -val respond_unauthorized : - ?version:Http_types.version -> - ?realm:string -> Pervasives.out_channel -> unit -\end{ocamldoccode} -\index{respond-underscoreunauthorized@\verb`respond_unauthorized`} -\begin{ocamldocdescription} -respond with a 401 (Unauthorized) response asking for authentication - against given realm (default is the server name) - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoredaemon.respond-underscoreerror}\begin{ocamldoccode} -val respond_error : - ?body:string -> - ?version:Http_types.version -> - ?code:Http_types.status_code -> Pervasives.out_channel -> unit -\end{ocamldoccode} -\index{respond-underscoreerror@\verb`respond_error`} -\begin{ocamldocdescription} -send an "error" response (i.e. 400 $\leq$ status $<$ 600), optional body - argument as per send\_redirect, default response status is 400 (bad request), - only error status are accepted by this function, other values will - raise Failure - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoredaemon.respond-underscorefile}\begin{ocamldoccode} -val respond_file : - fname:string -> ?version:Http_types.version -> Pervasives.out_channel -> unit -\end{ocamldoccode} -\index{respond-underscorefile@\verb`respond_file`} -\begin{ocamldocdescription} -tipical static pages http daemon behaviour, if requested url is a file, - return it, it it is a directory return a directory listing of it - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoredaemon.respond-underscorewith}\begin{ocamldoccode} -val respond_with : Http_types.response -> Pervasives.out_channel -> unit -\end{ocamldoccode} -\index{respond-underscorewith@\verb`respond_with`} -\begin{ocamldocdescription} -respond using a prebuilt Http\_types.response object - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoredaemon.main}\begin{ocamldoccode} -val main : Http_types.daemon_spec -> unit -\end{ocamldoccode} -\index{main@\verb`main`} -\begin{ocamldocdescription} -start an HTTP daemon - - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoredaemon.default-underscorespec}\begin{ocamldoccode} -val default_spec : Http_types.daemon_spec -\end{ocamldoccode} -\index{default-underscorespec@\verb`default_spec`} -\begin{ocamldocdescription} -default daemon specification:\begin{itemize} -\item listen on 0.0.0.0, port 80 -\item "always ok" callback (return an empty response, response code 200) -\item fork a child for each request -\item do not change to a root directory (i.e. keep cwd) -\item 300 seconds timeout -\item ignores exceptions -\item no authentication required -\item do not automatically close client connections after callback -\end{itemize} - - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoredaemon.daemon-underscorespec}\begin{ocamldoccode} -val daemon_spec : - ?address:string -> - ?auth:(string * Http_types.auth_info) option -> - ?auto_close:bool -> - ?callback:(Http_types.request -> Pervasives.out_channel -> unit) -> - ?mode:Http_types.daemon_mode -> - ?port:int -> - ?root_dir:string option -> - ?exn_handler:(exn -> Pervasives.out_channel -> unit) option -> - ?timeout:int option -> unit -> Http_types.daemon_spec -\end{ocamldoccode} -\index{daemon-underscorespec@\verb`daemon_spec`} -\begin{ocamldocdescription} -currified daemon\_spec constructor. Each parameter of this function - corresponds to one field of Http\_types.daemon\_spec and defaults to the - corresponding field of Http\_daemon.default\_spec - - -\end{ocamldocdescription} - - - - -\begin{ocamldoccode} -{\tt{class daemon : }}{\tt{?addr:string -> ?port:int -> unit -> }}{\tt{Http\_types.daemon}}\end{ocamldoccode} -\label{class:Http-underscoredaemon.daemon}\index{daemon@\verb`daemon`} - - - -\begin{ocamldocdescription} -Object oriented interface to HTTP daemons. - - - -\end{ocamldocdescription} - - - - -\begin{ocamldoccode} -{\tt{module }}{\tt{Trivial}}{\tt{ : }}\end{ocamldoccode} -\label{module:Http-underscoredaemon.Trivial}\index{Trivial@\verb`Trivial`} - -\begin{ocamldocsigend} - - -\label{val:Http-underscoredaemon.Trivial.callback}\begin{ocamldoccode} -val callback : Http_types.request -> Pervasives.out_channel -> unit -\end{ocamldoccode} -\index{callback@\verb`callback`} -\begin{ocamldocdescription} -callback function, exposed if you like to use it as a basis to define - a more powerful daemon - - -\end{ocamldocdescription} - - -\label{val:Http-underscoredaemon.Trivial.main}\begin{ocamldoccode} -val main : Http_types.daemon_spec -> unit -\end{ocamldoccode} -\index{main@\verb`main`} -\begin{ocamldocdescription} -start the "trivial" HTTP daemon - - - -\end{ocamldocdescription} -\end{ocamldocsigend} - - -\begin{ocamldocdescription} -Trivial static pages HTTP daemon. - Daemons created using this module will serve directory indexes and files - found starting from the working directory - - -\end{ocamldocdescription} - - -\section{Module {\tt{Http\_message}} : Object Oriented representation of HTTP messages} -\label{module:Http-underscoremessage}\index{Http-underscoremessage@\verb`Http_message`} - - - - -\ocamldocvspace{0.5cm} - - - -\begin{ocamldoccode} -{\tt{class virtual message : }}{\tt{body:string -> headers:(string * string) list -> version:Http\_types.version option -> clisockaddr:Unix.sockaddr -> srvsockaddr:Unix.sockaddr -> }}\end{ocamldoccode} -\label{class:Http-underscoremessage.message}\index{message@\verb`message`} - -\begin{ocamldocobjectend} - - -\label{method:Http-underscoremessage.message.version}\begin{ocamldoccode} -method version : Http_types.version option -\end{ocamldoccode} -\index{version@\verb`version`} -\begin{ocamldocdescription} -{\bf Returns }message HTTP version, it can be None because older version - of the HTTP protocol don't require HTTP version to be told between - message source and destination - - -\end{ocamldocdescription} - - -\label{method:Http-underscoremessage.message.setVersion}\begin{ocamldoccode} -method setVersion : Http_types.version -> unit -\end{ocamldoccode} -\index{setVersion@\verb`setVersion`} -\begin{ocamldocdescription} -set message HTTP version - - -\end{ocamldocdescription} - - -\label{method:Http-underscoremessage.message.body}\begin{ocamldoccode} -method body : string -\end{ocamldoccode} -\index{body@\verb`body`} -\begin{ocamldocdescription} -{\bf Returns }message body - - -\end{ocamldocdescription} - - -\label{method:Http-underscoremessage.message.setBody}\begin{ocamldoccode} -method setBody : string -> unit -\end{ocamldoccode} -\index{setBody@\verb`setBody`} -\begin{ocamldocdescription} -set message body - - -\end{ocamldocdescription} - - -\label{method:Http-underscoremessage.message.bodyBuf}\begin{ocamldoccode} -method bodyBuf : Buffer.t -\end{ocamldoccode} -\index{bodyBuf@\verb`bodyBuf`} -\begin{ocamldocdescription} -{\bf Returns }a Buffer.t connected to message body (Warning: changing this - buffer will change message body too) - - -\end{ocamldocdescription} - - -\label{method:Http-underscoremessage.message.setBodyBuf}\begin{ocamldoccode} -method setBodyBuf : Buffer.t -> unit -\end{ocamldoccode} -\index{setBodyBuf@\verb`setBodyBuf`} -\begin{ocamldocdescription} -set a new Buffer.t used to keep message body - - -\end{ocamldocdescription} - - -\label{method:Http-underscoremessage.message.addBody}\begin{ocamldoccode} -method addBody : string -> unit -\end{ocamldoccode} -\index{addBody@\verb`addBody`} -\begin{ocamldocdescription} -append a string to message body - - -\end{ocamldocdescription} - - -\label{method:Http-underscoremessage.message.addBodyBuf}\begin{ocamldoccode} -method addBodyBuf : Buffer.t -> unit -\end{ocamldoccode} -\index{addBodyBuf@\verb`addBodyBuf`} -\begin{ocamldocdescription} -append a whole buffer to message body - - -\end{ocamldocdescription} - - -\subsubsection{{\it header name comparison are performed in a case-insensitive manner - as required by RFC2616, actually the implementation works converting all - header names in lowercase}} - - -\label{method:Http-underscoremessage.message.addHeader}\begin{ocamldoccode} -method addHeader : name:string -> value:string -> unit -\end{ocamldoccode} -\index{addHeader@\verb`addHeader`} -\begin{ocamldocdescription} -add an HTTP header - - -\end{ocamldocdescription} - - -\label{method:Http-underscoremessage.message.addHeaders}\begin{ocamldoccode} -method addHeaders : (string * string) list -> unit -\end{ocamldoccode} -\index{addHeaders@\verb`addHeaders`} -\begin{ocamldocdescription} -add a list of HTTP headers - - -\end{ocamldocdescription} - - -\label{method:Http-underscoremessage.message.replaceHeader}\begin{ocamldoccode} -method replaceHeader : name:string -> value:string -> unit -\end{ocamldoccode} -\index{replaceHeader@\verb`replaceHeader`} -\begin{ocamldocdescription} -like addHeader but replace previous definition of the same header - - -\end{ocamldocdescription} - - -\label{method:Http-underscoremessage.message.replaceHeaders}\begin{ocamldoccode} -method replaceHeaders : (string * string) list -> unit -\end{ocamldoccode} -\index{replaceHeaders@\verb`replaceHeaders`} -\begin{ocamldocdescription} -like addHeaders but replace previous definition of headers that were - already defined - - -\end{ocamldocdescription} - - -\label{method:Http-underscoremessage.message.removeHeader}\begin{ocamldoccode} -method removeHeader : name:string -> unit -\end{ocamldoccode} -\index{removeHeader@\verb`removeHeader`} -\begin{ocamldocdescription} -remove \_all\_ occurences of an HTTP header from the message - - -\end{ocamldocdescription} - - -\label{method:Http-underscoremessage.message.hasHeader}\begin{ocamldoccode} -method hasHeader : name:string -> bool -\end{ocamldoccode} -\index{hasHeader@\verb`hasHeader`} -\begin{ocamldocdescription} -{\bf Returns }true if given header exists in message, false otherwise - - -\end{ocamldocdescription} - - -\label{method:Http-underscoremessage.message.header}\begin{ocamldoccode} -method header : name:string -> string -\end{ocamldoccode} -\index{header@\verb`header`} -\begin{ocamldocdescription} -{\bf Raises} {\tt{Header\_not\_found}} if given header wasn't defined in message - -{\bf Returns }value associated to a given header - - -\end{ocamldocdescription} - - -\label{method:Http-underscoremessage.message.headers}\begin{ocamldoccode} -method headers : (string * string) list -\end{ocamldoccode} -\index{headers@\verb`headers`} -\begin{ocamldocdescription} -{\bf Returns }the full set of headers defined for this message, the value - returned is an association list from headers name to headers value, an - header may occurs more that once in the list - - -\end{ocamldocdescription} - - -\label{method:Http-underscoremessage.message.clientSockaddr}\begin{ocamldoccode} -method clientSockaddr : Unix.sockaddr -\end{ocamldoccode} -\index{clientSockaddr@\verb`clientSockaddr`} -\begin{ocamldocdescription} -{\bf Returns }client Unix.sockaddr - - -\end{ocamldocdescription} - - -\label{method:Http-underscoremessage.message.clientAddr}\begin{ocamldoccode} -method clientAddr : string -\end{ocamldoccode} -\index{clientAddr@\verb`clientAddr`} -\begin{ocamldocdescription} -{\bf Returns }client address pretty printed - - -\end{ocamldocdescription} - - -\label{method:Http-underscoremessage.message.clientPort}\begin{ocamldoccode} -method clientPort : int -\end{ocamldoccode} -\index{clientPort@\verb`clientPort`} -\begin{ocamldocdescription} -{\bf Returns }client port - - -\end{ocamldocdescription} - - -\label{method:Http-underscoremessage.message.serverSockaddr}\begin{ocamldoccode} -method serverSockaddr : Unix.sockaddr -\end{ocamldoccode} -\index{serverSockaddr@\verb`serverSockaddr`} -\begin{ocamldocdescription} -{\bf Returns }server Unix.sockaddr - - -\end{ocamldocdescription} - - -\label{method:Http-underscoremessage.message.serverAddr}\begin{ocamldoccode} -method serverAddr : string -\end{ocamldoccode} -\index{serverAddr@\verb`serverAddr`} -\begin{ocamldocdescription} -{\bf Returns }server address pretty printed - - -\end{ocamldocdescription} - - -\label{method:Http-underscoremessage.message.serverPort}\begin{ocamldoccode} -method serverPort : int -\end{ocamldoccode} -\index{serverPort@\verb`serverPort`} -\begin{ocamldocdescription} -{\bf Returns }server port - - -\end{ocamldocdescription} - - -\label{method:Http-underscoremessage.message.fstLineToString}\begin{ocamldoccode} -method private virtual fstLineToString : string -\end{ocamldoccode} -\index{fstLineToString@\verb`fstLineToString`} -\begin{ocamldocdescription} -{\bf Returns }for requests first request line, for responses first - response line. - User by derived requests and responses to implement toString method - - -\end{ocamldocdescription} - - -\label{method:Http-underscoremessage.message.toString}\begin{ocamldoccode} -method toString : string -\end{ocamldoccode} -\index{toString@\verb`toString`} -\begin{ocamldocdescription} -{\bf Returns }a string representation of the message - - -\end{ocamldocdescription} - - -\label{method:Http-underscoremessage.message.serialize}\begin{ocamldoccode} -method serialize : Pervasives.out_channel -> unit -\end{ocamldoccode} -\index{serialize@\verb`serialize`} -\begin{ocamldocdescription} -serialize the message over an output channel - - -\end{ocamldocdescription} -\end{ocamldocobjectend} - - -\begin{ocamldocdescription} -OO representation of an HTTP message - - -\end{ocamldocdescription} - - -\section{Module {\tt{Http\_misc}} : Helpers and other not better classified functions which should not be -exposed in the final API} -\label{module:Http-underscoremisc}\index{Http-underscoremisc@\verb`Http_misc`} - - - - -\ocamldocvspace{0.5cm} - - - -\label{val:Http-underscoremisc.date-underscore822}\begin{ocamldoccode} -val date_822 : unit -> string -\end{ocamldoccode} -\index{date-underscore822@\verb`date_822`} -\begin{ocamldocdescription} -{\bf Returns }the current date compliant to RFC 1123, which updates RFC 822 - zone info are retrieved from UTC - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoremisc.is-underscoredirectory}\begin{ocamldoccode} -val is_directory : string -> bool -\end{ocamldoccode} -\index{is-underscoredirectory@\verb`is_directory`} -\begin{ocamldocdescription} -{\bf Returns }true if 'name' is a directory on the file system, false otherwise - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoremisc.filesize}\begin{ocamldoccode} -val filesize : string -> int -\end{ocamldoccode} -\index{filesize@\verb`filesize`} -\begin{ocamldocdescription} -{\bf Returns }the filesize of fname - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoremisc.strip-underscoretrailing-underscoreslash}\begin{ocamldoccode} -val strip_trailing_slash : string -> string -\end{ocamldoccode} -\index{strip-underscoretrailing-underscoreslash@\verb`strip_trailing_slash`} -\begin{ocamldocdescription} -strip trailing '/', if any, from a string and - -{\bf Returns }the new string - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoremisc.strip-underscoreheading-underscoreslash}\begin{ocamldoccode} -val strip_heading_slash : string -> string -\end{ocamldoccode} -\index{strip-underscoreheading-underscoreslash@\verb`strip_heading_slash`} -\begin{ocamldocdescription} -strip heading '/', if any, from a string and - -{\bf Returns }the new string - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoremisc.ls}\begin{ocamldoccode} -val ls : Unix.dir_handle -> string list -\end{ocamldoccode} -\index{ls@\verb`ls`} -\begin{ocamldocdescription} -given a dir handle - -{\bf Returns }a list of entries contained - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoremisc.string-underscoreexplode}\begin{ocamldoccode} -val string_explode : string -> char list -\end{ocamldoccode} -\index{string-underscoreexplode@\verb`string_explode`} -\begin{ocamldocdescription} -explode a string in a char list - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoremisc.string-underscoreimplode}\begin{ocamldoccode} -val string_implode : char list -> string -\end{ocamldoccode} -\index{string-underscoreimplode@\verb`string_implode`} -\begin{ocamldocdescription} -implode a char list in a string - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoremisc.reason-underscorephrase-underscoreof-underscorecode}\begin{ocamldoccode} -val reason_phrase_of_code : int -> string -\end{ocamldoccode} -\index{reason-underscorephrase-underscoreof-underscorecode@\verb`reason_phrase_of_code`} -\begin{ocamldocdescription} -given an HTTP response code return the corresponding reason phrase - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoremisc.build-underscoresockaddr}\begin{ocamldoccode} -val build_sockaddr : string * int -> Unix.sockaddr -\end{ocamldoccode} -\index{build-underscoresockaddr@\verb`build_sockaddr`} -\begin{ocamldocdescription} -build a Unix.sockaddr inet address from a string representation of an IP - address and a port number - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoremisc.explode-underscoresockaddr}\begin{ocamldoccode} -val explode_sockaddr : Unix.sockaddr -> string * int -\end{ocamldoccode} -\index{explode-underscoresockaddr@\verb`explode_sockaddr`} -\begin{ocamldocdescription} -explode an \_inet\_ Unix.sockaddr address in a string representation of an - IP address and a port number - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoremisc.peername-underscoreof-underscoreout-underscorechannel}\begin{ocamldoccode} -val peername_of_out_channel : Pervasives.out_channel -> Unix.sockaddr -\end{ocamldoccode} -\index{peername-underscoreof-underscoreout-underscorechannel@\verb`peername_of_out_channel`} -\begin{ocamldocdescription} -given an out\_channel build on top of a socket, return peername related to - that socket - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoremisc.peername-underscoreof-underscorein-underscorechannel}\begin{ocamldoccode} -val peername_of_in_channel : Pervasives.in_channel -> Unix.sockaddr -\end{ocamldoccode} -\index{peername-underscoreof-underscorein-underscorechannel@\verb`peername_of_in_channel`} -\begin{ocamldocdescription} -as above but works on in\_channels - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoremisc.sockname-underscoreof-underscoreout-underscorechannel}\begin{ocamldoccode} -val sockname_of_out_channel : Pervasives.out_channel -> Unix.sockaddr -\end{ocamldoccode} -\index{sockname-underscoreof-underscoreout-underscorechannel@\verb`sockname_of_out_channel`} -\begin{ocamldocdescription} -given an out\_channel build on top of a socket, return sockname related to - that socket - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoremisc.sockname-underscoreof-underscorein-underscorechannel}\begin{ocamldoccode} -val sockname_of_in_channel : Pervasives.in_channel -> Unix.sockaddr -\end{ocamldoccode} -\index{sockname-underscoreof-underscorein-underscorechannel@\verb`sockname_of_in_channel`} -\begin{ocamldocdescription} -as above but works on in\_channels - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoremisc.buf-underscoreof-underscoreinchan}\begin{ocamldoccode} -val buf_of_inchan : ?limit:int -> Pervasives.in_channel -> Buffer.t -\end{ocamldoccode} -\index{buf-underscoreof-underscoreinchan@\verb`buf_of_inchan`} -\begin{ocamldocdescription} -reads from an input channel till it End\_of\_file and returns what has been - read; if limit is given returned buffer will contains at most first 'limit' - bytes read from input channel - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoremisc.list-underscoreassoc-underscoreall}\begin{ocamldoccode} -val list_assoc_all : 'a -> ('a * 'b) list -> 'b list -\end{ocamldoccode} -\index{list-underscoreassoc-underscoreall@\verb`list_assoc_all`} -\begin{ocamldocdescription} -like List.assoc but return all bindings of a given key instead of the - leftmost one only - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoremisc.warn}\begin{ocamldoccode} -val warn : string -> unit -\end{ocamldoccode} -\index{warn@\verb`warn`} -\begin{ocamldocdescription} -print a warning msg to stderr. Adds trailing {\textbackslash}n - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoremisc.error}\begin{ocamldoccode} -val error : string -> unit -\end{ocamldoccode} -\index{error@\verb`error`} -\begin{ocamldocdescription} -print an error msg to stderr. Adds trailing {\textbackslash}n - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoremisc.finally}\begin{ocamldoccode} -val finally : (unit -> unit) -> ('a -> 'b) -> 'a -> 'b -\end{ocamldoccode} -\index{finally@\verb`finally`} -\begin{ocamldocdescription} - -\end{ocamldocdescription} - - -\section{Module {\tt{Http\_parser}} : HTTP messages parsing} -\label{module:Http-underscoreparser}\index{Http-underscoreparser@\verb`Http_parser`} - - - - -\ocamldocvspace{0.5cm} - - - -\label{val:Http-underscoreparser.split-underscorequery-underscoreparams}\begin{ocamldoccode} -val split_query_params : string -> (string * string) list -\end{ocamldoccode} -\index{split-underscorequery-underscoreparams@\verb`split_query_params`} -\begin{ocamldocdescription} -given an HTTP like query string (e.g. "name1$=$value1\&name2$=$value2\&$\ldots$") - -{\bf Raises} \begin{itemize} -\item {\tt{Malformed\_query}} if the string isn't a valid query string -\item {\tt{Malformed\_query\_part}} if some piece of the query isn't valid -\end{itemize} - - -{\bf Returns }a list of pairs {\tt{("name1", "value1"); ("name2", "value2")}} - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoreparser.parse-underscorerequest-underscorefst-underscoreline}\begin{ocamldoccode} -val parse_request_fst_line : - Pervasives.in_channel -> - Http_types.meth * Neturl.url * Http_types.version option -\end{ocamldoccode} -\index{parse-underscorerequest-underscorefst-underscoreline@\verb`parse_request_fst_line`} -\begin{ocamldocdescription} -parse 1st line of an HTTP request - -{\bf Raises} \begin{itemize} -\item {\tt{Malformed\_request}} if request 1st linst isn't well formed -\item {\tt{Malformed\_request\_URI}} if requested URI isn't well formed -\end{itemize} - - -{\bf Returns }a triple meth * url * version, meth is the HTTP method invoked, url is - the requested url, version is the HTTP version specified or None if no version - was specified - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoreparser.parse-underscoreresponse-underscorefst-underscoreline}\begin{ocamldoccode} -val parse_response_fst_line : - Pervasives.in_channel -> Http_types.version * Http_types.status -\end{ocamldoccode} -\index{parse-underscoreresponse-underscorefst-underscoreline@\verb`parse_response_fst_line`} -\begin{ocamldocdescription} -parse 1st line of an HTTP response - - -{\bf Raises} {\tt{Malformed\_response}} if first line isn't well formed - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoreparser.parse-underscorequery-underscoreget-underscoreparams}\begin{ocamldoccode} -val parse_query_get_params : Neturl.url -> (string * string) list -\end{ocamldoccode} -\index{parse-underscorequery-underscoreget-underscoreparams@\verb`parse_query_get_params`} -\begin{ocamldocdescription} -parse HTTP GET parameters from an URL; paramater which were passed with no - value (like 'x' in "/foo.cgi?a$=$10\&x$=$\&c$=$9") are returned associated with the - empty ("") string. - -{\bf Returns }a list of pairs param\_name * param\_value - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoreparser.parse-underscorepath}\begin{ocamldoccode} -val parse_path : Neturl.url -> string -\end{ocamldoccode} -\index{parse-underscorepath@\verb`parse_path`} -\begin{ocamldocdescription} -parse the base path (removing query string, fragment, $\ldots$.) from an URL - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoreparser.parse-underscoreheaders}\begin{ocamldoccode} -val parse_headers : Pervasives.in_channel -> (string * string) list -\end{ocamldoccode} -\index{parse-underscoreheaders@\verb`parse_headers`} -\begin{ocamldocdescription} -parse HTTP headers. Consumes also trailing CRLF at the end of header list - -{\bf Raises} {\tt{Invalid\_header}} if a not well formed header is encountered - -{\bf Returns }a list of pairs header\_name * header\_value - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoreparser.parse-underscorecookies}\begin{ocamldoccode} -val parse_cookies : string -> (string * string) list -\end{ocamldoccode} -\index{parse-underscorecookies@\verb`parse_cookies`} -\begin{ocamldocdescription} -parse a Cookie header, extracting an associative list $<$attribute name, - attribute value$>$. See RFC 2965 - - -{\bf Raises} {\tt{Malformed\_cookies}} if raw\_cookies does not conform to RFC 2965 - -{\bf Returns }a list of pairs cookie\_name * cookie\_value - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoreparser.parse-underscorerequest}\begin{ocamldoccode} -val parse_request : Pervasives.in_channel -> string * (string * string) list -\end{ocamldoccode} -\index{parse-underscorerequest@\verb`parse_request`} -\begin{ocamldocdescription} -given an input channel, reads from it a GET HTTP request and - -{\bf Returns }a pair $<$path, query\_params$>$ where path is a string representing the - requested path and query\_params is a list of pairs $<$name, value$>$ (the GET - parameters) - - -\end{ocamldocdescription} - - -\section{Module {\tt{Http\_parser\_sanity}} : Sanity test functions related to HTTP message parsing} -\label{module:Http-underscoreparser-underscoresanity}\index{Http-underscoreparser-underscoresanity@\verb`Http_parser_sanity`} - - - - -\ocamldocvspace{0.5cm} - - - -\label{val:Http-underscoreparser-underscoresanity.heal-underscoreheader-underscorename}\begin{ocamldoccode} -val heal_header_name : string -> unit -\end{ocamldoccode} -\index{heal-underscoreheader-underscorename@\verb`heal_header_name`} -\begin{ocamldocdescription} -{\bf Raises} {\tt{Invalid\_header\_name}} if name isn't a valid HTTP header name - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoreparser-underscoresanity.heal-underscoreheader-underscorevalue}\begin{ocamldoccode} -val heal_header_value : string -> unit -\end{ocamldoccode} -\index{heal-underscoreheader-underscorevalue@\verb`heal_header_value`} -\begin{ocamldocdescription} -{\bf Raises} {\tt{Invalid\_header\_value}} if value isn't a valid HTTP header value - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoreparser-underscoresanity.heal-underscoreheader}\begin{ocamldoccode} -val heal_header : string * string -> unit -\end{ocamldoccode} -\index{heal-underscoreheader@\verb`heal_header`} -\begin{ocamldocdescription} -{\bf Raises} \begin{itemize} -\item {\tt{Invalid\_header\_name}} if name isn't a valid HTTP header name -\item {\tt{Invalid\_header\_value}} if value isn't a valid HTTP header value -\end{itemize} - - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoreparser-underscoresanity.normalize-underscoreheader-underscorevalue}\begin{ocamldoccode} -val normalize_header_value : string -> string -\end{ocamldoccode} -\index{normalize-underscoreheader-underscorevalue@\verb`normalize_header_value`} -\begin{ocamldocdescription} -remove heading and/or trailing LWS sequences as per RFC2616 - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoreparser-underscoresanity.url-underscoreof-underscorestring}\begin{ocamldoccode} -val url_of_string : string -> Neturl.url -\end{ocamldoccode} -\index{url-underscoreof-underscorestring@\verb`url_of_string`} -\begin{ocamldocdescription} -parse an URL from a string. - -{\bf Raises} {\tt{Malformed\_URL}} if an invalid URL is encountered - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoreparser-underscoresanity.string-underscoreof-underscoreurl}\begin{ocamldoccode} -val string_of_url : Neturl.url -> string -\end{ocamldoccode} -\index{string-underscoreof-underscoreurl@\verb`string_of_url`} -\begin{ocamldocdescription} -pretty print an URL - - -\end{ocamldocdescription} - - -\section{Module {\tt{Http\_request}} : Object Oriented representation of HTTP requests} -\label{module:Http-underscorerequest}\index{Http-underscorerequest@\verb`Http_request`} - - - - -\ocamldocvspace{0.5cm} - - - -\begin{ocamldoccode} -{\tt{class request : }}{\tt{Pervasives.in\_channel -> }}{\tt{Http\_types.request}}\end{ocamldoccode} -\label{class:Http-underscorerequest.request}\index{request@\verb`request`} - - - -\begin{ocamldocdescription} -OO representation of an HTTP request - - -\end{ocamldocdescription} - - -\section{Module {\tt{Http\_response}} : Object Oriented representation of HTTP responses} -\label{module:Http-underscoreresponse}\index{Http-underscoreresponse@\verb`Http_response`} - - - - -\ocamldocvspace{0.5cm} - - - -\begin{ocamldoccode} -{\tt{class response : }}{\tt{?body:string -> ?headers:(string * string) list -> ?version:Http\_types.version -> ?clisockaddr:Unix.sockaddr -> ?srvsockaddr:Unix.sockaddr -> ?code:int -> ?status:Http\_types.status -> unit -> }}{\tt{Http\_types.response}}\end{ocamldoccode} -\label{class:Http-underscoreresponse.response}\index{response@\verb`response`} - - - -\begin{ocamldocdescription} -OO representation of an HTTP response. - - -\end{ocamldocdescription} - - -\section{Module {\tt{Http\_tcp\_server}} : TCP servers used as low-levels for HTTP daemons} -\label{module:Http-underscoretcp-underscoreserver}\index{Http-underscoretcp-underscoreserver@\verb`Http_tcp_server`} - - - - -\ocamldocvspace{0.5cm} - - - -\subsection{servers} - - - - -\label{val:Http-underscoretcp-underscoreserver.simple}\begin{ocamldoccode} -val simple : Http_types.tcp_server -\end{ocamldoccode} -\index{simple@\verb`simple`} -\begin{ocamldocdescription} -single process server - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoretcp-underscoreserver.thread}\begin{ocamldoccode} -val thread : Http_types.tcp_server -\end{ocamldoccode} -\index{thread@\verb`thread`} -\begin{ocamldocdescription} -multi threaded server - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoretcp-underscoreserver.fork}\begin{ocamldoccode} -val fork : Http_types.tcp_server -\end{ocamldoccode} -\index{fork@\verb`fork`} -\begin{ocamldocdescription} -multi process server - - -\end{ocamldocdescription} - - - - -\subsection{low level functions} - - - - -\label{val:Http-underscoretcp-underscoreserver.init-underscoresocket}\begin{ocamldoccode} -val init_socket : Unix.sockaddr -> Unix.file_descr -\end{ocamldoccode} -\index{init-underscoresocket@\verb`init_socket`} -\begin{ocamldocdescription} -initialize a passive socket listening on given Unix.sockaddr - - -\end{ocamldocdescription} - - -\section{Module {\tt{Http\_threaded\_tcp\_server}} : Multithreaded part of Http\_tcp\_server} -\label{module:Http-underscorethreaded-underscoretcp-underscoreserver}\index{Http-underscorethreaded-underscoretcp-underscoreserver@\verb`Http_threaded_tcp_server`} - - - - -\ocamldocvspace{0.5cm} - - - -\label{val:Http-underscorethreaded-underscoretcp-underscoreserver.serve}\begin{ocamldoccode} -val serve : ('a -> 'b) -> 'a -> unit -\end{ocamldoccode} -\index{serve@\verb`serve`} -\begin{ocamldocdescription} -serve an HTTP request for a multi threaded TCP server - - -\end{ocamldocdescription} - - -\section{Module {\tt{Http\_types}} : Type definitions} -\label{module:Http-underscoretypes}\index{Http-underscoretypes@\verb`Http_types`} - - - - -\ocamldocvspace{0.5cm} - - - -\label{type:Http-underscoretypes.version}\begin{ocamldoccode} -type version = [ `HTTP_1_0 | `HTTP_1_1 ] -\end{ocamldoccode} -\index{version@\verb`version`} -\begin{ocamldocdescription} -HTTP version, actually only 1.0 and 1.1 are supported. Note that - 'supported' here means only 'accepted inside a HTTP request line', no - different behaviours are actually implemented depending on HTTP version - - -\end{ocamldocdescription} - - - - -\label{type:Http-underscoretypes.meth}\begin{ocamldoccode} -type meth = [ `GET | `POST ] -\end{ocamldoccode} -\index{meth@\verb`meth`} -\begin{ocamldocdescription} -HTTP method, actually only GET and POST methods are supported - - -\end{ocamldocdescription} - - - - -\label{type:Http-underscoretypes.daemon-underscoremode}\begin{ocamldoccode} -type daemon_mode = [ `Fork | `Single | `Thread ] -\end{ocamldoccode} -\index{daemon-underscoremode@\verb`daemon_mode`} -\begin{ocamldocdescription} -Daemon behaviour wrt request handling. `Single mode use a single process - to handle all requests, no request is served until a previous one has been - fully served. `Fork mode fork a new process for each request, the new process - will execute the callback function and then exit. `Thread mode create a new - thread for each request, the new thread will execute the callback function and - then exit, threads can communicate using standard OCaml Thread library. - - -\end{ocamldocdescription} - - - - -\label{type:Http-underscoretypes.tcp-underscoreserver}\begin{ocamldoccode} -type tcp_server = sockaddr:Unix.sockaddr -> - timeout:int option -> - (Pervasives.in_channel -> Pervasives.out_channel -> unit) -> unit -\end{ocamldoccode} -\index{tcp-underscoreserver@\verb`tcp_server`} -\begin{ocamldocdescription} -A TCP server is a function taking an address on which bind and listen for - connections, an optional timeout after which abort client connections and a - callback function which in turn takes an input and an output channel as - arguments. After receiving this argument a TCP server sits and waits for - connection, on each connection it apply the callback function to channels - connected to client. - - -\end{ocamldocdescription} - - - - -\label{type:Http-underscoretypes.auth-underscoreinfo}\begin{ocamldoccode} -type auth_info = [ `Basic of string * string ] -\end{ocamldoccode} -\index{auth-underscoreinfo@\verb`auth_info`} -\begin{ocamldocdescription} -authentication information - - -\end{ocamldocdescription} - - - - -\label{type:Http-underscoretypes.informational-underscoresubstatus}\begin{ocamldoccode} -type informational_substatus = [ `Continue | `Switching_protocols ] -\end{ocamldoccode} -\index{informational-underscoresubstatus@\verb`informational_substatus`} -\begin{ocamldocdescription} -{\bf See also} {\it RFC2616} informational HTTP status - - -\end{ocamldocdescription} - - - - -\label{type:Http-underscoretypes.success-underscoresubstatus}\begin{ocamldoccode} -type success_substatus = [ `Accepted - | `Created - | `No_content - | `Non_authoritative_information - | `OK - | `Partial_content - | `Reset_content ] -\end{ocamldoccode} -\index{success-underscoresubstatus@\verb`success_substatus`} -\begin{ocamldocdescription} -{\bf See also} {\it RFC2616} success HTTP status - - -\end{ocamldocdescription} - - - - -\label{type:Http-underscoretypes.redirection-underscoresubstatus}\begin{ocamldoccode} -type redirection_substatus = [ `Found - | `Moved_permanently - | `Multiple_choices - | `Not_modified - | `See_other - | `Temporary_redirect - | `Use_proxy ] -\end{ocamldoccode} -\index{redirection-underscoresubstatus@\verb`redirection_substatus`} -\begin{ocamldocdescription} -{\bf See also} {\it RFC2616} redirection HTTP status - - -\end{ocamldocdescription} - - - - -\label{type:Http-underscoretypes.client-underscoreerror-underscoresubstatus}\begin{ocamldoccode} -type client_error_substatus = [ `Bad_request - | `Conflict - | `Expectation_failed - | `Forbidden - | `Gone - | `Length_required - | `Method_not_allowed - | `Not_acceptable - | `Not_found - | `Payment_required - | `Precondition_failed - | `Proxy_authentication_required - | `Request_URI_too_large - | `Request_entity_too_large - | `Request_time_out - | `Requested_range_not_satisfiable - | `Unauthorized - | `Unsupported_media_type ] -\end{ocamldoccode} -\index{client-underscoreerror-underscoresubstatus@\verb`client_error_substatus`} -\begin{ocamldocdescription} -{\bf See also} {\it RFC2616} client error HTTP status - - -\end{ocamldocdescription} - - - - -\label{type:Http-underscoretypes.server-underscoreerror-underscoresubstatus}\begin{ocamldoccode} -type server_error_substatus = [ `Bad_gateway - | `Gateway_time_out - | `HTTP_version_not_supported - | `Internal_server_error - | `Not_implemented - | `Service_unavailable ] -\end{ocamldoccode} -\index{server-underscoreerror-underscoresubstatus@\verb`server_error_substatus`} -\begin{ocamldocdescription} -{\bf See also} {\it RFC2616} server error HTTP status - - -\end{ocamldocdescription} - - - - -\label{type:Http-underscoretypes.informational-underscorestatus}\begin{ocamldoccode} -type informational_status = [ `Informational of informational_substatus ] -\end{ocamldoccode} -\index{informational-underscorestatus@\verb`informational_status`} - - - - -\label{type:Http-underscoretypes.success-underscorestatus}\begin{ocamldoccode} -type success_status = [ `Success of success_substatus ] -\end{ocamldoccode} -\index{success-underscorestatus@\verb`success_status`} - - - - -\label{type:Http-underscoretypes.redirection-underscorestatus}\begin{ocamldoccode} -type redirection_status = [ `Redirection of redirection_substatus ] -\end{ocamldoccode} -\index{redirection-underscorestatus@\verb`redirection_status`} - - - - -\label{type:Http-underscoretypes.client-underscoreerror-underscorestatus}\begin{ocamldoccode} -type client_error_status = [ `Client_error of client_error_substatus ] -\end{ocamldoccode} -\index{client-underscoreerror-underscorestatus@\verb`client_error_status`} - - - - -\label{type:Http-underscoretypes.server-underscoreerror-underscorestatus}\begin{ocamldoccode} -type server_error_status = [ `Server_error of server_error_substatus ] -\end{ocamldoccode} -\index{server-underscoreerror-underscorestatus@\verb`server_error_status`} - - - - -\label{type:Http-underscoretypes.error-underscorestatus}\begin{ocamldoccode} -type error_status = [ `Client_error of client_error_substatus - | `Server_error of server_error_substatus ] -\end{ocamldoccode} -\index{error-underscorestatus@\verb`error_status`} - - - - -\label{type:Http-underscoretypes.status}\begin{ocamldoccode} -type status = [ `Client_error of client_error_substatus - | `Informational of informational_substatus - | `Redirection of redirection_substatus - | `Server_error of server_error_substatus - | `Success of success_substatus ] -\end{ocamldoccode} -\index{status@\verb`status`} -\begin{ocamldocdescription} -HTTP status - - -\end{ocamldocdescription} - - - - -\label{type:Http-underscoretypes.status-underscorecode}\begin{ocamldoccode} -type status_code = [ `Code of int | `Status of status ] -\end{ocamldoccode} -\index{status-underscorecode@\verb`status_code`} - - - - -\label{type:Http-underscoretypes.file-underscoresource}\begin{ocamldoccode} -type file_source = - | FileSrc of string -\end{ocamldoccode} -\begin{ocamldoccomment} -filename -\end{ocamldoccomment} -\begin{ocamldoccode} - | InChanSrc of Pervasives.in_channel -\end{ocamldoccode} -\begin{ocamldoccomment} -input channel -\end{ocamldoccomment} -\index{file-underscoresource@\verb`file_source`} -\begin{ocamldocdescription} -File sources - - -\end{ocamldocdescription} - - - - -\subsection{Exceptions} - - - - -\label{exception:Http-underscoretypes.Invalid-underscoreheader}\begin{ocamldoccode} -exception Invalid_header of string -\end{ocamldoccode} -\index{Invalid-underscoreheader@\verb`Invalid_header`} -\begin{ocamldocdescription} -invalid header encountered - - -\end{ocamldocdescription} - - - - -\label{exception:Http-underscoretypes.Invalid-underscoreheader-underscorename}\begin{ocamldoccode} -exception Invalid_header_name of string -\end{ocamldoccode} -\index{Invalid-underscoreheader-underscorename@\verb`Invalid_header_name`} -\begin{ocamldocdescription} -invalid header name encountered - - -\end{ocamldocdescription} - - - - -\label{exception:Http-underscoretypes.Invalid-underscoreheader-underscorevalue}\begin{ocamldoccode} -exception Invalid_header_value of string -\end{ocamldoccode} -\index{Invalid-underscoreheader-underscorevalue@\verb`Invalid_header_value`} -\begin{ocamldocdescription} -invalid header value encountered - - -\end{ocamldocdescription} - - - - -\label{exception:Http-underscoretypes.Invalid-underscoreHTTP-underscoreversion}\begin{ocamldoccode} -exception Invalid_HTTP_version of string -\end{ocamldoccode} -\index{Invalid-underscoreHTTP-underscoreversion@\verb`Invalid_HTTP_version`} -\begin{ocamldocdescription} -unsupported or invalid HTTP version encountered - - -\end{ocamldocdescription} - - - - -\label{exception:Http-underscoretypes.Invalid-underscoreHTTP-underscoremethod}\begin{ocamldoccode} -exception Invalid_HTTP_method of string -\end{ocamldoccode} -\index{Invalid-underscoreHTTP-underscoremethod@\verb`Invalid_HTTP_method`} -\begin{ocamldocdescription} -unsupported or invalid HTTP method encountered - - -\end{ocamldocdescription} - - - - -\label{exception:Http-underscoretypes.Invalid-underscorecode}\begin{ocamldoccode} -exception Invalid_code of int -\end{ocamldoccode} -\index{Invalid-underscorecode@\verb`Invalid_code`} -\begin{ocamldocdescription} -invalid HTTP status code integer representation encountered - - -\end{ocamldocdescription} - - - - -\label{exception:Http-underscoretypes.Malformed-underscoreURL}\begin{ocamldoccode} -exception Malformed_URL of string -\end{ocamldoccode} -\index{Malformed-underscoreURL@\verb`Malformed_URL`} -\begin{ocamldocdescription} -invalid URL encountered - - -\end{ocamldocdescription} - - - - -\label{exception:Http-underscoretypes.Malformed-underscorequery}\begin{ocamldoccode} -exception Malformed_query of string -\end{ocamldoccode} -\index{Malformed-underscorequery@\verb`Malformed_query`} -\begin{ocamldocdescription} -invalid query string encountered - - -\end{ocamldocdescription} - - - - -\label{exception:Http-underscoretypes.Malformed-underscorequery-underscorepart}\begin{ocamldoccode} -exception Malformed_query_part of string * string -\end{ocamldoccode} -\index{Malformed-underscorequery-underscorepart@\verb`Malformed_query_part`} -\begin{ocamldocdescription} -invalid query string part encountered, arguments are parameter name and - parameter value - - -\end{ocamldocdescription} - - - - -\label{exception:Http-underscoretypes.Malformed-underscorerequest-underscoreURI}\begin{ocamldoccode} -exception Malformed_request_URI of string -\end{ocamldoccode} -\index{Malformed-underscorerequest-underscoreURI@\verb`Malformed_request_URI`} -\begin{ocamldocdescription} -invalid request URI encountered - - -\end{ocamldocdescription} - - - - -\label{exception:Http-underscoretypes.Malformed-underscorecookies}\begin{ocamldoccode} -exception Malformed_cookies of string -\end{ocamldoccode} -\index{Malformed-underscorecookies@\verb`Malformed_cookies`} -\begin{ocamldocdescription} -malformed cookies - - -\end{ocamldocdescription} - - - - -\label{exception:Http-underscoretypes.Malformed-underscorerequest}\begin{ocamldoccode} -exception Malformed_request of string -\end{ocamldoccode} -\index{Malformed-underscorerequest@\verb`Malformed_request`} -\begin{ocamldocdescription} -malformed request received - - -\end{ocamldocdescription} - - - - -\label{exception:Http-underscoretypes.Malformed-underscoreresponse}\begin{ocamldoccode} -exception Malformed_response of string -\end{ocamldoccode} -\index{Malformed-underscoreresponse@\verb`Malformed_response`} -\begin{ocamldocdescription} -malformed response received, argument is response's first line - - -\end{ocamldocdescription} - - - - -\label{exception:Http-underscoretypes.Param-underscorenot-underscorefound}\begin{ocamldoccode} -exception Param_not_found of string -\end{ocamldoccode} -\index{Param-underscorenot-underscorefound@\verb`Param_not_found`} -\begin{ocamldocdescription} -a parameter you were looking for was not found - - -\end{ocamldocdescription} - - - - -\label{exception:Http-underscoretypes.Invalid-underscorestatus-underscoreline}\begin{ocamldoccode} -exception Invalid_status_line of string -\end{ocamldoccode} -\index{Invalid-underscorestatus-underscoreline@\verb`Invalid_status_line`} -\begin{ocamldocdescription} -invalid HTTP status line encountered - - -\end{ocamldocdescription} - - - - -\label{exception:Http-underscoretypes.Header-underscorenot-underscorefound}\begin{ocamldoccode} -exception Header_not_found of string -\end{ocamldoccode} -\index{Header-underscorenot-underscorefound@\verb`Header_not_found`} -\begin{ocamldocdescription} -an header you were looking for was not found - - -\end{ocamldocdescription} - - - - -\label{exception:Http-underscoretypes.Quit}\begin{ocamldoccode} -exception Quit -\end{ocamldoccode} -\index{Quit@\verb`Quit`} -\begin{ocamldocdescription} -raisable by callbacks to make main daemon quit, this is the only - 'clean' way to make start functions return - - -\end{ocamldocdescription} - - - - -\label{exception:Http-underscoretypes.Unauthorized}\begin{ocamldoccode} -exception Unauthorized of string -\end{ocamldoccode} -\index{Unauthorized@\verb`Unauthorized`} -\begin{ocamldocdescription} -raisable by callbacks to force a 401 (unauthorized) HTTP answer. - This exception should be raised \_before\_ sending any data over given out - channel. - - - -\end{ocamldocdescription} - - - - -\subsection{OO representation of HTTP messages} - - - - -\begin{ocamldoccode} -{\tt{class type message = }}\end{ocamldoccode} -\label{classtype:Http-underscoretypes.message}\index{message@\verb`message`} - -\begin{ocamldocobjectend} - - -\label{method:Http-underscoretypes.message.version}\begin{ocamldoccode} -method version : Http_types.version option -\end{ocamldoccode} -\index{version@\verb`version`} - - -\label{method:Http-underscoretypes.message.setVersion}\begin{ocamldoccode} -method setVersion : Http_types.version -> unit -\end{ocamldoccode} -\index{setVersion@\verb`setVersion`} - - -\label{method:Http-underscoretypes.message.body}\begin{ocamldoccode} -method body : string -\end{ocamldoccode} -\index{body@\verb`body`} - - -\label{method:Http-underscoretypes.message.setBody}\begin{ocamldoccode} -method setBody : string -> unit -\end{ocamldoccode} -\index{setBody@\verb`setBody`} - - -\label{method:Http-underscoretypes.message.bodyBuf}\begin{ocamldoccode} -method bodyBuf : Buffer.t -\end{ocamldoccode} -\index{bodyBuf@\verb`bodyBuf`} - - -\label{method:Http-underscoretypes.message.setBodyBuf}\begin{ocamldoccode} -method setBodyBuf : Buffer.t -> unit -\end{ocamldoccode} -\index{setBodyBuf@\verb`setBodyBuf`} - - -\label{method:Http-underscoretypes.message.addBody}\begin{ocamldoccode} -method addBody : string -> unit -\end{ocamldoccode} -\index{addBody@\verb`addBody`} - - -\label{method:Http-underscoretypes.message.addBodyBuf}\begin{ocamldoccode} -method addBodyBuf : Buffer.t -> unit -\end{ocamldoccode} -\index{addBodyBuf@\verb`addBodyBuf`} - - -\label{method:Http-underscoretypes.message.addHeader}\begin{ocamldoccode} -method addHeader : name:string -> value:string -> unit -\end{ocamldoccode} -\index{addHeader@\verb`addHeader`} - - -\label{method:Http-underscoretypes.message.addHeaders}\begin{ocamldoccode} -method addHeaders : (string * string) list -> unit -\end{ocamldoccode} -\index{addHeaders@\verb`addHeaders`} - - -\label{method:Http-underscoretypes.message.replaceHeader}\begin{ocamldoccode} -method replaceHeader : name:string -> value:string -> unit -\end{ocamldoccode} -\index{replaceHeader@\verb`replaceHeader`} - - -\label{method:Http-underscoretypes.message.replaceHeaders}\begin{ocamldoccode} -method replaceHeaders : (string * string) list -> unit -\end{ocamldoccode} -\index{replaceHeaders@\verb`replaceHeaders`} - - -\label{method:Http-underscoretypes.message.removeHeader}\begin{ocamldoccode} -method removeHeader : name:string -> unit -\end{ocamldoccode} -\index{removeHeader@\verb`removeHeader`} - - -\label{method:Http-underscoretypes.message.hasHeader}\begin{ocamldoccode} -method hasHeader : name:string -> bool -\end{ocamldoccode} -\index{hasHeader@\verb`hasHeader`} - - -\label{method:Http-underscoretypes.message.header}\begin{ocamldoccode} -method header : name:string -> string -\end{ocamldoccode} -\index{header@\verb`header`} - - -\label{method:Http-underscoretypes.message.headers}\begin{ocamldoccode} -method headers : (string * string) list -\end{ocamldoccode} -\index{headers@\verb`headers`} - - -\label{method:Http-underscoretypes.message.clientSockaddr}\begin{ocamldoccode} -method clientSockaddr : Unix.sockaddr -\end{ocamldoccode} -\index{clientSockaddr@\verb`clientSockaddr`} - - -\label{method:Http-underscoretypes.message.clientAddr}\begin{ocamldoccode} -method clientAddr : string -\end{ocamldoccode} -\index{clientAddr@\verb`clientAddr`} - - -\label{method:Http-underscoretypes.message.clientPort}\begin{ocamldoccode} -method clientPort : int -\end{ocamldoccode} -\index{clientPort@\verb`clientPort`} - - -\label{method:Http-underscoretypes.message.serverSockaddr}\begin{ocamldoccode} -method serverSockaddr : Unix.sockaddr -\end{ocamldoccode} -\index{serverSockaddr@\verb`serverSockaddr`} - - -\label{method:Http-underscoretypes.message.serverAddr}\begin{ocamldoccode} -method serverAddr : string -\end{ocamldoccode} -\index{serverAddr@\verb`serverAddr`} - - -\label{method:Http-underscoretypes.message.serverPort}\begin{ocamldoccode} -method serverPort : int -\end{ocamldoccode} -\index{serverPort@\verb`serverPort`} - - -\label{method:Http-underscoretypes.message.toString}\begin{ocamldoccode} -method toString : string -\end{ocamldoccode} -\index{toString@\verb`toString`} - - -\label{method:Http-underscoretypes.message.serialize}\begin{ocamldoccode} -method serialize : Pervasives.out_channel -> unit -\end{ocamldoccode} -\index{serialize@\verb`serialize`} -\end{ocamldocobjectend} - - -\begin{ocamldocdescription} -HTTP generic messages. See {\tt{Http\_message.message}}[\ref{class:Http-underscoremessage.message}] - - -\end{ocamldocdescription} - - - - -\begin{ocamldoccode} -{\tt{class type request = }}\end{ocamldoccode} -\label{classtype:Http-underscoretypes.request}\index{request@\verb`request`} - -\begin{ocamldocobjectend} - - -{\tt{inherit Http\_types.message}} [\ref{classtype:Http-underscoretypes.message}] - -an HTTP request is a flavour of HTTP message - -\label{method:Http-underscoretypes.request.meth}\begin{ocamldoccode} -method meth : Http_types.meth -\end{ocamldoccode} -\index{meth@\verb`meth`} -\begin{ocamldocdescription} -{\bf Returns }request method - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.request.uri}\begin{ocamldoccode} -method uri : string -\end{ocamldoccode} -\index{uri@\verb`uri`} -\begin{ocamldocdescription} -{\bf Returns }requested URI (including query string, fragment, $\ldots$) - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.request.path}\begin{ocamldoccode} -method path : string -\end{ocamldoccode} -\index{path@\verb`path`} -\begin{ocamldocdescription} -{\bf Returns }requested path - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.request.param}\begin{ocamldoccode} -method param : ?meth:Http_types.meth -> ?default:string -> string -> string -\end{ocamldoccode} -\index{param@\verb`param`} -\begin{ocamldocdescription} -lookup a given parameter - -{\bf Raises} {\tt{Param\_not\_found}} if parameter name was not found - -{\bf Returns }value associated to parameter name - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.request.paramAll}\begin{ocamldoccode} -method paramAll : ?meth:Http_types.meth -> string -> string list -\end{ocamldoccode} -\index{paramAll@\verb`paramAll`} -\begin{ocamldocdescription} -like param above but return a list of values associated to given - parameter (a parameter could be defined indeed more than once: passed more - than once in a query string or passed both insider the url (the GET way) - and inside message body (the POST way)) - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.request.params}\begin{ocamldoccode} -method params : (string * string) list -\end{ocamldoccode} -\index{params@\verb`params`} -\begin{ocamldocdescription} -{\bf Returns }the list of all received parameters - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.request.params-underscoreGET}\begin{ocamldoccode} -method params_GET : (string * string) list -\end{ocamldoccode} -\index{params-underscoreGET@\verb`params_GET`} -\begin{ocamldocdescription} -{\bf Returns }the list of all parameters received via GET - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.request.params-underscorePOST}\begin{ocamldoccode} -method params_POST : (string * string) list -\end{ocamldoccode} -\index{params-underscorePOST@\verb`params_POST`} -\begin{ocamldocdescription} -{\bf Returns }the list of all parameter received via POST - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.request.cookies}\begin{ocamldoccode} -method cookies : (string * string) list option -\end{ocamldoccode} -\index{cookies@\verb`cookies`} - - -\label{method:Http-underscoretypes.request.authorization}\begin{ocamldoccode} -method authorization : Http_types.auth_info option -\end{ocamldoccode} -\index{authorization@\verb`authorization`} -\begin{ocamldocdescription} -{\bf Returns }authorization information, if given by the client - - -\end{ocamldocdescription} -\end{ocamldocobjectend} - - -\begin{ocamldocdescription} -HTTP requests - - -\end{ocamldocdescription} - - - - -\begin{ocamldoccode} -{\tt{class type response = }}\end{ocamldoccode} -\label{classtype:Http-underscoretypes.response}\index{response@\verb`response`} - -\begin{ocamldocobjectend} - - -{\tt{inherit Http\_types.message}} [\ref{classtype:Http-underscoretypes.message}] - -\label{method:Http-underscoretypes.response.code}\begin{ocamldoccode} -method code : int -\end{ocamldoccode} -\index{code@\verb`code`} -\begin{ocamldocdescription} -{\bf Returns }response code - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.response.setCode}\begin{ocamldoccode} -method setCode : int -> unit -\end{ocamldoccode} -\index{setCode@\verb`setCode`} -\begin{ocamldocdescription} -set response code - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.response.status}\begin{ocamldoccode} -method status : Http_types.status -\end{ocamldoccode} -\index{status@\verb`status`} -\begin{ocamldocdescription} -{\bf Returns }response status - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.response.setStatus}\begin{ocamldoccode} -method setStatus : Http_types.status -> unit -\end{ocamldoccode} -\index{setStatus@\verb`setStatus`} -\begin{ocamldocdescription} -set response status - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.response.reason}\begin{ocamldoccode} -method reason : string -\end{ocamldoccode} -\index{reason@\verb`reason`} -\begin{ocamldocdescription} -{\bf Returns }reason string - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.response.setReason}\begin{ocamldoccode} -method setReason : string -> unit -\end{ocamldoccode} -\index{setReason@\verb`setReason`} -\begin{ocamldocdescription} -set reason string - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.response.statusLine}\begin{ocamldoccode} -method statusLine : string -\end{ocamldoccode} -\index{statusLine@\verb`statusLine`} -\begin{ocamldocdescription} -{\bf Returns }status line - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.response.setStatusLine}\begin{ocamldoccode} -method setStatusLine : string -> unit -\end{ocamldoccode} -\index{setStatusLine@\verb`setStatusLine`} -\begin{ocamldocdescription} -set status line - -{\bf Raises} {\tt{Invalid\_status\_line}} if an invalid HTTP status line was passed - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.response.isInformational}\begin{ocamldoccode} -method isInformational : bool -\end{ocamldoccode} -\index{isInformational@\verb`isInformational`} -\begin{ocamldocdescription} -response is an informational one - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.response.isSuccess}\begin{ocamldoccode} -method isSuccess : bool -\end{ocamldoccode} -\index{isSuccess@\verb`isSuccess`} -\begin{ocamldocdescription} -response is a success one - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.response.isRedirection}\begin{ocamldoccode} -method isRedirection : bool -\end{ocamldoccode} -\index{isRedirection@\verb`isRedirection`} -\begin{ocamldocdescription} -response is a redirection one - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.response.isClientError}\begin{ocamldoccode} -method isClientError : bool -\end{ocamldoccode} -\index{isClientError@\verb`isClientError`} -\begin{ocamldocdescription} -response is a client error one - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.response.isServerError}\begin{ocamldoccode} -method isServerError : bool -\end{ocamldoccode} -\index{isServerError@\verb`isServerError`} -\begin{ocamldocdescription} -response is a server error one - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.response.isError}\begin{ocamldoccode} -method isError : bool -\end{ocamldoccode} -\index{isError@\verb`isError`} -\begin{ocamldocdescription} -response is either a client error or a server error response - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.response.addBasicHeaders}\begin{ocamldoccode} -method addBasicHeaders : unit -\end{ocamldoccode} -\index{addBasicHeaders@\verb`addBasicHeaders`} -\begin{ocamldocdescription} -add basic headers to response, see {\tt{Http\_daemon.send\_basic\_headers}}[\ref{val:Http-underscoredaemon.send-underscorebasic-underscoreheaders}] - - -\end{ocamldocdescription} - - -\subsubsection{facilities to access some frequently used headers} - - -\label{method:Http-underscoretypes.response.contentType}\begin{ocamldoccode} -method contentType : string -\end{ocamldoccode} -\index{contentType@\verb`contentType`} -\begin{ocamldocdescription} -{\bf Returns }Content-Type header value - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.response.setContentType}\begin{ocamldoccode} -method setContentType : string -> unit -\end{ocamldoccode} -\index{setContentType@\verb`setContentType`} -\begin{ocamldocdescription} -set Content-Type header value - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.response.contentEncoding}\begin{ocamldoccode} -method contentEncoding : string -\end{ocamldoccode} -\index{contentEncoding@\verb`contentEncoding`} -\begin{ocamldocdescription} -{\bf Returns }Content-Encoding header value - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.response.setContentEncoding}\begin{ocamldoccode} -method setContentEncoding : string -> unit -\end{ocamldoccode} -\index{setContentEncoding@\verb`setContentEncoding`} -\begin{ocamldocdescription} -set Content-Encoding header value - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.response.date}\begin{ocamldoccode} -method date : string -\end{ocamldoccode} -\index{date@\verb`date`} -\begin{ocamldocdescription} -{\bf Returns }Date header value - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.response.setDate}\begin{ocamldoccode} -method setDate : string -> unit -\end{ocamldoccode} -\index{setDate@\verb`setDate`} -\begin{ocamldocdescription} -set Date header value - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.response.expires}\begin{ocamldoccode} -method expires : string -\end{ocamldoccode} -\index{expires@\verb`expires`} -\begin{ocamldocdescription} -{\bf Returns }Expires header value - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.response.setExpires}\begin{ocamldoccode} -method setExpires : string -> unit -\end{ocamldoccode} -\index{setExpires@\verb`setExpires`} -\begin{ocamldocdescription} -set Expires header value - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.response.server}\begin{ocamldoccode} -method server : string -\end{ocamldoccode} -\index{server@\verb`server`} -\begin{ocamldocdescription} -{\bf Returns }Server header value - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.response.setServer}\begin{ocamldoccode} -method setServer : string -> unit -\end{ocamldoccode} -\index{setServer@\verb`setServer`} -\begin{ocamldocdescription} -set Server header value - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.response.connection}\begin{ocamldoccode} -method connection : string -\end{ocamldoccode} -\index{connection@\verb`connection`} -\begin{ocamldocdescription} -{\bf Returns }Connection header value - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.response.setConnection}\begin{ocamldoccode} -method setConnection : string -> unit -\end{ocamldoccode} -\index{setConnection@\verb`setConnection`} -\begin{ocamldocdescription} -set Connection header value - - -\end{ocamldocdescription} -\end{ocamldocobjectend} - - -\begin{ocamldocdescription} -HTTP responses - - -\end{ocamldocdescription} - - - - -\subsection{Daemon specification} - - - - -\label{type:Http-underscoretypes.daemon-underscorespec}\begin{ocamldoccode} -type daemon_spec = \{ - address : string ; - auth : (string * auth_info) option ; -\end{ocamldoccode} -\begin{ocamldoccomment} -authentication requirements (currently only basic authentication is - supported). If set to None no authentication is required. If set to Some - ("realm", `Basic ("foo", "bar")), only clients authenticated with baisc - authentication, for realm "realm", providing username "foo" and password - "bar" are accepted; others are rejected with a 401 response code -\end{ocamldoccomment} -\begin{ocamldoccode} - callback : request -> Pervasives.out_channel -> unit ; -\end{ocamldoccode} -\begin{ocamldoccomment} -function which will be called each time a correct HTTP request will be - received. 1st callback argument is an Http\_types.request object - corresponding to the request received; 2nd argument is an output channel - corresponding to the socket connected to the client -\end{ocamldoccomment} -\begin{ocamldoccode} - mode : daemon_mode ; -\end{ocamldoccode} -\begin{ocamldoccomment} -requests handling mode, it can have three different values:\begin{itemize} -\item `Single $\rightarrow$ all requests will be handled by the same process, -\item `Fork $\rightarrow$ each request will be handled by a child process, -\item `Thread $\rightarrow$ each request will be handled by a (new) thread -\end{itemize} - -\end{ocamldoccomment} -\begin{ocamldoccode} - port : int ; -\end{ocamldoccode} -\begin{ocamldoccomment} -TCP port on which the daemon will be listening -\end{ocamldoccomment} -\begin{ocamldoccode} - root_dir : string option ; -\end{ocamldoccode} -\begin{ocamldoccomment} -directory to which ocaml http will chdir before starting handling - requests; if None, no chdir will be performed (i.e. stay in the current - working directory) -\end{ocamldoccomment} -\begin{ocamldoccode} - exn_handler : (exn -> Pervasives.out_channel -> unit) option ; -\end{ocamldoccode} -\begin{ocamldoccomment} -what to do when executing callback raises an exception. If None, the - exception will be re-raised: in `Fork/`Thread mode the current - process/thread will be terminated. in `Single mode the exception is - ignored and the client socket closed. If Some callback, the callback will - be executed before acting as per None; the callback is meant to perform - some clean up actions, like releasing global mutexes in `Thread mode -\end{ocamldoccomment} -\begin{ocamldoccode} - timeout : int option ; -\end{ocamldoccode} -\begin{ocamldoccomment} -timeout in seconds after which an incoming HTTP request will be - terminated closing the corresponding TCP connection; None disable the - timeout -\end{ocamldoccomment} -\begin{ocamldoccode} - auto_close : bool ; -\end{ocamldoccode} -\begin{ocamldoccomment} -whether ocaml-http will automatically close the connection with the - client after callback has completed its execution. If set to true, close - will be attempted no matter if the callback raises an exception or not -\end{ocamldoccomment} -\begin{ocamldoccode} -\} -\end{ocamldoccode} -\index{daemon-underscorespec@\verb`daemon_spec`} -\begin{ocamldocdescription} -daemon specification, describe the behaviour of an HTTP daemon. - - - The default daemon specification is {\tt{Http\_daemon.default\_spec}}[\ref{val:Http-underscoredaemon.default-underscorespec}] - - -\end{ocamldocdescription} - - - - -\subsection{OO representation of other HTTP entities} - - - - -\begin{ocamldoccode} -{\tt{class type connection = }}\end{ocamldoccode} -\label{classtype:Http-underscoretypes.connection}\index{connection@\verb`connection`} - -\begin{ocamldocobjectend} - - -\label{method:Http-underscoretypes.connection.getRequest}\begin{ocamldoccode} -method getRequest : Http_types.request option -\end{ocamldoccode} -\index{getRequest@\verb`getRequest`} -\begin{ocamldocdescription} -{\bf Returns }next request object, may block if client hasn't submitted any - request yet, may be None if client request was ill-formed - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.connection.respond-underscorewith}\begin{ocamldoccode} -method respond_with : Http_types.response -> unit -\end{ocamldoccode} -\index{respond-underscorewith@\verb`respond_with`} -\begin{ocamldocdescription} -respond to client sending it a response - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.connection.close}\begin{ocamldoccode} -method close : unit -\end{ocamldoccode} -\index{close@\verb`close`} -\begin{ocamldocdescription} -close connection to client. Warning: this object can't be used any - longer after this method has been called - - -\end{ocamldocdescription} -\end{ocamldocobjectend} - - -\begin{ocamldocdescription} -an HTTP connection from a client to a server - - -\end{ocamldocdescription} - - - - -\begin{ocamldoccode} -{\tt{class type daemon = }}\end{ocamldoccode} -\label{classtype:Http-underscoretypes.daemon}\index{daemon@\verb`daemon`} - -\begin{ocamldocobjectend} - - -\label{method:Http-underscoretypes.daemon.accept}\begin{ocamldoccode} -method accept : Http_types.connection -\end{ocamldoccode} -\index{accept@\verb`accept`} -\begin{ocamldocdescription} -{\bf Returns }a connection to a client, may block if no client has connected - yet - - -\end{ocamldocdescription} - - -\label{method:Http-underscoretypes.daemon.getRequest}\begin{ocamldoccode} -method getRequest : Http_types.request * Http_types.connection -\end{ocamldoccode} -\index{getRequest@\verb`getRequest`} -\begin{ocamldocdescription} -shortcut method, blocks until a client has submit a request and - return a pair request * connection - - -\end{ocamldocdescription} -\end{ocamldocobjectend} - - -\begin{ocamldocdescription} -an HTTP daemon - - -\end{ocamldocdescription} - - -\section{Module {\tt{Http\_user\_agent}} : Minimal implementation of an HTTP 1.0/1.1 client.} -\label{module:Http-underscoreuser-underscoreagent}\index{Http-underscoreuser-underscoreagent@\verb`Http_user_agent`} - Interface is similar to - Gerd Stoplmann's Http\_client module. Implementation is simpler and doesn't - handle HTTP redirection, proxies, ecc. The only reason for the existence of - this module is for performances and incremental elaboration of response's - bodies - - - -\ocamldocvspace{0.5cm} - - - -\label{exception:Http-underscoreuser-underscoreagent.Http-underscoreerror}\begin{ocamldoccode} -exception Http_error of (int * string) -\end{ocamldoccode} -\index{Http-underscoreerror@\verb`Http_error`} - - - - -\label{val:Http-underscoreuser-underscoreagent.get}\begin{ocamldoccode} -val get : - ?head_callback:(Http_types.status -> (string * string) list -> unit) -> - string -> string -\end{ocamldoccode} -\index{get@\verb`get`} -\begin{ocamldocdescription} -{\bf Raises} {\tt{Http\_error}} when response code $<$$>$ 200 - -{\bf Returns }HTTP response's body - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoreuser-underscoreagent.get-underscoreiter}\begin{ocamldoccode} -val get_iter : - ?head_callback:(Http_types.status -> (string * string) list -> unit) -> - (string -> unit) -> string -> unit -\end{ocamldoccode} -\index{get-underscoreiter@\verb`get_iter`} -\begin{ocamldocdescription} -as above but iter callback function on HTTP response's body instead of - returning it as a string - - -\end{ocamldocdescription} - - - - -\label{val:Http-underscoreuser-underscoreagent.head}\begin{ocamldoccode} -val head : string -> string -\end{ocamldoccode} -\index{head@\verb`head`} -\begin{ocamldocdescription} -{\bf Raises} {\tt{Http\_error}} when response code $<$$>$ 200 - -{\bf Returns }HTTP HEAD raw response - - -\end{ocamldocdescription} - - -\end{document} \ No newline at end of file diff -Nru ocaml-http-0.1.5/doc/latex/ocaml-http.toc ocaml-http-0.1.6/doc/latex/ocaml-http.toc --- ocaml-http-0.1.5/doc/latex/ocaml-http.toc 2010-12-31 02:33:02.000000000 +0000 +++ ocaml-http-0.1.6/doc/latex/ocaml-http.toc 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ -\contentsline {section}{\numberline {1}Module {\tt {Cookie\_lexer}}}{1} -\contentsline {section}{\numberline {2}Module {\tt {Http\_common}} : Common functionalities shared by other OCaml HTTP modules}{2} -\contentsline {section}{\numberline {3}Module {\tt {Http\_constants}} : Constants}{3} -\contentsline {subsection}{\numberline {3.1}daemon default values}{3} -\contentsline {section}{\numberline {4}Module {\tt {Http\_daemon}} : Main OCaml HTTP module.}{4} -\contentsline {section}{\numberline {5}Module {\tt {Http\_message}} : Object Oriented representation of HTTP messages}{7} -\contentsline {subsubsection}{\numberline {5.0.1}{\it header name comparison are performed in a case-insensitive manner as required by RFC2616, actually the implementation works converting all header names in lowercase}}{7} -\contentsline {section}{\numberline {6}Module {\tt {Http\_misc}} : Helpers and other not better classified functions which should not be exposed in the final API}{9} -\contentsline {section}{\numberline {7}Module {\tt {Http\_parser}} : HTTP messages parsing}{11} -\contentsline {section}{\numberline {8}Module {\tt {Http\_parser\_sanity}} : Sanity test functions related to HTTP message parsing}{12} -\contentsline {section}{\numberline {9}Module {\tt {Http\_request}} : Object Oriented representation of HTTP requests}{12} -\contentsline {section}{\numberline {10}Module {\tt {Http\_response}} : Object Oriented representation of HTTP responses}{13} -\contentsline {section}{\numberline {11}Module {\tt {Http\_tcp\_server}} : TCP servers used as low-levels for HTTP daemons}{13} -\contentsline {subsection}{\numberline {11.1}servers}{13} -\contentsline {subsection}{\numberline {11.2}low level functions}{13} -\contentsline {section}{\numberline {12}Module {\tt {Http\_threaded\_tcp\_server}} : Multithreaded part of Http\_tcp\_server}{13} -\contentsline {section}{\numberline {13}Module {\tt {Http\_types}} : Type definitions}{13} -\contentsline {subsection}{\numberline {13.1}Exceptions}{16} -\contentsline {subsection}{\numberline {13.2}OO representation of HTTP messages}{17} -\contentsline {subsubsection}{\numberline {13.2.1}facilities to access some frequently used headers}{20} -\contentsline {subsection}{\numberline {13.3}Daemon specification}{21} -\contentsline {subsection}{\numberline {13.4}OO representation of other HTTP entities}{22} -\contentsline {section}{\numberline {14}Module {\tt {Http\_user\_agent}} : Minimal implementation of an HTTP 1.0/1.1 client.}{23} diff -Nru ocaml-http-0.1.5/examples/test.sh ocaml-http-0.1.6/examples/test.sh --- ocaml-http-0.1.5/examples/test.sh 2010-11-13 04:53:33.000000000 +0000 +++ ocaml-http-0.1.6/examples/test.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -ocaml unix.cma -I +pcre pcre.cma -I +netsys netsys.cma -I +netstring netstring.cma -I .. http.cma client_address.ml diff -Nru ocaml-http-0.1.5/.gitignore ocaml-http-0.1.6/.gitignore --- ocaml-http-0.1.5/.gitignore 1970-01-01 00:00:00.000000000 +0000 +++ ocaml-http-0.1.6/.gitignore 2018-12-17 23:58:50.000000000 +0000 @@ -0,0 +1,6 @@ +doc +*.cma +*.cmo +*.cmi +ocamlinit-stamp +META diff -Nru ocaml-http-0.1.5/http_common.ml ocaml-http-0.1.6/http_common.ml --- ocaml-http-0.1.5/http_common.ml 2010-10-19 10:19:18.000000000 +0000 +++ ocaml-http-0.1.6/http_common.ml 2018-12-17 23:58:50.000000000 +0000 @@ -42,12 +42,44 @@ let string_of_method = function | `GET -> "GET" | `POST -> "POST" + | `HEAD -> "HEAD" + | `PUT -> "PUT" + | `DELETE -> "DELETE" + | `OPTIONS -> "OPTIONS" + | `TRACE -> "TRACE" let method_of_string = function | "GET" -> `GET | "POST" -> `POST + | "HEAD" -> `HEAD + | "PUT" -> `PUT + | "DELETE" -> `DELETE + | "OPTIONS" -> `OPTIONS + | "TRACE" -> `TRACE | invalid_method -> raise (Invalid_HTTP_method invalid_method) +let string_of_request req = + let buffer = Buffer.create 1024 in + Buffer.add_string buffer (string_of_method req#meth); + Buffer.add_char buffer ' '; + Buffer.add_string buffer req#uri; + Buffer.add_char buffer ' '; + (match req#version with + | Some v -> Buffer.add_string buffer (string_of_version v) + | None -> ()); + Buffer.add_string buffer "\r\n"; + List.iter + (fun (param_name, param_value) -> + Buffer.add_string buffer param_name; + Buffer.add_string buffer ": "; + Buffer.add_string buffer param_value; + Buffer.add_string buffer "\r\n"; + ) + req#headers; + Buffer.add_string buffer "\r\n"; + Buffer.add_string buffer req#body; + Buffer.contents buffer + let status_of_code = function | 100 -> `Informational `Continue | 101 -> `Informational `Switching_protocols diff -Nru ocaml-http-0.1.5/http_common.mli ocaml-http-0.1.6/http_common.mli --- ocaml-http-0.1.5/http_common.mli 2010-10-19 10:19:18.000000000 +0000 +++ ocaml-http-0.1.6/http_common.mli 2018-12-17 23:58:50.000000000 +0000 @@ -52,6 +52,9 @@ method *) val method_of_string: string -> meth + (** pretty print an HTTP request *) +val string_of_request: Http_types.request -> string + (** converts an integer HTTP status to the corresponding status value @raise Invalid_code if given integer isn't a valid HTTP status code *) val status_of_code: int -> status diff -Nru ocaml-http-0.1.5/http_daemon.ml ocaml-http-0.1.6/http_daemon.ml --- ocaml-http-0.1.5/http_daemon.ml 2010-11-13 06:32:44.000000000 +0000 +++ ocaml-http-0.1.6/http_daemon.ml 2018-12-17 23:58:50.000000000 +0000 @@ -36,7 +36,7 @@ let send_CRLF = send_raw ~data:crlf let send_header ~header ~value = - let header = String.lowercase header in + let header = String.lowercase_ascii header in Http_parser_sanity.heal_header (header, value); send_raw ~data:(header ^ ": " ^ value ^ crlf) @@ -89,6 +89,15 @@ let send_foo_body code body = send_raw ~data:(foo_body code body) (* Warning: keep default values in sync with Http_response.response class *) +let respond_head ?content_length ?(headers = []) ?version ?(code = `Code 200) outchan = + send_basic_headers ?version ~code outchan; + send_headers ~headers outchan; + (match content_length with + | None -> () + | Some amount -> send_header "Content-Length" (string_of_int amount) outchan); + send_CRLF outchan + + (* Warning: keep default values in sync with Http_response.response class *) let respond ?(body = "") ?(headers = []) ?version ?(code = `Code 200) outchan = send_basic_headers ?version ~code outchan; send_headers ~headers outchan; @@ -96,6 +105,13 @@ send_CRLF outchan; send_raw ~data:body outchan +let respond_trace ?req ?(headers = []) ?version ?(code = `Code 200) outchan = + let body = match req with + | Some r -> string_of_request r + | None -> "" + in + respond ~body ~headers ?version ~code outchan + (** internal: low level for respond_redirect, respond_error, ... This function send a status line corresponding to a given code, some basic headers, the additional headers (if given) and an HTML page containing the @@ -142,7 +158,7 @@ let send_file ~src outchan = let buflen = 1024 in - let buf = String.make buflen ' ' in + let buf = Bytes.make buflen ' ' in let (file, cleanup) = match src with @@ -454,7 +470,7 @@ ?(timeout = default_timeout) () = - { default_spec with + { address = address; auth = auth; auto_close = auto_close; diff -Nru ocaml-http-0.1.5/http_daemon.mli ocaml-http-0.1.6/http_daemon.mli --- ocaml-http-0.1.5/http_daemon.mli 2010-11-13 06:23:04.000000000 +0000 +++ ocaml-http-0.1.6/http_daemon.mli 2018-12-17 23:58:50.000000000 +0000 @@ -61,6 +61,16 @@ (** send a file through an out_channel *) val send_file: src:Http_types.file_source -> out_channel -> unit + (** high level response function, specific to HEAD responses, + respond on outchan sending: basic headers, headers provided + via 'headers' argument, Content-length if provided. Default response + status is 200, default response HTTP version is Http_common.http_version *) +val respond_head: + ?content_length:int -> ?headers:(string * string) list -> + ?version:Http_types.version -> ?code:Http_types.status_code -> + out_channel -> + unit + (** high level response function, respond on outchan sending: basic headers (including Content-Length computed using 'body' argument), headers probided via 'headers' argument, body given via 'body' argument. Default response @@ -70,6 +80,18 @@ ?version:Http_types.version -> ?code:Http_types.status_code -> out_channel -> unit + + (** high level response function, specific to TRACE responses, + respond on outchan sending: basic headers, headers provided + via 'headers' argument, body given via 'req' argument. The + supplied request will be sent back to the client. Default response + status is 200, default response HTTP version is Http_common.http_version *) +val respond_trace: + ?req:Http_types.request -> + ?headers:(string * string) list -> + ?version:Http_types.version -> ?code:Http_types.status_code -> + out_channel -> + unit (** send a 404 (not found) HTTP response *) val respond_not_found: diff -Nru ocaml-http-0.1.5/http_message.ml ocaml-http-0.1.6/http_message.ml --- ocaml-http-0.1.5/http_message.ml 2010-10-19 10:19:18.000000000 +0000 +++ ocaml-http-0.1.6/http_message.ml 2018-12-17 23:58:50.000000000 +0000 @@ -64,26 +64,26 @@ method addBodyBuf b = Buffer.add_buffer _contentsBuf b method addHeader ~name ~value = - let name = String.lowercase name in + let name = String.lowercase_ascii name in Http_parser_sanity.heal_header (name, value); Hashtbl.add _headers name value method addHeaders = List.iter (fun (name, value) -> self#addHeader ~name ~value) method replaceHeader ~name ~value = - let name = String.lowercase name in + let name = String.lowercase_ascii name in Http_parser_sanity.heal_header (name, value); Hashtbl.replace _headers name value method replaceHeaders = List.iter (fun (name, value) -> self#replaceHeader ~name ~value) method removeHeader ~name = - let name = String.lowercase name in + let name = String.lowercase_ascii name in hashtbl_remove_all _headers name method hasHeader ~name = - let name = String.lowercase name in + let name = String.lowercase_ascii name in Hashtbl.mem _headers name method header ~name = if not (self#hasHeader name) then raise (Header_not_found name); - let name = String.lowercase name in + let name = String.lowercase_ascii name in String.concat ", " (List.rev (Hashtbl.find_all _headers name)) method headers = List.rev diff -Nru ocaml-http-0.1.5/http_misc.ml ocaml-http-0.1.6/http_misc.ml --- ocaml-http-0.1.5/http_misc.ml 2010-10-19 10:19:18.000000000 +0000 +++ ocaml-http-0.1.6/http_misc.ml 2018-12-17 23:58:50.000000000 +0000 @@ -119,19 +119,19 @@ let buf_of_inchan ?limit ic = let buf = Buffer.create 10240 in - let tmp = String.make 1024 '\000' in + let tmp = Bytes.make 1024 '\000' in let rec buf_of_inchan' limit = (match limit with | None -> let bytes = input ic tmp 0 1024 in if bytes > 0 then begin - Buffer.add_substring buf tmp 0 bytes; + Buffer.add_subbytes buf tmp 0 bytes; buf_of_inchan' None end | Some lim -> (* TODO what about using a single really_input call? *) let bytes = input ic tmp 0 (min lim 1024) in if bytes > 0 then begin - Buffer.add_substring buf tmp 0 bytes; + Buffer.add_subbytes buf tmp 0 bytes; buf_of_inchan' (Some (lim - bytes)) end) in diff -Nru ocaml-http-0.1.5/http_request.ml ocaml-http-0.1.6/http_request.ml --- ocaml-http-0.1.5/http_request.ml 2010-10-19 10:19:18.000000000 +0000 +++ ocaml-http-0.1.6/http_request.ml 2018-12-17 23:58:50.000000000 +0000 @@ -47,13 +47,14 @@ let headers = List.map (* lowercase header names to ease lookups before having a request object *) - (fun (h,v) -> (String.lowercase h, v)) + (fun (h,v) -> (String.lowercase_ascii h, v)) (Http_parser.parse_headers ic) (* trailing \r\n consumed! *) in let body = (* TODO fallback on size defined in Transfer-Encoding if Content-Length isn't defined *) - if meth = `POST then + match meth with + | `POST | `PUT | `TRACE -> Buffer.contents (try (* read only Content-Length bytes *) let limit_raw = @@ -69,7 +70,7 @@ in Http_misc.buf_of_inchan ~limit ic with Fallback -> Http_misc.buf_of_inchan ic) (* read until EOF *) - else (* TODO empty body for methods other than POST, is ok? *) + | _ -> "" in (headers, body)) @@ -78,7 +79,7 @@ try let _hdr, raw_cookies = List.find - (fun (hdr, _cookie) -> String.lowercase hdr = "cookie") + (fun (hdr, _cookie) -> String.lowercase_ascii hdr = "cookie") headers in Some (Http_parser.parse_cookies raw_cookies) @@ -119,6 +120,11 @@ (match meth with | None -> Hashtbl.find params_tbl name | Some `GET -> List.assoc name query_get_params + | Some `HEAD -> List.assoc name query_get_params + | Some `PUT -> List.assoc name query_get_params + | Some `DELETE -> List.assoc name query_get_params + | Some `OPTIONS -> List.assoc name query_get_params + | Some `TRACE -> List.assoc name query_get_params | Some `POST -> List.assoc name query_post_params) with Not_found -> (match default with @@ -128,6 +134,11 @@ (match (meth: meth option) with | None -> List.rev (Hashtbl.find_all params_tbl name) | Some `GET -> Http_misc.list_assoc_all name query_get_params + | Some `HEAD -> Http_misc.list_assoc_all name query_get_params + | Some `PUT -> Http_misc.list_assoc_all name query_get_params + | Some `DELETE -> Http_misc.list_assoc_all name query_get_params + | Some `OPTIONS -> Http_misc.list_assoc_all name query_get_params + | Some `TRACE -> Http_misc.list_assoc_all name query_get_params | Some `POST -> Http_misc.list_assoc_all name query_post_params) method params = params method params_GET = query_get_params diff -Nru ocaml-http-0.1.5/http_types.ml ocaml-http-0.1.6/http_types.ml --- ocaml-http-0.1.5/http_types.ml 2010-11-13 06:36:26.000000000 +0000 +++ ocaml-http-0.1.6/http_types.ml 2018-12-17 23:58:50.000000000 +0000 @@ -21,7 +21,7 @@ (** Type definitions *) type version = [ `HTTP_1_0 | `HTTP_1_1 ] -type meth = [ `GET | `POST ] +type meth = [ `GET | `POST | `HEAD | `PUT | `DELETE | `OPTIONS | `TRACE] type daemon_mode = [ `Single | `Fork | `Thread ] type tcp_server = diff -Nru ocaml-http-0.1.5/http_types.mli ocaml-http-0.1.6/http_types.mli --- ocaml-http-0.1.5/http_types.mli 2010-11-13 06:36:58.000000000 +0000 +++ ocaml-http-0.1.6/http_types.mli 2018-12-17 23:58:50.000000000 +0000 @@ -32,6 +32,11 @@ type meth = [ `GET | `POST + | `HEAD + | `PUT + | `DELETE + | `OPTIONS + | `TRACE ] (** Daemon behaviour wrt request handling. `Single mode use a single process diff -Nru ocaml-http-0.1.5/http_user_agent.ml ocaml-http-0.1.6/http_user_agent.ml --- ocaml-http-0.1.5/http_user_agent.ml 2010-10-19 10:19:18.000000000 +0000 +++ ocaml-http-0.1.6/http_user_agent.ml 2018-12-17 23:58:50.000000000 +0000 @@ -73,7 +73,7 @@ let get_iter ?(head_callback = fun _ _ -> ()) callback url = let (inchan, outchan) = submit_request `GET url in - let buf = String.create tcp_bufsiz in + let buf = Bytes.create tcp_bufsiz in let (_, status) = Http_parser.parse_response_fst_line inchan in (match code_of_status status with | 200 -> () @@ -87,7 +87,7 @@ | bytes when bytes = tcp_bufsiz -> (* buffer full, no need to slice it *) callback buf | bytes when bytes < tcp_bufsiz -> (* buffer not full, slice it *) - callback (String.sub buf 0 bytes) + callback (Bytes.sub buf 0 bytes) | _ -> (* ( bytes < 0 ) || ( bytes > tcp_bufsiz ) *) assert false done @@ -96,6 +96,6 @@ let get ?head_callback url = let buf = Buffer.create 10240 in - get_iter ?head_callback (Buffer.add_string buf) url; + get_iter ?head_callback (Buffer.add_bytes buf) url; Buffer.contents buf diff -Nru ocaml-http-0.1.5/http_user_agent.mli ocaml-http-0.1.6/http_user_agent.mli --- ocaml-http-0.1.5/http_user_agent.mli 2010-10-19 10:19:18.000000000 +0000 +++ ocaml-http-0.1.6/http_user_agent.mli 2018-12-17 23:58:50.000000000 +0000 @@ -43,7 +43,7 @@ * returning it as a string *) val get_iter: ?head_callback:(status -> (string * string) list -> unit) -> - (string -> unit) -> string -> + (bytes -> unit) -> string -> unit (** @param url an HTTP url diff -Nru ocaml-http-0.1.5/Makefile ocaml-http-0.1.6/Makefile --- ocaml-http-0.1.5/Makefile 2010-10-19 10:19:18.000000000 +0000 +++ ocaml-http-0.1.6/Makefile 2018-12-17 23:58:50.000000000 +0000 @@ -148,3 +148,15 @@ all opt world all_non_mt all_mt opt_non_mt opt_mt \ examples examples.opt depend clean distclean dist \ install meta doc deb distreal distrm + +VERSION = 0.1.6 + +release: + git tag -a v$(VERSION) -m "Version $(VERSION)." + git push origin v$(VERSION) + opam publish + #opam publish prepare $(NAME_VERSION) $(ARCHIVE) + #cp -t $(NAME_VERSION) descr + #grep -Ev '^(name|version):' opam >$(NAME_VERSION)/opam + #opam publish submit $(NAME_VERSION) + #rm -rf $(NAME_VERSION) diff -Nru ocaml-http-0.1.5/Makefile.defs ocaml-http-0.1.6/Makefile.defs --- ocaml-http-0.1.5/Makefile.defs 2010-10-19 10:19:18.000000000 +0000 +++ ocaml-http-0.1.6/Makefile.defs 2018-12-17 23:58:50.000000000 +0000 @@ -3,7 +3,7 @@ DEBUG_FLAGS = REQUIRES = unix str pcre netstring -COMMON_FLAGS = $(DEBUG_FLAGS) -pp camlp4o -package "$(REQUIRES)" +COMMON_FLAGS = $(DEBUG_FLAGS) -package "$(REQUIRES)" THREADS_FLAGS = -package threads -thread OCAMLFIND = ocamlfind OCAMLC = $(OCAMLFIND) ocamlc $(COMMON_FLAGS) diff -Nru ocaml-http-0.1.5/META ocaml-http-0.1.6/META --- ocaml-http-0.1.5/META 2010-12-31 02:34:43.000000000 +0000 +++ ocaml-http-0.1.6/META 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ -description = "OCaml HTTP daemon library" -version = "0.1.5" -requires = "unix,pcre,netstring" -requires(mt) = "unix,pcre,netstring,threads" -archive(byte) = "http.cma" -archive(native) = "http.cmxa" -archive(mt,byte) = "http_mt.cma" -archive(mt,native) = "http_mt.cmxa" diff -Nru ocaml-http-0.1.5/opam ocaml-http-0.1.6/opam --- ocaml-http-0.1.5/opam 1970-01-01 00:00:00.000000000 +0000 +++ ocaml-http-0.1.6/opam 2018-12-17 23:58:50.000000000 +0000 @@ -0,0 +1,16 @@ +opam-version: "2.0" +version: "0.1.6" +maintainer: "claudio.sacerdoticoen@unibo.it" +bug-reports: "https://github.com/sacerdot/ocaml-http/issues" +homepage: "https://github.com/sacerdot/ocaml-http" +authors: "Stefano Zacchiroli" +dev-repo: "git+https://github.com/sacerdot/ocaml-http.git" +build: [ + [make "all"] + [make "opt"] +] +remove: [["ocamlfind" "remove" "http"]] +depends: ["ocaml" {>="4.03.0"} "ocamlfind" {build} "ocamlnet" "pcre"] +install: [make "install"] +synopsis: "Library freely inspired from Perl's HTTP::Daemon module" +flags: light-uninstall diff -Nru ocaml-http-0.1.5/README ocaml-http-0.1.6/README --- ocaml-http-0.1.5/README 2010-10-19 10:19:18.000000000 +0000 +++ ocaml-http-0.1.6/README 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - -OCaml HTTP is a simple OCaml library for creating HTTP daemons, it is largely -inspired to the Perl's HTTP:: modules family. - diff -Nru ocaml-http-0.1.5/README.md ocaml-http-0.1.6/README.md --- ocaml-http-0.1.5/README.md 1970-01-01 00:00:00.000000000 +0000 +++ ocaml-http-0.1.6/README.md 2018-12-17 23:58:50.000000000 +0000 @@ -0,0 +1,26 @@ +OCaml HTTP +========== +do it yourself (OCaml) HTTP daemon +---------------------------------- + +OCaml HTTP is an OCaml library freely inspired from Perl's HTTP::Daemon module that permits you to write simple HTTP daemons in OCaml. + +The main API let you define a HTTP daemon specification, which contains, among other parameters, a callback function that is invoked each time a request is received. The callback function will be invoked with an instance of an object representing the received HTTP request and an out_channel connected to the remote HTTP client socket. + +Then you can start your HTTP daemon invoking the main function passing your specification. Each time a client connect to the TCP port bound by your daemon, OCaml HTTP will parse the request and instantiate the request object. If all goes well your callback will be invoked, otherwise appropriate error messages will be sent back to the client without disturbing your callback. + +You can use a lot of facility functions in your callback that permits you to send easily headers, error responses, file, or abstract HTTP response objects. Otherwise you can also choose the 'hard way' and send data directly to the out_channel (expecially useful for sending data incrementally to the client). You can also mix the two approaches. + +Daemon specifications are used also to specify other parameters governing daemon behaviour like: TCP port and address to bind, way of handling incoming requests (handle all of them in a single process, fork a new process or spawn a new thread for each incoming request), timeout, authentication requirements (username and password for HTTP basic authentication). + +OCaml HTTP contains also a tiny implementation of a HTTP client which can be used to retrieve resources via GET HTTP method and to iter on them (useful for huge resources which can't be kept in memory). + +OCaml HTTP is freely distributed under the GNU Library General Public License (GPL) and is available here for download: + +official Debian packages are available: libhttp-ocaml-dev + +To build OCaml HTTP from sources you will need: +* the OCaml compiler +* findlib +* ocamlnet +* pcre-ocaml diff -Nru ocaml-http-0.1.5/TODO ocaml-http-0.1.6/TODO --- ocaml-http-0.1.5/TODO 2010-11-13 06:29:12.000000000 +0000 +++ ocaml-http-0.1.6/TODO 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -- support for HTTPS -- keepalive support (need to hook in with #connection / #setConnection in Http_response)